首页 > 编程语言 >Python 学生管理系统实现与详解

Python 学生管理系统实现与详解

时间:2024-10-22 15:45:39浏览次数:3  
标签:管理系统 Python 学生 cursor 详解 result student print id

        在当今数字化的时代,学生管理系统对于学校和教育机构来说至关重要。它可以帮助管理人员高效地处理学生信息,提高工作效率。本文将详细介绍一个使用 Python 实现的学生管理系统,并对其代码进行深入分析。

一、项目背景与需求

        学生管理系统是为了满足学校或教育机构对学生信息进行有效管理的需求而开发的。该系统需要具备以下功能:

  1. 连接 MySQL 数据库,存储和管理学生信息。
  2. 提供登录功能,用户有三次机会输入正确的用户名和密码登录系统。默认用户名为admin,默认密码为123456
  3. 实现查询学生 ID 的方法,用于判断学生是否存在,并在增加、修改、查询和删除学生信息的方法中使用。
  4. 能够添加学生信息,包括学生的 ID、姓名、院系、专业、地址、电话号码和邮箱。学生的 ID 为学号,不可重复。
  5. 可以修改学生信息,通过 ID 查询找到学生后,能够修改学生的姓名、地址、院系、专业、电话和邮箱。
  6. 提供查询学生信息的功能,可以通过学生的 ID、姓名、院系和专业进行查询,并输出学生的详细信息。
  7. 实现删除学生信息的功能,通过查询学生的姓名或 ID 找到学生后,确认是否删除该学生。
  8. 构建一个学生管理系统的主界面,用户登录成功后,可以选择进入添加、修改、查询或删除学生信息的功能模块,或者退出系统。

二、代码实现与分析

(一)连接数据库

def create_connection():
    return mysql.connector.connect(
        host='localhost',
        database='数据库名称',
        user='你的数据库用户名称',
        password='你的数据库密码'
    )

        这个函数用于创建与 MySQL 数据库的连接。通过指定主机地址、数据库名称、用户名和密码,使用mysql.connector模块建立连接并返回连接对象。这样可以在后续的操作中使用这个连接对象来执行数据库查询和更新操作。

(二)登录页面

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

        登录函数login提供了用户登录学生管理系统的功能。用户有三次机会输入正确的用户名和密码。如果输入的用户名是admin且密码是123456,则登录成功并返回True。如果用户名或密码错误,会提示相应的错误信息,并减少尝试次数。当尝试次数用完时,打印提示信息并返回False

(三)根据 ID 查询用户

def student_by_id(student_id):
    connection = create_connection()
    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)

        这个函数用于根据学生的 ID 查询学生信息。首先创建数据库连接,然后使用游标执行 SQL 查询语句,从students表中查找指定 ID 的学生记录。如果找到记录,result将是一个包含学生信息的元组;如果没有找到,resultNone。最后关闭游标和连接,并返回一个布尔值表示学生是否存在。

(四)添加学生信息

def add_student():
    while True:
        student_id = int(input("请输入学生 ID(学号不可重复|输入 0 退出):"))
        if student_by_id(student_id):
            print("此 ID 已存在,请重新输入。")
        elif student_id == 0:
            print("你已退出添加信息")
            break
        else:
            student_name = input("请输入学生姓名:")
            department = input("请输入学生院系:")
            major = input("请输入学生专业:")
            address = input("请输入学生地址(可为空):")
            phone_number = input("请输入学生电话号码:")
            email = 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)"
            cursor.execute(query, (student_id, student_name, department, major, address, phone_number, email))
            connection.commit()
            cursor.close()
            connection.close()
            print("学生信息添加成功!")

        添加学生信息的函数add_student首先要求用户输入学生的 ID。如果输入的 ID 已经存在,会提示用户重新输入。如果用户输入0,则退出添加信息的功能。如果输入的 ID 不存在,接着要求用户输入学生的姓名、院系、专业、地址、电话号码和邮箱。然后创建数据库连接,使用游标执行 SQL 插入语句,将学生信息插入到students表中。最后提交事务、关闭游标和连接,并打印添加成功的信息。

(五)修改学生信息

