• Python综合案例:学生管理系统


    目录

    需求说明:

    功能:

    创建入口函数:

    实现菜单函数:

    实现增删查操作:

    1. 新增学生

    2. 展示学生

    3. 查找学生

    4. 删除学生

    加入存档读档:

    1. 约定存档格式

    2. 实现存档函数

    3. 实现读档函数

    打包成 exe 程序发布

    1. 安装 pyinstaller

    2. 打包程序


    需求说明:

    实现一个命令行版本的学生管理系统

    功能:

    • 新增学生
    • 显示学生
    • 查找学生
    • 删除学生
    • 存档到文件

    创建入口函数:

    • 使用一个全局列表 students 表示所有学生信息。
    • 使用 menu 函数和用户交互,这是一个自定义函数。
    • 使用 insert , show , find , delete 这几个自定义函数完成增删查操作。
    • 使用 sys.exit 实现程序退出。
    1. # 使用列表表示所有的学生
    2. students = []
    3. def main():
    4. """
    5. 程序的入口函数
    6. """
    7. print('+--------------------------+')
    8. print('| 欢迎来带学生管理系统! |')
    9. print('+--------------------------+')
    10. while True:
    11. choice = menu()
    12. if choice == 0:
    13. sys.exit()
    14. if choice == 1:
    15. insert()
    16. elif choice == 2:
    17. show()
    18. elif choice == 3:
    19. find()
    20. elif choice == 4:
    21. delete()
    22. else:
    23. print('您的输入有误! 请重新输入!')
    24. main()

    实现菜单函数:

    1. def menu():
    2. """
    3. 显示程序菜单
    4. """
    5. print(" 1. 新增学生信息")
    6. print(" 2. 显示所有同学信息")
    7. print(" 3. 根据名字查找学生信息")
    8. print(" 4. 删除学生信息")
    9. print(" 0. 退出程序")
    10. choice = input(" 请输入您的选择: ")
    11. return int(choice)

    实现增删查操作:

    1. 新增学生

    1. def insert():
    2. print("[新增学生] 开始!")
    3. studentId = input("请输入学生的学号: ")
    4. name = input("请输入学生的姓名: ")
    5. gender = input("请输入学生的性别: ")
    6. if gender not in ('男', '女'):
    7. print("性别不符合要求! 新增学生失败!")
    8. return
    9. className = input("请输入学生的班级: ")
    10. # 使用一个字典表示学生信息
    11. student = {
    12. 'studentId': studentId,
    13. 'name': name,
    14. 'gender': gender,
    15. 'className': className
    16. }
    17. # 把字典添加到学生列表中
    18. global students
    19. students.append(student)
    20. print("[新增学生] 完毕!")

    2. 展示学生

    1. def show():
    2. print("[显示学生] 开始!")
    3. for s in students:
    4. print(f"
    5. [{s['studentId']}]\t{s['name']}\t{s['gender']}\t{s['className']}")
    6. print(f"[显示学生] 完毕! 共显示了 {len(students)} 条记录!")

    3. 查找学生

    1. def find():
    2. print("[查找学生] 开始!")
    3. name = input("请输入要查找的同学姓名: ")
    4. count = 0
    5. for s in students:
    6. if name == s['name']:
    7. print(f"
    8. [{s['studentId']}]\t{s['name']}\t{s['gender']}\t{s['className']}")
    9. count += 1
    10. print(f"[查找学生] 完毕! 共查找到 {count} 条记录!")

    4. 删除学生

    1. def delete():
    2. print("[删除学生] 开始!")
    3. studentId = input("请输入要删除的同学学号: ")
    4. count = 0
    5. for s in students:
    6. if studentId == s['studentId']:
    7. print(f"删除 {s['name']} 同学的信息!")
    8. students.remove(s)
    9. count += 1
    10. print(f"[删除学生] 完毕! 共删除 {count} 条记录!")

    加入存档读档:

    1. 约定存档格式

    约定存档文件放到 d:/record.txt 文件中。

    并且以行文本的方式来保存学生信息,格式如下:

    学号\t名字\t性别\t班级

    学号\t名字\t性别\t班级

    学号\t名字\t性别\t班级

    • 每个同学占一行。
    • 每个同学的信息之间使用 \t 制表符进行分隔。

    2. 实现存档函数

    1. def save():
    2. """
    3. 存档函数
    4. """
    5. with open('d:/record.txt', 'w') as f:
    6. for s in students:
    7. f.write(f"
    8. {s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}\n")
    9. print(f"[存档成功] 共存储了 {len(students)} 条记录!")

    在 insert 和 delete 末尾,调用 save 函数进行存档。

    1. # 执行存档
    2. save()

    3. 实现读档函数

    1. def load():
    2. """
    3. 读档函数
    4. """
    5. # 如果存档文件不存在, 则跳过读档环节
    6. if not os.path.exists('d:/record.txt'):
    7. return
    8. # 先清空全局变量里的数据
    9. global students
    10. students = []
    11. with open('d:/record.txt', 'r') as f:
    12. for line in f:
    13. # 去除末尾的换行符
    14. line = line.strip()
    15. tokens = line.split('\t')
    16. if len(tokens) < 4:
    17. print(f"文件格式有误! line={line}")
    18. continue
    19. student = {
    20. 'studentId': tokens[0],
    21. 'name': tokens[1],
    22. 'gender': tokens[2],
    23. 'className': tokens[3]
    24. }
    25. students.append(student)
    26. print(f"[读档成功] 共读取了 {len(students)} 条记录!")

    在 main 函数开头的地方,调用 load 加载存档。

    load()

    打包成 exe 程序发布

    当前虽然已经实现了一个管理系统,但是 .py 的文件只能在安装了 Python 环境的机器上运行。

    为了能够更好的部署到其他主机上,可以借助 pyinstaller 来把 Python 程序打包成 exe 程序。

    1. 安装 pyinstaller

    pip install pyinstaller
    

    2. 打包程序

    • -F 表示打包成单个 exe (不带动态库)
    pyinstall -F 学生管理系统.py

    注意:如果提示找不到 pyinstaller 命令,则需要重启一下 PyCharm。

    稍等片刻,很快打包完成。

    此时就可以把这个程序拷贝给其他机器使用了,无需 Python 环境即可运行。

  • 相关阅读:
    吃瓜教程-模型的评估与选择
    LRU缓存(哈希+双链表)
    python AssertionError: Torch not compiled with CUDA enabled
    基于微信小程序的宠物寄养小程序,附源码
    【Delphi】FMX Form的BorderStyles不同平台说明
    vue实战入门后台篇八:springboot+mybatis实现网站后台-客户端界面数据对接
    java代理Proxy以及实际PRC场景中的使用
    【PSO】基于PSO粒子群优化的物料点货物运输成本最低值计算matlab仿真,包括运输费用、代理人转换费用、运输方式转化费用和时间惩罚费用
    【JAVA】java泛型 详解
    代理模式-静态动态代理-jdk动态代理-cglib动态代理
  • 原文地址:https://blog.csdn.net/weixin_44906102/article/details/133592473