Python结合MySQL:简易学生管理系统的开发指南

一、编写程序功能:

1.连接 MySQL 数据库,存储和管理学生信息。
2.提供登录功能,用户有三次机会输入正确的用户名和密码登录系统。默认用户名为tata,默认密码为123456。
3.实现添加,查询,更改,删除学生的学生的 ID、姓名、院系、专业、地址、电话号码和邮箱
4.构建一个学生管理系统的主界面,用户登录成功后,可以选择进入添加、修改、查询或删除学生信息的功能模块,或者退出系统。

二、在MySQL上完成数据库编写。

一、创建数据库

create database `students_management`;

二、输入想要的表格数据即可

例如: 

根据实际需要情况输入即可,例如:

三 在PyCharm中完成程序编写。

 一、导入模块

  • 作用
  • mysql.connector:用于连接和操作 MySQL 数据库。
  • Error:捕获数据库操作中的异常(如连接失败、SQL 语法错误等)。
  • import mysql.connector
    from mysql.connector import Error

    二、数据库链接函数

    使用mysql-connector-python9.3.0软件包。

    (使用阿里云镜像即可快速加载使用:http://mirrors.aliyun.com/pypi/simple/ –trusted-host mirrors.aliyun.com/)

    根据自设更改各个名称配置。

    def create_connection():
        """创建数据库连接(移除 auth_plugin 参数)"""
        try:
            return mysql.connector.connect(
                host='localhost',
                database='你的数据库名称',
                user='你的MySQL用户名',
                password='你的MySQL实际密码'  # 仅保留必要参数
            )
        except Error as e:
            print(f"数据库连接失败: {e}")
            return None

    三、登录模块

    def login():
        attempts = 3
        while attempts > 0:
            username = input("请输入用户名(默认用户名为 tata):")
            password = input("请输入密码(默认密码为 123456):")
            if username == "tata" and password == "123456":
                print("欢迎进入学生管理系统")
                return True
            else:
                print("用户名或密码错误")
                attempts -= 1
                if attempts > 0:
                    print(f"你还有{attempts}次机会")
                else:
                    print("次数已用完,请联系管理员!")
        return False

    四、学生信息操作函数

    def student_by_id(student_id):
        connection = create_connection()
        if not connection:
            return False
        cursor = connection.cursor()
        query = "SELECT * FROM students WHERE student_id = %s"
        cursor.execute(query, (student_id,))
        result = cursor.fetchone()
        cursor.close()
        connection.close()
        return bool(result)

    五、添加信息模块 

    def add_student():
        while True:
            try:
                student_id = int(input("请输入学生 ID(学号不可重复|输入 0 退出):"))
            except ValueError:
                print("输入必须为整数,请重新输入。")
                continue
            if student_id == 0:
                break
            if student_by_id(student_id):
                print("此 ID 已存在,请重新输入。")
            else:
                # 输入学生信息
                student_name = input("请输入学生姓名:")
                department = input("请输入学生院系:")
                # 校验电话号码长度
                phone_number = input("请输入学生电话号码:")
                while len(phone_number) != 11:
                    print("电话号码必须为 11 位,请重新输入。")
                    phone_number = input("请输入学生电话号码:")
                # 插入数据库
                connection = create_connection()
                cursor = connection.cursor()
                query = """
                INSERT INTO students (student_id, name, department, major, address, phone_number, email)
                VALUES (%s, %s, %s, %s, %s, %s, %s)
                """
                try:
                    cursor.execute(query, (student_id, student_name, department, major, address, phone_number, email))
                    connection.commit()
                    print("学生信息添加成功!")
                except Error as e:
                    print(f"添加失败: {e}")
                    connection.rollback()  # 失败时回滚事务
                finally:
                    cursor.close()
                    connection.close()

    六、查询信息模块

    def query_student():
        while True:
            print("0.退出查询信息|1.通过 ID 查询|2.通过姓名查询|3.通过院系查询|4.通过专业查询")
            choice = int(input("请输入你要查询的选项:"))
            connection = create_connection()
            cursor = connection.cursor()
            if choice == 1:
                student_id = int(input("请输入 ID:"))
                query = "SELECT * FROM students WHERE student_id = %s"
                cursor.execute(query, (student_id,))
                result = cursor.fetchone()
                # 打印结果
            elif choice == 2:
                # 通过姓名查询(类似ID查询,使用FETCHALL获取多条记录)
            # 其他查询条件逻辑类似
            cursor.close()
            connection.close()

    七、更改信息模块

    def update_student():
        while True:
            student_id = int(input("请输入学生 ID(输入 0 退出):"))
            if not student_by_id(student_id):
                print("此 ID 未找到,请检查 ID。")
                continue
            # 查询原有数据并显示
            query = "SELECT * FROM students WHERE student_id = %s"
            cursor.execute(query, (student_id,))
            result = cursor.fetchone()
            print("当前学生信息:", result)
            # 循环选择要修改的字段(姓名、地址、电话等)
            choice = int(input("0.退出修改|1.修改姓名|2.修改地址|...:"))
            if choice == 1:
                new_name = input("请输入新姓名:")
                query = "UPDATE students SET name = %s WHERE student_id = %s"
                cursor.execute(query, (new_name, student_id))
            # 其他字段修改逻辑类似
            connection.commit()  # 提交修改

    八、删除信息模块

    def delete_student():
        while True:
            print("0.退出删除|1.按姓名删除|2.按 ID 删除")
            choice = int(input("请选择操作:"))
            if choice == 2:
                student_id = int(input("请输入学生 ID:"))
                query = "SELECT * FROM students WHERE student_id = %s"
                cursor.execute(query, (student_id,))
                result = cursor.fetchone()
                if result:
                    confirm = input(f"确认删除学生 {student_id} 吗?(y/n):")
                    if confirm.lower() == 'y':
                        query = "DELETE FROM students WHERE student_id = %s"
                        cursor.execute(query, (student_id,))
                        connection.commit()
                        print("删除成功!")
            # 按姓名删除逻辑类似,支持多条记录选择

    九、主程序流程

    def student_management_system():
        if not login():
            return
        while True:
            print("0.退出学生管理系统|1.添加学生|2.修改学生信息|3.查询学生信息|4.删除学生")
            try:
                choice = int(input("请输入你的选择:"))
            except ValueError:
                print("输入必须为整数,请重新输入。")
                continue
            if choice == 0:
                print("你已退出学生管理系统,欢迎下次登录")
                break
            elif choice == 1:
                add_student()
            elif choice == 2:
                update_student()
            elif choice == 3:
                query_student()
            elif choice == 4:
                delete_student()
            else:
                print("无效选择。")
    
    if __name__ == "__main__":
        student_management_system()

    四、将MySQL与PyCharm中链接。

    打开PyCharm,打开【视图】,选择【工具窗口】,选择【数据库】,点击左上角【+】,选择【MySQL】,根据自设配置数据配置即可,例如:

    输入完成后 可点击下面链接测试,如果超时可在原URL后直接黏贴?serverTimezone=GMT(无需删掉原有的!)

    选择需要的数据库打开即可。例如:

    五 、注意事项。

    本程序使用了mysql-connector-python9.3.0软件包。若未下载,或版本低于8.0,可能出现以下报错:Authentication plugin 'caching_sha2_password' is not supported。

    使用上文推荐的镜像下载即可。

    作者:YHHHHHHH94649

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python结合MySQL:简易学生管理系统的开发指南

    发表回复