环境: python3.10
import re
class Student:
def __init__(self, name, age, gender, student_id):
self.name = name
self.age = age
self.gender = gender
self.student_id = student_id
def __str__(self):
return f"{self.name}, {self.age}, {self.gender}, {self.student_id}"
class StudentManagementSystemCLI:
def __init__(self):
self.student_list = []
def menu(self):
print("\n学生管理系统菜单:")
print("1. 添加学生")
print("2. 更新学生信息")
print("3. 删除学生")
print("4. 查找学生")
print("5. 显示所有学生")
print("6. 模糊搜索学生")
print("7. 数据分析")
print("8. 退出")
def add_student(self):
name = input("请输入姓名:")
age = input("请输入年龄:")
gender = input("请输入性别:")
student_id = input("请输入学号:")
new_student = Student(name, age, gender, student_id)
self.student_list.append(new_student)
print("学生已成功添加到系统!")
def update_student(self):
student_id = input("请输入要更新的学生学号:")
for student in self.student_list:
if student.student_id == student_id:
student.name = input("请输入新的姓名:")
student.age = input("请输入新的年龄:")
student.gender = input("请输入新的性别:")
print("学生信息已更新!")
break
else:
print("未找到该学生,请检查学号。")
def delete_student(self):
student_id = input("请输入要删除的学生学号:")
for index, student in enumerate(self.student_list):
if student.student_id == student_id:
self.student_list.pop(index)
print("学生已从系统中删除!")
break
else:
print("未找到该学生,请检查学号。")
def search_student(self):
student_id = input("请输入要查找的学生学号:")
for student in self.student_list:
if student.student_id == student_id:
print(f"学生信息:姓名:{student.name},年龄:{student.age},性别:{student.gender},学号:{student.student_id}")
break
else:
print("未找到该学生,请检查学号。")
def display_students(self):
print("\n所有学生信息:")
for student in self.student_list:
print(f"姓名:{student.name},年龄:{student.age},性别:{student.gender},学号:{student.student_id}")
def search_student_fuzzy(self):
keyword = input("请输入要查找的关键词(支持模糊搜索):")
pattern = re.compile(keyword, re.IGNORECASE)
found = False
for student in self.student_list:
if pattern.search(student.name) or pattern.search(student.student_id):
print(f"学生信息:姓名:{student.name},年龄:{student.age},性别:{student.gender},学号:{student.student_id}")
found = True
if not found:
print("未找到与关键词匹配的学生。")
def analyze_data(self):
age_count = {}
gender_count = {"M": 0, "F": 0}
for student in self.student_list:
age = int(student.age)
if age in age_count:
age_count[age] += 1
else:
age_count[age] = 1
if student.gender.upper() == "M":
gender_count["M"] += 1
elif student.gender.upper() == "F":
gender_count["F"] += 1
print("\n年龄分布:")
for age, count in age_count.items():
print(f"{age} 岁:{count} 人")
print("\n性别比例:")
print(f"男生:{gender_count['M']} 人")
print(f"女生:{gender_count['F']} 人")
def run(self):
while True:
self.menu()
choice = input("\n请选择功能(输入数字):")
if choice == "1":
self.add_student()
elif choice == "2":
self.update_student()
elif choice == "3":
self.delete_student()
elif choice == "4":
self.search_student()
elif choice == "5":
self.display_students()
elif choice == "6":
self.search_student_fuzzy()
elif choice == "7":
self.analyze_data()
elif choice == "8":
print("谢谢使用,再见!")
break
else:
print("无效的输入,请重新选择。")
if __name__ == "__main__":
app = StudentManagementSystemCLI()
app.run()