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

本次项目适合初学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("输入有误,请重新操作!")

五、运行效果

添加学生

成功:

失败:

删除学生

修改学生信息

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

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

退出系统

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是一个简单的Python+MySQL学生管理系统代码实现,包括添加、删除、修改和查询学生信息功能: ```python import pymysql # 连接数据库 db = pymysql.connect(host='localhost', user='root', password='123456', db='student') # 创建游标 cursor = db.cursor() # 添加学生信息 def add_student(name, age, gender, score): sql = "INSERT INTO students(name, age, gender, score) VALUES ('%s', %d, '%s', %.2f)" % (name, age, gender, score) try: cursor.execute(sql) db.commit() print("添加学生信息成功!") except: db.rollback() print("添加学生信息失败!") # 删除学生信息 def delete_student(id): sql = "DELETE FROM students WHERE id = %d" % id try: cursor.execute(sql) db.commit() print("删除学生信息成功!") except: db.rollback() print("删除学生信息失败!") # 修改学生信息 def update_student(id, name, age, gender, score): sql = "UPDATE students SET name = '%s', age = %d, gender = '%s', score = %.2f WHERE id = %d" % (name, age, gender, score, id) try: cursor.execute(sql) db.commit() print("修改学生信息成功!") except: db.rollback() print("修改学生信息失败!") # 查询学生信息 def query_student(id): sql = "SELECT * FROM students WHERE id = %d" % id try: cursor.execute(sql) results = cursor.fetchall() for row in results: print("ID:%d, 姓名:%s, 年龄:%d, 性别:%s, 成绩:%.2f" % (row[0], row[1], row[2], row[3], row[4])) except: print("查询学生信息失败!") # 关闭数据库连接 def close_db(): db.close() # 测试代码 if __name__ == "__main__": print("1. 添加学生信息") print("2. 删除学生信息") print("3. 修改学生信息") print("4. 查询学生信息") print("5. 退出程序") while True: choice = int(input("请输入要执行的操作:")) if choice == 1: name = input("请输入学生姓名:") age = int(input("请输入学生年龄:")) gender = input("请输入学生性别:") score = float(input("请输入学生成绩:")) add_student(name, age, gender, score) elif choice == 2: id = int(input("请输入要删除的学生ID:")) delete_student(id) elif choice == 3: id = int(input("请输入要修改的学生ID:")) name = input("请输入学生姓名:") age = int(input("请输入学生年龄:")) gender = input("请输入学生性别:") score = float(input("请输入学生成绩:")) update_student(id, name, age, gender, score) elif choice == 4: id = int(input("请输入要查询的学生ID:")) query_student(id) elif choice == 5: close_db() break else: print("输入有误,请重新输入!") ``` 注意:在运行代码之前需要先创建一个名为`student`的MySQL数据库,并在其中创建一个名为`students`的表,表结构如下: ```sql CREATE TABLE students ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, age INT(11) NOT NULL, gender VARCHAR(10) NOT NULL, score FLOAT(2) NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值