python面向对象——模拟学生选课系统

模拟学生选课系统

面向对象练习,模拟学生选课系统,尚有诸多不完善之处,仍需完善。

需求分析:

利用规范化目录完成一个学生选课系统
角色:学生/管理员

功能分析:
用户登陆之后就可以直接判断用户身份(是学生还是管理员)
学生登陆之后有以下几个功能:
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 = nameself.courses = []def show_courses(self):  #查看所有课程with open(Courses_Path,'r',encoding='utf-8') as f:num = 1for i in f:print(num,i.strip())num +=1def select_course(self)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部