基于SSH的学生成绩信息管理系统的具体设计与实现
2018-03-23田文涛张笑冰
田文涛,张 钊,张笑冰
(1. 黑龙江省哈尔滨市职工医学院,黑龙江 哈尔滨 150000;2. 黑龙江省伊春市第一医院,黑龙江 伊春 153000)
1 系统概要设计
1.1 系统总体设计
学生成绩管理系统采用了SSH框架进行开发,共有表现层、业务逻辑层、数据持久层三层。当中MVC框架是由Struts框架来完成,负责处理系统的整体业务。系统的数据持久层由Hibernate来完成,它封装了底层的 JDBC,能将对象直接映射到关系型数据库中,如本系统中使用的Mysql数据库。还提供了面向对象的 API,让用户可以方便直观地操作数据库。Spring是本系统的业务层组件,它能方便地管理对象,利用 bean容器对对象进行管理。Spring还能够帮助Hibernate管理DAO层,使用注释编程风格,它可以写出优雅的代码[1-2]。
用户打开系统首先面对的是表现层,表现层是由JSP页面实现的,用户与JSP页面交互。
1.2 系统架构设计
本系统采用的是浏览器和服务器结构,也叫B/S结构设计。本学生成绩信息管理系统面向的对象是管理员(教师)和学生,根据他们的需求分析得知他们使用本系统的方式以浏览器为主,并不需要客户端来使用,因此决定使用B/S结构来设计此系统。
1.3 用户名/口令认证
系统需要根据用户输入用户名和密码进行验证的方式来登录,当用户输入了用户名和密码之后,会在数据库中进行查找,如果能够查找到数据并且匹配正确的话则登录成功,若数据不能匹配,则根据错误信息提示用户。
1.4 系统开发环境
2 系统详细设计
2.1 总体设计目标
实现该学生成绩信息管理系统的几个主要功能如下:
1. 教师统一管理学生的个人信息、班级信息、课程信息、成绩信息,能够增删改查;
2. 学生可以管理自己的个人信息,能够查看修改
3. 学生可以管理自己的课程信息,能够查看修改
4. 学生可以查看自己的学生成绩信息
5. 学生可以通过课程信息来进行相应的选课
2.2 登录模块设计
在用户进入本系统时首先就是登陆界面,登陆界面的实现类是 LoginAction[4-5],满足登陆信息录入功能。在登陆界面设置两个文本编辑框,分别输入用户名和密码,并设置两种用户角色,分别是管理员和学生。学生学号作为学生用户的唯一性标识,而密码的作用是确认这个账号的归属性。
2.3 管理员操作模块设计
在系统中,老师需要对学生的个人信息,班级信息,选课信息,成绩信息进行管理,还需要归纳总结出一个总成绩,所以针对管理员部分,需要设计五个模块,下面对相关功能进行详细介绍。
2.3.1 班级信息管理模块界面及功能设计
班级信息管理模块的内容包括班级信息添加和班级信息查询这两个模块。
班级信息添加界面:包括班级编号、班级名称、班主任、联系电话、成立日期五个text文本编辑框以及保存和重写两个按钮,其中在添加班级信息时班级编号和班级名称两项不能为空,如果为空,点击保存时会提示不能为空,从而无法完成添加班级信息的要求。
班级信息查询界面:用户可以根据班级编号、班级名称、联系电话、成立日期中的任何一项进行查询,查询结果以表格的形式呈现给用户,并以每一页显示三条记录进行分页显示。此界面还有编辑和删除两个按钮,可以根据用户需要对班级信息进行编辑和删除操作,充分的满足用户的各种需求。(学生信息管理、课程信息管理与班级信息管理类似,在此不做介绍了)
2.3.2 成绩信息管理模块界面及功能设计
成绩信息管理模块包括成绩信息添加和查询两个模块。
成绩信息添加界面:包括学生学号、课程信息和成绩分数三个小模块。其中用户需要在学生学号处输入正确的学生学号并点击获取学生信息按钮,点击后会显示学生的姓名、性别、班级、出生日期和电话号码五个信息,此时课程信息处的下拉框里有了学生所选课程的名称,根据学生考试所得分数对成绩分数进行录入,录入结束后点击保存对该学生课程成绩进行保存。
成绩信息查询界面:用户可以根据学生姓名和课程信息中的任意一项进行查询,查询结果一目了然。如果录入错误,可以点击编辑或者删除进行相应的操作,以满足用户的需要。
2.3.3 总成绩信息管理模块界面及功能设计
总成绩信息管理模块包括总成绩信息生成和总成绩信息查询两个模块。
总成绩信息管理界面:只有请选择班级进行总成绩的生成一项,根据下拉框显示的班级进行对应的选择,然后点击生成总成绩按钮即可生成总成绩。
总成绩信息查询界面:显示学生各门课程成绩,并在最后生成总成绩。该界面也可以对数据进行编辑和删除,并可以以Excel表格形式导出。
2.4 学生操作模块设计
学生登入系统之后主要有三个功能:学生个人信息查看和修改,查看自己的课程和选课、查看自己的成绩。其中点击学生成绩查询可以查询到个人的考试成绩,修改个人信息一项可以对个人信息进行编辑修改,学生选课一项需要选择想要选择的课程,点击查看课程信息可以显示出课程的名称,编号,讲课老师等基本信息,根据课程的信息确定要选择的课程,然后点击确定按钮完成选课。
2.5 数据库设计
2.5.1 本系统中的实体E-R图介绍
通过对本系统的分析,发现主要有五种实体,设计了它们之间的对应关系和属性,以下是实体与实体属性E-R图:
图1 用户登录实体及其属性Fig.1 User login entities and their attributes
图2 班级信息实体及其属性Fig.2 Class information entities and their attributes
图3 课程信息实体及其属性Fig.3 Courses information entities and their attributes
图4 学生信息实体及其属性Fig.4 Student’s information entities and their attributes
图5 成绩信息实体及其属性Fig.5 Performance information entities and their attributes
图6 系统中各实体之间的关系Fig.6 Relationships between entities of system
2.5.2 数据库逻辑结构设计
通过对学生成绩管理系统的分析,总结出了以下几点:
1. 用户只分老师和学生两种,并且一个用户只能有一种身份。
2. 教师拥有最高级的全下可以对学生信息,课程信息,成绩信息,总成绩的管理。
3. 学生用户能够查看和修改个人信息和成绩信息,能够查看成绩信息,能够进行选课。
通过以上对用户需求和系统功能的分析与总结,根据实际设计了符合条件的数据项和数据结构,创建7张基本的数据表,分别为:管理员信息表、学生信息表、班级信息表、课程信息表、成绩信息表、选课信息表、总成绩信息表。由于篇幅原因,下面只列举总成绩信息表,包括数据项:总成绩编号、学生学号、总成绩。总成绩表结构如表1所示。
表1 总成绩信息表Tab.1 total achievement information table
2.5.3 数据库物理设计
本系统共使用了7张基本表来满足项目的基本实现要求,每一张表之间都存在着相互的关联,保证了系统功能的全面和数据信息存储的稳定。下面同样只介绍一下创建总成绩信息表所使用到的SQL语句:
CREATE TABLE `t_totalscoreinfo` (--总成绩信息表,用于保存总成绩
`totalScoreId` int(11) NOT NULL auto_increment, --总成绩
`studentObj` varchar(20) default NULL,
--学生学号
`totalScoreValue` float default NULL,
--总成绩
PRIMARY KEY (`totalScoreId`),
KEY `FK28FF2C717B2E35` (`studentObj`),
CONSTRAINT `FK28FF2C717B2E35`
FOREIGN KEY (`studentObj`)
`t_student` (`studentNumber`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;[6]
下面对执行上述SQL语句创建的表进行介绍:
3 系统的实现与测试
3.1 系统功能实现
3.1.1 用户登录
1. 设计用户登陆页面
用户的登录页面包括输入用户名和密码的文本框,以及选择用户身份的下拉框,有管理员和学生两个选项,输入正确的用户信息才能进入到对应的系统中去。通过 JavaScript函数对用户的输入信息进行验证,验证用户名密码是否正确,是否为空。用户的登陆页面,如图7所示。
2. 用户登陆Action实现类
当用户在登录界面中输入完用户名和密码之后,系统会访问一个 URL为/ScoreSystem/com.scoresystem.action/LoginAction.java。在URL地址有用户登录是用来验证用户身份的方法CheckLogin()[7]。
在验证用户身份方法 CheckLogin()中,系统会将用户输入过来的的参数强制转换成Admin类型的对象并赋值于新的Admin类型对象。在验证用户登录的操作时,系统会检查数据库中是否有对应的信息,如果有信息的话系统会根据返回的信息反过来去查看用户的角色分类,从而根据返回分类的不同进入到不同的界面当中去[8-10]。
3. 配置structs.xml文件
在structs.xml文件中配置用户登陆模块所涉及到的
3.1.2 程序主体实现
当教师登录之后会弹出登录界面,页面包括当前用户的用户名,退出系统按钮,当前时间等信息。管理员可以根据自己的需求来点选对应的功能。如图8所示。
当学生成功登陆后,弹出登陆界面,页面包括了学生学号、姓名、性别、电话号码等个人信息,还有修改个人信息和退出系统的按钮。学生可以点击按钮进行相应的操作。如图5-1-17到5-1-21所示。
图7 用户登录页面Fig.7 User's login page
图8 管理员登陆页面Fig.8 Administrator’s login page
图9 学生登陆页面Fig.9 Student’s login page
3.2 系统的测试
考虑到本系统的实际使用是以操作简单,功能结构清晰的情况,本次测试主要是以黑盒测试为主进行的测试。
1. 当不输入用户名直接点击登录时。产生结果如图10所示。
图10 未输入用户名Fig.10 No username input
2. 当没有输入用户密码时,系统会弹出一个消息框来提示操作者输入用户密码如图11。
图11 没有输入密码Fig.11 No password input
3. 当输入用户及密码,但是用户名错误或者密码输入错误时,系统也会弹出一个对话框来提示操作者更改输入信息。如图12。
图12 用户不存在或密码错误Fig.12 username does not exist or wrong password
4 总结
本系统采用了 JAVA语言进,并使用了当前流行的、功能强大的Struts、Hibernate和Spring三大框架进行项目开发,数据库服务器则选择了当前流行且使用方便的MYSQL数据库[14]。目前,本系统下的各个功能已经全部实现,即教师端:对学生信息进行管理、对班级信息进行管理、对学生选课信息进行管理、对课程信息进行管理、对学生成绩信息进行管理;学生端:查询和修改个人信息、查询课程信息、查询个人成绩、选课[15]。本系统目前在我院成功试运行,完成了对学生成绩信息的专业化管理的目的。
[1] 廖义奎. Java Web开发之Srtuts编程基础与实例精讲[M].中国电力出版社, 2006: 133-137.
[2] 陈天河. Struts. Hibernate. Spring集成开发宝典[M]. 电子工业出版社, 2007: 246-249.
[3] 孙卫琴, 李洪成. Tomcat与Java Web开发技术详解[M]. 电子工业出版社, 2004: 56-61.
[4] 张洪伟. Tomcat Web开发及整合应用[M]. 北京. 清华大学出版社, 2006: 10-230.
[5] 石志国, 薛为民, 董洁. JSP高等学校计算机语言应用教程[M]. 清华大学出版社, 2004: 190-196.
[6] 李刚. Struts2权威指南:基于WebWork核心的MVC开发[M].电子工业出版社, 2007: 93-332.
[7] 梁立新. 项目实践精解:基于Struts-Spring-Hibernate的Java应用开发. 第2版[M]. 电子工业出版社, 2008.
[8] 郭煦, 闯恩华. 中间件技术在Web系统中的应用[J]. 上海电机学院学报, 2006, 9(3): 33-45.
[9] 孙卫琴. Java网络编程精解[M]. 电子工业出版社, 2007:66-70.
[10] 邱哲, 王俊标, 马斗. Java开发利器: Struts Web设计与开发大全[M]. 清华大学出版社, 2006: 67-72.
[11] MartyHall, 霍尔, Hall, 等. Servlet与JSP权威指南[M]. 机械工业出版社, 2002.
[12] Manheim M L. An architecture for active DSS[C]// Hawaii International Conference on System Sciences, 1988. Vol.iii.Decision Support and Knowledge Based Systems Track.IEEE, 2002: 356-365.
[13] Bruce Eckel. Theoretical Artificial Intelligence[J], 1998, 10(4): 393-402.
[14] Kang Jian-Ping. Editorial. Web Dynamics[J]. Computer Netorks,2002, 39: 221-223.
[15] 田文涛, 张钊, 张笑冰. 基于SSH的学生成绩信息管理系统的设计与分析[J]. 软件, 2017, 38(11): 212-215.