def update_student():
    while True:
        student_id = int(input("请输入学生 ID(输入 0 退出):"))
        if student_id == 0:
            print("你已退出添加信息")
            break
        elif not student_by_id(student_id):
            print("此 ID 未找到,请检查 ID。")
        else:
            connection = create_connection()
            cursor = connection.cursor()
            query = "select * from students where student_id = %s"
            cursor.execute(query, (student_id,))
            result = cursor.fetchone()
            print(result)
            while True:
                print("0.退出修改信息|1.修改学生姓名|2.修改学生地址|3.修改学生电话|4.修改学生邮箱|5.修改学生专业|6.修改学生院系")
                choice = int(input("请输入你要修改的选项:"))
                if choice == 1:
                    new_name = input("请输入新的学生姓名:")
                    query = "update students set name = %s where student_id = %s"
                    cursor.execute(query, (new_name, student_id))
                    print("学生姓名修改成功!")
                elif choice == 2:
                    new_address = input("请输入新的学生地址:")
                    query = "update students set address = %s where student_id = %s"
                    cursor.execute(query, (new_address, student_id))
                    print("学生地址修改成功!")
                elif choice == 3:
                    new_phone_number = input("请输入新的学生电话号码:")
                    query = "update students set phone_number = %s where student_id = %s"
                    cursor.execute(query, (new_phone_number, student_id))
                    print("学生电话修改成功!")
                elif choice == 4:
                    new_email = input("请输入新的学生邮箱:")
                    query = "update students set email = %s where student_id = %s"
                    cursor.execute(query, (new_email, student_id))
                    print("学生邮箱修改成功!")
                elif choice == 5:
                    new_major = input("请输入新的学生专业:")
                    query = "update students set major = %s where student_id = %s"
                    cursor.execute(query, (new_major, student_id))
                    print("学生专业修改成功!")
                elif choice == 6:
                    new_department = input("请输入新的学生院系:")
                    query = "update students set department = %s where student_id = %s"
                    cursor.execute(query, (new_department, student_id))
                    print("学生院系修改成功!")
                elif choice == 0:
                    print("你已退出修改信息")
                    break
                else:
                    print("无效选择。")
            connection.commit()
            cursor.close()
            connection.close()
            break

        修改学生信息的函数update_student首先要求用户输入学生的 ID。如果输入的 ID 不存在,会提示用户检查 ID。如果 ID 存在,会查询出该学生的信息并打印。然后进入一个循环,让用户选择要修改的选项,包括学生姓名、地址、电话、邮箱、专业和院系。根据用户的选择,执行相应的 SQL 更新语句,修改学生信息。最后提交事务、关闭游标和连接。

(六)查询学生信息

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()
            if result:
                print(f"学生ID\t\t姓名\t\t\t院系\t\t\t专业\t\t\t地址\t\t\t\t电话\t\t\t\t邮箱")
                print(f"{result[0]}\t{result[1]}\t\t{result[2]}\t\t{result[3]}\t\t{result[4]}\t\t{result[5]}\t\t{result[6]}")
            else:
                print("未找到该 ID 的信息。")
        elif choice == 2:
            student_name = input("请输入姓名:")
            query = "select * from students where name = %s"
            cursor.execute(query, (student_name,))
            results = cursor.fetchall()
            if results:
                print(f"学生ID\t\t姓名\t\t\t院系\t\t\t专业\t\t\t地址\t\t\t\t电话\t\t\t\t邮箱")
                for result in results:
                    print(f"{result[0]}\t{result[1]}\t\t{result[2]}\t\t{result[3]}\t\t{result[4]}\t\t{result[5]}\t\t{result[6]}")
            else:
                print("未找到该姓名的信息。")
        elif choice == 3:
            department = input("请输入学生院系:")
            query = "select * from students where department = %s"
            cursor.execute(query, (department,))
            results = cursor.fetchall()
            if results:
                print(f"学生ID\t\t姓名\t\t\t院系\t\t\t专业\t\t\t地址\t\t\t\t电话\t\t\t\t邮箱")
                for result in results:
                    print(f"{result[0]}\t{result[1]}\t\t{result[2]}\t\t{result[3]}\t\t{result[4]}\t\t{result[5]}\t\t{result[6]}")
            else:
                print("未找到该院系的信息。")
        elif choice == 4:
            major = input("请输入专业:")
            query = "select * from students where major = %s"
            cursor.execute(query, (major,))
            results = cursor.fetchall()
            if results:
                print(f"学生ID\t\t姓名\t\t\t院系\t\t\t专业\t\t\t地址\t\t\t\t电话\t\t\t\t邮箱")
                for result in results:
                    print(f"{result[0]}\t{result[1]}\t\t{result[2]}\t\t{result[3]}\t\t{result[4]}\t\t{result[5]}\t\t{result[6]}")
            else:
                print("未找到该专业的信息。")
        elif choice == 0:
            print("你已退出查询信息")
            break
        else:
            print("无效选择。")
    cursor.close()
    connection.close()

        查询学生信息的函数query_student提供了多种查询方式。用户可以选择通过学生的 ID、姓名、院系或专业进行查询。根据用户的选择,执行相应的 SQL 查询语句,并打印查询结果。如果没有找到符合条件的学生信息,会提示相应的信息。

