Python 程序设计 - 19. 函数综合练习 - 学生管理系统
1. 引言
在本节中,我们将通过一个实际的案例来练习函数的综合运用:编写一个简单的 学生管理系统。该系统将使用一维数组(即列表)来存储学生信息,实现学生的增、删、查、改等基本功能。
2. 系统需求
- 功能1:添加学生信息。
- 功能2:删除学生信息。
- 功能3:修改学生信息。
- 功能4:查看所有学生信息。
- 功能5:根据学生姓名查找学生信息。
3. 程序设计思路
我们不使用面向对象的方式,而是直接用函数和一维数组(列表)来管理学生信息。学生的基本信息包括:学号、姓名、年龄、成绩。
使用一个一维数组(列表)来存储学生信息,每个学生用一个字典表示,字典中的键值对存储学生的基本信息。以下是程序的设计步骤。
4. 代码实现
# 定义一个空的学生列表,用于存储学生信息
students = []
# 1. 添加学生信息
def add_student():
student_id = input("请输入学号: ")
name = input("请输入姓名: ")
age = input("请输入年龄: ")
score = input("请输入成绩: ")
# 创建一个字典来存储学生信息
student = {
"学号": student_id,
"姓名": name,
"年龄": age,
"成绩": score
}
# 将学生信息添加到学生列表中
students.append(student)
print(f"学生 {name} 添加成功!")
# 2. 删除学生信息
def delete_student():
student_id = input("请输入要删除的学生学号: ")
for student in students:
if student["学号"] == student_id:
students.remove(student)
print(f"学号为 {student_id} 的学生已删除!")
return
print(f"未找到学号为 {student_id} 的学生!")
# 3. 修改学生信息
def modify_student():
student_id = input("请输入要修改的学生学号: ")
for student in students:
if student["学号"] == student_id:
print("学生信息如下:", student)
student["姓名"] = input("请输入新的姓名: ")
student["年龄"] = input("请输入新的年龄: ")
student["成绩"] = input("请输入新的成绩: ")
print(f"学号为 {student_id} 的学生信息已修改!")
return
print(f"未找到学号为 {student_id} 的学生!")
# 4. 查看所有学生信息
def view_all_students():
if not students:
print("当前没有任何学生信息!")
return
print("学生信息如下:")
for student in students:
print(f"学号: {student['学号']}, 姓名: {student['姓名']}, 年龄: {student['年龄']}, 成绩: {student['成绩']}")
# 5. 根据学号查找学生信息
def find_student():
student_id = input("请输入要查找的学生学号: ")
for student in students:
if student["学号"] == student_id:
print(f"学号: {student['学号']}, 姓名: {student['姓名']}, 年龄: {student['年龄']}, 成绩: {student['成绩']}")
return
print(f"未找到学号为 {student_id} 的学生!")
# 6. 主菜单,控制程序流程
def menu():
while True:
print("\n----- 学生管理系统 -----")
print("1. 添加学生")
print("2. 删除学生")
print("3. 修改学生")
print("4. 查看所有学生")
print("5. 查找学生")
print("6. 退出系统")
choice = input("请选择操作: ")
if choice == '1':
add_student()
elif choice == '2':
delete_student()
elif choice == '3':
modify_student()
elif choice == '4':
view_all_students()
elif choice == '5':
find_student()
elif choice == '6':
print("退出系统,感谢使用!")
break
else:
print("无效选择,请重新输入。")
# 运行程序
menu()
5. 代码说明
-
students:一个列表,用来存储学生信息。每个学生的信息以字典的形式存储,字典的键值对包括学号、姓名、年龄和成绩。 -
add_student():该函数用于添加学生信息。用户输入学号、姓名、年龄和成绩后,信息以字典的形式加入students列表。 -
delete_student():该函数根据学号删除学生。如果找到对应学号的学生,就将其从students列表中移除。 -
modify_student():根据学号查找学生信息并进行修改。用户输入新的学生信息后,会更新原来的信息。 -
view_all_students():查看所有学生的详细信息。如果学生列表为空,则提示没有学生信息。 -
find_student():根据学号查找学生的详细信息,如果找到对应的学生,就输出该学生的信息。 -
menu():这是程序的主菜单,用户可以选择进行相应的操作。用户输入的选项决定接下来调用哪个函数。
6. 示例运行
----- 学生管理系统 -----
1. 添加学生
2. 删除学生
3. 修改学生
4. 查看所有学生
5. 查找学生
6. 退出系统
请选择操作: 1
请输入学号: 1001
请输入姓名: 张三
请输入年龄: 18
请输入成绩: 90
学生 张三 添加成功!
----- 学生管理系统 -----
1. 添加学生
2. 删除学生
3. 修改学生
4. 查看所有学生
5. 查找学生
6. 退出系统
请选择操作: 4
学生信息如下:
学号: 1001, 姓名: 张三, 年龄: 18, 成绩: 90
7. 练习题
-
修改功能:在
modify_student()函数中增加对用户输入的成绩范围验证,成绩应在 0 到 100 之间。如果用户输入无效的成绩,提示用户重新输入。 -
排序功能:为
view_all_students()函数增加功能,使得学生信息可以按成绩从高到低排序输出。 -
批量删除:实现一个功能,根据年龄范围批量删除学生(例如删除年龄小于 18 岁的学生)。
8. 答案
- 修改功能:
def modify_student():
student_id = input("请输入要修改的学生学号: ")
for student in students:
if student["学号"] == student_id:
print("学生信息如下:", student)
student["姓名"] = input("请输入新的姓名: ")
student["年龄"] = input("请输入新的年龄: ")
while True:
score = input("请输入新的成绩: ")
if 0 <= int(score) <= 100:
student["成绩"] = score
break
else:
print("成绩应在0到100之间,请重新输入!")
print(f"学号为 {student_id} 的学生信息已修改!")
return
print(f"未找到学号为 {student_id} 的学生!")
- 排序功能:
def view_all_students():
if not students:
print("当前没有任何学生信息!")
return
students_sorted = sorted(students, key=lambda x: x['成绩'], reverse=True)
print("学生信息如下:")
for student in students_sorted:
print(f"学号: {student['学号']}, 姓名: {student['姓名']}, 年龄: {student['年龄']}, 成绩: {student['成绩']}")
- 批量删除:
def delete_by_age():
age_limit = int(input("请输入年龄限制(删除小于该年龄的学生):"))
global students
students = [student for student in students if int(student["年龄"]) >= age_limit]
print(f"已删除年龄小于 {age_limit} 岁的学生!")
通过这些练习,你可以深入理解如何使用函数来构建一个简单的学生管理系统,并运用到实际编程中!
评论区