学生管理系统:应该算是语言语法学习过程中一个比较适合测试语法熟练度的代码案例了。
创建一个全局的students列表,列表中每个元素为字典类型,每个字典存放一个学生的所有信息。
通过入口函数链接所有操作
# 用一个全局变量存学生信息
# 该全局变量为列表,列表中每个元素都是字典,字典中存放一个学生的所有信息
students = []
def main():
# 入口函数
# 通过控制台交互
print("---------------------------------------------------")
print(" 学生管理系统 ")
print("---------------------------------------------------")
# 开始前读取数据
load()
while True:
# menu() 菜单
choice = menu()
if choice == '1':
Add()
elif choice == '2':
Display()
elif choice == '3':
Find()
elif choice == '4':
Delete()
elif choice == '0':
print("学生管理系统: 退出成功!")
sys.exit(0)
else:
print("输入有误, 重新输入")
main()
def menu():
print("---------------------------------------------------")
print("1. 新增学生")
print("2. 显示学生")
print("3. 查找学生")
print("4. 删除学生")
print("0. 退出系统")
print("---------------------------------------------------")
choice = input("请输入选择: ")
return choice
save()
(存储学生信息到文件)def Add():
print("[新增学生]: 开始")
# 学号
studentId = input("输入学号: ")
# 姓名
name = input("输入姓名: ")
# 性别
gender = input("输入性别: ")
# 班级
className = input("输入班级: ")
# 用字典将学生信息聚合
student = {
'studentId' : studentId,
'name' : name,
'gender' : gender,
'className' : className
}
global students
students.append(student) #将该学生写入列表中
# 保存学生信息
save()
print("[新增学生]: 完成")
def Display():
print("[显示学生]: 开始")
for s in students:
print(f"[{s['studentId']}]\t{s['name']}\t{s['gender']}\t{s['className']}")
print(f"[显示学生]: 完成\t共显示了{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"[查找学生]: 完成\t共查找到{count}个匹配的学生")
remove()
函数删除该学生def Delete():
print("[删除学生]:开始")
studentId = input("输入要删除的学生的学号: ")
for s in students:
if(studentId == s['studentId']):
print(f"删除了学生{s['name']}")
students.remove(s) #列表调用remove进行删除
# 保存此时数据
save()
print("[删除学生]:完成")
with open()
语句来打开一个名为 data.txt
的文本文件,并指定了打开方式为写入模式和编码方式为 utf8
def save():
# 存储学生信息
with open('data.txt','w',encoding='utf8') as f:
for s in students:
f.write(f"{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}")
print(f'[存储数据成功] 共存储了 {len(students)} 条数据')
data.txt
文件,直接返回,不执行操作def load():
# 读档
# 如果文件不存在,直接返回,不再读档
if not os.path.exists('data.txt'):
return
# 读档前保证students中没有数据
global students
students = []
with open('data.txt', 'r', encoding='utf8') as f:
for line in f: # 每次切分f的一个学生数据
line.strip() # 去掉字符串两边的空格
tokens = line.split('\t') # 以'\t'为分隔符分割line - 返回值是list(列表)
if len(tokens) != 4:
print(f"当前行格式有问题: line={line}")
continue
# 此时切分完成
student = {
'studentId' : tokens[0],
'name' : tokens[1],
'gender' : tokens[2],
'className' : tokens[3]
}
# 将元素读取到students中
students.append(student)
print(f"[读取数据成功] 共读取了 {len(students)} 条数据")
import os.path
import sys
def menu():
print("---------------------------------------------------")
print("1. 新增学生")
print("2. 显示学生")
print("3. 查找学生")
print("4. 删除学生")
print("0. 退出系统")
print("---------------------------------------------------")
choice = input("请输入选择: ")
return choice
# 用一个全局变量存学生信息
# 该全局变量为列表,列表中每个元素都是字典,字典中存放一个学生的所有信息
students = []
def save():
# 存储学生信息
with open('data.txt','w',encoding='utf8') as f:
for s in students:
f.write(f"{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}")
print(f'[存储数据成功] 共存储了 {len(students)} 条数据')
def load():
# 读档
# 如果文件不存在,直接返回,不再读档
if not os.path.exists('data.txt'):
return
# 读档前保证students中没有数据
global students
students = []
with open('data.txt', 'r', encoding='utf8') as f:
for line in f: # 每次切分f的一行(一个学生数据)
line.strip() # 去掉字符串两边的空格
tokens = line.split('\t') # 以'\t'为分隔符分割line - 返回值是list(列表)
if len(tokens) != 4:
print(f"当前行格式有问题: line={line}")
continue
# 此时切分完成
student = {
'studentId' : tokens[0],
'name' : tokens[1],
'gender' : tokens[2],
'className' : tokens[3]
}
# 将元素读取到students中
students.append(student)
print(f"[读取数据成功] 共读取了 {len(students)} 条数据")
def Add():
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 Display():
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"[查找学生]: 完成\t共查找到{count}个匹配的学生")
def Delete():
print("[删除学生]:开始")
studentId = input("输入要删除的学生的学号: ")
for s in students:
if(studentId == s['studentId']):
print(f"删除了学生{s['name']}")
students.remove(s) #列表调用remove进行删除
# 保存此时数据
save()
print("[删除学生]:完成")
def main():
# 入口函数(主函数)
# 通过控制台交互
print("---------------------------------------------------")
print(" 学生管理系统 ")
print("---------------------------------------------------")
# 开始前先调用load,读取数据
load()
while True:
# menu() 菜单
choice = menu()
if choice == '1':
Add()
elif choice == '2':
Display()
elif choice == '3':
Find()
elif choice == '4':
Delete()
elif choice == '0':
print("学生管理系统: 退出成功!")
sys.exit(0)
else:
print("输入有误, 重新输入")
main()