欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用Python完成一个学生管理系统,看不懂你打我啊!!

程序员文章站 2022-05-06 12:39:06
...

此学生管理系统的功能

  • 查看所有学生
  • 新增学生
  • 修改年龄
  • 删除学生
  • 按姓名查找学生
  • 按学号排序(升序和降序)
  • 保存
  • 退出

具体代码如下,赶紧来看看吧~

# -*- coding: utf-8 -*-
import os#判断文件是否存在

#生成学生类(存储学生个人信息)
class student:#生成学生类
    def __init__(self,id,name,age,sex,height):#学生类的定义将学号、姓名、年龄、性别、身高作为参数传给类
        self.id=id
        self.name=name
        self.age=age
        self.sex=sex
        self.height=height
    def printMe(self):#便于打印自己的类
        print("学号:%d,姓名:%s,年龄:%d,性别:%s,身高:%f" % (self.id, self.name, self.age, self.sex, self.height))#打印需要的内容,便于后面文件的调用



#生成管理类(对学生的各种管理)
class StudentManager:#定义学生管理类
    def __init__(self):
        self.allStudentList=[]
    #显示所有学生信息
    def allStudentShow(self):#定义学生显示函数
        for one in self.allStudentList:#利用for循环进行遍历
            one.printMe()#调用前面的内容,方便打印

    #定义新增学生函数
    def addNewStudent(self,newStudent):
        for one in self.allStudentList:
            if one.id==newStudent.id:
                return -1#学号重复
        self.allStudentList.append(newStudent)
        return 1

    #定义修改学生的年龄函数
    def updateStudent(self,id,newAge):
        for one in self.allStudentList:
            if one.id == id:
                one.age = newAge
                break #一个学生的年龄修改过后自动跳出循环
        else:
            return -1  #此学生不存在
        return 1


    #定义删除学生函数
    def deleteStudent(self,id):
        index = 0#利用index计数
        for one in self.allStudentList:
            if one.id == id:#利用if语句进行查找删除那个学生
                del self.allStudentList[index]
                index += 1
            else:
              return -1#找不到这个学生
        return 1

    #定义按姓名查找函数
    def searchName(self,name):
        flag=0 #利用flag区别有没有找到学生
        for one in self.allStudentList:
            if one.name==name:#利用if语句判断查找那个学生
                one.printMe()#打印学生信息  
                flag=1
        if flag==0:
            return -1#查无此人
        return 1

    #定义按学号排序函数
    #def sortMe(onelist):
        #return onelist[0]
    def orderById(self,flag):#flag=1升序,flag=2降序
        if flag==1:#升序
            self.allStudentList.sort(reverse=False,key=lambda x:x.id)#利用python中的sort
            #self.allStudentList.sort(reverse=False, key=sortMe.id)#利用python中的key 和value
        else:
            self.allStudentList.sort(reverse=True, key=lambda x:x.id)#X为一个参数
            
#定义从文件中读取数据函数
    def readFormFile(self,fileName):#从文件中读取所需的文件名
        if not os.path.exists(fileName):#如果文件不存在新建一个空文件
            f=open(fileName,"w")#打开并清空
            f.close()
        with open(fileName,"r",encoding="utf-8")as f:#文件读写功能都有,其中"utf-8"表示只读以下文件的中文
            for oneStr in f:#利用for循环在文件中进行遍历
                oneList = oneStr.strip("\n").split(",")#列表进行换行并用,隔开
                stu=student(int(oneList[0]),oneList[1],int(oneList[2]),oneList[3],float(oneList[4]))#定义一个str用于存储一个学生的信息
                self.allStudentList.append(stu)#将读取的信息增加到文件中

#将数据写入文件的函数
    def writeToFile(self,fileName):#将数据写入文件
        f=open(fileName,"w")#文件打开并清空
        f.close()
        with open(fileName,"a",encoding="utf-8")as f:#文件读写功能都有,其中"utf-8"表示只读以下文件的中文
            for one in self.allStudentList:#利用for循环在学生列表中进行遍历
                oneStr=str(one.id)+","+one.name+","+str(one.age)+","+one.sex+","+str(one.height)#用oneStr来接收一个同学的信息,同时强制转换学号、年龄为int型,将身高强制转换为float型
                f.write(oneStr)#将数据写入文件
                
#定义一个功能菜单函数
def menu():
    print("**************************")
    print("*1.查看所有学生***********")
    print("*2.新增学生***************")
    print("*3.修改年龄***************")
    print("*4.删除学生***************")
    print("*5.按姓名查找*************")
    print("*6.按学号排序*************")
    print("*7.保存*******************")
    print("*8.退出*******************")
    print("**************************")
if __name__ == '__main__':#从这个地方开始
    stuManager=StudentManager()#定义学生管理类
    # 从文件中读取数据
    stuManager.readFormFile("students.txt")
    while True:#避免一直循环
        #显示主菜单
        menu()
        select = int(input("请选择一个选项:"))
        if select == 1:#查看所有学生
            stuManager.allStudentShow()
        elif select == 2:#新增学生
            while True:
                try:#避免功能缺陷
                    id = int(input("请输入学号"))
                    name = input("请输入姓名")
                    age = int(input("请输入年龄"))
                    sex = input("请输入性别")
                    height = float(input("请输入身高"))
                    stu=student(id,name,age,sex,height)
                    if stuManager.addNewStudent(stu)==-1:
                        print("学号重复,请重新输入")
                    else:
                        flag = input("恭喜,新增成功,是否继续新增(Y/N)")
                        if flag != "Y":
                            break
                except:
                    print("请重新输入;")              
        elif select == 3:#修改学生年龄
            while True:
                id = int(input("请输入学号:"))
                newAge = int(input("请输入新年龄:"))
                if stuManager.updateStudent(id, newAge) == -1:
                    print("找不到此学生,请重新输入")
                else:
                    flag = input("恭喜,修改成功,是否继续修改(Y/N)")
                    if flag != "Y":
                        break
        elif select == 4:#删除学生
            while True:
                id = int(input("请输入删除学号:"))
                if stuManager.deleteStudent(id) == -1:
                    print("找不到此学生的学号,请重新输入")
                else:
                    flag = input("恭喜,删除成功,是否继续删除(Y/N)")
                    if flag.lower() != "y":
                        break
        elif select == 5:#按姓名查找
            while True:
                name = input("请输入姓名")
                if stuManager.searchName(name) == -1:
                    print("查无此人")
                flag = input("是否继续查找(Y/N)")
                if flag != "Y":
                    break
        elif select == 6:#排序
            flag = int(input("请选择排序方式(1.升序。2.降序)"))
            stuManager.orderById(flag)
            stuManager.allStudentShow()
        elif select == 7:#保存
            stuManager.writeToFile("students.txt")
            print("保存成功")
        else:#退出
            exit()


代码运行结果是这样的
用Python完成一个学生管理系统,看不懂你打我啊!!
下面就去试试它的各个功能吧,记着提前录入一些学生的信息哦,不然一开始就查看所有的同学的功能是查不到的哦!!
这是很久以前的写的一个管理系统了,不知道这次有没有把什么细节丢掉。如果有的话,欢迎交流和改正呀!!!