选课系统

Posted 如果迎着风就飞,俯瞰这世界有多美

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选课系统相关的知识,希望对你有一定的参考价值。

要求

技术分享图片
角色:学校、学员、课程、讲师
    要求:
        1. 创建北京、上海 2 所学校
        2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开
        3. 课程包含,周期,价格,通过学校创建课程 
        4. 通过学校创建班级, 班级关联课程、讲师
        5. 创建学员时,选择学校,关联班级
        5. 创建讲师角色时要关联学校, 
        6. 提供两个角色接口
        6.1 学员视图, 可以注册, 交学费, 选择班级,
        6.2 讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩 
        6.3 管理视图,创建讲师, 创建班级,创建课程
        7. 上面的操作产生的数据都通过pickle序列化保存到文件里
需求

 

目录说明

技术分享图片
[email protected]:~/data/xuanke$ tree .
    .
    ├── bin
    │   └── run.py                    # 启动文件
    ├── conf
    │   ├── __init__.py
    │   └── settings.py               # 全局配置文件
    ├── core
    │   ├── common.py                 # 公共库文件
    │   ├── CourseClass.py            # 课程库
    │   ├── GradesClass.py            # 班级库
    │   ├── __init__.py 
    │   ├── main.py                   # 主文件
    │   ├── ReadDb.py                 # 数据读写库
    │   ├── SchoolClass.py            # 学校类库
    │   ├── SchoolPeopleBase.py       # 基类库
    │   ├── StudentClass.py           # 学生类库
    │   └── TeacherClass.py           # 老师类库
    ├── course_selection_system.bmp   # 流程图
    └── db                            # 数据文件  
        ├── course.txt  
        ├── grade.txt
        ├── school.txt
        ├── student.txt
        └── teacher.txt
目录说明

代码

技术分享图片
#!/usr/bin/env python
import os
import sys

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)

# 引入核心main函数
from core import main

# 调用main函数
if __name__ == __main__:
    main.main()
bin/run.py
技术分享图片
  1 #!/usr/bin/env python
  2 # -*- coding: utf-8 -*-
  3 
  4 import os
  5 from core.common import format_time
  6 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  7 
  8 pj_format = "json"
  9 GENDER = ["", "male", "", "female"]
 10 DATA_PATH = os.path.join(BASE_DIR, "db")
 11 if not os.path.exists(DATA_PATH):
 12     os.mkdir(DATA_PATH)
 13 COURSE_PATH = os.path.join(DATA_PATH, "course.txt")    # 课程数据存放路径
 14 SCHOOL_PATH = os.path.join(DATA_PATH, "school.txt")    # 学校数据存放路径
 15 TEACHER_PATH = os.path.join(DATA_PATH, "teacher.txt")  # 教师数据存放路径
 16 GRADE_PATH = os.path.join(DATA_PATH, "grade.txt")      # 班级数据存放路径
 17 STUDENT_PATH = os.path.join(DATA_PATH, "student.txt")  # 学生数据存放路径
 18 
 19 
 20 
 21 # 超级管理员账号密码
 22 ROOT_NAME = "root"
 23 ROOT_PASSWORD = "root"
 24 
 25 # # 主菜单字典
 26 # main_dic = {
 27 #     1: 管理员系统,
 28 #     2: 学生系统,
 29 #     3: 老师系统,
 30 #     4: 退出
 31 # }
 32 #
 33 # # 学生系统菜单
 34 # student_main_dic = {
 35 #     1: 注册,
 36 #     2: 登录系统,
 37 #     3: 退出
 38 # }
 39 #
 40 # # 学生登录系统后菜单
 41 # student_dic = {
 42 #     1: 查询个人详情,
 43 #     2: 交学费,
 44 #     3: 交作业,
 45 #     4: 返回
 46 # }
 47 #
 48 # # 管理员系统菜单
 49 # master_dic = {
 50 #     1: 创建学校,
 51 #     2: 创建老师,
 52 #     3: 创建课程,
 53 #     4: 创建班级,
 54 #     5: 退出
 55 # }
 56 #
 57 # # 教师系统菜单
 58 # teacher_dic = {
 59 #     1: 查询个人信息,
 60 #     2: 查询所管班级,
 61 #     3: 创建上课记录,
 62 #     4: 评分,
 63 #     5: 返回
 64 # }
 65 
 66 # 主菜单字典
 67 main_dic = {
 68     1: manage_sys(),
 69     2: student_sys(),
 70     3: teacher_sys(),
 71 }
 72 
 73 # 学生系统菜单
 74 student_main_dic = {
 75     1: student_register(),
 76     2: student_login(),
 77 }
 78 
 79 # 学生登录系统后菜单
 80 student_dic = {
 81     "1": "student_show",
 82     "2": "student_pay_tuition",
 83     # "3": "student_pay_homework",
 84 }
 85 
 86 # 管理员系统菜单
 87 master_dic = {
 88     "1": "add_school()",
 89     "2": "add_teacher()",
 90     "3": "add_course()",
 91     "4": "add_class()",
 92     "5": "school_show()",
 93     "6": "school_show_teacher()"
 94 }
 95 
 96 # 教师系统菜单
 97 teacher_dic = {
 98     "1": "teacher_show",
 99     "2": "show_gradeInfo",
100     "3": "create_class",
101     # "4": "modify_score"
102 }
103 
104 # 主菜单打印信息
105 msg_main = """
106 --------------- 欢迎进入选课系统 ----------------
107 当前日期: {time}
108 
1091】  管理员系统
1102】  学生系统
1113】  老师系统
112 --------------------------------------------------
113 """.format(time=format_time())
114 
115 # 学生系统打印信息
116 msg_student_main = """
117 --------------- 欢迎进入学生系统 ----------------
118 当前日期: {time}
119 
1201】  注册
1212】  登录系统
122 --------------------------------------------------
123 """.format(time=format_time())
124 
125 # 学生登录系统后打印信息
126 msg_student = """
127 --------------- 欢迎学生界面 ----------------
128 当前日期: {time}
129 
1301】  查询个人详情
1312】  交学费
132 --------------------------------------------------
133 """.format(time=format_time())
134 
135 # 管理员系统打印信息
136 msg_master = """
137 --------------- 欢迎进入管理员界面 ----------------
138 当前日期: {time}
139 
1401】  创建学校
1412】  创建讲师
1423】  创建课程
1434】  创建班级
1445】  查看学校
1456】  查看讲师
146 --------------------------------------------------
147 """.format(time=format_time())
148 
149 # 教师系统打印信息
150 msg_teacher = """
151 --------------- 欢迎进入教师界面 ----------------
152 当前日期: {time}
153 
1541】  查询个人信息
1552】  查询所管班级
1563】  选择班级上课
157 #【4】  评分
158 --------------------------------------------------
159 """.format(time=format_time())
conf/settings
技术分享图片
 1 #!/usr/bin/env python
 2 # _*_ coding: utf-8 _*_
 3 
 4 import time
 5 import pickle
 6 from conf import settings
 7 
 8 
 9 def format_time():