(七)删除学生信息

def delete_student():
    while True:
        print("0.退出删除信息|1.通过姓名查询并删除|2.通过 ID 查询并删除")
        choice = int(input("请输入你要删除的选项:"))
        connection = create_connection()
        cursor = connection.cursor()
        if choice == 1:
            student_name = input("请输入学生姓名:")
            query = "select * from students where name = %s"
            cursor.execute(query, (student_name,))
            results = cursor.fetchall()
            if results:
                print(f"学生ID\t\t姓名\t\t\t院系\t\t\t专业\t\t\t地址\t\t\t\t电话\t\t\t\t邮箱")
                for result in results:
                    print(f"{result[0]}\t{result[1]}\t\t{result[2]}\t\t{result[3]}\t\t{result[4]}\t\t{result[5]}\t\t{result[6]}")
                students_id = int(input("请输入学生 ID:"))
                confirm = input("确认要删除该学生吗?(y/n):")
                if confirm == "y":
                    student_id = students_id
                    query = "delete from students where student_id = %s"
                    cursor.execute(query, (student_id,))
                    connection.commit()
                    print("学生删除成功!")
            else:
                print("未找到该学生姓名的信息。")
        elif 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:
                print(f"学生ID\t\t姓名\t\t\t院系\t\t\t专业\t\t\t地址\t\t\t\t电话\t\t\t\t邮箱")
                print(f"{result[0]}\t{result[1]}\t\t{result[2]}\t\t{result[3]}\t\t{result[4]}\t\t{result[5]}\t\t{result[6]}")
                confirm = input("确认要删除该学生吗?(y/n):")
                if confirm == "y":
                    query = "delete from students where student_id = %s"
                    cursor.execute(query, (student_id,))
                    connection.commit()
                    print("学生删除成功!")
            else:
                print("未找到该 ID 的信息。")
        elif choice == 0:
            print("你已退出删除信息")
            break
        else:
            print("无效选择。")
        cursor.close()
        connection.close()

        删除学生信息的函数delete_student提供了两种删除方式,通过学生姓名或 ID 查询并删除学生信息。首先让用户选择删除方式,然后根据用户的选择执行相应的 SQL 查询语句,找到符合条件的学生信息并打印。接着要求用户确认是否删除该学生,如果用户输入y,则执行 SQL 删除语句,从数据库中删除该学生信息。最后提交事务、关闭游标和连接。

(八)学生管理系统

def student_management_system():
    # if not login():
    #     return
    while True:
        print("0.退出学生管理系统|1.添加学生|2.修改学生信息|3.查询学生信息|4.删除学生")
        choice = int(input("请输入你的选择:"))
        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("无效选择。")

        学生管理系统的主函数student_management_system提供了一个菜单界面,让用户选择不同的功能模块。用户可以选择添加学生、修改学生信息、查询学生信息、删除学生或退出系统。根据用户的选择,调用相应的函数来执行对应的操作。

三、MySQL数据库

create table students (
        student_id int primary key ,
        name varchar(255),
        department varchar(255),
        major varchar(255),
        address varchar(255),
        phone_number varchar(11),
        email varchar(255)
    );

四、总结

        通过以上代码实现了一个功能较为完整的学生管理系统。该系统使用 Python 和 MySQL 数据库,提供了登录、添加、修改、查询和删除学生信息的功能。用户可以通过命令行界面与系统进行交互,方便地管理学生信息。

        学生管理系统为学校或教育机构提供了一个有效的学生信息管理工具,可以帮助管理人员提高工作效率。随着不同的需求,学生管理系统也可以不断地进行改进和完善,以满足更多的需求。

