题目要求(面向过程)
(1)系统最终效果:
(2)需求分析:
需求:进入系统显示系统功能界面,功能如下:
① 添加学员信息
② 删除学员信息
③ 修改学员信息
④ 查询学员信息(只查询某个学员)
⑤ 遍历所有学员信息
⑥ 退出系统
系统共6个功能,用户根据自己需求选取
(3)功能步骤实现:
① 显示功能界面
② 用户输入功能序号
③ 根据用户输入的功能序号,执行不同的功能(函数)
☆ 定义函数
☆ 调用函数
# 5、定义一个大列表,将来用于保存所有同学的信息 []
students = [] # 将来数据结构[{}, {}, {}]
# 6、封装一个add_student()方法,用于向students中添加学生信息
def add_student():
student = {}
# 提示用户输入要添加的学员信息
# 字典[键] = 值 => {name:xxx, age:23, mobile:10086}
student['name'] = input('请输入学生的姓名:')
student['age'] = int(input('请输入学生的年龄:'))
student['mobile'] = input('请输入学生的电话:')
# 把这个字典追加到全局的students列表中
global students
students.append(student)
print('恭喜您,学生信息已经录入成功!')
print(students)
# 7、封装一个del_student()函数,用于实现删除学生信息
# ① 提示用户输入要删除同学的名字 ② 然后在students列表中,进行循环遍历,找是否有删除的同学,找到了就删除,找不到弹出提示没有这个同学信息
def del_student():
name = input('请输入您要删除学生的姓名:')
for i in students: # 从students列表中取出每一个字典,然后放入变量i中
if i['name'] == name: # 相等就代表找到了这个同学
# 把这个字典从列表中整体删除
students.remove(i)
print('恭喜您,学生信息已经成功删除!')
print(students)
break
else:
print('很抱歉,您要删除学生的信息暂不存在!')
# 8、封装一个edit_student()方法,用于实现更改学生的信息
def edit_student():
# 提示用户输入要修改学员的姓名
name = input('请输入您要更改的学生姓名:')
# 对整个列表students进行遍历
for i in students:
if i['name'] == name:
i['name'] = input('请输入修改后学生的姓名:')
i['age'] = input('请输入修改后学生的年龄:')
i['mobile'] = input('请输入修改后学生的电话:')
print('您要修改的学生信息已经修改成功!')
print(students)
break
else:
print('很抱歉,没有找到您要修改的学生信息,请重新输入!')
# 9、定义一个find_student()函数,用于查找同学的信息
def find_student():
# 提示用户输入要查找的同学名称
name = input('请输入您要查找学生的姓名:')
for i in students:
if i['name'] == name:
print(i)
break
else:
print('很抱歉,没有找到您要查找的学生信息不存在,请重新输入!')
# 10、定义一个show_students()函数,用于显示所有学员信息
def show_student():
for i in students:
print(i)
# 11、定义一个save_data_to_file()函数,用于保存数据到文件
def save_data_to_file():
# 1、打开文件
f = open('students.txt', 'w', encoding='utf-8')
# 2、读写文件(只有字符串类型的数据方才会写入到文件中)
global students
f.write(str(students)) # 只能把字符串写入到文件 => [{}, {}, {}] => '[{}, {}, {}]'
# 3、关闭文件
f.close()
print('恭喜您,信息已经保存成功!')
# 12、加载students.txt中的数据到students列表中
def load_data():
# 1、打开文件
f = open('students.txt','r',encoding='utf-8')
# 2、读写文件
content = f.read() # str字符串类型
# 判断文件内容是否为空
if not content:
return # 终止此函数,不需要在继续加载了
else:
# 如果代码继续向下执行,代表content不为空,则进行类型转换
global students # 声明我们接下来要使用的students是全局变量
students = eval(content)
# 12、加载students.txt中的数据到students列表中
load_data()
# 2、封装一个menu()函数,专门用于实现打印学生管理系统的菜单
def menu():
print('_' * 40)
print('欢迎使用济医学生管理系统 v1.0')
print('【1】添加学生的信息')
print('【2】删除学生的信息')
print('【3】修改学生的信息')
print('【4】查询学生的信息')
print('【5】遍历所有学生的信息')
print('【6】保存数据到文件')
print('【7】退出系统')
print('_' * 40)
# 1、定义一个死循环结构,让代码一直执行下去,直到用户手工退出
while True:
menu()
# 3、提示用户输入要执行的功能编号
user_num = int(input('请输入您要选择的功能编号:'))
# 4、使用if多分支结构进行条件判断选择
if user_num == 1:
add_student()
elif user_num == 2:
del_student()
elif user_num == 3:
edit_student()
elif user_num == 4:
find_student()
elif user_num == 5:
show_student()
elif user_num == 6:
save_data_to_file()
elif user_num == 7:
print('退出系统成功,感谢您使用济医学生管理系统!')
break
else:
print('很抱歉您的输入有误,请重新输入!')
注意:
①保存数据到文件中时,还要加载文件中的数据到students列表。
②global关键字只是针对不可变数据类型的变量进行修改操作(数值;字符串;布尔;元组),可变类型可以不加global关键字。
③添加学生信息时:
④删除学生信息时:
注意:删除学员信息时,for与else是一对