一、需求:

1、可以注册管理员账号,管理员账号可以创建老师和课程

2、学生可以注册和登陆,学生可以从课程列表选课,可以进行上课登记查看

二、代码

1、文件目录

bin 存放可执行文件

config 存放可配置文件

db 存放数据文件

lib 存放实现类

目录结构如图:

【python之路34】面向对象作业之学生选课系统

【python之路34】面向对象作业之学生选课系统

2、admin.py 中的代码

#!usr/bin/env python
# -*- coding:utf-8 -*-
"""admin注册登录,以及用admin账号创建老师和课程"""
import pickle
import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
#import time
from config import setting
from lib.models import *  #导入所有类

def login():
    """用户登陆"""
    username = input("请输入用户名:")
    pwd = input('请输入密码:')
    if os.path.exists(os.path.join(setting.ADMIN_PATH ,username)):
        with open(os.path.join(setting.ADMIN_PATH ,username), 'rb') as f:
            admin_obj = pickle.load(f)
            if admin_obj.login(username, pwd):
                print('登陆成功!')
                return admin_obj
            else:
                print('密码错误!')
    else:
        print('账号不存在!')
        exit()
def regester():
    """用户注册"""
    username = input("请输入用户名:")
    pwd = input('请输入密码:')
    adm = Admin()
    adm.regester(username, pwd)
def creat_teacher(admin_obj):
    li_teacher = []
    while True:
        name = input('请输入要创建老师的名字,Q退出:')
        if name == "Q":
            break
        age = input('请输入要创建老师的年龄:')
        obj = Teacher(name,age,admin_obj)
        li_teacher.append(obj)
    if os.path.exists(setting.TEACHER_PATH):
        read_teacher = pickle.load(open(setting.TEACHER_PATH,'rb'))
        li_teacher.extend(read_teacher)
    pickle.dump(li_teacher,open(setting.TEACHER_PATH,'wb'))
    #print(li_teacher)
def creat_course(admin_obj):
    print('老师信息:')
    teacher_list = pickle.load(open(setting.TEACHER_PATH,'rb'))
    for num,item in enumerate(teacher_list,1):
        print(num, item.name, item.age, item.creat_time, item.admin_obj.username)
    course_li = []
    while True:
        course_name = input('请输入课程名(Q退出):')
        if course_name == "Q":
            break
        cost = input('请输入课时费:')
        num = input('请选择老师的序号:')
        course_obj = Course(course_name, cost, teacher_list[int(num)-1], admin_obj)
        course_li.append(course_obj)
    if os.path.exists(setting.COURSE_PATH):
        read_course = pickle.load(open(setting.COURSE_PATH,'rb'))
        course_li.extend(read_course)
    pickle.dump(course_li, open(setting.COURSE_PATH,'wb'))

def main():
    isregsterOrlogin = input('登陆请按1,注册请按2\n')
    if isregsterOrlogin == '1':
        admin_obj = login()  #登陆
        creat_teacher(admin_obj)  #创建老师,写进文件teacher/teacher
        creat_course(admin_obj)  #创建课程
    elif isregsterOrlogin == '2':
        regester()  #注册


if __name__ == '__main__':
    main()
admin

相关文章:

  • 2021-08-29
  • 2021-04-12
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-21
  • 2022-03-07
猜你喜欢
  • 2021-07-23
  • 2022-01-31
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-30
  • 2022-12-23
相关资源
相似解决方案