首页 > Python资料 博客日记

基于python的学生信息管理系统,使用MySQL数据库存储学生信息

2024-07-12 15:00:05Python资料围观109

本篇文章分享基于python的学生信息管理系统,使用MySQL数据库存储学生信息,对你有帮助的话记得收藏一下,看Python资料网收获更多编程知识

本次项目适合初学python基础和数据库基础的小伙伴,可以整体复习一遍基础知识点

一个简单的学生信息管理系统,采用面向对象编程思想编写代码

一、项目简介

该学生信息管理系统的主要功能有:

  1. 添加学生信息
  2. 删除学生信息
  3. 修改学生信息
  4. 查询学生信息
  5. 显示学生信息
  6. 退出当前系统

二、步骤分析

  1. 数据库设计
  2. 数据库操作类,编写操作数据库的方法
  3. 学生类,用于封装学生信息
  4. 功能类,用于编写该系统的相关功能
  5. 主函数

三、需求实现 

3.1 数据库

# 通过学号判断数据库中是否存在该学号is_exist(self,id:int)
# 添加学生信息进数据库def insert_into_sql(self,Student : Student)
# 从数据库删除学生信息def delete_from_sql(self,id:int)
# 修改数据库中学生信息def updata_sql(self,id:int,Student:Student)
# 按条件查询学生信息def search_from_sql(self,name:str)
# 查询全部学生信息def find_all(self)
# 关闭数据库连接def close_sql(self)

3.2 功能类

# 显示功能页面def info_print(self)
# 添加学生信息def add_info(self)
# 删除学生信息def del_info(self)
# 修改学生信息def updata_info(self)
# 查询学生信息def search_info(self)
# 显示学生信息def print_all(self):
# 关闭系统def close_sys(self):

四、具体实现 

数据库:

create database py_sql;

use py_sql;

create table students(id int,name varchar(20),gender varchar(5),phonenum varchar(11),address varchar(225));

学生类:

"""
学生类
"""
class Student:
    def __init__(self,id,name,gender,phonenum,address):
        self.id = id
        self.name = name
        self.gender = gender
        self.phonenum = phonenum
        self.address = address

    def __str__(self):
        return f"{self.id},{self.name},{self.gender},{self.phonenum},{self.address}"

数据库操作类:

"""
数据库操作类
"""
from pymysql import Connection
from typing import Tuple
from student import Student
class PysqlUtil:
    # 建立数据库连接对象
    __conn__ = Connection(
        host="localhost",
        port=3306,
        user="root",
        password="root",
        autocommit=True
    )
    # 建立一个游标对象
    __cursor__ = __conn__.cursor()

    # 选择数据库
    __conn__.select_db("py_sql")

    # 通过学号判断数据库中是否存在该学号
    def is_exist(self,id:int) -> bool:
        sql = f"select count(id) from students where id = {id}"
        self.__cursor__.execute(sql)
        result = self.__cursor__.fetchall()[0][0]       # 获取该学号在数据库中的数目
        if result == 0 :
            return False    #不存在
        else:
            return True     #存在

    # 添加学生信息进数据库
    def insert_into_sql(self,Student : Student) -> bool:
        sql = f"insert into students values ({Student.id},'{Student.name}','{Student.gender}','{Student.phonenum}','{Student.address}')"
        try:
            self.__cursor__.execute(sql)
        except Exception as e:
            return False
        else:
            return True


    # 从数据库删除学生信息
    def delete_from_sql(self,id:int) -> bool:
        sql = f"delete from students where id = {id};"
        try:
            self.__cursor__.execute(sql)
        except Exception as e:
            return False
        else:
            return True


    # 修改数据库中学生信息
    def updata_sql(self,id:int,Student:Student) ->bool:
        sql = f"update students set id = {Student.id}, name = '{Student.name}',gender = '{Student.gender}',"\
                f"phonenum = '{Student.phonenum}',address ='{Student.address}' where id = {id};"
        try:
            self.__cursor__.execute(sql)
        except Exception as e:
            return False
        else:
            return True

    # 按条件查询学生信息
    def search_from_sql(self,name:str) -> Tuple:
        sql = f"select * from students where name = '{name}'"
        self.__cursor__.execute(sql)
        result = self.__cursor__.fetchall()
        return result

    # 查询全部学生信息
    def find_all(self) -> Tuple[Tuple] :
        sql = "select * from students"
        self.__cursor__.execute(sql)
        result = self.__cursor__.fetchall()
        return result

    # 关闭数据库连接
    def close_sql(self):
        self.__conn__.close()

