《JAVA EE》课程设计报告
题 目:学生信息管理系统
学 院:计算机科学与工程 专 业:计算机科学与技术 学生姓名: 学 号: 指导教师:
2015年 7月 1日
目录
引言 .........................................................错误!未定义书签。 一、
系统需求分析 ..........................................错误!未定义书签。
功能分析 ..................................................错误!未定义书签。 系统结构分析 ..............................................错误!未定义书签。 系统流程分析 ..............................................错误!未定义书签。 二、系统概要设计 ..............................................错误!未定义书签。 三、系统详细设计 ..............................................错误!未定义书签。
数据库设计 ................................................错误!未定义书签。
设计原则 .............................................错误!未定义书签。 数据库组成 ...........................................错误!未定义书签。 数据库表的结构 ........................................错误!未定义书签。 系统模块设计 ..............................................错误!未定义书签。
登录模块 .............................................错误!未定义书签。 系统管理模块 .........................................错误!未定义书签。 学籍管理模块 .........................................错误!未定义书签。 成绩管理模块 .........................................错误!未定义书签。
四、系统实现和演示 ............................................错误!未定义书签。
系统Model层实现 ..........................................错误!未定义书签。 系统配置和界面 ............................................错误!未定义书签。
界面实现 ............................................ 错误!未定义书签。 显示学生所选课程信息 ................................ 错误!未定义书签。 显示课程成绩 ........................................ 错误!未定义书签。 修改学生信息 ........................................ 错误!未定义书签。 管理员管理界面 ..................................... 错误!未定义书签。 hibernate配置文件设置 ............................. 错误!未定义书签。
Struts-config配置文件设置 .......................... 错误!未定义书签。
五、开发过程中所用到的技术 ....................................错误!未定义书签。
软件工程的思想方法 .......................................错误!未定义书签。 MVC思想 .................................................错误!未定义书签。 ........................................................错误!未定义书签。 六、总结......................................................错误!未定义书签。 参考文献......................................................错误!未定义书签。
引言
随着计算机技术的迅速发展和网络技术的突飞猛进,人们迫切要求利用这些新技术以减轻个人的工作负担及提高工作效率。 目前,学校工作繁杂、资料重多,管理信息系统已进入高校,但还未普及,而对于学生信息管理来说,还没有一套完整的、统一的系统。因此,开发一套适和大众的、兼容性好的系统是很有必要的。根据开发要求,它主要应用于教育系统,完成对日常学生基本信息以及成绩的录入查询更新删除等管理操作,实现学生信息管理的计算机化。开发学生信息管理系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用,加快查询速度、加强管理。
因此,本文描述如何基于MVC框架,使用Hibernate和Struts,开发一个“学生信息管理系统”。其中,Model由Hibernate来负责, Control则使用Struts来实现,利用mysql建立数据库。
本系统是采用B/S模式进行开发的,系统的用户权限有三种:学生、教师和系统管理员,不同权限用户登入到不同的操作界面。该系统主要由学籍维护、选课管理、成绩查询等功能模块组成,本文具体介绍了各功能模块所包含的小模块的功能,学籍维护模块主要是对学生的基本信息进行添加、查询、修改、删除;选课管理模块主要是对选修的课程进行添加、删除、统计选修人数,以及学生进行选课和更改选课;成绩查询模块主要是对必修课进行添加、删除、录入成绩,以及学生进行查询成绩等功能。
一、 项目开发的工具
本系统采用+MySQL+开发
MyEclipe简介
MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。在结构上,MyEclipse的特征可以被分为7类:
1. JavaEE模型 2. WEB开发工具 3. EJB开发工具
4. 应用程序服务器的连接器 5. JavaEE项目部署服务 6. 数据库服务 7. MyEclipse整合帮助
对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。
MySql简介
MySQL名字的来历MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司,在2008年1月16号被Sun公司收购。MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。
Tomcat简介
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5 支持最新的Servlet 和JSP 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。
Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
这里的诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。
3 数据库的连接
本系统采用JDBC连接方式。
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序。
有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。
Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。
Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制。
JDBC 扩展了 Java 的功能。例如,用 Java 和 JDBC API 可以发布含有 applet 的网页,而该 applet 使用的信息可能来自远程数据库。企业也可以用 JDBC 通过 Intranet 将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有 Windows、 Macintosh 和UNIX 等各种不同的操作系统)。随着越来越多的程序员开始使用Java 编程语言,对从 Java 中便捷地访问数据库的要求也在日益增加。
MIS 管理员们都喜欢 Java 和 JDBC 的结合,因为它使信息传播变得容易和经济。企业可继续使用它们安装好的数据库,并能便捷地存取信息,即使这些信息是储存在不同数据库管理系统上。新程序的开发期很短。安装和版本控制将大为简化。程序员可只编写一遍应用程序或只更新一次,然后将它放到服务器上,随后任何人就都可得到最新版本的应用程序。对于商务上的销售信息服务, Java 和JDBC 可为外部客户提供获取信息更新的更好方法。
一、 系统需求分析
功能分析
(1)用户登录:用户登录(一个界面)通过验证分为管理员,学生,老 师登陆
三个主页面 。学生信息管理系统采用用户名及密码验证模式,进入学生信息管理系统前,用户必须在登陆页面输入用户名及密码,只有验证通过的用户方可进入学生信息管理系统操作主页面。
(2)学生信息管理:管理员对学生信息进行删除,查询和修改。
(3)课程信息管理:管理员也可以进行删除,修改和查询功能,同时学 生可以
选课和查询该课程成绩,和查询课程成绩。老师根据所授课程对学生录入成绩
(4)用户管理:三种用户可进行注销进行切换,可以修改密码 系统结构分析
登陆 教师登陆 学生登陆管理员登录入成绩 修改成绩 查询成绩 选 课 查询成绩 修改密码 录入基本修改学生删除学生修改密码
系统流程分析
通过分析描述,可以很轻松的将系统的运行流程设计出来。系统运行流程如图所示:
开始 错误页面 成功页面
结束 对数据库进行显示课程信息
学生信息管理系统流程图如上图所示:
通过对流程的分析,即可进行下一步工作——系统的概要设计。
二、系统概要设计
运用面向对象的设计方法,这个阶段设计一下系统的大体框架。
最直接的方法就是直接将流程图直接映射成为项目文件。参照上一节的系统流程分析,直接将流程图中的流程变为JSP页面,流程之间测转换则映射成为Action和Struts的导航规则。
系统中所有的数据库相关操作都由Hibernate中的DAO(数据访问对象)类来实现。由于使用了JSP页面,所以不仅可以使用HTML标签,同时还可以使用JSP中的EL语言和Struts中的标签。
为了更好的配合JAVAEE开发,数据库采用MYSQL。
三、系统详细设计
数据库设计
设计原则
(1)密码管理:学生修改学生查询密码;教师可以修改查询密码。
(2)每个教师可以查看所有学生的成绩,包括每门课程的成绩、每门课程的平均成绩、每个分数段的成绩。
(3)学生根据自己的学号查询本人的成绩。
(4)管理员可以对学生、老师等信息进行增加、删除、修改等操作。
数据库组成
本系统中共用到了7个数据表,如下:
admin表:记录管理员信息; teacher表:记录教师信息; student表:记录学生学籍信息; kechengbiao表:记录选修课信息; chegnji表:记录学生基础课信息; 成绩关联表:记录学生基础课成绩信息; 选课关联表:记录学生选课信息。
数据库表的结构
字段名 admin_id
字段描述 管理员ID
是否主键
是
数据类型 varchar
长度 20
约束 Not null
password
密码
否
varchar
20
Not null
表3-1 admin表
字段名 tno tpss tname sex jibie tel
字段描述 教师号 密码 教师姓名 性别 职称 电话号码
是否主键 是 否 否 否 否 否
数据类型 varchar varchar varchar varchar varchar varchar 表3-2 teacher表
长度 20 20 20 20 20 20
约束 Not null Not null Not null Not null Not null Not null
说明 主键
说明 主键
字段名 name stu_id password sex zy
mz zzmm cym sfz csrq jg jkzk rxnf jtdz jtdh yzbm lxfs email qtlxfs bz
字段描述 学生姓名 学号 密码 性别 专业 民族 政治面貌 曾用名 身份证 出生日期 籍贯 健康状况 入学年份 家庭地址 家庭电话 邮政编码 联系方式 邮件 其他联系 备注
是否主键
否 是 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否
数据类型 varchar varchar varchar varchar varchar char varchan varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar
长度 20 20 20 20 20 10 20 20 20 20 20 20 20 50 20 10 20 20 20 20
约束 Not null Not null Not null Not null Not null Not null Not null
主键 说明
3-3 student表
字段名 学期号
字段描述 学期号
是否主键
否
数据类型 varchar
长度 20
约束
说明
cno cname 学分 主讲教师
课程号 课程名 学分 主讲教师
是 否 否 否
varchar varchar varchar varchar 3-4 chengji表
20 20 20 20
Not null Not null
主键
字段名 cno cname tno 星期几 时间 classno
字段描述 课程号 课程名 任课教师 星期几 时间 上课教室
是否主键
是 否 否 否 否 否
数据类型 varchar varchar varchar varchar varchar varchar
长度 20 20 20 20 20 20
约束 Not null Not null
说明 主键
表3-5 kecheng表
字段名 id stu_id cno 成绩 重修成绩
字段描述 自动标识 学号 课程号 成绩 重修成绩
是否主键
是 否 否 否 否
数据类型
int varchar varchar varchar varchar
长度 4 20 20 20 20
约束 Not null Not null Not null Not null Not null
说明 主键
表3-6 成绩关联表
字段名 id stu_id cno
字段描述 自动标识 学号 课程号
是否主键
是 否 否
数据类型 int varchar varchar
长度 4 20 20
约束 Not null Not null Not null
说明 主键
表3-7 选课关联表
系统模块设计
登录模块
为了系统的安全,在进入系统之前首先会出现一个登录模块,用户只有在输入正确的用户名和正确的密码之后,才能进入系统。
用户登录窗体中放置了两个文本框,用来输入用户名和密码;两个按钮用来确定或者重写登录。
设置三个单选控件,供不同用户登录时选择用户权限,管理员拥有一切权限(包括添加删除和修改以及对用户的管理),教师和学生拥有受限制的权限(如查询及修改密码),提高了数据库的安全性。登录模块图如下图所示:
系统管理模块
添加用户窗体的创建
进入系统后,将会出现一个主窗体,选择系统管理模块下的添加用户,就可以进入添加用户窗体,可以通过该窗体增加新的用户。
在这个窗体中放置了五个文本框,用来输入用户名、密码出生时间、总学分和备注;一个下拉列表框和两个单选框用来确定专业和性别;两个按钮用来确定是否添加用户;
修改密码窗体的创建
在系统管理模块下,进入修改密码窗体,用户可根据需要修改自己的密码。 在这个窗体中放置了三个文本框,用来输入原始密码、新密码和确认新密码;两个按钮用来确定是否修改密码。
学籍管理模块
添加学籍信息功能
选择主窗体中学籍管理模块下的添加学籍信息,就可进入添加学籍信息的窗体,在该窗体中我们可以对学生的学号、姓名、性别、出生日期、班号等学生的信息进行添加。添加的信息将全部存储到数据库中。
在窗体上放置多个文本框和下拉式文本框,用来输入学籍信息;两个按钮用来确定是否输入学籍信息;一个按钮用来退出窗体;多个标签用来提示文本框中需要输入的内容。
修改学籍信息功能
点击学籍管理模块下的修改学籍信息,就进入修改学籍信息的窗体,在该窗体中我们可以对前面添加的学籍信息进行修改。由于用户的需求不同,有的是要对学生的信息做个别的改动,有的是需要删除该条记录,所以该窗体同时包括了修改记录的功能和删除记录的功能。
查询学籍信息功能
进入学籍管理模块下的查询学籍信息窗体,在该窗体中可以对学生的信息进行查询,有三种查询方式。一方面考虑到简洁的因素,用户可以只设置一种查询方式进行查询;另一方面又为了避免数据的重复,用户可以输入详细的信息,也就是同时设置多种查询方式进行查询。进入查询窗体时,会显示出所有学生的学籍信息,如果不设置查询方式就进行查询,是无效查询,系统会给出提示。在设置好查询方式后,便开始查询,将显示出用户所需的学生的学籍信息。
成绩管理模块
成绩信息管理功能
点击成绩管理模块下的成绩信息浏览,进入成绩信息浏览窗体。点击工具条中的修改、添加和查询按钮就可分别进入修改成绩信息窗体、添加成绩信息窗体和查询成绩信息窗体。这三个窗体的界面设置分别类似于学籍管理下修改学籍信息窗体、添加学籍信息窗体和查询学籍信息窗体。
四、系统实现和演示
要明确的是,该项目是一个基于MVC结构的,其中使用作为整个MVC的实现,其中的Action又充当控制器的角色(当然包括了配置文件的导航作用),作为Model的实现。
现在在MyEclipse10下新建空的web项目,然后在项目根目录src文件夹下建立两个包:
action包用来存放Action类,entity用于存放从hibernate逆向过来的实体类的java文件。
系统Model层实现
由于工程属于数据库先行的方法,因此需要将数据库逆向成为hibernate实体类,中提供了这样的工具。在逆向之前,我们需要对我们建立好的数据库在MyEclipse的Hibernate视图下建立一个连接。方法是,在Hibernate视图,左边DB Browser鼠标右击->【new】,然后再弹出的对话框中填写好相关信息,点击【Finish】即新建一个数据库连接。
建立好需要的数据库连接之后,就要为项目添加Hibernate组件了,方法是:方法是:在项目上点击鼠标右键->【MyEclipse】->【Add Hibernate capabilities……】,然后选择Hibernate版本,这里用的是,然后单击【Finish】完成Hibernate功能的添加。
接下来,就可以着手将数据表逆向到Hibernate实体类了,还是要到数据库视图,双击打开之前建立好的数据库连接,选择要逆向成为实体类的数据表,鼠标右击->【Hibernate Reserver Engineering】,在弹出来的对话框中,选择实体类生成的位置——也就是之前建立的包。勾选生成DAO类,其余设置保持默认即可,点击【Finish】完成数据表的逆向,此时再回到工程视图,可以看见生成好的实体类和实体的DAO类。
这里,每一个实体类实际上由三个
文件组成:抽象实体类、具体实体类和实体数据库访问对象(DAO)。抽象类中包含了数据表的属性和一些抽象的方法,具体实体类中则是方法的具体实现,DAO类则是实现了对数据库记录的操作。Hibernate已经为DAO类提供了一些常用的方法,而Hibernate自身实际上是用hql语句对数据库进行操作的,如果在使用过程中需要自定义新的数据库操作方法,则可以在对应的DAO文件中编写相应的方法。
到此,Model层就实现了,由于使用了Hibernate,Model的实现变得非常容易。
系统配置和界面
界面实现
围绕系统用例,从用例出发来设计所需的Action。那么按照用例,第一个Action的作用应当是实现用户的登陆,若登陆成功,该Action应当导航到用户登陆成功界面,失败则给出提示信息并停留在登陆页面。
登录页面图如下:
登录页面代码如下:
学生角色登录系统成功后,会出现下面的页面:
页面代码如下:
<%@page language=\"java\" contentType=\"text/html; charset=utf-8\"%> <%@page import=\".*,.*\" errorPage=\"\" %>
<%String stuid = (String)().getAttribute(\"stuid\");
if(stuid==null){(\"\");}
String root=(); %>
/method=getDisplayCourse\">选修课程 >> | /method=geCheckmark\">查看成绩 >> | /method=getEditStudent&self=1\">更改信息 >> |
显示学生所选课程信息
显示课程成绩
代码如下:
<%@ page language=\"java\" errorPage=\"/\" pageEncoding=\"UTF-8\"
contentType=\"text/html;charset=utf-8\" isELIgnored=\"false\"%>
<%@include file=\"/jsp/common/\"%>
<%
String stuid = (String)(\"stuid\");
%>
您所有的成绩
课程名称 | 学分 | 成绩 |
修改学生信息
管理员管理界面
修改学生信息
修改老师信息
修改课程信息
修改综合
hibernate配置文件设置
hibernate.cfg.xml
Struts-config配置文件设置
配置部分代码如下:
[2] 李兴华.Java web 开发实战经典[M].北京:清华大学出版社. 因篇幅问题不能全部显示,请点此查看更多更全内容