学生管理系统
1.1 设计背景
- 管理系统,主要任务就是使用计算机对学生的各种信息进行日常管理,如:
- 添加
- 删除
- 修改
- 查询
- 退出系统
- 程序设计思路
1.2 需求设计分析
- 打印 “学生管理系统” 的功能菜单,提示用户选择功能序号;
- print_menu() 打印函数
1.3 具体编写程序步骤
1.3.1 输出提示界面
-
程序的功能界面提示信息的作用就是,让用户根据提示进行操作。
- 注意保存学生信息列表。
#1.打印提示界面,将界面封装到一个方法中 def print_menu(): print('1. 添加学生信息') print('2. 删除学生信息') print('3. 修改学生信息') print('4. 显示学生信息') #print('6. 查询所有的学生信息') print('5. 退出系统') #2.将学生信息保存到列表中 student_list_info= []
1.3.2 管理系统框架搭建
-
就是如何调用框架,相当于使用每个功能。
# 2.框架调用设计 # 使用循环重复执行 def main(): count = 0 # 界面计数 while True: print_menu() # 调用菜单显示信息 # 根据菜单信息选择相应提示 num = input("\t请输入操作编号: ") # 获取用户输入编号 count += 1 # 扩展:统计累计次数 if num == '1': # 调用添加函数 pass elif num == "2": # 调用删除函数 pass elif num == "3": # 调用修改函数 pass elif num == "4": # 调用显示学生信息函数 pass elif num == "0": # 退出循环 # 人性设计思路,细节展示 answer = input("亲,真心退出么? ") if answer == "真心": print("程序结束") # end break # 结束整个循环 else: print("输入有误,请重新输入") print(f"======跳转界面{count}次数=======")
1.3.3 添加学生信息
- 将需要保存的学员信息保存到要保存的列表中
student_list_info = []
保存学员列表。- 添加方法
add_student():
- 添加方法
- 业务需求,保存学员信息时,需要考虑,如果重复添加情况,所以,学员姓名(学员id)不能重复。
# 3. 添加学生信息模块: def add_student(): # 3.1 添加学生姓名,性别,手机号 # 提示,添加学生信息 new_student_name = input("请录入学生姓名: ") # 提示,添加学生性别 new_student_sex = input("请录入学生性别: ") # 提示,添加学生手机号 new_student_phone = input("请录入学生手机号: ") # 3.2 存储信息 ,使用字典的,以键值对的方式 new_sturdent_info = {} # 注意: 加一个校验 ,变量成员变量(函数中有介绍) #student_list_info 列表字典信息. #通过key进行遍历 for student_key in student_list_info: if student_key['name'] == new_student_name: print(f"学生姓名 {new_student_name} 已存在,请输入其他姓名。") return # 3.2.1 将数据添加到字典,new_sturdent_info['key']=值 # 字典添加键值对的特点:,没有就添加,有就覆盖 new_sturdent_info['name'] = new_student_name new_sturdent_info['sex'] = new_student_sex new_sturdent_info['phone'] = new_student_phone # 3.3需要将新添加的学生信息添加到,学生列表中保存 # 列表中嵌套字典,每一个元素都是一个学生信息 student_list_info= [{},{},{},{}] student_list_info.append(new_sturdent_info) #验证调用: 姓名错误问题. #第一次添加 # add_student() # print(student_list_info) #第二次添加 # add_student() # print(student_list_info)
1.3.4 删除学生信息
- 删除信息,以名字为主。
- 删除方法 ,
delete_student()
。
- 删除方法 ,
- 业务需求:
- 如果没有请提示信息 。
#1.预先设计调用
#student_list_info= [{"name":'吴琼',"age":18},{"name":'吴琼2',"age":19}]
#4.删除学生信息
def delete_student():
#姓名是唯一id不能重复
key = input("请输入要删除学生的姓名: ")
for student_info in student_list_info:
if student_info['name'] == key:
#如果相同则移除.
student_list_info.remove(student_info)
print("删除成功")
else:
print("姓名不存在")
break #跳出即可
#删除
delete_student()
print(student_list_info)
1.3.5 修改学生信息
-
根据学生姓名进行修改,然后将修改后的参数保存在 “列表中的字典”, 并将这些输入的信息替换字典中的旧信息。
- 修改方法
update_student()
。
# 5. 修改学生信息 def update_student(): student_name = input("请输入要修改学生的姓名: ") # 遍历获取学生信息 for student_info in student_list_info: if student_info['name'] == student_name: new_name = input("请输入修改后的名字: ") new_sex = input("请输入修改后的性别: ") new_phone = input("请输入修改后的手机号: ") # 5.1 将修改的学生信息添加进入 student_info['name'] = new_name student_info['sex'] = new_sex student_info['phone'] = new_phone print("修改成功") break else: print("修改的姓名不存在") #调用函数 update_student() print(student_list_info)
- 修改方法
1.3.6 查询学生信息
-
通过名字查询信息详情
- 查询单个方法
search_student()
#6显示学生信息 def search_student(): #根据学生信息查询 #定义一个标志变量 flag = False student_name = input("请输入要查询的学生名字: ") for student_info in student_list_info: if student_info['name'] == student_name: #默认查询到了 flag = True #输出信息 print(f"学生姓名 : {student_info['name']},性别 :{student_info['sex']},手机号:{student_info['phone']}") if flag==False: print("录入的学生姓名不存在!") #模拟方法调用 search_student()
- 查询单个方法
-
查询全部
- 相当于遍历全部
ef search_all(): for student_info in student_list_info: print(f"学生姓名 : {student_info['name']},性别 :{student_info['sex']},手机号:{student_info['phone']}")
1.4 将所有方法进行组合
- 定义函数 print_info() , 打印提示信息.
- 自定义while True循环逻辑, 实现: 用户录入什么数据, 就进行相应的操作
- 自定义函数 add_student(), 实现: 添加学生,姓名必须唯一
- 自定义函数 delete_student(), 实现: 删除学生, 根据姓名删除
- 自定义函数 update_student(), 实现: 修改学生信息,根据姓名修改: 姓名, 手机号.
- 自定义函数 search_student(), 实现: 查询某个学生信息,根据姓名查询
- 自定义函数 search_all(), 实现: 查询所有学生的信息。
# 1.打印提示界面,将界面封装到一个方法中
def print_menu():
print("====欢迎使用学生管理系统====")
print('1. 添加学生信息')
print('2. 删除学生信息')
print('3. 修改学生信息')
print('4. 显示学生信息')
print('5. 查询所有的学生信息')
print('0. 退出系统')
print("=================")
# 1.1.学生信息保存到列表中
student_list_info = []
# 2.框架调用设计
# 使用循环重复执行
def main():
count = 0 # 界面计数
while True:
print_menu() # 调用菜单显示信息
# 根据菜单信息选择相应提示
num = input("\t请输入操作编号: ") # 获取用户输入编号
count += 1 # 扩展:统计累计次数
if num == '1':
print("=== 正在使用[添加学生信息] ===")
# 调用添加函数
add_student()
elif num == "2":
print("=== 正在使用[删除学生信息] ===")
# 调用删除函数
delete_student()
elif num == "3":
# 调用修改函数
print("=== 正在使用[修改学生信息] ===")
update_student()
elif num == "4":
print("=== 正在使用[查询单个学生信息] ===")
# 调用显示学生信息函数
search_student()
elif num =="5":
print("=== 正在使用[查询全部] ===")
search_all()
elif num == "0": # 退出循环
# 人性设计思路
answer = input("亲,真心退出么? ")
if answer == "真心":
print("程序结束") # end
break # 结束整个循环
else:
print("输入有误,请重新输入")
print(f"======跳转界面{count}次数=======")
# 3. 添加学生信息模块:
def add_student():
# 3.1 添加学生姓名,性别,手机号
# 提示,添加学生信息
new_student_name = input("请录入学生姓名: ")
# 提示,添加学生性别
new_student_sex = input("请录入学生性别: ")
# 3.2 存储信息 ,使用字典的,以键值对的方式
new_sturdent_info = {}
# 注意: 加一个校验 ,变量成员变量(函数中有介绍)
# student_list_info 列表字典信息.
# 通过key进行遍历
for student_key in student_list_info:
if student_key['name'] == new_student_name:
print(f"学生姓名 {new_student_name} 已存在,请输入其他姓名。")
return
# 3.2.1 将数据添加到字典,new_sturdent_info['key']=值
# 字典添加键值对的特点:,没有就添加,有就覆盖
new_sturdent_info['name'] = new_student_name
new_sturdent_info['sex'] = new_student_sex
# 3.3需要将新添加的学生信息添加到,学生列表中保存
# 列表中嵌套字典,每一个元素都是一个学生信息 student_list_info= [{},{},{},{}]
student_list_info.append(new_sturdent_info)
# 4.删除学生信息
def delete_student():
# 姓名是唯一id不能重复
key = input("请输入要删除学生的姓名: ")
for student_info in student_list_info:
if student_info['name'] == key:
# 如果相同则移除.
student_list_info.remove(student_info)
print("删除成功")
break
else:
print("姓名不存在")
# 5. 修改学生信息
def update_student():
student_name = input("请输入要修改学生的姓名: ")
# 遍历获取学生信息
for student_info in student_list_info:
if student_info['name'] == student_name:
new_name = input("请输入修改后的名字: ")
new_sex = input("请输入修改后的性别: ")
# 5.1 将修改的学生信息添加进入
student_info['name'] = new_name
student_info['sex'] = new_sex
print("修改成功")
break
else:
print("修改的姓名不存在")
#6显示学生信息
def search_student():
#根据学生信息查询
#定义一个标志变量
flag = False
student_name = input("请输入要查询的学生名字: ")
for student_info in student_list_info:
if student_info['name'] == student_name:
#默认查询到了
flag = True
#输出信息
print(f"学生姓名 : {student_info['name']},性别 :{student_info['sex']}")
if flag==False:
print("录入的学生姓名不存在!")
def search_all():
for student_info in student_list_info:
print(f"学生姓名 : {student_info['name']},性别 :{student_info['sex']}")
# 调用一个主方法
main()