• Java程序设计


    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文件等来辅助老师端口的功能实现
  • 相关阅读:
    【sqlite】3.ADO.NET实体数据模型增删改查
    【sqlite】1.Vs2019 ado.net实体模型安装教程
    【sqlite】2.Nuget下载好Sqlite.EF6后出现运行报错处理办法
    WPF-数据绑定:日期时间格式
    Entity Framework Database.SetInitializer的几种参数
    收藏
    Sql时间函数
    SQL中的循环、for循环、游标
    C# DateTime 时间格式
    js setInterval()函数 [倒计时用]
  • 原文地址:https://www.cnblogs.com/silverash/p/14106535.html
Copyright © 2020-2023  润新知