要求:
设计一个学生信息管理系统,能够添加学生的信息(学生信息包含:姓名、年龄、学号、考试分数、所在班级、所在的学院),能够修改学生信息、能够查询学生信息、查看考试分数排名(降序排序)
无需连接数据库和使用文件储存
使用的内置函数:
class Student(object):
def __init__(self, name, age, num, score, classroom, dept):
self.student = None
self.name = name
self.age = age
self.num = num
self.score = score
self.classroom = classroom
self.dept = dept
def __str__(self):
return "姓名:%s 年龄:%s 学号:%s 分数:%s 班级:%s 学院:%s" % (
self.name, self.age, self.num, self.score, self.classroom, self.dept)
class StudentManager(object):
student = []
def add(self):
name = input("姓名:")
age = input("年龄:")
num = input("学号:")
score = input("分数:")
classroom = input("班级:")
dept = input("学院:")
stu = Student(name, age, num, score, classroom, dept)
self.student.append(stu)
print("加入学生%s信息成功" % name)
def modify(self, nature, oldValue, newValue):
if nature in ['num', 'name', 'age', 'score']:
for student in self.student:
if getattr(student, nature) == oldValue: # getattr() 函数用于返回一个对象属性值。
setattr(student, nature, newValue)
print("修改成功")
else:
print("未找到符合条件的学生信息")
else:
print("只支持根据学号和姓名修改!")
def show(self):
print("学生信息展示:")
for student in self.student:
print(str(student))
def search(self, keys, values):
if keys in ['num', 'name']:
for student in self.student:
if getattr(student, keys) == values:
print((str(student)))
else:
print("未找到符合条件的学生")
else:
print("系统只支持学号和姓名的查找")
def sort(self, score):
# sorted()函数对所有可迭代的对象进行排序操作。
sort_stu = sorted(self.student, key=lambda x: int(getattr(x, score)) if x else None, reverse=True)
for student in sort_stu:
print(student)
if __name__ == '__main__':
manager = StudentManager()
while True:
menu = """学生信息管理系统 1.添加学生信息 2.修改学生信息 3.查询学生信息 4.显示学生信息 5.考试分数排名(降序)6.退出 请输入要操作的数字:"""
choice = int(input(menu))
if choice == 1:
manager.add()
elif choice == 2:
flag = input("修改,输入对应的属性值(num学号,name姓名,age年龄,score分数):")
value1 = input("要修改的属性值:")
value2 = input("修改后的属性值:")
manager.modify(flag, value1, value2)
elif choice == 3:
key = input("查询(输入“num”是按学号查找,输入“name”是按姓名查找:")
value = input("查询值:")
manager.search(key, value)
elif choice == 4:
manager.show()
elif choice == 5:
key = input("输入score进行分数排名:")
manager.sort(key)
elif choice == 6:
exit(0)
else:
print("请输入正确的选择")
缘由:这是在进行python学习时老师布置的一个任务
由于粉丝要求加入删除学生功能,修改后代码如下:
class Student(object):
def __init__(self, name, age, num, score, classroom, dept):
self.student = None
self.name = name
self.age = age
self.num = num
self.score = score
self.classroom = classroom
self.dept = dept
def __str__(self):
return "姓名:%s 年龄:%s 学号:%s 分数:%s 班级:%s 学院:%s" % (
self.name, self.age, self.num, self.score, self.classroom, self.dept)
class StudentManager(object):
student = []
def add(self):
name = input("姓名:")
age = input("年龄:")
num = input("学号:")
score = input("分数:")
classroom = input("班级:")
dept = input("学院:")
stu = Student(name, age, num, score, classroom, dept)
self.student.append(stu)
print("加入学生%s信息成功" % name)
def modify(self, nature, oldValue, newValue):
if nature in ['num', 'name', 'age', 'score']:
for student in self.student:
if getattr(student, nature) == oldValue: # getattr() 函数用于返回一个对象属性值。
setattr(student, nature, newValue)
print("修改成功")
break
else:
print("未找到符合条件的学生信息")
else:
print("只支持根据学号和姓名修改!")
def show(self):
print("学生信息展示:")
for student in self.student:
print(str(student))
def search(self, keys, values):
if keys in ['num', 'name']:
for student in self.student:
if getattr(student, keys) == values:
print((str(student)))
break
else:
print("未找到符合条件的学生")
else:
print("系统只支持学号和姓名的查找")
def sort(self, score):
# sorted()函数对所有可迭代的对象进行排序操作。
sort_stu = sorted(self.student, key=lambda x: int(getattr(x, score)) if x else None, reverse=True)
for student in sort_stu:
print(student)
def delete(self, num):
for s in self.student:
if getattr(s, 'num') == num:
self.student.remove(s)
print('删除成功')
break
else:
print('未找到复合条件的学生信息')
if __name__ == '__main__':
manager = StudentManager()
while True:
menu = """学生信息管理系统 1.添加学生信息 2.修改学生信息 3.查询学生信息 4.显示学生信息 5.考试分数排名(降序)6.删除学生信息 7.退出 请输入要操作的数字:"""
choice = int(input(menu))
if choice == 1:
manager.add()
elif choice == 2:
flag = input("修改,输入对应的属性值(num学号,name姓名,age年龄,score分数):")
value1 = input("要修改的属性值:")
value2 = input("修改后的属性值:")
manager.modify(flag, value1, value2)
elif choice == 3:
key = input("查询(输入“num”是按学号查找,输入“name”是按姓名查找:")
value = input("查询值:")
manager.search(key, value)
elif choice == 4:
manager.show()
elif choice == 5:
key = input("输入score进行分数排名:")
manager.sort(key)
elif choice == 6:
key = input('输入要删除学生的学号:')
manager.delete(key)
elif choice == 7:
exit(0)
else:
print("请输入正确的选择")