You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
5.8 KiB
130 lines
5.8 KiB
from datetime import date
|
|
|
|
from ui.studentui import StudentUI
|
|
|
|
def main():
|
|
ui = StudentUI()
|
|
while True:
|
|
ui.display_menu()
|
|
choice = ui.get_input("请输入你的选择: ")
|
|
if choice == '1':
|
|
ui.add_student()
|
|
elif choice == '2':
|
|
sid = ui.get_input("请输入要删除的学生学号: ")
|
|
try:
|
|
if ui.bll.delete_student(sid):
|
|
print("学生信息删除成功!")
|
|
else:
|
|
print("学生信息删除失败。")
|
|
except ValueError as e:
|
|
print(e)
|
|
elif choice == '3':
|
|
sid = ui.get_input("请输入要更新的学生学号: ")
|
|
student = ui.bll.get_student_by_id(sid)
|
|
if student:
|
|
# 获取更新信息
|
|
name = ui.get_input(f"请输入新的姓名(当前:{student.name}),不修改请直接回车: ")
|
|
height = ui.get_input(f"请输入新的身高(当前:{student.height}),不修改请直接回车: ")
|
|
birth_date = ui.get_input(f"请输入新的出生日期(当前:{student.birth_date}),不修改请直接回车: ")
|
|
enrollment_date = ui.get_input(f"请输入新的入学日期(当前:{student.enrollment_date}),不修改请直接回车: ")
|
|
class_name = ui.get_input(f"请输入新的班级(当前:{student.class_name}),不修改请直接回车: ")
|
|
|
|
if name:
|
|
student.name = name
|
|
if height:
|
|
student.height = int(height)
|
|
if birth_date:
|
|
student.birth_date = date.fromisoformat(birth_date)
|
|
if enrollment_date:
|
|
student.enrollment_date = date.fromisoformat(enrollment_date)
|
|
if class_name:
|
|
student.class_name = class_name
|
|
|
|
try:
|
|
if ui.bll.update_student(sid, student):
|
|
print("学生信息更新成功!")
|
|
else:
|
|
print("学生信息更新失败。")
|
|
except ValueError as e:
|
|
print(e)
|
|
else:
|
|
print(f"学生 ID {sid} 不存在。")
|
|
elif choice == '4':
|
|
ui.display_query_menu()
|
|
query_choice = ui.get_input("请输入你的查询选择: ")
|
|
if query_choice == '1':
|
|
students = ui.bll.get_all_students()
|
|
for student in students:
|
|
print(student)
|
|
elif query_choice == '2':
|
|
sid = ui.get_input("请输入要查询的学生学号: ")
|
|
student = ui.bll.get_student_by_id(sid)
|
|
if student:
|
|
print(student)
|
|
else:
|
|
print(f"学生 ID {sid} 不存在。")
|
|
elif query_choice == '3':
|
|
# 这里和按学号查询逻辑一样
|
|
sid = ui.get_input("请输入要查询的学生学号: ")
|
|
student = ui.bll.get_student_by_id(sid)
|
|
if student:
|
|
print(student)
|
|
else:
|
|
print(f"学生 ID {sid} 不存在。")
|
|
elif query_choice == '4':
|
|
name = ui.get_input("请输入要查询的学生姓名: ")
|
|
students = ui.bll.get_students_by_name(name)
|
|
for student in students:
|
|
print(student)
|
|
elif query_choice == '5':
|
|
class_name = ui.get_input("请输入要查询的班级: ")
|
|
students = ui.bll.get_students_by_class(class_name)
|
|
for student in students:
|
|
print(student)
|
|
elif query_choice == '0':
|
|
continue
|
|
elif choice == '5':
|
|
ui.display_stats_menu()
|
|
stats_choice = ui.get_input("请输入你的统计选择: ")
|
|
if stats_choice == '1':
|
|
count = ui.bll.dal.get_student_count()
|
|
print(f"学生总数为: {count}")
|
|
elif stats_choice == '2':
|
|
average_height = ui.bll.dal.get_average_height()
|
|
print(f"学生平均身高为: {average_height:.2f} cm")
|
|
elif stats_choice == '3':
|
|
min_height = int(ui.get_input("请输入最小身高: "))
|
|
max_height = int(ui.get_input("请输入最大身高: "))
|
|
count = ui.bll.dal.count_students_by_height_range(min_height, max_height)
|
|
print(f"身高在 {min_height} - {max_height} cm 之间的学生数量为: {count}")
|
|
elif stats_choice == '4':
|
|
year = int(ui.get_input("请输入入学年份: "))
|
|
count = ui.bll.dal.count_students_by_enrollment_year(year)
|
|
print(f"{year} 年入学的学生数量为: {count}")
|
|
elif stats_choice == '5':
|
|
min_age = int(ui.get_input("请输入最小年龄: "))
|
|
max_age = int(ui.get_input("请输入最大年龄: "))
|
|
count = ui.bll.dal.count_students_by_age_range(min_age, max_age)
|
|
print(f"年龄在 {min_age} - {max_age} 岁之间的学生数量为: {count}")
|
|
elif stats_choice == '0':
|
|
continue
|
|
elif choice == '6':
|
|
ui.display_import_export_menu()
|
|
import_export_choice = ui.get_input("请输入你的导入导出选择: ")
|
|
if import_export_choice != '0':
|
|
ui.handle_import_export(import_export_choice)
|
|
else:
|
|
continue
|
|
|
|
elif choice == '7':
|
|
try:
|
|
ui.bll.dal.clear_all_students()
|
|
print("所有学生信息已清空!")
|
|
except Exception as e:
|
|
print(f"清空学生信息失败: {e}")
|
|
elif choice == '0':
|
|
break
|
|
|
|
if __name__ == '__main__':
|
|
main()
|