成绩管理系统
一、开发的项目内容及要求
1、开发的项目:成绩管理系统
2、项目内容和功能描述:
某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下:
(1)每门课程都有3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的平时成绩。课程结束后进行期末考试,其成绩作为这门课程的考试成绩。
(2)学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。
(3)在记录学生成绩之前,系统需要验证这些成绩是否有效。首先,根据学生信息文件来确认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门 课程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的单元相对应,如果是,那么这些成绩是有效的,否则无效。
(4)对于有效成绩,系统将其保存在课程成绩文件中。对于无效成绩,系统会单独将其保存在无效成绩文件中,并将详细情况提交给教务处。在教务处没有给出具体处理意见之 前,系统不会处理这些成绩。
(5)若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成通知给教务处,告知该门课程的成绩已经齐全。教务处根据需要,请求系统生成相应的成绩列表,用来提交考试委员会审查。
(6)在生成成绩列表之前,系统会生成一份成绩报告给主讲教师,以便核对是否存在错误。主讲教师须将核对之后的成绩报告返还系统。
(7)根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审查。考试委员会在审查之后,上交一份成绩审查结果给系统。对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生。
一、相关工具平台简介
1、eclipse
Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。
Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,通过安装不同的插件Eclipse可以支持不同的计算机语言,比如C++和Python等开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。
2、MySQL
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
二、系统需求分析与总体设计
1、需求分析
(1)教师客户端功能
①可以更改密码。
②可以添加学生,并填写学生基本信息。
③可以根据学号查询学生基本信息及成绩。
④有权限控制,每个管理员只能管理其所在学院的信息。
⑤可以添加新课程、新班级。
⑥可以控制选课的课程范围,并可以控制选课的时间,即可以 控制选课的开始与结束。
⑦可以录入成绩,缓存成绩。检查无误后公布成绩。
(2)学生客户端功能
①学生可以查看自己的基本信息。
②学生可以查看自己的成绩。已修学分和不及格成绩信息。
③学生可以进行远程选课,并且可以查看课表。
UML用例图
系统结构图
四、数据库设计
1、数据库设计介绍
在该数据库中课程表是记录各学院所开设课程的基本信息,包括课程号,课程名,课程学分,所属专业号,所属学院号。
可选课程信息表是记录本学期安排的课程信息,包括课程号,上课时间,讲次,任课教师,还有一个用于控制选课的字段(onchosing),当该字段值为1说明该课程可选,当该字段为0时说明该课程不可选。
学生表是用来记录学生的基本信息,包括学生的学号,姓名,性别等信息。
学生用户表是用来记录学生的学号和登录密码的。
教师用户表是用来记录教师的用户名和登录密码的。
1、E-R图
3、数据表
数据库中共有九张表:
数据库中存储的信息如下:
班级表
学院表、专业表
课程表
学生表
学生用户表、教师用户表
五、系统实现
教师客户端的功能为:
其中退出模块为退出该系统
密码修改模块为修改教师的登录密码
新生报到模块为填写学生信息,增加一名新的学生
基本信息查询模块为输入学生学号,查询学生的信息
成绩查询模块为输入学生学生,查询该学生的课程成绩。
开课选项设置模块为将课程表中的课加入到可选课程信息表,并且在加入时选定上课时间以及讲次,并设置上课老师,提交该课程之后将该记录加入到可选课程信息表中选课程信息表中。同时也可以从可选课程信息表中移除课程。
添加课程模块实现往课程表中添加课程。
增加班级模块实现向该学院的某个专业添加班级。
学生客户端的功能为:
其中退出模块为退出该系统。
密码修改模块为修改当前所登录的学生的登录密码。
个人基本信息模块为查看自己的信息。
选课模块为在其所在学院开放选课时选课。
课表显示模块为显示该学生的课表。
已修课程成绩为查看该学生已经选修的课程的成绩以及所修得的学分。
不及格课程成绩为查看该学生的不及格课程的成绩。
六、系统测试
进入系统后进入登录界面:
当用户输入信息,选择身份以后,系统会连接数据库 对照数据库中的学生用户表或教师用户表判断用户名 与密码是否匹配,如果匹配,则进入相应客户端。
进入教师客户端:
进入学生客户端:
学生客户端和教师客户端的主界面的设计左边都是基于树状列表控件设计的,右边是一个卡片布局面板的窗体,程序中先对面板和主窗体进行初始化,然后对树的各个结点注册监听器,再调用相应的方法。
退出登录:
实现为当用户点击退出时,显示询问对话框。
如果用户选择是的时候调用System.exit(0)退出系统
修改密码:
需要判断新密码输入是否为空,不为空则获得该密码,再判断是否符合正则表达式,如果符合则判断新密码与确认新密码是否相同,如果相同则在按下确认键后修改密码。
新生报到:
实现向这个数据库里添加一个新来的学生
一个教师只能向他所在的学院里面添加学生,而不能把学生添加到别的学院去。
其中班级的下拉列表的实现利用到了三个Map
一个Map中键是专业名,值是专业号
一个Map中键是班级名,值是班级号
另一个Map的键专业号,值是存放班级的那个Map
当用户选择好专业以后,可以根据第一个Map得到专业号,再用专业号得到存放班级的那个Map,最后再得到所选专业的所有班级名
基本信息查询:
在教师端和学生端都有,所不同的是教师端可以根据学号查看所有学生的信息,而学生端只能查看自己的信息
成绩查询:
教师客户端查询成绩 学生客户端查询全部成绩
学生客户端查询不及格成绩
教师端和学生端都有,所不同的是教师端可以根据学号查看所有学生的成绩,而学生端只能查看自己的成绩。而且学生端还有查询不及格课程成绩的功能。
教师客户端的开课选项设置:
实现了将课程表中的课安排好上课时间以及讲次,老师,然后添加到可选课程信息表里面。并且控制学生什么时候选课,选什么课,什么时候选课结束。
课程成绩录入:
由教师录入学生成绩,在检查无误后,按下公布该科成绩单来完成数据库的更新。
添加课程:
允许教师向自己所在学院添加课程。
增加班级:模块允许教师向自己所在学院的任何一个专业增加班级。
允许教师向自己所在学院的任何一个专业增加班级。
学生客户端的选课:
可以实现学生从教师允许选课的课程中选择课程。
学生客户端的课表显示:
实现展示该学生所选课程的上课信息。