10     return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
core/common.py
技术分享图片
 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 
 4 from .ReadDb import ReadDb
 5 class Course(ReadDb):
 6     def __init__(self, name, class_cycle, class_price, school_name):
 7         self.name = name
 8         self.cycle = class_cycle
 9         self.price = class_price
10         self.school_name = school_name
11 
12         # 读取课程数据
13         course_list = self.readCourseDb()
14         course_list[self.name] = self
15         # 存储课程数据
16         self.writeCourseDb(course_list)
core/CourseClass
技术分享图片
 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 
 4 from .ReadDb import ReadDb
 5 class Greades(ReadDb):
 6     def __init__(self, gread_name, course_name, teacher_name):
 7         self.gread_name = gread_name
 8         self.course_name = course_name
 9         self.teacher_name = teacher_name
10         self.student_list = {}
11 
12         # 读取班级数据
13         grade_list = self.readGradeDb()
14         grade_list[self.gread_name] = self
15         # 存储班级数据
16         self.writeGradeDb(grade_list)
core/GradesClass
技术分享图片
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from .StudentClass import StudentClass
from .CourseClass import Course
from .GradesClass import Greades
from .ReadDb import ReadDb
from .SchoolClass import School
from .StudentClass import StudentClass
from .TeacherClass import Teacher
from conf import settings

# ------------------------------------------------  学校 ---------------------------------------------------------------
def add_school():
    while True:
        school_list = ReadDb.readSchoolDb()
        if len(school_list):
            print(" 目前开放的学校如下 ".center(40, "-"))
            for school_name in school_list:
                print(school_name)
        school_name = input("请输入创建的学校名称: ").strip()

        if school_name in school_list:
            print("抱歉,当前 %s 校区已经存在,勿需重复创建." % school_name)
            break
        else:
            School(school_name)
            print("%s 校区创建成功" % school_name)
            break


def add_teacher():
    school_all = ReadDb.readSchoolDb()
    while True:
        if not len(school_all):
            print("暂时还有开放学校,请联系管理员")
            break
        print("请选择您的学校: ")
        for i in school_all:
            print(i)
        school_name = input("请输入选择的学校名称: ").strip()
        if school_name in school_all:
            school_obj = school_all[school_name]
            school_obj.createTeacher()
            print("创建讲师成功")
            break
        else:
            print("输入有误")


def add_course():
    school_all = ReadDb.readSchoolDb()
    while True:
        print("请选择您的学校: ")
        for school_name in school_all:
            print(school_name)
        school_name = input("请输入选择的学校名称: ").strip()
        print(" 欢迎进入%s 校区 ".center(40, "-") % school_name)
        if school_name in school_all:
            school_obj = school_all[school_name]
            school_obj.createCourse()
            # print("创建课程成功")
            break
        else:
            print("输入有误")


def add_class():
    school_all = ReadDb.readSchoolDb()
    while True:
        print("请选择您的学校: ")
        for i in school_all:
            print(i)
        school_name = input("请输入选择的学校名称: ").strip()
        if school_name in school_all:
            school_obj = school_all[school_name]
            school_obj.createGrades()
            print("创建班级成功")
            break
        else:
            print("输入有误")


def school_show():
    school_all = ReadDb.readSchoolDb()
    print(" 目前开放的学校 ".center(45, "-"))
    for school_name in school_all:
        print(school_name)


def school_show_teacher():
    teacher_all = ReadDb.readTeacherDb()
    # print("teacher_all",teacher_all)
    print(" 目前所有教师 ".center(45, "-"))
    for teacher_name in teacher_all:
        # print(teacher_name)
        # print("teacher_name", teacher_all[teacher_name].__dict__)
        print("""---------------------------  讲师 -----------------------------
        姓    名:  %s
        性    别:  %s
        年    龄:  %s
        所在学校:  %s
        所在班级:  %s
        """ % (teacher_all[teacher_name].name,
               teacher_all[teacher_name].sex,
               teacher_all[teacher_name].age,
               teacher_all[teacher_name].school_name,
               teacher_all[teacher_name].greade_list))


def manage_sys():
    username = input("请输入管理员姓名: ").strip()
    password = input("请输入管理员密码: ").strip()
    if username == settings.ROOT_NAME and password == settings.ROOT_PASSWORD:
        while True:
            print(settings.msg_master)
            select = input("请选择您要进入的系统序号<b返回|q退出>: ").strip()
            if select.lower() == "b":
                break
            elif select.lower() == "q":
                exit(" 拜拜 ".center(50, "-"))
            else:
                eval(settings.master_dic[select]) if select in settings.master_dic else print("抱歉输入编号不存在")
    else:
        print(用户名或者密码错误)

# ---------------------------------------------- 学生 -----------------------------------------------------------------
def student_register():
    school_all = ReadDb.readSchoolDb()
    while True:
        if not len(school_all):
            print("暂时还有开放学校,请联系管理员")
            break
        print("目前开放的学校: ")
        for school_name in school_all:
            print(school_name)
        school_name = input("请输入选择的学校名称: ").strip()
        if school_name in school_all:
            school_obj = school_all[school_name]
            school_obj.createStudent()
            break
        else:
            print("输入有误")


def student_show(obj):
    obj.showInfo()


def student_pay_tuition(obj):
    obj.payTuition()

def student_pay_homework(obj):
    obj.submitTask()


def student_login():
    student_obj = StudentClass.login()
    if student_obj:
        while True:
            print(settings.msg_student)
            select = input("请选择要进入的系统序号<b返回|q退出>: ").strip()
            if select.lower() == "b":
                break
            elif select.lower() == "q":
                exit(" 拜拜 ".center(50, "-"))
            else:
                eval(settings.student_dic[select])(student_obj) if select in settings.student_dic else print("抱歉输入编号不存在")


def student_sys():
    while True:
        print(settings.msg_student_main)
        select = input("请选择要进入的系统序号<b返回|q退出>: ").strip()
        if select.lower() == "b":
            break
        elif select.lower() == "q":
            exit(" 拜拜 ".center(50, "-"))
        else:
            eval(settings.student_main_dic[select]) if select in settings.student_main_dic else print("抱歉输入编号不存在")

# ----------------------------------------------------- 老师 -----------------------------------------------------------
def teacher_show(obj):
    obj.show_info()


def show_gradeInfo(obj):
    obj.show_grade_info()


def create_class(obj):
    obj.create_class_record()


def modify_score(obj):
    """
    :param obj:
    :return:
    """
    obj.change_score()

def teacher_sys():
    teacher_obj = Teacher.login()
    if teacher_obj:
        while True:
            print(settings.msg_teacher)
            select = input("请选择要进入的系统序号<b返回|q退出>: ").strip()
            if select.lower() == "b":
                break
            elif select.lower() == "q":
                exit(" 拜拜 ".center(50, "-"))
            else:
                eval(settings.teacher_dic[select])(teacher_obj) if select in settings.teacher_dic else print("抱歉输入编号不存在")


# -------------------------------------- 入口 --------------------------------------------------------------------------
def main():
    print("管理员默认账号是%s  密码是: %s" % (settings.ROOT_NAME, settings.ROOT_PASSWORD))
    while True:
        print(settings.msg_main)
        select = input(请选择要进入的系统序号<b返回|q退出>: ).strip()
        if select.lower() == "b":
            break
        elif select.lower() == "q":
            exit(" 拜拜 ".center(50, "-"))
        else:
            eval(settings.main_dic[select]) if select in settings.main_dic else print("抱歉输入编号不存在")
