首页 > 其他分享 >选课系统编写思路

选课系统编写思路

时间:2022-11-13 16:22:42浏览次数:34  
标签:功能 选课 老师 学生 课程 创建 编写 思路 接口函数

选课系统编写思路

一、搭建框架

  • 依旧是使用三层架构的框架来编写程序
  • 编写的时候同样使用软件开发目录规范

二、编写思路

1、创建目录及各个文件

2、之后打开settings,设置一些配置信息(路径,添加环境变量创建目录等代码都放在这里)

3、编写start文件,没什么作用,导入settings文件,然后引入src中的启动函数

4、src文件中也不放功能代码,只需要创建一个功能字典,然后把别的几个视图模块导入进来。当我们选择功能的时候只需要根据功能引入对应模块的启动函数就可以实现引用功能代码。

5、在view文件中我们编写函数获取输入,然后输出结果,中间的逻辑代码放到interface的接口函数中执行。

6、接口文件跟第三层进行操作的时候,跟之前有所区别,第三层需要有两个文件,一个是之前用到过的db_handler,一个是models。我们把所有的类定义在models中,同时在内部编写方法调用db_hander中的针对数据库进行操作的方法。

三、部分编写细节

三个视图文件admin_view,student_view,teacher_view。整体速录依旧跟之前一样,通过编写功能字典和定义启动函数,达到通过选择实现功能的目的。

1.admin

  • 管理员注册功能:就是简单的获取用户的名称和密码,之后进行简单的判断,然后导入接口函数进行判断和创建用户。创建的时候用到类名加括号的形式创建出对应的管理员对象并保存到pickle模块创建的文件中

  • 管理员注册功能:还是获取输入的名称和密码进行相应的判断,然后导入接口函数判断信息是否正确,如果符合条件就在视图文件中的log_user中记录登陆账号的名称方便后续功能的调用和判断用户是否登陆。

  • 创建学校功能:获取需要创建的学校的信息,调用接口函数判断这个学校是否已经存在,不存在就给他创建出来,但是这里要把功能整合到管理员类中,后续的操作也是一样的。

  • 删除学校功能:获取需要删除的学校的名称,接着把这些学校的名称传给接口函数判断是否有这个学校,如果有就给他调用管理员类中整合的方法把学校文件删了,同时把学校名称下创建的课程也一并删了

  • 创建课程功能:先把目前有的学校展示出来,如果没有创建学校就提示先创建学校。当我们选择了学校之后,就可以在这个学校名称下创建课程,获取需要创建的课程的名称后就可以把名称传给接口函数判断是否已经有这个课程,如果没有就创建出来,有的话就给提示

  • 删除课程功能:把目前所有的课程格式化输出展示出来,然后让管理员选择,之后简单判断一下输入是否规范,然后把数据传给接口函数删除课程,同时在学生老师和学校的信息中删除课程名称等信息

  • 创建老师功能:获取老师的名称,然后给他判断一下有没有这个老师,如没有就直接创建账号,同样是调用管理员类中的方法,然后密码设置成默认密码123

  • 删除老师账号:获取需要删除的老师的名称,判断你有没有这个老师存在,有的话删除他,然后再课程中也删除老师的信息

  • 删除学生账号:获取需要删除的学生的名称,然后导入接口判断是否存在,如果存在就删了他然后把课程中它的名字也删了

2.student

  • 学生注册功能:获取输入接受名称和密码,然后送到接口函数中判断是否存在这个学生,然后不存在的话就创建出来,创建的时候金额、课程、分数等信息使用默认信息
  • 学生登陆功能:跟管理员一样获取输入放到接口函数中判断,如果正确就用log_user的name属性记录登陆的用户名称
  • 选择学校功能:把目前有的学校展示出来让学生选择,然后调用接口函数判断学生是否已经有学校了,如果没的话给他变成选择的这个,如果有的话返回提示
  • 选择课程功能:根据学生的学校信息判断能不能选课,如果没选学校不能选课,如果选了,就把这个学校内有的课程返回出来格式化输出,让学生选择,选择的时候如果选到了重复的课程,返回提示,如果没重复就给他添加到临时的列表中保存,然后在他退出的时候给他保存到文件中(课程对象中的学生名称列表要加上名字,然后账单属性中要加上课程的价格)
  • 删除课程功能:先展示学生当前已经选的课程,然后让学生选择要删除的课程名称,接着调用接口函数删除学生对象中的课程列表里该课程的名字
  • 查看已选课程:直接调用接口文件,查看当前学生的课程列表信息
  • 学生缴费功能:调用接口函数直接计算当前学生的余额能不能支付当前的账单,如果可以直接扣款,如果不行返回提示
  • 查看缴费情况:直接调用接口函数,查看学生的账单信息(有多少学费要交)
  • 查看学生余额:调用接口函数,查看学生的余额信息
  • 学生充值功能:跟ATM一样,获取需要充值的输入,然后调用接口函数,判断格式是否正确,如果正确就给他充值进余额中

