【Python】面向对象的学生管理系统

首先展示一下面向函数的学生管理系统,使用了Python语言编写。

stus = {1001:["张三",89.56],1002:["李四",95.80]}

#查询学生信息,修改学生信息,删除学生信息,增加学生信息
def main():
    print("*****欢迎使用学生管理系统*****")
    print("1.查询学生信息")
    print("2.添加学生信息")
    print("3.修改学生信息")
    print("4.删除学生信息")
    print("0.退出学生管理")

    num=int(input("请选择你要使用的功能"))
    if num==1:
        querystus()
    elif num==2:
        addstus()
    elif num==3:
        modifystus()
    elif num==4:
        delstus()
    elif num==5:
        showall()
    elif num==0:
        print("程序退出中...")
        exit()
    else :
        print("输入错误,请重新输入")
        main()

def key():
    s = input("输入Y继续,输入N退出")

    if s == "Y" or s == "y":
        return True

    elif s == "N" or s == "n":
        return False

    else:
        print("输入错误请重新输入")
        key()

def querystus():
    sno = int(input("请输入您要查询学生的学号"))
    if sno in stus:
        print("学生信息查询成功")
        print("学号:"+str(sno)+"  姓名:"+str(stus[sno][0])+"  成绩:"+str(stus[sno][1]))
        print("是否要继续查询学生信息")
        key_c = key()
        if key_c:
            querystus()
        else:
            main()
    else:
        print("您要查询的学生信息不存在,请重新输入")
        querystus()

def addstus():
    sno = int(input("请输入要添加学生的学号"))
    if sno in stus:
        print("学号信息已被使用,请重新输入学号")
        addstus()
    else :
        name = input("请输入学生姓名")
        score = float(input("请输入学生成绩"))
        stus[sno] = [name,score]
    print(stus,end="")
    print("学生信息添加成功,是否需要继续添加学生信息")
    key_c = key()
    if(key_c):
        addstus()
    else:
        main()

def delstus():
    sno = int(input("请输入你要删除的学生信息的学号"))
    if sno in stus:
        print(str(stus[sno]) + "信息删除*****")
        del stus[sno]
        print("学生信息删除成功,是否需要继续删除学生信息")
    else:
        print("学生信息不存在,请重新输入")
        delstus()
    key_c = key()
    if key_c:
        delstus()
    else:
        main()

def modifystus():
    sno = int(input("请输入您要修改学生信息的学号"))
    if sno in stus:
        print("学号:"+str(sno)+"  姓名:"+str(stus[sno][0])+"  成绩:"+str(stus[sno][1]))
        num = int(input("请输入你要修改的学生信息:1.姓名;2.成绩。"))
        if num == 1:
            sname = input("请输入姓名")
            stus[sno][0] = sname
        else:
            score = int(input("请输入成绩"))
            stus[sno][1] = score
        print("学生信息修改成功,是否需要继续修改学生信息")
        key_c = key()
        if key_c:
            modifystus()
        else:
            main()
    else:
        print("学号输入错误,请重新输入")
        modifystus()


main()

面向函数的编程是将编程分成N件事情,然后按照步骤执行函数实现目的。

面向对象的编程方法,是将整个过程封装成一个大类,在这个类中详细分解执行每个步骤,只需要执行类就可以实现目的。

学生管理系统的主要对象有:学生类、管理学生的类,因此有以下两个大类:

学生类

class Student:

    def __init__(self,sid,sname,scope,scity):
        self.__sid = sid
        self.__sname = sname
        self.__scope = scope
        self.__scity = scity
    def __str__(self):
        return f"{self.__sid}\t{self.__sname}\t{self.__scope}\t{self.__scity}"

    # 封装方法
    def getSid(self):
        return self.__sid
    def setSid(self,sid):
        self.__sid = sid

    def getSname(self):
        return self.__sname
    def setSname(self,sname):
        self.__sname = sname

    def getScope(self):
        return self.__scope
    def setScope(self,scope):
        self.__scope = scope

    def getScity(self):
        return self.__scity
    def setScity(self,scity):
        self.__scity = scity

学生管理类

from Student import Student

class School():

    #创建学生容器
    stus = []
    def menu(self):
        print("---进入学生管理系统---")
        print("---1.添加学生---")
        print("---2.修改学生---")
        print("---3.查询学生---")
        print("---4.删除学生---")
        print("---0.退出系统---")
        num = int(input("请输入要选择的功能"))
        if num == 1:
            self.addstu()
        elif num == 2:
            self.modifyStu()
        elif num == 3:
            self.showStu()
        elif num == 4:
            self.delStu()
        elif num == 0:
            print("---退出学生管理系统---")
            return
        else:
            print("输入错误,请重新调用")
            self.menu()

    def key(self):
        s = input("输入Y继续,输入N返回主界面")
        if s == "Y" or s == "y":
            return True
        elif s == "N" or s == "n":
            return False
        else:
            print("输入错误请重新输入")
            self.key()

    # 添加学生
    def addstu(self):
        sno = int(input('请输入学生学号:'))

        for i in self.stus:
            if sno == i.getSid():
                print("您输入的学号信息已存在,请重新输入")
                self.addstu()
        sname = input("请输入学生姓名:")
        scope = int(input("请输入学生成绩:"))
        scity = input("请输入学生住址:")
        s = Student(sno,sname,scope,scity)
        self.stus.append(s)
        print("学生信息添加成功")
        print("学号:"+str(s.getSid())+" 姓名:"+s.getSname()+" 成绩: "+str(s.getScope())+" 住址:"+s.getScity())
        key_c = self.key()
        if key_c:
            self.addstu()
        else:
            for i in self.stus:
                print(i)
            self.menu()
    # 修改学生信息
    def modifyStu(self):
        sno = int(input("请输入要修改的学生学号:"))
        flag = False
        for i in self.stus:
            if sno == i.getSid():
                flag = True
                break
        if flag :
            print(f"学号:{i.getSid()},姓名:{i.getSname()},成绩:{i.getScope()},住址:{i.getScity()}")
            id = int(input("请输入您要修改的学号:"))
            i.setSid(id)
            name = input("请输入您要修改的姓名:")
            i.setSname(name)
            scope = int(input("请输入您要修改的成绩:"))
            i.setScope(scope)
            city = input("请输入您要修改的住址:")
            i.setScity(city)
            print("---学生信息修改完成---")
            print(f"学号:{i.getSid()},姓名:{i.getSname()},成绩:{i.getScope()},住址:{i.getScity()}")
        else:
            print("学生信息不存在")
        key_c = self.key()
        if key_c:
            self.modifyStu()
        else:
            self.menu()

    # 查询学生
    def showStu(self):
        sno = int(input("请输入要查询的学生学号:"))
        flag = False
        for i in self.stus:
            if sno == i.getSid():
                print("学生信息查询完成")
                flag = True
        if flag:
            print(f"学号:{i.getSid()},姓名:{i.getSname()},成绩:{i.getScope()},住址:{i.getScity()}")
        else:
            print("学生信息不存在,请重新输入学号")
            key_c = self.key()
            if key_c:
                self.showStu()
            else:
                self.menu()

    # 删除学生
    def delStu(self):
        sno = int(input("请输入要删除的学生学号:"))
        t = 0
        for i in self.stus:
            if sno == i.getSid():
                break
            else:
                t += 1
        print("---学生信息删除中---")
        self.stus.pop(t)
        print("---学生信息删除成功---")

sc1 = School()
sc1.menu()

 

你可能感兴趣的:(Python,python)