python面向对象学员信息统计系统

day13②

昨天写完了,但是有个bug,脑子不清醒就今早补的!嘿嘿嘿,这个算昨天的哦

python自学,笔记分享

这次几乎把以前学的全用上了,算是一个大复习,下一步我要学习进阶

今天上传一整个系统,前方核能::::

主函数:main.py

# 导入模块,要能启动系统
from managerSystem import *

if __name__ == '__main__':  # 发现是当前文件才会执行下面
    student_manager = StudentManager()
    student_manager.run()

模块:managerStudent.py

# 存储关于管理系统相关代码
# 1\加载数据2、显示菜单3、用户输入功能序号4、根据输入反应

from student import *


class StudentManager(object):
    def __init__(self):
        # 存储数据所用的列表
        self.student_list = []

    def run(self):
        # 加载学员信息
        self.load_student()

        while True:
            # self.load_student()
            self.show_menu()
            menu_num = int(input('请输入想要的功能:'))

            if menu_num == 1:  # 添加学员
                self.add_student()
            elif menu_num == 2:  # 删除
                self.del_student()
            elif menu_num == 3:  # 修改
                self.modify_student()
            elif menu_num == 4:  # 查询
                self.search_student()
            elif menu_num == 5:  # 显示所有
                self.show_menu()
            elif menu_num == 6:  # 保存信息
                self.save_student()
            elif menu_num == 7:  # 退出系统
                break

    # 静态
    @staticmethod
    def show_menu():

        print('1:添加')
        print('2:删除')
        print('3:修改')
        print('4:查询')
        print('5:显示所有')
        print('6:保存')
        print('7:退出')

    def add_student(self):
        name = input('输入姓名')
        gender = input('输入性别')
        tel = input('输入手机号')
        # 用类创建对象
        student = Student(name, gender, tel)
        self.student_list.append(student)
        # 验证是否添加成功
        print(self.student_list)
        print(student)

    def del_student(self):
        del_name = input('输入要删除学员姓名')
        for i in self.student_list:
            if i.name == del_name:
                self.student_list.remove(i)
                break
        else:  # 循环正常结束就会运行
            print('查无此人')
        # 验证是否成功
        print(self.student_list)

    def modify_student(self):
        modify_name = input('输入要修改的学生姓名')
        for i in self.student_list:
            if i.name == modify_name:
                i.name = input('请输入学员姓名:')
                i.gender = input('输入性别:')
                i.tel = input('手机号:')
                print(f'修改成功,姓名:{i.name},性别{i.gender},手机号{i.tel}')
                break
        else:
            print('查无此人')

    def search_student(self):
        search_name = input('输入学员姓名')
        for i in self.student_list:
            if i.name == search_name:
                print(f'姓名:{i.name},性别{i.gender},手机号{i.tel}')
                break
        else:
            print('柴湾粗人')

    def show_student(self):
        print('姓名\t性别\t手机号')
        for i in self.student_list:
            print(f'{i.name}\t{i.gender}\t{i.tel}')

    def save_student(self):
        f = open('student.data', 'w')
        # 文件写入的数据不能是学员对象的内存地址,需要把学员数据转换成列表字典数据再做存储
        new_list = [i.__dict__ for i in self.student_list]
        print(new_list)
        f.write(str(new_list))
        f.close()

    def load_student(self):
        try:
            f = open('student.data', 'r')  # 尝试只读文件
        except:
            f = open('student.data', 'w')  # 没有则新建
        else:
            data = f.read()  # data是字符串
            # 注意使用eval()时不能传入空字符串
            new_list = eval(data)  # 内部为字典数据,需要转换为对象再存储到学员列表
            # [for i in new_list]列表推导式  Student()创建对象
            self.student_list = [Student(i['name'], i['gender'], i['tel']) for i in new_list]
        finally:
            f.close()

拓展:dict.py

class A(object):
    a = 0

    def __init__(self):
        self.b = 1

aa = A()

# 调用dict
print(A.__dict__)  # 返回字典
print('\n')
print(aa.__dict__)  # 用对象调用,打印对象相关字典

模块:student.py

# 用__str__魔法方法,方便查看学员信息

class Student(object):
    def __init__(self, name, gender, tel):
        self.name = name
        self.gender = gender
        self.tel = tel

    def __str__(self):
        return f'该学员名字是{self.name},性别是{self.gender},手机号是{self.tel}'

# 随写着随着检查
# aa = Student('aa', 'woman', 111)
# print(aa)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值