CourseSystem(超级详解,未完待续)

这也是一个python基础必做项目,拿来练手+1,这个选课系统里主要是运用面向对象的思想进行设计。

ATM+购物车

这个主要是锻炼除面向对象以外全部python基础(函数+模块+文件)的一个练手项目。

进度:

  • 2021.1.9搭建程序框架

文章目录

  • 一、项目需求
  • 二、需求分析以及创建工程
    • 1.一个项目怎么从无到有
    • 2.需求分析
    • 3.架构设计-MVC三层架构
    • 4.软件开发目录
    • 5.核心逻辑实现及各视图层搭建
      • 1.主视图
      • 2.学生视图
      • 3.管理员视图
      • 4.教师视图
  • 三、各个功能实现
    • 1.学生功能
    • 2.管理员功能
    • 3.教师功能

一、项目需求

角色: 学校、学员、课程、讲师、管理员
要求:

  1. 创建滨海、河西、小黑屋 3 所学校 —> 管理员创建学校
  2. 创建前端、后端、算法、AI 4个课程 ,AI在滨海开,后端在河西开,前端和算法在小黑屋开
  3. 课程包含,周期,价格,通过学校创建课程
  4. 创建讲师
  5. 创建学员时,选择学校,关联班级
  6. 创建讲师
  7. 提供三个角色接口
    7.1 学员视图, 可以注册,选择课程(等同于选择班级)
    7.2 讲师视图, 讲师可管理自己的课程, 上课时选择班级,
    查看班级学员列表 , 修改所管理的学员的成绩
    7.3 管理视图,创建讲师, 创建班级,创建课程
  8. 上面的操作产生的数据都通过pickle序列化保存到文件里
    - pickle 可以帮我们保存对象

二、需求分析以及创建工程

1.一个项目怎么从无到有

1.客户提出需求,公司派人(一般一个前端、一个后端)和用户商谈,确定项目功能、开发周期、价格等
2.公司内部开会,得到一个开发文档,进行架构设计。
3.交给不同岗位的程序员开发
4.测试
5.上线

  • 不同的岗位:
    • UI界面设计:

      • 设计软件的布局,会分局软件的外观切成一张张图片。
    • 前端:

      • 拿到UI交给他的图片,然后去搭建网页面。
      • 设计一些页面中,哪些位置需要接收数据,需要进行数据交互。
    • 后端:

      • 直接核心的业务逻辑,调度数据库进行数据的增删查改。
    • 测试:

      • 会给代码进行全面测试,比如压力测试,界面测试(CF卡箱子)。
    • 运维:

      • 部署项目。

2.需求分析

  • 管理视图
    - 1.注册
    - 2.登录
    - 3.创建学校
    - 4.创建课程(先选择学校)
    - 5.创建讲师
  • 学员视图
    - 1.注册
    - 2.登录功能
    - 3.选择校区
    - 4.选择课程(先选择校区,再选择校区中的某一门课程)
    - 学生选择课程,课程也选择学生
    - 5.查看分数
  • 讲师视图
    - 1.登录
    - 2.查看教授课程
    - 3.选择教授课程
    - 4.查看课程下学生
    - 5.修改学生分数

3.架构设计-MVC三层架构

  • 用户视图层
    - 用于与用户进行交互的
    - 小的逻辑判断,比如注册功能中两次密码是否一致的校验
  • 逻辑接口层
    - 核心业务逻辑的处理
  • 数据处理层
    - 做数据的处理,比如数据的 增、删、查、改

CourseSystem(超级详解,未完待续)_第1张图片

4.软件开发目录

start.py:项目执行文件
README.txt:项目需求以及如何用等文本信息
core:项目的核心模块,内有src.py实现核心逻辑,对应着视图层
conf:项目的配置信息模块,内有settings.py存储项目配置信息
db:项目的数据处理模块,内有db_handler.py对数据进行增删改查,对应着数据处理层
lib:项目的公共模块,内有common.py,功能供项目任何地方使用(在ATM+购物车中有记录流水这一功能,详情请看本文文首)
interface:项目的接口模块,内有各种接口,对应着接口层

CourseSystem(超级详解,未完待续)_第2张图片

5.核心逻辑实现及各视图层搭建

核心逻辑分析
搭建各个视图有点像重复做一件事

一点小细节:
导入模块分为相对导入和绝对导入,相对导入仅限于包内模块互相导入,绝对导入通用性更大
但绝对导入是以执行文件的sys.path为基准进行搜索的,鉴于此,我将start.py移动到bin目录下,更好的理解这个点。
CourseSystem(超级详解,未完待续)_第3张图片

conf下的setting.py增加:

import os

#文件根路径
BASE_PATH = os.path.dirname(os.path.dirname(__file__))

bin下start.py

import sys
from conf import settings
sys.path.append(settings.BASE_PATH)
from core import  src

if __name__ == '__main__':
        src.run()

1.主视图

