python初学——面向对象编程做业:学校选课系统

做业需求

  1. 建立北京、上海 2 所学校
  2. 建立linux , python , go 3个课程,linuxpy在北京开, go 在上海开
  3. 课程包含,周期,价格,经过学校建立课程
  4. 经过学校建立班级,班级关联课程、讲师
  5. 建立学员时,选择学校,关联班级
  6. 建立讲师角色时要关联学校,
  7. 提供两个角色接口
    7.1. 学员视图,能够注册,交学费,选择班级,
    7.2. 讲师视图,讲师可管理本身的班级,上课时选择班级,查看班级学员列表,修改所管理的学员的成绩
    7.3. 管理视图,建立讲师,建立班级,建立课程
  8. 上面的操做产生的数据都经过pickle序列化保存到文件里

需求模型

经过对如上需求的解读,我整理出以下需求模型。python

用例名

选课系统linux

场景

  • when:任意时间
  • where:老男孩
  • who:学生、讲师、管理员

用例描述

  • 管理员能够建立学校。学校包含:名字、城市、地址。如:上海、北京、等(管理员本身建立其余地方的学校)
  • 管理员建立的课程。课程包含:名称、周期、价格、大纲。如:python,go,linux(课程与学校关联)
  • 管理员建立班级。班级包含:名称、上课方式(脱产、周末、线上)、课程、讲师、开课日期、学员列表。如:python周末18期,python脱产7期,linux架构35期(班级与课程、讲师关联)
  • 管理员建立讲师。讲师包含:名字、性别、年龄、学校。如:alex,egon,wupeiqi,yuanhao(讲师关联学校)
  • 管理员建立学员。
  • 讲师查看学员列表。(学员列表与班级关联)
  • 讲师修改管理的学员的成绩。
  • 学员注册。包含:名字、性别、年龄、等
  • 学员查询可上课程
  • 学员选课,选择学校、课程,并付款。
  • 学员查询本身学习记录。学习记录包含:成绩

用户价值

完成一套可运行的选课管理系统,解决人工管理上下课的难度。git

约束

暂无github

建模设计

将需求模型继续进行整理。整理出以下建模设计的内容。数据库

关键字

学校、课程、班级、讲师、上课记录、学员、学习记录、做业、成绩、管理员、架构

关键字分析

人类:属性有名字、性别、年龄
学生类:继承人类。属性有课程、班级、成绩
老师类:继承人类。属性有课程、班级
学校类:属性有学校名、城市、地点、
课程类:属性有课程名称、价格、周期
班级类:属性有班级名、教师、开课日期、上课方式
帐号类:属性有帐号名、密码、状态、角色。
学习记录类:属性有成绩
管理员类:继承与站帐号类
视图类:处理管理员、老师、学员的全部视图上的操做单元测试

UML流程图

图片描述

目录结构

│  README.md
├─bin                   # 执行文件目录
│  │    scs.py          # 执行文件
│  └─   __init__.py
│
├─conf                  # 配置文件目录
│  │  settings.py       # 配置文件
│  └─  __init__.py
│
├─core                  # 核心执行文件目录
│  │  main.py           # 主程序文件
|  |  logger.py         # 日志程序文件
│  └─  __init__.py
├─db                    # 数据库目录
│  ├─accounts           # 帐号数据所在目录
│  └─base               # 学校等基础数据所在目录
├─lib                   # 库文件目录
│  │  accounts.py       # 帐号类
│  │  classes.py        # 班级类
│  │  courses.py        # 课程类
│  │  db.py             # 数据库类文件
│  │  persion.py        # 人类文件
│  │  schools.py        # 学校类文件
│  │  study_record.py   # 学习记录类嗡
│  │  views.py          # 视图类文件
│  │  __init__.py
└─log                   # 日志文件目录

程序主体

具体代码能够从github中下载:
SCS学习

单元测试

因为做业时间有限,没有编写单元测试使用的程序脚本。故直接经过模拟用户使用的方式来进行测试。测试

1、管理员功能测试

执行scs.py文件后进入主页面:输入3进入管理员界面。ui

===============欢迎进入老男孩学校===============

                1. 学生登陆通道
                2. 教师登陆通道
                3. 管理员登陆通道
                4. 退出
                
================================================
        
>>:3