core/main.py
技术分享图片
 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 
 4 import pickle
 5 import json
 6 import os
 7 # import sys
 8 # BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 9 # sys.path.append(BASE_DIR)
10 from conf import settings
11 
12 class ReadDb:
13     @staticmethod
14     def readCourseDb():
15         # 通过调用pickle的load方法读取课程信息
16         if os.path.exists(settings.COURSE_PATH):
17             with open(settings.COURSE_PATH, "rb") as course_file:
18                 course_info = pickle.load(course_file)
19         else:
20             course_info = {}
21         return course_info
22 
23     @staticmethod
24     def writeCourseDb(info):
25         # 序列化课程到文件
26         with open(settings.COURSE_PATH, "wb") as course_file:
27             pickle.dump(info, course_file)
28 
29     @staticmethod
30     def readSchoolDb():
31         # 反序列school
32         if os.path.exists(settings.SCHOOL_PATH):
33             with open(settings.SCHOOL_PATH, "rb") as school_file:
34                 school_info = pickle.load(school_file)
35         else:
36             school_info = {}
37         return school_info
38     @staticmethod
39     def writeSchoolDb(info):
40         #序列化学校到文件
41         with open(settings.SCHOOL_PATH, "wb") as school_file:
42             pickle.dump(info, school_file)
43 
44     @staticmethod
45     def readTeacherDb():
46         # 反序列化读到内存
47         if os.path.exists(settings.TEACHER_PATH):
48             with open(settings.TEACHER_PATH, "rb") as teacher_file:
49                 teacher_info = pickle.load(teacher_file)
50         else:
51             teacher_info = {}
52         return teacher_info
53 
54     @staticmethod
55     def writeTeacherDb(info):
56         # 序列化老师到文件
57         with open(settings.TEACHER_PATH, "wb") as teacher_file:
58             pickle.dump(info, teacher_file)
59 
60     @staticmethod
61     def readGradeDb():
62         # 反序列化班级
63         if os.path.exists(settings.GRADE_PATH):
64             with open(settings.GRADE_PATH, "rb") as grade_file:
65                 grade_info = pickle.load(grade_file)
66         else:
67             grade_info = {}
68 
69         return grade_info
70 
71     @staticmethod
72     def writeGradeDb(info):
73         # 序列化班级
74         with open(settings.GRADE_PATH, "wb") as grade_file:
75             pickle.dump(info, grade_file)
76 
77     @staticmethod
78     def readStudentDb():
79         # 反序列化学生
80         if os.path.exists(settings.STUDENT_PATH):
81             with open(settings.STUDENT_PATH, "rb") as student_file:
82                 student_info = pickle.load(student_file)
83         else:
84             student_info = {}
85         return student_info
86 
87     @staticmethod
88     def writeStudentDb(info):
89         # 序列化学生
90         with open(settings.STUDENT_PATH, "wb") as student_file:
91             pickle.dump(info, student_file)
core/ReadDb
技术分享图片
  1 #!/usr/bin/env python
  2 # -*- coding: utf-8 -*-
  3 
  4 from .CourseClass import Course
  5 from .ReadDb import ReadDb
  6 from .TeacherClass import Teacher
  7 from .GradesClass import Greades
  8 from .CourseClass import Course
  9 from .StudentClass import StudentClass
 10 from conf import settings
 11 class School(ReadDb):
 12     ‘‘‘学校类‘‘‘
 13     def __init__(self,name):
 14         self.school_name = name
 15         self.school_course_list = {}
 16         self.school_teacher_list = {}
 17         self.school_greades_list = {}
 18         self.school_student_list = {}
 19         # 读取学校数据
 20         school_list = self.readSchoolDb()
 21         school_list[self.school_name] = self
 22         # 存储学校数据
 23         self.writeSchoolDb(school_list)
 24 
 25     def createCourse(self):
 26         ‘‘‘创建课程方法‘‘‘
 27         while True:
 28             school_list = self.readSchoolDb()
 29             print("目前该校区,开放的课程如下")
 30             for course_name in school_list[self.school_name].school_course_list:
 31                 print("开放的课程 --> ",course_name)
 32             course_name = input("请输入课程名称: ").strip()
 33             course_cycle = input("请输入课程周期: ").strip()
 34             course_price = input("请输入课程价格: ").strip()
 35             # 创建课程对象
 36             course_obj = Course(course_name, course_cycle, course_price, self.school_name)
 37             # 读取课程数据
 38             course_list = self.readCourseDb()
 39             # print("course_list__dict = ",course_obj.__dict__)
 40             course_list[course_name] = course_obj
 41             # 存储课程信息
 42             # self.writeCourseDb(course_list)   #####
 43             self.school_course_list[course_name] = course_name
 44             # 读取学校数据
 45             # school_list = self.readSchoolDb()
 46             if course_name in school_list[self.school_name].school_course_list:
 47                 print("抱歉,你新增的课程已经存在,创建失败")
 48                 break
 49             # 存储学校数据
 50             school_list[self.school_name] = self
 51             # print("school_list = ",school_list)
 52             # print("school_list.school_name = ",school_list[self.school_name].__dict__)
 53 
 54             self.writeCourseDb(course_list)  #####
 55             self.writeSchoolDb(school_list) ####
 56             break
 57 
 58 
 59     def createTeacher(self):
 60         ‘‘‘创建教师方法‘‘‘
 61         school_all = ReadDb.readSchoolDb()
 62         while True:
 63             teacher_name = input("请输入教师姓名: ").strip()
 64             if teacher_name in school_all[self.school_name].school_teacher_list:
 65                 print("抱歉该 %s 校区的%s 老师已经存在,请勿重复创建" % (self.school_name, teacher_name))
 66             else:
 67                 break
 68         teacher_password = input("请输入教师登录密码: ").strip()
 69         teacher_age = input("请输入教师年龄: ").strip()
 70         teacher_sex = input("请输入教师性别: ").strip()
 71         school_name = self.school_name
 72         teacher = Teacher(teacher_name,teacher_password,teacher_age,teacher_sex,school_name)
 73 
 74         # 读取教师数据
 75         teacher_info = self.readTeacherDb()
 76         teacher_info[teacher_name] = teacher
 77         # 存储教师数据
 78         self.writeTeacherDb(teacher_info)
 79 
 80         self.school_teacher_list[teacher_name] = teacher_name
 81         # 读取学校数据
 82         school_list = self.readSchoolDb()
 83         # 存储学校数据
 84         school_list[self.school_name] = self
 85         self.writeSchoolDb(school_list)
 86         print("""------------ 恭喜注册成功 【 %s 】 老师注册详细信息如下 
 87                 姓    名:  %s
 88                 密    码:  %s
 89                 年    龄:  %s
 90                 性    别:  %s
 91                 所在学校:  %s
 92                 请妥善保存好您的信息  
 93                 """ % (teacher_name, teacher_name, teacher_password, teacher_age, teacher_sex, self.school_name))
 94 
 95     def showTeacher(self):
 96         teacher_info = self.readTeacherDb()
 97         print("teacher_info = ", teacher_info.__dict__)
 98 
 99     def createGrades(self):
