根据源程序进行改写:
原程序地址:http://www.cnblogs.com/lianzhilei/p/5985333.html 如有侵权立即删除。
感谢原作者将完整的代码提供参考。
原作者的代码是通过 shelve 模块实现的,非常完美。具体参考上面的链接地址;以下我改写代码是通过 pickle 模块来实现。主要做为练习:
README

class_system-pickle 选课系统根目录
├── bin
│ ├── __init__.py
│ └── start.py 程序入口
├── conf
│ ├── __init__.py
│ └── settings.py 配置文件 - 主要存储数据库文件目录
├── core
│ ├── __init__.py
│ ├── manage_center.py 主菜单入口
│ ├── school_center.py 学校中心功能点实现
│ ├── student_center.py 学生中心功能点实现
│ └── teacher_center.py 讲师中心功能点实现
├── db
│ ├── __init__.py
│ └── school_dict 数据库文件(运行程序自动初始化生成)
└── modules
├── course.py 课程类
├── grade.py 班级类
├── __init__.py
├── school.py 学校类
├── student.py 学生类
├── teacher.py 讲师类
└── tools.py 工具包 - 对数据库文件读写操作
5 directories, 18 files
代码实现逻辑请阅读原作者链接。
基于 pickle 序列化的代码如下:
bin
#!/usr/bin/python3 # -*- coding: utf-8 -*- # Author: hkey from conf.settings import school_db_file from core.manage_center import Manage_center if __name__ == '__main__': obj = Manage_center() obj.run()
conf
#!/usr/bin/python3 # -*- coding: utf-8 -*- # Author: hkey import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) school_db_file = os.path.join(BASE_DIR, 'db', 'school_dict') teacher_db_file = os.path.join(BASE_DIR, 'db', 'school_dict')
db
(不需要手动创建文件,启动程序自动生成数据文件)
core
#!/usr/bin/python3 # -*- coding: utf-8 -*- # Author: hkey from core.school_center import School_center from core.student_center import Student_center from core.teacher_center import Teacher_center class Manage_center(object): def __init__(self): pass def run(self): while True: print('1. 学校中心 ' '2. 讲师中心 ' '3. 学生中心 ' '4. 退出') choice = input('>>>').strip() if choice == '1': School_center() elif choice == '2': Teacher_center() elif choice == '3': Student_center() elif choice == '4': break else: print('