进入管理员视图:管理员能够进行学校管理,学员管理。也能够修改本身的密码。
当进入这些视图前,若是管理员没有登陆会进行一次登陆认证。如已经登陆就不会再次认证。

===============欢迎进入管理视图===============

               1. 学校管理
               2. 学员管理
               3. 修改密码
               4. 注销
               
==============================================
        
>>:

学校管理视图:能够进行学校的建立、课程的建立、讲师的建立、和班级的建立。
咱们这里直接就根据需求:

  1. 建立beijing和shanghai两所学校。
  2. 建立linux , python , go 3个课程,linuxpy在北京开, go 在上海开。

    • linux课程价格8000,周期35
    • python课程价格8000,周期18
    • go课程价格10000,周期20
  3. 建立讲师alex、egon属于北京校区,yuanhao属于上海校区。
  4. 建立分别为3个课程建立班级 alex为python班级的讲师、egon为linux班级的讲师、yuanhao为go班级的讲师
>>:1
Please input username:admin
Please input password:admin
2018-04-09 14:18:51,475 - access - INFO - [admin] Login Success!
[admin] Login Success!

===============欢迎进入管理视图===============

               1. 建立学校
               2. 建立课程
               3. 建立讲师
               4. 建立班级
               5. 返回
               
==============================================
        
>>:1
================建立学校=================
Please input name of school:beijing
Please input city of school:beijing
Please input address of school:beijing
Create school success!

===============欢迎进入管理视图===============

               1. 建立学校
               2. 建立课程
               3. 建立讲师
               4. 建立班级
               5. 返回
               
==============================================
        
>>:1
================建立学校=================
Please input name of school:shanghai
Please input city of school:shanghai
Please input address of school:shanghai
Create school success!

===============欢迎进入管理视图===============

               1. 建立学校
               2. 建立课程
               3. 建立讲师
               4. 建立班级
               5. 返回
               
==============================================
        
>>:2
================建立课程=================
Please input course name:python
Please input price:8000
Please input term:18
Please input associated school:beijing
Create course success!

===============欢迎进入管理视图===============

               1. 建立学校
               2. 建立课程
               3. 建立讲师
               4. 建立班级
               5. 返回
               
==============================================
        
>>:2
================建立课程=================
Please input course name:linux
Please input price:8000
Please input term:35
Please input associated school:beijing
Create course success!

===============欢迎进入管理视图===============

               1. 建立学校
               2. 建立课程
               3. 建立讲师
               4. 建立班级
               5. 返回
               
==============================================
        
>>:2
================建立课程=================
Please input course name:go
Please input price:10000
Please input term:20
Please input associated school:shanghai
Create course success!

===============欢迎进入管理视图===============

               1. 建立学校
               2. 建立课程
               3. 建立讲师
               4. 建立班级
               5. 返回
               
==============================================
        
>>:3
================建立老师=================
Please input username:alex
Please input password:alex123
Please input password confirmation:alex123
Please input associated school:beijing
Registry Success!

===============欢迎进入管理视图===============

               1. 建立学校
               2. 建立课程
               3. 建立讲师
               4. 建立班级
               5. 返回
               
==============================================
        
>>:3
================建立老师=================
Please input username:egon
Please input password:egon123
Please input password confirmation:egon123
Please input associated school:beijing
Registry Success!

===============欢迎进入管理视图===============

               1. 建立学校
               2. 建立课程
               3. 建立讲师
               4. 建立班级
               5. 返回
               
==============================================
        
>>:3
================建立老师=================
Please input username:yuanhao
Please input password:yuanhao123
Please input password confirmation:yuanhao123
Please input associated school:shanghai
Registry Success!

===============欢迎进入管理视图===============

               1. 建立学校
               2. 建立课程
               3. 建立讲师
               4. 建立班级
               5. 返回
               
==============================================
        
>>:4
================建立班级=================
Please input class name:python18
Please input associated school:beijing
Please input associated course:python
Please input associated teacher:alex
Create class success!

===============欢迎进入管理视图===============

               1. 建立学校
               2. 建立课程
               3. 建立讲师
               4. 建立班级
               5. 返回
               
==============================================
        
>>:4
================建立班级=================
Please input class name:linux35
Please input associated school:beijing
Please input associated course:linux
Please input associated teacher:egon
Create class success!

