1、 重庆大学网络教育学院 毕业设计(论文) 题目 学生成绩管理系统设计与实践 学生所在校外学习中心 XXXX校外学习中心 批次 层次 专业142批次专升本计算机科学与技术 学 号 WXXXX 学 生 李XXX 指 导 教 师 杨XXX 起 止 日 期2017年2月
2、22日起至2017年4月5日止 摘 要 随着网络通信技术的迅速发展和信息技术的广泛应用,计算机的应用已普及到经济和社会生活的各个领域。教育领域也不例外,现今已经出现了各种远程网络在线教育系统、图书馆管理系统、学籍管理系统,学生成绩管理系统等。其中成绩管理是任一院校都不可缺少的部分,与传统的人工管理方式比较,它能够为管理人员提供充足的信息和快捷的查询手段,提高学校学生成绩管理的效果。所以学生成绩管理信息系统的开发和应用是必要的。 为了实现信息化管理,而开发这个学生成绩信息管理系统,以期给教职工带来方便。本系统采用B/S(浏览器/服务器)结构,使用SSH(struts2、
3、spring、heberinate)三大框架。B/S模式即网页的模式,在线登入学生成绩管理系统进行操作。本系统有三个权限:管理员,教师,学生。每个权限都有各自操作的模块,管理员可以管理教师和学生的基本信息,课程的安排,成绩的录入和导出;教师可以录入成绩以及学生成绩的导出;学生只能查看自己的成绩。 根据上述的需求,通过对需求的分析及各功能的详细设计,从而开发能够满足学校需求的管理系统。 关键词:学生成绩管理系统 JSP MYSQL 目 录 摘 要 2 1引 言 4 2.1 系统开发平台的选择 4 2.1.1 开发语言的
4、选择 5 2.1.2 开发结构的选择 5 2.1.3 数据库的选择 6 2.2 系统开发的理论与技术 6 2.2.1 MVC开发理论 6 2.2.2 SSH框架分析 7 3.1 系统需求 9 3.2 系统功能需求分析 10 3.2.1 系统功能组成 10 3.2.2 系统模块框图 11 4.1 系统功能设计 13 4.2 数据库的设计 18 4.2.1 数据库表结构设计 18 5 系统功能的实现与测试 21 5.1 SSH框架的搭建 21 5.2 功能的实现 22 5.3 系统的测试 26 6 系统的评价 27 参考文献 28 1引 言 随着计算
5、机技术的飞速发展,信息时代的到来,信息改变了我们这个社会。学校在管理、教学、办公各个方面也在悄悄地变化,作为一个教育单位不可缺少的部分——学生成绩管理系统,它的内容对于学校的决策者和管理者来说都至关重要, 一款先进的学生成绩管理系统必定会使教学更先进、办公更高效、管理更科学,信息交流更迅速,所以学生成绩信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。 作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,
6、具有着手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生档案管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。 因此,开发这样一套管理软件成为很有必要的事情,故决定选择学生成绩管理系统来作为本人的毕业设计,在很短的时间里开发出一套界面友好,功能强大,使用简单的适用于各规模学院的学生成绩管理系统。该学生成绩管理系统能有效的处理在校学生的成绩管理,具有成绩输入、成绩查询、成绩统计及打印功能。 学生成绩管理系统可以实施应用在各中、大、小院校中,适用范围很广,应用性强。随着系统实施的日益成熟,最终会使单机作业
7、为主的教学管理活动提高到这个平台上来,从而实现学校学生成绩信息管理的办公自动化,籍以提高办学效率和质量。使学校充分利用计算机所带来的新技术,为培养人才打下坚实的基础。 2 系统开发平台和相关理论与技术 本系统是面向全国的初中和高中的一款教学管理系统,经过本人对周边中学的调查,和对贫困地区学校的信息采集,针对国内的管理系统所存在的问题,从而开发这款学生成绩管理系统。本节将重点介绍该系统的开发环境和理论与技术。 2.1 系统开发平台的选择 目前计算机语言有c、c++、c#、.net、Java、PHP、汇编语言等等。开发学生管理系统需要选择合适的语言[2]。 2.1.1 开发语言的选择
8、 目前市面上的管理系统绝大部分用的都是Jsp、ASP.Net、PHP这三种语言。它们的共同点都是动态网页技术,都镶嵌在HTML代码中,用语言引擎来解释代码并执行代码。而JSP的语言引擎是java虚拟机,就是将jsp代码编译成.class文件,并由Java虚拟机来解释执行.class文件[11]。在这三种语言的环境下,HTML代码主要显示静态的页面,而程序代码进行业务逻辑的处理。一般网页的HTML代码是通过web服务器运行的,但是Jsp、ASP.Net、PHP这三种语言都要依赖环境虚拟机来编译执行程序代码,并把返回结果嵌入到HTML代码中,最后发送给浏览器,显示结果。Jsp、ASP.Net、PH
9、P是基于web服务的技术。它们的区别及特点如下: Jsp的特点无疑是跨平台性,因为使用Java API,所以可以在Windows、Linux、Mac等系统中运行[10]。从而扩展了JSP使用web服务器的范围,在者,JSP使用JDBC操作数据库,对那些运行在不同操作系统的数据库,避免了代码的移植而需要更换数据库的问题。 ASP是有微软开发的动态语言,其特点与JSP非常相似,功能主要可以实现动态网页,实现用户的动态交互功能,它的功能也就是它的特点,不同于HTML的交互功能,HTML只能简单的访问而无法动态的交互,是一种静态网站。开发工具使用微软开发的Visual Studio这个软件,运行环
10、境也非常局限,只能运行在微软的服务器产品IIS上。 PHP的特点也是跨平台性,支持几乎所有的数据库系统和操作系统,在市场上也较为普及。CGI脚本语言是一种强大的PHP语言,语法包含了C、PHP和Java的新型的一种语言,速度执行快,效率高,一般比Java,ASP的运行速度快,内嵌有加速引擎,性能稳定,资源占用少,代码运行速度快。并且与Java一样具有很好的可移植性和可扩展性,PHP可以运行在几乎所有的服务器上,属于开放软件,代码也完全公开,任何程序员可以为PHP扩展附加想要的功能。 结合实际情况和开发的环境,以及本人对这三种语言的了解程度,该学生成绩管理系统使用Jsp语言开发,即用HTML
11、语言开发页面,Java语言处理后台的业务逻辑。 2.1.2 开发结构的选择 Web开发是目前较为流行的开发体系,Java Web主要有两种开发结构:C/S开发结构和B/S开发结构[5]。C/S结构是一种客户机与服务器的访问交互,而B/S是一种浏览器与服务器的访问交互,本学生管理系统属于一个网站,需要在线登入查询学生的信息,所以用到的结构就是B/S结构。 2.1.3 数据库的选择 这些数据的查询以及信息的增删改,数据库都是缺一不可的后台,常用的数据库有:Oracle、Sql Server、MySql、Access等等。 Oracle:现在大型企业的主流数据库,价格昂贵,但性能非常优秀[
12、4]。 Sql Server:稍微贵些,但只能运行在Windows操作系统下,丝毫没有一点开放性,对跨平台的操作兼容性差,而且对系统的稳定性要求很高。 Access:操作简洁、方便,不依赖Server也可以对数据库操作,但安全性不够,加了用户密码容易被破解。 MySql:具有执行速度快、稳定性好、使用方便等特点,已经成为世界上最流行的开放数据库之一。同时, 由于它的跨平台性,MySQL数据库能运行Linllx、Windows、Max、HP—UX、AIX、Netware等2O多个平台上[7]。 综上所述,采用的数据库是MySQL。 2.2 系统开发的理论与技术 系统开发的理论
13、最实用的就是MVC设计模式,它是系统设计中的典型结构之一。用到的技术无非是SSH(Struts2、Spring、Hibernate)或者SSM(Struts2、Spring、Mybatis)三大框架。 2.2.1 MVC开发理论 学生管理系统的开发通过应用MVC开发模式,使其代码结构分成三层,以便设计结构清晰明了。 V:(view)视图,即用户界面,相当于与后台交互的一个端口。在B/S结构下,视图就是浏览器,浏览器向用户显示从后台返回的相关数据,并能够接受用户输入的数据,但是它不进行任何业务逻辑上的处理。 M:(Model)模型,它主要提供业务逻辑,就是对业务逻辑,和前台传过来的数据进
14、行处理,包括对数据的存取,加工操作。一个Model可以为多个view提供数据及业务上的处理。这样就实现了模型的可重用性,简化了代码,提高了效率。 C:(Controller)控制,主要负责控制视图与模型的流程。它就相当于一个多用开关,当客户端发送一个请求,开关端接受到请求,通过解析这个请求,需要发送给哪个模型,开关就往哪里打,控制端并不需要对数据进行处理,它只是一个桥梁,起到交接作用,最后的数据是通过模型调用相应的方法进行处理。 2.2.2 SSH框架分析 Struts2是系统开发的基础框架,主要控制页面的跳转流程,即页面导航的作用[6]。当客户端发送一个HttpServletReque
15、st请求login.action,然后控制器根据请求调用合适的Action,通过调用Action的Execute方法,获取从客户端传过来的参数,执行一定的业务逻辑,最后将处理结果返回到浏览器并显示。其流程如图:2.1所示。 图2.1 Struts2框架的基本流程 Spring是一个构造Java应用程序的轻量级框架,它即可以构建web程序,也可以构建Java程序[3]。Spring的核心主要是IOC控制反转,它不需要new一个对象,代码全程都不需要创建对象,而是通过Spring框架本身注入对象。即使用IOC容器,就不需要留心组件的创建;它的生存周期也大可不管;组件之间就可以很容易共享
16、测试也简单多了。其流程如图2.2所示。 A: 不使用Spring IOC B:使用Spring IOC 图2.2 Spring IOC流程 Hibrenate是实现对象/关系映射和数据库交互,JDBC访问数据库的代码就封装在 Hibrenate,并且还封装了一些简单的SQL语句,操作数据库时,只需调用其对象就可以实现简单的增删改操作[13]。其流程如图2.3所示。 图2.3 Hibrenate框架的基本流程 图2.4 SSH框架的总流程 关于开发学生成绩管理系统,总的可以分三层:显示层,业务逻辑层和数据库层。显示层就用JSP代码来完成,页面之
17、间的跳转即客户端跳转,还有服务器跳转都用Struts2这个框架来控制,很好的将jsp里的Java代码分离开来。使用Hibernate框架又很好的将访问数据库的代码与Action(处理业务逻辑)的代码实现了分离,降低了耦合度。然后Spring的引用,完美的与Struts2、Hibernate进一步整合,并使用它的IOC控制反转对控制逻辑和业务对象实现完全分离[9]。其流程如图2.4所示。 3 系统具体需求分析 当接到此系统开发任务后,通过调查,委托学校要求系统具有权限设置功能的登录模块,学生可以实现成绩信息查询功能。教务管理人员能够实现注册新用户,学生成绩信息的查询、录入、删除、修改、浏览、
18、统计等功能。再次就是经济上、技术上的可行性,当三者都达到指标的时候,我们就可以着手进行系统的开发。 3.1 系统需求 成绩管理主要是由教务处对教师、对课程、对学生、对学生成绩进行管理,以期让教师、学生能够随时对学生成绩进行各种查询。系统的服务对象有系统管理员、教师、学生。根据用户的身份有不同的需求。 管理员:即教务处,可以管理学生和教师的基本信息状况,还可以打印学生和老师的全部信息。 老师:可以录入本班学生的成绩,学生的成绩是需要由人工录入的,因此系统就需要设计一个学生成绩信息录入的窗口来录入期考成绩,并且在这个窗口中放入一个数据窗口来实现录入这方面信息的功能。还需要能查看学生的成绩。
19、并导出到excel表进行打印。 学生:可以查看自己的课程以及成绩,还有班级的排名和年段的排名。因此为了显示查询结果,就要设计一个数据窗口,并将其放在查询期考成绩的窗口中实现查询功能。 由于该系统是学校管理学生成绩信息的系统,因此必须具有一定的保密性,需要特定的人员才可以修改,因此需要设计一个用户登陆的窗口,使具有访问权限的用户才能登录此系统。为了简单化,我们的用户名和用户密码和数据库本身的用户名密码相同。系统的主窗口要能够在用户选中相应操作后,调出相应的窗口来使用户在窗口中完成相应的功能。 3.2 系统功能需求分析 本系统的设计限制了三个权限,管理员,教师,还有学生。系统管理员是权限最
20、大的,可以对教师与学生的基本信息进行管理,其次是教师可以对学生的成绩进行操作,权限最小的就是学生,只能查看自己的基本信息和成绩。总的权限:管理员>教师>学生。 3.2.1 系统功能组成 开发学生成绩管理系统实现学校的日常管理,需要如下这些功能: (1) 用户登入:登入类型有三个,需要进行用户类型校验。 (2) 账号维护:对密码的修改,可以防止密码的泄露。 (3) 班级管理:对班级的信息执行增删改查。 (4) 教师管理:对教师的信息执行增删改查。 (5) 学生管理:对学生的信息执行增删改查。 (6) 课程管理:对课程的信息执行增删改查。 (7) 成绩管理:可以对每个学生的成绩
21、执行增删改查,并排序,之后把页面信息导出到excel表,进行打印。 其整个系统的框图如3.1所示 用户登入 用户类型校验 学生 老师 管理员 账号维护 成绩管理 个人信息 成绩管理 个人信息 账号维护 成绩管理 学生管理 课程管理 教师管理 班级管理 排序并导出 成绩查询 执行增删改查 执行增删改查 执行增删改查 排序并导出 图3.1 系统整体框图 3.2.2 系统模块框图 (1)管理员的权限最大,可以对教
22、师和学生的信息进行操作,可以录入课程和成绩,并实现成绩的排序导出。其框图如3.2所示。 账号维护 班级管理 教师管理 执行增删改查 课程管理 管理员用户 学生管理 成绩管理 排序并导出 图3.2管理员框图 (2) 教师可以管理自己的个人信息和账号,可以对学生的成绩进行录入并导出。其框图如3.3所示。 账号维护 个人信息 执行增删改查 教师 排序并导出 成绩管理 图3.3 教师框图 (3)学生可以管理自己的个人信息和账号,只能查看成绩。其框图如3.4所示。
23、 账号维护 个人信息 执行增删改查 学生 成绩查询 成绩管理 图3.4 学生框图 4 系统详细设计 根据学生成绩管理系统的整个架构框图,对每个模块,以及每个模块的子模块进行详细的设计,比如登入界面的用户类型的校验它的流程是怎样的,主页面对应的各模块的增删改查的流程的设计,还有导出功能用到的方法,排序用到的算法等等。 4.1 系统功能设计 (1)系统登入验证 当用户在浏览器里输入系统运行的地址,系统就会显示登入界面,然后输入用户名,密码,用户类型以及验证码,点击“登入”按钮,系统对用户输入的信息进行处理,然后登入成功跳转到
24、主界面。如果用户名,密码,用户类型为空时,文本空右边就会显示: “请输入用户名!”,“请输入密码!”,“请选择用户类型!”等相应提示,输错又会提示“用户名和密码错误!”。登入超时是,系统弹出异常提示页面,登入失败。登入验证流程如图:4.1所示。 图4.1系统登入验证流程 (2)系统账号维护 添加账号:当用户进入主界面,左边是管理主菜单,点击系统账号维护里的添加账号,有两个文本框,然后输入用户名和密码,点提交,账号添加成功。访问数据库出错时,就会在页面上提示“请重新输入!”其流程如图:4.2所示。 图4.2系统账号维护流程 修改账号:点击修改按钮,在文本框里就会查找出系统原
25、本的账号,然后修改账号和密码点提交,弹出一个小框,提示修改成功。访问数据库出错时,就会在页面上提示“修改账号操作失败!”其流程如图:4.3所示。 图4.3修改账号流程 删除账号:点击删除按钮,页面就会弹出一个提示小框并显示:“是否要删除这条记录”,然后点确定,删除成功。当访问数据库异常,则系统跳转至错误提示页面,用户点击“返回”按钮,进入账户一览页面。其流程如图:4.4所示。 图4.4删除账号流程 账号维护总组件关系如图所示 Struts2配置映射文件:struts.xml 账号初始化 ZhaoAccountPage.jsp 账号维护列表 Index.h
26、tml ZhaoAccountAction 异常 管理请求 注入组件 更新 error.jsp updateZhaoAccount.jsp 添加 ZhaoAccountService addZhaoAccountPage.jsp 接口实现 DB 处理对象 ZhaoAccountServiceImpl I Hibernate ORM 注入组件 ZhaoAccountDAOImpl I ZhaoAccount Spring容器的管理:application.xml ZhaoAccountDAO
27、 图4.5 账号维护总组件关系 学生管理总组件关系如图所示: Struts2配置映射文件:struts.xml 教师管理列表 教师初始化 StuAccountPage.jsp Index.html StuAccountAction 管理请求 异常 更新 注入组件 updateStuAccount.jsp 添加 error.jsp StuAccountService 处理对象 addStuAccountPage.jsp DB 接口实现 StuAccountDAOImpl I Hib
28、ernate ORM StuAccountServiceImpl I 注入组件 StuAccountDAO Spring容器的管理:application.xml StuAccount 图4.6 学生管理总组件关系 (2)成绩的排名 在成绩排名中用到了排序的算法,在Java中排序算法其实有12种左右,其中最常用的也就三种:冒泡排序,快速排序,选择排序。 冒泡排序:其实从字面上就可以理解,冒泡就是气泡浮上来了,也就是说轻的气泡一定要上浮,重的气泡要在轻的气泡的下面,这样一来,假如说有一数组a[1…n],根据冒泡这一原理,两两比较,轻的在上,重的在下
29、反复进行比较,直到轻的都在上面为止。示列如表: 表4.7冒泡法演示 88 80 91 85 76 原来的数组 88 80 91 85 76 第一次比较演示 (88>76)交换(80>76)交换(91>76)交换(85>76)交换 76 88 80 91 85 第二次比较演示 (88>80)交换(80<85)不交换(91>85)交换 76 80 88 85 91 第三次比较演示 (88>85)交换(85<91)不交换 76 80 85 88 91 第四次比
30、较演示 (85<91)不交换 76 80 85 88 91 最终结果 选择排序:它就是进行每一次等待排序的数组元素中挑出最min或最max的那一个,按照顺序放在已排好元素的最前或最后。示列如表: 表4.8选择排序演示 88 80 91 85 76 原来的数组 88 80 91 85 76 第一次比较演示 在这五个数中选出最min=76 76 80 91 85 88 第二次比较演示 在这四个数中选出最min=80 76 80 91 85 88 第三次比较演示
31、 在三个数中选出最min=85 76 80 85 91 88 第四次比较演示 最min=88 76 80 85 88 91 最终结果 但是本系统采用ArrayList排序,它会自动调用一个内置的方法来实现降序或升序进行对成绩排序,然后通过ArrayList遍历输出显示到页面。 (3)成绩导出到excel表 成绩的导出方便了老师打印成绩排名表,大大提高了老师的工作效率。怎么样实现这个导出功能:导出功能导出的文件默认是excel表格式,先创建一个输出流对象,通过一个方法设定好
32、表的名字,然后设定好导出表的字段。 4.2 数据库的设计 数据库是数据存储的一个可以管理的仓库,是一个可以存储数据且存储内存庞大的仓库,数据不单单是指我们平时所说的12345这些数字,它也可以是图片,表格,视屏,音频以及文件。对于学生成绩管理系统数据库是非常重要的,没有了数据库,学生成绩管理系统就相当于没有了内脏的一个驱壳,根本就失去了它原本的作用。 4.2.1 数据库表结构设计 数据库是数据存储的一个可以管理的仓库,因为可以管理,所以要怎样管理数据库才能使数据库在安全性上达到指标,数据库的安全性实际上就是对数据库加密,加密方式其实有两种,一种是数据库本身加密,就是当你打开数据库时是
33、需要输入账号和密码的,这是第一层加密,这一层加密其实是很容易可以破解的。第二种加密就是代码的加密,这种加密方式安全性能高,不容易被破解。其次就是数据表结构的设计,表结构的合理性直接关系到数据操作的效率,表结构的合理性优化,可以提高数据库运行效率,也可以保证学生成绩管理系统的对数据的一致性和完整性。设计数据库时,要确定所要存储这些信息的字段,字段之间有什么联系,从而确定主键和外键,然后设计需要建几张表。每张表之间的相互关系是怎样的,尽量将表结构优化到最佳。 (1)下面是数据表结构的设计,总共设计6张表: 管理员表(管理员id,用户名,密码) 班级表(班级_id,班级_name,年级,教
34、师_id) 教师表(教师_id,教师_no,教师_ name,年龄,用户名,密码,联系方式) 学生表(学生_id,学号,学生_ name,性别,年龄,用户名,密码,联系方式) 课程表(课程_id,课程_no,课程_ name,课程_jiangci,课程_ weekly,学分) 成绩表(学生_id,课程_id,班级_id,成绩) (2)数据库表实例设计 本系统运用的数据库是MySQL数据库,MySQL数据库是一个小型的数据库,体积小,占用资源小,用于学生的研究是最佳的选择。接下来对本系统的这六张表进行展开分析。 管理员表有3个字段,管理员id作为主键,且不能为空,其他两个字段
35、为用户名与密码,也不能为空。具体的结构如表4.9所示。 表4.9管理员表 字段名 类型 长度 可否为 null 主键 外键 userId int 10 否 是 否 userName varchar 20 否 否 否 userPassword varchar 20 否 否 否 班级表有4个字段,班级id作为主键,教师id作为外键,其它两个字段为班级名称和年级。具体的结构如表4-10所示。 表4.10班级信息表 字段名 类型 长度 可否为 nu
36、ll 主键 外键 classId int 10 否 是 否 className varchar 20 是 否 否 nianJi int 10 是 否 否 teacherId int 10 是 否 是 教师表有8个字段,教师id为主键,且不可为空,其余的字段都可以为空,具体的结构如表4.11所示。 表4.11 教师信息表 字段名 类型 长度 可否为 null 主键 外键 teacherId int 10 否 是 否 teaNum varc
37、har 10 是 否 teaName varchar 20 sex char 1 age int 3 teaUser varchar 20 teaPW varchar 20 telephone int 20 学生表有8个字段,学生id作为主键,且不能为空,其余字段可以为空,其具体结构如表4.12所示。 表4.12 学生信息表 字段名 类型 长度 可否为 null 主键 外键 studentId int 10 否 是 否
38、 stuNum varchar 20 是 否 stuName varchar 20 sex char 1 age int 3 stuUser varchar 20 stuPW varchar 20 telephone int 20 课程表有6个字段,课程 id作为主键,且不能为空,其余字段可以为空,其具体结构如表4.13所示。 表4.13课程信息表 字段名 类型 长度 可否为 null 主键 外键 courseId int 10 否 是
39、 否 courseNum varchar 20 是 否 courseName varchar 20 courseJci int 2 courseZci int 2 credit int 2 成绩表有4个字段,学生id,课程id,班级id三个字段作为主键,且不能为空,成绩字段也不能为空。其具体结构如表4.14所示。 表4.14成绩表 字段名 类型 长度 可否为 null 主键 外键 stuId int 10 否 是 否 courseId int
40、 10 classId int 10 grade int 3 以上就是数据库表的设计,它们每张表之间都有一定的表关联,也就是关系数据库模型,根据表里的字段的相互关系,然后访问数据库。 5 系统功能的实现与测试 本章主要讲解系统的登入权限管理的代码流程的分析,以及成绩导出功能的详解,其它模块的流程分析已经在第四章详细讲过了。其次,当学生成绩管理系统开发完成后,测试是必不可少的关键的一个步骤,它可以检测出系统各功能是否符合规定的要求。测试分为两种,一种是黑盒测试,主要对系统的功能测试,是否能够正常运行。还有一种是白盒测试,主要是对代码的测试,通过调用debug对相应的cas
41、e进行运行测试,简单的说就调一遍代码的运行流程,看看每个逻辑以及参数值是否正确。 5.1 SSH框架的搭建 当我们写程序之前,一定要先搭建好整个系统的框架,很显然开发学生管理系统引入了SSH框架,所以我们要先把整个配置流程给做好,其次就是在这框架里写代码,这样开发效率就大大提高了。 (1)Hibrenate框架搭建 Hibrenate的作用是实现实体类与数据库表的映射关系。这关系的的配置文件是*.hbm.xml。其字段的所有信息都存储在t_*信息表里。然后还要创建Javabeen,对been的属性实现set和get方法。之后构建数据库访问类,其命名为:*DAO.java, 并继
42、承HibernateDaoSupport这个类。*.hbm.xml配置信息如下:
43、nate-mapping>
(2)Spring框架的搭建
Spring框架在这学生成绩管理系统起数据库连接池的作用,数据库的配置以及访问数据库的用户名和密码也是写在这个配置中,本系统的数据库用户名为:root,密码:123456。其中sessionFactory是数据库连接池,连接池里可以获取许多数据库连接,获取到的连接就是这个session,session代表一个数据库连接,Factory相当于session的工厂,并且Factory可以创建很多的session。其次Spring的还有个作用就是类的加载,整个业务逻辑中就不需要new一个对象来间接访问,直接通过Spring自身的作用 44、引用类就行了,并在该类中实现其属性的set和get方法。配置文件代码如下:
45、a,调用里面的方法执行业务逻辑,成功return succeed,跳到成功的界面,return error,跳到显示错误的界面。
5.2 功能的实现
本章主要对学生成绩管理系统重要的功能进行代码分析。
(1)登入功能
每个用户要进入本系统进行操作,都要输入用户名和密码,还要选择用户类型。其界面实现如图5.1所示。
图5.1 用户登入界面
当页面的文本框输入用户名、密码以及用户类型,点击登入按钮,之后就会触发控件onclick=check(),进入function check()这个方法 46、用if语句做判断,为空时就会提示“请输入用户名”和“请输入密码”,return false。输入有值时,通过loginService这个类调用其login()方法,将用户名、密码和用户类型传给这个loginService类,再通过login()方法里的if判断语句,进行用户类型的判断:当userType=1时,用户类型为管理员;当userType=2时,用户类型为教师;当userType=3时,用户类型为学生。
(3)账号维护功能
用户通过账号、密码和用户类型进入主界面,主界面的左边有六个模块:系统Manage,班级Manage,教师Manage,学生Manage,课程Manage,成绩 47、Manage。其功能界面如图5.1所示。
图5.1 管理员功能主界面图
账户添加:在jsp页面的文本框里输入用户名和密码点提交,通过form action=adminAdd.action这个标签,找到Struts配置文件相应的action的name,然后通过class路径=adminAction,method=adminAdd,找到adminAction这个类并调用adminAdd这个方法实现账户的添加,并返回成功提示:操作成功。其功能界面如图5.2所示。
图5.2 账户添加功能界面图
账户删除:当在页面上点击删除c账户时,就会触发onclick=adminDe 48、lete
控件,跳转到function adminDelete这个方法,通过property标签从值栈里取出userId,把这个userId传给function adminDelete这个方法,根据Struts的配置文件然后跳转到adminAction这个类,调用adminDelete方法,根据从页面传过来的userId进行删除,并返回提示:删除成功!。其功能界面如图5.3所示。
图5.3 账户删除功能界面图
修改密码功能
在jsp界面的文本框里首先需要输入原密码:222222,然后输入新密码:123456,再确认密码,点击“修改”按钮。触发onclick=chec 49、k()控件,调用function check()方法,通过if语句判断:原密码是否正确?新密码是否为空?确认密码是否与新密码一致?然后调用loginService类,实现adminPwEdit方法,将新密码传进这个方法进行业务逻辑处理,返回成功并提示:修改成功。其功能界面如图5.4所示。
图5.4 修改账户功能界面图
(2)学生信息管理模块功能
学生信息管理主要是对每个学生的信息执行添加,修改,删除和查找的操作。其中添加、修改和删除与上一小节的账号的增删改类似。这里主要分析学生的查找功能,可以按照学生的学号进行精确查找。
当在jsp页面的查找文本框里输入:1031310 50、2这个学号,点查询,通过form action=search.action表单,根据Struts配置文件找到对应的action的name=search,然后解析class=stuAction,method=search,找到stuAction类,调用search方法,利用request.getParameter这个方法取得学号:10313102,然后在list集合里取得这个学号的所用信息,并显示到页面上。其功能界面如图5.5所示。
图5.5学生精确查找界面图
(3)导出功能
导出功能是以excel格式将数据库里的数据导出到本地,点击生成报表,就会出现一个下载框,点下载,生成了一张