100         ‘‘‘创建班级方法‘‘‘
101         # 读取教师数据
102         teacher_info = self.readTeacherDb()
103         greade_name = input("请输入班级名称: ").strip()
104         # 选择教师
105         while True:
106             print("请选择本校老师: ")
107             for name in self.school_teacher_list:
108                 print(name)
109             teacher_name = input("请输入你要选择的老师姓名: ").strip()
110             if teacher_name not in self.school_teacher_list:
111                 print("您输入的有误")
112             else:
113                 break
114 
115         #选择课程
116         while True:
117             print("请选择本校课程:")
118             for course in self.school_course_list:
119                 print(course)
120             grade_course = input("请输入你要选择的课程名称: ").strip()
121             if grade_course not in self.school_course_list:
122                 print("您输入的有误")
123             else:
124                 break
125         grade = Greades(greade_name, grade_course, teacher_name)
126         # 写入学校数据库
127         self.school_greades_list[greade_name] = greade_name
128         # 读取学校数据
129         school_list = self.readSchoolDb()
130         # 存储学校数据
131         school_list[self.school_name] = self
132         self.writeSchoolDb(school_list)
133 
134         # 写入教师数据库
135         teacher_info[teacher_name].greade_list[greade_name] = greade_name
136         self.writeTeacherDb(teacher_info)
137 
138         # 写入班级数据库
139         grade_info = self.readGradeDb()
140         grade_info[greade_name] = grade
141         self.writeGradeDb(grade_info)
142 
143     def createStudent(self):
144         ‘‘‘创建学生‘‘‘
145         while True:
146             name = input("请输入您的姓名: ").strip()
147             pass_word = input("请输入您的密码: ").strip()
148             while True:
149                 print(" ------ > 年龄必须是大于0整数")
150                 age = input("请输入您的年龄: ").strip()
151                 if age.isdigit():
152                     if int(age) <= 0:
153                         print(" -- > 年龄必须是大于0")
154                     else:
155                         break
156                 else:
157                     print(" -- > 年龄必须是整数")
158             while True:
159                 print(" ------ > 性别你只能输入以下可选选项")
160                 for sex in settings.GENDER:
161                     print(sex, end=" | ")
162                 print("")
163                 sex = input("请输入您的性别: ").strip()
164                 if sex in settings.GENDER: break
165             grade_list = self.readGradeDb()
166             school_list = self.readSchoolDb()
167             # print("grade_list = ",grade_list)
168             # print("type(school_list) = ",type(school_list))
169             # print("school_list.school_name = ",school_list[school_name])
170             # print("grade_list = ",school_list[school_name].__dict__)
171             print("该校区目前可选择班级信息如下: ")
172             for class_name in school_list[self.school_name].school_greades_list:
173                 print(class_name)
174 
175             grade_name = input("请输入要注册班级名称: ").strip()
176             if grade_name in grade_list:
177                 if name in grade_list[grade_name].student_list:
178                     # print("抱歉该班级学生 %s 已经存在" % name)
179                     print("抱歉该班级学生 %s 已经存在,新增学生失败" % name)
180                     break
181             else:
182                 print("您输入的班级名称有问题")
183                 break
184 
185             grade_obj = grade_list[grade_name]
186             grade_obj.student_list[name] = name
187             grade_list[grade_name] = grade_obj
188             # print("grade_list = ",grade_list)
189             # print("grade_list = ",grade_list[grade_name].student_list)
190 
191             # 写入班级学生列表
192             self.writeGradeDb(grade_list)
193 
194             course_all = self.readCourseDb()
195             course_price = course_all[grade_obj.course_name].price
196             student_obj = StudentClass(name,pass_word,age,sex,grade_name,grade_obj.course_name,self.school_name,course_price)
197             student_all = self.readStudentDb()
198             student_all[name] = student_obj
199             self.writeStudentDb(student_all)
200             print(""" ------------ 恭喜注册成功 【 %s 】 同学注册详细信息如下 --------------
201              姓名: %s
202              密码: %s
203              年龄: %s
204              性别: %s
205              学校: %s
206              班级: %s      
207              请妥善保存好您的信息  
208              """ % (name, name, pass_word, age, sex, self.school_name, grade_name))
209             break
core/SchoolClass
技术分享图片
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 
4 class SchoolPeople:
5     def __init__(self, name, pass_word, age, sex):
6         self.name = name
7         self.pass_word = pass_word
8         self.age = age
9         self.sex = sex
core/SchoolPeopleBase
技术分享图片
 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 
 4 import time
 5 from .SchoolPeopleBase import SchoolPeople
 6 from .ReadDb import ReadDb
 7 class StudentClass(SchoolPeople,ReadDb):
 8 
 9     def __init__(self, name, pass_word, age, sex, class_name, course_name, school_name, tuition, is_pay=0):
10         super().__init__(name, pass_word, age, sex)
11         self.class_name = class_name
12         self.tuition = tuition
13         self.is_pay = is_pay
14         # self.submit_task = {}
15         self.course_name = course_name
16         self.school_name = school_name
17 
18         # 读取学生数据
19         student_list = self.readStudentDb()
20         # print("student_list = ", student_list)
21         student_list[self.name] = self
22         # 存储学生数据
23         self.writeStudentDb(student_list)
24 
25 
26     def payTuition(self):
27         ‘‘‘支付学费方法‘‘‘
28         if self.is_pay == 1:
29             print("学费已交,无需再交")
30         else:
31             print("您当前需要付学费: ", self.tuition, )
32             while True:
33                 tuition = input("请输入您要交的学费: ").strip()
34                 if tuition.isdigit() and (int(tuition) - int(self.tuition) >= 0):
35                     print("学费已交,谢谢")
36                     self.is_pay = 1
37                     # 写入学生db
38                     student_info = self.readSchoolDb()
39                     # print("student_info = ",student_info)
40                     student_info[self.name] = self
41                     self.writeStudentDb(student_info)
42                     return True
43                 else:
44                     print("您输入学费不够支付")
45 
46     def showInfo(self):
47         ‘‘‘展示个人信息‘‘‘
48         msg = """
49         亲爱的同学 %s 你好,你详细信息如下
50         姓    名:  %s
51         性    别:  %s
52         年    龄:  %s
53         所在学校:  %s 
54         所在班级:  %s     
55                 """ % (self.name, self.name, self.sex, self.age, self.school_name, self.course_name)
56         print(msg)
57 
58     @staticmethod
59     def login():
60         student_all = ReadDb.readStudentDb()
61         # print("student_all = ",student_all)
62         name = input("请输入您的姓名: ").strip()
63         if name in student_all:
64             student_info = student_all[name]
65             # print("student_info = ", student_info)
66             # print("student_info.__dict__ = ", student_info.__dict__)
67             pass_word = input("请输入您的密码: ").strip()
68             if pass_word == student_info.pass_word:
69                 print(登录成功)
70                 return student_info
71             else:
72                 print(您输入的密码有误)
73         else:
74             print("抱歉 学生 %s 在本系统中不存在" % name)
core/StudentClass
技术分享图片
 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 
 4 from .SchoolPeopleBase import SchoolPeople
 5 from .ReadDb import ReadDb
 6 from .StudentClass import StudentClass
 7 from .GradesClass import Greades
 8 import time
 9 class Teacher(SchoolPeople,ReadDb):
