模拟学生选课系统
面向对象练习,模拟学生选课系统,尚有诸多不完善之处,仍需完善。
需求分析:
利用规范化目录完成一个学生选课系统
角色:学生/管理员
功能分析:
用户登陆之后就可以直接判断用户身份(是学生还是管理员)
学生登陆之后有以下几个功能:
1,察看所有课程
2,选择课程
3,查看所选课程
4,退出程序
管理员登陆之后有以下几个功能:
1,创建课程
2,创建学生账号
3,察看所有课程
4,察看所有学生
5,察看所有学生的选课情况
必须包含的属性如下
课程属性:课程名,价格,周期,老师
学生属性:姓名,所选课程
管理员属性:姓名
目录设置:
blog # 项目名称
├─ README.md
─ bin # 存放启动文件
─ start.py # 启动文件
─ conf # 存放配置文件
— settings.py #配置文件
─ core # 存放主逻辑
— src.py # 主逻辑
─ lib # 存放公共组件
— common.py # 公共组件
─ db # 存放数据
─ userinfo # 账号密码
—log # 存放日志
—alex_log #日志
— meet_log #日志
settings.py: 配置文件,放置一些项目中需要的静态参数,比如文件路径,数据库配置,软件的默认设置等。
common.py: 公共组件文件,放置一些常用的公共组件函数,并不是我们核心逻辑的函数,而是服务于整个程序中的公用的插件,程序中需要即调用。比如装饰器,有些函数是需要这个装饰器认证的,还有密码加密功能,序列化功能,日志功能等。
src.py: 这个文件主要存放的就是核心逻辑功能。
start.py: 项目启动文件,相当于开关,启动整个项目。
log文件:存储log日志的文件,日志主要是供开发人员使用,开发人员对服务器做的一些操作都会记录到日志中,以便开发者浏览查询。
代码划分
start.py
import sys
import os
BATH_DIR = os.path.dirname(os.path.dirname(__file__)) # 获取本文件的绝对路径
sys.path.append(BATH_DIR) # 添加文件路径
from 选课系统.core.src import func
if __name__ == '__main__':
func() # 启动文件,调用核心逻辑中的func()函数
settings.py
from 选课系统.db import * # 从数据目录中导入文件
Manager_Info_Path = r'E:\S-27\选课系统\db\manager_info'
Student_Info_Path = r'E:\S-27\选课系统\db\student_info'
Courses_Path = r'E:\S-27\选课系统\db\courses.txt'
Student_Courses_Path = r'E:\S-27\选课系统\db\student_courses'
src.py
from 选课系统.conf import settings
# 从配置文件导入存储信息文件的路径
Courses_Path = settings.Courses_Path
Student_Courses_Path = settings.Student_Courses_Path
Student_Info_Path = settings.Student_Info_Path
Manager_Info_Path = settings.Manager_Info_Path
# 把代码中的文件名替换为文件路径
class Student:
def __init__(self,name):
self.name = name
self.courses = []
def show_courses(self): #查看所有课程
with open(Courses_Path,'r',encoding='utf-8') as f:
num = 1
for i in f:
print(num,i.strip())
num +=1
def select_course(self)