|
|
|
|
@ -0,0 +1,253 @@
|
|
|
|
|
import sys
|
|
|
|
|
import os
|
|
|
|
|
from database import DataBase
|
|
|
|
|
from student import Student
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 格式化输出Student数组
|
|
|
|
|
def print_student_info(student_list):
|
|
|
|
|
if isinstance(student_list, list):
|
|
|
|
|
if len(student_list) == 0:
|
|
|
|
|
print('''
|
|
|
|
|
=========================
|
|
|
|
|
没有符合条件的学生信息
|
|
|
|
|
=========================
|
|
|
|
|
''')
|
|
|
|
|
else:
|
|
|
|
|
print("{:<12}\t{:<12}\t{:<12}\t{:<12}\t{:<12}\t{:<12}".format(
|
|
|
|
|
"学号", "姓名",
|
|
|
|
|
"English成绩",
|
|
|
|
|
"python成绩",
|
|
|
|
|
"java成绩",
|
|
|
|
|
"总成绩"))
|
|
|
|
|
for i in student_list:
|
|
|
|
|
print("{:<12}\t{:<12}\t{:<12g}\t{:<12g}\t{:<12g}\t{:<12g}".format(
|
|
|
|
|
i.stuid,
|
|
|
|
|
i.name,
|
|
|
|
|
i.english_grade,
|
|
|
|
|
i.python_grade,
|
|
|
|
|
i.java_grade,
|
|
|
|
|
i.total_grade))
|
|
|
|
|
else:
|
|
|
|
|
print("没有符合条件的学生信息")
|
|
|
|
|
|
|
|
|
|
# 添加学生
|
|
|
|
|
def add_student():
|
|
|
|
|
stuid = input("请输入学号:")
|
|
|
|
|
name = input("请输入姓名:")
|
|
|
|
|
english_grade = input("请输入英语成绩:")
|
|
|
|
|
python_grade = input("请输入python成绩:")
|
|
|
|
|
java_grade = input("请输入java成绩:")
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
student = Student(stuid, name, english_grade, python_grade, java_grade)
|
|
|
|
|
DataBase.add_student_info(student)
|
|
|
|
|
# DataBase.add_student_info(student)
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print("输入内容不合法", e)
|
|
|
|
|
|
|
|
|
|
isContinue = input("是否继续添加学生y/n(其他任意键)")
|
|
|
|
|
if isContinue is 'y':
|
|
|
|
|
add_student()
|
|
|
|
|
|
|
|
|
|
# 查找学生
|
|
|
|
|
def query_student():
|
|
|
|
|
print('''
|
|
|
|
|
=====================================
|
|
|
|
|
1.学号查询
|
|
|
|
|
2.姓名查询
|
|
|
|
|
0.返回菜单(其他任意键)
|
|
|
|
|
=====================================
|
|
|
|
|
''')
|
|
|
|
|
num = input("请输入选择::")
|
|
|
|
|
if num == '1':
|
|
|
|
|
stuid = input("请输入学号:")
|
|
|
|
|
student_list = DataBase.query_student_info_by_stuid(stuid)
|
|
|
|
|
print_student_info(student_list)
|
|
|
|
|
elif num == '2':
|
|
|
|
|
name = input("请输入姓名:")
|
|
|
|
|
student_list = DataBase.query_student_info_by_name(name)
|
|
|
|
|
print_student_info(student_list)
|
|
|
|
|
else:
|
|
|
|
|
pass
|
|
|
|
|
os.system("pause")
|
|
|
|
|
|
|
|
|
|
# 删除学生
|
|
|
|
|
def delete_student():
|
|
|
|
|
stuid = input("请输入学号:")
|
|
|
|
|
student_list = DataBase.query_student_info_by_stuid(stuid)
|
|
|
|
|
print_student_info(student_list)
|
|
|
|
|
if len(student_list) != 0:
|
|
|
|
|
num = input("是否删除该学生y/n(其他任意键)")
|
|
|
|
|
if num == 'y':
|
|
|
|
|
DataBase.delete_student_info_by_stuid(stuid)
|
|
|
|
|
num = input("是否继续删除学生y/n(其他任意键)")
|
|
|
|
|
if num == 'y':
|
|
|
|
|
delete_student()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 编辑学生
|
|
|
|
|
def edit_student():
|
|
|
|
|
stuid = input("请输入学号:")
|
|
|
|
|
student_list = DataBase.query_student_info_by_stuid(stuid)
|
|
|
|
|
print_student_info(student_list)
|
|
|
|
|
if len(student_list) != 0:
|
|
|
|
|
print('''
|
|
|
|
|
=====================================
|
|
|
|
|
1.修改改学生信息
|
|
|
|
|
0.退出(其他任意键)
|
|
|
|
|
=====================================
|
|
|
|
|
''')
|
|
|
|
|
num = input("请选择功能")
|
|
|
|
|
if num == '1':
|
|
|
|
|
student = student_list[0]
|
|
|
|
|
student.name = input("请输入修改后的姓名:")
|
|
|
|
|
student.english_grade = input("请输入修改后的English成绩:")
|
|
|
|
|
student.python_grade = input("请输入修改后的python成绩:")
|
|
|
|
|
student.java_grade = input("请输入修改后的java成绩:")
|
|
|
|
|
DataBase.edit_student_info(student)
|
|
|
|
|
num = input("是否继续修改学生信息y/n(其他任意键)")
|
|
|
|
|
if num == 'y':
|
|
|
|
|
edit_student()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 排序
|
|
|
|
|
def sort_student():
|
|
|
|
|
sortType = False
|
|
|
|
|
print('''
|
|
|
|
|
======================================
|
|
|
|
|
1.升序
|
|
|
|
|
2.降序
|
|
|
|
|
0.返回菜单(其它任意键)
|
|
|
|
|
======================================
|
|
|
|
|
''')
|
|
|
|
|
num = input("请选择排序方式:")
|
|
|
|
|
|
|
|
|
|
if num == '1':
|
|
|
|
|
sortType = False
|
|
|
|
|
elif num == '2':
|
|
|
|
|
sortType = True
|
|
|
|
|
else:
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
print('''
|
|
|
|
|
======================================
|
|
|
|
|
1.学号排序
|
|
|
|
|
2.姓名排序
|
|
|
|
|
3.English成绩排序
|
|
|
|
|
4.python成绩排序
|
|
|
|
|
5.java成绩排序
|
|
|
|
|
6.总成绩排序
|
|
|
|
|
0.返回菜单(其它任意键)
|
|
|
|
|
======================================
|
|
|
|
|
''')
|
|
|
|
|
|
|
|
|
|
num = input("请选择功能:")
|
|
|
|
|
student_list = DataBase.get_student_list()
|
|
|
|
|
|
|
|
|
|
numbers = {
|
|
|
|
|
'1': lambda x: list(x.stuid),
|
|
|
|
|
'2': lambda x: list(x.name),
|
|
|
|
|
'3': lambda x: x.english_grade,
|
|
|
|
|
'4': lambda x: x.python_grade,
|
|
|
|
|
'5': lambda x: x.java_grade,
|
|
|
|
|
'6': lambda x: x.total_grade,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
method = numbers.get(num)
|
|
|
|
|
if method:
|
|
|
|
|
student_list.sort(key=method, reverse=sortType)
|
|
|
|
|
print_student_info(student_list)
|
|
|
|
|
else:
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
num = input("继续排序y/n(其它任意键)")
|
|
|
|
|
|
|
|
|
|
if num == 'y':
|
|
|
|
|
sort_student()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 统计
|
|
|
|
|
def statistics_student_info():
|
|
|
|
|
student_list = DataBase.get_student_list()
|
|
|
|
|
student_num = len(student_list)
|
|
|
|
|
registered_num = 0
|
|
|
|
|
total_grade = 0.0
|
|
|
|
|
average_grade = 0.0
|
|
|
|
|
for item in student_list:
|
|
|
|
|
if item.english_grade < 60 or item.python_grade < 60 or item.java_grade < 60:
|
|
|
|
|
registered_num = registered_num + 1
|
|
|
|
|
total_grade = total_grade + item.total_grade
|
|
|
|
|
average_grade = total_grade / student_num
|
|
|
|
|
|
|
|
|
|
print('''
|
|
|
|
|
=======================================================
|
|
|
|
|
学生总人数:{}
|
|
|
|
|
挂科人数:{}
|
|
|
|
|
平均总成绩:{:.2f}
|
|
|
|
|
总成绩:{:g}
|
|
|
|
|
=======================================================
|
|
|
|
|
'''.format(student_num, registered_num, average_grade, total_grade))
|
|
|
|
|
|
|
|
|
|
os.system('pause')
|
|
|
|
|
|
|
|
|
|
# 展示所有学生信息
|
|
|
|
|
def show_all_student_info():
|
|
|
|
|
student_list = DataBase.get_student_list()
|
|
|
|
|
print_student_info(student_list)
|
|
|
|
|
os.system('pause')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def quit_sys():
|
|
|
|
|
num = input("是否确认退出y/n(其它任意键)")
|
|
|
|
|
if num == 'y':
|
|
|
|
|
print('''
|
|
|
|
|
=======================
|
|
|
|
|
退出成功
|
|
|
|
|
欢迎下次使用
|
|
|
|
|
========================
|
|
|
|
|
''')
|
|
|
|
|
sys.exit(0)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def input_result(num):
|
|
|
|
|
numbers = {
|
|
|
|
|
'1': add_student,
|
|
|
|
|
'2': query_student,
|
|
|
|
|
'3': delete_student,
|
|
|
|
|
'4': edit_student,
|
|
|
|
|
'5': sort_student,
|
|
|
|
|
'6': statistics_student_info,
|
|
|
|
|
'7': show_all_student_info,
|
|
|
|
|
'0': quit_sys
|
|
|
|
|
}
|
|
|
|
|
method = numbers.get(num)
|
|
|
|
|
if method:
|
|
|
|
|
method()
|
|
|
|
|
else:
|
|
|
|
|
print("输入不合法")
|
|
|
|
|
os.system("cls")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def menu():
|
|
|
|
|
print('''
|
|
|
|
|
学生信息管理系统
|
|
|
|
|
======================================
|
|
|
|
|
1.录入学生信息
|
|
|
|
|
2.查找学生信息
|
|
|
|
|
3.删除学生信息
|
|
|
|
|
4.修改学生信息
|
|
|
|
|
5.排序
|
|
|
|
|
6.统计学生信息
|
|
|
|
|
7.显示所有学生信息
|
|
|
|
|
0.退出
|
|
|
|
|
======================================
|
|
|
|
|
''')
|
|
|
|
|
num = input("请选择功能:")
|
|
|
|
|
input_result(num)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
DataBase.init()
|
|
|
|
|
while True:
|
|
|
|
|
menu()
|