博客
关于我
学员管理系统(StudentsManagerSystem) 面向对象练习
阅读量:386 次
发布时间:2019-03-05

本文共 3614 字,大约阅读时间需要 12 分钟。

学员管理系统开发实践

最近,我在PyCharm上花费的时间有所减少,因为最近开始了网课学习。为了保持对编程的熟练程度,我决定开发一个简单的学员管理系统作为练习项目。这是我个人对面向对象编程知识的实践,也是许多程序员常见的开发项目。

项目分为三个模块:主函数启动模块(main)、管理系统模块(manageSystem)、学生模块(student)。

主程序模块(main)

# 1. 导入管理系统模块from manageSystem import *# 2. 启动管理系统if __name__ == '__main__':    student_manager = StudentManage()    student_manager.run()

管理系统模块(manageSystem)

class StudentManage(object):    def __init__(self):        self.student_list = []    def run(self):        self.load_student()        while True:            menu_num = int(input('请输入需要的功能序号(菜单序号为0):'))            if menu_num == 0:                self.show_menu()            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('您输入的有误,请重新输入')    def show_menu(self):        print('请选择如下功能:')        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('添加成功')    def del_student(self):        del_name = input('请输入学员姓名')        for i in self.student_list:            if i.name == del_name:                self.student_list.remove(i)                print('删除成功')                break            else:                print('查无此人,删除失败')    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('修改成功')                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}')                print('查询完成')                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}')        print('显示成功')    def save_student(self):        f = open('student.data', 'w')        new_list = [i.__dict__ for i in self.student_list]        f.write(str(new_list))        f.close()        print('保存成功')    def load_student(self):        try:            f = open('student.data', '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()

学生模块(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}'

个人总结

我认为模块化编程有以下优势:

  • 思路清晰

    代码按功能模块分开,每个模块独立负责一个功能,修改和调试也变得更加方便。如果一个模块测试通过,再导入主程序就能快速定位问题。

  • 分析方便

    阅读代码时,可以按模块逐一阅读,结构清晰,便于理解和维护。

  • 如果您对代码有任何建议或改进意见,欢迎在评论区留言。您的支持是我不断创作的动力!

    转载地址:http://rixwz.baihongyu.com/

    你可能感兴趣的文章
    MySQL binlog三种模式
    查看>>
    multi-angle cosine and sines
    查看>>
    Mysql Can't connect to MySQL server
    查看>>
    mysql case when 乱码_Mysql CASE WHEN 用法
    查看>>
    Multicast1
    查看>>
    mysql client library_MySQL数据库之zabbix3.x安装出现“configure: error: Not found mysqlclient library”的解决办法...
    查看>>
    MySQL Cluster 7.0.36 发布
    查看>>
    Multimodal Unsupervised Image-to-Image Translation多通道无监督图像翻译
    查看>>
    MySQL Cluster与MGR集群实战
    查看>>
    multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
    查看>>
    mysql cmake 报错,MySQL云服务器应用及cmake报错解决办法
    查看>>
    Multiple websites on single instance of IIS
    查看>>
    mysql CONCAT()函数拼接有NULL
    查看>>
    multiprocessing.Manager 嵌套共享对象不适用于队列
    查看>>
    multiprocessing.pool.map 和带有两个参数的函数
    查看>>
    MYSQL CONCAT函数
    查看>>
    multiprocessing.Pool:map_async 和 imap 有什么区别?
    查看>>
    MySQL Connector/Net 句柄泄露
    查看>>
    multiprocessor(中)
    查看>>
    mysql CPU使用率过高的一次处理经历
    查看>>