3.teacher

  • 老师登陆功能:跟其他两个一样的,获取输入然后调用接口函数判断,但是在第一次登陆的时候会进行检测,让初始密码的用户修改密码,同时密码修改后不能跟初始密码一样。然后让他在视图文件里的log_user的name属性变成当前登陆的名称
  • 老师选择课程:把所有的课程打印出来让老师选择,然后调用接口函数把课程添加到老师对象的信息中去,同时在课程中也加入老师的信息,接着保存。如果课程选重复了给出提示
  • 老师删除课程:把所有当前选的课程打印,让老师选择,然后调用接口函数删除老师选课信息中该课程的名称,同时该课程中的老师名称也要删除,然后保存
  • 老师查看已选课程:跟上面功能部分重复,打印出老师的所选课程,同样是调用接口函数来实现的
  • 老师设置学生分数:这里是统一设置所有学生的分数。先打印老师当前选择的课程,然后根据课程信息让老师设置该课程名称下所有学生的课程分数
  • 查看学生分数:这里就跟上面一样,先获取老师已经选的课程信息,然后把该课程下所有的学生的信息全部打印输出
  • 修改学生分数:也跟上面一样,获取老师的选课信息,然后老师根据课程选学生,然后修改该学生的成绩

4.common功能介绍

  • 哈希加密函数:用于加密用户的密码
  • 转化数据成浮点型:用户金额的转换,如果格式不对会返回False,对的话就把转换后的值给出去
  • 判断是否登陆的装饰器:用有参装饰器,获取在哪个视图,然后用一个小的视图字典获取视图名称,接着在内部写上判断是否有log_user的name属性,如果有就是登陆了,没有就是没有登陆,不能执行除注册和登陆外的功能

5.models功能介绍

  • 这里就是存放所有的类,其中读取数据和保存数据等功能可以放到父类base中
  • 然后一些独有功能就自己给他另外加上
  • 其中管理员那,要创建很多接口,一个管理员功能一个接口,不能直接调用别的类

6.db_handler功能介绍

  • 这里功能就跟之前一样,写保存数据到文件的函数,写读取数据的函数,只是用的是pickle模块了
  • 接着还有判断文件是否存在的函数和删除文件的函数
  • 还有一个获取文件夹下所有内容的函数

标签:功能,选课,老师,学生,课程,创建,编写,思路,接口函数
From: https://www.cnblogs.com/zhihuanzzh/p/16886186.html

相关文章

  • 系统宕机,内存溢出等典型问题排查思路及工具使用
     问题范围:平台典型后端问题,如宕机、服务响应慢、节点丢失、CPU高、内存高、数据库响应慢等。分析这类问题虽然没有固定套路,但是有大概方向。工具范围:平台自带服务质......
  • 补充一下学生选课系统的表间关系的建立
    学生选课系统--表间关系的分析以及实现那先来看一眼我一共建立了哪些表吧!1、课程信息表2、学生个人信息表3、教师个人信息表4、课程信息和学生信息多对多关系建立起来......
  • 煎熬周末之选课系统!!!!!!!!!!!!!!!!
    项目开端选课系统锻炼对三层结构掌握情况并拓展练习对各个模块运用情况,对比ATM项目虽然多了几个模块,但是并没有多出来很难理解的知识!最初听完比较懵,仔细梳理了之后,逻辑并......
  • 选课系统思路
    管理员视图注册功能:register()1.获取用户输入:用户名和密码2.接入管理员视图接口判断是否已经注册models:select_obj方法,db_handler中select函数3.保存信息:在mode......
  • Qt编写4K/8K大分辨率播放器(8K占用1%CPU)
    一、前言在经过多种内核的洗礼以后,逐渐对不同内核的不同音视频文件和视频流进行大量的对比测试,比如测试对各种格式的支持性,对各种网络流的支持程度,在同一个地址下占用的CP......
  • 学生选课系统之学生功能的实现
    学生(MyBatis版)该角色只有这两个功能与教师角色不同:所以,我接下来就只关注这两个功能的实现了!查询课程信息(里面没有很明确地指出根据啥进行查询,那我就直接按照我自己的多......
  • 学生选课系统之教师功能的实现
    教师(MyBatis版)查看个人信息(该功能主要是依靠session实现的,也算是远程传送数据吧)根据教师id(唯一性)进行查询自己的基本信息,用类封装,然后再传递到jsp页面。输出即可teach......
  • 学生选课系统之系统管理员功能的实现
    系统管理员(MyBatis版,有两个.xml文件,不要忘记配置呀!)新增学生信息addStudent.jsp<%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><%--Createdby......
  • 编写C程序,实现链队列的下列功能: 1、设计一个虚拟界面,让用户选择操作(根据提示输入数据
    编写C程序,实现链队列的下列功能: 1、设计一个虚拟界面,让用户选择操作(根据提示输入数据)2、采用模块化编程思想,编写main函数和若干子函数(实现功能)3、队列的基本功能有:......
  • 用做产品的思路来做数字化
    大华股份不仅仅是一家生产摄像头的安防企业,实际上我们是以视频为核心的智慧物联解决方案提供商和运营服务商。依托对智慧物联的深入洞察与布局,公司持续探索新兴业务,延展了......