10     def __init__(self, name, pass_word, age, sex, school_name):
11         super().__init__(name, pass_word, age, sex)
12         self.greade_list = {}
13         self.school_name = school_name
14         self.class_record = []
15 
16         # 读取班级数据
17         teacher_list = self.readTeacherDb()
18         teacher_list[self.name] = self
19         # 存储班级数据
20         self.writeTeacherDb(teacher_list)
21 
22     def show_grade_info(self):
23         ‘‘‘展示自己所教班级‘‘‘
24         print("您所教的班级如下:")
25         for i in self.greade_list:
26             print(i)
27 
28     def create_class_record(self):
29         ‘‘‘展示创建上课记录‘‘‘
30         # 展示自己所教班级
31         while True:
32             print("您所教的班级如下: ")
33             for i in self.greade_list:
34                 print(i)
35             greade_name = input("请选择上课的班级: ")
36             if greade_name in self.greade_list:
37                 break
38             else:
39                 print(您输入班级有问题,请重新输入)
40                 continue
41         string = greade_name + time.strftime("%Y-%m-%d %X") + "上课记录"
42         self.class_record.append(string)
43         print("上课成功")
44         # 读取班级数据
45         teacher_list = self.readTeacherDb()
46         # print("teacher_list = ",teacher_list)
47         teacher_list[self.name] = self
48         # print("teacher_list = ", teacher_list)
49         # 存储班级数据
50         self.writeTeacherDb(teacher_list)
51 
52     @staticmethod
53     def login():
54         """
55         教师登录验证
56         :return:
57         """
58         teacher_all = ReadDb.readTeacherDb()
59         username = input("请输入您的姓名: ").strip()
60         if username in teacher_all:
61             teacher_info = teacher_all[username]
62             pass_word = input("请输入您的密码: ").strip()
63             if pass_word == teacher_info.pass_word:
64                 # print("teacher_info = ",teacher_info.__dict__)
65                 return teacher_info
66             else:
67                 print("您输入的密码有误,请重新输入")
68         else:
69             print("抱歉 老师 %s 在本系统中不存在" % username)
70 
71     def show_info(self):
72         ‘‘‘展示老师信息‘‘‘
73         msg = """
74 亲爱的老师 %s 你好,你详细信息如下
75 姓    名:  %s
76 性    别:  %s
77 年    龄:  %s
78 所在学校:  %s        
79         """ % (self.name, self.name, self.sex, self.age, self.school_name)
80         print(msg)
core/TeacherClass

 

运行环境

技术分享图片
Python 3.5.2
代码运行环境

 

流程图

亿图 7.8

功能介绍

技术分享图片
选课本系统共分为3大环节
    在系统首次启动之后,会固化一个超级管理员root,密码也是root,会打印相关信息
    1. 管理员系统
        1. 创建学校
        2. 创建讲师
        3. 创建课程
        4. 创建班级
        5. 查看老师
        6. 查看讲师
    2. 学生系统
        1. 注册
            -  学校
            -  班级
        2. 登录
    3. 老师系统
        1. 登录
            - 查看个人信息
            - 查看所带的班级
            - 创建上课记录
功能介绍

测试记录

技术分享图片
[BEGIN] 2018/2/11 15:21:22
[email protected]:~/data/xuanke$ ls
bin  conf  core
[email protected]:~/data/xuanke$ python3 bin/run.py 
管理员默认账号是root  密码是: root

--------------- 欢迎进入选课系统 ----------------
当前日期: 2018-02-11 15:21:521】  管理员系统
【2】  学生系统
【3】  老师系统
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 1
请输入管理员姓名: root
请输入管理员密码: root

--------------- 欢迎进入管理员界面 ----------------
当前日期: 2018-02-11 15:21:521】  创建学校
【2】  创建讲师
【3】  创建课程
【4】  创建班级
【5】  查看学校
【6】  查看讲师
--------------------------------------------------

请选择您要进入的系统序号<b返回|q退出>: 1
请输入创建的学校名称: 北京  
北京 校区创建成功

--------------- 欢迎进入管理员界面 ----------------
当前日期: 2018-02-11 15:21:521】  创建学校
【2】  创建讲师
【3】  创建课程
【4】  创建班级
【5】  查看学校
【6】  查看讲师
--------------------------------------------------

请选择您要进入的系统序号<b返回|q退出>: 1
-------------- 目前开放的学校如下 ---------------
北京
请输入创建的学校名称: 上海
上海 校区创建成功

--------------- 欢迎进入管理员界面 ----------------
当前日期: 2018-02-11 15:21:521】  创建学校
【2】  创建讲师
【3】  创建课程
【4】  创建班级
【5】  查看学校
【6】  查看讲师
--------------------------------------------------

请选择您要进入的系统序号<b返回|q退出>: 2
请选择您的学校: 
北京
上海
请输入选择的学校名称: 北京
请输入教师姓名: alex
请输入教师登录密码: alex
请输入教师年龄: 20
请输入教师性别: male
------------ 恭喜注册成功 【 alex 】 老师注册详细信息如下 
                姓    名:  alex
                密    码:  alex
                年    龄:  20
                性    别:  male
                所在学校:  北京
                请妥善保存好您的信息  
                
创建讲师成功

--------------- 欢迎进入管理员界面 ----------------
当前日期: 2018-02-11 15:21:521】  创建学校
【2】  创建讲师
【3】  创建课程
【4】  创建班级
【5】  查看学校
【6】  查看讲师
--------------------------------------------------

请选择您要进入的系统序号<b返回|q退出>: 2
请选择您的学校: 
上海
北京
请输入选择的学校名称: 上海  
请输入教师姓名: egon
请输入教师登录密码: egon
请输入教师年龄: 20
请输入教师性别: male
------------ 恭喜注册成功 【 egon 】 老师注册详细信息如下 
                姓    名:  egon
                密    码:  egon
                年    龄:  20
                性    别:  male
                所在学校:  上海
                请妥善保存好您的信息  
                
创建讲师成功

--------------- 欢迎进入管理员界面 ----------------
当前日期: 2018-02-11 15:21:521】  创建学校
【2】  创建讲师
【3】  创建课程
【4】  创建班级
【5】  查看学校
【6】  查看讲师
--------------------------------------------------

请选择您要进入的系统序号<b返回|q退出>: 3
请选择您的学校: 
北京
上海
请输入选择的学校名称: 北京
-------------- 欢迎进入北京 校区 ---------------
目前该校区,开放的课程如下
请输入课程名称: python
请输入课程周期: 3mons
请输入课程价格: 3000

--------------- 欢迎进入管理员界面 ----------------
当前日期: 2018-02-11 15:21:521】  创建学校
【2】  创建讲师
【3】  创建课程
【4】  创建班级
【5】  查看学校
【6】  查看讲师
--------------------------------------------------

