为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

北京达内培训集团招生网的设计与实现计算机软件专业

2018-02-27 50页 doc 373KB 18阅读

用户头像

is_597436

暂无简介

举报
北京达内培训集团招生网的设计与实现计算机软件专业北京达内培训集团招生网的设计与实现计算机软件专业 中文题目:北京达内培训集团招生网的设计与实现 外文题目:Design and Implementation of the Group's Beijing Tarena Aadmissions Website 毕业设计(论文)共 64 页(其中:外文文献及译文 12 页) 完成日期 2015年6月 答辩日期2015年6月 摘 要 互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。Internet上发布信息主要是通过网...
北京达内培训集团招生网的设计与实现计算机软件专业
北京达内培训集团招生网的设计与实现计算机软件专业 中文题目:北京达内培训集团招生网的设计与实现 外文题目:Design and Implementation of the Group's Beijing Tarena Aadmissions Website 毕业设计(论文)共 64 页(其中:外文文献及译文 12 页) 完成日期 2015年6月 答辩日期2015年6月 摘 要 互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。Internet上发布信息主要是通过网站来实现的,获取信息也是要在Internet“海洋”中按照一定的检索方式将所需要的信息从网站上下载下来。因此网站建设在Internet应用上的地位显而易见,为了适应信息时代发展,提高招生效率和办学水平,实现现代化教学机构的运行机制和高水平的管理,体现学校自己的特色,使学校网络化已成为一流信息学校建设的重要组成部分,本学校网上招生系统,旨在探索一种以互联网为基础的招生模式,通过这种新的模式,为学校营造一种新的办学环境,使招生突破时空限制,扩大教学规模,提高学校知名度。使用MySQL数据库,以MyEclipse开发的学校招生网站。实现了学校进行网上招生和高效的信息化管理。本设计分为游客访问和用户登录两个部分,游客无须登录即可浏览、查询报名须知、课程情况、学校简介等内容,用户登录之后可以网上报名,查询,留言等;管理员用户登录用于更改报名须知、课程信息、招生等内容、并可以处理网上报名,留言等。此网站能使学校在当今高速的信息发展时代期更好的完成招生等功能,实现了高速网络信息化。与此同时也能简化招生工作人员繁重的任务,给有意愿报名的学生提供及时准确的招生信息等。 关键词:招生网站;信息化管理;MySQL; MyEclipse I Abstract In Internet rapid development today, the electronic digital computer is one of 20th century significant science and technology inventions, but the Internet becomes the people to gain, the issue and the transmission information important channel fast, it in the people politics, the economy, the life and so on each aspect is playing the vital role. On Internet issued the information will mainly be, gains the information which realizes through the website also is must in Internet “the sea” the information which will need according to certain retrieval way from the website download. Therefore the website construction is obvious in the Internet application status,In order to adapt the information age development, enhances the recruitment of students efficiency and the school level, the realization modernization universitys operational mechanism and the high level management, manifests the university characteristic, causes the school network to become the first-class information school construction the important constituent, on this school net recruits students the system, is for the purpose of exploring one kind take the Internet as the foundation recruitment of students pattern, through this kind of new pattern, builds one kind of new school environment for the school, causes the recruitment of students breakthrough space and time limit, the expanded teaching scale, enhances the school 。well-knownnessBut based on JSP, uses MySQL is the database, realized the school by the eclipse development this recruitment of students system to carry in the net the recruitment of students and the highly effective informationization management. This design divides into the onstage and the backstage two parts, Front is mainly used for users to browse, query application notes, curriculum, the school profile and other content, and can register online, query, message, etc.; background is mainly used for administrators to change application notes, course information, admissions and recruitment, etc., and can handle online registration lists, messages and so on. Causes the school in now the high speed information development time, has realized the high speed network information. Key words: Recruitment; Information Management; MySQL; MyEclipse II 目 录 摘 要.............................................................................................................................................. I ABSTRACT................................................................................................................................. II 1 项目概述................................................................................................................................... 1 1.1 现系统概述 ............................................................................................................................ 1 1.2公司组织机构......................................................................................................................... 2 1.3 系统业务 ........................................................................................................................ 2 1.4 系统功能模块 ........................................................................................................................ 4 2 系统需求分析........................................................................................................................... 5 2.1 需求陈述 ................................................................................................................................ 5 2.2 USE CASE建模 ........................................................................................................................ 5 2.2.1定义活动者.......................................................................................................................... 5 2.2.2 Use Case图.......................................................................................................................... 5 3 系统架构设计........................................................................................................................... 7 3.1架构设计目标......................................................................................................................... 7 3.2 系统架构设计........................................................................................................................ 8 3.3 系统架构类图...................................................................................................................... 12 4 系统详细设计......................................................................................................................... 13 4.1 系统交互图 .......................................................................................................................... 13 4.1.1系统架构类交互图............................................................................................................ 13 4.1.2 用户登录系统的顺序图................................................................................................... 144.1.3 系统协作图....................................................................................................................... 15 4.1.4 系统状态图....................................................................................................................... 16 4.1.5 系统活动图....................................................................................................................... 17 4.2 业务逻辑对象类设计 .......................................................................................................... 19 4.2.1业务逻辑对象类图............................................................................................................ 19 4.3 数据库设计 .......................................................................................................................... 21 4.3.1 ER图.................................................................................................................................. 21 4.3.2 物理表结构图................................................................................................................... 22 4.4 开发环境的选择 .................................................................................................................. 24 4.4.1系统开发工具.................................................................................................................... 24 4.4.2数据库的选择.................................................................................................................... 25 4.4.3 系统网络架构设计........................................................................................................... 25 5 编 码....................................................................................................................................... 26 5.1 概述开发工具及编程脚本 .................................................................................................. 26 5.1.1 Tomcat服务器简介 .......................................................................................................... 26 5.1.2 MyEclipse开发工具简介 ................................................................................................. 28 5.1.3 Java Web开发平台简介 ................................................................................................... 28 5.1.4 SSH框架简介 ................................................................................................................... 29 5.2 脚本习惯说明 ...................................................................................................................... 29 5.3 脚本 ...................................................................................................................................... 29 6 测 试....................................................................................................................................... 30 6.1 测试原则及测试方法概述 .................................................................................................. 30 6.2 测试项目测试用例 .............................................................................................................. 32 6.3 软件测试结论 ...................................................................................................................... 37 6.3.1 软件能力........................................................................................................................... 37 6.3.2 缺陷和限制....................................................................................................................... 37 6.3.3 建议................................................................................................................................... 37 6.3.4 测试结论........................................................................................................................... 37 总 结........................................................................................................................................... 38 致 谢........................................................................................................................................... 39 参考文献..................................................................................................................................... 40 附录A 中文译文....................................................................................................................... 41 附录B 英文原文 ....................................................................................................................... 47 附录C 程序清单 ....................................................................................................................... 54 辽宁工程技术大学毕业设计(论文) 1 项目概述 1.1 现系统概述 达内集团招生管理网站能够展示本教学机构的特色和概貌, 发布培训机构招生的政策和招生信息。实现网上报名系统,在网上完成招生业务,不但提高办事效率同时节省宣传成本。学生可以在网上对自己感兴趣的话题进行交流,实现网上留言。设计出一个有独特风格,浏览顺序流畅,功能合乎要求的网站是设计的宗旨。随着社会上越来越多辅导班、培训班和一些招生机构的出现,使得教学机构的压力越来越大。本网站是基于北京达内的招生管理中心的要求而开发的。 首先网站是宣传的平台,宣传培训机构风情概貌和特色:再次 通过网络可以实时快速的掌握更多信息,包括招生点了解报名情况,学生比较喜欢选的科目及方向,以及学生比较关注的问题等。考生可以 通过登陆网站了解培训机构动态,查询关注的信息,以及在网上对彼此感 兴趣的问题进行沟通。能展示本教学机构的特色(扩大宣传力度,吸引考生。 招生信息展示是招生网站的重要职能,分类合理,访问快捷,添加方便,管理科学的招生信息展示系统能使考生快速了解招生信息,找出自己所需要的信息(并能提出疑问或给出反馈意见(培训机构据此了解考生需求。利用网络的优势,开发在线招生网,方便培训机构与学生交流,可以使双方在互相了解的基础上再来洽谈,防止盲目求学,以达到双方满意的目的。便于培训方的管理,同时也能有效地提高用户的访问需求,增大对该招生机构的宣传力度,通过程查看,相关教师查看,以及开课时间查看功能,无论在任何地方都能及时的了解相关的信息,不会因为异地或者一些其他原因造成彼此沟通的不顺畅,简化繁琐的面对面式的招考报名模式,是现代化发展的趋势和未来教育行业所必需的一种招生手段。 1 赵文杰:北京达内培训集团招生网的设计与实现 1.2公司组织机构 公司总裁负责制,副总裁和办公室负责协调各个部门之间相互合作。整个系统将上述部门连接成一体,共同协作完成整个公司的招生教学、到统一管理,最终完善教学体系运行维护公司的整个过程。培训方面由教学总监主管,各部门领导负责,各个培训中心配合整个集团的计划来完成。 目前公司组织机构如下图1-1所示: 达内集团 人 教市财力设宿招就 务场务资备舍生业 源部部部部部部部 部 图1-1 公司组织机构图 Figure1-1 Diagram of the Company's Organizational Structure 1.3 系统业务流程 业务流程图符号说明如下表1-1所示: 表1-1 业务流程图符号说明 Table1-1 Service flow chart symbol explanation 符号含义 符号 说明 实体 表示单位、个人或者系统,圈内写明 单位或个人职务的名称。 输入,输出报表 表示输入或输出的报表、计划、单据、 等,框内写明其名称 。 表示业务处理,框内写明处理的名称。 处理 2 辽宁工程技术大学毕业设计(论文) 表示各种帐目、规范、定额手册、报账册 表积累等大量存档信息, 符号内部写 明其名称。 经过前期调研分析和合其它各方面相关理论知识,得出整个达内招生网站系统的业务流程图如下图1-2所示: 图1-2 公司业务流程图 Figure 1-2 the Workflow of Business 3 赵文杰:北京达内培训集团招生网的设计与实现 1.4 系统功能模块 用户(学生)登录:能查看课程信息,能选课,修改自己的密码,能留言。 管理员:用户管理,课程管理,教师管理,留言管理,学校信息管理。 具体的业务流程描述如下: 1(发布消息:后台管理员发布站内新闻,招生,招生信息通知等,供学生浏览。 2(在线报名:后台管理员将报名的各项信息显示到该招生网站上,已登陆的同学可以根据自己的需要自主选择课程,报名之后,网站系统及时更新报名信息,然后提交给后台管理员,后台管理员在后台界面进行搜索查看已报名的信息,并统计出最后的录取结果。 3(发布招生信息:公布一些招生章程、课程等信息,供学生浏览查看。 图1-3 系统功能模块 Figure 1-3 Function Models of System 4 辽宁工程技术大学毕业设计(论文) 2 系统需求分析 2.1 需求陈述 经过一段时间的实地调查和多方面的综合考虑,并结一些成熟的网上招生网站的特点在开发建设的同时,还要注意到在实际应用过程中,应能达到以下目标: (1)(招生信息的及时发布,使学生能在第一时间了解到最新的招生信息。 (2)(实现招生信息的更新,减轻工作人员的工作量。 (3)(实现信息的查询灵活方便,操作简单易行。 (4)(对各种宣传信息的录入及时且易于更改。 (5)(系统维护方便可靠,有较高的安全性,并且满足实用性、先进性的要求。 (6)(界面的设计美观大方,易于操作和使用。 2.2 Use Case建模 2.2.1定义活动者 根据销售管理模块的需求可以确定3个活动者,即学生(student),学校(school),管理员(admin)。 用户(学生)登录:能查看课程信息,能选课,修改自己的密码企业管理。 学校(教师)登录:对课程管理,教师管理,查看留言。 管理员:用户管理,课程管理,教师管理,留言管理,学校信息管理。 2.2.2 Use Case图 根据系统需求分析,结合上节系统活动者的定义分析,得到招生网站管理的几个用例如下: (1)(用户管理用例; (2)(教师管理用例; (3)(课程管理用例 (4)(留言管理用例 (5)(信息管理用例 (6)(学生管理用例。 5 赵文杰:北京达内培训集团招生网的设计与实现 结合活动者和用例得到网站管理系统的用例图如下图2-1所示。 学校信息管理 教师管理员 课程信息管理 招生信息管理 游客留言管理 学生 教师管理 图2-1 系统用例图 Figure2-1 The Diagram of System Architecture 6 辽宁工程技术大学毕业设计(论文) 3 系统架构设计 北京达内集团招生网站采用基于浏览器/服务器的B/S三层体系结构,由一个前台web查询录入系统,一个后台服务程序和一个后台数据库组成。Web前台操作通过IE浏览器对相关业务数据进行访问和管理,然后存入后台数据库,根据 权限的不同,同时还有删除和修改的功能。后台服务程序完成对数据的修改和保存。它和前台Web查询录入系统与后台数据库相连接,后台数据库采用MySQL。后台服务程序和后台数据库同时运行于主服务器上,浏览端利用IE浏览器等主流浏览器来访问主服务器。 3.1架构设计目标 软件架构设计要达到如下的目标: (1)(可行性(Feasible)。架构具有可行性是架构设计的基石。 (2)(可靠性(Reliable)。软件系统对于用户的商业经营和管理来说极为重要,因此软件系统必须非常可靠。 (3)(安全行(Secure)。软件系统所承担的交易的商业价值极高,系统的安全性非常重要。 (4)(可定制化(Customizable)。同样的一套软件,可以根据客户群的不同和市场需求的变化进行调整。 (5)(可扩展性(Extensible)。在新技术出现的时候,一个软件系统应当允许导入新技术,从而对现有系统进行功能和性能的扩展。 (6)(可维护性(Maintainable)。软件系统的维护包括两方面,一是排除现有的错误,二是将新的软件需求反映到现有系统中去。一个易于维护的系统可以有效地降低技术支持的花费。 (7)(可升级性(Scalable)。软件必须能够在用户的使用率、用户的数目增加很快的情况下,保持合理的性能。只有这样,才能适应用户的市场扩展得可能性。 (8)(客户体验(Customer Experience)。软件系统必须易于使用。软件的最终用户很可能是不具有计算机专业技术的人员。 7 赵文杰:北京达内培训集团招生网的设计与实现 3.2 系统架构设计 下面我们将根据架构设计原则和信息系统原理来建立系统的架构设计模型。将信息系 统中比较关心的对象分层,可分为三层:用户界面层、业务层、数据访问层,再把各层中 的一些公共部分提出来:权限管理、异常处理,这样得到包图如图3-1所示: 图3-1 系统体系架构图 Figure3-1 The Diagram of System Architecture 图3-2 招生网站系统包图 Figure3-2 diagram of admissions website system package diagram 8 辽宁工程技术大学毕业设计(论文) (1)用户界面包 用户界面包的职责是: ?与用户的交互,接收用户的各种输入以及输出各种提示信息或处理结果。 ?对于输入的数据进行数据校验,过滤非法数据。 ?向业务处理对象发送处理请求。 用户界面包图展开如图3-3所示: 输入,输出表现 数据校验,显示校验结果 发送业务处理请求及谁接收结果 图3-3 用户界面类包展开图 Figure3-3 Expanded view of the user interface class package 用户界面包包含的类见图3-4: 图3-4 用户界面类图 Figure3-4 Class Diagram of User interface (2)业务逻辑包 业务逻辑包的职责是: ?实现各种业务处理逻辑或处理算法。 ?验证请求者的权限。 ?向数据访问对象发送数据持久化操作的请求。 ?向用户界面层返回处理结果。 业务逻辑包图展开如图3-5所示: 9 赵文杰:北京达内培训集团招生网的设计与实现 实现各种业务处理逻辑或处理算法业务验证请求者的权限 向数据访问对象发送数据持久化操作的请求 向表现层返回数据处理结果 图3-5 业务逻辑包图展开 Figure3-5 Figure expand the business logic package 业务逻辑包包含的类见图3-6: 图3-6 业务逻辑类图 Figure3-6 Business logic class diagram (3)数据访问包 数据访问层的职责是: ?实现数据的持久化操作。 ?实现事务处理。 数据访问包图展开如图3-7所示: 实现数据的持久化操作持久实现事务处理 完成数据处理的初始化条件的判断 图3-7 数据访问包图展开 Figure3-7 Package Diagram of Data Access 数据访问包包含的类见图3-8: 图3-8数据访问类图 Figure3-8 Class Diagram of Data Access 10 辽宁工程技术大学毕业设计(论文) 对于每一个业务处理中需要持久化操作的对象都可以对应为一个数据库访问对象,在很多业务处理中需要请求多个数据库访问对象来进行数据的读写操作,这里的数据库连接类的创建用到了单件(Singleton)模式,保证一个类仅有一个实例。 (4)权限管理包 权限管理的主要职责是: ?验证请求者的请求权限。 ?提供请求者的权限列表。 权限管理包图展开如图3-9所示: 验证请求者的请求权限权限管理判断权限是否正确,并根据结果跳转页面 根据权限的指示,跳转到制定页面 图3-9权限管理包图展开 Figure3-9 Package Diagram of Access Authorization 权限管理包包含的类见图3-10: 图3-10权限管理类图 Figure3-10 Class Diagram of Access Authorization (5)异常处理包 异常处理的职责: ?汇报运行时的详细异常信息。 ?记录异常处理日志。 异常处理包图展开如图3-11所示: 汇报运行时的详细异常信息异常处理记录异常处理日志 页面显示出错内容,或提供错误提示 图3-11异常处理包图展开 Figure3-11 Package Diagram of Exception Processing 11 赵文杰:北京达内培训集团招生网的设计与实现 异常处理包包含的类见图3-12: 图3-12异常处理类图 Figure3-12 Class Diagram of Exception Processing 因为异常处理类型比较多,如:系统异常、数据库异常、业务逻辑异常等,针对不同类型的异常处理方式也容易变,如:显示错误,记录文本日志,记录数据库日志等。 3.3 系统架构类图 将包图展开,得到类图,它是架构的静态结构图,表达了各个类之间的静态联系。 北京达内招生网站系统的架构类图如下图3-13所示。 图3-13 系统架构类图 Figure3-13 Class Diagram of System Architecture 12 辽宁工程技术大学毕业设计(论文) 4 系统详细设计 本部分设计主要涉及软件系统的动态建模和系统类图的详细设计。软件系统的动态模型分为交互模型和活动状态模型,其中的交互模型主要由顺序图和协作图构成,活动状态模型主要包括活动图和状态图。通过为软件系统项目建立动态模型,从而产生体现系统动态行为的可视化分析结果——包括对象的时间特性和对象为完成目标任务而相互进行通信的机制、对象行为的改变和状态变化情况,以及对象可能出现的各种活动状况等信息。 4.1 系统交互图 4.1.1系统架构类交互图 系统架构类的交互图如图4-1所示: (1).登录界面在接收了用户的输入请求后,向Action类发送处理请求。 (2). Action类接收到请求后,判断登录权限,向业务对象发送请求。 (3).权限管理对象验证权限后将验证结果返回给业务代理对象。 (4).业务对象进行业务处理。对于业务处理中的数据持久化操作,通过访问数据库访 问对象进行操作,期间的任何异常都交给异常处理对象处理。最后返回处理结果 信息给Action类。 (5). Action类将处理结果信息返回给用户界面。 13 赵文杰:北京达内培训集团招生网的设计与实现 用户界面action类业务逻辑类数据访问类异常处理类 : 用户用户请求 处理请求 业务处理 数据读写 异常处理 处理结果 读写结果 处理结果 响应请求 展示结果 图4-1系统架构类的交互图 Figure4-1 Interactive Diagram of System Architecture Class 4.1.2 用户登录系统的顺序图 达内招生网站系统主要有4个活动者,即系统管理员,学生用户,学校用户(老师),未登录用户(游客)。各个活动者与系统的交互非常相似,一般都包括创建、查询信息,管理发布信息以及浏览等,所以文档中将不给出所有活动者与系统的交互图,仅以用户与系统的交互图来举例说明,其他活动者与系统的交互图与之类似。用户与达内招生网站系统的交互图如下图4-2所示: 14 辽宁工程技术大学毕业设计(论文) 图4-2达内招生网站登录的顺序图 Figure4-2 Tarena Admissions website login sequence diagram 4.1.3 系统协作图 交互图用来说明系统如何实现一个用例或用例中的一个特殊场景。UML提供两类交互图:时序图和协作图。时序图按时间顺序描述系统元素之间的交互;协作图则按照时间和空间顺序来描述系统元素之间的交互。 根据上节描述的业务,得出不同登录用户的时序图,给出用户登录系统的协作图如下图4-3所示。 1: 启动() 3: 发送账户名及口令()2: 输入账户名及口令() :登录:服务器 7: 返回结果()6: 显示结果() : 用户 5: 验证结果() 8: 进入()4: 检查和验证() :主窗口:数据库 图 4-3 用户登录招生网站系统的协作图 Figure4-3 Collaboration diagram admissions website user login system 15 赵文杰:北京达内培训集团招生网的设计与实现 4.1.4 系统状态图 状态图是通过类对对象的生命周期建立模型来描述对象随时间变化的动态行为。状态图显示了一个状态机,它基本上是一个状态机中的元素的一个投影,也就意味着状态图包括状态机的所有特性。 在招生管理模块中,主要有创建招生信息、修改招生信息、查询招生信息3种状态,如下图4-4所示。 输入错误 成功输入用户名,密码登录系统系统主页 面 正确 学生信息相应功能 界面的页面选择功能 图 4-4 学生登录网站管理的状态图 Figure4-4 Students visit the website managed by the state diagram 输入错误 成功输入用户名,密码登录系统系统主页 面 正确 学校信息相应功能 界面的页面选择功能 图 4-5 学校(老师)登录网站管理的状态图 Figure4-5 School (teacher) visit the website management state diagram 16 辽宁工程技术大学毕业设计(论文) 输入错误 成功输入用户名,密码登录系统系统主页 面 正确 管理员信相应功能 息界面的页面选择功能 图 4-6 管理员登录网站管理的状态图 Figure4-6 Administrator Login Site Management state diagram 系统主页相应功能 面页面 图 4-7 游客登录网站管理的状态图 Figure4-7 Tourists visit the website managed by the state diagram 4.1.5 系统活动图 活动图是描述活动是如何协同工作的。当一个操作必须完成一系列事情,而又无法确定以什么样的顺序来完成这些事情时,活动图可以更清晰地描述这些事情。在招生管理模块中,主要涉及管理员的活动。 用户首先登录系统,然后查看报名选课的信息,根据需要浏览(修改)选课信息表和报名信息表;同时可以查询选课报名相关信息等活动。完成活动后退出系统,下面给出用户的活动图,用户分为系统管理员用户,教师用户,学生用户,以及游客(不需登录直接访问),如下图4-8所示。 17 赵文杰:北京达内培训集团招生网的设计与实现 登录学生界面 选择招生选择学校修改个人留言选择课程信息信息信息信息 图 4-8 学生登录系统的活动图 Figure4-8 log activity diagram for Students 登录管理员 界面 管理留言管理课程管理学校管理招生信息信息信息信息 图 4-9 管理员登录系统的活动图 Figure4-9 log activity diagram for Admin 18 辽宁工程技术大学毕业设计(论文) 登录教师 界面 发布招生管理留言修改课程 信息信息 图 4-10 教师登录系统的活动图 Figure4-10 log activity diagram for Teacher 4.2 业务逻辑对象类设计 4.2.1业务逻辑对象类图 本小节的主要任务是对系统架构类图中的业务逻辑类进行设计,由系统分析中的Use Case交互图我们可以发现业务逻辑类包括留言管理类,学生类,用户类,教师类,学校类。 根据Use Case交互图中的消息找到对象类相应的方法。 招生管理对象类图如下图4-11所示 19 赵文杰:北京达内培训集团招生网的设计与实现 图4-11 招生管理对象类图 Figure4-11 Enrollment Management Object class diagram 从上面的对象类图中我们发现,这些对象类中都有修改,删除和查询三个类似的方法,尽管返回值不同,这样我们就可以把这些方法抽象出来做成接口。 20 辽宁工程技术大学毕业设计(论文) 4.3 数据库设计 关系型数据库是目前应用最广泛的数据库。既然是面向对象系统设计,数据库设计当然也要是面向对象的。现在要考虑如何对类进行持久化操作,即如何将对象类映射到关系数据库的二维表。目前可以采用数据库建模工具来实现,像Rose 等。 4.3.1 E-R图 用户登录网站,可以根据权限的不同访问不同的页面。 游客用户不需要登录,直接访问网站,查看招生信息,浏览学校信息等,但是不具有选课、报名等功能,同时也不能使用留言功能。 该网站系统用户属性图见图4-12: 用户密码 用户名 联系电话 用户编号 用户权限 用户 图4-12用户登录招生网站E-R图 Figure4-12 Enrollment website user login E-R diagram 该网站系统E-R模型图见图4-13: 21 赵文杰:北京达内培训集团招生网的设计与实现 图4-13管理员用户登录E-R图 Figure4-13 User of admin login E-R diagram 4.3.2 物理表结构图 表4-1用户表(t_user) Table 4-1 The users table 列名 数据类型 长度 允许为空 主键 文字描述 Y userid int 11 N 用户编号 用户名 username varchar 50 N 用户密码 userpass varchar 50 N 管理员标识 admin bit 1 N school bit 1 N 学校标识 表4-2学员表(t_student) Table 4-2 Students table 列名 数据类型 长度 允许为空 主键 文字描述 userid int 11 N 用户编号 Y 学员编号 stuid int 11 N 学员姓名 stuname varchar 20 N 22 辽宁工程技术大学毕业设计(论文) 学员性别 stusex bit 1 Y 学员年龄 stuage int 11 Y stutel varchar 11 N 学院电话 表4-3学校表(t_student) Table 4-3 School table 列名 数据类型 长度 允许为空 主键 文字描述 用户编号 userid int 11 N Y 学校编号 schid int 11 N 学校名 schname varchar 50 N schtel varchar 11 Y 学校联系方式 schadd varchar 50 Y 学校地址 学校简介 schinfo text Y 表4-4教师表(t_ teacher) Table 4-4 Teacher's table 列名 数据类型 长度 允许为空 主键 文字描述 学校编号 schid int 11 N Y teaid int 11 N 教师编号 teaname varchar 50 N 教师名 教师简介 teainfo text Y 表4-5课程表(t_course) Table 4-5 The curriculum 列名 数据类型 长度 允许为空 主键 文字描述 Y 课程编号 couid int 11 N 学校编号 schid int 11 N couname varchar 50 N 课程名 coudate datetime Y 开课时间 课程类别 coucategory varchar 20 N 课时 coutime int 11 N 23 赵文杰:北京达内培训集团招生网的设计与实现 课程简介 couinfo text Y 课程教师 teaid int 11 N coucount int 11 Y 课程容量 cousum int 11 Y 已报名人数 招生标志 recmark bit 1 N 表4-6留言表(t_message) Table 4-6 message table 列名 数据类型 长度 允许为空 主键 文字描述 Y 留言编号 mesid int 11 N mestitle varchar 50 N 留言标题 userid int 11 N 留言用户 留言内容 mestext text Y 留言时间 mistime datetime N 表4-7 招生表(t_recruit) Table 4-7 Admission list 列名 数据类型 长度 允许为空 主键 文字描述 Y 招生编号 recid int 11 N stuid int 11 N 报名学员 couid int 11 N 报名课程 报名时间 rectime datetime N 4.4 开发环境的选择 4.4.1系统开发工具 北京达内招生网站的开发工具有Myeclipse8.5、MySQL,代码开发使用Myeclipse8.5,数据库设计使用MySQL数据库。 MyEclipse,是在eclipse基础上 加上自己的插件。MyEclipse 是一个十分优秀的用于开发Java, J2EE的 Eclipse 插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错[3]。 24 辽宁工程技术大学毕业设计(论文) 4.4.2数据库的选择 MySQL数据库关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。 4.4.3 系统网络架构设计 本系统采用B/S结构,系统网络架构图见图4-14。 浏览器 Web服务器 数据库 图4-14系统网络架构图 Figure4-14 Net Architecture Diagram of System 25 赵文杰:北京达内培训集团招生网的设计与实现 5 编码 5.1 概述开发工具及编程脚本 5.1.1 Tomcat服务器简介 (1)Tomcat服务器简介 Tomcat 是 Apache 软件基金会(Apache Software Foundation)的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。由于有了 Sun 的参与和支持,最新的 Servlet 和 JSP 规范总是能在 Tomcat 中得到体现,Tomcat 5 支持最新的Servlet 2.4 和 JSP 2.0 规范。因为 Tomcat 技术先进、性能稳定,而且免费,因而深受 Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的 Web 应用服务器。目前最新版本是 6.0。 Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机上配置好 Apache 服务器,可利用它响应对 HTML 页面的访问请求。实际上 Tomcat 部分是 Apache 服务器的扩展,但它是独立运行的,所以当你运行 tomcat 时,它实际上作为一个与 Apache 独立的进程单独运行的。 这里的诀窍是,当配置正确时,Apache 为 HTML 页面服务,而 Tomcat 实际上运行 JSP 页面和 Servlet。另外,Tomcat 和 IIS、Apache 等 Web 服务器一样,具有处理 HTML 页面的功能,另外它还是一个 Servlet 和 JSP 容器,独立的 Servlet 容器是Tomcat 的默认模式。 (2)JSP简介 本系统采用JSP技术,基于MVC模式开发,使用SSH框架(Struts2、Spring和Hibernate)来增加系统的开发速度。所谓的MVC模式是"Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"。程序就是用Struts2和Hibernate这两个框架来实现模型层和控制器这两层,JSP实现视图这一层。一般来说程序就是在数据库和页面之间起桥梁作用的,JSP页面请求先到action,再到dao,再回到action,回到JSP页面,action主要处理来自页面 26 辽宁工程技术大学毕业设计(论文) 的请求,dao主要是和数据库的交互,Struts2主要用在action,处理来自页面的请求,处理完请求后跳转回页面。Hibernate主要用在dao,包括对数据库的增、删、改、查的操作, Spring控制程序的流程。 JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开 [10]发变得迅速和容易。 (3)Javascrip简介 可以使网页有动态的效果(特效,如:图片、文字的滚动;层的动态切换、显示及隐 [8]藏;对HTML元素的操作;动态的对HTML内容修改;动态的修改CSS样式;实现如下拉列表的连动等等),可以进行表单的输入验证(如:邮箱、电话和邮编的合法性,输入内容长度及内容验证等)。Javascript短小精悍, 又是在客户机上执行的,大大提高了网页的浏览速度和交互能力。 同时它又是专门为制作Web网页而量身定做的一种简单的编程语言。JS文件只需用记事本就可打开修改,修改完成必须以JS为后缀的文件。 [7]Javascript 是一种解释型的、基于对象的脚本语言。 (4)CSS简介 级联样式表(Cascading Style Sheet)简称“CSS”,通常又称为“风格样式表(Style Sheet)”, [16]它是用来进行网页风格设计的。比如,如果想让链接字未点击时是蓝色的,当鼠标移上去后字变成红色的且有下划线,这就是一种风格。通过设立样式表,可以统一地控制HMTL中各标志的显示属性。级联样式表可以使人更能有效地控制网页外观。使用级联样式表, [4]可以扩充精确指定网页元素位置,外观以及创建特殊效果的能力。 (5)SSH框架介绍 用Struts实现MVC,它将 Servlet和 JSP 标记(属于 J2EE 规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。MVC即Model-View-Controller的缩写,是一种常用的设计模式。MVC 减弱了业务逻辑接口和 [14]数据接口之间的耦合,以及让视图层更富于变化。 传统J2EE应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一,导致J2EE的应用没有真正实现Write Once及Run Anywhere的承诺。Spring作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能。本系统用Spring优化中间层,控制层与层之间的低耦合性。 27 赵文杰:北京达内培训集团招生网的设计与实现 Hibernate是一个开放源代码的持久层框架,它对JDBC进行了非常轻量级的对象封装,使用对象编程思维来操纵数据库。完成数据持久化。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。 5.1.2 MyEclipse开发工具简介 MyEclipse 企业级工作平台(MyEclipse Enterprise Workbench,简称 MyEclipse)是对EclipseIDE 的扩展,利用它我们可以在数据库和 JavaEE 的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的 JavaEE 集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持 HTML,Struts,JSP,CSS,Javascript,Spring, SQL,Hibernate。 MyEclipse 是一个十分优秀的用于开发 Java, J2EE 的 Eclipse 插件集合,MyEclipse 的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse 目前支持 Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate,EJB3。 JDBC 数据库链接工具等多项功能。可以说 MyEclipse 几乎囊括了目前所有主流开源产品的专属 eclipse 开发工具。 MyEclipse8.5 经过 M1,M2,终于出了正式版(MyEclipse For Spring 还是 8.6.1)。 MyEclipse8.5 主要改进包括:集成了 Eclipse 3.6.1。支持 HTML5 和 JavaEE 6。 5.1.3 Java Web开发平台简介 Java Web,是用 Java 技术来解决相关 web 互联网领域的技术总和。web 包括:web服务器和web客户端两部分。 Java在客户端的应用有java applet不过现在使用的很少, Java在服务器端的应用非常的丰富,比如 Servlet,JSP 和第三方框架等等。Java 技术对 Web领域的发展注入了强大的动力。 Java 的 Web 框架虽然各不相同[6],但基本也都是遵循特定的路数的:使用 Servlet 或者 Filter 拦截请求,使用 MVC 的思想设计架构,使用约定,XML 或 Annotation 实现配置,运用 Java 面向对象的特点,面向抽象实现请求和响应的流程,支持 Jsp,Freemarker,Velocity等视图。 28 辽宁工程技术大学毕业设计(论文) 5.1.4 SSH框架简介 SSH 为 struts+spring+hibernate 的一个集成框架, 是目前较流行的一种 Web 应用程序开源框架[4]。集成 SSH 框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层。其中使用 Struts 作为系统的整体基础架构,负责 MVC 的分离,在 Struts 框架的模型部分,控制业务跳转,Spring 做管理,管理 struts 。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的 Java 对象,然后编写基本的DAO(Data Access Objects)接口,实现的 DAO 类来实现 Java 类与数据库之间的转换和访问,最后由 Spring 做管理,管理 struts系统的基本业务流程是: 在表示层中,首先通过 JSP 页面实现交互界面,负责传送请求(Request)和接收响应(Response) ,然后 Struts 根据配置文件(struts-config.xml)将 ActionServlet 接收到的 Request 委派给相应的 Action 处理。在业务层中,管理服务组件的 Spring IoC 容器负责向 Action 提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。而在持久层中,则依赖于 [4]。 Hibernate 的对象化映射和数据库交互, 处理 DAO组件请求的数据,并返回处理结果 采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响, 大大提高了系统的可复用性。 而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率。 5.2 脚本习惯说明 (1)为了编程是方便记忆,本系统均采用英文单词的方式,作为该项的代码。 (2)表的主键字段则是才有表名的英文单词的一部分加上 id 作为主键的代码。 例如:用“user”表示用户实体类等;“userid”表示用户的主键; (3)类名的第一个字母大写,且有具体的含义。 (4)包名分清层次类别。 (5)变量的名字第一个字母小写,有具体的含义。 (6)业务受理编号由日期和受理序号组成。 5.3 脚本 主要代码详见附录 C。 29 赵文杰:北京达内培训集团招生网的设计与实现 6 测试 6.1 测试原则及测试方法概述 软件测试是为了发现错误而不断执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程按顺序逐个对测试项目做出说明。软件测试过程应该遵循如下的原则: (1)尽早地和不断地进行软件测试。 不应把软件测试仅仅看作是软件开发的一个独立阶段,而应当把它贯穿到软件开发的各个阶段中。坚持在软件开发的各个阶段的技术评审,这样才能在开发过程中尽早发现和预防错误,把出现的错误克服在早期,杜绝某些发生错误的隐患。 (2)测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成。 测试以前应当根据测试的要求选择测试用例(Test case),用来检验程序员编制的程序,因此不但需要测试的输入数据,而且需要针对这些输入数据的预期输出结果。 (3)程序员应避免检查自己的程序。 程序员应尽可能避免测试自己编写的程序,程序开发小组也应尽可能避免测试本小组开发的程序。如果条件允许,最好建立独立的软件测试小组或测试机构。这点不能与程序的调试(debuging)相混淆。调试由程序员自己来做可能更有效。 (4)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。 合理的输入条件是指能验证程序正确的输入条件,不合理的输入条件是指异常的,临界的,可能引起问题异变的输入条件。软件系统处理非法命令的能力必须在测试时受到检验。用不合理的输入条件测试程序时,往往比用合理的输入条件进行测试能发现更多的错误。 (5)充分注意测试中的群集现象。 在被测程序段中,若发现错误数目多,则残存错误数目也比较多。这种错误群集性现象,已为许多程序的测试实践所证实。根据这个规律,应当对错误群集的程序段进行重点测试,以提高测试投资的效益。 (6)严格执行测试计划,排除测试的随意性。 测试之前应仔细考虑测试的项目,对每一项测试做出周密的计划,包括被测程序的功 30 辽宁工程技术大学毕业设计(论文) 能、输入和输出、测试内容、进度安排、资源要求、测试用例的选择、测试的控制方式和过程等,还要包括系统的组装方式、跟踪规程、调试规程,回归测试的规定,以及评价标准等。对于测试计划,要明确规定,不要随意解释。 (7)应当对每一个测试结果做全面检查。 有些错误的征兆在输出实测结果时已经明显地出现了,但是如果不仔细地全面地检查测试结果,就会使这些错误被遗漏掉。所以必须对预期的输出结果明确定义,对实测的结果仔细分析检查,抓住征侯,暴露错误。 (8)妥善保存测试计划,测试用例,出错统计和最终,为维护提供方便。 测试过程按4个步骤进行,即单元测试、组装测试、确认测试和系统测试。图6-1显示出软件测试经历的4个步骤。 图软件测试的过程6-1 Figure6-1 Software tests process 软件测试的种类大致可以分为人工测试和基于计算机的测试。而基于计算机的测试由可以分为白盒测试和黑盒测试。 [11] (1)黑盒测试 根据软件产品的功能设计规格,在计算机上进行测试,以证实每个实现了的功能是否符合要求。这种测试方法就是黑盒测试。黑盒测试意味着测试要在软件的接口处进行。就是说,这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求分析规格说明,检查程序的功能是否符合它的功能说明。 用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数 31 赵文杰:北京达内培训集团招生网的设计与实现 据,来检查程序是否都能产生正确的输出。 (2)白盒测试 根据软件产品的内部工作过程,在计算机上进行测试,以证实每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。这种测试方法就是白盒测试。白盒测试把测试对象看做一个打开的盒子,允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序的状态,确定实 [11]际的状态是否与预期的状态一致。 6.2 测试项目测试用例 表 6-1达内招生网站测试用例 Table 6-1 Website of the admissions test case 模块 测试用例 偏用例 操作过程及数据 预期结果 实际结果 名称 描述 差 类别 由于每个用页面成功跳对各个字段进入“登录”界面,分别在户有不同的转,不同权分别输入正“用户名”、“密码”输入正界面校权限,根据限的用户跳无 确的值来登确值,例如“111”、“111”,验 部权限到不转到不同登录。 然后登录。 同页面。 录页面。 登录 进入“登录“界面,分别以 下列条件进行登录: 页面跳转到 1.“用户名”输入不存在的登录页面,对于一个字值,其他域正确输入。 并不会进入界面校段输入不正登录失败。 无 2.“密码”输入不存在的值,到登录成功验 确 其他域正确输入。 界面,提示 如输入“ ”空格符,然后相关错误。 进行“登录”。 查 看查看所有学管理员进入学校信息管理显示所有学显示所有学无 功能点 信校信息 界面,点击查看按钮。 校信息 校信息 息 学编修改学校信管理员进入学校信息管理修改成功,校辑息 界面,点击修改按钮,然学校信息修在显示页面信无 关联 信例如修改后进行对学校的修改操作改成功 显示修改后息息 “XX查询” 例如修改“XX查询” 的结果 管 理 删管理员进入学校信息管理模对学校信息除界面,点击删除按钮,然学校信息删块 进行删除操删除成功 无 关联 信后进行对学校的删除操除成功 作 息 作。 32 辽宁工程技术大学毕业设计(论文) 查显示当前已看查看所有学学校用户(老师)进入学显示所有的存在的所有无 功能点 信校信息 校管理信息界面 学校信息 的学校信息 息 学校用户(老师)进入学编修改成功,校信息管理界面,点击修辑修改学校信学校信息修在显示页面 改按钮,然后进行对学校无 功能点 信息 改成功 显示修改后的修改操作 息 的结果 例如修改“XX查询” 查 看查看所有学学生进入学校管理信息界显示所有的显示所有的无 功能点 信校信息 面 学校信息 学校信息 息 查 询查看所有教管理员进入教师信息管理显示所有教显示所有教无 功能点 信师信息 界面,点击查看按钮。 师信息 师信息 息 编管理员进入教师信息管理辑修改成功,界面,点击修改按钮,然教修改教师信教师信息修在显示页面后进行对教师的信息进行无 关联 师息 改成功 显示修改后修改操作 信的教师信息 例如修改为“a教师” 息 删 除管理员进入教师信息管理 对教师信息教界面,点击删除按钮,然教师信息删 进行删除操删除成功 无 关联 师后进行对学校的删除操除成功 师作 信 作。 信 息 息 查管显示当前已看查看所有教学校用户(老师)进入教显示所有的理存在的所有无 功能点 信师信息 师管理信息界面 教师信息 模的教师信息 息 块 编 辑学校用户进入教师信息管修改成功,教修改教师信理界面,点击修改按钮,教师信息修在显示页面无 关联 师息 然后进行对教师的信息进改成功 显示修改后信行修改操作 的教师信息 息 查 看 教查看所有教学生进入教师管理信息界显示所有的显示所有的无 功能点 师师信息 面 教师信息 教师信息 信 息 查 看查询所有课管理员进入教室信息管理显示所有课显示所有课 无 功能点 信程信息 界面,点击查询课程信息。 程信息 程信息 息 33 赵文杰:北京达内培训集团招生网的设计与实现 编 辑管理员进入课程信息管理修改成功, 课编辑课程信界面,点击修改按钮,然课程信息修在显示页面无 关联 程息。 后进行对课程的信息进行改成功 显示修改后 信修改操作 的课程信息 息 课程信息删删管理员进入课程信息管理 除成功,在课除对课程信息界面,点击删除按钮,然显示页面显删除成功 无 关联 程信进行操作 后进行对课程的信息进行示删除后的信息 删除操作 结果。 息 管查显示当前已理看查看所有课学校用户(老师)进入课显示所有的存在的所有无 功能点 模信程信息 程管理信息界面 课程信息 块 的课程信息 息 编 辑学校用户进入课程信息管修改成功, 课修改课程信理界面,点击修改按钮,课程信息修在显示页面无 关联 程息 然后进行对课程的信息进改成功 显示修改后 信行修改操作 的课程信息 息 查 看 课查看所有课学生进入课程管理信息界显示所有的显示所有的无 功能点 程程信息 面 课程信息 课程信息 信 息 查 看查看所有留管理员进入留言管理信息显示所有的显示所有的无 功能点 信言信息 界面 留言信息 留言信息 息 查 看 留查看所有留学校用户(老师)进入留显示所有的显示所有的 无 功能点 言言信息 言管理信息界面 留言信息 留言信息 留信言息 信 息查 管看查看所有留学生进入留言管理信息界显示所有的显示所有的无 功能点 理信言信息 面 留言信息 留言信息 模息 块 添 加学生进入留言管理信息界留言成功,留言成功 添加留言信留面进行添加留言操作 在显示页面显示“XX查无 关联 息 言 例如输入“XX查询” 显示 询” 信 息 34 辽宁工程技术大学毕业设计(论文) 查 询 显示所有招招查询所有招管理员进入招生信息管理显示所有招生信息,招无 功能点 生生信息 界面,点击查询课程信息。 生信息 生简介等 信 息 编 辑管理员进入招生信息管理修改成功, 招编辑招生信界面,点击修改按钮,然招生信息修在显示页面无 关联 生息。 后进行对招生的信息进行改成功 显示修改后 信修改操作 的招生信息 息 修招生信息删 改 管理员进入招生信息管理 除成功,在招对招生信息界面,点击删除按钮,然 显示页面显删除成功 无 关联 生进行操作 后进行对招生的信息进行 示删除后的信删除操作 招结果。 息 生 查信 看息显示当前已招查看所有招学校用户(老师)进入招显示所有的管存在的所有无 功能点 生生信息 生管理信息界面 招生信息 理的招生信息 信模 息 块 编 辑学校用户进入招生信息管修改成功, 招修改招生信理界面,点击修改按钮,招生信息修在显示页面无 关联 生息 然后进行对招生的信息进改成功 显示修改后 信行修改操作 的招生信息 息 查 看 招查看所有招学生进入招生管理信息界显示所有的显示所有的无 功能点 生 生信息 面 招生信息 招生信息 信 息 查 查询所有课管理员进入招生信息管理显示所有课显示所有课询 程或者学校界面,点击课程查询或者程以及学校程以及学校无 功能点 信 信息 学校信息查询 信息 信息 息 添添加成功, 管理员进入招生信息管理加添加一条合学校信息添在显示页面 界面,点击学校信息管理,无 关联 信法学校信息 加成功 显示添加成 进入添加学校功能 息 功后的结果 35 赵文杰:北京达内培训集团招生网的设计与实现 管理员进入招生信息管理添加一条课信息添加成信息添加成 界面,点击课程信息管理,无 关联 程信息 功 功 进入添加课程功能 添管理员进入招生学员管理学员信息添 加添加一条学界面,点击学员信息管理,学员信息添加成功 无 关联 信 员信息 进入添加学员功能 加成功 “XX学员”息 例如添加“XX学员” 添加成功 学校信息修 修管理员进入学员信息管理对查询的学改成功,在 改界面,点击修改按钮,然校结果进行显示页面显修改成功 无 关联 信后进行对学校的信息进行修改操作 示修改后的用息 修改操作然后点击修改。 结果。 户 信 息学校信息删删管理员进入学校信息管理管对查询的学除成功,在除界面,点击删除按钮,然理校信息进行显示页面显删除成功 无 关联 信后进行对学校的信息进行模操作 示删除后的息 修改操作然后点击删除 块 结果。 课程信息删删管理员进入学校信息管理对查询的课除成功,在除界面,点击删除按钮,然程信息进行显示页面显删除成功 无 关联 信后进行对课程的信息进行操作 示删除后的息 修改操作然后点击删除 结果。 技术部成员进入技术部界开发信息修修面,点击查询开发信息,改成功,在改对查询的结在显示界面对某条记录改显示页面显修改成功 无 关联 信果进行操作 为一条合法的开发信息。示修改后的息 然后点击修改。 结果。 开发信息修删技术部成员进入技术部界改成功,在除对查询的结面,点击查询开发信息,显示页面显删除成功 无 关联 信果进行操作 在查询界面选择一条开发示删除后的息 信息。然后点击删除。 结果。 36 辽宁工程技术大学毕业设计(论文) 6.3 软件测试结论 6.3.1 软件能力 经过测试,本系统基本能够达到企业或学校招生的要求,其基本功能都具备,并且操作简便,易于操作。 6.3.2 缺陷和限制 (1)由于本人的开发能力和开发时间有限,对于一些页面设计不是十分美观。 (2)本系统的招生管理模块功能不够完整,不能多用户进行同时操作。 (3)本系统关于时间的输入域,没有使用日历输入,没有解决IE浏览器的日历展开问题。 (4)本系统不能进行用户之间的交流。 (5)本系统进行操作是对于数据库的访问次数过于频繁,增加了数据库的负担。 (6)本系统用户体验效果不是很好。经过反复的测试,本系统能够按照预期的计划运行尽。 6.3.3 建议 (1)进一步学习界面美工方面的相关专业知识。 (2)进一步简化代码,使得代码的执行效率更高。 (3)对功能需求的调查和分析一定要全面和客观,要在系统开发前期尽最大可能地把需求工作做到完整。 (4)对于上述缺陷,还需要更多的参考成功案例,使用java继承和接口等来节约代码行数,进一步简化代码,使得代码的执行效率更高。 6.3.4 测试结论 软件基本达到设计要求,软件功能完整,用户界面良好,错误处理正确。但是在测试中也发现软件的一些不足与缺陷,比如软件的输入框输入错误要手动删除,不能直接重新输入。需要在软件进一步修改和维护时予以纠正。总的来说,软件通过测试。 37 赵文杰:北京达内培训集团招生网的设计与实现 总 结 本招生网站旨在通过快捷的互联网的思维方式,简化繁琐的传统招生模式的面对面式交流,报名等工作。节省了一些招生过程中需要的人力,财力成本等,利用 Java Web 技术和 SSH 框架进行信息管理系统的开发十分便捷。在应用程序中可以充分利用 SSH 框架中的一些特性,顺利开发出一个完整的招生网站。 经过两个来月的设计和开发,北京达内招生网站基本开发完毕。其功能基本符合用户需求,实现了基本信息的添加、删除、更新、查找、浏览,用户留言等几个方面的功能,基本实现了初期的设计。北京达内招生网站是基于 struts2和hibernate框架、Java Web技术和 MySQL 数据相结合的成果。它简单、实用,能够提高公司人员的办公效率,大大地节约时间和其他的成本。 通过这个系统的分析和完善,在其中还有很多的不足之处,系统还有许多不尽人意的地方,原因主要是因为个人的能力有限和在开发该招生网站系统时接触到比较多的新软件以及使用了一些以前没有接触过的新技术。其中有部分软件工具中的的某些功能没有完全掌握,在边实习边学习的情况下,有些问题没有得到充分的解决,在材料收集、整理方面还有做得不够的地方,这影响了整个系统的丰富程度。程序的功能方面还有很多欠缺的地方。还是存在着数据库的完整性和查询未能实现组合查询等缺陷。但是,还是能够通过这次毕业设计来总结自己大学四年中学过的一些知识,复习了之前学过的一些基础,加深了自己对软件工程专业的理解,为以后更好的融入社会打下了坚实的基础。 38 辽宁工程技术大学毕业设计(论文) 致 谢 经过两个多月的需求功能完善与设计,以及在查找资料、编写程序、写作论文等方面的工作,在郭伟老师的辛勤指导下,我终于完成了我的北京达内集团招生网站的毕业设计。 在即将毕业的日子里,首先向在这半年中给予我帮助的毕业设计指导老师郭伟老师致以深深的谢意。郭老师在教学任务繁忙的情况下,抽出时间帮助纠正我在设计当中出现的问题,并耐心地为我的论文作校正。她不仅在技术上,还有心理上的鼓励和督促,她的指导和建议使我受益非浅,没有她的帮助和指导,就不会有我今天的成果。老师认真负责的工作态度、严谨的治学风格,使我深受启发;还要感谢我的母校,辽宁工程技术大学,在这四年的生活学习中,是我成长了很多,学到了很多,这四年生涯是我一生之中感觉最快乐的时光。在进行项目开发的同时,和同学们之间的相互探讨也使我获益匪浅。老师、同学以及同事朋友的帮助下,在近二个月的时间内,我除基本学会开发招生网站系统外还学到了兢兢业业,奋发向上的精神,这种精神是我今后人生前进道路上的一种力量。所以我感谢我的指导老师 、同学和家人,感谢他们在这次毕业设计中给我的帮助和生活中的关怀。 最后,在学院领导、老师和同学的帮助和鼓励下,我完成了本次毕业设计的定稿工作。对于老师们的帮助和关怀,我深深地表示感激。这是一笔不小的财富,能在以后的生活中给我带来很大的帮助。与此同时在这里我要衷心的祝福我的母校-辽宁工程技术大学以及这里的每一位辛苦工作的老师,愿各位老师在今后的生活中顺顺利利,愿母校再创辉煌。 39 赵文杰:北京达内培训集团招生网的设计与实现 参考文献 [1] 弗利格、阿特利、杨卫东.软件工程[M].第四版.北京:人民邮电出版社,2010 [2] 郑人杰、马素霞等.软件工程:实践者的研究方法[M].第七版.北京:机械工业出版社,2011 [3] 李兴华、王月清.名师讲坛:Java Web 开发实践经典基础篇[M].北京:清华大学出版社,2010 [4] 刘京华等.Java Web 整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring) (附 DVD-ROM 光 盘1 张)[J].北京:清华大学出版社,2010 [5] 许令波.深入分析 Java Web 技术内幕[J].北京:电子工业出版社,2012 [6] 陈丹丹.实战突击:Java Web 项目整合开发(附 DVD 光盘 1 张)[J].北京:电子工业出版社,2011 [7] 卢瀚、王春斌等.Java Web 开发实践 1200 例(第 1 卷) (附 DVD 光盘 1 张)[M].北京:清华 大学出版社,2011 [8] 孙鑫.Java Web 开发详解:XML+DTD+XML Schema+XSLT+Servlet3.0+JSP2.2 深入剖析与实例应用(含 CD 光盘 1 张)[J].北京:电子工业出版社,2012 [9] 郭克华.Java Web 程序设计[J].北京:清华大学出版社,2011 [10] 凯特、苏金国、王小振等.Oracle Database 9i/10g/11g 编程艺术:深入数据库体系结构[J].第 2 版. 北京:人民邮电出版社,2011 [11] 赵斌. 软件测试技术经典教程[M]. 第三版. 北京: 科学出版社, 2011. [12] 明日科技、白伟明、张振坤、李伟等.实战突击:Java 项目开发案例整合[J].北京:电子工业出版社, 2011 [13] 查弗、斯威德伯格.图灵程序设计丛书:jQuery 基础教程[M].第 3 版.北京:人民邮电出版社,2012 [14] 权巍、李莉、徐晶.基于模型的软件开发方法[J].北京:国防工业出版社,2011 [15] 萨师煊, 王珊. 数据库系统概论(第三版)[M]. 北京: 高等教育出版社, 2009. [16] Daniel Barrett,Richard Silverman,Robert Byrnes.SSH, The Secure Shell: The Definitive Guide,2010 40 辽宁工程技术大学毕业设计(论文) 附录A 中文译文 Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。Java 语言的主要好处是,Java 应用程序可以跨硬件平台和操作系统进行移植——这是因为每个平台上安装的 JVM 都可以理解同样的字节码。 Java 语言和平台的可伸缩性非常强。在低端,Java 语言是第一批支持企业开放标准的技术之一,支持使用 XML 和 Web 服务跨业务线共享信息和应用程序。 Java 平台有三个版本,这使软件开发人员、服务提供商和设备生产商可以针对特定的市场进行开发: (1) Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。大多数 Java 开发人员使用 Java SE 5,也称为 Java 5.0 或 Tiger。 (2)Java EE以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构和 Web 2.0 应用程序。 (3)Java ME以前称为 J2ME。Java ME 为在移动设备和嵌入式设备上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。 Java语言是简单的。Java语言的语法与C语言和C++语言很接近, Java丢弃了C++ 中很少使用、难理解的的特性,如操作符重载、多继承、自动的强制类型转换。Java语言不使用指针,并提供了自动的废料收集。Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。Java语言是分布式的。Java语言支持Internet应用的开发,Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。Java语言是健壮的。Java的强类型机制、异常处理、 41 赵文杰:北京达内培训集团招生网的设计与实现 废料的自动收集等是Java程序健壮性的重要保证。Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。 Java语言是可移植的。这种可移植性来源于体系结构中立性。Java系统本身也具有很强的可移植性。Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。 Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。 Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。 Hibernate是JDBC的轻量级的对象封装。它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口 的实现类,甚至可以是BMP里面的访问数据库的代码。从这个意义上来说,Hibernate和EB不是一个范畴的东西,也不存在非此即彼的关系。 Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和App Server没有任何关系,也不存在兼容性问题。 Hibernate 中提供了两级Cache,第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存。这一级别的缓存由hibernate管理的,一般情况下无需进行干预;第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或群集范围的缓存。这一级别的缓存可以进行配置和更改,并且可以动态加载和卸载。 Hibernate还为查询结果提供了一个查询缓存,它依赖于第二级缓存。 当应用程序调用Session的save()、update()、saveOrUpdate()、get()或load(),以及调用查询接口的 list()、iterate()或filter()方法时,如果在Session缓存中还不存在相应的对象,Hibernate就会把该对象加入到第一级缓存中。当清理缓存时,Hibernate会根据缓存中对象的状态变化来同步更新数据库。 Session为应用程序提供了两个管理缓存的方法: evict(Object obj):从缓存中清除参数指定的持久化对象。clear():清空缓存中所有持久化对象。 Hibernate的二级缓存策略的一般过程如下: 42 辽宁工程技术大学毕业设计(论文) (1)条件查询的时候,总是发出一条select * from table_name where …. (选择所有字段)这样的SQL语句查询数据库,一次获得所有的数据对象。 (2)把获得的所有数据对象根据ID放入到第二级缓存中。 (3)当Hibernate根据ID访问数据对 象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;查不到,再查询数据库,把结果按照ID放入到缓存。 (4)删除、更新、增加数据的时候,同时更新缓存。 Hibernate的二级缓存策略,是针对于ID查询的缓存策略,对于条件查询则毫无作用。为此,Hibernate提供了针对条件查询的Query Cache。 Hibernate对象关系映射提供延迟的与非延迟的对象初始化。非延迟加载在读取一个对象的时候会将与这个对象所有相关的其他对象一起读取出来。这有时会导致成百的(如果不是成千的话)select语句在读取对象的时候执行。这个问题有时出现在使用双向关系的时候,经常会导致整个数据库都在初始化的阶段被读出来了。当然,你可以不厌其烦地检查每一个对象与其他对象的关系,并把那些最昂贵的删除,但是到最后,我们可能会因此失去了本想在ORM工具中获得的便利。 一级缓存和二级缓存的比较:第一级缓存 第二级缓存 存放数据的形式 相互关联的持久化对象 对象的散装数据 缓存的范围 事务范围,每个事务都有单独的第一级缓存进程范围或集群范围,缓存被同一个进程或集群范围内的所有事务共享 并发访问策略由于每个事务都拥有单独的第一级缓存,不会出现并发问题,无需提供并发访问策略由于多个事务会同时访问第二级缓存中相同数据,因此必须提供适当的并发访问策略,来保证特定的事务隔离级别 数据过期策略没有提供数据过期策略。处于一级缓存中的对象永远不会过期,除非应用程序显式清空缓存或者清除特定的对象必须提供数据过期策略,如基于内存的缓存中的对象的最大数目,允许对象处于缓存中的最长时间,以及允许对象处于缓存中的最长空闲时间 物理存储介质内存内存和硬盘。对象的散装数据首先存放在基于内存的缓存中,当内存中对象的数目达到数据过期策略中指定上限时,就会把其余的对象写入基于硬盘的缓存中。缓存的软件实现 在Hibernate的Session的实现中包含了缓存的实现由第三方提供,Hibernate仅提供了缓存适配器(CacheProvider)。用于把特定的缓存插件集成到Hibernate中。启用缓存的方式只要应用程序通过Session接口来执行保存、更新、删除、加载和查询数据库数据的操作,Hibernate就会启用第一级缓存,把数据库中的数据以对象的形式拷贝到缓存中,对于批量更新和批量删除操作,如果不希望启用第一级缓存, 43 赵文杰:北京达内培训集团招生网的设计与实现 可以绕过Hibernate API,直接通过JDBC API来执行指操作。用户可以在单个类或类的单个集合的粒度上配置第二级缓存。如果类的实例被经常读但很少被修改,就可以考虑使用第二级缓存。只有为某个类或集合配置了第二级缓存,Hibernate在运行时才会把它的实例加入到第二级缓存中。 用户管理缓存的方式第一级缓存的物理介质为内存,由于内存容量有限,必须通过恰当的检索策略和检索方式来限制加载对象的数目。Session的evit()方法可以显式清空缓存中特定对象,但这种方法不值得推荐。 第二级缓存的物理介质可以是内存和硬盘,因此第二级缓存可以存放大量的数据,数据过期策略的 maxElementsInMemory属性值可以控制内存中的对象数目。管理第二级缓存主要包括两个方面:选择需要使用第二级缓存的持久类,设置合适的并发访问策略:选择缓存适配器,设置合适的数据过期策略。 一个明显的解决方法是使用Hibernate提供的延迟加载机制。这种初始化策略只在一个对象调用它的一对多或多对多关系时才将关系对象读取出来。这个过程对开发者来说是透明的,而且只进行了很少的数据库操作请求,因此会得到比较明显的性能提升。这项技术的一个缺陷是延迟加载技术要求一个Hibernate会话要在对象使用的时候一直开着。这会成为通过使用DAO模式将持久层抽象出来时的一个主要问题。为了将持久化机制完全地抽象出来,所有的数据库逻辑,包括打开或关闭会话,都不能在应用层出现。最常见的是,一些实现了简单接口的DAO实现类将数据库逻辑完全封装起来了。一种快速但是笨拙的解决方法是放弃DAO模式,将数据库连接逻辑加到应用层中来。这可能对一些小的应用程序有效,但是在大的系统中,这是一个严重的设计缺陷,妨碍了系统的可扩展性。 Struts2其实并不是一个陌生的Web框架,Struts2是以Webwork的设计思想为核心,吸收了Struts1的优点,因此,可以认为Struts2是Struts1和Webwork结合的产物。 MVC简介:Struts2是一个兼容Struts1和WebWork的MVC框架,既然,提到了MVC框架,就不得不对MVC框架做一个简单介绍,仅限于简单介绍,如果,想了解更多的MVC的知识可以查看相关的文档,或者找一本Struts1的书籍,相信上面关于MVC的篇幅不会很少。言归正传,其实,Java目前出现的这些框架而言,其最终目的都是为了接触耦合,不论是Spring、Hibernate或MVC框架,目的都是为了接触耦合增加复用。MVC接触的是View和Model间的耦合。MVC包含三个基础部分:Model、View和Controller,这三个部分以最小的耦合协同工作,以增加程序的可扩展性和可维护性。概括起来MVC的优点主要有一下方面: (1)多个视图可以对应一个模型。按MVC设计模式,一个模型对应多个视图,可以 44 辽宁工程技术大学毕业设计(论文) 减少代码的复制及代码的维护量,一旦模型发生改变,也易于维护。 (2)模型返回的数据与显示逻辑分离。模型数据可以应用任何的显示技术,例如,使用JSP页面、Velocity模板或者直接产生Excel文档等。 (3)应用被分隔为三层,降低了各层之间的耦合,提供了应用的可扩展性。 (4)控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起,完成不同的请求。因此,控制层可以说是包含了用户请求权限的概念。 5)M (VC更符合软件工程化管理的精神。不同的层各司其职,每一层的组件具有相同的特征,有利于通过工程化和工具化产生管理程序代码。 Struts2简介: Struts2看似是从Struts1发展而来,但实际上Struts2与Struts1在框架的设计思想上面还是有很大的区别,Struts2是以WebWork的设计思想为核心,为什么Struts2不沿用Struts1的设计思想,毕竟Struts1在目前的企业应用中还是有非常大的市场在的,Struts1的一些缺点: (1)支持的表现层技术单一。 2)与S (ervlet API严重耦合,这点可以从Action的Execute的方法声明里面就可以看的出来。 (3)代码依赖Struts1 API,有侵入性,这点可以从写Action类和FormBean的时候看的出来,Action必须实现Struts的Action类。而Struts2之所以以WebWork的设计思想为其核心,一点就是最近WebWork的上升势头,再就是WebWork没有Struts1上面的那些缺点,更符合MVC的设计思想,也更利于代码的复用。基于以上介绍可以看的出,Struts2体系结构与Struts1的体系结构有很大的差别,Struts1是使用ActionServlet做为其中心处理器,Struts2则使用一个拦截器(FilterDispatcher)做为其中心处理器,这样做的一个好处就是将Action类和Servlet API进行了分离。 Struts2的简单处理流程如下: (1)浏览器发送请求。 (2)中心处理器根据struts.xml文件查找对应的处理请求的Action类。 (3)WebWork的拦截器链自动对请求应用通用功能,例如:WorkFlow、Validation等功能。 (4)如果Struts.xml文件中配置Method参数,则调用Method参数对应的Action类中的Method方法,否则调用通用的Execute方法来处理用户请求。 Spring 框架通过配置操作mappings,展示resolution,本地化和模版集成围绕着分派请求 45 赵文杰:北京达内培训集团招生网的设计与实现 操作的servlet - DispatcherServlet设计的.缺省的操作是一个非常简单的控制接口, 他只提供了ModelAndView handleRequest(request,response)方法.这将用于一个应用的控制,但是,如果你想包含多个层次的控制,AbstractController, AbstractCommandController, MultiActionController, SimpleFormController, AbstractWizardFormController 将帮助你完成.应用控制将代表那些子系统.注意,你可以选择一个适当的基类:如果你没有 web form,你就不必用FormController.这就是和Struts最大的不同. 你可以通过命令或者form对象来操作任何对象:这不需要接口工具对象里面你不必复制你的业务对象的或者一个基础类的驱动.Spring的数据邦定是非常的灵活的.举例来说,它描述了具有在应用范围内的校验错误的输入机制,但不是系统错误.所以在你的form string属性,只操作出错的子任务,或者适当地转换string.换句话说,它通常可以很好的直接邦定你的业务对象. 这也是和struts围绕请求基础类Action 和 ActionForm (每个action操作类型) 建立主要的不同之一. 对比WebWork,Sping更多的区别在于对象角色:Sping支持控制器的感念,一个操作命令或者form对象,和得到数据传递给视图的模式.这个模式通常包含命令和form对象,但有时也包含任意的参考数据.换句话说,一个WebWork Action联合所有这些角色到一个单独的对象.WebWork 允许你用已经存在的业务对象作为你 form 的一部分,但是只生成各自Action 的 bean 属性. 最后,操作请求的Action 实例在一个视图里面获得付值和form population. 然而,参考数据也需要作为Action 的属性被模拟。 一个类里面有太多的角色是值得讨论的. 关于视图:Spring的视图方案非常的灵活. 一个控制器执行可以通过response 返回ModelAndView对象null,就可以直接写到一个视图.在通常的状况下,一个ModelAndView实例结合了一个view 和一个model Map,包含了bean name 和 通讯对象(像命令或者form,参考数据等等). View名称是非常高端的的配置,不是通过bean name, 一个properties文件就是通过你自己的ViewResolver.这个抽象的model Map 允许你在视图层面完成提取,没有任何的争辩JSP/Velocity或者其他,每一种都可以直接完整使用.这个model Map 还可以简单得得到适当的格式化数据的转换,像JSP 请求属性或者Velocity 模版模式。 46 辽宁工程技术大学毕业设计(论文) 附录B 英文原文 Java is a simple, object-oriented, distributed, interpreted, robust security, structure neutral, portable, dynamic language performance, multi thread. The main advantage of Java language, Java applications across hardware platforms and operating system transplant -- this is because the JVM is installed on each platform can understand the same byte code. Java language and platform scalability is very strong. In the end, Java language is the first batch of open standards technology support enterprise one, support the use of XML and Web services across business lines to share information and applications. The Java platform has three versions, which makes software developers, service providers and equipment manufacturers can be developed for specific markets: (1) Java SE formerly known as J2SE. It allows the development and deployment of use on desktop, server, embedded and real-time environment in Java applications. Java SE includes support for Java Web service development, and for Java Platform, Enterprise Edition (Java EE) provide the basis. Most Java developers use the Java SE 5, also known as Java 5 or Tiger. (2) Java EE formerly known as J2EE. Enterprise edition to help develop and deploy portable, robust, scalable and secure server-side Java applications. Java EE is built on the Java SE, which provides Web services, component model, management and communication API, can be used to implement service oriented architecture and Web enterprise 2 applications. (3) Java ME formerly known as J2ME. Java ME provides a robust and flexible environment for applications running on mobile and embedded devices. Java ME includes a flexible user interface, robust security model, built-in network protocols, and can dynamically download networked and offline application support. The application of Java ME specification only write once based on, can be used in many devices, but also can use the native features of each device. The Java language is simple. The grammar of Java language and C language and C language is very close, Java discarded feature in C rarely use, difficult to understand, such as the mandatory type operator overloading, multiple inheritance, automatic conversion. The Java language does not use pointers, and provides automated waste collection. Java is an object-oriented language. The Java language provides classes, interfaces and inheritance of the original language, for the sake of simplicity, only support between Dan Jicheng, but support multiple inheritance between interfaces, implementation mechanism and support between classes and interfaces (keyword implements). Java language fully supports dynamic binding, but the C 47 赵文杰:北京达内培训集团招生网的设计与实现 language only to the virtual function using dynamic binding. In conclusion, Java language is a pure object-oriented programming language. The Java language is distributed. Java language support for Internet application development, Java RMI (remote method activation) is also an important means of developing distributed application system. The Java language is robust. Java's strong type system, exception handling, automated waste collection is an important guarantee robust Java programs. The Java language is safe. Java is often used in network environment, therefore, Java provides a safety mechanism to prevent malicious code attacks. Java language is porTable This portability comes from the architecture neutrality. The Java system itself also has strong portability. Java language is a multi thread. In the Java language, a thread is a special object, it must be made by Thread or its sub (sun) class to create. The implementation of the Java language to support multiple threads at the same time, and provides a synchronization mechanism between multiple threads (keyword synchronized). The excellent characteristics of Java language, which makes Java application unparalleled robustness and reliability, which also reduced application maintenance costs. Java on the full support of object technology and Java platform for embedded API applications to reduce development time and reduce the cost of. Java compile once, run everywhere feature can make it to provide a ubiquitous open structure and transfer information in multi platform between the low cost way. Hibernate is a lightweight object encapsulation JDBC. It is an independent object persistence layer framework, and App Server, have no what inevitable connection and EJB. Hibernate can be used in any JDBC can be used in occasions, such as the application of Java database access code, DAO interface implementation class, can even be BMP inside the database access code. In this sense, Hibernate and EB is not a category of things, the relationship does not exist either this or that. Hibernate is a closely related framework and JDBC, so Hibernate and JDBC driver compatibility, and databases have some relationship, but the Java program and use it, no relationship between Server and App, there is no compatibility issues. The Hibernate provides two levels of Cache, the first level cache is Session level cache, it belongs to the scope of services cache. This level of cache management by hibernate, the general case without intervention; the second level cache is SessionFactory level cache, it belongs to the process of range or scope of the cache cluster. This level of cache can be configured and change, and can be dynamically loaded and unloaded. Hibernate query results also provide a query cache, it depends on the second level cache. When the application calls save (Session), update (), saveOrUpdate (), get () or load (list), 48 辽宁工程技术大学毕业设计(论文) as well as the query interface call (), iterate () or filter () method, if there is not a corresponding object in the Session cache, Hibernate will bring the object into a to the first level cache. When cleaning the cache, Hibernate database synchronization update according to the change of state of objects in the cache. Session provides two methods of managing the cache for the application of evict (Object: Obj): clear the persistent object parameters are specified from the cache. Clear (): all persistent objects in the cache. The general process of two level cache strategy of Hibernate is as follows: (1) when the condition query, always sends a select * from table_name where... (select all fields.) the SQL statement that queries the database, once for all data objects. (2) all the data object is obtained according to the ID into the second level cache. (3) when the Hibernate according to the ID data access object when, first check from the Session a cache; not to check, if the configuration of the level two cache, then from the two level cache lookup; not to check, and then query the database, according to the results of ID into the cache. (4) delete, update, increase the time data, and update the cache. The level two cache strategy of Hibernate, the cache strategy to ID query, the query is no condition. Therefore, Hibernate provides the query Query Cache. The Hibernate object relational mapping for the delay and non delay object initialization. Non lazy loading and the object will be all read out together with other objects when reading an object. This sometimes results in hundreds (if not thousands of words) select statement when reading the object implementation. This sometimes occurs when using the two-way relationship, often leading to the database to be read during the initialization phase out. Of course, you can not to mind taking the trouble to check the relationship between each object and other objects, and delete that the most expensive, but in the end, we may lose this to obtain the ORM tool convenience. Comparison of a cache and level two cache: bulk data object persistent objects in the first level cache level second cache to store the data in the form of interrelated cache scope transaction scope, each transaction has a separate first level cache process wide or cluster range, the cache is all of the transaction or the same process within cluster concurrency access strategy because each transaction has a separate first level cache, no concurrency problems, without the need to provide concurrency strategy due to multiple transactions can access the same data cache in the second level at the same time, it must provide appropriate concurrency strategy, to ensure the transaction isolation level data expiration policy specific did not provide data expiration policies. Object in a cache will never expire, unless the application explicitly clear the cache or 49 赵文杰:北京达内培训集团招生网的设计与实现 clear a specific object must provide data expiration policies, such as based on the maximum number of objects in the cache memory, allowing objects in the cache of the most a long time, and allowing the object in the cache is the most leisure time physical memory and hard disk memory storage medium. First of all bulk data objects stored in the memory cache based on, when the number of objects in memory to data expiration policy specified limit, the remaining objects will be written on the hard disk cache. Caching software implementation of the implementation of Hibernate Session is included in the cache implementation is provided by the third party, Hibernate provides only a cache adapter (CacheProvider). Used to plug into a particular cache in Hibernate. Enable cache way as long as the application through the Session interface to perform the update, delete, save, data loading and query the database operation, Hibernate will enable first level cache, the data in the database in the form of the object is copied to the cache, for batch updates and bulk delete operations, if you do not want to enable first level cache, you can bypass the Hibernate API, directly through the JDBC API to perform that operation. The user can set the size of a single class or a single class of second level cache configuration. If an instance of the class is often read but rarely modified, you can consider using a second level cache. Only second level cache is configured for a class or set, Hibernate will run when an instance of it to the second level cache. Physical media user management way cache first level cache to memory, due to the limited memory capacity, number must be to limit load the object through the appropriate search strategies and methods of information retrieval. Session evit () method can explicitly clear the cache a specific object, but this method is not recommended. Physical medium level second cache can be in memory and on disk, so the second level cache can store large amounts of data, the maxElementsInMemory attribute data expiration policy can control the number of objects in memory. Second level cache management mainly includes two aspects: the choice of persistent classes to use the second level cache, set the appropriate concurrency strategy: select the cache adapter, set the appropriate data expiration policies. An obvious solution is to delay the loading mechanism provided by Hibernate. This initialization strategy is only invoked in an object of one to many or many to many relationship between objects will be read out. This process is transparent to the developer, and only had a few requests for database operations, it will be more obvious performance. A limitation of this technology is the technical requirements of delay loading an Hibernate session when the object has been open. This will be by using the DAO model will be lasting a major problem abstraction out of. Persistence mechanisms in order to completely abstracted, all of the database logic, including open or closed session, can not appear in the application layer. The most common is, 50 辽宁工程技术大学毕业设计(论文) some the realization of a simple DAO interface implementation class to encapsulate the database logic completely. A fast but clumsy solution is to give up DAO mode, the database connection logic in the application layer is added to the. This may be an effective small applications, but in large systems, this is a serious design flaws, hinder the scalability of the system. Struts2 is not an unfamiliar Web framework, Struts2 is based on the design idea of Webwork as the core, to absorb the advantages of Struts1, therefore, that Struts2 is the product of Struts1 and Webwork combination. MVC Description: Struts2 is a compatible with Struts1 and WebWork MVC framework, since, referred to the MVC framework, on the MVC framework will have to do a simple introduction, limited to a brief, if, want to learn more about MVC you can view the related documents, or to find a Struts1 books, believe it about MVC length not less. Hark back to the subject, in fact, Java the present situation of these frameworks, its ultimate aim is to contact coupling, either Spring, Hibernate or MVC framework, the objective is to increase contact with coupling reuse. MVC contact with the coupling between View and Model. MVC consists of three basic parts: Model, View and Controller, these three parts work together to minimize the coupling procedure, to increase the expansibility and maintainability. Advantages in MVC there are some major aspects: (1) multiple views can correspond to a model. According to the MVC design pattern, a model corresponding to a plurality of view, can reduce the duplication and code maintenance, once the model changes, but also easy to maintain. (2) model the returned data and display logic separation. The model can be applied to any data display technology, for example, use the JSP page, Velocity template or directly generate Excel documents. (3) the application is divided into three layers, reduces the coupling between the layers, provides the application scalability. (4) the concept of control layer is also very effective, because of its different models and different views together, to complete various requests. Therefore, control layer can be said to contain user request permission. (5) MVC more in line with the spirit of the software engineering management. Each different layer, component of each layer has the same character, to produce management program code through engineering tools. Introduction to Struts2: Struts2 appears to be evolved from Struts1, but there are still great differences in the design of Struts2 and Struts1 in the above framework, Struts2 is based on the design idea of WebWork as the core, why not use the Struts2 Struts1 design ideas, after all 51 赵文杰:北京达内培训集团招生网的设计与实现 Struts1 in the current enterprise application still has very big market in the, some disadvantages of Struts1: (1) a single layer of technical support. (2) and Servlet API serious coupling, it can come out statement from the method of Action Execute inside can see. (3) code is dependent on the Struts1 API, invasive, that may be from the writing class Action and FormBean see, Action must implement the Struts class Action. Struts2 is the WebWork design concept as its core, is a recent WebWork upward momentum, then WebWork is not Struts1 the above shortcomings, more in line with the design idea of MVC, it is more convenient for code reuse. Based on the above introduction can look out, there is a big difference between the Struts2 architecture and Struts1, Struts1 is the use of ActionServlet as its central processor, Struts2 uses an interceptor (FilterDispatcher) as the central processor, one of the advantages of doing so is to class Action and Servlet API were isolated. Simple processing flow of Struts2 are as follows: (1) the browser sends a request. (2) the central processor according to the corresponding struts.xml file to find the requested Action class. (3) the WebWork interceptor chain automatic request for application of general functions, such as: WorkFlow, Validation and other functions. (4) if the configuration parameter Method in the Struts.xml file, then call the Method parameters corresponding to the Action class in the Method method, or the Execute method call general to handle user requests. Spring framework by configuring the operating mappings, display resolution, locale and theme revolves around the distribution of the requested operation servlet. DispatcherServlet design of the default operation is a very simple control interface, he provides only ModelAndView handleRequest (request, response) method which will be used to control an application, but if you want to include multiple levels of control, AbstractController, AbstractCommandController,MultiActionController,SimpleFormController,AbstractWizardFor-mController will help you complete the Application Control will represent those subsystems. attention, you can choose an appropriate base class: If you do not have web form, you will not have to use FormController and Struts This is the biggest difference you can manipulate any object by command or form object: it does not require an interface or a base class driver. Spring's data binding is highly flexible. example, it describes an input validation error in the application of the mechanism has a range, but not a system error, so in your form object which you do not 52 辽宁工程技术大学毕业设计(论文) have a copy of your business objects The string property, only a sub-task operation error, or the appropriate conversion string. words, it can often be a good bonding directly to your business objects, which is also and struts (per request basis around the class action Action and ActionForm type of operation) to build one of the main differences comparing WebWork, Sping more differentiated object roles:.. Sping gratitude controller support, a command or form object manipulation, and that gets passed to the view mode This mode typically contains commands and form the object, but sometimes also contain any reference data in other words, a WebWork Action combines all those roles into a single object. WebWork allows you to use existing business objects as part of your form, but only to generate their own Action bean properties. Finally, Action instance requested operation on a view inside to get paid value and form population. however, reference data also need to be modeled as an Action property. A class which has many roles are worthy of discussion about the view:. Spring view of the program is very flexible one controller to perform can return null as ModelAndView response, you can write directly to a view in a normal condition,. a ModelAndView instance consists of a view and a model Map, containing the bean name and communication objects (like a command or form, reference data, etc.). View name is very high-end configuration, not by bean name, a properties file is through your own ViewResolver. This abstract model Map allows you to complete abstraction of the view, there is no arguing JSP / Velocity or other, each of which can be integrated directly and this model Map can simply get properly formatted data conversion, such as JSP request attributes or a Velocity template model. 53 赵文杰:北京达内培训集团招生网的设计与实现 附录C 程序清单 1) Struts的配置文件 struts.xml 主要代码如下: /error.jsp /school/index.jsp /admin/index.jsp /student/index.jsp /school/schoolinfo.jsp /admin/schoolinfo.jsp /student/schoolinfo.jsp /unlogin/schoolinfo.jsp /admin/schoolinfoedit.jsp /school/schoolinfoedit.jsp /unlogin/courseinfo.jsp /admin/courseinfoedit.jsp /student/courseinfo.jsp /school/courseinfo.jsp /school/courseinfoedit.jsp /school/courseinfoinsert.jsp /admin/courseinfo.jsp 54 辽宁工程技术大学毕业设计(论文) /admin/courseinfoedit.jsp /admin/courseinfoinsert.jsp /unlogin/courseinfodetail.jsp /unlogin/courseinfodetail.jsp /unlogin/teacherinfo.jsp /student/teacherinfo.jsp /school/teacherinfo.jsp /school/teacherinfoedit.jsp /school/teacherinfoinsert.jsp /admin/teacherinfo.jsp /admin/teacherinfoedit.jsp /admin/teacherinfoinsert.jsp /unlogin/recruitinfo.jsp /admin/recruitinfoedit.jsp /student/recruitinfo.jsp /student/recruitdetail.jsp /school/recruitinfo.jsp /school/recruitinfoedit.jsp /school/recruitinfobeinsert.jsp /school/recruitinfoinsert.jsp /school/recruit_courseinfo.jsp /school/recruitdetail.jsp /admin/recruitinfo.jsp /admin/recruitinfoedit.jsp /admin/recruitinfobeinsert.jsp /admin/recruitinfoinsert.jsp /admin/recruit_courseinfo.jsp /admin/recruitdetail.jsp 55 赵文杰:北京达内培训集团招生网的设计与实现 /unlogin/messageinfo.jsp /student/messageinfo.jsp /index.jsp /admin/index.jsp /school/index.jsp /student/index.jsp /register.jsp /school/ok.jsp /school/error.jsp /student/ok.jsp /student/error.jsp /index.jsp /student/studentedit.jsp /student/management.jsp /admin/studentinfo.jsp /admin/studentinfo.jsp /index.jsp 56 辽宁工程技术大学毕业设计(论文) 2).Hibernate的配置文件 hibernate.cfg.xml 主要代码如下: org.hibernate.dialect.MySQLDialect jdbc:MySQL://localhost:3306/bjdnjtzsw root 123456 com.MySQL.jdbc.Driver MySQL 3)课程信息表的具体操作行为CouseInfoAction.java的主要代码如下: 57 赵文杰:北京达内培训集团招生网的设计与实现 public class CourseInfoAction { private CourseDAO coursedao; private TCourse course; private SchoolDAO schooldao; private TeacherDAO teacherdao; public TCourse getCourse() { return course; } public void setCourse(TCourse course) { this.course = course; } public String execute(){ coursedao=new CourseDAOImpl(); List list=coursedao.findAll(); HttpServletRequest req=ServletActionContext.getRequest(); TUser user=(TUser)req.getSession().getAttribute("user"); if (user != null) { if (user.getAdmin()) { req.setAttribute("course", list); return "admin"; } if (user.getSchool()) { Iterator it=user.getTSchools().iterator(); TSchool school=null; if(it.hasNext()){ school=it.next(); } List coulist=coursedao.findBySchid(school.getSchid()); req.setAttribute("course", coulist); return "school"; } req.setAttribute("course", list); return "student"; } else { 58 辽宁工程技术大学毕业设计(论文) req.setAttribute("course", list); return "ok"; } } public String beEdit(){ coursedao=new CourseDAOImpl(); List list=coursedao.findByCourse(course); HttpServletRequest req=ServletActionContext.getRequest(); req.setAttribute("course", list); TUser user=(TUser)req.getSession().getAttribute("user"); if(user.getAdmin()){ schooldao=new SchoolDAOImpl(); List schlist=schooldao.findAll(); Map schmap=new HashMap(); for(int i=0;i tealist=null; if(user.getAdmin()){ tealist=teacherdao.findAll(); }else{ Iterator it=user.getTSchools().iterator(); TSchool school=null; if(it.hasNext()){ school=it.next(); } tealist=teacherdao.findBySchid(school.getSchid()); } Map teamap=new HashMap(); for(int i=0;i schlist=schooldao.findAll(); Map schmap=new HashMap(); for(int i=0;i it=user.getTSchools().iterator(); TSchool school=null; if(it.hasNext()){ school=it.next(); } course.setTSchool(school); } coursedao.insert(course); return this.execute(); } public String Info(){ coursedao=new CourseDAOImpl(); HttpServletRequest req=ServletActionContext.getRequest(); TUser user=(TUser)req.getSession().getAttribute("user"); List coulist=coursedao.findByCourse(course); req.setAttribute("course", coulist); if(user!=null){ return "studentinfo"; }else{ return "info"; } } } 4)课程信息接口实现的主要代码CourseDAOImpl.java如下: public class CourseDAOImpl implements CourseDAO { 61 赵文杰:北京达内培训集团招生网的设计与实现 private Session session =null; private Transaction tr=null; private Session getSession(){ return HibernateSessionFactory.getSession(); } public List findAll() { List list=new ArrayList(); session=this.getSession(); try{ list=session.createCriteria(TCourse.class).list(); return list; }catch(Exception e){ e.printStackTrace(); return null; }finally{ session.close(); } } public TCourse insert(TCourse course){ session=this.getSession(); tr=session.beginTransaction(); try{ course.setCousum(0); course.setCoucount(0); session.saveOrUpdate(course); tr.commit(); return course; }catch(Exception e){ e.printStackTrace(); tr.rollback(); return null; }finally{ session.close(); } } 62 辽宁工程技术大学毕业设计(论文) public List findByCourse(TCourse course) { List list=new ArrayList(); session=this.getSession(); try{ if(course.getCouid()!=null){ list=session.createCriteria(TCourse.class).add(Expression.eq("couid", course.getCouid())).list(); }else if(course.getTSchool()!=null){ list=session.createCriteria(TCourse.class).add(Expression.eq("recmark", course.getRecmark())).add(Expression.eq("TSchool.schid", course.getTSchool().getSchid())).list(); }else{ list=session.createCriteria(TCourse.class).add(Expression.eq("recmark", course.getRecmark())).list(); } return list; }catch(Exception e){ e.printStackTrace(); return null; }finally{ session.close(); } } public void updateByCourse(TCourse course) { session=this.getSession(); tr=session.beginTransaction(); try{ session.update(course); tr.commit(); }catch(Exception e){ e.printStackTrace(); tr.rollback(); }finally{ 63 赵文杰:北京达内培训集团招生网的设计与实现 session.close(); } } public void deleteByCourse(TCourse course) { session=this.getSession(); tr=session.beginTransaction(); try{ session.delete(course); tr.commit(); }catch(Exception e){ e.printStackTrace(); tr.rollback(); }finally{ session.close(); } } public List findBySchid(int schid) { List list=new ArrayList(); session=this.getSession(); try{ list=session.createCriteria(TCourse.class).add(Expression.eq("TSchool.schid", schid)).list(); return list; }catch(Exception e){ e.printStackTrace(); return null; }finally{ session.close(); } } } 64
/
本文档为【北京达内培训集团招生网的设计与实现计算机软件专业】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索