学生信息管理系统(基础版)
需求
- 程序启动,显示信息管理系统欢迎界面,并显示功能菜单
- 用户用数字选择不同的功能
- 根据功能选择,执行不同的功能
- 需要记录学生的姓名、语文成绩、数学成绩、英语成绩 、总分
- 如果查询到指定的学生信息,用户可以选择修改或者删除信息
- 进入或退出时加载或保存数据
功能设计
- 主程序功能代码
- 程序主循环
- 选择数据保存的格式以及方式
- 列表与字典组合数据格式
- 所有功能
- 将对学生信息的 新增、查询、修改、删除 等功能
编写主循环
程序主循环可以保证程序不会运行一次之后就立马停止
- 添加一个无限循环
py
while True:
action = input("请选择操作功能:")
# TODO 新增数据
# TODO 显示全部数据
# TODO 查询数据
# TODO 修改数据
# TODO 删除数据
pass
pass
就是一个空语句,不做任何事情,一般用做占位语句- 是为了保持程序结构的完整性
无限循环
- 在开发软件时,如果 不希望程序执行后 立即退出
- 可以在程序中增加一个 无限循环
- 由用户来决定 退出程序的时机
在 while
中增加功能
py
while True:
action = input("请选择操作功能:")
# TODO 新增数据
if 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. 退出系统
**************************************************
新增数据
功能分析
- 提示用户依次输入学生信息
- 将信息保存到一个字典
- 将字典添加到信息列表
- 提示信息添加完成
保存数据
很多个学员,每个学员的信息都是差不多的,用列表存储更加方便。
而每个学员信息,用字典存储,后续操作是根据指定键操作值更方便一些
定义列表变量存储学生列表
python
# 所有学生信息的列表
student_list = [] // [!code ++]
- 所有学生信息相关操作,都需要使用这个列表,所以应该定义在程序的顶部
- 程序刚运行时,没有数据,所以是空列表
实现添加数据方法
py
student_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
}
student_list.append(stu)
# 4. 提示添加成功信息
print("成功添加 %s 的信息" % stu['name'])
查询数据
显示所有信息
功能分析
- 提示用户要搜索的姓名
- 根据用户输入的姓名遍历列表
- 搜索到指定的学员后,再执行后续的操作
查询功能实现
py
student_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 student_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")
删除数据
由于找到的字典记录已经在列表中保存
要删除学生记录,只需要把列表中对应的字典删除即可
py
student_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 student_list:
if name == stu["name"]:
# 实现删除功能
# 删除的方式 remove pop del student_list[0]
# 指定内容删除
# student_list.remove(stu)
# name 的索引 index
del student_list[student_list.index(stu)]
# d = student_list.pop()
# print("数据已经删除", d)
break
else:
print("此学生不存在,请重新查询")
print(student_list)
修改信息
由于找到的字典记录已经在列表中保存
要修改学员记录,只需要把列表中对应的字典中每一个键值对的数据修改即可
py
student_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 student_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(student_list)
完整内容
py
str_info = """**************************************************
欢迎使用【学生信息管理系统】V1.0
请选择你想要进行的操作
1. 新建学生信息
2. 显示全部信息
3. 查询学生信息
4. 修改学生信息
5. 删除学生信息
0. 退出系统
**************************************************"""
students = [{"name": "正心", "chinese": "65", "math": "65", "english": "65", "total": 195}]
while True:
print(str_info)
action = input('请选择你想要进行的操作:')
if action == '1':
print('1. 新建学生信息')
name = input('请输入学生的姓名:')
chinese = int(input('请输入学生的语文成绩:'))
math = int(input('请输入学生的数学成绩:'))
english = int(input('请输入学生的英语成绩:'))
total = chinese + math + english
stu = {"name": name, "chinese": chinese, "math": math, "english": english, "total": total}
students.append(stu)
elif action == '2':
print('2. 显示全部信息')
print('姓名\t\t语文\t\t数学\t\t英语\t\t总分')
for stu in students:
print("{}\t\t{}\t\t{}\t\t{}\t\t{}".format(stu['name'], stu['chinese'], stu['math'], stu['english'],
stu['total']))
elif action == '3':
print('3. 查询学生信息')
name = input('请输入你想要查询的学生姓名:')
for stu in students:
if name == stu['name']:
print('姓名\t\t语文\t\t数学\t\t英语\t\t总分')
print("{}\t\t{}\t\t{}\t\t{}\t\t{}".format(stu['name'], stu['chinese'], stu['math'], stu['english'],
stu['total']))
break
else:
print('该学生不存在,请检查名字是否输入正确')
elif action == '4':
print('4. 修改学生信息')
name = input('请输入你想要修改的学生姓名:')
for stu in students:
if name == stu['name']:
print('(如果输入为空,就使用原来的)')
name = input('请重新输入学生的名字:')
chinese = input('请重新输入学生的语文成绩:')
math = input('请重新输入学生的数学成绩:')
english = input('请输重新入学生的英语成绩:')
total = chinese + math + english
if name:
stu['name'] = name
if chinese:
stu['chinese'] = int(chinese)
if math:
stu['math'] = int(math)
if english:
stu['english'] = int(english)
stu['total'] = stu['chinese'] + stu['math'] + stu['english']
break
else:
print('该学生不存在,请检查名字是否输入正确')
elif action == '5':
print('5. 删除学生信息')
name = input('请输入你想要删除的学生姓名:')
for stu in students:
if name == stu['name']:
students.remove(stu)
break
else:
print('该学生不存在,请检查名字是否输入正确')
elif action == '0':
print('0. 退出系统')
else:
print('请输入正确的选择')