学员管理系统(StudentsManagerSystem) 面向对象练习

学员管理系统

    • 主程序模块(main)
    • 管理系统(manageSystem)
    • 学生模块(student)
    • 个人总结

自我第一篇文章得到很多人的支持与关注,小白有些受宠若惊,但是我更加坚定在程序员的路上越走越远和坚持写博客记录与分享,谢谢支持!
最近在写一个对我来说代码量较大的小游戏,因为最近开始了网课,每天在pycharm上花费的时间会少一些,再过几天我应该就写完了,然后会发出来,在这之前,我把面向对象这块知识进行一个练习,参考着做了这一个学员管理系统(好像这个是许多程序员都做过的一个项目,但是一万个人眼中有一万个哈姆雷特,所以这是我做的你也可以看看,顺便提出你的建议,谢谢支持!)
这个程序分三个模块【主函数启动模块(main)管理系统模块(manageSystem)学生模块(student)

学员管理系统(StudentsManagerSystem) 面向对象练习_第1张图片
就不再进行过多的赘述了,这篇文章精简一点,也是给我留些精力去做别的项目

主程序模块(main)


# 1.导入管理系统模块
from manageSystem import *

# 2.启动管理系统:保证当前文件运行才启动管理系统:if __name__
if __name__ == '__main__':
    student_manager = StudentManage()
    student_manager.run()

管理系统(manageSystem)

from student import *


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

    # 一 程序入口函数
    def run(self):
        # 1.加载学员信息
        self.load_student()
        while True:

            # 用户输入功能序号
            menu_num = int(input('请输入需要的功能序号(菜单序号为0):'))
            #       功能
            if menu_num == 0:
                #       显示功能菜单
                self.show_meun()
            elif 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_student()
            elif menu_num == 6:
                # 保存学员信息
                self.save_student()
            elif menu_num == 7:
                # 退出系统
                break
            else:
                print('您输入的有误,请重新输入')

    # 二,系统功能函数
    # 2.1显示功能函数 需求:打印序号功能对应关系  静态
    # @staticmethod
    def show_meun(self):
        print('请选择如下功能:')
        print('1.添加学员信息')
        print('2.删除学员信息')
        print('3.修改学员信息')
        print('4.查询学员信息')
        print('5.显示所有学员信息')
        print('6.保存学员信息')
        print('7.退出学员信息')

    # 2.2添加功能函数
    def add_student(self):
        # 1.用户输入姓名,性别,手机号
        name = input('请输入您的姓名')
        gender = input('请输入您的性别')
        tel = input('请输入您的手机号')
        # 2.创建学员对象
        student = Student(name, gender, tel)

        # 3.添加学员到列表
        self.student_list.append(student)
        print('\t添加成功')

    # 2.3删除功能函数
    def del_student(self):
        # 删除指定姓名的学员
        del_name = input('请输入学员姓名')
        for i in self.student_list:
            if i.name == del_name:
                self.student_list.remove(i)
                print('\t删除成功')
                break
            else:
                print('\t查无此人,删除失败')

    # 2.4修改功能函数
    def modify_student(self):
        #     1.用户输入目标学员姓名
        modify_name = input('请输入要修改的学员姓名')
        for i in self.student_list:
            if i.name == modify_name:
                i.name = input('请输入新的姓名')
                i.gender = input('请输入新的性别')
                i.tel = input('请输入新的手机号')
                print('\t修改成功')
                break
            else:
                print('\t查无此人,修改失败')

    # 2.5查询学员功能函数
    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}')
                print('\t查询完成')
                break
            else:
                print('查无此人,查询失败')

    # 2.6显示所有学员功能函数
    def show_student(self):
        print('姓名\t性别\t电话')
        for i in self.student_list:
            print(f'{i.name}\t{i.gender}\t{i.tel}')
            print('\t显示成功')

    # 2.7保存学员功能函数
    def save_student(self):
        # 1.打开文件
        f = open('student.data', 'w')
        # 2.文件写入数据
        # 2.1 [学员对象]转换成{字典}
        new_list = [i.__dict__ for i in self.student_list]
        # 2.2 文件写入 字符串数据
        f.write(str(new_list))
        # 3.关闭文件
        f.close()
        print('保存成功')

    # 2.8加载学员信息功能函数
    def load_student(self):

        try:
            f = open('student.date', 'r')

        except:
            f = open('student.data', 'w')
        else:
            data = f.read()

            new_list = eval(data)
            self.student_list = [Student(i['name'], i['gender'], i['tel']) for i in new_list]
        finally:
            f.close()


# 下面是测试代码块
if __name__ == '__main__':
    student = StudentManage()
    student.run()

学生模块(student)

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}'


# 下方是当前文件测试代码块,可以进行测试
if __name__ == '__main__':
    print(1)

个人总结

代码就是这些,可以把这些代码放一块,为什么要制作模块呢?
我个人认为
一,思路清晰:
是一块一块去写和思路相匹配,修改改错也很方便,去调试代码,如果放在一起如果出现Error就会出现很多的地方,改错都不好找,单个模块测试通过再导入就会很方便。
二,分析方便:
当再去看代码,一个模块一个模块去看,就会很清晰

如果觉得我写的那里不足就请提出您的高见,感谢您的建议,如果觉得这篇文章还可以,那么请您点赞评论关注您的支持就是我不断写下去的动力!

你可能感兴趣的:(python)