一、要求: 选课系统
管理员:
创建老师:姓名、性别、年龄、资产
创建课程:课程名称、上课时间、课时费、关联老师
使用pickle保存在文件
学生:
学生:用户名、密码、性别、年龄、选课列表[]、上课记录{课程1:【di,a,】}
1、列举所有课程
2、选择课程
3、学生上课,
4、ret = 课程.work() 获取课程的返回; 资产+=课时费
二、代码思路
1.类的关联:
a、Teacher类:关联管理员,由哪个管理员创建
b、 Course类:关联老师对象、管理员对象(注意:关联的是对象)
2.文件的写入:
a、管理员文件:写入的是管理员对象(封装管理员的用户名和密码)
b、学生文件:写入的是学生对象(封装了学生已选课程列表,已经上过的课程字典:key:课程对象 value:上课信息列表,是列表格式)
c、课程列表course_list、老师列表teacher_lis,都是列表格式。
三、文件概述
bin目录:存放administrator.py文件和students.py文件
config目录:存放settings.py文件,即配置文件
db目录:存放与数据相关的文件,包括课程列表course_list、老师列表teacher_list、学生文件夹、管理员文件夹
lib目录:存放models.py文件,即存放公共的模块
log目录:存放日志文件
四、代码实现
4.1配置文件settings.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__)) #配置文件的上级目录
BASE_ADMIN_DIR = os.path.join(BASE_DIR, "db", "admin") #管理员目录
BASE_STUDENTS_DIR = os.path.join(BASE_DIR, "db", "students") #学生目录
TEACHER_DB_DIR = os.path.join(BASE_DIR, "db", "teacher_list") #老师列表目录
COURSE_DB_DIR = os.path.join(BASE_DIR, "db", "course_list") #课程列表目录
4.2公共模块modules.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import random
import time
import pickle
from config import settings
import os
class Teacher:
"""
封装老师的相关信息
"""
def __init__(self, name, age, admin):
self.name = name
self.age = age
self.__assets = 0
self.create_time = time.strftime('%Y-%m-%d %H:%M:%S')
self.create_admin = admin
def gain(self, cost):
"""
增加资产
:param cost: 增加的数量
:return:
"""
self.__assets += cost
def decrea