'''
主视图层
'''

from core import admin
from core import student
from core import teacher

#功能字典
func_dic = {
     
    '0':['退出',None],
    '1':['学生功能',student.stu_view],
    '2':['管理功能',admin.admin_view],
    '3':['教师功能',teacher.tea_view],
}

def run():
    while True:
        #1.打印主视图功能
        print('Welcome to my CourseSystem!'.center(50,'='))
        for k,v in func_dic.items():
            print(k,v[0])
        print('THE END'.center(50, '='))
        #2.接受用户输入,选择身份
        choice = input('请输入您想要的功能:').strip()

        #3.若用户输入0,退出系统
        if choice == '0':
            break

        #4.检验用户输入的合法性
        if choice not in ['0','1','2','3']:
            print('请输入0-3数字!')
            continue
        else:
            func_dic[choice][1]()

2.学生视图

'''
学生视图层
'''

'''
学员视图
- 1.注册
- 2.登录功能
- 3.选择校区
- 4.选择课程(先选择校区,再选择校区中的某一门课程)
- 学生选择课程,课程也选择学生
- 5.查看分数
'''



#1.注册
def register():
    ...
#2.登录功能
def login():
    ...
#3.选择校区
def choose_school():
    ...
#4.选择课程(先选择校区,再选择校区中的某一门课程)
def choose_course():
    ...
#学生选择课程,课程也选择学生
#5.查看分数'''
def check_score():
    ...

#学生功能字典
func_dic = {
     
    '0':['退出',None],
    '1':['注册',register],
    '2':['登录',login],
    '3':['选择校区',choose_school],
    '4':['选择课程',choose_course],
    '5':['查看分数',check_score],
}
#学生视图
def stu_view():
    while True:
        print('View of student'.center(50,'='))
        for k,v in func_dic.items():
            print(k,v[0])
        print('THE END'.center(50, '='))
        #2.接受用户输入,选择身份
        choice = input('请输入您想要的功能:').strip()

        #3.若用户输入0,退出系统
        if choice == '0':
            break

        #4.检验用户输入的合法性
        if choice not in ['0','1','2','3','4','5']:
            print('请输入0-3数字!')
            continue
        else:
            func_dic[choice][1]()

3.管理员视图

'''
管理视图层
'''
'''
管理视图
- 1.注册
- 2.登录
- 3.创建学校
- 4.创建课程(先选择学校)
- 5.创建讲师
'''


# - 1.注册
def register():
    ...
# - 2.登录
def login():
    ...
# - 3.创建学校
def creat_school():
    ...
# - 4.创建课程(先选择学校)
def creat_course():
    ...
# - 5.创建讲师
def creat_teacher():
    ...

#管理员功能字典
func_dic = {
     
    '0':['退出',None],
    '1':['注册',register],
    '2':['登录',login],
    '3':['创建学校',creat_school],
    '4':['创建课程',creat_course],
    '5':['创建教师',creat_teacher]
}
#学生视图
def admin_view():
    while True:
        print('View of administer'.center(50,'='))
        for k,v in func_dic.items():
            print(k,v[0])
        print('THE END'.center(50, '='))
        #2.接受用户输入,选择身份
        choice = input('请输入您想要的功能:').strip()

        #3.若用户输入0,退出系统
        if choice == '0':
            break

        #4.检验用户输入的合法性
        if choice not in ['0','1','2','3','4','5']:
            print('请输入0-3数字!')
            continue
        else:
            func_dic[choice][1]()

4.教师视图

'''
教师视图层
'''
'''
讲师视图
- 1.登录
- 2.查看教授课程
- 3.选择教授课程
- 4.查看课程下学生
- 5.修改学生分数
'''



# - 1.登录
def login():
    ...
# - 2.查看教授课程
def check_course():
    ...
# - 3.选择教授课程
def choose_course():
    ...
# - 4.查看课程下学生
def check_student():
    ...
# - 5.修改学生分数
def change_sorce():
    ...

#教师功能字典
func_dic = {
     
    '0':['退出',None],
    '1':['登录',login],
    '2':['查看教授课程',login],
    '3':['选择教授课程',choose_course],
    '4':['查看课程下学生',check_course],
    '5':['修改学生分数',change_sorce],
}
#学生视图
def tea_view():
    while True:
        print('View of teacher'.center(50,'='))
        for k,v in func_dic.items():
            print(k,v[0])
        print('THE END'.center(50, '='))
        #2.接受用户输入,选择身份
        choice = input('请输入您想要的功能:').strip()

        #3.若用户输入0,退出系统
        if choice == '0':
            break

        #4.检验用户输入的合法性
        if choice not in ['0','1','2','3','4','5']:
            print('请输入0-3数字!')
            continue
        else:
            func_dic[choice][1]()

三、各个功能实现

1.学生功能

2.管理员功能

3.教师功能

你可能感兴趣的:(项目:python基础必做项目,python)