8、基础案例
大约 5 分钟
学生信息管理系统
需求
- 程序启动,显示信息管理系统欢迎界面,并显示功能菜单
- 用户用数字选择不同的功能
- 根据功能选择,执行不同的功能
- 需要记录学生的 姓名、语文成绩、数学成绩、英语成绩 、总分
- 如果查询到指定的学生信息,用户可以选择 修改 或者 删除 信息
- 进入或退出时加载或保存数据
**************************************************
欢迎使用【学生信息管理系统】V1.0
请选择你想要进行的操作
1. 新建学生信息
2. 显示全部信息
3. 查询学生信息
4. 修改学生信息
5. 删除学生信息
0. 退出系统
**************************************************
功能设计
- 主程序功能代码
- 程序主循环
- 选择数据保存的格式以及方式
- 列表与字典组合数据格式
- 所有功能
- 将对名片的 新增、查询、修改、删除 等功能
需求实现
编写主循环
程序主循环可以保证程序不会运行一次之后就立马停止
- 添加一个 无限循环
while True:
action = input("请选择操作功能:")
print("您选择的操作是:{}".format(action))
# 循环的限制条件
if action == '0':
print("欢迎再次使用【信息管理系统】")
break
# TODO 新增数据
# TODO 显示全部数据
# TODO 查询数据
# TODO 修改数据
# TODO 删除数据
else:
print("输入错误请重新输入")
pass
pass
就是一个空语句,不做任何事情,一般用做占位语句- 是为了保持程序结构的完整性
无限循环
- 在开发软件时,如果 不希望程序执行后 立即退出
- 可以在程序中增加一个 无限循环
- 由用户来决定 退出程序的时机
在 while
中增加功能
# TODO 新增数据
elif action == '1':
pass
# TODO 显示全部数据
elif action == '2':
pass
# TODO 查询数据
elif action == '3':
pass
# TODO 删除数据
elif action == '4':
pass
# TODO 修改数据
elif action == '5':
pass
修改 while
循环的代码如下:
while True:
# TODO(小明) 显示系统菜单
action = input("请选择操作功能:")
print("您选择的操作是:{}".format(action))
# 循环的限制条件
if action == '0':
print("欢迎再次使用【学生信息管理系统】")
break
# TODO 新增数据
elif action == '1':
pass
# TODO 显示全部数据
elif action == '2':
pass
# TODO 查询数据
elif action == '3':
pass
# TODO 删除数据
elif action == '4':
pass
# TODO 修改数据
elif action == '5':
pass
else:
print("输入错误请重新输入")
欢迎界面
当进入系统之后,打印欢迎信息并提示用户进行操作
************************************************
欢迎使用【学生信息管理系统】V1.0
请选择你想要进行的操作
1. 新建学生信息
2. 显示全部信息
3. 查询学生信息
4. 修改学生信息
5. 删除学生信息
0. 退出系统
**************************************************
新增数据
程序就是用来处理数据的,而变量就是用来存储数据的
- 使用 字典 记录 每一名学生 的详细信息
- 使用 列表 统一记录所有的 学生信息字典
定义信息列表变量
# 所有名片记录的列表
students_list = []
注意
- 所有名片相关操作,都需要使用这个列表,所以应该定义在程序的顶部
- 程序刚运行时,没有数据,所以是空列表
功能分析
- 提示用户依次输入学生信息
- 将信息保存到一个字典
- 将字典添加到信息列表
- 提示信息添加完成
实现添加数据方法
students_list = []
# 输入学生信息
name = input("请输入姓名:")
chinese = input("请输入语文成绩:")
math = input("请输入数学成绩:")
english = input("请输入英语成绩:")
# 加完之后的总分是数字
total = int(chinese) + int(math) + int(english)
# 与类型无关 只要实现效果就行
# 字典存储学生信息
stu = {
"name": name,
"chinese": chinese,
"math": math,
"english": english,
"total": total
}
students_list.append(stu)
# 4. 提示添加成功信息
print("成功添加 %s 的信息" % stu['name'])
查询数据
显示所有信息
功能分析
- 提示用户要搜索的姓名
- 根据用户输入的姓名遍历列表
- 搜索到指定的名片后,再执行后续的操作
查询功能实现
students_list = [
{'name': '张三', 'chinese': '65', 'math': '65', 'english': '65', 'total': 195},
{'name': '李四', 'chinese': '65', 'math': '65', 'english': '65', 'total': 195},
{'name': '王五', 'chinese': '65', 'math': '65', 'english': '65', 'total': 195}
]
# 从列表里面取出学生信息
print("姓名\t\t语文\t\t数学\t\t英语\t\t总分")
str_format = "{}\t\t{}\t\t{}\t\t{}\t\t{}"
for stu in students_list:
# 遍历字典的值
# for i in stu.values():
# print(i, end="\t\t")
# print()
print(str_format.format(*stu.values()))
# print(stu['name'], stu['chinese'], stu['math'], stu['english'], stu['total'], sep="\t\t")
删除数据
由于找到的字典记录已经在列表中保存
要删除名片记录,只需要把列表中对应的字典删除即可
students_list = [
{'name': '李四', 'chinese': '65', 'math': '65', 'english': '65', 'total': 195},
{'name': '王五', 'chinese': '65', 'math': '65', 'english': '65', 'total': 195},
{'name': '张三', 'chinese': '65', 'math': '65', 'english': '65', 'total': 195},
]
name = input("请输入需要删除的学生姓名:")
for stu in students_list:
if name == stu["name"]:
# 实现删除功能
# 删除的方式 remove pop del students_list[0]
# 指定内容删除
# students_list.remove(stu)
# name 的索引 index
del students_list[students_list.index(stu)]
# d = students_list.pop()
# print("数据已经删除", d)
break
else:
print("此学生不存在,请重新查询")
print(info_list)
修改信息
由于找到的字典记录已经在列表中保存
要修改名片记录,只需要把列表中对应的字典中每一个键值对的数据修改即可
students_list = [
{'name': '李四', 'chinese': '65', 'math': '65', 'english': '65', 'total': 195},
{'name': '王五', 'chinese': '65', 'math': '65', 'english': '65', 'total': 195},
{'name': '张三', 'chinese': '65', 'math': '65', 'english': '65', 'total': 195},
]
name = input("请输入需要修改的学生姓名:")
for stu in students_list:
if name == stu["name"]:
# 不输入内容 则不修改
print("(输入为空则不修改)")
name = input("请输入姓名:")
if name:
stu["name"] = name
chinese = input("请输入语文成绩:")
if chinese:
stu["chinese"] = chinese
math = input("请输入数学成绩:")
if math:
stu["math"] = math
english = input("请输入英语成绩:")
if english:
stu["english"] = english
stu['total'] = int(stu["chinese"]) + int(stu["math"]) + int(stu["english"])
break
else:
print("此学生不存在,请重新查询")
print(info_list)