Java程序设计大作业2 - 公选课选课系统
1.功能调查与系统功能框架图
由于我们学校的选课系统目前无法进入,所以只能拿网络图片进行代替。
可以看到选课需要能看到该课程的任课教师、上课时间和选课人数等,同时在选完课后学生也可以查看自己选了什么课、自己的课程表。
系统的主要功能如上图,选课系统主要由学生和教师进行使用。
对教师来说,老师可以查看自己的教学表,知道自己在哪些时候有什么课,可以往自己的没有排课的时间添加公选课供学生选择。
对学生来说,学生需要能看到所有的可选课程并进行选择,能够查看自己的课程表,取消自己的选课操作。
2.类的设计
CoursesDAOListImpl、CoursesDAOArrayImpl分别为利用list和数组实现CoursesDAO接口
Users中会根据用户名去获取对应用户的课程表Table,其中会运用到CoursesDAO部分去搜索该课程Course的信息
Table中使用list来储存用户选择的课程Course,之后也会利用该list绘制学生的课程表
3.类的说明
-
Course课程类
在课程类中,主要属性有课程编号、课程名字、教师、上课时间(周几第几节)。
主要方法均为自动生成的setter/getter、equals等,故不多做介绍。 -
Table课程表类
在该类中主要属性有使用List存储的Course,用于记录该用户保存的课程。在这里其实也可以使用Map进行储存,方便判断是否有重复课程添加。
该类中,除了添加、删除、寻找课程等方法外,还有存储课程的方法,可以保存该用户的课程信息到文件中,在下次使用程序时可以在此基础上进行操作。
方法首先新建了temp文件,将非该用户的信息保存不动,再根据该用户Course的List保存课程,这样文件中每一行会以 用户名 密码 所选课程编号 的顺序进行保存(当该用户没有保存课程时会写入-1),方便读取,然后再将原本的users文件删除,将temp文件转成新的users文件。 -
Users用户类
Users类中只有一个privilege属性,当用户为学生时为false(进入学生系统),当用户为老师时为true(进入教师系统)
在类中只有注册、登录、储存用户课程三个方法。三个方法都围绕着users.txt文件进行,文件中内容格式见上一个类。
老师的教学课程之后会单独写出一个courses.txt文件,以 教师名字 课程编号 课程名 上课时间 选课人数 的格式进行储存。
4.包的规划设计
目前一共只有三个包:
dao包:课程course的DAO接口及其实现部分的类存在这里
gui包:界面设计的类都在这里,从上到下依次为选课界面表格、主界面、课程表表格、用户登录界面
system包:核心部分数据放在这里,包括课程类Course、课程表类Table、用户类Users,以及用于测试的main方法
5.特色
-
是否使用DAO模式?带来了什么好处?
目前课程信息打算使用dao模式进行存储,当前的程序中还只有使用array和list两种实现。
但由于还存在教师端口未全部实现,所以我打算之后添加文件的方式进行储存更为贴近现实,也方便数据的管理,建立courses.txt文件,直接管理和储存,读取老师的教学表时也能同时做到。
之后如果有时间学习MySQL的话会尝试利用数据库完成DAO模式。
使用DAO模式实现了数据逻辑的分离、将代码进行封装,即使存储方式不同但也能实现相同的功能(虽然这点还不是很能体现) -
是否使用MVC模式?哪里体验?
也许算有使用,但使用的不是很好。
View:用户界面——有初步的给用户进行操作的gui界面
Model:程序中需要操作的数据或信息——目前主要是课程表类,用户的课程信息需要进行操作
Controller:根据用户在View中的操作,在Model中进行相应操作,产生最终结果——例如程序中的添加课程:用户在课程表视图窗中双击选择课程,点击确认添加后,向储存用户课程信息的list中加入该课程,更新课程表视窗,显示新加入的课程 -
是否进行数据持久化(数据存储)?准备使用什么方案?
目前实现了只用户信息的储存,之后会添加课程信息的储存,存储的方式是利用txt文件进行读写。在之后如果有时间学习MySQL的话可以尝试改用数据库进行储存,也可以同时更新DAO模式 -
是否使用阿里巴巴代码规范扫描插件对项目代码进行扫描?
使用了,几个修改如下:
if/else/do/while语句必须使用大括号(全是这个修改,这里挑选一个),修改前:
修改后:
变量命名没有使用驼峰命名法,修改前:
修改后:
-
是否使用Git管理代码?
git仓库地址 -
系统的初步演示
-
其他特色部分
说实话没有特别的,只有用户信息实时保存,下次登录也能接着用可能也算是特色吧。。
6.其他说明
- 目前进度
- 学生部分功能已经基本实现,学生可以查看所有公选课,并进行课程选择,信息文件会及时保存,下次登录也能查看
- 学生可以通过课程表查看自己所有课程,并双击课程进行删除操作。
- 接下来的目标
- 增加选课人数、已选人数等属性,更贴近真实样例
- 添加在学生选课时检查课程表,判断是否有课程冲突的功能
- 完成老师端口的所有功能
- 尝试创建并利用courses.txt文件等来辅助老师端口的功能实现