请选择您要进入的系统序号<b返回|q退出>: 3
请选择您的学校: 
上海
北京
请输入选择的学校名称: 上海
-------------- 欢迎进入上海 校区 ---------------
目前该校区,开放的课程如下
请输入课程名称: go
请输入课程周期: 3mons
请输入课程价格: 3000

--------------- 欢迎进入管理员界面 ----------------
当前日期: 2018-02-11 15:21:521】  创建学校
【2】  创建讲师
【3】  创建课程
【4】  创建班级
【5】  查看学校
【6】  查看讲师
--------------------------------------------------

请选择您要进入的系统序号<b返回|q退出>: 4
请选择您的学校: 
北京
上海
请输入选择的学校名称: 比较^H
输入有误
请选择您的学校: 
北京
上海
请输入选择的学校名称: 北京
请输入班级名称: python-1
请选择本校老师: 
alex
请输入你要选择的老师姓名: alex  
请选择本校课程:
python
请输入你要选择的课程名称: python
创建班级成功

--------------- 欢迎进入管理员界面 ----------------
当前日期: 2018-02-11 15:21:521】  创建学校
【2】  创建讲师
【3】  创建课程
【4】  创建班级
【5】  查看学校
【6】  查看讲师
--------------------------------------------------

请选择您要进入的系统序号<b返回|q退出>: 4   
请选择您的学校: 
上海
北京
请输入选择的学校名称: 上海
请输入班级名称: go-1
请选择本校老师: 
egon
请输入你要选择的老师姓名: egon
请选择本校课程:
go
请输入你要选择的课程名称: go
创建班级成功

--------------- 欢迎进入管理员界面 ----------------
当前日期: 2018-02-11 15:21:521】  创建学校
【2】  创建讲师
【3】  创建课程
【4】  创建班级
【5】  查看学校
【6】  查看讲师
--------------------------------------------------

请选择您要进入的系统序号<b返回|q退出>: 2
请选择您的学校: 
北京
上海
请输入选择的学校名称: 北京
请输入教师姓名: oldboy
请输入教师登录密码: oldboy
请输入教师年龄: 20
请输入教师性别: male
------------ 恭喜注册成功 【 oldboy 】 老师注册详细信息如下 
                姓    名:  oldboy
                密    码:  oldboy
                年    龄:  20
                性    别:  male
                所在学校:  北京
                请妥善保存好您的信息  
                
创建讲师成功

--------------- 欢迎进入管理员界面 ----------------
当前日期: 2018-02-11 15:21:521】  创建学校
【2】  创建讲师
【3】  创建课程
【4】  创建班级
【5】  查看学校
【6】  查看讲师
--------------------------------------------------

请选择您要进入的系统序号<b返回|q退出>: 3
请选择您的学校: 
上海
北京
请输入选择的学校名称: 北京
-------------- 欢迎进入北京 校区 ---------------
目前该校区,开放的课程如下
开放的课程 -->  python
请输入课程名称: linux
请输入课程周期: 3mons
请输入课程价格: 3000

--------------- 欢迎进入管理员界面 ----------------
当前日期: 2018-02-11 15:21:521】  创建学校
【2】  创建讲师
【3】  创建课程
【4】  创建班级
【5】  查看学校
【6】  查看讲师
--------------------------------------------------

请选择您要进入的系统序号<b返回|q退出>: 4
请选择您的学校: 
北京
上海
请输入选择的学校名称: 北京
请输入班级名称: linux-1
请选择本校老师: 
oldboy
alex
请输入你要选择的老师姓名: oldboy
请选择本校课程:
python
linux
请输入你要选择的课程名称: linux
创建班级成功

--------------- 欢迎进入管理员界面 ----------------
当前日期: 2018-02-11 15:21:521】  创建学校
【2】  创建讲师
【3】  创建课程
【4】  创建班级
【5】  查看学校
【6】  查看讲师
--------------------------------------------------

请选择您要进入的系统序号<b返回|q退出>: 5
------------------ 目前开放的学校 ------------------
上海
北京

--------------- 欢迎进入管理员界面 ----------------
当前日期: 2018-02-11 15:21:521】  创建学校
【2】  创建讲师
【3】  创建课程
【4】  创建班级
【5】  查看学校
【6】  查看讲师
--------------------------------------------------

请选择您要进入的系统序号<b返回|q退出>: 6
------------------- 目前所有教师 ------------------
---------------------------  讲师 -----------------------------
        姓    名:  oldboy
        性    别:  male
        年    龄:  20
        所在学校:  北京
        所在班级:  {linux-1: linux-1}
        
---------------------------  讲师 -----------------------------
        姓    名:  egon
        性    别:  male
        年    龄:  20
        所在学校:  上海
        所在班级:  {go-1: go-1}
        
---------------------------  讲师 -----------------------------
        姓    名:  alex
        性    别:  male
        年    龄:  20
        所在学校:  北京
        所在班级:  {python-1: python-1}
        

--------------- 欢迎进入管理员界面 ----------------
当前日期: 2018-02-11 15:21:521】  创建学校
【2】  创建讲师
【3】  创建课程
【4】  创建班级
【5】  查看学校
【6】  查看讲师
--------------------------------------------------

请选择您要进入的系统序号<b返回|q退出>: b

--------------- 欢迎进入选课系统 ----------------
当前日期: 2018-02-11 15:21:521】  管理员系统
【2】  学生系统
【3】  老师系统
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 2

--------------- 欢迎进入学生系统 ----------------
当前日期: 2018-02-11 15:21:521】  注册
【2】  登录系统
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 1
目前开放的学校: 
上海
北京
请输入选择的学校名称: 北京
请输入您的姓名: cmz
请输入您的密码: cmz
 ------ > 年龄必须是大于0整数
请输入您的年龄: 20
 ------ > 性别你只能输入以下可选选项
男 | male | 女 | female | 
请输入您的性别: male
该校区目前可选择班级信息如下: 
python-1
linux-1
请输入要注册班级名称: python-1
 ------------ 恭喜注册成功 【 cmz 】 同学注册详细信息如下 --------------
             姓名: cmz
             密码: cmz
             年龄: 20
             性别: male
             学校: 北京
             班级: python-1      
             请妥善保存好您的信息  
             

--------------- 欢迎进入学生系统 ----------------
当前日期: 2018-02-11 15:21:521】  注册
【2】  登录系统
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 2
请输入您的姓名: cmz
请输入您的密码: cmz
登录成功

--------------- 欢迎学生界面 ----------------
当前日期: 2018-02-11 15:21:521】  查询个人详情
【2】  交学费
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 2
您当前需要付学费:  3000 元
请输入您要交的学费: 3000
学费已交,谢谢
student_info =  {上海: <core.SchoolClass.School object at 0x7f23c445ae80>, 北京: <core.SchoolClass.School object at 0x7f23c5bb76a0>}

--------------- 欢迎学生界面 ----------------
当前日期: 2018-02-11 15:21:521】  查询个人详情
【2】  交学费
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 2
学费已交,无需再交

