基于JSP的毕业设计选题系统的设计与实现_第1页
基于JSP的毕业设计选题系统的设计与实现_第2页
基于JSP的毕业设计选题系统的设计与实现_第3页
基于JSP的毕业设计选题系统的设计与实现_第4页
基于JSP的毕业设计选题系统的设计与实现_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录TOC\o”1—4"\h\z\uHYPERLINK\l”_Toc263019752"1绪论 1HYPERLINK\l”_Toc263019753”1.1选题的目的及意义 1HYPERLINK\l”_Toc263019754”1.2系统开发的关键技术 12系统开发技术 32.1。1SERVLET技术简介 32.1.2JSP及其特点 4_Toc263019763”2。3系统开发所用工具 6HYPERLINK\l”_Toc263019764”2.3.1ApacheTomcat 6HYPERLINK\l”_Toc263019765”2.3.2MySQL数据库 6HYPERLINK\l”_Toc263019766”2。4系统运行环境 7HYPERLINK\l”_Toc263019767”2.4.1硬件环境 7HYPERLINK\l”_Toc263019768"2.4。2软件环境 7HYPERLINK\l”_Toc263019769”3需求分析 8_Toc263019772"3。2。1功能结构图 10HYPERLINK\l”_Toc263019773"3。2。2系统模块介绍 10HYPERLINK\l”_Toc263019774"3。3系统的总体结构 113.4业务流程分析 12HYPERLINK\l”_Toc263019776”3。4。1学生志愿课题管理 12HYPERLINK\l”_Toc263019777"3。4。2教师课题管理 13HYPERLINK\l”_Toc263019778"3。4。3用户基本信息管理 134。1数据库概念结构设计 16HYPERLINK\l”_Toc263019783"4。1。1实体E—R图 16HYPERLINK\l”_Toc263019784"4。1。2实体联系E—R图 18_Toc263019786”4。1。4关系模式设计 19HYPERLINK\l”_Toc263019787"4.1。5数据表结构 205。1系统登陆界面的设计与实现 25HYPERLINK\l”_Toc263019790”5.2主控制平台的设计与实现 25HYPERLINK\l”_Toc263019791”5.3用户操作总体设计 26_Toc263019793”5.3.2教师管理模块设计 29HYPERLINK\l”_Toc263019794”5.4技术难点 315。4.2HQL语言 31HYPERLINK\l”_Toc263019797”6测试 326.3系统的安全性分析 346。4系统的实用性分析 34HYPERLINK\l”_Toc263019802”总结 35HYPERLINK\l”_Toc263019803”参考文献 36HYPERLINK\l”_Toc263019804”致谢 371绪论1。1选题的目的及意义随着网络和信息技术的发展,20世纪80年代人们提出了“办公自动化"的概念,经过20多年两代的发展,办公自动化系统发生了根本的变化,它主要采用客户/服务器的二层结构、浏览器/服务器/数据库的三层结构,以网络技术和协同工作技术为主要特征,实现工作流程自动化和非结构化数据库的功能,实现了收发文件从传统的手工方式向工作流程自动化方式飞跃,可以方便的实现非结构化文档的处理。学校处在信息接受的前沿,实现教学办公自动化是必然趋势,毕业生的“毕业设计选题管理系统”就是办公自动化的一项主要内容.“毕业设计选题管理系统”利用了方便的网络通信技术,使得管理员管理教师课题和学生的志愿工作变得非常方便。该系统采用JSP(JavaServerPages)开发技术,基于B/S模式的工作方式使得数据的维护也显得非常方便1。2系统开发的关键技术本系统采用了基于MVC模式的Struts框架与Hibernate框架进行开发。开发的关键技术:=1\*GB2⑴JSP技术的应用。=2\*GB2⑵Struts框架的使用。=3\*GB2⑶Hibernate框架的使用。1。3本课题研究的主要内容以及展望“毕业设计选题管理系统“是基于浏览器/服务器架构的软件管理系统,它的开发技术是目前比较流行的基于windows平台的JSP结合JAVASCRIPT技术,数据库采用了SUN公司开发的MYSQL数据库,MYSQL是高性能的数据库管理系统,在可靠性、易用性、可伸缩性、业务职能功能等方面都具有非常优秀的表现,它具有支持多用户同时访问,自适应内存调节特性等优点,有良好的可扩展性和可维护性,更容易控制。“毕业设计选题管理系统"分为“前台”和“后台“两部分,前台是实现学生和教师浏览网站的功能,学生用户通过网上浏览教师的课题选择自己喜欢的课题,然后提交到后台数据库保存选题信息,待由管理员处理信息,而教师则可以通过网上浏览申请课题,然后提交到后台数据库,待由管理员处理信息,学生和教师只能浏览数据库信息,不能修改,数据库的相关信息处理由管理员完成.管理员处理教师课题和学生志愿要完成的操作有:对学生志愿的添加、删除、修改,能够查看有哪些学生选择了志愿,哪些学生还没有选择志愿.对教师课题管理要完成的操作有:对教师课题的添加、删除、修改,并要对教师申请的课题进行审查、批准.另外,管理员还要完成学生课题的排列:分为两种方式:自动生成终表和手动生成终表,按志愿优先级进行排列。发布公告,查看公告。2系统开发技术2。1语言可行性的分析2。1。1SERVLET技术简介Servlet是Java技术对CGI(CommonGatewayInterface)编程的回答.Servlet程序在服务器端运行,动态地生成Web页面。同时它也作为一个中间层,负责连接来自Web浏览器或其他HTTP客户程序的请求和HTTP服务器上的数据库或应用程序.与传统的CGI和许多其他类似CGI的技术相比,JavaServlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资,更高效。Servlet被调用的流程如图2。1所示。图2。1Servlet被调用的流程图2。1说明:(1)客户端(通常为Web浏览器)向Web服务器发送一个基于HTTP协议的请求。(2)Web服务器接收到该请求,并将请求交给Servlet容器处理。(3)Servlet容器根据Servlet的配置来查找或创建Servlet的实例,并执行该Servlet,Servlet容器必须把客户端请求和响应封装成Servlet规范中规定的请求和响应对象传给Servlet。(4)Servlet可以使用请求对象获取客户端的信息,比如IP地址、请求的参数等,以及执行特定的业务逻辑。Servlet可以使用响应对象向客户端发送业务数据及业务执行的结果。(5)Servlet处理完该请求后,Servlet容器要保证Servlet的响应内容能够发送到客户端去(flush),最后返回到Web服务器.【3】2.1。2JSP及其特点JSP及其特点[2]:JavaServerPages(JSP)是一种实现普通静态HTML和动态HTML混合编码的技术。JSP和ASP相比具有两方面的优点。首先,动态部分用Java编写,而不是VBScript或其他Microsoft语言,不仅功能更强大而且更易于使用。第二,JSP应用可以移植到其他操作系统和非Microsoft的Web服务器上.JSP和纯Servlet相比JSP并没有增加任何本质上不能用Servlet实现的功能。但是,在JSP中编写静态HTML更加方便,不必再用println语句来输出每一行HTML代码.更重要的是,借助内容和外观的分离,页面制作中不同性质的任务可以方便地分开:比如,由页面设计专家进行HTML设计,同时留出供Servlet程序员插入动态内容的空间[4].2.2框架的可行性2.2.1MVC(ModelViewController)分层结构MVC即模型-视图-控制器模式是一种“分治"的思想。模型,即相关的数据,它是对象的内在属性;视图是模型的外在表现形式,一个模型可以对应一个或者多个视图,视图还具有与外界交互的功能;控制器是模型与视图的联系纽带,控制器提取通过视图传输进来的外部信息转化成相应事件,然后由对应的控制器对模型进行更新;相应的,模型的更新与修改将通过控制器通知视图,保持视图与模型的一致性。图2—2揭示了这三者之间的关系:图2—2MVC模型图2。2。2基于MVC结构web系统设计MVC是包含模型、视力、控制器的分层结构,其系统设计也分别从这三个方面入手,图2—3为基于MVCWEB系统的图形化描述。图2—3MVC模型=1\*GB2⑴控制器的设计控制器是模型和视图联系的纽带,同时也是系统的控制中心。根据控制器在系统中的不同作用,将控制器抽象成四种控制器类型,即主控制器(MainController)、请求映射控制器(RequestMappingConntroller)、视图选择控制器(ViewController)和模型控制器(ModelController)。其中,主控制器在系统服务器最前端,用于从xml配置文件中获取HTTP请求映射表,接收客户的HTTP请求并且将该请求传送给请求映射控制器和视图选择控制器;请求映射控制器将传送来的HTTP请求映射到相应的处理器(处理器采用JavaBean形式)进行处理,其映射表直接从ServletContext的变量中获取(因为该映射表已经由主控制器装入),处理完后返回结果;视图控制器根据HTTP请求映射表及处理器处理后的结果进行下一个视图的选择;模型控制器负责客户会话数据的处理:每一个客户对应一个会话模型,用来描述客户的各种状态等.=2\*GB2⑵视图层设计视图层即用户界面,在WEB系统中表现为用户可见的网页,对于每一个使用HTTP请求响应模型WEB应用,View组件基本上总是和响应相关联的组件,并将结果返回给用户,视图层应该尽量减少业务逻辑或复杂的分析.=3\*GB2⑶模型层设计模型层通常表现为业务对象或者物理后端系统。模型层通常都是业务相关的,对于数据库的相关操作,及复杂的业务逻辑分析都应该在模型层实现。【15】2。3系统开发所用工具2。3.1ApacheTomcatTomcat服务器是一个免费的开放源代码的Web应用服务器,它是Apache软件基金会(Apache

Software

Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,Tomcat5支持最新的Servlet

2。4和JSP

2。0规范。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器.2。3.2MySQL数据库MySQL数据库技术:MySQL是一个快速的多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务.重负载生产系统的使用,也可以将它嵌入到一个大配置(mass—deployed)的软件中去。(1)MySQL是一个数据库管理系统。一个数据库是一个结构化的数据集合。它可以是从一个简单的销售表到一个美术馆、或者一个社团网络的庞大的信息集合。如果要添加、访问和处理存储在一个计算机数据库中的数据,你就需要一个像MySQL这样的数据库管理系统。从计算机可以很好的处理大量的数据以来,数据库管理系统就在计算机处理中和独立应用程序或其他部分应用程序一样扮演着一个重要的角色。(2)MySQL是一个关系数据库管理系统.关系数据库把数据存放在分立的表格中,这比把所有数据存放在一个大仓库中要好得多,这样做将增加你的速度和灵活性.“MySQL”中的SQL代表“StructuredQueryLanguage”(结构化查询语言)。(3)MySQL服务器是一个快的、可靠的和易于使用的数据库服务器.如果这是你正在寻找的,你可以试一试。MySQL服务器还包含了一个由用户紧密合作开发的实用特性集。(4)MySQL服务器工作在客户/服务器或嵌入系统中。MySQL数据库服务器是一个客户/服务器系统,它由多线程SQL服务器组成,支持不同的后端.多个不同的客户程序和库.管理工具和广泛的应用程序接口(APIs)。(5)MySQL也可以是一个嵌入的多线程库,你可以把它连接到你的应用中而得到一个小、快且易于管理的产品.2。4系统运行环境2.4.1硬件环境后台数据库服务器:因为服务器为数据库服务器,且要完成高密度的运算量,所以应采用较高档的服务器。考虑到与软件的兼容性,建议采用IntelPentium4多处理器系统、512MBRAM、80GB以上硬盘.客户机:采用IntelPentium4多处理器系统、512MBRAM、80GB以上硬盘.网络配置:10M/100M网络带宽、100Mb/s网卡、16口交换机.2.4。2软件环境操作系统的选择:数据库服务器:因为服务器为数据库服务器,特别对稳定性有极高的要求,且支持多CPU.所以应采用Windows2000Server,因为它有优良的稳定性和操作性。数据库的选择:因大部分情况下软件都是在Windows系统下使用的,考虑MySQL的优势在于中国普遍使用的免费数据库软件并且与系统的兼容度较高,并支持集成性安全检测,且对系统的资源消耗较小。相比之下,Oracle数据库虽然性能较高,但由于其可操作性和方便性不如MySQL好,并且服务器没有使用磁盘阵列和多处理器,无法发挥Oracle数据库设计上的性能优势,并且对系统性能要求较高。至于Access之类的数据库,由于其性能较低,且并发度太低又不具安全性,故不予考虑。最终决定后台数据库用MySQL5。0。当然整个系统只能在Windows下运行。3需求分析毕业生选题管理一直是学校为培养合格的毕业生所做的最重要的工作,学校为毕业提供合适的课题,毕业生通过对课题的设计,综合复习学习过的知识,将理论和实践结合起来,为以后的工作积累宝贵的经验。传统的毕业设计的选题过程是:指导老师根据院(系)的要求,设计出一定数量的毕业课题并提交给教学管理人员审阅;教学管理人员审阅课题,检查出重复的课题,并根据学生的知识水平判断课题的难易是否适宜,提出修改意见,反馈给教师修改;毕业课题设计完成之后,由学院负责人将全部课题发给毕业生,班级负责人组织毕业生选题,然后交给教学管理人员,教学管理人员检查学生的选题情况,并最终确定选题结果。虽然是个合理的有序的过程,但在实际过程中,这种管理仍然存在着过程繁琐、工作效率低等问题。随着计算机的普及、网络和信息化的迅速发展,计算机选课系统、计算机信息管理系统正在普及、然而针对毕业设计双向选题的系统设计却少见报道.开发一个基于WEB的毕业选题系统,在提高毕业设计选题的工作效率,节省人力、物理资源方面都有极大的优势.目前,在大多数高校院(系)都没有一套完整的选题系统,因此设计和开发这样的一个选题系统具有极大的现实意义。针对上述情况,本文采用目前流行的B/S架构模式,设计了一套基于JSP+MYSQL的毕业设计选题系统。该系统增强了指导教师、学生和管理人员在毕业设计选题过程中的交互性,教师能够在线提交和更新待审题目,学生可以在线选题并且查看选题结果,管理人员可以在审阅待审题目并且调整学生选题3。1需求说明(1)管理员录入或导入教师信息,管理员将毕业学生基本信息导入,管理员是所有用户中权限级别最高的用户,能够对教师、学生和个人信息、出题信息、选题信息进行修改.同时,还要负责通知发布、选题结果公布等。(2)教师教师登录系统后,能够修改的数据有:密码、个人联系方式、包括Email和电话,其它信息不能私自修改。对于题目信息和要求,可以对题目信息和要求,可以通过管理员来修改。教师能后查看到选自己课题的学生人数和学生基本情况。(3)学生学生登录系统后,只能修改密码、个人的联系方式、其它信息不能修改.每个学生只能选一个题目或者一个课题项目的一个模块部分,选择之后在规定的时间内可以更改,规定时间以外不能更改,对于已选题目不能再次被选,除非其他学生在规定的时间内退选。毕业生选题管理系统总体流程图,如图3。1所示.开始开始用户登录验证教师管理系统管理员管理系统学生管理系统教师课题添加教师课题删除教师课题查询教师信息修改按类型查询查询全部按类型删除系统设置学生管理教师管理发表公告学生查看课题学生课题退选学生课题查询查看审核状态存在提示确定删除确定退选确定是否选上按类型查询查询全部学生信息修改退出确定是否退出未通过验证通过验证是否生成终表图3。1毕业生选题管理系统总体流程图3。2功能定义用列表的方式,逐项定量和定性地叙述对系统所提出的功能要求,说明输入什么量、经怎样的处理、得到什么输出,说明系统的容量,包括系统支持的终端数据和应支持的并行操作的用户数等指标。对出题的要求:(1)每位有资格教师可以出不少于指导名额、不多于8个论题;(2)在管理员确定的时间内出题;(3)不能与已有出题重复。审查的程序:(1)管理员将所有教师出题提交学院学术委员会进行审查;(2)管理员将审查后的备选论题公布在学院网站上,备选论题与指导教师一一对应。选题要求:(1)每个学生只能选择一个题目;(2)对于同一课题只能一个学生选择(多人合作完成除外); 3.2。1功能结构图 根据用户和系统需求,本系统划分为三个子系统,即管理员子系统、教师子系统、学生子系统。毕业生选题管理系统毕业生选题管理系统学生子系统管理员子系统教师子系统3。2系统功能结构图3。2.2系统模块介绍根据实际情况,系统分为三大模块,即三个子系统。下面详细介绍各系统的功能及要求.(1)管理员模块网络的维护需要管理员对系统的必要的设置。并保证系统的正常运行.在不系统中,系统规定了管理员的权限与功能,管理员有权对数据库进行维护。管理员功能系统包括添加功能、修改功能以及统计功能.添加功能能够添加其他管理员、教师或者学生;修改功能能够修改教师、学生资料,能够根据专业设置情况添加课题类别,修改/添加课题的相关信息;统计功能主要是在选题过程结束后,由管理员对结果进行统计,便于院(系)及时掌握学生选题情况。(2)教师模块课题信息发布,教师可以录入每个选题信息,但是需要管理员审核后才能供学生选择;个人资料的修改与添加,教师资料的修改与添加可由管理员或者教师自己来完成;查看选课学生资料,教师可以查看选择自己课题的学生的资料,决定是否指导该学生的毕业设计。(3)学生模块学生登录系统需要自己的学号,登录后学生可以进行的操作:仅能修改个人的联系方式;浏览供选择的课题信息,选择课题;在规定时间内的选择和更改课题;在规定的时间内查询选题结果。3。3系统的总体结构根据毕业设计选题的业务情况,系统共分成管理员,教师,学生三大系统模块,系统功能设置,管理员用户操作,教师信息修改,选题题目提交,选题题目审核,学生信息导入,学生信息修改,题目选报,信息浏览功能。功能如图所示:学学生志愿管理教师课题管理用户信息管理自动生成终表手动生成终表文件管理修改学生志愿删除学生志愿删除学生课题修改教师课题删除教师课题增加教师课题申请课题管理添加用户删除用户发表公告修改用户生成终表系统登录的主界面管理员登录图3.3系统总体结构图3。4业务流程分析管理员录入教师及学生初始信息管理员录入教师及学生初始信息管理员开启提交选题功能管理员添加审核管理员教师登录提交选题管理员关闭提交选题功能管理员开启题目审核功能管理员开启学生预览功能管理员调剂选报情况审核管理员审核题目学生登录预览题目管理员打印输出最终报表管理员关闭题目审核功能管理员关闭学生预览功能管理员开启学生选报功能学生登录选报题目管理员关闭学生选报功能图3。4业务流程示意图3.4.1学生志愿课题管理在这一块里,可以分为修改学生志愿、删除学生志愿、删除学生课题和查看未选志愿学生四大部分,它的处理流程可以用以下图表(图3.5)方式描述:管理人员管理人员登录学生志愿存储学生课题存储修改学生志愿删除学生志愿删除学生课题查看未选志愿学生学生基本信息存储控制界面登陆错误被弹出图3。5管理员对学生志愿操作流程管理人员首先查看要更新的数据,进行修改后,保存进数据库。3.4。2教师课题管理管理员对教师课题管理分为:修改教师课题、添加教师课题、删除教师课题和教师申请课题管理四部分,同时对数据库中的信息进行最后的处理,拿出最终的毕业设计课题小组分组情况,处理流程如下图(图3.6):管理员管理员登陆教师课题存储教师申请课题修改教师课题添加教师课题删除教师课题批准教师申请课题主控制界面非法用户被禁止图3.6教师课题管理部分流程3.4。3用户基本信息管理用户基本信息管理包括了对用户信息的添加、删除、修改等基本操作,添加用户后,该用户可以凭借自己的帐号登陆管理系统;删除用户信息后,该用户登陆信息被删除,不能进行登陆;需要注意的是,在修改用户信息时,不要轻易改动用户登陆信息,否则会造成用户无法登陆。其数据处理流程如下图(图3。7)所示:管理员管理员登陆添加用户修改用户删除用户主界面用户信息存储图3.7用户信息管理操作3.4。4自动生成终表自动生成终表是按学生志愿顺序生成终表,处理流程如图3。8:管理员管理员登陆控制界面学生志愿存储学生第一志愿相应教师课题判断教师课题是否未满生成终表是否教师课题存储学生第二志愿相应教师课题判断教师课题是否未满是终表存储生成终表否图3.8自动生成终表3.4。5手动生成终表手动生成终表是由管理员判断哪位学生修哪门课题,不一定要按学生志愿的顺序生成终表,比如一位学生的第一志愿是“空调设计”,第二志愿是“网络设计”,在手动排列生成终表时,管理员很可能直接就将该学生的设计课题定为第二志愿“网络设计”,而不会考虑第一志愿。处理流程如下图(图3。9):管理员管理员登陆控制页面学生志愿存储教师课题存储终表存储学生志愿教师课题图3.9手动排列生成终表流程4数据库设计4。1数据库概念结构设计在一个数据库应用系统的开发过程中,数据库的设计是整个系统的基础.良好的数据结构设计不仅可以减少数据冗余、提高查询效率,而且还可以降低应用程序的编写难度,提高工作效率。4。1.1实体E-R图在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结构,才能更好的更准确的用数据库管理系统实现这些需求.根据需求分析画出E—R图。毕业生选题管理系统的E-R图如下图所示。管理员信息管理员信息管理员账号帐号管理员姓名管理员密码所属院系联系方式邮箱角色图4.1管理员基本信息E—R图学生信息学生信息学号学生姓名登录密码所属班级所属院系性别联系方式邮箱课题角色图4。2学生基本信息E—R图教师信息教师信息教师工号教师姓名登录密码所属院系职称性别联系方式邮箱角色图4。3教师基本信息E—R图课题信息课题信息课程名称出题教师允许学院允许专业限选人数课题难度工作量课题性质课题来源课题简介课题要求出题日期图4。4课程信息E—R图以下几个图示实体与实体之间的关系:图4-5学生信息实体和课题实体之间的联系图4-5学生信息实体和课题实体之间的联系学生课题11引用图4-6教师信息实体与课题信息实体之间的联系图4-6教师信息实体与课题信息实体之间的联系教师课题n1拥有图4-7学院实体和专业实体之间的联系图4-7学院实体和专业实体之间的联系学院专业n1拥有图4-8学院实体和教师实体之间的关系图4-8学院实体和教师实体之间的关系学院教师n1拥有图4-9课题实体和课题申请信息实体之间的关系图4-9课题实体和课题申请信息实体之间的关系课题课题申请11引用4.1.2实体联系E—R图实体联系E—R图如图4。10所示。1n11n1选题选题指导出题教师信息课题学生信息图4。10实体联系图4.1。3E—R图向关系模型的转换关系模型的逻辑结构是一组关系模式的集合。E—R图则是由实体,实体的属性和实体间的联系三个要素组成.所以将E—R图转换为关系模型实际上就是要将实体,实体的属性和实体间的联系转换为关系模式。转换原则如下:(1)实体类型的转换:将每个实体类型转换成一个关系模式,实体的属性及为关系模式的属性,实体标识符及为关系模式的键.(2)联系类型的转换,根据不同的情况做不同的处理:①若实体间的联系是1:1,可以在两个实体类型转换成的两个关系模式中的任意一个关系模式的属性中加入另一各关系模式的键和联系类型的属性。②若实体间的联系1:N,则在N端实体类型转换成的关系模式中加入1端实体类型转换成的关系模式的键和联系类型的属性。③若实体间的联系是M:N,则将联系类型也转换成关系模式,其属性为两端实体类型的键加上关系类型的属性,而键为两端实体间的组合.4。1.4关系模式设计依照该规则将教学管理系统的E-R图转换为关系模型如下:将每一个实体转换成一个关系(关系就是给出关系名,写出属性,并标明该关系的主键)。JB031模式:(1).admin_t(id,account,name,password,college,phone,mail,role)管理员信息(管理员帐号,管理员姓名,管理员密码,所属院系,联系方式,邮箱,角色)(2).student_id(id,stuid,name,password,sex,class,profession,phone,mail,topic,role)学生信息(学号,学生姓名,登录密码,性别,所在班级,所属院系,联系方式,邮箱,课题,角色)(3).teacher_t(id,teach_id,name,password,sex,title,education,college,phone,mail,role)教师信息(教师工号,教师姓名,登录密码,性别,职称,学历,所属院系,联系方式,邮箱,角色)(4).college_t(id,college_id,college_name)学院信息(学院编号,学院名称)(5).profession_t(id,profession_id,profession_name,college)专业信息(专业编号,专业名称,所属院系)(6).topic_t(id,topic_name,teacher,permit_col,permit_prof,limit_no,difficult,workload,topic_prop,topic_source,topic_intro,topic_ask,topic_date)课题信息(课题名称,出题教师,允许学院,允许专业,限选人数,课题难度,工作量,课题性质,课题来源,课题简介,课题要求,出题日期)(7).apply_t(id,topic_state,student_state,topic_num,select_num,apply_date)课题申请信息(审核状态,正选状态,课题编号,已选人数,申请日期)(8).wash_t(id,student_id,wash_id,topic_id,select_time)预选信息(学号,志愿号,课题名称,预选日期)(9).systems_t(id,college,college_state,produce_topic,view_topic,select_topic,produce_no)系统信息(学院,学院选题状态,出题状态,预览状态,选题状态,允许出题数)(10).document_t(id,user_id,user_name,to_who,user_type,file_name,file_path,file_context,file_rank,create_time)文件(用户账号,用户姓名,接收者,用户角色,文件名称,文件路径,文件内容,文件归类,发表日期)4.1。5数据表结构1。管理员信息表,如表4。11。表4。11管理员信息表中文名称字段名数据类型约束管理员帐号accountVARCHARNotnullunique管理员姓名nameVARCHARNotnull管理员密码passwordVARCHARNotnull所属院系collegeINTEGERReferencescollege_t(college_id)联系方式phoneVARCHARyes邮箱mailVARCHARyes角色roleVARCHARNotnull2.学生信息表,如表4.12。表4.12学生信息表中文名称字段名数据类型约束学号stuidVARCHARNotnullunique学生姓名nameVARCHARNotnull登录密码passwordVARCHARNotnull学生性别sexVARCHARNotnull学生所在班级classVARCHARNotnull学生所属院系professionINTEGERReferencesprofession_t(profession_id)联系方式phoneVARCHARyes邮箱mailVARCHARyes课题topicINTEGERReferencestopic_t(topic_name)角色roleVARCHARNotnull3。教师信息表,如表4.13。表4。13教师信息表中文名称字段名数据类型约束教师工号teach_idVARCHARNotnulluniqu教师姓名nameVARCHARNotnull登录密码passwordVARCHARNotnull教师性别sexVARCHARNotnull教师职称titleVARCHARNotnull教师学历educationVARCHARNotnull所属院系collegeINTEGERReferencescollege_t(college_id)联系方式phoneVARCHARyes邮箱mailVARCHARyes角色roleVARCHARNotnull4。课题信息表,如表4.14.表4.14课题信息表中文名称字段名数据类型约束课程名称topic_nameVAECHAENotnullunique出题教师teacherINTEGERNotnull允许学院permit_colINTEGERReferencescollege_t(college_id)允许专业permit_profINTEGERReferencesprofession_t(profession_id)限选人数limit_noINTEGERNotnull课题难度difficultVARCHARNotnull课题工作量workloadVARCHARNotnull课题性质topic_propVARCHARNotnull课题来源topic_sourceVARCHARNotnull课题简介topic_introVARCHARNotnull课题要求topic_askVARCHARNotnull出题日期topic_dateTIMESTAMPNotnull5。学院信息表,如表4。15.表4。15学院信息表中文名称字段名数据类型约束学院编号college_idINTEGERNotnullunique学院名称college_nameVARCHAENotnull6.专业信息表,如表4.16。表4。16专业信息表中文名称字段名数据类型约束专业编号Profession_idINTEGERNotnullunique专业名称Profession_nameVARCHARNotnull所属院系collegeINTEGERReferencescollege_t(college_id)7.课题申请信息表,如表4。17。表4。17课题申请信息表中文名称字段名数据类型约束审核状态topic_stateINTEGERNotnull正选状态student_stateVARCHARNotnull已选人数topic_numVARCHAR yes出题编号select_numVARCHARNotnull申请日期apply_dateTIMESTAMPNotnull8。学生预选信息表,如表4。18。表4。18学生预选信息表中文名称字段名数据类型约束学号student_idINTEGERReferencesstudent_t(stuid)志愿编号wash_idVARCHARNotnull课题topic_nameVARCHAR Referencestopic_t(topic_name)预选日期select_timeTIMESTAMPNotnull9.系统设置信息表,如表4.19.表4。19系统设置信息表中文名称字段名数据类型约束所属院系collegeINTEGERReferencesprofession_t(profession_id)院系状态college_stateINTEGERNotnull出题状态produce_topicINTEGERNotnull预览状态view_topicINTEGERNotnull选题状态select_topicINTEGERNotnull出题个数produce_noINTEGERNotnull10文件信息表,如表4。20。表4.20文件信息表中文名称字段名数据类型约束用户帐号User_idVARCHARNotnullunique用户姓名User_nameVARCHARNotnull用户角色User_typeVARCHARNotnull接收用户To_whoVARCHARyes文件名称File_naemVARCHARNotnull文件路径File_pathVARCHARNotnull文件内容File_contextTEXTyes发表日期upfile_timeTIMESTAMPNotnull5系统实现详细设计与实现根据已有的需求信息和总体设计,来进行系统的详细设计和实现。为此,我们建立了一个Web工程,系统的设计和实现如下。5.1系统登陆界面的设计与实现用户登陆模块最基本的作用是为了限制该管理系统资源的使用,只有经过身份确认的操作员才能对其管理系统进行相关操作。其基本过程是从客户端取得提交的用户名和密码,然后到数据库中进行核对.如果该信息在数据库中存在,那么就可以成功登录到下一界面,否则就会被该系统拒之门外.选择连接数据库后,进入用户登陆界面。在用户登陆界面中输入用户名和密码,从数据库表中检查是否有相应的用户名和密码。如果用户名和密码错误,系统就会给出错误提示,并且不会有任何的页面跳转。如果输入的用户名和相应密码正确,则可以点击“确定”进入主控制平台。用户登陆的界面如图5。1所示。图5.1登录系统界面5。2主控制平台的设计与实现通过用户登陆界面,进入主控制平台.在主控制界面中,包括教师管理、课题管理、学生管理、返回管理员登录页面等功能模块的连接,管理员可通过对管理模块的选择进行相应的操作。主控界面如图5。2所示。图5.2主控制界面5.3用户操作总体设计用户操作主要包括管理员登录和学生及教师管理模块,具体功能如下:管理员登录:用于登录系统。学生管理模块:用于浏览、添加和修改学生及教师的信息,以及课题的管理。5。3。1用户登录设计用户登录是用户进入主页面的入口,其运行结果如图5。3所示。图5。3用户登录运行结果系统登陆是毕业生选题管理中最先使用的功能,因为用户登陆在数据库中使用的是人员表,人员表中有一个role字段,是来标识是否是管理员的。在登陆时要根据数据库的这个字段来判断此用户是否具有管理员的权限。在网页里添写用户名和密码后点击登陆按钮,网页会访问一个URL,这个URL是“logon.action",这个action的name属性的值是login,它是Struts的Actoin的实现类在配置文件中的名字,如下所示:〈actionname=”login”type=”com.graduate。action.LoginAction"/>action是Struts的Action的URL,他们在Struts的配置文件中都是已经配好的,如下所示:〈actionname=”login"class="com。graduate。LoginAction"〉〈resultname=”studentlogin”〉/student/index.jsp</result〉 <resultname=”fail”〉login.jsp〈/result〉 〈resultname=”teacherlogin”>/teacher/index。jsp</result〉 <resultname="fail”>login.jsp〈/result〉 〈resultname=”adminlogin”〉/admin/index。jsp</result〉 <resultname=”fail"〉login。jsp</result></action>在这个配置文件中,可以了解到如下信息:根据name=”login"可以找到与之相对应的Action的实现类“com.graduate.action。LoginAction”。根据type=”com.graduate。action。LoginAction”可以找到处理用户数据的Action类.根据〈resultname=”success”/〉/user/index。jsp〈/result〉可以了解,这个Action返回success时,页面会被转到/user/index.jsp文件,这就是登陆成功的页面.如果当Action返回fail时,页面会被转到login。jsp文件,用户重新登录,并告诉用户的错误信息。Struts的UserAction实现类的execute()方法是最先被执行的,这个方法本身也没有具体的事务,而是根据action的参数不同执行相应的方法。在登陆页里面可以找到有一个“action=logon”的字样,它的目的就是在这里做逻辑判断.当action=logon时调用logon()方法。logon()方法从UsersForm中得到用户提交的数据,然后在调用UsersDao()的logonUsers()方法.并且把UsersForm转成Users类做为logonUsers()方法的参数。调用后会返回一个boolean型的值。如果为真,则返回“mapping。findForward(”success");”否则返回“mapping。findForward(”fail");”也就是当用户登陆成功后,返回给用户登陆成功的页面,登陆失败后返回用户一个登陆失败的页面。那么UsersDao的logonUsers()方法是根据什么得到的返回值呢,现在就让我们看看这个方法,这个方法先通过HibSessionFactory得到一个Hibernate的Session并且开始一个事务,Session再像使用一个欲编译似的命令似的东西,设定参数、提交事务和最后在关闭Session。.得到一个List里面就存储着所有查询出的结果。根据这个结果就可以判断出该用户是否有登陆的权根了,在返回true或者false。就这样合法的用户就可以顺利的登陆了。那刚才那些有些类似于欲编译的东西是什么呢,这些就是Hibernate特有的查询语言,被称为Hibernate查询语言(HQL),而它本身也就是使用的JDBC的欲编译技术。关键代码如下:publicStringexecute(){ if(hasErrors()){ returnINPUT;}ActionContext.getContext()。getSession().put("user",admin); returnSUCCESS;}publicvoidvalidate(){Stringnumber=(String)ActionContext。getContext()。getSession()。get(”number"); System。out.println(”name--——-”+name); if(name==null||name。trim()。equals(””)){ addFieldError("username”,”用户名不能为空”); return; } if(psw==null||psw。trim()。equals(””)){ addFieldError(”userpsw”,”密码不能为空"); return; } if(!number。equalsIgnoreCase(num)){ addFieldError(”checkcode”,”验证码不正确"); return; }AdminDAOdao=(AdminDAO)DAOFactory。getDAOInstance(AdminDAO.class); admin=dao。findByUserId(name);if(admin==null||!psw。trim().equals(admin。getPassword())){ addFieldError(”login”,”不是合法用户”); return; } }5.3。2教师管理模块设计教师管理模块主要包括审核课题信息、添加课题、查看教师、添加教师.此模块文件架构如图5。4所示。各项管理工作都是在用户成功登陆后的管理页面进行的,在管理控制页面的左侧是各项的相关链接,右侧是操作平台。单击“添加课题信息”,即打开添加课题信息的页面如图5。4所示。图5.4添加课题信息页面添加课题信息的链接是这样的,如下所示:<ahref=”addtopic。jsp"target="main"〉添加课题〈/a〉在Struts配置文件中,添加课题信息的链接没有使用Action类,也没有使用Action的实现类,如下所示:addTopic。jsp文件,只是一个普通的JSP文件,但是它的表单元素都是与TopicAction相对应的,TopicAction如下所示:TocpicAction类中的reset()方法作用是当用户点击“重置”按钮时,清空input输入框的内容,toString()方法覆盖了Object和toString()方法,populate()方法很有,它把TopicAction转化成Topic实体类,大大方便了程序在对数据库操作时使用的方便。而且这个方法中还把申请日期等表单元素的值由字符型转成日期类型。在addTopic。jsp页面中的action上可以看到它要提交的URL,如下所示:〈formname=”topic"method=”post”action=”topic_add。action">,Topic的action实现类是“com。graduate。TopicAction”,如下所示:publicTsave(Tentity){ Sessionsession=HibernateSessionFactory.getSession(); session.save(entity); returnentity;在TopicAction找到参数action等于add时所调用的方法addTopic(),它只是把从topic表单转化成的topic类做为参数传给了TopicDAO的save()方法。在由这个方法向数据库添加课题信息,如下所示:如果添加成功页面会被被重新加载回页面显示出来topic.action的URL.这样就在页面做一次提交时它访问了二次TopicAction,第一次的作用是向数据库中添加信息,随后又把所添加的课题信息取出来显示给用户,同样TopicAction还只是调用TopicDAO,TopicAction取出从TopicDAO中数据,在把它存到ActionContext里,然后返回returnmapping.findForward(”success”);在Strutsr的配置文件里返回页是addTopic。jsp.课题信息都在这个页中显示出来.这是添加课题信息的整个过程,在这个过程中,有一部分是用于显示课题信息的,课题信息的列表的最后一列可以对该条记录做删除和修改。删除的链接地址是〈ahref="topic_deleteTopic。action”>删除</a〉它向Action的实现类提交了两个参数,一个是action=deleteTopic是固定不变的,另一个是该课题的id这是根据不同记录取出来的。在TopicAction类中根据action的值可以找到与其相对的方法,在这个方法里得到页面提交过来的用户ID,把这个id存在Topic表中的实例中,传给dao的delete()方法,我们可以看到关于数据库方面的操作都被封装在Dao中.删除用户时和添加用户一样都是先得到一个Hibernate的Session,后调用它的delete()方法就可以了修改课题的信息时必须先把要修改的课题信息先查找出来,让用户可以直观的根据以前的信息修改。这样在点击修改时也要传给Action一个用户ID,用来查询出课题信息,如下所示:〈ahref=”topic_modifyTopic.action&id='topic.getId()’”〉编辑〈/a〉”〉修改〈/a>根据页面的链接可以在Struts的配置文件里找到相应的配置信息,它调用了TopicAction类,返回到updateTopic,在UsserAction中同前面一样也是根据action的参数来识别出调用相应的方法,使在调用Dao的loadTopic()的方法后,得到一个Topic里面存着与此id相对应的课题把它存在request里。Hibernate在使用这个load()方法时比较特别,需要传入实体类的class,和要查询的用户ID。得到的返回值需要做一下强制类型转换。显示课题信息的页面在updateTopic.jsp,如图所示.图5。5修改课题信息页面5.4技术难点5。4。1中文乱码由于浏览器中的参数传递是按字节传送,因此英文和数字不会有任何的问题,而中文汉字则由两个字节组成.为了解决这个问题,使用了下面的两种方法:<%request。setCharacterEncoding(“utf-8”<%request。getParameter(”Password”).getBytes(”ISO—8849—1”),"utf—8”)%〉5.4。2HQL语言本系统中,所有对数据库的操作都由Hibernate来完成,因此用到了大量的HQL语言.HQL是Hibernate设计的一套完整而实用高效的查询语言,它通过面向对象的语句结构实现了和SQL语言类似的功能。如果向表里插入一条数据的话,直接调用save()方法即可,但如果要使用查询功能的话,我按照一般的SQL语句的方法:from表名where条件,却总是找不到预期的数据,后来看书中发现,from后跟的是表对应映射的类文件名,而非表名,比如招聘表为invite,它对应的类为Invite。java,所以在from后要根Invite而不是invite.6测试6。1常用的测试方法测试在整个软件开发过程中起着至关重要的作用,软件测试对于保证一个软件的可靠性是极为重要的.测试占据整个软件生命周期的75%左右,可见它的重要性。特别是在面对一个庞大而复杂的系统,软件测试就能充分的发挥它的作用,因为伴随着测试,我们会发现软件中存在的各种各样的问题.从而,尽快地解决问题。在开发一个系统的各个阶段都不可避免地会发生这样或那样的问题,所以在每一个开发的过程中的各个阶段都要对软件进行测试,软件测试的目标是尽可能地发现软件中的错误,以便对其进行修改。测试包括单元测试和集成测试。单元测试是把一个模块作为独立的程序单元进行测试,以保证它能够正确执行规定的功能,单元测试是编码和单元测试阶段的任务。集成测试是将已经通过彻底测试的模块组装起来,以形成一个系统或软件产品,集成测试主要使用黑盒测试法对系统进行功能测试,集成测试的主要任务是检查和排除模块接口错误。全局数据结构错误。模块中某些遗漏的错误;集成测试是系统集成阶段的任务;集成测试可分为自顶向下集成测试、自底向上集成测试、自顶向下和自底向上综合的集成测试、回归测试、测试工作能否成功,主要取决于测试案例设计是否科学合理。测试案例系指测试输入数据及其对应的输出,其设计依赖于所采用的测试方法:白盒测试与黑盒测试.1.白盒测试:使用白盒方法导出测试案例是依据模块的编码,即模块的内部逻辑对测试者是可见的,故称为白盒测试,有时也称为玻璃盒测试。测试的目的在于用最少的测试案例,检测出最多的错误。使用白盒测试方法所导出的测试案例能保证模块中所有独立途径至少要测试一次.测试所有逻辑决策真和假两个方面.在所有循环的边界内部和边界上执行循环体。检查内部数据结构以保证其有效性。白盒测试又包含基本路径测试、条件测试、数据流测试和循环测试。2.黑盒测试:黑盒测试集中在软件的功能需求上,黑盒测试是在程序或模块的接口级进行,而不考虑该程序的内部逻辑。黑盒测试能够用于检测程序中下列类型的错误:(1)不正确或漏掉的功能,这往往是由于程序算法中的问

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论