1、. -?JAVA EE?课程设计报告题目:学生信息管理系统学院:计算机科学与工程专业:计算机科学与技术学生XX:学号:指导教师:2015年 7月 1日目录引言2一、系统需求分析21.1功能分析21.2系统构造分析21.3系统流程分析2二、系统概要设计2三、系统详细设计23.1数据库设计23.1.1 设计原那么23.1.2 数据库组成23.1.3数据库表的构造23.2系统模块设计23.2.1 登录模块23.2.2 系统管理模块23.2.3 学籍管理模块23.2.4 成绩管理模块2四、系统实现和演示24.1系统Model层实现24.2系统配置和界面24.2.1 界面实现24.2.2 显示学生所选课
2、程信息24.2.3 显示课程成绩24.2.4 修改学生信息24.2.5 管理员管理界面24.2.6 hibernate配置文件设置24.2.7 Struts-config配置文件设置2五、开发过程中所用到的技术25.1软件工程的思想方法25.2 MVC思想25.3 Struts2.02六、总结2参考文献2- word.zl. -引言随着计算机技术的迅速开展和网络技术的突飞猛进,人们迫切要求利用这些新技术以减轻个人的工作负担及提高工作效率。目前,学校工作繁杂、资料重多,管理信息系统已进入高校,但还未普及,而对于学生信息管理来说,还没有一套完整的、统一的系统。因此,开发一套适和群众的、兼容性好的系
3、统是很有必要的。根据开发要求,它主要应用于教育系统,完成对日常学生根本信息以及成绩的录入查询更新删除等管理操作,实现学生信息管理的计算机化。开发学生信息管理系统可使学院教职员工减轻工作压力,比拟系统地对教务、教学上的各项效劳和信息进展管理,同时,可以减少劳动力的使用,加快查询速度、加强管理。因此,本文描述如何基于MVC框架,使用Hibernate和Struts,开发一个“学生信息管理系统。其中,Model由Hibernate来负责, Control那么使用Struts来实现,利用mysql建立数据库。本系统是采用B/S模式进展开发的,系统的用户权限有三种:学生、教师和系统管理员,不同权限用户登
4、入到不同的操作界面。该系统主要由学籍维护、选课管理、成绩查询等功能模块组成,本文具体介绍了各功能模块所包含的小模块的功能,学籍维护模块主要是对学生的根本信息进展添加、查询、修改、删除;选课管理模块主要是对选修的课程进展添加、删除、统计选修人数,以及学生进展选课和更改选课;成绩查询模块主要是对必修课进展添加、删除、录入成绩,以及学生进展查询成绩等功能。一、 工程开发的工具本系统采用MyEclipse8.5+MySQL+tomcat6.0.36开发1.1 MyEclipe简介MyEclipse企业级工作平台MyEclipse Enterprise Workbench ,简称MyEclipse是对E
5、clipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序效劳器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。在构造上,MyEclipse的特征可以被分为7类:1. JavaEE模型2. WEB开发工具3. E开发工具4. 应用程序效劳器的连接器5. JavaEE工程部署效劳6. 数据库效劳7. MyEclipse整合帮助对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通
6、过一系列的插件来实现它们。MyEclipse构造上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进展单独的扩展和升级。1.2 MySql简介MySQL名字的来历MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司,在2008年1月16号被Sun公司收购。MySQL被广泛地应用在Internet上的中小型中。由于其体积小、速度快、总体拥有本钱低,尤其是开放源码这一特点,许多中小型为了降低总体拥有本钱而选择了MySQL作为数据库。与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的缺乏之处,如规模小、功能有限MySQL Clu
7、ster的功能和效率都相比照拟差等,但是这丝毫也没有减少它受欢送的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有本钱。1.3 Tomcat简介Tomcat是Apache 软件基金会Apache Software Foundation的Jakarta 工程中的一个核心工程,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规X总是能在Tomcat 中得到表达,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 规X。因为
8、Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了局部软件开发商的认可,成为目前比拟流行的Web 应用效劳器。Tomcat 很受广阔程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与效劳等开发应用系统常用的功能;而且它还在不断的改良和完善中,任何一个感兴趣的程序员都可以更改它或在其中参加新的功能。Tomcat 是一个小型的轻量级应用效劳器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 效劳器,可利用它响应对HTML 页面的访问请求。实际上
9、Tomcat 局部是Apache 效劳器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。这里的诀窍是,当配置正确时,Apache 为HTML页面效劳,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web效劳器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache效劳器。3 数据库的连接本系统采用JDBC连接方式。JDBCJava Data Base Con
10、nectivity,java数据库连接是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序。有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据
11、库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行的优势。Java数据库连接体系构造是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的效劳提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性
12、能实现的接口。Java 具有巩固、平安、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的出色语言。所需要的只是 Java应用程序与各种不同数据库之间进展对话的方法。而 JDBC 正是作为此种用途的机制。JDBC 扩展了 Java 的功能。例如,用 Java 和 JDBC API 可以发布含有 applet 的网页,而该 applet 使用的信息可能来自远程数据库。企业也可以用 JDBC 通过 Intranet 将所有职员连到一个或多个内部数据库中即使这些职员所用的计算机有 Windows、 Macintosh 和UNIX 等各种不同的操作系统。随着越来越多的程序员开场使用J
13、ava 编程语言,对从 Java 中便捷地访问数据库的要求也在日益增加。MIS 管理员们都喜欢 Java 和 JDBC 的结合,因为它使信息传播变得容易和经济。企业可继续使用它们安装好的数据库,并能便捷地存取信息,即使这些信息是储存在不同数据库管理系统上。新程序的开发期很短。安装和版本控制将大为简化。程序员可只编写一遍应用程序或只更新一次,然后将它放到效劳器上,随后任何人就都可得到最新版本的应用程序。对于商务上的销售信息效劳, Java 和JDBC 可为外部客户提供获取信息更新的更好方法。一、 系统需求分析1.1功能分析1用户登录:用户登录一个界面通过验证分为管理员,学生,教师登陆三个主页面。
14、学生信息管理系统采用用户名及密码验证模式,进入学生信息管理系统前,用户必须在登陆页面输入用户名及密码,只有验证通过的用户方可进入学生信息管理系统操作主页面。2学生信息管理:管理员对学生信息进展删除,查询和修改。3课程信息管理:管理员也可以进展删除,修改和查询功能,同时学生可以选课和查询该课程成绩,和查询课程成绩。教师根据所授课程对学生录入成绩4用户管理:三种用户可进展注销进展切换,可以修改密码1.2系统构造分析登陆教师登陆学生登陆后管理员登陆录入成绩修改成绩查询成绩选课查询成绩修改密码录入根本信息修改学生信息删除学生信息修改密码1.3系统流程分析通过分析描述,可以很轻松的将系统的运行流程设计出
15、来。系统运行流程如下图:开场登录界面输入用户名称和用户密码是否成功成功页面错误页面对数据库进展操作显示课程信息NY完毕学生信息管理系统流程图如上图所示:通过对流程的分析,即可进展下一步工作系统的概要设计。二、系统概要设计运用面向对象的设计方法,这个阶段设计一下系统的大体框架。最直接的方法就是直接将流程图直接映射成为工程文件。参照上一节的系统流程分析,直接将流程图中的流程变为JSP页面,流程之间测转换那么映射成为Action和Struts的导航规那么。系统中所有的数据库相关操作都由Hibernate中的DAO(数据访问对象)类来实现。由于使用了JSP页面,所以不仅可以使用HTML标签,同时还可以
16、使用JSP中的EL语言和Struts中的标签。为了更好的配合JAVAEE开发,数据库采用MYSQL。三、系统详细设计3.1数据库设计3.1.1 设计原那么(1)密码管理:学生修改学生查询密码;教师可以修改查询密码。(2)每个教师可以查看所有学生的成绩,包括每门课程的成绩、每门课程的平均成绩、每个分数段的成绩。(3)学生根据自己的学号查询本人的成绩。(4)管理员可以对学生、教师等信息进展增加、删除、修改等操作。3.1.2 数据库组成本系统中共用到了7个数据表,如下:admin表:记录管理员信息;teacher表:记录教师信息;student表:记录学生学籍信息;kechengbiao表:记录选修
17、课信息;chegnji表:记录学生根底课信息;成绩关联表:记录学生根底课成绩信息;选课关联表:记录学生选课信息。3.1.3数据库表的构造字段名字段描述是否主键数据类型长度约束说明admin_id管理员ID是varchar20Not null主键password密码否varchar20Not null表3-1 admin表字段名字段描述是否主键数据类型长度约束说明tno教师号是varchar20Not null主键tpss密码否varchar20Not nulltname教师XX否varchar20Not nullsex性别否varchar20Not nulljibie职称否varchar20N
18、ot nulltel否varchar20Not null表3-2 teacher表字段名字段描述是否主键数据类型长度约束说明name学生XX否varchar20Not nullstu_id学号是varchar20Not null主键password密码否varchar20Not nullsex性别否varchar20Not nullzy专业否varchar20Not nullmz民族否char10Not nullzzmm政治面貌否varchan20Not nullcym曾用名否varchar20sfz否varchar20csrq出生日期否varchar20jg籍贯否varchar20jkzk安
19、康状况否varchar20rxnf入学年份否varchar20jtdz家庭地址否varchar50jtdh家庭否varchar20yzbm邮政编码否varchar10lxfs联系方式否varchar20email否varchar20qtlxfs其他联系否varchar20bz备注否varchar203-3 student表字段名字段描述是否主键数据类型长度约束说明学期号学期号否varchar20o课程号是varchar20Not null主键ame课程名否varchar20Not null学分学分否varchar20主讲教师主讲教师否varchar203-4 chengji表字段名字段描述是否
20、主键数据类型长度约束说明o课程号是varchar20Not null主键ame课程名否varchar20Not nulltno任课教师否varchar20星期几星期几否varchar20时间时间否varchar20classno上课教室否varchar20表3-5 kecheng表字段名字段描述是否主键数据类型长度约束说明id自动标识是int4Not null主键stu_id学号否varchar20Not nullo课程号否varchar20Not null成绩成绩否varchar20Not null重修成绩重修成绩否varchar20Not null表3-6 成绩关联表字段名字段描述是否主键
21、数据类型长度约束说明id自动标识是int4Not null主键stu_id学号否varchar20Not nullo课程号否varchar20Not null表3-7 选课关联表3.2系统模块设计3.2.1 登录模块为了系统的平安,在进入系统之前首先会出现一个登录模块,用户只有在输入正确的用户名和正确的密码之后,才能进入系统。用户登录窗体中放置了两个文本框,用来输入用户名和密码;两个按钮用来确定或者重写登录。设置三个单项选择控件,供不同用户登录时选择用户权限,管理员拥有一切权限包括添加删除和修改以及对用户的管理,教师和学生拥有受限制的权限如查询及修改密码,提高了数据库的平安性。登录模块图如下列
22、图所示:3.2.2 系统管理模块3.2.2.1 添加用户窗体的创立进入系统后,将会出现一个主窗体,选择系统管理模块下的添加用户,就可以进入添加用户窗体,可以通过该窗体增加新的用户。在这个窗体中放置了五个文本框,用来输入用户名、密码出生时间、总学分和备注;一个下拉列表框和两个单项选择框用来确定专业和性别;两个按钮用来确定是否添加用户;3.2.2.2 修改密码窗体的创立在系统管理模块下,进入修改密码窗体,用户可根据需要修改自己的密码。在这个窗体中放置了三个文本框,用来输入原始密码、新密码和确认新密码;两个按钮用来确定是否修改密码。3.2.3 学籍管理模块3.2.3.1 添加学籍信息功能选择主窗体中
23、学籍管理模块下的添加学籍信息,就可进入添加学籍信息的窗体,在该窗体中我们可以对学生的学号、性别、出生日期、班号等学生的信息进展添加。添加的信息将全部存储到数据库中。在窗体上放置多个文本框和下拉式文本框,用来输入学籍信息;两个按钮用来确定是否输入学籍信息;一个按钮用来退出窗体;多个标签用来提示文本框中需要输入的内容。3.2.3.2 修改学籍信息功能点击学籍管理模块下的修改学籍信息,就进入修改学籍信息的窗体,在该窗体中我们可以对前面添加的学籍信息进展修改。由于用户的需求不同,有的是要对学生的信息做个别的改动,有的是需要删除该条记录,所以该窗体同时包括了修改记录的功能和删除记录的功能。3.2.3.3
24、 查询学籍信息功能进入学籍管理模块下的查询学籍信息窗体,在该窗体中可以对学生的信息进展查询,有三种查询方式。一方面考虑到简洁的因素,用户可以只设置一种查询方式进展查询;另一方面又为了防止数据的重复,用户可以输入详细的信息,也就是同时设置多种查询方式进展查询。进入查询窗体时,会显示出所有学生的学籍信息,如果不设置查询方式就进展查询,是无效查询,系统会给出提示。在设置好查询方式后,便开场查询,将显示出用户所需的学生的学籍信息。3.2.4 成绩管理模块3.2.4.1 成绩信息管理功能点击成绩管理模块下的成绩信息浏览,进入成绩信息浏览窗体。点击工具条中的修改、添加和查询按钮就可分别进入修改成绩信息窗体
25、、添加成绩信息窗体和查询成绩信息窗体。这三个窗体的界面设置分别类似于学籍管理下修改学籍信息窗体、添加学籍信息窗体和查询学籍信息窗体。四、系统实现和演示要明确的是,该工程是一个基于MVC构造的,其中使用Struts2.0作为整个MVC的实现,其中的Action又充当控制器的角色(当然包括了struts.xml配置文件的导航作用),Hibernate3.1作为Model的实现。现在在MyEclipse10下新建空的web工程,然后在工程根目录src文件夹下建立两个包:action包用来存放Action类,entity用于存放从hibernate逆向过来的实体类的java文件。4.1系统Model层
26、实现由于工程属于数据库先行的方法,因此需要将数据库逆向成为hibernate实体类,hibernate3.1中提供了这样的工具。在逆向之前,我们需要对我们建立好的数据库在MyEclipse的Hibernate视图下建立一个连接。方法是,在Hibernate视图,左边DB Browser鼠标右击-【new】,然后再弹出的对话框中填写好相关信息,点击【Finish】即新建一个数据库连接。建立好需要的数据库连接之后,就要为工程添加Hibernate组件了,方法是:方法是:在工程上点击鼠标右键-【MyEclipse】-【Add Hibernate capabilities】,然后选择Hibernate
27、版本,这里用的是3.1,然后单击【Finish】完成Hibernate功能的添加。接下来,就可以着手将数据表逆向到Hibernate实体类了,还是要到数据库视图,双击翻开之前建立好的数据库连接,选择要逆向成为实体类的数据表,鼠标右击-【Hibernate Reserver Engineering】,在弹出来的对话框中,选择实体类生成的位置也就是之前建立的.entity包。勾选生成DAO类,其余设置保持默认即可,点击【Finish】完成数据表的逆向,此时再回到工程视图,可以看见生成好的实体类和实体的DAO类。这里,每一个实体类实际上由三个文件组成:抽象实体类、具体实体类和实体数据库访问对象(DA
28、O)。抽象类中包含了数据表的属性和一些抽象的方法,具体实体类中那么是方法的具体实现,DAO类那么是实现了对数据库记录的操作。Hibernate已经为DAO类提供了一些常用的方法,而Hibernate自身实际上是用hql语句对数据库进展操作的,如果在使用过程中需要自定义新的数据库操作方法,那么可以在对应的DAO文件中编写相应的方法。到此,Model层就实现了,由于使用了Hibernate,Model的实现变得非常容易。4.2系统配置和界面4.2.1 界面实现围绕系统用例,从用例出发来设计所需的Action。那么按照用例,第一个Action的作用应当是实现用户的登陆,假设登陆成功,该Action应
29、当导航到用户登陆成功界面,失败那么给出提示信息并停留在登陆页面。登录页面图如下:登录页面代码如下:学生角色登录系统成功后,会出现下面的页面:页面代码如下:您已经成功通过验证! 您可以使用如下效劳ahref=/studentAction.do?method=getDisplayCourse选修课程ahref=/studentAction.do?method=geCheckmark查看成绩ahref=/studentAction.do?method=getEditStudent&self=1更改信息 ahref=/login.jsp注销4.2.2 显示
30、学生所选课程信息4.2.3 显示课程成绩代码如下:查看成绩您所有的成绩课程名称学分成绩 <<Back 4.2.4 修改学生信息4.2.5 管理员管理界面修改学生信息修改教师信息修改课程信息修改综合4.2.6 hibernate配置文件设置4.2.7 Struts-config配置文件设置配置局部代码如下:五、开发过程中所用到的技术5.1 软件工程的思想方法使用了软件工程的来分析和设计一个系统。这样做确实加快了开发的效率,使得整个开发过程变得有条理。按照软件工程的方法思想,一开场就要先分析清楚需求。而需求又是由用户、使用者来决定的也就是说,要寻找系统的参与者。参与者找到后,
31、开场分析参与者的需求,在需求的带动下来寻找系统需要完成的功能这就是用例模型。表现用例模型的东西就是用例图。然后进一步的细化用例,用简短的文字对用例进展描述,以后再实现用例的时候,就可以参照用例描述来编写流程。找完了用例,接下来要把用例组合、实现出来。这里结合了MVC的思想:首先通过用例分析,弄清楚用例的先后关系,绘制出整个系统的流程设计框架,其表现形式就是流程图。流程图的每一个过程实际上是由用例变化而来的,而每个参与者有其不同的流程。流程图确定了,就是真正结合MVC思想的时候了。我尝试这把流程中的每一个流程视为一个动作和该动作的一个返回(这个返回可能是页面也可能是另外一个动作),而触发该动作的条件大多数都是用户对界面的操作,比方用户点击了登陆。5.2 MVC思想由于系统的特点,如果软件构造不够清晰,那么随着系统越来越庞大,业务逻辑越来越复杂,开发势必越来越困难。本系统的开发中用到MVC的思想,将模型层负责与数据库交互、视图和控制器解耦,使他们既能够强有力的传递信息又松散耦合。这里的model使用了Hibernate实