import os
class Student:
def __init__(self):
self.name =''
self.ID = ''
self.socre1 =0
self.socre2 = 0
self.socre3 =0
self.sum = 0
def sumscore(self):
self.sum=self.score1 +self.score2 +self.score3
#----------------
def searchByID(stulist,ID):
for item in stulist:
if item.ID == ID:
return True
def Add(stulist,stu):#添加一个学生信息
if searchByID(stulist,stu.ID) == True:
print("学号已经存在!")
return False
stulist.append(stu)
print(stu.name,stu.ID,stu.score1,stu.score2,stu.score3,stu.sum)
print("是否要保存学生信息?")
nChoose = input("Choose Y/N")
if nChoose == 'Y' or nChoose == 'y' :
file_object = open("students.txt","a")
file_object.write(stu.ID)
file_object.write("")
file_object.write(stu.name)
file_object.write("")
file_object.write(str(stu.score1))
file_object.write("")
file_object.write(str(stu.score1))
file_object.write("")
file_object.write(str(stu.score3))
file_object.write("")
file_object.write(str(stu.sum))
file_object.write("\n")
file_object.close()
print("保存成功!")
def Search(stulist,ID):
print("学号\t姓名\t语文\t数学\t英语\t总分")
count = 0
for item in stulist:
if item.ID == ID:
print(item.ID,'t',item.name,'\t',item.score1,'\t',item.score2,'\t')
break
count = count +1
if count == len(stulist):
print("没有该学生学号!")
def Del(stulist,ID):
count = 0
for item in stulist:
if item.ID == ID:
stulist.remove(item)
print("删除成功!")
break
count += 1
if count == len(stulist):
print("没有该学生学号!")
file_object=open("students.txt","w")
for stu in stulist:
print(stu.ID,stu.name,stu.score1,stu.score2,stu.score3,stu.sum)
file_object.write(stu.ID)
file_object.write("")
file_object.write(stu.name)
file_object.write("")
file_object.write(str(stu.score1))
file_object.write("")
file_object.write(str(stu.score1))
file_object.write("")
file_object.write(str(stu.score3))
file_object.write("")
file_object.write(str(stu.sum))
file_object.write("\n")
file_object.close()
def Change(stulist,ID):
count = 0
for item in stulist:
if item.ID == ID:
stulist.remove(item)
file_object = open("student.txt","w")
for stu in stulist:
file_object.write(stu.ID)
file_object.write("")
file_object.write(stu.name)
file_object.write("")
file_object.write(str(stu.score1))
file_object.write("")
file_object.write(str(stu.score1))
file_object.write("")
file_object.write(str(stu.score3))
file_object.write("")
file_object.write(str(stu.sum))
file_object.write("\n")
file_object.close()
stu = Student()
stu.name = input("请输入学生姓名")
stu.ID = input("请输入学生ID")
stu.score1 = int(input("请输入学生语文成绩"))
stu.score2 = int(input("请输入学生数学成绩"))
stu.score3 = int(input("请输入学生英语成绩"))
stu.sumscore()
Add(stulist,stu)
def display(stulist):
print("学号\t姓名 语文 数学 英语 总分")
for item in stulist:
print("%5 %5s %3d %3d %3d %4d"%(item.ID,item.name,item.score1,item.score2,item.score3,item.sum))
def Sort(stulist):
insertSort(stulist)
display(stulist)
def insertSort(stulist):
for i in range(len(stulist)-1):
for j in range(i+1,len(stulist)):
if stulist[i].sum<stulist[j].sum:
temp = stulist[j]
stulist[i] = stulist[j]
stulist[j] = temp
def lnit(stulist):
print("初始化.....")
if os.path.exists('students.txt'):
file_object = open('students.txt','r')
for line in file_object:
stu = Student()
line = line.strip("\n")
s = line.split(" ")
stu.ID=s[0]
stu.name = s[1]
stu.score1=int(s[2])
stu.score2=int(s[3])
stu.score3=int(s[4])
stu.sum = int(s[5])
stulist.append(stu)
file_object.close()
print("初始化成功!")
main()
def main():
while True:
print("**************************")
print("-----------菜单------------")
print("增加学生信息----------------1")
print("查找学生信息----------------2")
print("删除学生信息----------------3")
print("修改学生信息----------------4")
print("所有学生信息----------------5")
print("按照分数排序----------------6")
print("退出程序-------------------0")
print("**************************")
nChoose = input("请输入你的选择:")
if nChoose == "1":
stu = Student()
stu.name = input("请输入学生的姓名")
stu.ID = input("请输入学生的ID")
stu.score1 = int(input("请输入学生的语文成绩"))
stu.score2 = int(input("请输入学生的数学成绩"))
stu.score3 = int(input("请输入学生的英语成绩"))
stu.sumscore()
Add(stulist,stu)
if nChoose == '2':
ID = input("请输入学生的ID")
Search(stulish,ID)
if nChoose == '3':
ID = input("请输入学生的ID")
Del(stulish,ID)
if nChoose == '4':
ID = input("请输入学生的ID")
Change(stulish,ID)
if nChoose == '5':
display(stulist)
if nChoose == '6':
Sort(stulist)
if nChoose == '0':
break
if __name__ == '__main__':
stulist =[]
lnit(stulist)
#student.py
#定义student父类
class Student:
def __init__(self,name='',grade=0):
self.name=name
self.grade=grade
def setName(self,name):
self.name=name
def setGrade(self,grade):
self.grade=grade
def getName(self):
return self.name
def show(self):
print('%s\t %s'%(self.name,self.calcLevel()))
#定义student子类(根据成绩计算等级)
class LevelSt(Student):
def calcLevel(self):
if self.grade>=90:
return 'A'
elif self.grade>=80:
return 'B'
elif self.grade>=70:
return 'C'
elif self.grade>=60:
return 'D'
else:
return 'E'
#定义student子类(根据成绩判断是否通过)
class PassSt(Student):
def calcLevel(self):
if self.grade>=60:
return '通过'
else:
return '不通过'
import sys
sys.path.append(r'C:\Users\86138\Desktop\python\第9周\demo\student.py')
import student
def list_St():
listOfSt=[]
flag='Y'
while flag=='Y':
name=input('请输入名字:')
grade=float(input('请输入成绩:'))
choice=input('请输入(L or P):')
if choice.upper()=='L':
s=student.LevelSt(name,grade)
else:
s=student.PassSt(name,grade)
listOfSt.append(s)
flag=input('继续? (y/n):').upper()
return listOfSt
def display(listOfSt):
print('\n姓名 \t 等级')
listOfSt.sort(key=lambda x:x.getName())
for each in listOfSt:
each.show()
def main():
listOfSt=list_St()
display(listOfSt)
main()
本文介绍了一个学生信息管理系统的设计与实现,包括学生信息的增删改查、成绩录入与排序等功能,并展示了如何通过Python进行文件操作来持久化存储数据。
1840

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



