美文网首页Python
python实现学生管理系统(文件操作,面向对象)

python实现学生管理系统(文件操作,面向对象)

作者: 阁下_3258 | 来源:发表于2022-07-20 21:26 被阅读0次

    一、需求分析

    • 学生管理系统所具备功能
      1. 登录及注册管理账号
      2. 对学生信息要可以实现基本的增删改查功能
      3. 可以显示出所有的学生信息
      4. 将学生信息以及管理账户信息保存至对应文件

    系统分析

    1. 系统管理登录模块

      1)管理员登录模块

      2) 管理员注册模块

    2. 学生信息管理模块

      1)添加学生信息模块

      2)删除学生信息模块

      3)修改学生信息模块

      4)查询学生信息模块

      5)显示学生信息模块

      6)保存数据模块

    详细代码

    1、StudentT类

    import os
    
    class StudentT(object):
    
        def __init__(self):
            self.student_list=[]
            self.student_dict={}
    
    
        #学生管理系统界面
        @staticmethod
        def jiemian():
            print("┌--------------------------┐")
            print("│       学生管理系统       │")
            print("│**************************│")
            print("│     1:添加学生信息       │")
            print("│     2:删除学生信息       │")
            print("│     3:修改学生信息       │")
            print("│     4:查询学生信息       │")
            print("│     5:显示所有学生       │")
            print("│     6:保存数据           │")
            print("│     7:退出系统           │")
            print("│==========================│")
            print("└--------------------------┘")
    
    
        #添加学生
        def add(self):
            number=input("请输入录入学生学号:")
            t = 0
            for student_dict_1 in self.student_list:
                if number == student_dict_1["number"]:
                    t = 1
                    break
            if t == 0:
                name=input("请输入录入学生姓名:")
                cls=input("请输入学生班级:")
                age=input("请输入录入学生年龄:")
                phone=input("请输入录入学生手机号:")
                addr=input("请输入录入学生家庭住址:")
                self.student_dict={"number":number,"name":name,"class":cls,"age":age,"phone":phone,"address":addr}
                self.student_list.append(self.student_dict)
                print()
                print("-----添加学生信息界面-----")
                print()
                print("学号\t\t","姓名\t\t","班级\t\t","年龄\t\t","电话号\t\t\t","家庭住址\t\t")
                print("%s\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s" %(number,name,cls,age,phone,addr))
                print()
                print("录入成功!")
                print()
            else:
                print("\n该学生以存在\n")
    
        #删除学生
        def dele(self):
            number_del=input("请输入想要删除的学生学号:")
            for student_dict_1 in self.student_list:
                if number_del == student_dict_1["number"]:
                    self.student_list.remove(student_dict_1)
                    print("\n学号<%s>信息删除成功!\n" % number_del)
                    break
            else:
                print("\n您输入的学生学号错误,请重新输入\n")
    
        #修改学生
        def xiugai(self):
            number_xiugai=input("请输入想要修改的学生学号:")
            for student_dict_1 in self.student_list:
                if number_xiugai == student_dict_1["number"]:
                    self.student_list.remove(student_dict_1)
                    print("\n-----修改界面-----\n")
                    print("学号\t\t","姓名\t\t","班级\t\t","年龄\t\t","电话号\t\t","家庭住址\t\t")
                    print("%s\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s" %(student_dict_1["number"],
                                                               student_dict_1["name"],
                                                               student_dict_1["class"],
                                                               student_dict_1["age"],
                                                               student_dict_1["phone"],
                                                               student_dict_1["address"]))
                    #回车不修改
                    student_dict_1["number"]=self.new_input(student_dict_1["number"],"请输入修改后的学生学号[回车不修改]:")
                    student_dict_1["name"]=self.new_input(student_dict_1["name"],"请输入修改后的学生姓名[回车不修改]:")
                    student_dict_1["class"]=self.new_input(student_dict_1["class"],"请输入修改后的学生班级[回车不修改]:")
                    student_dict_1["age"]=self.new_input(student_dict_1["age"],"请输入修改后的学生年龄[回车不修改]:")
                    student_dict_1["phone"]=self.new_input(student_dict_1["phone"],"请输入修改后的学生手机号[回车不修改]:")
                    student_dict_1["address"]=self.new_input(student_dict_1["address"],"请输入修改后的学生家庭地址[回车不修改]:")
                    self.student_list.append(student_dict_1)
                    print("\n修改成功!\n")
                    break
            else:
                print("\n您输入的学生学号错误,请重新输入\n")
    
                    
    
        #查找学生
        def find(self):
            find_number=input("请输入需要查找的学生学号:")
            t = 0
            for student_dict_1 in self.student_list:
                if find_number == student_dict_1["number"]:
                    t = 1
                    break
            if t == 1:
                print("\n-----查询结果界面-----\n")
                print("学号\t\t","姓名\t\t","班级\t\t","年龄\t\t","电话号\t\t\t","家庭住址\t\t")
                print("%s\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s" %(student_dict_1["number"],
                                                           student_dict_1["name"],
                                                           student_dict_1["class"],
                                                           student_dict_1["age"],
                                                           student_dict_1["phone"],
                                                           student_dict_1["address"]))
            else:
                print("\n-----查询结果界面-----\n")
                print("\n无此学生信息\n")
    
        #显示所有学生信息
        def showall(self):
            if len(self.student_list)>0:
                print()
                print("-----显示所有学生信息-----")
                print()
                print("学号\t\t","姓名\t\t", "班级\t\t", "年龄\t\t", "电话号\t\t\t", "家庭住址\t\t")
                for student_dict_1 in self.student_list:
                    print("%s\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s" %(student_dict_1["number"],
                                                               student_dict_1["name"],
                                                               student_dict_1["class"],
                                                               student_dict_1["age"],
                                                               student_dict_1["phone"],
                                                               student_dict_1["address"]))
            else:
                print("\n暂无数据!\n")
    
        #设置用户不输入内容返回原值,输入内容返回新内容
        def new_input(self,yuanzhi,message):
            self.input_str=input(message)
            if len(self.input_str) > 1:
                return self.input_str
            else:
                return yuanzhi
    
    
        #保存学生数据至文件中
        def save_file(self):
            f = open("./information/student.txt", 'w', encoding='utf-8')
            f.write(str(self.student_list))
            f.close()
            print("\n数据保存成功!\n")
    
        #将学生数据读取至变量中
        def read_file(self):
            if os.path.exists('./information/student.txt'):
                f = open('./information/student.txt', 'r', encoding='utf-8')
                ret = f.read()
                self.student_list=eval(ret)
                f.close()
    

    2、Student类

    import os
    import student_tools
    
    class Student(student_tools.StudentT):
        def __init__(self):
            self.user_pwd = []
            student_tools.StudentT.__init__(self)
    
        #保存管理员数据至文件中
        def save_staff(self):
            f = open("./information/staff.txt", 'w', encoding='utf-8')
            f.write(str(self.user_pwd))
            f.close()
    
        #将管理员数据读取至变量中
        def read_staff(self):
            f = open('./information/staff.txt', 'r', encoding='utf-8')
            ret = f.read()
            self.user_pwd=eval(ret)
            f.close()
    
        #登录
        def denglu(self):
            self.read_staff()#将管理员数据读取至变量中
            users = input("请输入您的用户名:")
            pwds = input("请输入您的密码:")
            user_pwd = users+"&"+pwds+"\n"
            t = 0
            for i in self.user_pwd:
                if i == user_pwd:
                    t=1
                    break
            if t == 1:
                print("登录成功!")
                self.student()
            else:
                print("账号或密码不正确!")
    
        #注册
        def zhuce(self):
            self.read_staff()#将管理员数据读取至变量中
            users=input("请输入您要注册的用户名:")
            t = 0
            for i in self.user_pwd:
                if users+"&" in i:
                    t = 1
                    break
            if t == 0:
                pwds=input("请输入您要注册的密码:")
                user_pwd = users+"&"+pwds+"\n"
                self.user_pwd.append(user_pwd)
                self.save_staff()#保存管理员数据至文件中
                print("\n注册成功!\n")
            else:
                print("\n该账户已存在!\n")
    
        #检测文件夹
        def inspect(self):
            cat = os.listdir()       #获取目录
            t = 1
            #判断目录中是否有所需文件夹
            for i in cat:
                if i == "information":
                    t = 0
                    break
            if t != 0:
                #若没有则新建
                os.mkdir("information")
    
        #登录界面
        def dljiemian(self):
            while True:
                print("----------------------------")
                print("*   学生管理系统登陆界面   *")
                print("*                          *")
                print("*       1:登   录          *")
                print("*       2:注   册          *")
                print("*       3:退   出          *")
                print("*                          *")
                print("----------------------------")
                xx=input("请输入您的选择:")
                #1.登录
                if xx=='1':
                    self.denglu()
                elif xx=='2':
                #2.注册
                    self.zhuce()
                elif xx=='3':
                #3.退出
                    print("\n欢迎再次使用!\n")
                    input("")
                    break
                else:
                    print("输入错误,请重新输入")
    
    
        #学生管理系统
        def student(self):
            super().read_file()
            while True:
                #调用student_tools模块中的界面函数
                super().jiemian()
                x=input("请输入您的选择:")
                #添加学生
                if x=='1':
                    super().add()
                #删除学生
                elif x=='2':
                    super().dele()
                #修改学生
                elif x=='3':
                    super().xiugai()
                #查询学生
                elif x=='4':
                    super().find()
                #显示所有学生
                elif x=='5':
                    super().showall()
                #保存数据至文件中
                elif x=='6':
                    super().save_file()
                #退出学生管理系统,返回上一层登录界面系统
                elif x=='7':
                    print()
                    print("成功退出学生管理系统!")
                    break
                else:
                    print("\n输入错误,请重新输入\n")
    
        #调用最先执行的登录界面函数
    if __name__=='__main__':
        wtt=Student()
        wtt.inspect()
        wtt.dljiemian()
    

    注:StudentT类 保存为student_tools.py文件,若修改次文件名则需对应修改Student类第二行;若运行次系统侧运行Student类所保存的文件即可。

    相关文章

      网友评论

        本文标题:python实现学生管理系统(文件操作,面向对象)

        本文链接:https://www.haomeiwen.com/subject/aryyirtx.html