《基于JavaEE的毕业设计选题测试及管理系统的设计与实本科生毕业论文.doc》由会员分享,可在线阅读,更多相关《基于JavaEE的毕业设计选题测试及管理系统的设计与实本科生毕业论文.doc(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、信息科学与技术学院学士学位论文毕 业 论 文 题 目 基于JavaEE的毕业设计选题测试及管理系统的设计与实现 英文题目 Designment and Implementation of Testing and Management System in Graduation Design Topics Selection Based on JavaEE 毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我
2、为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取
3、得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年
4、 月 日注 意 事 项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词 5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要
5、求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用A4单面打印,论文50页以上的双面打印4)图表应绘制于无格子的页面上5)软件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订3)其它摘 要基于JavaEE的毕业设计选题测试及管理系统通过在毕业设计选题之前的测试来判断学生能力,指导学生选择自己优势方向来选择题目,帮助毕业生正确选题。系统提供给学生有在线测试、查看评测结果、查看评测报告、推荐导师和课题、提交论文、下载论文
6、等功能。系统提供给老师管理课题、查看学生测试结果、分配课题、查看学生论文、上传批阅的论文等功能。系统提供给系统管理员有管理用户信息、管理题库等功能。系统采用的Struts架构是对MVC设计模式的一种实现,它继承了MVC设计模式的所有特性,组件的模块化、重用性、灵活性使得开发更加快捷,管理和维护更加方便。学生测试后可以更了解自己的专业水平,通过系统推荐的导师和课题,协助学生选择导师。导师可以通过系统更全面的了解学生的各方面能力同时选择学生。在学生与导师双向选定后对学生论文的进度跟进,论文批改工作方面也起到了一定的协助作用。关键词:框架,选题测试,论文管理AbstractBased on Java
7、EE Testing and Management System in Graduation Design Topics Selection can determine the ability of the students according to the testing result. The System can guide the students according to their own advantages to choose a topic, and help to evaluate them and select topic correctly. The system pr
8、ovides students with online testing, show evaluation results, show testing scores, recommend tutors and thesis, upload paper, and download paper and some other functions. The system provides teachers to submit topic, search student testing scores, distribute thesis, download students paper, and uplo
9、ad students paper. As system administrator can manage all the users information and manage all the questions information. Struts framework is a realization of MVC design pattern. It inherited all the characteristics of MVC design pattern. Its modularity, reusability, flexibility make the process of
10、development more efficient and convenient.After testing, students can better understand their professional level. Through the recommendation by the system, students can select their tutors better; tutors can have a more comprehensive understanding of all aspects of students ability. The system also
11、has assistant function in following the track of papers writing and in correcting the papers. Keywords: Framework, Topics Testing, Paper Management 目 录摘 要IAbstractII1 概述1.1 课题意义(1)1.2 课题目标(1)1.3 论文结构简介(1)1.4 小结(2)2 技术介绍和分析2.1 Struts简介(3)2.2 Mysql简介(3)2.3 Myeclipse简介(4)2.4 Rational Rose简介(5)2.5 小结(5)
12、3 系统需求分析3.1 系统概述(7)3.2 系统功能分析(7)3.3 系统用例建模(8)3.4 小结(14)4 系统设计4.1 设计目标及原则(15)4.2 系统数据库设计(16)4.3 表示层Web设计(17)4.4 业务逻辑层设计(19)4.5 数据访问层DAO设计(20)4.6 小结(22)5 系统实现5.1 选题测试模块的实现(23)5.2 预选导师模块的实现(31)5.3 开发环境介绍(34)5.4 小结(34)6 系统测试6.1 单元测试(35)6.2 功能测试(37)6.3 集成测试(38)6.4 小结(42)致 谢(43)参考文献(44) 451 概述1.1 课题意义毕业设计
13、是对大学生们在大学期间所学的所有知识的掌握程度进行考核。现在很多学生对大学学习的知识没有进行过系统的应用和总结,不了解自己总体的水平、优势和劣势。导师与学生之间的交流还停留在纸质论文交流的方式,效率较低1。由于不少学生正式选题时不了解有哪些导师的研究方向适合自己,造成选题盲目甚至做出来的毕业设计不符合要求等现象。出题的教师出题前也没有渠道来充分了解学生具体情况,设置的选题可能无法体现学生的技能水平。学生在制作毕业设计期间与老师要进行频繁的交流,特别是在毕业论文的修改、提交、审核、评阅、意见反馈,毕业设计制作进度的监督、系统质量的监督方面。本系统就是为了方便学生科学的了解自己的专业技能水平,根据
14、自己有优势的方面选择毕业设计,方便导师与学生之间的交流和学生顺利完成毕业设计而提出来的采用当前流行架构和技术完成的系统。1.2 课题目标通过本课题的研究和课题系统的实现,可以让学生以学生身份登录,通过学生的在线测试系统将提供测试结果,根据测试结果再提供给学生选题建议,如适合选择的课题和导师。撰写论文期间可以上传写好的论文和下载导师批改过的论文,导师可以以教师身份登录,给每个选题填写题目要求和对学生的期望要求,可以查看学生的评测结果,对所带的学生提交的论文可以下载下来进行审阅,并提交到系统供学生查看。管理员通过该系统对所以系统用户进行管理,对题库进行管理。最终系统能帮助学生选题和教师出题,以及毕
15、业论文高效设计和制作,搭建教师与学生的有效交流平台。1.3 论文结构简介系统是根据软件工程中软件开发过程来制作的,首先进行的是可行性研究,需求分析,总体结构设计,详细设计,编码实现,系统测试,最后是系统维护2。根据这个过程来组织论文的结构如下:(1)概述:主要叙述课题研究对用户的意义,介绍最终系统应该完成的功能和达到的效果。(2)技术介绍和分析:对系统所用的技术和工具作比较和介绍,阐述使用各项技术和工具的优势。(3)需求分析:根据实际的应用和用户需求概述得到开发的系统的需求,通过对角色的分析得到系统使用对象的特点和功能需求。根据用户之间的关系为系统内部逻辑的设计和数据库的设计提供参考。(4)系
16、统设计:根据系统需求设计系统总体的架构和数据库。并解析JavaEE技术在各层之间的具体应用。(5)系统实现:根据系统设计,阐述系统功能实现过程、数据库创建过程、前后台工作过程。通过对学生选题测试功能中Struts架构的运作过程来更具体的阐述实现过程。(6)系统测试与维护:通过测试工具的使用,测试系统是否符合用户需求。通过测试完善系统,改进系统,改正系统中存在的隐含的缺陷。1.4 小结通过本节的介绍,使得对系统的制作的意义和目的进一步细化。坚定了实现系统的决心,并对完成系统有了总体的把握。2 技术介绍和分析2.1 Struts简介Struts框架是一种流行的MVC框架,它是对MVC的实现3,将S
17、ervlet和JSP标记作为实现的一部分。Struts最早是作为Apache基金会Jakarta项目组的组成部分Open Source项目,项目的创立者希望通过对该项目的研究,改进和提高JavaServer Pages 、Servlet、标签库以及面向对象的技术水准4。Struts采用MVC模式,能够很好的帮助Java开发者利用JavaEE开发Web应用。Struts的使用能够很好的帮助开发团队减少在运用MVC设计模型来开发Web应用的时间。它的优势主要集中在:(1)是一款开源软件,开发者可以深入了解其内部实现机制,各种开发要用的jar包可以通过网络下载到本地,非常便捷。(2)有自己的标记库即
18、Taglib,一方面使得JSP页面尽可能少的嵌入Java脚本,不必考虑Java语法或其他JSP语法专注于页面的可视特征上。另一方面给应用开发者很强的后台支持。(3)页面导航功能,通过一个配置文件struts.xml来控制整个系统各部分之间的联系,对各个页面的请求进行分发。对后期的系统维护提供了很大的便利,对系统的脉络也更加清晰。Struts在实现MVC模型时,模型层是将模型分为系统的内部状态和事物逻辑两个部分,内部状态通常由一组ActionForm JavaBean表示,大型应用程序的事物逻辑封装在方法内部,小型应用程序则可能内嵌在Action类中。视图层采用JSP实现5,应用Struts的标
19、签库。控制层用的是继承自ActionSupport的Action类,实际操作中是在struts.xml配置文件中进行Action映射。2.2 Mysql简介Mysql是目前非常流行的SQL语言数据库,是开放源代码的非商用的关系型数据库6。由于其开源性使得当前很多系统都使用Mysql数据库。虽然是免费的但是与同类商业用途的数据库比并不逊色。其主要特性有:(1)数据的物理存储和存取路径对用户是不透明的,这样也减少了用户的使用难度。对数据库不是十分了解的用户使用起来比较简单;(2)不仅在WINDOWS操作系统还可以在LINUX、UNIX、SUN OS等操作系统上使用;(3)Mysql提供了不同的数据
20、类型供选择,支持所有的SQL数值类型。根据数据结构可以选择不同格式和大小的数据类型,使得磁盘空间更加节省,数据库的性能的到提高。如:char提供的是定长的数据存储类型使得检索该类型的数据比较快,varchar类型的数据可以保存变长的字符串,通过设置其最大可存储的数据的长度可以在不知道数据长度的情况下存储任何小于该最大长度的字符串;(4)查询功能很强大,支持SELECT和WHERE语句的count()、avg()、min()、sum()函数和order by等命令,使得检索时可以进行一些运算,对检索出来的结果可以进行一些处理;(5)支持多个用户对数据库的同时访问。与另一个比较常用的Access数
21、据库比较,Access只能运行在Windows操作系统,主要应用于小型的系统7。Access数据库适合数据量小的数据存储,但数据量太大时会造成服务器死机有时甚至服务器崩溃。本系统是面向信息学院所有学生和教师的,要存储学生信息和教师信息以及题库信息,不适合使用Access数据库。而开发的系统对数据的查询和速度要求比较大,所以使用Mysql数据库更加适合本系统。2.3 Myeclipse简介Myeclipse是企业级工作平台是对Eclipse IDE的扩展,它是功能非常丰富的JavaEE的集成开发环境8。在Myeclipse下可以对系统进行编码、调试、测试和发布,另外支持html的所有标记。在使用
22、Myeclipse时对代码能进行提示功能,并且对语法的错误能提示和定位错误。对于一些代码如JavaBean中的Get和Set方法可以自动生成相应的代码,节省了工作量。Myeclipse就是Eclipse的插件,它结构上是模块化得,在不影响其他模块的情况下可以对任一模块单裤升级和扩展。系统开发时使用的是Myeclipse 8.0版本,从Myeclipse 5.0版本就增加了UML双向建模工具、可视化的Hibernate/ORM工具、Web services支持和Oracle数据库开发等。之后出现了Myeclipse6.XGA版本,它兼容了Eclipse 3.3,可在WINDOWS,LINUX等操
23、作系统上运行,并且支持Java持久化结构开发,能够对项目自动部署和启动服务,另外还集成了Myeclipse Tomcat 6服务器。随后又出现了Myeclipse 7.0和8.0版本,7.9版本已经不需要配置Tomcat,只需安装好Myeclipse7.0即可,而8.0版本新增了对Struts2的支持。2.4 Rational Rose简介Rational Rose是由美国的Rational公司开发的一种面向对象的可视化建模工具。利用Rational Rose可以建立用UML(统一建模语言)描述的软件系统模型,而且可以自动生成和维护C+、Java、Visual Basic和Oracle等语言和
24、系统的代码。Rational Rose包括了统一建模语言(UML)、面向对象的软件工程(OOSE)及对象建模技术(OMT)9。Rational可以运行在WINDOWS操作系统下,其主要的特点有:(1)保证模型和代码高度一致,它实现了正向和逆向和双向工程。它可以更具模型生成代码,也可根据软件系统导出系统的模型;(2)支持多种语言,Rational Rose支持包括C+、Visual C+、Java等语言,为Rational Rose用户提供了便利;(3)为团队开发提供强有力的支持,它提供了蔡荣SCM(软件配置管理)的团队开发方式和没有SCM下的团队开发方式,用户可以根据具体项目规模和资源选择;(
25、4)支持模型的Internet发布,Rose中有Internet Web Publisher能将模型发布为HTML版本,使得其他人员可以通过IE等浏览器浏览模型;(5)生成使用简单且定制灵活的文档,Rose中的文档生成工具SoDA可以提供模型文档模板,可以自动生成Word格式的文档;(6)支持关系型数据库的建模,Rose能为SQL Server、Oracle等支持标准DDL的数据库自动生成数据描述语言。2.5 小结在选择开发和设计使用的工具时并不是选择最好的而选择的是比较适合本系统的工具。Struts使得开发的项目层次分明,便于管理。Myeclipse的高度集成性使得与其它软件的合作性比较好。
26、Rational Rose在建立系统模型过中起到了非常重要的作用。3 系统需求分析系统需求分析是在需求获取结束之后进行的,主要是根据获取的需求提炼、分析和仔细审查收集到的需求,以确保项目参与者都明白其含义并分析每个需求与其他需求的关系,找出其中的错误、遗漏、重叠、不一致或其他不足的地方10。通过分析得到系统可以实现的范围和实现能力,根据用户的需求对需求进行排序。系统需求分析的目的在与开发出高质量和具体的需求,为软件设计和实现提供依据。3.1 系统概述基于JavaEE的毕业设计选题测试及管理系统要求学生在设计选题前参加平台提供的测试了解自己的专业知识掌握能力和动手能力,以便选题。同时也为教师了解
27、学生具体情况提供参考,确保毕业论文(设计)选题工作的顺利开展。此外系统也要解决毕业设计的相关管理业务功能,包括学生与教师在毕业设计制作期间的论文交流功能。为了保证系统能发挥其作用,系统管理员要把所有学生和教师信息和测试用题库按照数据库相应的表的要求存入数据库中,导师在学生测试之前应该提供所有可选的课题和课题建议和每个课题特别要求哪些课程信息到系统。系统的功能应该包括所有用户的合法登陆,系统根据学生所在专业设置的课程出题,从学生的测试结果来判断和推荐适合该学生做的课题和适合选择的导师。教师可以从系统中查看预先选择了自己的学生的测试成绩。在毕业设计制作期间,学生可以通过系统来与导师交流制作的论文等
28、。该系统使用应该尽量简单,容易被理解。3.2 系统功能分析系统功能分析可以帮助将整个系统的任务细化成较小的模块,将一个大问题进行分解。为了能够实现学生的专业知识掌握能力和动手能力的测试、教师通过学生的测试成绩来了解学生综合能力,系统管理员对系统的后台数据库进行管理,系统应该分别对这三个角色的功能进行实现。系统按角色的功能分为三大功能模块,如图3-1所示。学生操作教师操作管理员操作选题测试管理个人信息上传论文预选老师保存测试报告管理题库信息管理用户信息查看测试结果毕业设计选题测试及管理系统功能下载教师批改论文修改密码管理课题信息用户登陆管理课程信息查看学生测试成绩管理学生预选信息管理个人信息管理
29、学生论文管理课题信息分配课题图3-1 功能模块图每个功能模块之间是相互独立的。3.3 系统用例建模系统的角色是指与系统功能有关的外部实体,一般系统参与者为系统用户、与所建造系统交互的其他系统和一些可以运行的进程11。由于本系统与其他系统和进程没有直接的联系,是一个独立的系统,所以系统主要参与的角色分为三个:学生、教师和系统管理员。对于不同角色使用该系统是要保证系统部分信息已经完善,部分用例有时间上的优先顺序。所有用户使用系统时必须先登录,学生和教师的部分必填的个人信息要导入到系统中,教师在学生测试之前要完成对课题的设置和课题建议工作。从系统概述可得到,学生参与者具有的功能如图3-2所示。图3-
30、2 学生用例图student(学生)的用例有:login:登陆系统logout:退出系统testing:测试 extract_questions:抽取试题answer_questions:回答测题submit_test_paper:提交考卷manage_personal_infor:管理个人信息view_personal_infor:查看个人信息change_password:修改密码view_test_result:查看测试结果view_test_report:查看测试报告save_test_report:保存测试报告manage_thesis:管理论文upload_thesis:上传论文d
31、ownload_thesis:下载已批改论文apply_teacher:预选导师对于学生的功能可以看到选题测试功能包括:抽取试题、回答问题、提交答卷用例。选题测试用例说明:前置条件:进入主页面,登录系统。基本事件流:(1)输入用户名、密码和用户身份(2)点击“登录”,系统通过对用户信息验证和数据库中用户信息的对比检测用户的合法性,如果用户合法则进入学生后台管理首页(3)单击“我要测试”菜单下的“开始测试”,如果用户还未测试则进入测试页面(4)单击“抽取试题”按钮,做完测题后,单击“提交答卷”按钮,测试完毕备选事件流:(1)当用户输入的用户名或密码为空时,系统将不进行跳转,不出现用户操作页面(2
32、)当用户已经测试,则不跳转到测试页面,而是跳转到提示已经测试的页面后置条件:用户测试完成,得到测试结果和测试报告。教师实体具有的功能如图3-3所示。图3-3 教师用例图teacher(教师)的用例有:login:登陆系统logout:退出系统distribute_thesis:分配课题manage_student_paper:管理学生论文fill_in_thesis_requirement:填写课题要求课程view_student_test_result:查看学生测试结果manage_apply_information:管理学生预选情况manage_thesis:管理课题add _thesis
33、:添加课题delete_thesis:删除课题update_thesis:更新课题view_thesis:查看课题manage_personal_infor:管理个人信息change_password:修改密码view_personal_infor:查看个人信息教师的主要功能给出选题内容及建议,通过查看学生的测试结果和测试报告了解学生情况。查看学生测试结果用例说明:前置条件:用户登录成功,学生完成测试。基本事件流:(1)输入用户名、密码和用户身份(2)点击“登录”,系统通过对用户信息验证和数据库中用户信息的对比检测用户的合法性,如果用户合法则进入教师后台管理首页(3)教师点击“学生测试成绩”菜
34、单下的“查看测试成绩”,系统查找到学生测试成绩,提取学生测试信息返回显示备选事件流:学生未测试则提示学生尚未有测试结果。后置条件:显示学生测试成绩。系统管理员实体具有的功能如图3-4所示。administrator(管理员)的用例有:login:登陆系统logout:退出系统manage_user_infor:管理用户信息add_user_infor:添加用户信息delete_user_infor:删除用户信息update_user_infor:更新用户信息select_user_infor:查找用户信息manage_questions_infor:管理题库add_questions_info
35、r:添加测题delete_questions_infor:删除测题update_questions_infor:更新测题view_questions_infor:查找测题manage_thesis_infor:管理课题信息view_thesis_infor:查看课题信息update_password:修改密码图3-4 管理员用例图管理员的主要功能之一是对学生信息进行管理。学生信息管理用例说明: 前置条件:管理员合法登陆,进入管理员后台管理首页。基本事件流:(1)单击“学生信息管理”菜单下的“查看学生信息”菜单,系统从数据库选出所有学生信息在页面显示(2)单击一条学生信息记录后的“编辑”按钮,对
36、信息进行修改单击“确定”(3)单击一条学生信息记录后面的“删除”按钮,对信息进行删除备选事件流:当用户表中数据的外键被修改时,如果与外键所在基本表中数据不符合,则无法修改。当用户要管理的表格中数据为空时,系统不显示数据。后置条件:数据管理成功,数据库保存修改后的表信息,数据库删除记录。3.4 小结系统需求分析需要注意很多原则,避免出现的需求出现冲突。通过分析得到的需求还必须与用户所要的需求相一致。如果对用户的需求误解了将对以后的系统的设计和实现造成很大的误导,并且不好改动,所以这一步需谨慎。通过对系统进行需求分析,对系统的实现更加细化和明确。4 系统设计系统设计时站在对系统规划的角度来考虑系统
37、该如何实现、如何将需求转换为软件设计的问题。系统设计分为概要设计和详细设计。根据软件工程中软件设计的抽象与逐步求精原则12,先从系统的整个结构出发来设计系统总体架构设计,再设计系统需要实现的功能模块、系统界面、数据库表等。4.1 设计目标及原则随着科技的发展,越来越多的自动化的产品被应用于生活中,特别是年轻人对这些数字化产品特别热衷,这样使得现在的孩子们都不愿意去使用不易理解,使用复杂的产品。从用户的使用感受考虑,系统设计时应该尽量以使用简单、操作一目了然、界面友好、有交互性为主。基于主要用户为学生团体,所以界面风格上设计的要清新,美观。对于不同专业的学生要评测出真实的水平,测试系统题型应该与
38、学生所学专业设置的课程挂钩,并且有难易程度的过度。软件总体框架要以JavaEE思想来设计。对于数据库的设计,要充分考虑到数据的存储需求并充分利用不同数据类型的优势来选择存储数据类型。最终的系统能够实现所有需求获取阶段得到的需求,主要是学生在线测试和对测试进行分析的功能以及论文交流的功能,能够使老师通过系统了解学生的优势和劣势,对导师分配课题提供参考。系统设计还应该以易于实现、易于测试、易于维护为基本理念。系统设计的原则是指导设计过程的。为了能设计出符合需求的系统,设计时要遵守以下原则:(1)结构应该分层次,从而建立软件成分之间的控制;(2)设计应当模块化,逻辑上将软件划分为完成特定功能或子功能
39、的部件;(3)设计应该包含数据抽象和过程抽象;(4)模块与外部环境之间的接口尽量少;(5)系统尽量简单,减少处理的时间和费用;(6)系统数据的一致性,对于系统中的相同信息的显示和存储要一致;(7)系统具备一定的出错处理功能,提高系统的可靠性。4.2 系统数据库设计根据对系统的分析得到如下的实体关系图如图4-1所示:图4-1 系统E-R图从图中可以看到各个实体间的联系。关系型数据库要满足三类完整性约束,即实体完整性,参照完整性,用户自定义的完整性13。通过这三个约束将实体型转换得到关系模式即为数据库的逻辑结构设计:学生(学号,学生姓名,登陆密码,性别,专业号,邮箱号,测试标记)课程(课程号,课程
40、名,专业号)教师(教师号,教师姓名,登陆密码,性别,允许指导学生数,学院号,邮箱号)管理员(管理员号,管理员姓名,登陆密码)专业(专业号,专业名,学院号)学院(学院号,学院名)测试(学号,课程号,课程名,得分,测试日期)问题(问题编号,问题内容,选项A内容,选项B内容,选项C内容,选项D内容,答案选项,分数,课程号)论文指导(学号,论文号,论文主题,学生论文存放位置,更新标志,学生上传日期,教师号,教师论文存放位置,教师上传日期)课题(课题号,课题名,出题日期,课题介绍,课题研究建议,教师号)课题要求(课题号,课题名,课程号,课程名)预选老师(学号,教师号,预选标志,教师同意标志,拒绝原因)4
41、.3 表示层Web设计表示层是服务器与用户之间的接口。根据所见即所得原理,表示层将业务逻辑层返回的数据以用户能理解的形式在页面中显示,用户通过表示层提供的接口输入数据,通过页面来传递数据到后台业务逻辑层进行处理。本系统的表示层主要通过不同的Action控制在JSP页面体现。其中又用到了Struts2的标签和Ajax技术。Struts2标签使得数据显示更加更加方便,代码量减少,同时数据传输方便。当业务逻辑层将数据传递给相应的Action后,通过struts.xml中的映射来跳转到相应的JSP页面,在页面中使用Struts2标签就可以将传递过来的参数显示在页面中。用户在使用系统时更希望界面简单,操
42、作简便,有尽量少刷新操作和等待时间。Ajax技术实现了浏览器与服务器之间数据的异步传输,Ajax中是使用JavaScript来传递数据给业务逻辑层,业务逻辑层将处理后要返回的数据传回给请求数据的客户端JSP页面,页面再通过DOM(Document Object Model)显示新数据,在整个过程中用户可以不手动刷新页面。为了更好的实现导航的功能,系统表示层设计时,让不同角色的用户的操作都显示在导航栏,当页面跳转时,导航栏不会改变位置,而请求的页面则显示在一个固定的框架中。在页面显示数据时传递的是对象数组。当学生登陆系统后可以进行测试或查看个人信息,如果还未进行测试则查看测试成绩、查看测试报告、
43、预选老师业务都无数据显示,如果已经测试则可以查看到测试成绩、查看测试报告、预选老师、查看个人信息,最后退出系统。根据需求分析得到学生登陆后的业务功能实现活动图如图4-2所示。图4-2 学生活动图学生选题活动首先需学生进行课程测试,系统根据学生擅长的课程推荐课题及老师,学生可以预选课题对应的老师。老师通过查看预选了课题的学生的测试成绩决定是否同意学生预选。老师同意学生预选则可以分配课题给学生,学生可以查看课题信息;拒绝则给出拒绝原因等信息,学生可以查看老师拒绝信息。学生选题活动图如图4-3所示。图4-3学生选题活动图4.4 业务逻辑层设计业务逻辑层(Service层)主要是针对不同的业务需求来调
44、用数据访问层(DAO层)的方法,从而实现不同业务需求功能。业务逻辑层提供了一系列可提供给用户的服务,是对用户问题提供解决的方法。业务逻辑层的实现是通过调用数据访问层的方法来实现的。业务逻辑层不需要知道如何操作具体数据,只要知道通过DAO层的什么方法得到什么参数,或者传递什么参数从而能达到功能的实现。对于数据访问层而言,业务逻辑层主要充当的是调度者的角色,而对表示层(Web层)而言,业务逻辑层充当的是被调度的角色。当学生申请导师时要传递学号和教师号到Service层来调用Service层的申请方法,Service层将参数传递至DAO层,DAO层再调用数据库操作方法,操作完成后以applyInfo
45、r对象的形式返回申请导师表中的一条记录,其中applyInfor中的学号stuNum和教师号teacherNum分别依赖于学生表student中的学号和教师表teacher中的教师号,具体如图4-4所示。图4-4 预选老师过程使用的类图Service层的applyInforSI对象中的setApplyFlag()方法为预选老师时调用的方法,该方法调用了DAO层applyInforDI对象的setApplyFlag()方法。4.5 数据访问层DAO设计数据访问层DAO主要实现的功能是对数据库中的数据进行操作,简而言之就是一系列的对数据库中的记录进行增加、删除、修改、查找操作。DAO层调用了Bea
46、n实体类,使用SQL语句来操作数据库,为了体现类的封装性,实现时则是调用封装好的数据库操作对象中的方法来实现对数据库的操作。从数据库设计中得到相应的DAO层的设计如图4-5所示。图4-5 DAO层设计的类文件adminDI.java:对管理员表进行操作applyInforDI.java :对学生预选导师表进行操作courseDI.java:对课程表进行操作instituteDI.java:对学院表进行操作majorDI.java:对专业表进行操作pageDI.java:对上下页跳转进行判断questionDI.java:对测题表进行操作stuCourseDI.java:对学生测试课程表进行操作studentDI.java:对学生表进行操作teacherDI.java:对教师表进行操作thesisInforDI.java:对课题表进行操作thesisRequirementDI.java:对课题要求表进行操作预选老师DAO(applyInforDI)通过数据库连接connect类中的连接数据库的方法来获取数据库连接,再将连接和SQL语句传递给数据库操作dbOper