--------------- 欢迎学生界面 ----------------
当前日期: 2018-02-11 15:21:521】  查询个人详情
【2】  交学费
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 1

        亲爱的同学 cmz 你好,你详细信息如下
        姓    名:  cmz
        性    别:  male
        年    龄:  20
        所在学校:  北京 
        所在班级:  python     
                

--------------- 欢迎学生界面 ----------------
当前日期: 2018-02-11 15:21:521】  查询个人详情
【2】  交学费
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: b

--------------- 欢迎进入学生系统 ----------------
当前日期: 2018-02-11 15:21:521】  注册
【2】  登录系统
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 1
目前开放的学校: 
上海
北京
请输入选择的学校名称: 上海
请输入您的姓名: leco
请输入您的密码: leco
 ------ > 年龄必须是大于0整数
请输入您的年龄: 20
 ------ > 性别你只能输入以下可选选项
男 | male | 女 | female | 
请输入您的性别: male
该校区目前可选择班级信息如下: 
go-1
请输入要注册班级名称: go-1
 ------------ 恭喜注册成功 【 leco 】 同学注册详细信息如下 --------------
             姓名: leco
             密码: leco
             年龄: 20
             性别: male
             学校: 上海
             班级: go-1      
             请妥善保存好您的信息  
             

--------------- 欢迎进入学生系统 ----------------
当前日期: 2018-02-11 15:21:521】  注册
【2】  登录系统
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 2
请输入您的姓名: leco
请输入您的密码: leco
登录成功

--------------- 欢迎学生界面 ----------------
当前日期: 2018-02-11 15:21:521】  查询个人详情
【2】  交学费
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 1

        亲爱的同学 leco 你好,你详细信息如下
        姓    名:  leco
        性    别:  male
        年    龄:  20
        所在学校:  上海 
        所在班级:  go     
                

--------------- 欢迎学生界面 ----------------
当前日期: 2018-02-11 15:21:521】  查询个人详情
【2】  交学费
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: b

--------------- 欢迎进入学生系统 ----------------
当前日期: 2018-02-11 15:21:521】  注册
【2】  登录系统
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 1
目前开放的学校: 
上海
北京
请输入选择的学校名称: 北京
请输入您的姓名: 朵朵
请输入您的密码: duoduo 
 ------ > 年龄必须是大于0整数
请输入您的年龄: 3
 ------ > 性别你只能输入以下可选选项
男 | male | 女 | female | 
请输入您的性别: female
该校区目前可选择班级信息如下: 
python-1
linux-1
请输入要注册班级名称: linux-1
 ------------ 恭喜注册成功 【 朵朵 】 同学注册详细信息如下 --------------
             姓名: 朵朵
             密码: duoduo
             年龄: 3
             性别: female
             学校: 北京
             班级: linux-1      
             请妥善保存好您的信息  
             

--------------- 欢迎进入学生系统 ----------------
当前日期: 2018-02-11 15:21:521】  注册
【2】  登录系统
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 2
请输入您的姓名: 朵朵
请输入您的密码: duoduo
登录成功

--------------- 欢迎学生界面 ----------------
当前日期: 2018-02-11 15:21:521】  查询个人详情
【2】  交学费
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 1

        亲爱的同学 朵朵 你好,你详细信息如下
        姓    名:  朵朵
        性    别:  female
        年    龄:  3
        所在学校:  北京 
        所在班级:  linux     
                

--------------- 欢迎学生界面 ----------------
当前日期: 2018-02-11 15:21:521】  查询个人详情
【2】  交学费
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 2
您当前需要付学费:  3000 元
请输入您要交的学费: 4000
学费已交,谢谢
student_info =  {上海: <core.SchoolClass.School object at 0x7f23c445aef0>, 北京: <core.SchoolClass.School object at 0x7f23c44f8710>}

--------------- 欢迎学生界面 ----------------
当前日期: 2018-02-11 15:21:521】  查询个人详情
【2】  交学费
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: ^Hb
抱歉输入编号不存在

--------------- 欢迎学生界面 ----------------
当前日期: 2018-02-11 15:21:521】  查询个人详情
【2】  交学费
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: b

--------------- 欢迎进入学生系统 ----------------
当前日期: 2018-02-11 15:21:521】  注册
【2】  登录系统
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: b

--------------- 欢迎进入选课系统 ----------------
当前日期: 2018-02-11 15:21:521】  管理员系统
【2】  学生系统
【3】  老师系统
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 3
请输入您的姓名: alex
请输入您的密码: alex
teacher_info =  {class_record: [], name: alex, sex: male, pass_word: alex, school_name: 北京, age: 20, greade_list: {python-1: python-1}}

--------------- 欢迎进入教师界面 ----------------
当前日期: 2018-02-11 15:21:521】  查询个人信息
【2】  查询所管班级
【3】  选择班级上课
#【4】  评分
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 2
您所教的班级如下:
python-1

--------------- 欢迎进入教师界面 ----------------
当前日期: 2018-02-11 15:21:521】  查询个人信息
【2】  查询所管班级
【3】  选择班级上课
#【4】  评分
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 3
您所教的班级如下: 
python-1
请选择上课的班级: python-1
上课成功

--------------- 欢迎进入教师界面 ----------------
当前日期: 2018-02-11 15:21:521】  查询个人信息
【2】  查询所管班级
【3】  选择班级上课
#【4】  评分
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: q
----------------------- 拜拜 -----------------------
[email protected]:~/data/xuanke$ ls
bin  conf  core  db
[email protected]:~/data/xuanke$ 
[email protected]:~/data/xuanke$ du -sh *
8.0K    bin
24K    conf
112K    core
24K    db
[email protected]:~/data/xuanke$ tar zcvf db.tar.gz db/
db/
db/student.txt
db/teacher.txt
db/course.txt
db/grade.txt
db/school.txt
[email protected]:~/data/xuanke$ sz db.tar.gz 

