一. 系统需求分析
我们将开发一个简单的学生管理系统,具备以下功能:
编写学生管理系统,实现增删改查
输入数字0,退出系统
输入数字1,添加学生信息(编号, 名字,年纪,性别)
第一个学生id为101 后续学生自动加1
输入数字2,查看所有学生信息
输入数字3,查看指定学生信息
输入学生id,显示对应学生信息
输入数字4,修改学生信息
输入学生id,输入学生新名字,新年纪,新性别
输入数字5,删除指定学生
输入学生id,删除指定学生
二. 数据结构设计
我们将使用Python的列表(list)嵌套字典(dict)来存储学生信息,每个学生是一个字典,包含以下字段:
id: 学生学号(唯一标识)
name: 学生姓名
age: 学生年龄
sex: 学生性别
使用一个列表来存储所有学生字典。
三. 代码实现
# 主菜单
menu = """输入数字0,退出系统
输入数字1,添加学生信息(名字,年纪,性别)
输入数字2,查看所有学生信息
输入数字3,查看指定学生信息
输入数字4,修改学生信息
输入数字5,删除指定学生"""
# 学生列表,用于存储所有学生信息
students = []
while True:
print(menu)
option = input("请输入选项:")
if option not in ["0", "1", "2", "3", "4", "5"]:
print("请输入正确数字!!!")
# 退出学生管理系统
elif option == "0":
break
# 添加学生信息
elif option == "1":
sid = 101 if not students else students[-1]["id"] + 1
while True:
name = input("请输入学生姓名:")
if len(name) in range(2, 7):
break
else:
print("学生姓名不合法!")
while True:
age = int(input("请输入学生年纪:"))
if age in range(10, 30):
break
else:
print("学生年纪不合法!")
while True:
sex = input("请输入学生性别:")
if sex in ["男", "女"]:
break
else:
print("学生姓别不合法!")
temp = {
"id": sid,
"name": name,
"age": age,
"sex": sex
}
students.append(temp)
print(f"成功添加学生信息,当前共有{len(students)}名学生")
# 显示所有学生信息
elif option == "2":
if len(students) == 0:
print("暂无学生信息!")
else:
for s in students:
print(f"id:{s['id']}\tname:{s['name']}\tage:{s['age']}\tsex:{s['sex']}")
# 查询学生信息
elif option == "3":
while True:
f_id = int(input("请输入学生id:"))
id_list = []
for s in students:
id_list.append(s["id"])
if f_id not in id_list:
print("请输入存在的学生id")
else:
break
for s in students:
if f_id == s["id"]:
print(f"id:{s['id']}\tname:{s['name']}\tage:{s['age']}\tsex:{s['sex']}")
# 修改学生信息
elif option == "4":
while True:
f_id = int(input("请输入学生id:"))
id_list = []
for s in students:
id_list.append(s["id"])
if f_id not in id_list:
print("请输入存在的学生id")
else:
break
for s in students:
if f_id == s["id"]:
s.clear()
while True:
name = input("请输入学生姓名:")
if len(name) in range(2, 7):
break
else:
print("学生姓名不合法!")
while True:
age = int(input("请输入学生年纪:"))
if age in range(10, 30):
break
else:
print("学生年纪不合法!")
while True:
sex = input("请输入学生性别:")
if sex in ["男", "女"]:
break
else:
print("学生姓别不合法!")
s["id"] = f_id
s["name"] = name
s["age"] = age
s["sex"] = sex
print(f"成功修改学生信息,当前共有{len(students)}名学生")
# 删除学生信息
elif option == "5":
while True:
f_id = int(input("请输入学生id:"))
id_list = []
for s in students:
id_list.append(s["id"])
if f_id not in id_list:
print("请输入存在的学生id")
else:
break
for s in students:
if s["id"] == f_id:
students.remove(s)
print(f"成功删除id为{f_id}的学生的学生信息,当前共有{len(students)}名学生")
四. 系统功能说明
添加学生信息: 用户输入学生的学号、姓名、年龄和性别,系统将这些信息存储到学生列表中。
删除学生信息: 用户输入学生学号,系统从列表中删除对应的学生信息。
修改学生信息: 用户输入学生学号,然后输入新的姓名、年龄和性别来更新学生信息。
查询学生信息: 用户输入学生学号,系统显示该学生的所有信息。
显示所有学生信息: 系统显示所有已存储的学生信息。
五. 系统优缺点分析
优点:
简单易用: 界面清晰,操作直观。
功能完整: 包含了基本的增删改查功能。
代码结构清晰: 每个功能都有独立的函数,便于维护和扩展。
缺点:
数据不持久: 程序结束后数据会丢失,没有实现数据持久化存储。
输入验证不足: 没有对用户输入进行充分的验证和错误处理。
查询效率低: 使用列表存储,查询效率随着数据量增加而降低。
六. 改进建议
实现数据持久化: 可以使用文件系统或数据库来存储学生信息。
添加输入验证: 对用户输入进行合法性检查,提高系统稳定性。
优化数据结构: 可以使用字典来存储学生信息,以学号为键,提高查询效率。
增加更多功能: 如按成绩排序、统计分析等高级功能。
改进用户界面: 可以考虑使用图形界面,提升用户体验。
结语:
这个简单的学生管理系统展示了如何使用Python基本的数据结构和控制流来实现一个功能完整的小型应用。通过这个项目,我们可以学习到Python的字典和列表操作、函数定义、循环和条件语句等基础知识。同时,它也为我们提供了一个基础,可以在此之上进行更多的改进和扩展,开发出更加复杂和实用的系统。