作业记录(个人向)

本文介绍了一个学生信息管理系统的设计与实现,包括学生信息的增删改查、成绩录入与排序等功能,并展示了如何通过Python进行文件操作来持久化存储数据。

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()
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值