标签:管理系统,Python,学生,cursor,详解,result,student,print,id
From: https://blog.csdn.net/weixin_64726356/article/details/143148779

相关文章

  • 两句话讲清楚wsl+docker+python开发环境配置
    两句话讲清楚wsl+docker+python开发环境配置目录两句话讲清楚wsl+docker+python开发环境配置写在前面解决方案写在前面背景:win10下wsl+docker整好了之后,还要做什么,windows下载的东西怎么到docker容器里面?win->wsl->容器怎么传好使?准备先配置:wsl+docker,教程我独立出来了doc......
  • Explain详解与索引优化最佳实践
    Mysql安装文档参考:http://note.youdao.com/noteshare?id=12bab3ad6bde2dc0db4158df1b23b7cd&sub=69BD07746CCF4F7DA94CCFB1C4E399E8Explain工具介绍使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈 在select语句之前增加explain关键字......
  • springboot+vue毕业设计管理系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着高等教育的发展,毕业设计作为本科教育的关键环节,其管理效率与质量直接影响到学生的培养质量及学校的整体教学水平。传统的手工管理模式不仅效率低下,还容易出错,难以满足当前教育信息化的发展需求。近年来,随着信息技术的飞速进步,尤其......
  • RAID5数据恢复—raid5阵列如何重组?raid5阵列重组方法详解
    RAID5数据恢复环境:一台存储上有一组由12块SCSI硬盘(11块数据盘+1块热备盘)组建的RAID5磁盘阵列,FreeBSD操作系统+zfs文件系统。RAID5故障:其中一块盘出现故障,需要重组该raid5磁盘阵列。RAID5数据恢复过程:1、将存储关机,将存储中所有磁盘标记后从槽位上取出。以只读方式将所有磁盘进......
  • springboot+vue北部湾职业技术学校学生档案管理系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着信息技术的迅猛发展和教育信息化的不断推进,职业技术学校的学生档案管理工作面临着前所未有的挑战与机遇。北部湾职业技术学校作为培养专业技能人才的重要基地,其学生档案管理工作不仅关乎学生的个人信息安全,还直接影响到学校的教学......
  • vue-springboot基于JavaWeb的智慧养老院管理系统的设计与实现 附源码
    目录项目介绍系统实现截图源码获取地址下载技术栈开发核心技术介绍:为什么选择最新的Vue与SpringBoot技术核心代码部分展示项目介绍该系统从三个对象:由管理员和家属、护工来对系统进行设计构建。主要功能包括:个人信息修改,对家属信息、护工信息、老人入住、外出报备、......
  • django源码基于Python网络爬虫的电子产品信息查询数据可视化分析系统
    目录具体实现截图源码获取地址下载预期达到的目标技术栈编码规范开发技术介绍系统的稳定性和可维护性核心代码部分展示具体实现截图源码获取地址下载点击获取–>下载本项目源码数据库预期达到的目标1、学习系统开发和设计的技术相关知识和工作流程;2、学习使......
  • Python 量化demo
    Python量化量化交易:通过程序选出合适的股票(或其他),在合适的时机,发起买入或卖出的交易,从中追求盈利。量化指标KDJ指标KDJ指标,也称为随机振荡器,是一种动量指标,用于衡量一定时间内股票收盘价与价格范围(最高价和最低价)的关系。KDJ由三条线组成:快速线K、慢速线D和动态线J。这个指......
  • 在 Python 中使用 Type Hints
    在Python中使用TypeHintsCreated:2024-10-21T16:48+08:00Published:2024-10-22T13:08+08:00Categories:Python工厂方法使用TypeVar作为函数参数的类型注释,可以做到传入什么类型,返回什么类型。fromtypingimportType,TypeVarclassPet:def__init__(sel......
  • 第十八课:Python学习之多态
    多态目标多态面向对象三大特性封装根据职责将属性和方法封装到一个抽象的类中定义类的准则继承实现代码的重用,相同的代码不需要重复的编写设计类的技巧子类针对自己特有的需求,编写特定的代码多态不同的子类对象调用相同的父类方法,产生不同的执行......