[email protected]:~/data/xuanke$ ls
bin  conf  core  db  db.tar.gz
[email protected]:~/data/xuanke$ cd co
-bash: cd: co: No such file or directory
[email protected]:~/data/xuanke$ cd core/
[email protected]:~/data/xuanke/core$ ls
common.py       GradesClass.py  main.py      ReadDb.py       SchoolPeopleBase.py  TeacherClass.py
CourseClass.py  __init__.py     __pycache__  SchoolClass.py  StudentClass.py
[email protected]:~/data/xuanke/core$ vim TeacherClass.py 
#【4】  评分
--------------------------------------------------
请选择要进入的系统序号<b返回|q退出>: q
----------------------- 拜拜 -----------------------
[email protected]:~/data/xuanke$ ls
bin  conf  core  db
[email protected]:~/data/xuanke$ 
[email protected]:~/data/xuanke$ du -sh *
8.0K    bin
24K    conf
112K    core
24K    db
[email protected]:~/data/xuanke$ tar zcvf db.tar.gz db/
db/
db/student.txt
db/teacher.txt
db/course.txt
db/grade.txt
db/school.txt
[email protected]:~/data/xuanke$ sz db.tar.gz 
[email protected]:~/data/xuanke$ ls
bin  conf  core  db  db.tar.gz
[email protected]:~/data/xuanke$ cd co
-bash: cd: co: No such file or directory
[email protected]:~/data/xuanke$ cd core/
[email protected]:~/data/xuanke/core$ ls
common.py       GradesClass.py  main.py      ReadDb.py       SchoolPeopleBase.py  TeacherClass.py
CourseClass.py  __init__.py     __pycache__  SchoolClass.py  StudentClass.py
[email protected]:~/data/xuanke/core$ vim TeacherClass.py 
[email protected]:~/data/xuanke/core$ ^C
[email protected]:~/data/xuanke/core$ vim StudentClass.py 
[email protected]:~/data/xuanke$ du -sh *
8.0K    bin
24K    conf
112K    core
24K    db
[email protected]:~/data/xuanke$ tar zcvf db.tar.gz db/
db/
db/student.txt
db/teacher.txt
db/course.txt
db/grade.txt
db/school.txt
[email protected]:~/data/xuanke$ sz db.tar.gz 
[email protected]:~/data/xuanke$ ls
bin  conf  core  db  db.tar.gz
[email protected]:~/data/xuanke$ cd co
-bash: cd: co: No such file or directory
[email protected]:~/data/xuanke$ cd core/
[email protected]:~/data/xuanke/core$ ls
common.py       GradesClass.py  main.py      ReadDb.py       SchoolPeopleBase.py  TeacherClass.py
CourseClass.py  __init__.py     __pycache__  SchoolClass.py  StudentClass.py
[email protected]:~/data/xuanke/core$ vim TeacherClass.py 
[email protected]:~/data/xuanke/core$ ^C
[email protected]:~/data/xuanke/core$ vim StudentClass.py 
[email protected]:~/data/xuanke/core$ 
[email protected]:~/data/xuanke/core$ 
[email protected]:~/data/xuanke/core$ 
[email protected]:~/data/xuanke/core$ 
[email protected]:~/data/xuanke/core$ 
[email protected]:~/data/xuanke/core$ 
[email protected]:~/data/xuanke/core$ 
[email protected]:~/data/xuanke/core$ 
[email protected]:~/data/xuanke/core$ cd ..
[email protected]:~/data/xuanke$ python3 bin/run.py 
管理员默认账号是root  密码是: root

--------------- 欢迎进入选课系统 ----------------
当前日期: 2018-02-11 15:33:021】  管理员系统
【2】  学生系统
【3】  老师系统
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 2

--------------- 欢迎进入学生系统 ----------------
当前日期: 2018-02-11 15:33:021】  注册
【2】  登录系统
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 2     
请输入您的姓名: 朵朵    
请输入您的密码: duoduo
登录成功

--------------- 欢迎学生界面 ----------------
当前日期: 2018-02-11 15:33:021】  查询个人详情
【2】  交学费
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 1

        亲爱的同学 朵朵 你好,你详细信息如下
        姓    名:  朵朵
        性    别:  female
        年    龄:  3
        所在学校:  北京 
        所在班级:  linux     
                

--------------- 欢迎学生界面 ----------------
当前日期: 2018-02-11 15:33:021】  查询个人详情
【2】  交学费
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 2
学费已交,无需再交

--------------- 欢迎学生界面 ----------------
当前日期: 2018-02-11 15:33:021】  查询个人详情
【2】  交学费
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: q
----------------------- 拜拜 -----------------------
[email protected]:~/data/xuanke$ python3 bin/run.py 
管理员默认账号是root  密码是: root

--------------- 欢迎进入选课系统 ----------------
当前日期: 2018-02-11 15:33:201】  管理员系统
【2】  学生系统
【3】  老师系统
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 3
请输入您的姓名: alex
请输入您的密码: alex

--------------- 欢迎进入教师界面 ----------------
当前日期: 2018-02-11 15:33:201】  查询个人信息
【2】  查询所管班级
【3】  选择班级上课
#【4】  评分
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 1

亲爱的老师 alex 你好,你详细信息如下
姓    名:  alex
性    别:  male
年    龄:  20
所在学校:  北京        
        

--------------- 欢迎进入教师界面 ----------------
当前日期: 2018-02-11 15:33:201】  查询个人信息
【2】  查询所管班级
【3】  选择班级上课
#【4】  评分
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 2
您所教的班级如下:
python-1

--------------- 欢迎进入教师界面 ----------------
当前日期: 2018-02-11 15:33:201】  查询个人信息
【2】  查询所管班级
【3】  选择班级上课
#【4】  评分
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: 3
您所教的班级如下: 
python-1
请选择上课的班级: python
您输入班级有问题,请重新输入
您所教的班级如下: 
python-1
请选择上课的班级: python-1    
上课成功

--------------- 欢迎进入教师界面 ----------------
当前日期: 2018-02-11 15:33:201】  查询个人信息
【2】  查询所管班级
【3】  选择班级上课
#【4】  评分
--------------------------------------------------

请选择要进入的系统序号<b返回|q退出>: q
----------------------- 拜拜 -----------------------
[email protected]:~/data/xuanke$ ls
bin  conf  core  db  db.tar.gz
[email protected]:~/data/xuanke$ rm db.tar.gz 
[email protected]:~/data/xuanke$ ls
bin  conf  core  db
[email protected]:~/data/xuanke$ rz -E
rz waiting to receive.
[email protected]:~/data/xuanke$ ls
bin  conf  core  course_selection_system.bmp  db
[email protected]:~/data/xuanke$ tree .
.
├── bin
│?? └── run.py
├── conf
│?? ├── __init__.py
│?? ├── __pycache__
│?? │?? ├── __init__.cpython-35.pyc
│?? │?? └── settings.cpython-35.pyc
│?? └── settings.py
├── core
│?? ├── common.py
│?? ├── CourseClass.py
│?? ├── GradesClass.py
│?? ├── __init__.py
│?? ├── main.py
│?? ├── __pycache__
│?? │?? ├── common.cpython-35.pyc
│?? │?? ├── CourseClass.cpython-35.pyc
│?? │?? ├── GradesClass.cpython-35.pyc
│?? │?? ├── __init__.cpython-35.pyc
│?? │?? ├── main.cpython-35.pyc
│?? │?? ├── ReadDb.cpython-35.pyc
│?? │?? ├── SchoolClass.cpython-35.pyc
│?? │?? ├── SchoolPeopleBase.cpython-35.pyc
│?? │?? ├── StudentClass.cpython-35.pyc
│?? │?? └── TeacherClass.cpython-35.pyc
│?? ├── ReadDb.py
│?? ├── SchoolClass.py
│?? ├── SchoolPeopleBase.py
│?? ├── StudentClass.py
│?? └── TeacherClass.py
├── course_selection_system.bmp
└── db
    ├── course.txt
    ├── grade.txt
    ├── school.txt
    ├── student.txt
    └── teacher.txt

6 directories, 31 files

[END] 2018/2/11 15:36:15
测试记录

以上是关于选课系统的主要内容,如果未能解决你的问题,请参考以下文章

JAVA | 学生选课系统

自制简单选课系统模拟代码

XK关系型学生选课数据库,关系如下:

面向对象的应用:学生选课系统

数据库实验(学生选课系统)

选课系统作业