目录
一,功能介绍
这个系统的主要功能有:
- 新增学生
- 显示学生
- 查找学生
- 删除学生
- 存档到文件
二,创建入口和菜单函数
- 使用一个全局列表 students 表示所有学生信息
- 使用 menu 函数和用户交互
- 这是一个自定义函数. 使用 insert , show , find , delete 这几个自定义函数完成增删查操作
- 使用 sys.exit 实现程序退出.
# 使用列表表示所有的学生
students = []
def menu():
"""
显示程序菜单
"""
print(" 1. 新增学生信息")
print(" 2. 显示所有同学信息")
print(" 3. 根据名字查找学生信息")
print(" 4. 删除学生信息")
print(" 0. 退出程序")
choice = input(" 请输入您的选择: ")
return int(choice)
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()
三,实现增删查操作
3.1 新增
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("[新增学生] 完毕!")
3.2 显示
def show():
print("[显示学生] 开始!")
for s in students:
print(f"[{s['studentId']}]\t{s['name']}\t{s['gender']}\t{s['className']}")
print(f"[显示学生] 完毕! 共显示了 {len(students)} 条记录!")
3.3 查找
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} 条记录!")
3.4 删除
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} 条记录!")
四,加入存档读档
4.1 约定存档格式
我们约定存档文件放到当前目录的 record.txt 文件中,并以行文本的方式来保存学生信息,如下:
学号\t名字\t性别\t班级
学号\t名字\t性别\t班级
学号\t名字\t性别\t班级
- 每个学生占一行
- 每个学生的信息之间用 \t 进行分割
4.2 存档函数实现
def save():
"""
存档函数
"""
with open('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()
4.3 读档函数实现
def load():
"""
读档函数
"""
# 如果存档文件不存在, 则跳过读档环节
if not os.path.exists('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()
4.4 完整代码
import sys
import os
def save():
"""
存档函数
"""
with open('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)} 条记录!")
def load():
"""
读档函数
"""
# 如果存档文件不存在, 则跳过读档环节
if not os.path.exists('record.txt'):
return
# 先清空全局变量里的数据
global students
students = []
with open('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)} 条记录!")
# 使用列表表示所有的学生
students = []
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)
save()
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
save()
print(f"[删除学生] 完毕! 共删除 {count} 条记录!")
def main():
load()
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()
4.5 打包成 exe 程序发布
当前虽然已经实现了一个管理系统, 但是 .py 的文件只能在安装了 Python 环境的机器上运行. 为了能够更好的部署到其他主机上, 可以借助 pyinstaller 来把 Python 程序打包成 exe 程序.
先安装 pyinstaller:
然后我们可以在 PyCharm 的终端里进行打包,如果提示说找不到命令,可以重启下 PyCharm:
打包完成后,就可以找到生成了 exe 程序了: