python面向对象版学生管理系统

import  os
class Student(object):
    def __init__(self,_name,_age,_tel):
        self.name = _name
        self.age = _age
        self.tel = _tel

    def __str__(self):
        return f'学生的姓名:{self.name},学生的年龄{self.age},学生的学号{self.tel}'


class SysManger(object):
    def __init__(self):
        self.list = []

    @staticmethod
    def menu():
        print('='*25)
        print('1.添加学生')
        print('2.查询所有学生信息')
        print('3.查询某个学生')
        print('4.修改学生')
        print('5.删除某个学生')
        print('6.保存信息')
        print('7.退出系统')
        print('=' * 25)

    def add_student(self):

        name = input('请输入学生姓名')
        for user in self.list:
            if user.name == name:
                print('该学生已存在,不能重复添加!')
                break
        else:
            age = input('请输入学生年龄:')
            tel = input('请输入学生学号:')
            stu = Student(name,age,tel)
            self.list.append(stu)

    def search_allstu(self):
        print(f'序号\t\t学号\t\t姓名\t\t\t年龄')
        for i,user in enumerate(self.list):
            print(f'{i + 1}\t\t{user.tel}\t\t{user.name}\t\t{user.age}')


    def search_onestu(self):
        name = input('请输入学生姓名:')
        print(f'序号\t\t学号\t\t姓名\t\t\t年龄')
        for i,user in enumerate(self.list):
            if user.name == name:
                print(f'{i + 1}\t\t{user.tel}\t\t{user.name}\t\t{user.age}')
                break
        else:
            print('该学生信息不存在!')

    def modify_onestu(self):
        name = input('请输入要修改信息的学生姓名:')
        for i,user in enumerate(self.list):
            if user.name == name:
                user.name = input('请输入修改后的姓名:')
                user.age = input('请输入修改后的年龄:')
                user.tel = input('请输入修改后的学号:')
                print(f'序号\t\t学号\t\t姓名\t\t\t年龄')
                print(f'{i + 1}\t\t{user.tel}\t\t{user.name}\t\t{user.age}')
                break
        else:
            print('该学生信息不存在!')
    def del_onestu(self):
        name = input('请输入要删除的学生姓名:')
        for user in self.list:
            if user.name == name:
                self.list.remove(user)
                break
        else:
            print('该学生信息不存在!')

    def save_info(self):
        stu_list = []
        with open('stu.txt','w',encoding='utf-8') as f:
            for user in self.list:
                dict = {'name':user.name,'age':user.age,'tel':user.tel}
                stu_list.append(dict)
            f.write(str(stu_list))

    def load_data(self):
        if not os.path.exists('stu.txt'):
           file =  open('stu.txt','w',encoding='utf-8')
           file.close()
        else:
            with open('stu.txt','r',encoding = 'utf-8') as f:
                stu_list = f.read()
                stu_list = eval(stu_list)
                for dict in stu_list:
                    _name = dict['name']
                    _age = dict['age']
                    _tel = dict['tel']
                    stu = Student(_name,_age,_tel)
                    self.list.append(stu)
            print('学生数据加载完成!')


    def start(self):
        self.load_data()
        while True:
            print(self.list)
            self.menu()
            cmd = input('请输入要进行的操作')
            #添加学生信息
            if cmd == '1':
                self.add_student()
            elif cmd == '2':
                #查询所有学生
                self.search_allstu()
            elif cmd == '3':
                #查询某个学生
                self.search_onestu()
            elif cmd == '4':
                #修改某个学生
                self.modify_onestu()
            elif cmd == '5':
                #删除某个学生
                self.del_onestu()
            elif cmd == '6':
                #保存信息
                self.save_info()
            elif cmd == '7':
                break
            else:
                print('输入有误,请重新输入')

manger = SysManger()


manger.start()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值