时间:2024-08-31
刘永立,白地动
(1.北京财贸职业学院 信息物流系,北京101101;2.北京财贸职业学院 教务处,北京 101101)
基于JAVA平台的网上成绩管理系统的设计与实现
刘永立1,白地动2
(1.北京财贸职业学院 信息物流系,北京101101;2.北京财贸职业学院 教务处,北京 101101)
将成绩管理由单机操作转变为网络操作在目前跨校区办公情形下尤为必要。本文以一个实际项目为蓝本,论述了构建基于JAVA平台的网上成绩管理系统的设计方法与实现手段;为保证系统的稳定运行,给出了基于NETBEANS6.1开发环境下数据库连接池的配置方法。
NETBEANS JSF RichFaces框架 成绩管理 数据库连接池
目前,很多学校已实现跨校区办公。借助网络虽然可以迅速传递数据,但是如何很好地保证数据的一致、及时更新和数据的充分共享,仍然是令教学管理人员很头疼的一件事。在众多教学数据中,学生的成绩对于学生和教师都很重要。传统的办公环境下,任课教师提交成绩单,成绩管理员核对成绩并进行数据的整理和发布。这一方式带来的主要问题是:(1)成绩管理员的压力大、时间紧,容易出错,成绩发布也不及时。(2)各个校区间数据的格式不一致,在数据共享时还需要再次进行数据的重新整理,无形中增加了工作量和出错的机率。因此,若能构建基于B/S结构的网上成绩管理系统,将传统单机管理转变为网络管理,必将大大提高办公效率,也能有效提升数据的准确性、一致性。
本文以JAVA平台为基础,以NETBEAN6.1为开发工具,讨论了网上成绩管理系统的设计与实现方法。
系统的用户分类如下:数据库管理员,课表管理员,考务管理员,成绩管理员,任课教师,学生。用户的权限和职责如下:
1.数据库管理员:(1)数据库的初始化,主要包括:系部数据、学期数据、教师数据、班级数据、学生数据的初始化;(2)管理用户的权限。
2.课表管理员:将指定学期的排课结果导入数据库。排课的原始数据一般是Excel表,为了能够进行微调,该类人员还要具备查询和修改排课数据的权限,以便及时反映排课的变动情况。
3.考务及成绩管理员:设定指定班级、指定课程的考试时间;设定成绩录入的最晚日期;设定考生的考试状态(正式考试、补考、缓考、旷考);将任课教师提交的成绩单锁定和解锁;将成绩数据导出为指定的Excel格式。
将成绩单锁定的目的是为了避免任课教师无休止地修改成绩;解锁的目的是一旦发现录入错误(尽管此类错误发生的可能性很小)便于任课教师修改个别学生的成绩。
4.任课教师:查看自己每个学期的任课班级和课程情况;设定自己所授课程的成绩分值权值(平时成绩、期末成绩所占比重);录入和修改学生成绩;查看学生成绩,生成成绩分析报告;将指定班级、指定课程的成绩单数据导出为Excel格式。
5.学生:查看自己所有课程的成绩。
通过分析系统的需求,可知网上成绩管理系统涉及的功能主要是:数据的导入/导出;数据的查询;数据的管理。具体来说,数据导入包括:教师数据导入,班级数据导入,学生数据导入,课表数据导入,成绩数据导入;数据导出包括:成绩数据导出;数据管理包括:课表数据管理、考务综合管理、个人数据管理、成绩权值分配、成绩数据录入;数据查询包括:课表数据查询、教师数据查询、学生数据查询、成绩数据查询。系统的主要功能模块如图1所示。
学期数据、系部数据相对固定且数据量很小,可以由数据库管理员手动输入;班级数据、学生数据、教师数据、课表数据、成绩数据等数据量大,因此系统提供了导入功能;为了便于用户修改密码,在数据管理模块中提供“个人数据管理”功能;为便于学生和教师查询数据,系统提供主要数据的查询功能;为便于教务人员和教师保存和分析数据,系统提供成绩数据的导出功能。
图1中涉及的功能模块是系统能够提供给所有用户的全部功能,所有功能以菜单的方式呈现给用户,不同类别的用户登录系统后,见到的功能菜单不同,能够实现的操作也不同。比如:任课教师登录系统后,具备“数据查询”、“成绩数据导出”操作权限,也具备“成绩权值分配”、“成绩数据录入”、“个人数据管理”、“成绩数据导入”操作权限,但不具备其他操作权限。不同教师用户只能针对自己所任的课程进行成绩数据录入和成绩权值分配操作。
本系统采用MySQL Server5.0数据库软件。数据库名字为“score”,所有数据表及其字段在数据库中定义时均采用英文。系统涉及的数据库表及其字段如下:系部(ID,名称),教师(ID,姓名,性别,所在系部,角色),班级(ID,名称,所在系部,班主任),学生(学号,姓名,性别,班级,角色),角色(ID,名称),学期(ID,学期名称),课程(ID,课程名称),课表(ID,学期,班级,课程,教师,平时成绩比重,实践成绩比重,期末成绩比重),成绩(ID,学期,学号,课程,平时成绩,实践成绩,期末成绩,总评成绩,状态开关,开考时间,最晚提交时间),成绩分析(ID,学期,班级,课程,不及格人数,60-69人数,70-84人数,85-100人数,参加考试人数,及格率,良好率,平均成绩)。
数据表在数据库“score”中的定义如表1所示。
表1 数据库s c o r e中的数据表及其字段
score表中的switch字段是控制开关,用来设定是否可以录入成绩。表1中加下划线的字段为主键。
各个数据表间有一定的关联关系,比如:课表数据表timetable与其他数据表之间的关系如图2所示。成绩数据表定义如下(包括外键约束和索引定义):
限于篇幅,其他数据表的定义以及外键约束和索引的定义不再论述。
1.开发工具的选择
本系统开发基于JAVA平台,需要按次序安装以下软件:jdk1.6,netbeans6.1,GlassFishV2,MySQL Server5.0。Netbeans6.1作为Web程序的开发环境,不但内嵌了GlassFish Web服务器,而且利用该IDE可以非常方便地连接MySQL Server数据库。为了便于操作数据库,可以在安装完MySQL Server5.0后,安装Navicat8软件,该软件是一款不错的MySQL Server的客户端工具软件。
2.框架和库文件
JSF是一个新的基于MVC模型的Web应用框架技术。在概念和特征方面,尤其是组件方面,超过了著名的Struts框架。RichFaces是JBOSS公司开发的Web应用程序框架,它进一步丰富了JSF框架,它为构建 RIA(Rich Internet Applications)和支持 Ajax的 Web应用程序提供了大量的JSF组件。
本系统基于RichFaces框架进行开发,故此需要在netbeans6.1中添加RichFaces框架所需的相关jar文件。另外,由于在数据导入和导出过程中需要操作EXCEL文件,所以还需要jxl开源组件。
系统所需的主要JAR文件如表2所示(所有文件都可从网上下载)。
表2 系统所需J A R文件列表
3.开发环境的部署
(1)配置 web.xml和 faces-config.xml文件
由于系统基于JSF框架开发,故此需要配置web.xml文件faces-config.xml文件。在web.xml文件中主要进行RichFaces过滤器和Faces Servlet的注册;在faces-config.xml文件中主要进行JAVA BEAN的注册。
以下是web.xml文件中RichFaces过滤器的注册方法:(2)数据库连接池
通过大量的实验测试后发现:在系统访问人数增多以及进行大量数据的导入/导出过程中,会占用较多的数据库连接,若出现连接耗尽的情况,系统就会瘫痪。为有效避免此种情况的出现,应采用数据库连接池(关于连接池在GLASSFISH服务器中的的定义方法请参阅相关文档)。首先将数据库连接池命名为:jdbc/mySqlDb,并在Web服务器中定义;然后在系统配置文件web.xml中添加如下内容:
最后在JAVA BEAN中按照如下方法建立数据库连接,连接池便可以使用了。
4.创建JSP
JSP(Java Server Page)页面是用户与系统交互的窗口。基本上,每个JSP页面完成一个或几个相关的功能模块。比如,前面介绍的“成绩数据导入”功能模块、“成绩数据录入”功能模块就可以分别由不同的JSP文件实现,当然还需要后台BEAN的支持。下面就以“成绩数据录入”功能模块的实现(editScore.jsp)为例,介绍JSP文件的创建方法,该JSP页面的运行效果如图3所示。
(1)为了使页面支持中文,以及使用RICH FACES和JSF框架中的标签,需要在JSP页面头部添加如下代码:
(2)接着将UI控件添加在<a4j:form>标签内部。本页面要用到的 UI控件有:<h:commandButton>、<h:outputText>、<h:inputText>、<rich:dataTable>、<rich:column>、<a4j:support>,它们分别代表JSF命令按钮、JSF文本输出框、JSF文本输入框、RICH FACES数据表格、RICH FACES表格列、ajax功能控件,其中 <a4j:support>标签的作用是给父标签添加ajax辅助功能。
比如,editScore.jsp页面中“提交成绩”按钮可以按如下方式进行定义:<h:commandButton tabindex="4"value="提交成绩"onclick="if(!confirm('确认提交么?'))return false" rendered="#{manageScore.editFlag}" action="#{manageScore.saveChanged}"/>。其中manageScore是用来进行成绩管理的后台JAVA BEAN。
<rich:dataTable>是RICH FACES框架中功能强大的标签,用来显示数据库中的数据,该标签内部可以嵌入<h:outputText>、<h:inputText>、<rich:column>等 标 签 。editScore.jsp页面中成绩记录的显示就用到了该标签。在使用<rich:dataTable>标签显示数据时,要注意设定好两个重要属性:binding、value。binding属性的值是JAVA BEAN中UIDataTable类型的变量;value属性的值一般是JAVA BEAN 中 ArrayList(或 List)类型的变量。
5.编写 JAVA BEAN
虽然JSP页面提供了交互的途径,但是一切后台操作最终都要由JAVA BEAN来完成。本系统中最主要的BEAN是数据库操作BEAN(DbBean.java)和数据导入/导出 BEAN(ReadAndWrite.java)。 DbBean.java主要完成数据库连接的创建,数据的查询、插入、更新、删除等常规数据库操作;ReadAndWrite.java主要负责将EXCEL数据导入到数据库,并将数据库数据导出为EXCEL格式的文件。同时,系统还需要实体BEAN(每个数据库表对应一个实体BEAN)和其他辅助 BEAN(如用于成绩管理的BEAN:ManageScore.java)的支持。 ManageScore.java 中的saveChanged方法与图3中的“提交成绩”按钮对应,其代码如下(有删节):
6.系统发布
系统开发完毕后,可以在NETBEANS6.1中右键单击项目,将其打包生成.war文件,该war文件一般在项目所在路径的dist子文件夹中。
随后,启动 MySQL Server5.0和 GlassFish,通过GlassFish管理员控制台,将生成的war文件部署到Web服务器即可,如图4所示。
[1]David Geary,Cay Horstmann.Core Java-Server Faces[M].New Jersey USA:Addison Wesley publisher2004.
[2]http://www.netbeans.org.
[3]http://www.javaeye.com/.
[4]JBoss rich faces tutorial[DB/OL],http://www.mastertheboss.com/en/web-interfaces/124-jboss-RichFaces-tutorial.html.
[5]Andrei Cioroianu.Upload Files with JSF and MyFaces.http://www.onjava.com/pub/a/onjava/2005/07/13/jsfupload.html,2005.
[6]The Java EE5 Tutorial[DB/OL],http://java.sun.com/javaee/5/docs/tutorial/doc/index.html.
(编辑:杨馥红)
G250.73
B
1673-8454(2010)01-0048-05
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!