目录
实现一个命令行版本的学生管理系统
- # 使用列表表示所有的学生
- students = []
- def main():
- """
- 程序的入口函数
- """
- print('+--------------------------+')
- print('| 欢迎来带学生管理系统! |')
- print('+--------------------------+')
- while True:
- choice = menu()
- if choice == 0:
- sys.exit()
- if choice == 1:
- insert()
- elif choice == 2:
- show()
- elif choice == 3:
- find()
- elif choice == 4:
- delete()
- else:
- print('您的输入有误! 请重新输入!')
- main()
- def menu():
- """
- 显示程序菜单
- """
- print(" 1. 新增学生信息")
- print(" 2. 显示所有同学信息")
- print(" 3. 根据名字查找学生信息")
- print(" 4. 删除学生信息")
- print(" 0. 退出程序")
- choice = input(" 请输入您的选择: ")
- return int(choice)
- def insert():
- print("[新增学生] 开始!")
- studentId = input("请输入学生的学号: ")
- name = input("请输入学生的姓名: ")
- gender = input("请输入学生的性别: ")
- if gender not in ('男', '女'):
- print("性别不符合要求! 新增学生失败!")
- return
- className = input("请输入学生的班级: ")
- # 使用一个字典表示学生信息
- student = {
- 'studentId': studentId,
- 'name': name,
- 'gender': gender,
- 'className': className
- }
- # 把字典添加到学生列表中
- global students
- students.append(student)
- print("[新增学生] 完毕!")
- def show():
- print("[显示学生] 开始!")
- for s in students:
- print(f"
- [{s['studentId']}]\t{s['name']}\t{s['gender']}\t{s['className']}")
- print(f"[显示学生] 完毕! 共显示了 {len(students)} 条记录!")
- def find():
- print("[查找学生] 开始!")
- name = input("请输入要查找的同学姓名: ")
- count = 0
- for s in students:
- if name == s['name']:
- print(f"
- [{s['studentId']}]\t{s['name']}\t{s['gender']}\t{s['className']}")
- count += 1
- print(f"[查找学生] 完毕! 共查找到 {count} 条记录!")
- def delete():
- print("[删除学生] 开始!")
- studentId = input("请输入要删除的同学学号: ")
- count = 0
- for s in students:
- if studentId == s['studentId']:
- print(f"删除 {s['name']} 同学的信息!")
- students.remove(s)
- count += 1
- print(f"[删除学生] 完毕! 共删除 {count} 条记录!")
约定存档文件放到 d:/record.txt 文件中。
并且以行文本的方式来保存学生信息,格式如下:
学号\t名字\t性别\t班级
学号\t名字\t性别\t班级
学号\t名字\t性别\t班级
- def save():
- """
- 存档函数
- """
- with open('d:/record.txt', 'w') as f:
- for s in students:
- f.write(f"
- {s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}\n")
- print(f"[存档成功] 共存储了 {len(students)} 条记录!")
在 insert 和 delete 末尾,调用 save 函数进行存档。
- # 执行存档
- save()
- def load():
- """
- 读档函数
- """
- # 如果存档文件不存在, 则跳过读档环节
- if not os.path.exists('d:/record.txt'):
- return
- # 先清空全局变量里的数据
- global students
- students = []
- with open('d:/record.txt', 'r') as f:
- for line in f:
- # 去除末尾的换行符
- line = line.strip()
- tokens = line.split('\t')
- if len(tokens) < 4:
- print(f"文件格式有误! line={line}")
- continue
- student = {
- 'studentId': tokens[0],
- 'name': tokens[1],
- 'gender': tokens[2],
- 'className': tokens[3]
- }
- students.append(student)
- print(f"[读档成功] 共读取了 {len(students)} 条记录!")
在 main 函数开头的地方,调用 load 加载存档。
load()
当前虽然已经实现了一个管理系统,但是 .py 的文件只能在安装了 Python 环境的机器上运行。
为了能够更好的部署到其他主机上,可以借助 pyinstaller 来把 Python 程序打包成 exe 程序。
pip install pyinstaller
pyinstall -F 学生管理系统.py
注意:如果提示找不到 pyinstaller 命令,则需要重启一下 PyCharm。
稍等片刻,很快打包完成。


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