随着我国教育水平的提高和新生数量的增加,合理妥善高效的进行新生接待,不但成为各个学校亟待解决的问题,对于广大新生来说,也是最先让他们了解学校形象的一个好机会。但是许多学校没有采用通过高效的系统来操作解决新生报到的问题。开发一套新生报到管理系统,通过计算机高效准确的管理大学新生信息是迫切需要的。
本系统主要通过开发一个项目,实现高效率的管理新生报到和学生信息等。系统主要使用Java语言进行开发,前台页面配合HTML+CSS+JS实现新生信息的录入以及数据查询,后台数据存取采用MySQL数据库。系统将分为前后台两个部分,前台为新生设计,通过验证码验证登录。新生可以查看班级和宿舍等模块的信息,后台则是为管理员提供,管理员可以修改新生及班级等信息。
【关键词】:Java;管理系统;MySQL数据库
【Abstract】
With the improvement of education level and the increase of the number of new students in our country,New reception in reasonable and efficient is important. It is not only the question that urgently need to be solved by University.But also the good chance for the majority of the new students to learn about their new school. But generally, efficient student register system rarely be used. From the point of saving time and improving efficiency. Developing a system with accurate and efficient to manage the freshman information through computer is urgently needed.
This system mainly develops a program to bring about efficient management of freshman registration and student information.The project is mainly developed using the Java language.The foreground is displayed with HTML+CSS+JS. Data is stored using the MySQL database.System will be divided into two parts, before and after, the front desk is provided to the new students, students login system by verify code. the background is in order to manage the content of the front desk. It is provided to manager the man who can update students and class information.
【Key words】: Java;Management system;MySQL database
1绪论 1
1.1课题背景 1
1.2目的和意义 1
1.3课题研究内容 1
1.4开发工具及技术 2
1.4.1开发平台 2
1.4.2开发技术 2
1.5本章小结 3
2 需求分析 4
2.1需求分析 4
2.2可行性分析 5
2.2.1 技术可行性 5
2.2.2 经济可行性 5
2.2.3 安全可行性 5
2.2.4 操作可行性 5
2.3功能需求 6
2.4本章小结 6
3 系统功能设计 7
3.1系统功能模块图 7
3.2平台用例图 8
3.3数据库的分析与设计 8
3.3.1 数据库总体设计 8
3.3.2 数据库原则设计 8
3.3.3 数据库概念设计 9
3.4数据库表的逻辑结构设计 10
3.5本章小结 12
4 系统主要功能实现 13
4.1 系统前台 13
4.1.1登录界面 13
4.1.2个人信息 15
4.1.3宿舍查询 15
4.1.4分班查询 16
4.1.5管理员界面示图 16
4.1.6修改密码 17
4.2 系统后台 17
4.2.1 用户新增 17
4.2.2 分班管理 18
4.2.3 班级查询 19
4.2.4 宿舍删除 20
4.2.5 宿舍入住管理 21
4.2.6 收费管理 23
4.3 本章小结 24
5系统测试 25
5.1 测试方法 25
5.2 系统测试环境 25
5.3 测试过程 26
5.3.1登录模块测试 26
5.3.2用户管理功能测试 26
5.3.3班级查询功能测试 26
5.3.4收费新增功能测试 27
5.3.5删除用户功能测试 27
5.4本章小结 28
6结论及展望 29
参考文献 30
致谢 31
1.1课题背景
随着硬件,软件和网络的快速发展及广泛应用,人们正在引入信息社会和知识经济。因为当代信息技术和经营理念的蓬勃发展,建立完备的信息管理系统刻不容缓。学校的招生规模逐年增大,入学新生人数往日剧增,在应对新生入学时需要采集更多资料。面对海量的新生资料,需要便捷的学生信息管理系统来提高处理新生报到问题的效率。
新生报到管理系统是一个典型的信息管理系统,对于新生报到管理系统主要开发任务应该包括前端页面开发和数据库开发。选择JSP来处理应用程序开发技术,是因为JSP提供集成开发环境和各种组件,特别是对数据库的支持,完成数据库中的各种操作,实现新生管理的目标。使用MySQL作为后端数据库。首先,建立初步的系统前端界面,根据学校对系统的需求进行不断修改和改进,直到形成能达到学校满意度的实用系统。
1.2目的和意义
新生报到管理系统是为了帮助学校解决新生报到的问题。在每个新生来学校报到时将每个新生的基本信息输入到数据库中,这样可以减少通过学校入学考试取得入学资格,但不希望来到学校的新生的相关信息存储在学校的的相关数据库中,同时使用该系统可以对新生信息进行有序存储,万一数据丢失能够快速的恢复,易于查找和提高可靠性。
新生报到管理系统为校园信息技术的成功组建添上了浓墨重彩的一笔,在融汇了传统新生报到工作的经验报告,通过现代化的管理思想,利用信息技术规范新生信息的基本记录,以及班级宿舍等管理。该系统是为了管理员提供的的数字网络管理系统。基本目标是建立一个平稳的学生和学校之间在校内外交流信息的渠道,使信息技术成为促进教育生产力和提高学校管理和效率的有力工具。
学期开始时各种关于学生的信息也增加了。面对大量的信息,为了减少学校工作量,为了提高学生入学信息的效率开发一个新生报到管理系统是必须要完成的、是刻不容缓的。通过这样的系统,可以实现信息的规范化管理,科学统计和快速咨询。这将减少管理人员的工作量。管理人员对系统进行管理,提高了教学质量,真正做到了教学计划中。
1.3课题研究内容
在计算机上建立新的学生管理系统可以实现快速录入,分类,搜索和删除。进入系统之前进行密码认证可确保系统的安全性,为学校提高工作效率,提高团队效率,为制定决策和监控学生状况提供了强有力的工具。
1.4开发工具及技术
1.4.1开发平台
本毕业设计的功能模块使用Java作为后台开发语言,前台页面配合HTML+CSS+JS实现数据显示,使用MyEclipse作为开发工具,使用MySQL数据库作为后台数据维护平台,使用Tomcat7作为应用服务器,在MyEclipse中启动服务器后,可以直接在IE浏览器中输入端口号及项目名称进入系统。
1.4.2开发技术
1、Java
面向对象编程语言有很多,但是Java则一直因为其功能强大、简单易用等独特的特点,尤其是平台独立和可移植性使之深受人们喜爱。
Java是一个完整的平台,有一个庞大的库[1]。它设计之初借鉴了C++语言的各种优点,此外,java SE API子集和java虚拟机可以统称为JRE(java运行时环境),和JRE支持Java程序[2]的标准环境。
Java语言不仅本身含有许许多多的组件,能够自己适应很多的环境。而且为仍众多的第三方开源社区提供了支持,开放开源的组件作为解决方案,让人们更加得心应手的开发。Java最初是为嵌入式系统提供的一种解决方案,但是它现在应用的领域已经十分的广泛,包括桌面应用程序、分布式系统等[3]。
2、Eclipse
Eclipse也是一个被普遍运用的的多平台集成开发环境(IDE)。Eclipse本身只是一个框架平台。许多软件开发人员基于Eclipse开发他们自己的IDE.[4],在这次系统制作中主要的还是MyEclipse10。使用它极大地提高了数据库的使用效率和和应用服务器的集成。它是一个功能性的JavaEE集成开发环境,包括完整的编码、调试、测试和发布功能,完全支持HTML、Struts、JSP、CSS、Javascript、Spring、SQL、Hibernate[5]。
3、HTML+CSS+JavaScript
HTML 是用来描述网页的一种语言,CSS样式定义如何显示HTML元素,JavaScript是一种脚本语言,在发往客户端之前他的源代码不需要编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行[6]。
4、Tomcat服务器
Tomcat作为Jakarta 项目中的一个核心项目。它是由Apache、Sun、一些公司及个人共同开发而成的。服务器是一个免费的开源web应用服务器,属于轻量级应用服务器,Tomcat在中小型系统中并发访问用户并不是很多用例都是常用的,是首选开发和调试JSP应用程序。
因为Tomcat服务器作为一个免费而且开源的J2EE容器,并且它提供了一个成熟且独立的管理工具。这让它丝毫不亚于那些商业化的竞争对手。
5、JavaScript
JS,JavaScript,是一种轻量级的编程语言,可以插入HTML页面。
使用JavaScript语言时,HTML的脚本必须位于。
6、MySql数据库
MySQL是一种关系型为源代码开放型的数据库管理系统,由于MySQL的源代码对公众是开放的,所以每个人都可以根据自己的需求在General Public License的许可下下载并根据个人不同的需求对其进行修改[7]。MySQL之所以会受到大众的青睐,其根本原因是速度、可靠性与适应性。
MySQL的标志-海豚的名字是sakila。虽然MySQL不具备非常完善的功能,但由于它的源代码对公众开放,以及传播程度十分广泛,所以大部分公众都对它有所了解,甚至是正在使用它。
1.5本章小结
介绍了关于新生报到管理系统的基本信息,新生报到管理系统的课题背景以及目的和意义,最后确定了新生报到管理系统的开发工具与技术。
2.1需求分析
新生入学管理系统是对学校管理的一种组合。根据新生入学管理信息所面对情况真实需求,提供了丰富的分析和管理功能。具有信息化,人性化的界面,是为提高高校管理的效率。新生报到管理系统的目的是为新生提供大学信息管理的帮助,为了减轻新生报到时管理人员的负担。为了顺利完成管理新生报到的任务,提高管理部门的工作效率。
如果学校的新生报到流程只是依靠人工管理,面对大量的新生信息,管理员无法迅速地提取出关于新生的重要信息,对新生的信息做出相应的判断和处理。学校的决策只能依据人工整理数据来发起,在浪费大量人力、物力的同时无法做到实时监控,难以保证数据的准确性和及时性。因此,先进的管理系统在实际操作中的实现就成为了一个可望而不可及的目标。
鉴于现代科学管理理论和信息处理技术的高速发展,完善并建立信息管理系统是必不可少的。面对逐渐壮大的学校规模和新生群体的增加,需要处理的信息量也会随之变大,正是由于这样,就更加需要一个学生信息管理系统来提高管理部门的工作效率。一个高质量的管理系统,可以完成诸如规范管理、科学统计、快速查询等任务,降低管理部门的工作量。特别是在面对大量数据时,交给计算机处理能充分发挥其优点,减少失误。计算机前期的信息管理系统开发是完成系统管理的充要条件。
系统中将会有两种类型的用户:普通用户和管理员。这两种用户的功能是截然不同的,管理员可以在系统新增普通用户,管理员可以添加新的宿舍,可以提供新生的缴费情况,而且可以将新生分配班级。普通用户即新生则可以查看上述的信息,方便掌握关于自己新宿舍,新班级的第一手信息。
在具体制作系统时遇到了许多问题,通过参考书籍与结合网络上现有的知识。在实现时该将系统大概分为用户管理、分班管理、收费管理、宿舍管理4个功能。
1.分班管理模块:主要有分班管理和分班情况查询的功能。此模块主要是为学生分配班级,还可以查询学生的分班情况,管理员可以添加删除班级。
2.收费管理模块:主要有收费情况登记和收费情况查询功能。该模块主要是为学生登记缴费的情况和查询收费情况。
3.宿舍管理模块:主要有宿舍分配和宿舍情况查询的功能。该模块主要是为报到的学生分配宿舍,还可以查询宿舍分配的情况。
4.用户管理模块:主要是录入前来报到的新生的资料:例如姓名、学号、出生日期等基本信息。
2.2可行性分析
2.2.1 技术可行性
开发语言为java。java的社区活跃度强,可用有效插件多,可以为系统的功能开发提供良好的技术支持,而且java开发的web项目跨平台性最好,具有良好的移植性,方便后期的项目部署运维,经过多年的发展,java很多组件经历了很多考验,保证了项目的稳定与数据安全,因此使用java语言进行项目开发,技术性具有可行性。
2.2.2 经济可行性
开发本课题的项目,需要投入的人力,物力资源要在可控范围内,软件层次,我们需要WindowsXP系统或者以上版本,tomcat服务器版本为6.0以上,jdk的版本为1.6,可以根据自己的环境进行适当修改,这些软件资源个人电脑可以满足,硬件资源建议使用规格为运行内存4GB及其以上内存,存储空间为500MB以上,处理器建议使用酷睿类型,综合考虑,经济上对开发者没有负担,经济具有可行性[8]。
2.2.3 安全可行性
Java 主要用于网络应用程序开发,因此对安全性有较高的要求。如果没有安全保证,使用者在系统中输入的数据及数据库中的信息会受到严重威胁。Java 通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏,当Java 字节码进入编译器时,首先必须经过字节码校验器的检查,然后,Java 编译器将决定程序中类的内存布局,随后,类装载器负责把来自网络的类装载到单独的内存区域,避免应用程序之间相互干扰破坏[9]。最后客户端用户还可以限制从网络上装载的类只能访问某些文件系统。上述几种机制 结合起来,使得Java 成为安全的编程语言。因此使用Java进行项目开发,可靠性与安全性可以满足需求,具有可行性。
2.2.4 操作可行性
本系统主要为高校的新生报到设计,由于高校的教职工都具有一定的教育水平且新生报到管理系统的操作什么简单仅仅需要简单的输入,所以在高校职工操作时不会有任何问题。操作具有可行性。
2.3功能需求
本系统主要提供两种角色,一种是使用者的角色,一种是管理员,通过给不同角色分配不同权限,实现数据的有效隔离,保证了系统的安全运行,本系统最大的特点是使用操作简单、友好的提示信息。本系统将实现以下基本功能:
新生报到系统采用MVC模式,主要使用JSP、Struts框架、Hibernate技术。
Struts技术主要负责处理业务层的处理和前台页面的设计。Hibernate技术主要是持久化对象,我们可以通过操作类,代替对数据库中数据的操作[10]。该系统主要分为用户管理、分班管理、收费管理、宿舍管理4个模块。
系统的功能应能够完成:数据查询、数据更新、用户管理。
数据查询:在管理员在系统中添加过数据之后,用户和新生都可以通过查询语句在系统的查询界面查询出自己需要的信息。
数据更新:数据更新包裹数据删除和数据修改。数据删除功能将误加的新生的相应记录从数据库中删除(如新生未能够正常到校报到或者退学)。数据修改功能允许用户在系统分配的操作权限内对他选择的记录进行相关信息修改。
用户管理:系统管理用户和普通用户。系统管理用户拥有对系统所有数据进行操作的权限。系统管理用户不仅可以修改任何人的信息而且可以对其他用户的信息进行修改。普通用户拥有查询权限并能对自己的用户密码进行修改。
本系统的使用对象是学校职工、学校领导和维护人员,用户只要懂计算机的基本操作就可以使用该系统。
2.4本章小结
在这章中详细介绍了新生报到管理系统的需求分析,在本章中可以了解到新生报到管理系统共有几个模块以及每个模块的功能。接着是对于新生报到管理系统的可行性的分析,只有确切的得出结论:新生报到管理系统是可行的,才能继续开展接下来的数据库的设计工作和具体代码的编写。
3.1系统功能模块图
系统的根据对系统的功能进行分析我们总结新生报到管理系统的具体功能模块可以按照业务逻辑进行拆分,这样就可以实现业务与代码的分离,保证后期开发的高维护性,系统的整体设计出发点为用户角色,通过分析不同的用户角色,实现功能划分,保证了不同角色不同功能,这样对系统的数据就做到了良好的隔离,下面是系统基于用户角色进行的功能划分,前台即新生登录后只能在界面上查看到查询关于自己的信息,在系统登录时加入了一个验证码功能只有当验证码输入正确时才能成功的进入系统,当管理员进入系统后则可以新增学生并且给学生分配不同的班级和宿舍,在分配宿舍时为了防止有的新生有特殊的要求,比如有的新生不想住一楼,特意在分配宿舍的界面加入了备注栏目。当新生有特殊要求时可以及时在系统中显示出来,从而提升系统的流畅度与高性能。系统的功能模块图如图3-1所示:
图3-1 系统功能模块图
系统中管理员主要包含5个功能模块,分别是:用户管理、宿舍管理、分班管理、宿舍入住管理、收费管理。作为管理员是整个系统最关键的人物。因为整个新生报到管理系统都是由管理员发起,它可以新增新生,也只有他才可以添加新生,添加新的宿舍,并且可以添加班级,以及将新生分配到不同的班级,以及可以将误增的信息删除。管理员要及时的对新生的报到做出反馈,这是赋予管理员的特权,同时也是义务。对于新生报到的即时反馈,能够极大的提高新生对学校的感官,能够提高校的形象。
3.2平台用例图
1、用户管理用例图
(1)用例名称:用户管理(新生管理)
(2)描述:管理员在登录进系统后可以在用户管理模块中选择新增学生信息即添加学生用户,同时可以删除,修改学生用户的信息,而新生在登录时只可以查询自己被分配的班级与宿舍等基础信息,不可以对系统的其他地方进行修改.
(3)参与者:管理员和用户
(4)用例图如图3-2用户管理用例图所示:
用户
图3-2用户管理用例图
3.3数据库的分析与设计
3.3.1 数据库总体设计
用户在平台的交互操作很大一部分实质就是在操作数据库中的数据,正因如此,作为数据存储的重要媒介–数据库的设计是十分重要的。因为数据具有核心的价值。数据库的设计不能脱离实际的应用需求而闭门造车。对数据进行的结构化设计要根据实际的业务需要来做,综合考虑到开发的成本、搭配的合理性以及操作的灵活性等,使用MySQL数据库是最佳的选择。MySQL数据库是完全免费的,使用它不需要任何费用,可以直接从网上免费下载[11]。
3.3.2 数据库原则设计
数据库在设计时,首要的原则是要根据实际的业务需求来设计。在设计好实体模型的基础后,再进一步考虑接下来的设计。
再明确业务需求后,此时便可以开始进行数据库的概念设计,以明确实体间的关系。完成概念设计后,再开始进行数据库的逻辑设计。
本系统在数据库的设计过程中,着重于了下面4个方面:
1)要层次分明、数据的布局要合理,确保数据的结构化、规范化和标准化[12];
2)要对数据冗余有正确的认识:数据冗余是要尽力去避免的,但是也不可以一味的追求减少数据冗余,一切以完成系统为前提.
3)要设计好每个数据实体的主键和外键,这是处理好实体间关联的关键,同时也是数据参照完整性的保证;
4)要维护好数据一致性和正确性;
3.3.3 数据库概念设计
数据根据对系统所做的需求分析、系统设计,规划出本系统使用的数据库实体分别为宿舍信息实体、班级信息实体、收费信息实体、新生信息实体和宿舍信息实体等。
1.宿舍信息实体
宿舍信息实体包括宿舍编号、宿舍名称、注册时间、宿舍备注等属性。宿舍信息实体的E-R图如3-3所示:
图3-3 宿舍信息实体图
2.班级信息实体 班级信息实体包括班级名称、新生名称和分班时间等属性。
3.收费信息实体 收费信息实体包括新生名称、收费缘由、收费金额等属性。
4.新生信息实体
新生信息实体包括新生姓名、联系方式、出生日期、新生密码、家庭住址、联系电话
及籍贯等属性,新生信息实体的E-R图如3-4所示:
图3-4 新生信息实体图
5. 宿舍入住信息实体
宿舍入住信息实体包括宿舍名称、新生名称、床号、入住时间、备注信息等属性,其E-R图如3-5所示。
图3-5 宿舍入住信息实体图
3.4数据库表的逻辑结构设计
根据上述E-R模型的设计,新生报到系统中各个表结构,下面将会作出详细说明:
(1)用户表(t_user)承担着存储系统中所有用户的职责。本系统中所有的注册用户都在这张表中。用户注册的时候就要仔细填写好信息。用户表中包括新生的用户名(学号)、密码、姓名、出生日期、性别、联系方式、籍贯和家庭住址等字段,在本张表中将username即学号设为主键,当新生被加入系统中会给新生分配一个学号,为了防止重名的情况发生,所以学号这个概念是必须要引入的。此外在这张表中特地加入了紧急联系人和紧急联系电话,这样以防新生在学校发生事故或者出现意外的时候能够尽快的联系到新生的监护人,方便处理接下来的事情。而且在表中增加了hobby这个成员,这样在登记新生信息时就可以多角度、全面的完善新生信息,有了这些信息管理员甚至可以在分配宿舍的时候将拥有共同爱好的人分配在一起,这样可以帮助新生入学时更快的融入这个新环境。具体如表3-1所示:
表3-1用户表
列名 数据类型 长度 允许空 是否主键 说明
username varchar 10 Not null 是 学号
password char 30 Not null 否 密码
name varchar 21 Not null 否 姓名
birthday char 100 Yes 否 生日
sex varchar 5 Yes 否 性别
tel char 100 Not null 否 电话
jjlxr varchar 30 Not null 否 紧急联系
jjtel varchar 100 Not null 否 紧急电话
jg varchar 33 Yes 否 籍贯
location varchar 20 Yes 否 家庭住址
hobby char 20 Yes 否 爱好
(2)宿舍信息表(t_house)。表中包含了宿舍的大体信息。表的具体结构包括ID、宿舍的名称、宿舍的编号和创建时间,在宿舍表中显而易见的是宿舍的编号最为重要,只要有了准确的编号,新生才能够准确的找到宿舍。并且在管理员新增了一个宿舍后,宿舍表中就会给一个ID来显示已经有多少个宿舍,方便学校统计和统一管理。此外还添加了h_bz这个表成员,管理员可以填入这个宿舍已经入住几个成员防止重复添加。表结构如表3-2所示:
表3-2宿舍信息表
列名 数据类型 长度 允许空 是否主键 说明
id Int 32 Not null 是 主键
h_name char 20 Not null 否 宿舍名称
h_time time 40 Not null 否 创建时间
h_number char 50 Not null 否 宿舍编号
h_bz varchar 100 Yes 否 宿舍备注
(3)宿舍入住表(t_housemanage)主要是记录新生被分配到不同宿舍。在填写前,宿舍的信息和新生的信息必须存在的。因为如果没有新生信息和宿舍的信息,系统是无法将学生分配的即若想入住,新生信息和宿舍信息二者缺一不可。这样就能保证数据库的完整性。表结构中还包括ID、宿舍名称、床号、入住时间等字段,其具体的表结构如表3-3所示:
表3-3宿舍入住表
列名 数据类型 长度 允许空 是否主键 说明
id char 32 Not null 是 主键
h_name char 32 Not Null 否 宿舍名称
username varchar 10 Not Null 否 学号
bed varchar 20 Not null 否 床号
h_time time 40 Not null 否 入住时间
house Int 32 Not null 否 宿舍号
(4)班级表(t_grademanage)主要是记录班级的信息以及新生所分配到的班级,也就是说班级的信息以及新生的分配班级信息都存储于这张表中。作为系统的一项重要功能,一定要有新生的信息才能添加进班级。具体表结构如表3-4所示:
表3-4班级表
列名 数据类型 长度 允许空 是否主键 说明
id char 32 Not null 是 主键
username varchar 10 Not null 否 新生
g_name char 20 Not null 否 班级名称
g_time time 40 Not null 否 班级创建时间
g_info char 200 Yes 否 班级简介
(5)收费表(t_money)主要是记录收费的情况以及收费原因,让新生能够清晰的了解到收费的缘由,为学校接下来的活动提供便利。并且由于收费必须要准确且要和新生一一对应的不能出现二次收费的现象,所以在建表的时候需要和user表中的用户名即学号相关联。具体表结构如表3-5所示:
表3-5收费表
列名 数据类型 长度 允许空 是否主键 说明
id char 32 Not null 是 收费编号
username varchar 10 Not null 否 新生
m_name varchar 32 Not null 否 收费名称
m_time time 40 Not null 否 收费时间
m_number char 50 Not null 否 收费金额
3.5本章小结
在第三章中介绍了系统的功能设计。系统中的每一个模块都是必不可少的,这几个模块既相互独立又在某些方面相互关联。接着介绍了新生报到管理系统的数据库设计,详细的说明了表的成员、表的结构、表之间的相互联系。
4.1 系统前台
系统前台主要功能包括个人信息、宿舍查询、分班查询、宿舍入住管理、收费查询四个的功能。前台是系统在使用时第一个出现在人们眼前的东西所以前台必须做的完善,才能给人们留下深刻的印象。为此在登录界面时特意将系统界面颜色作成天蓝色给人一种博大的感觉,给人一种美丽、文静的视觉效果。
4.1.1登录界面
用户进入系统需要进行登录操作,登录成功后才能进行功能操作,用户登录界面如下,在登录界面中除了正常的用户填写账号和密码以外,为了提高系统的安全性特意添加了一个验证码认证。
该页面中所涉及的重要表单元素如下所示:
name type 标签参数 备注
login_form form method=post action=“login.action” 表单
username text name=“util.s_0” 用户名
password password name=“util.s_1” 用户密码
logincd text name=“code” 验证码
submit_login submit value=“登录” 登录按钮
表4-1 登录页面所涉及的重要表单元素
管理员填入账号和密码后,点击“登录”按钮,提交到adminLoginController控制器中,调用loginSave方法检验管理员是否登录成功。若账号和密码两者不匹配会提示登录失败信息并提醒管理员重新登录,若匹配,将账号存储在session里面,且直接进入管理员管理界面。
登录界面如图4-1所示:
图4-1 登录界面图
用户在表单里填入用户名和密码后,点击“登录”按钮,提交到LoginAction控制器中,调用loginAction方法检验用户名、用户密码与数据库当中的数据是否匹配。若用户名和密码两者不相匹配,则会提示“登录失败!”;若验证码不匹配,则会提示“验证码错误!”;若均相匹配,则将账号存储在session里面,并直接进入系统主界面。loginAction方法如下所示:
public Strincg loginAction() throws Exception {
Map session = ActionContext.getContext().getSession();
String random = (String) session.get(“code”);
if (random != null && random.equals(code)) {
List list = objectManager.getUtil(“from User where s_0 = '”
+ util.getS_0() + “’ and s_1 = '” + util.getS_1() + “'”);
if (null != list && list.size() > 0) {
util = (User) list.get(0);
errMsg = “”; return SUCCESS;
} else {errMsg = “登录失败!”;return “fail”;
}}
errMsg = “效验码错误!”; return “fail”;
}
代码实现的具体流程为:获取session,从session中取出验证码,判断验证码不为空且正确,根据页面传入的用户名和密码查询User表得到list集合,如果集合不为空,拿到这个用户信息,返回success;否则,返回fail,登陆失败,并提示失败信息。
4.1.2个人信息
个人信息展示了用户的姓名、出生日期、性别、联系方式、紧急联系人、紧急联系人方式、住址、籍贯等信息.如果新生想修改自己的个人信息仅仅需要点击修改信息按钮进行修改,修改结束后点击提交即可。效果如图4-2所示:
图4-2 个人信息图
4.1.3宿舍查询
宿舍查询是新生在登录新生报到管理系统之后按自己的需求查询到被分配到的宿舍。新生可以根据宿舍名称、宿舍编号查询已被管理员录入系统的宿舍。因为有的宿舍是在同一天加入系统中,所以特意添加了宿舍编号查询,根据惟一的宿舍编号可以最准确的查询出新生被分配到的宿舍。在查询出宿舍后,新生可以继续查看宿舍的信息。效果如图4-3所示:
图4-3 宿舍查询图
4.1.4分班查询
分班查询可以查询新生的班级和上面的宿舍管理一样也是可以通过查询班级名称和班级简介来显示新生被分配到的班级。但是当新生没有被分配到具体的班级时,系统中无法查询出该生的班级信息。运行效果如图4-4所示:
图4-4 分班查询图
4.1.5管理员界面示图
管理员是系统最关键的人物了,所有的任务的起始点几乎都在管理员身上,所以对管理员界面一定要给特殊设计,为了使管理员在工作时能快速的寻找到需要使用的模块,我将整个系统的导航放在了左侧。且在管理员界面中加了一定的指导语句,为管理员减少工作量。具体运行效果如图4-5所示:
图4-5 管理员界面图
4.1.6修改密码
为了系统的安全,为了保障新生的利益,在新生从管理员处得知自己的帐号时必须要给新生能够修改密码的能力,能够及时、方便、简洁的修改密码这是一个的含有登录能力的系统的必不可少的功能。效果图如4-6所示:
图4-6 修改密码界面图
4.2 系统后台
系统后台主要功能包括:用户管理、宿舍管理、分班管理、宿舍入住管理、收费管理。下面就每个功能模块进行叙述。当新生来报到的时候管理员需要及时在系统中添加新生的各种信息。在新生报到前管理员可以提前在系统中添加好宿舍,等新生报到的时候能第一时间完成整个系统的流程。
4.2.1 用户新增
用户管理在管理员的权限下可以新增学生的信息也可以查询新生的信息.且用户名是唯一的,系统中不允许有用户名相同的人存在这也是为了防止有重名的人影响到系统的使用.在录入到系统中的时候管理员需要十分谨慎,虽然系统有修改的选择,但也要减少失误。在填写用户信息时为了方便更好的管理系统,我在增加界面添加了一个选择新加用户权限的功能,这样就可以通过最初预设的admin管理员新添加新的管理员来协助处理新生报到的问题。在新增用户时需注意用户名即学号是唯一的,当添加相同学号时系统会提示失败。运行效果如图4-7所示:
图4-7 用户新增图
用户新增后台核心代码,做如下描述:
public String saveOrUpdateObject() throws Exception {
if (null != util && 0 == util.getId()) {
String sql = “from User where s_0 = '” + util.getS_0() + “'”; //查询数据库已存在的用户名
List list = objectManager.getUtil(sql);
if (null != list && list.size() > 0) {
errMsg = “该用户名已被使用”; // 当用户名已存在时显示添加失败
return “saveOrUpdate”; //返回到新增用户的界面
}
}
objectManager.saveOrUpdateObject(util);
util = null;
errMsg = null;
return getAllUtil();
}
4.2.2 分班管理
分班管理模块的前提是有新生已经在系统中注册,因为只有有新生才可以分配班级,在分配班级时要时刻注意新生的选择与是否重复选择新生,在填写班级的简介时可以写上辅导员的名字和联系方式方便学生沟通。在这个分班时为了确保能够按照新生的用户名来安排新生的班级所以在代码中加了语句,使新生的用户名能被查询到。实际效果如图4-8所示:
图4-8 新生分班图
分班管理核心代码如下:
public String initUtil() throws Exception{
listUser = objectManager.getUtil(“from User”);
util = null;
return “saveOrUpdate”; //通过objectManager 将User表中的学号放到这个listUser集合中
}
public String saveOrUpdateObject() throws Exception{
objectManager.saveOrUpdateObject(util);
util = null;
errMsg = null; //保存由grademanage.jsp中表单传出来的班级信息
return getAllUtil();
}
4.2.3 班级查询
在将新生分入到不同的班级后,管理员则可以查询出所有的班级,并且新生可以根据从辅导员处了解到的班级信息来查询班级的全部信息。在查询时新生可以选择通过班级简介或者班级名称等不同手段来查询班级。具体效果图如图4-9所示:
图4-9 班级查询图
班级查询的核心代码展示:
public String getAllUtil() throws Exception{
if (null == pageModel) {
pageModel = new PageModel();
}
if (0 == pageModel.getCurrentPageNo()) {
pageModel.setCurrentPageNo(1); //查询前在界面中显示所有已存在的班级信息
}
StringBuilder _sql = new StringBuilder();
_sql.append(" from HouseManage where 1 = 1 ");
if (null != field && field.trim().length() > 0) {
fieldValue = new String(fieldValue.getBytes("iso-8859-1"), "utf-8");
_sql.append(" and " + field + " like '%" + fieldValue + "%'");
} //设置字体格式及信息,解决乱码,并且使用模糊查询
4.2.4 宿舍删除
宿舍在添加进系统是没有特殊的要求,所以管理员可以预先在系统中添加很多的宿舍为了加快新生报到。新生到校之后能尽快完成各项手续,这样也会导致会有很多的宿舍添加进系统之后并没有被使用。所以在新生完成报到之后,管理员可以在系统中删除并没有被使用的宿舍。实际运行效果如图4-10所示:
图4-10宿舍删除图
宿舍删除核心代码如下所示:
public String deleteManyUtil() throws Exception {
HttpServletRequest request = ServletActionContext.getRequest(); //获得httpservletrequest对象
String ids[] = request.getParameterValues(“id”); //将id获得的值放入ids字符串
House util = null;
for (String id : ids) {
util = new House();
util.setId(Integer.parseInt(id)); //批量删除的实现
objectManager.deleteObject(util);
}
util = null;
return getAllUtil(); //上述完成后返回获取所有宿舍界面
}
public String deleteUtil() throws Exception{
objectManager.deleteObject(util);
util = null;
return getAllUtil();
} //抛出异常
4.2.5 宿舍入住管理
宿舍入住则必须要新生和宿舍同时存在才可以进行下去,这二者是宿舍入住缺一不可的条件,在填写信息时一定要注意宿舍可以容纳多个新生,而新生只能进入一个宿舍的问题。实际运行效果如4-11所示:
图4-11 宿舍入住图
宿舍入住核心代码如下所示:
public String initUtil() throws Exception{
listHouse = objectManager.getUtil(“from House”);
listUser = objectManager.getUtil(“from User”);
util = null;
return “saveOrUpdate”; //从学生表和宿舍表选取学生
}
public String getAllUtil() throws Exception{
if (null == pageModel) { //获取所有已入住的宿舍信息
pageModel = new PageModel();
}
if (0 == pageModel.getCurrentPageNo()) {
pageModel.setCurrentPageNo(1);
}
StringBuilder _sql = new StringBuilder();
_sql.append(" from HouseManage where 1 = 1 “);
if (null != field && field.trim().length() > 0) {
fieldValue = new String(fieldValue.getBytes(“iso-8859-1”), “utf-8”);
_sql.append(” and " + field + " like ‘%" + fieldValue + "%’“); //解决乱码问题,且使用模糊查询
}
pageModel = objectManager.getUtil(_sql.toString(), pageModel.getCurrentPageNo());
errMsg = null;
return “find”;
} //封装pagemodel分页查询显示出的宿舍信息
4.2.6 收费管理
收费管理也是整个系统中最重要的环节之一,因为大学一定要做到公平公正,对学生收取的每一分钱都需要作出说明所以在这个模块中我加入了收费名称和收费金额。给用户清晰直白的观看,让用户能用最短的时间明白钱的去向与缴费的缘由。收费管理页面中所涉及的关键表单元素如下表4-2所示:
表4-2 收费管理所涉及的重要表单元素
name type 标签参数 含义
money_form hidden method=post
action=”${pageContext.request.contextPath}/Money-saveOrUpdateObject.action" 表单
username hidden name=“util.user.id” 新生
m_name text name=“util.s_0” 收费名称
m_time text name=“util.s_1” 收费时间
m_number text name=“util.s_2” 收费金额
m_bz textarea name=“util.s_3” 备注信息
submit_messageadd submit value=“保存” 保存
submit_messageadd submit value=“取消” 取消
管理员填入收费信息后,点击“保存”按钮,提交到MoneyAction中,调用Money-saveOrUpdateObject方法,将填写的数据储存进数据库当中,发布收费信息成功。
收费查询页面做了修改、删除、查询功能。通过
当登录用户为管理员时,Money-getAllHf方法获取到全部留言信息,同时可以看到“修改”、“删除”按钮,点击“修改”按钮调用Money-selectUtil方法,可以修改收费信息;点击“删除”按钮调用Money-deleteUtil方法,可以删除收费信息。具体操作界面如图4-12所示:
图4-12 收费管理图
收费管理核心代码:
//在填写收费时间时,直接在jsp界面中写了WdatePicker这个控件,在填写日期时可以直接点击选取而不是手动输入。
4.3 本章小结
在第四章中详细介绍了系统的主要功能,新生报到管理系统几个主要模块的设计思想及实现的过程,截取了样图进行展示,相关部分贴出了表单,一些重要方法提供了关键代码进行说明。
。
5.1 测试过程
与开发过程类似,测试过程也必须一步一步地进行。在逻辑上,每一步都是上一步的延续。大型软件系统通常由多个子系统组成,每个子系统由多个模块组成。因此,大型软件系统的测试基本上是由以下步骤组成的。
首先要做的是模块测试,以便在系统中识别编码和详细设计中的错误。接下来是系统测试,找出设计中的错误。
5.1.1登录模块测试
(1)输入正确的用户名和密码,用户才能登录进入系统。
(2)用户名为“admin”,正确密码为admin,用户登录模块测试用例如表5-1(a)及5-1(b)所示:
表5-1(a)用户登录模块测试用例表1
功能编号 001
测试标题 测试用户登陆时,密码不正确时,系统的反应情况
测试输入 用户名:admin 密码:1
操作步骤 输入以上信息后,点击“登录系统”按钮
预期结果 停留在登录页面,跳出提示框提示账号或密码输入错误
实际结果 停留在登录页面,跳出提示框提示账号或密码输入错误
表5-1(b)用户登录模块测试用例表2
功能编号 002
测试标题 测试用户登陆时,密码不正确时,系统的反应情况
测试输入 用户名:admin 密码:admin
操作步骤 输入以上信息后,点击“登录系统”按钮
预期结果 成功登录
实际结果 登录成功
5.1.2用户管理功能测试
功能测试主要是对产品的各项功能进行测试,检查各项功能是否达到了预期。这次测试是在用管理员权限登录后在系统中新增用户的信息。测试用例如表5-2所示:
表5-2用户管理功能测试用例表
测试编号 测试步骤 期望结果 测试结果
1 不填写用户名 无法新增用户 符合预期
2 填写已存在的用户名 无法新增用户 符合预期
3 修改用户密码 能够修改,并且能成功登录 符合预期
4 删除系统预设管理员 能够删除 不符合预期
5.1.3班级查询功能测试
用户在登录到系统后,可以在班级界面查询已存在的班级信息,测试用例如表5-3所示:
表5-3班级查询功能测试用例表
测试编号 测试步骤 期望结果 测试结果
1 通过学号查询 能够查询 符合预期
2 通过班级名称查询 能够查询 符合预期
3 通过注册时间查询 能狗查询期望的班级 不符合预期
5.1.4收费新增功能测试
每当学校需要收费时,只需要管理员在收费增加界面手动添加收费的信息,发布到系统后,普通用户可以直接查询。测试用例如表5-4(a)与5-4(b)所示:
表5-4(a)收费新增功能测试用例表1
功能编号 003
测试标题 不填写收费名称能否新增收费单
操作步骤 登录到系统后,进入收费新增模块,按提示输入信息,添加收费
预期结果 添加失败
实际结果 成功添加
表5-4(b)收费新增功能测试用例表2
功能编号 004
测试标题 不填写收费金额能否新增收费单
操作步骤 登录到系统后,进入收费新增模块,按提示输入信息,添加收费
预期结果 添加失败
实际结果 添加失败
5.1.5删除用户功能测试
当管理员操作失误时,可以成功删除误加的信息。测试用例如表5-5所示:
表5-5删除用户功能测试用例表
功能编号 005
测试标题 能否删除用户信息,能否批量删除
操作步骤 登录到系统后,进入删除信息模块,选择删除
预期结果 删除成功
实际结果 逐个删除成功,批量删除失败
5.2本章小结
在第五章测试章节中首先介绍了测试的方法解释了选择黑盒测试法的原因,接着详细描述了测试的环境以及过程,在测试过程中有测试成功的也有测试失败的,这也说明了这个系统还是有提升空间的,还是需要继续改进的。
总结下来,本文重点介绍了新生报到管理的设计及实现过程,并从一下5个方面进行了展开:
阐述了新生报到管理系统在当前互联网中存在的目的和意义,探讨了课题研究的内容和方法,以及这次开发所用到的技术和工具.
确定了新生报到的用户需求,从而确定系统的功能模块,在可行性上就经济上和技术上两方面进行了分析;在功能上明确的将系统将分为了两部分:前台为普通用户所使用,可以查询宿舍,班级,以及收费的信息,后台为管理员权限就很大了可以增删改查用户的信息.
据系统开发的需求先确立了数据库的设计原则,再进一步设计实体E-R图和具体的数据库表结构。
本论文对新生报到管理系统的两大部分:前台和后台的主要功能及其附属的子模块进行了重点且详细的描述,并对部分功能的核心代码进行了展示。
简要的叙述了系统在实际的设计开发中所做的测试方法。
管理员在系统中可以在添加信息时加入很多的备注,这就增加了系统的变通性与实用性;
由于技术的不足,所以系统目前还存在很多需要完善的地方,系统的需求调研不足,这可能会导致系统的使用的体验上出现不足。在系统的功能制作方面,一定有更好的方法,更好的界面来展示系统.。另外,由于系统的测试可能由于本事测试水平有限,测试的角度和思路受限,可能会有其他的bug没有被发现,可能会对系统实现有小影响。
[1]Horstmann,CS.&G.Cornell.Java核心技术[M].第八版.北京:机械工业出版社,2008:18-19
[2]欧立齐,朱梅.Java程序员面试宝典[M].北京:电子工业出版社,2013:45-62
[3] 熊刚.基于Java的web的设计与实现[D].武汉:武汉理工大学,2010.:56-60
[4]关东升.Java 开发案例驱动教程[M].北京:机械工业出版社,2011: 15-22
[5] Brittain,J&Ian,F.D.Tomcat权威指南[M].北京:中国电力出版社,2006:52-71
[6] 何玉杰,数据库原理与应用[M].北京:机械工业出版社,2017:23-30
[7] 董婧,基于ASP.NET的校友录系统的设计与实现[M],中国科技信息,2011:44-50
[8] 米内特.Java 传感器高级编程[M].北京:清华大学出版社,2013:23-30
[9] 匡敏,泰州中学校友联盟信息管理系统设计与实现,电子科技大学,2015
[10] 王珊,萨师煊. 数据库系统概论[M].北京:高等教育出版社,2006:43-51
[11] Jorgensen,P.C. 软件测试[M]. 北京:机械工业出版社,2003:91-101
[12] 李波,史江萍.Java从入门到精通[M].北京:清华大学出版社,2012:30-50
[13]张海藩.软件工程导论[M].北京:清华大学出版社,2013:35-60
[14] 丁振凡.Java语言实用教程[M].北京:北京邮电大学出版社,2005:50-80
[15]王克锋.基于Java的信息推送管理系统的设计和实现[M].大连:大连理工大学出版社,2012:43-87
经过几个月的忙碌,终于将新生报到管理系统完成了,这几个月内一边忙着实习工作一边着手开始毕业设计,在辛苦也有欣慰,多亏了老师对项目的指导,受益匪浅。在老师的帮助下,终于克服了重重困难,成功地完成了设计。经过这次完成毕设所学到的不仅是知识,而且是对生活的态度,一种积极的、进步的、一丝不苟的生活态度。感谢您老师对本项目的大力支持。在这个项目中遇到的许多问题中,同学们的帮助对我帮助很大。
这是自己第一次独立的制作一个完整的大的项目,说实话有很大的难度在里面,生怕自己的基础达不到论文老师的要求,所以在此非常感谢我的论文老师常合友老师的悉心指导,因为我实习地点不在南京,经常需要南京上海两地跑,所以更要感谢常老师能够理解我,能够在课间抽出空来指导我完善毕业设计,我能够及时的完成毕业设计,真的非常感谢老师的指导和建议!
感谢帮助过我的舍友与同学们,感谢他们帮我传达各种信息,帮我上交材料,感谢论文指导老师常合友,感谢南京晓庄学校信息工程专业的老师,他们认真负责给予我良好的学习环境,给了我莫大的帮助,因为有了你们的关怀和指导才能将此程序和论文圆满完成,在此之后我会以更上进更严谨的态度来完成之后的每一件事。