===============欢迎进入管理视图===============

               1. 建立学校
               2. 建立课程
               3. 建立讲师
               4. 建立班级
               5. 返回
               
==============================================
        
>>:4
================建立班级=================
Please input class name:go20
Please input associated school:shanghai
Please input associated course:go
Please input associated teacher:yuanhao
Create class success!

===============欢迎进入管理视图===============

               1. 建立学校
               2. 建立课程
               3. 建立讲师
               4. 建立班级
               5. 返回
               
==============================================
        
>>:5

学员管理视图:能够查看学校的学员状况,并能够分配已经报名课程的学员到具体的班级中。咱们已经注册了一个henry的学生,这个学生报名了python的课程,因此管理员须要将他分配到python18这个班级中。

===============欢迎进入管理视图===============

               1. 学员信息
               2. 分配班级
               3. 返回
               
==============================================
        
>>:1
Please input school:beijing

==================学生信息==================

         ID:         027e4180beedb29744413a7ea6b84a42
         Account:    henry
         Type:       3
         Status:      0
         School:      beijing
         Course:      python
         Class:       未分配班级
         Teacher:     未分配导师
         
============================================

===============欢迎进入管理视图===============

               1. 学员信息
               2. 分配班级
               3. 返回
               
==============================================
        
>>:2
================分配班级=================
Please input name of school:beijing
Please input account of student:henry
Please input name of course:python
Please input name of class:python18
Students have bound courses!

2、学员功能测试

学员视图界面

===============欢迎进入学员视图===============

               1. 注册帐号
               2. 填写帐户信息
               3. 查看帐户信息
               4. 选择课程并付费
               5. 查看学习记录
               6. 修改密码
               7. 注销
               
==============================================

学员能够注册帐号,也能够补全本身的我的信息。这些基本功能,这里就不进行详细的测试了。主要看一下选课和查看学习记录。我仍是使用henry学员,henry再报名一个linux课程。来实现报名,因为henry的成绩老师尚未下发分数,因此暂时还看不到成绩。

===============欢迎进入学员视图===============

               1. 注册帐号
               2. 填写帐户信息
               3. 查看帐户信息
               4. 选择课程并付费
               5. 查看学习记录
               6. 修改密码
               7. 注销
               
==============================================
    
>>:4
Please input username:henry
Please input password:henry123
2018-04-09 15:15:01,863 - access - INFO - [henry] Login Success!
[henry] Login Success!
================购买课程=================
Please choise school:beijing
Please choise course:linux
Please pay tuition [8000 RMB]:8000
The success of the course purchase! 

===============欢迎进入学员视图===============

               1. 注册帐号
               2. 填写帐户信息
               3. 查看帐户信息
               4. 选择课程并付费
               5. 查看学习记录
               6. 修改密码
               7. 注销
               
==============================================
    
>>:5

================学习记录=================

            Score:  成绩未公布

=========================================

3、教师功能测试

教师视图

===============欢迎进入教师视图===============

               1. 填写帐户信息
               2. 查看帐户信息
               3. 班级管理
               4. 修改密码
               5. 注销
               
==============================================

咱们主要来看一下班级管理功能。班级管理功能能够查看本身班级的学生、并未学生下发成绩

===============欢迎进入教师视图===============

               1. 填写帐户信息
               2. 查看帐户信息
               3. 班级管理
               4. 修改密码
               5. 注销
               
==============================================
    
>>:3
Please input username:alex
Please input password:alex123
2018-04-09 15:17:51,271 - access - INFO - [alex] Login Success!
[alex] Login Success!

===============欢迎进入管理视图===============

               1. 选择班级
               2. 学生列表
               3. 批改做业
               4. 返回

==============================================
            
>>:1
Please input name of class:python18
Choice class success!

===============欢迎进入管理视图===============

               1. 选择班级
               2. 学生列表
               3. 批改做业
               4. 返回

==============================================
            
>>:2
================班级学生列表=================
Class: python18
Students: 
henry
=============================================

===============欢迎进入管理视图===============

               1. 选择班级
               2. 学生列表
               3. 批改做业
               4. 返回

==============================================
            
>>:3
================做业批改=================
Please input name of student:henry
Please input score of student:95
Confirm input "yes". Back off input "b":yes
[henry] homework to be corrected
相关文章
相关标签/搜索