目的和内容:
创建一个简单的学生信息管理系统,将学生信息存储在系统中,让用户可以通过菜单选择对学生信息进行添加、删除、查找、排序和查看等操作。
具体实现:
类的定义:
class Student:
def __init__(self,name,number,score,major):
self.name=name
self.number=number
self.score=score
self.major=major
创建一个类用来表示学生对象,包括学生的姓名,学号,成绩,专业等信息。
class StuManagement:
创建一个类用于管理学生信息,此类中有六个函数。
def __init__(self):
self.stuList=[]
__init__构造函数初始化一个空列表stuList,该列表用于存储所有的学生对象。
def addstu(self,stu):
sTemp = stu.split()
new_student=Student(sTemp[0],sTemp[1],int(sTemp[2]),sTemp[3])
for e in self.stuList:
if e.number==new_student.number:
return
self.stuList.append(new_student)
addstu方法用于添加学生信息。
它接收一个字符串stu,该字符串包含学生的姓名、学号、分数和专业,用空格分隔。把字符串按空格分割成列表sTemp,再用这些信息创建一个新的Student对象。检查新学生的学号是否已存在于stuList中,若存在则直接返回,不存在则将新学生对象添加到stuList。
def init(self):
self.addstu('李四 2 562 计算机')
self.addstu( '张三 3 550 计算机')
self.addstu('王五 1 570 财经')
self.addstu('赵二 4 530 财经')
self.addstu('周凯 5 495 计算机')
return self.stuList
init方法用于初始化学生信息管理系统。它调用addstu方法添加 5 个学生的信息,最后返回stuList。
def deletestu(self,number):
for e in self.stuList:
if e.number==number:
self.stuList.remove(e)
break
deletestu方法用于删除指定学号的学生信息。它遍历stuList,找到学号匹配的学生对象后将其从列表中移除,然后跳出循环。
def findStuByName(self,name):
result=[]
for e in self.stuList:
if e.name==name:
result.append(e)
return result
findStuByName方法用于按姓名查找学生信息。
它遍历stuList,把姓名匹配的学生对象添加到result列表中,最后返回该列表。
def sortByAttribute(self,i):
i=int(i)
self.stuList.sort(key=lambda x:(x.name,x.number,x.score,x.major)[i])
sortByAttribute方法用于按指定属性对学生列表进行排序。
它将输入的参数i转换为整数,该整数表示排序依据的属性下标(0 表示姓名,1 表示学号,2 表示分数,3 表示专业)。利用sort方法和lambda函数对stuList进行排序。
辅助函数:
def menu():
fmt = '{0:10}'
print(fmt.format("1.添加学生"))
print(fmt.format("2.删除学生(按学号)"))
print(fmt.format("3.查找学生(按姓名)"))
print(fmt.format("4.排序(按属性)"))
print(fmt.format("5.查看学生列表"))
print(fmt.format("x.退出"))
此函数用于显示操作菜单,借助格式化字符串保证菜单的整齐显示。
def showStu(stu):
fmt = '{0:5}, {1:8}, {2:3}, {3:5}'
print(fmt.format(stu.name, stu.number, stu.score, stu.major))
该函数用于显示单个学生的信息,利用格式化字符串确保信息的整齐显示。
def showStuList(stuList):
for e in stuList:
showStu(e)
此函数用于显示学生列表中的所有学生信息,它遍历stuList,对每个学生对象调用showStu函数。
主程序:
if __name__ == '__main__':
management=StuManagement()
stuList = management.init()
print('*****系统初始化完毕!*****')
menu()
choice = input('请输入你的选择:')
while True:
if choice == 'x':
break
elif choice == '1':
line = input('请输入学生信息(姓名 学号 分数 专业):')
management.addstu(line)
print('*****插入完毕!*****')
elif choice == '2':
stuNo = input('请输入欲删除学生的学号:')
management.deletestu(stuNo)
print('*****删除完毕!*****')
elif choice == '3':
name = input('请输入学生姓名:')
stus = management.findStuByName(name)
print('*****查找完毕!结果如下:*****')
showStuList(stus)
elif choice == '4':
i = input('请输入欲排序属性的下标(0,姓名;1,学号;2,分数;3,专业):')
management.sortByAttribute(i)
print('*****排序完毕!结果如下:*****')
showStuList(stuList)
elif choice == '5':
showStuList(stuList)
else:
print('*****输入错误,请重新选择*****')
menu()
choice = input('请输入你的选择:')
print('*****程序退出*****')
当脚本作为主程序运行时,会创建一个StuManagement对象并调用init方法初始化学生信息。
显示系统初始化完成的提示信息和操作菜单,让用户输入选择。依据用户的选择执行相应的操作,如添加学生、删除学生、查找学生、排序学生列表或查看学生列表。
若用户输入x,则退出循环,程序结束。若用户输入无效的选择,会提示输入错误,让用户重新选择。
运行结果:
运行开始页面:

输入5后:

添加学生信息:

删除学生:

查找学生:

学生排序:

2799

被折叠的 条评论
为什么被折叠?