if __name__ == '__main__':
    pu = PysqlUtil()
    print(pu.search_from_sql('小明'))

功能类:

"""
功能类
"""
from student import Student
from pysqlUtil import PysqlUtil
class Manager:
    pu = PysqlUtil()
    # 主页面
    def info_print(self):
        print("----------欢迎来到学生管理系统----------")
        print("1.添加学生信息")
        print("2.删除学生信息")
        print("3.修改学生信息")
        print("4.查询学生信息")
        print("5.显示学生信息")
        print("6.退出当前系统")
        print("------------------------------------")

    # 添加学生信息
    def add_info(self):
        try:
            stu_data = input("请输入要添加的学生信息(id,name,gender,phone,address):")
            stu_list = stu_data.split(",")
            student = Student(int(stu_list[0]), stu_list[1], stu_list[2], stu_list[3], stu_list[4])
        except Exception as e:
            print("学生信息输入有误!添加失败")
        else:
            if self.pu.is_exist(student.id):
                print("该学号已存在,请勿重复添加!")
            else:
                result = self.pu.insert_into_sql(student)
                if result:
                    print("该学生信息添加成功!")


    # 删除学生信息
    def del_info(self):
        stu_id: int = int(input("请输入要删除的学生id:"))
        if self.pu.is_exist(stu_id):
            result = self.pu.delete_from_sql(stu_id)
            if result:
                print("该学生信息删除成功!")
        else:
            print("该学号不存在,删除失败!")


    # 修改学生信息
    def updata_info(self):
        stu_id: int = int(input("请输入要修改的学生id:"))
        if self.pu.is_exist(stu_id):
            stu_data = input("请输入修改后的学生信息(id,name,gender,phone,address):")
            stu_list = stu_data.split(",")
            student = Student(int(stu_list[0]), stu_list[1], stu_list[2], stu_list[3], stu_list[4])
            result = self.pu.updata_sql(stu_id,student)
            if result:
                print("该学生信息修改成功!")
        else:
            print("该学号不存在,修改失败!")


    # 查询学生信息
    def search_info(self):
        name = input("请输入要查找的学生名字:")
        result = self.pu.search_from_sql(name)
        if len(result) == 0:
            print("不存在该学生!")
        else:
            for l in result:
                print(l)

    # 显示学生信息
    def print_all(self):
        result = self.pu.find_all()
        if len(result) == 0:
            print("学生表为空!")
        else:
            for l in result:
                print(l)

    # 关闭系统
    def close_sys(self):
        self.pu.close_sql()
        print("欢迎下次光临!再见!")




if __name__ == '__main__':
    test = Manager()
    test.print_all()




主函数:

"""
主函数类
"""
from manager import Manager

manager = Manager()

while True:
    # 显示功能菜单
    # 1.添加学生信息
    # 2.删除学生信息
    # 3.修改学生信息
    # 4.查询学生信息
    # 5.显示学生信息
    # 6.退出当前系统
    manager.info_print()
    # 获取用户输入的信息
    key = int(input("请输入您的选择:"))
    # 进入判断
    if key == 1:
        manager.add_info()      # 添加学生信息
    elif key == 2:
        manager.del_info()      # 删除学生信息
    elif key == 3:
        manager.updata_info()   # 修改学生信息
    elif key == 4:
        manager.search_info()   # 查询学生信息
    elif key == 5:
        manager.print_all()     # 显示全部学生信息
    elif key == 6:
        str = input("确定要退出吗?(yes/no)")
        if str == "yes" or str == "YES":
            manager.close_sys()     # 关闭系统
            break
    else:
        print("输入有误,请重新操作!")

五、运行效果

添加学生

成功:

失败:

删除学生

修改学生信息

查询学生信息(按照名字搜索)

显示学生信息(全部学生)

退出系统


版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