资源描述
基于WEB的软件工程案例教学平台-案例库及检索子系统的设计摘 要随着互联网的快速发展,现代互联网教育、教学平台的范围不断扩张,但是基于软件工程的案例教学领域尚未普及,结合目前案例教学的实际表现:没有一个统一的管理平台来管理老师和学生;网络资源复杂,获取有针对性的案例信息比较困难;案例管理比较复杂,分类管理比较麻烦。因此,本课题从学生用户对案例资源检索需求出发深入调查研究之后,发现学生很难找到一个相关案例检索的平台,最终在研究相关资源需求和技术需求的基础上,提出基于web的软件工程案例教学平台案例库及检索子系统的设计这一课题。本课题主要研究案例教学平台的案例库的构建和检索子系统的实现,采用现在流行的J2EE开发框架。在项目开发阶段始终坚持代码的低耦合、高内聚,使系统维护更新比较方便。整个系统主要分为案例库系统和检索系统两大模块。在案例库中主要有案例增加、批量上传案例相关文件、案例信息修改、案例查询、案例删除等功能;检索子系统主要包含根据案例名称模糊检索案例,根据上传用户名检索案例,根据案例名称、案例上传用户名、案例相关关键字、案例相关技术等一项或多项组合进行高级查询。基于软件工程的案例教学平台中案例库和检索子系统的设计,采用B/S架构,初步实现了案例库和检索子系统的相关功能。本系统摆脱传统的C/S架构所带来的部署不方便,在互联网技术应用更加深入和普及的今天,此系统一定会在将来的更好的服务于广大用户,使用户更加方便、快捷、高效的工作。关键词:软件工程;案例库;检索系统;struts2;javaIISoftware engineering case teaching platform based on WEB-Case base and retrieval subsystemAbstractWith the rapid development of the Internet, the scope of the modern Internet education, teaching platform continues to expand, but case-based teaching software engineering is not yet universal, the actual performance of the current Case Teaching: Without a unified management platform to manage teachers and students; network complex resources, access to targeted information more difficult cases; more complex case management, category management is too much trouble. Thus, after the subject from the student user demand for Case Retrieval departure thorough investigation and study, we found that students difficult to find a related case retrieval platform, ultimately based on research related resources and technical needs on the proposed web-based software engineering case Teaching platform - case database and retrieval subsystem design, the subject.Construction and retrieval subsystems to achieve this project platform Case Teaching main case base, using the now popular J2EE development framework. In the project development phase always adhere to the code of low coupling, high cohesion, to make the system more convenient maintenance updates. The whole system is divided into case library and retrieval systems two modules. In the case of the library there are cases of increased bulk upload documents relevant to the case, modify case information, case inquiry, case delete functions; retrieval subsystem comprising the Case Name Case fuzzy search, retrieval based on user name Upload the case, according to the case name, case Upload a user name, a combination of one or more keywords related cases, case-related technology and other advanced queries.Design Case Teaching Platform Software Engineering in the case base and retrieval subsystem based on the use of B / S structure, the initial realization of the features of the case library and retrieval subsystem. The system away from the traditional C / S structure brought about by the deployment of convenient, more in-depth application of Internet technology and the popularity of tomorrow, the system will be in the future to better serve the majority of users, allowing users to more convenient, fast, efficient work.Key Words: Software engineering;case library; retrieval system;struts2; java目录摘 要IAbstractII1 绪论11.1 背景介绍11.2 系统设计的意义11.3 国内外相关研究情况11.4 课题研究内容21.5 论文结构22 软件开发相关的技术42.1 JSP简介42.2 Struts 2.X 简介42.3 Spring 简介52.4 MySql简介53 需求分析73.1 需求分析概述73.2 系统功能需求分析73.3 系统非功能需求94 系统详细设计104.1 系统结构104.1.1系统框架图104.2 模块介绍104.3 数据库结构设计114.3.1 数据表E-R图124.3.2 数据表概要说明124.3.2 物理结构设计125 系统实现155.1 开发环境及工具155.2 模块说明程序流程设计155.2.1 功能设计155.2.2 程序结构设计165.2.3 系统界面设计175.2.3 系统页面效果如下图所示:175.3 重要模块实现细节195.3.1 案例库管理模块设计195.3.2 案例库检索模块设计235.3.3 用户模块设计256 测试306.1 软件测试的目标306.2 测试计划及执行情况306.3 测试评价357 结论36参考文献37致 谢391 绪论1 绪论1.1 背景介绍随着现代互联网技术的快速发展,传统教育也在寻求新的教育教学方式,逐渐的也走向了网络化、信息化和现代化。网络技术的快速发展改变了教学方法、手段的同时也带来了教学理念、教学内容的急速变更,其中应用计算机进行案例教学已成为现代教育技术改革创新的热点之一。网络教学是利用计算机技术、网络技术以及多媒体技术,在互联网络环境下实行教育教学的一种新途径,作为一种重要的辅助手段,补充传统的课堂教学。网络教学可以充分依靠先进的教学手段、教学技术、教学资源、教学思想,给广大用户提供了良好的自主学习环境,大幅度的促进并提升了教学效率、教学效果和教学水平。案例教学,是一种开放式、互动式的新型教学方式。案例教学可以充分依靠先进的教学手段、教学技术教学资源、教学思想,给广大用户提供了良好的自主学习环境和项目导向,大幅度的促进并提升了教学效率、教学效果和教学水平,还可以促进高校教师和学生之间的交互联系与沟通,在传统课堂教学过程一些弊端得以弥补。为此,为广大师生开发建设案例教学平台已成为一种重要需求。1.2 系统设计的意义案例教学是一种通过模拟或者重现现实生活中的一些场景,让学生把自己纳入案例场景,通过讨论或者研讨来进行学习的一种教学方法。在多种教学方式中,案例教学很早就被各国名牌学校所引进,于此同时也表现出来它的优势。在教育方法中,得到了有很好的称赞。由于教育资源分配不均以及其他一些软件、硬件方面的因素,使得教育差异化比较大。而当代互联网的高速发展,各种资源逐步在实现高度共享。将案例教学整合到互联网上,不仅可以解决各地教育资源分配不均衡,同时利用互联网的创新方式,可以不断的创新和改革教育模式,提高教育质量。本系统指在帮助老师和学生更加有针对性的获取教育资源,将案例教学分类管里,提供检索入口,简化老师和学生在寻找资源中的无用操作。1.3 国内外相关研究情况在欧美,在政府的大力支持下,各个学校纷纷对教学进行数字化改造,加强了各学校案例教学案例库的建设。早在70年代的时候,国外就已经有人开始研究了案例教学,并最早应用于医学上,现在已经应用于很多教学领域。随着互联网的快速发展,案例教学也被迁移至互联网上,来应对信息的快速传播。案例库的建设也成了必然的需要,这不仅可以加快信息共享,也方便了学生、40毕业设计(论文)教师对资源获取的便捷性。在2013年电子科技大学徐天南的毕业设计课题中研究过网络教学的案例库系统,他主要是建立了一个老师和学生的交流平台。老师可以提供案例方案或者上传案例文件,来供学生浏览下载学习。这也是一个完整意义上的案例教学系统。本科题主要在案例库建设和检索系统中进行进一步的优化,使得案例库整个组织架构更加的丰富,检索效率更高,更有针对性。1.4 课题研究内容本课题是案例教学平台的一个重要组成部分,主要包括案例库和检索子系统。在研究过程中本课题结合现有的临近教学平台的相关经验,同时结合软件工程案例教学平台独有的特点,进行综合分析、调研。最终确定研究的主要内容。在本课题中将实现一个操作简单、功能丰富的案例库子系统和检索子系统。其中案例库子系统要实现对案例的分类存储,灵活的管理;检索子系统要提供简单、快捷的检索方式。本课题主要实现两种检索方式:一种是根据案例标题检索,另一种是根据案例的分类、标题、关键字、相关技术、上传用户等条件中的一种或几种进行联合检索。1.5 论文结构基于案例库和检索子系统的相关需求,作者设计并实现案例库和检索子系统。本文组织结构如下:第一章:绪论部分。简单介绍案例库及检索子系统的研究意义、选题背景,并根据应用现状,提出研究内容和实现目标。第二章:相关技术介绍。简单介绍本课题采用的相关技术,同时对使用的struts2、hibernate、spring等开源框架进行简单介绍。第三章:案例库和检索子系统需求分析。包括需求分析、系统用例分析、业务流程分析、数据库设计以及总体技术路线。第四章:案例库和检索子系统概要设计。系统体系结构、数据库设计以及总体设计路线。第五章:案例库和检索子系统功能模块设计与实现。包括案例库和检索子系统总体设计、案例库模块设计、案例检索模块设计、案例管理模块和相关关键技术的应用。第六章:系统测试。对系统进行整体测试,并对测试结果进行说明。第七章:总结。对本课题的研究过程和结果进行总结。2 软件开发相关技术2 软件开发相关的技术2.1 JSP简介JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。 JSP(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。 在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。Web服务器在遇到访问JSP网页,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送 email 等等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无Plugin,无ActiveX,无Java Applet,甚至无Frame。JavaServer Pages(JSP) 技术提供了一种简单快速的方法来创建显示动态生成内容的 Web 页面。由业界处于领先地位的 Sun 公司制定了相关的 JSP 技术规范,该规范定义了如何在服务器和 JSP 页面间进行交互,还描述了页面的格式和语法。JSP 页面使用 XML 标签和 scriptlets(一种使用 Java 语言编写的脚本代码),封装了生成页面内容的逻辑。它将各种格式的标签(HTML 或者 XML)直接传递回响应页面。通过这种方式,JSP 页面实现了页面逻辑与其设计和显示的分离。JSP 技术是 Java 系列技术的一部分。JSP 页面被编译成 servlet,并可能调用 JavaBeans 组件(beans) 或 Enterprise JavaBeans 组件(企业 beans),以便在服务器端处理。因此,JSP 技术在构建可升级的基于 web 的应用程序时扮演了重要角色。JSP 页面并不局限于任何特定的平台或 web 服务器上。JSP 规范在业界有着广泛的适应性。2.2 Struts 2.X 简介Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controler)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,西安工业大学毕业设计(论文)所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。2.3 Spring 简介Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。轻量从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。控制反转Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。面向切面Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的完成业务逻辑仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。容器Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。框架Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。2.4 MySql简介MySQL是一个精巧的SQL数据库管理系统,虽然它不是开放源代码的产品,但在某些情况下你可以自由使用。由于它的强大功能、灵活性、丰富的应用编程接口(API)以及精巧的系统结构,受到了广大自由软件爱好者甚至是商业软件用户的青睐,特别是与Apache和PHP/PERL结合,为建立基于数据库的动态网站提供了强大动力MySQL是一个真正的多用户、多线程SQL数据库服务器。SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言。MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。 SQL是一种标准化的语言,它使得存储、更新和存取信息更容易。例如,你能用SQL语言为一个网站检索产品信息及存储顾客信息,同时MySQL也足够快和灵活以允许你存储记录文件和图像。 MySQL建立的基础是业已用在高要求的生产环境多年的一套实用例程。尽管MySQL仍在开发中,但它已经提供一个丰富和极其有用的功能集。3 需求分析3 需求分析3.1 需求分析概述依据软件工程的原理和方法,以及对系统的前期分析,初步规划系统所要实现的功能模块,满足前期的报告中提出对系统的功能要求;可行性分析也称为可行性研究,即是在系统调查的基础上,针对新系统的开发是否具备必要性和可行性,对新系统的开发从技术、经济、管理的方面进行分析和研究,以避免投资失误,保证新系统的开发成功。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。该系统的可行性分析包括以下几个方面的内容。(1)经济可行性主要是对项目的经济效益进行评价,软件开发周期一般为34个月,开发所需硬件软件很普遍,该软件系统的安装、部署、运行和维护,开发费用不高。所以该系统在经济上是可行的。(2)技术可行性技术上的可行性分析主要分析技术条件是否能顺利完成开发工作,硬、软件能否满足开发者的需要。本系统采用Java语言编写程序,基于web浏览器上使用了MyEclipse开发平台,运用了MySql数据库和JSP技术, 能够处理大量数据,同时保持数据的完整性并提供许多高级管理功能。硬件方面,可靠性越来越强,足够满足系统的开发(3)操作可行性现在大部分计算机都可以运行本系统,并且用户很容易的就可以操作本系统。因此从操作可行性的角度来衡量,本系统的开发方案也是可行的。综合三方面的因素,开发基于web的软件工程案例教学平台案例库和检索系统是可行的。3.2 系统功能需求分析根据需求分析中的模块划分,进行系统架构和网页结构设计,对模块的功能有一个初步的设计,并且将系统模块的功能流程有初步的分析,实现了部分模块的功能。下边分别对于不同用户存在的功能差异进行简单介绍。(1)普通用户,即学生用户使用系统的功能用例图如图3.1所示:西安工业大学毕业设计(论文)图 3.1 学生用户功能用例图说明:学生用户是本系统中权限最低的用户,也是系统的主要使用者。在本系统中学生用户只拥有修改自己信息的权限,同时也只能管理自己收藏夹中收藏的案例,并且只能选在收藏或者取消收藏案例的操作,本操作不会改变案例的任何信息,只是删除收藏夹中的案例之后,不会再出现在自己的收藏夹中。(2)老师用户使用系统的功能用例图如图3.2所示:图3.2 老师用户功能用例图说明:老师用户是本系统案例的主要提供者和对学生提出的疑问的主要回答者,他所拥有的权限较学生用户的权限要高。老师用户可以上传案例,并且对自己上传的案例进行增、删、改等维护操作。同时老师用户也可以浏览其他老师用户的案例,并且进行评价和收藏的等操作。(3)管理员用户使用系统的功能用例图如图3.3所示:图3.3 管理员用户功能用例图说明:管理员用户是本系统的主要管理者,拥有本系统的所有权限。本系统属于内部学习平台,对所有用户不提供注册功能,全部由管理员用户进行分配用户。管理员用户可以管理本平台下的所有案例,对所有案例拥有增、删、改等操作;同时、管理员用户也负责管理平台下的所有用户,对所有用户进行增、删、改操作,同时还负责用户权限的分配工作。3.3 系统非功能需求(1)可用性:基于Web的软件工程案例教学平台案例库和检索子系统保证所有功能正常使用,界面设计合理,操作简单,且页面响应速度快。 (2)性能:基于Web的软件工程案例教学平台案例库和检索子系统启动时间不超过10秒,且可进行案例相关文件的批量上传。(3)可维护性:基于Web的软件工程案例教学平台案例库和检索子系统任务书、设计文档和实现代码都有完整的备份。(4)技术的成熟性:本系统以java作为开发语言,使用了现在比较流行的ssh(struts2、hibernate、spring)框架进行整合开发,无论是在业务逻辑处理还是系统运行性能都做了很好的优化。采用ssh进行整合开发,使用MVC架构,使各层逻辑分开,大大的提高了代码的内聚性,降低了逻辑之间的耦合性,方便了以后的维护。4 系统详细设计4 系统详细设计4.1 系统结构本课题研究的案例库和检索子系统是整个案例教学平台的一部分,所以在整个设计过程中都应当以案例教学的目标来实现,同时与另一课题的演示子系统相结合,尽量做到很好的整合工作。本课题要实现的案例库子系统是对不同案例进行很好的分类整理,进行有效的存储。在设计过程中,作者采用数据库存储一些案例的相关信息,对于案例的相关的文件则采用本地存储。为了实现同一课题可能包含多个文件,本课题在设计过程中实现了多个文件批量上传的功能。同时为了不影响整个程序的响应性能,在实现上传文件的过程时,全部进行分离在子线程中进行操作。检索子系统是以案例库为基础,提供了对案例库的简单检索。本课题的目标是实现两种检索方式:即按案例的标题进行模糊检索和按案例的标题、上传作者、关键字、相关技术等检索条件中的一种或者几种进行组合后进行模糊检索。4.1.1系统框架图结合上述基本设计目标,整个案例库和检索子系统的功能结构图如下,如图4.1所示:图4.1系统功能结构图西安工业大学毕业设计(论文)4.2 模块介绍 系统总共分为以下五个模块: u 用户管理模块:用户管理模块主要包含新增用户、修改用户、用户密码初始化、用户权限分配、用户删除等操作。u 导航管理模块:本模块主要是为了实现首页导航栏目可以动态维护,主要包括导航的增加、修改、删除等操作。u 案例管理模块:本模块是案例库构建的重点,主要是实现案例的增加、案例分类管理、案例相关文件的上传、案例信息的修改登操作。u 检索模块:本模块主要实现了系统所需要的检索功能,其中包括用户简单检索、案例简单检索、案例详细检索等主要功能。u 案例文件上传下载模块:本模块提供一些系统公共的上传下载的工具类,主要是在增加案例是对案例相关文件的批量处理管理。4.3 数据库结构设计数据库设计是在既定的数据库管理系统基础之上建立数据库的过程。其过程是将现实存在的数据及其应用处理关系进行抽象,从而形成数据库结构。具体实现时,应首先明确用户对数据的需求,在此基础上,建立数据库的概念模型,概念模型主要是用来反映用户的现实环境和需求,它独立于具体的数据库管理系统,并且与数据库怎样实现无关,建立概念模型的主要工具为实体关系E-R图;在建立数据库概念模型之后,要真正实现与数据库管理系统的结合,即能够由既定的数据库管理系统所支持,还必须进行逻辑结构的设计,在逻辑设计阶段,主要完成建立数据库的逻辑模型,并解决数据的完整性、一致性、安全性和有效性等问题;最后一个阶段是数据库的物理结构设计,其任务是为系统逻辑结构模型确定合理的存储结构、存取方法、以及数据表示和数据存储空间分配等内容,从而得到具体的数据库物理结构。经过前边的分析,案例库和检索子系统主要抽象出如下实体模型:(1)用户模型:主要包含管理员、学生、老师等一些基本信息。(2)案例模型:主要包含案例的相关信息。(3)案例文件模型:在设计过程中为了实现一个案例多文件管理的需求,在此作者抽象出一个实体主要存放文件。(4)导航模型:在设计的时候需要对案例进行分类,同时为了满足首页导航信息也可以动态展示,在这里作者抽象出一个导航模型。用来管理案例的分类和导航栏目的显示。(5)评论模型:因为本课题是案例教学平台的一个子系统,为了与演示子系统相结合,这里也使用了另一课题的一个数据模型,即评论模型。这里主要包含用户对相关案例的评论信息,同时也包含不同用户对相关评论的回复信息。4.3.1 数据表E-R图数据表E-R图如图4.2 所示:图4.2 系统E-R图4.3.2 数据表概要说明从各实体的E-R图到在MySql中为整个系统建立了一个数据库,储存各类数据和控制信息。包含以下几层:(1)表示层:展现给用户的界面,主要是显示数据和接收用户输入数据。(2)服务层:针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。(3)数据访问层:对数据库进行操作。(4)Model层:定义数据库字段。其中 Model层中定义的表如表4.1所示:表4.1 Model层包含的实体模型表表名称说明User所有用户表Work所有案例信息表WorkFile案例相关文件表,存放案例相关文件Navigate系统首页导航信息表Comment案例相关评论、回复表4.3.3 物理结构设计(1)名称:用户表(user),如表 4.2所示,包括 userId,userName,userAccount,userPassword,userGender,userEmail,userSchool,userBirthday,userEducation,userPhotos,userCollege,userMajor,userClass,userType等字段,与评论表、案例表相关联。表4.2:用户表 (user)字段名类型是否主/外键是否可为空说明userIdBigint(10)主键否自增userNamevarchar(50)否否真实姓名userAccountvarchar(50)否否登录名userPasswordvarchar(50)否否默认:123456userGendervarchar(10)否否默认:0 男userEmailvarchar(50)否是邮箱userSchoolvarchar(50)否是学校userBirthdaydate否否生日userEducationvarchar(50)否是学历userPhotosvarchar(50)否是照片userCollegevarchar(50)否是学院userMajorvarchar(50)否是专业userClassvarchar(50)否是班级userTypevarchar(10)否否用户类型(2)名称:案例表(work),如表 4.3所示,包括 workId,workName,workKeyWords,navigateId,workDestribute,workTechnology,workUploadDate,workClickNum,userId等字段,与导航表、用户表,案例文件表相关联。图4.3:案例表 (work)字段名类型是否主/外键是否可为空说明workIdbigint(20)主键否自增workNamevarchar(50)否否案例名称workKeyWordsvarchar(255)否是关键字navigateIdbigint(20)外键是分类名称workDestributevarchar(255)否是简介workTechnologyvarchar(255)否是相关技术workUploadDatedatetime否都更新时间workClickNumInt(11)否否初始值0,userIdbigint(20)外键否用户ID(3)名称:案例文件表(workFile),如表 4.4所示,包括 fileId,fileName,filePath,workId等字段,与案例表相关联。、图4.4:案例文件表 (workFile)字段名类型是否主/外键是否可为空说明fileIdbigint(20)主键否自增filenamevarchar(50)否是文件名称filePathvarchar(250)否是文件路径workIdbigint(20)外键否外键,workId(4)名称:用户案例表(user_work),如表 4.5所示,包括user_id,work_id等字段,此表为中间表,链接用户表和案例表。图4.5:用户案例表(user_work)字段名称类型是否主/外键是否可为空说明user_idbigint(20)主键否userId联合主键work_idbigint(20)主键否workId联合主键(5)名称:评论表(comment),如表 4.6所示,包括 commentId,commentMessage,commentDate,toUserId,formUserId,parentId等字段,与用户表、案例表相关联。图4.6:评论表(comment)字段名称类型是否主/外键是否可为空说明commentIdbigint(20)主键否自增commentMessagelongtext否是文本commentDatedatetime否是日期toUserIdbigint(20)外键否userIdfromUserIdbigint(20)外键否userIdparentIdbigint(20)外键否commentId(6)名称:导航表(navigate),如表 4.7所示,包括 navigateId,navigateName,parent等字段,与次表相关联,形成上下级映射。图4.7:导航表(navigate)字段名类型是否主/外键是否可为空说明navigateIdbigint(20)主键否自增navigateNamevarchar(20)否否导航名parentbigint(20)外键否父导航名5 系统实现5 系统实现5.1 开发环境及工具开发平台:Windows 10运行环境:Windows 10系统 ,Tomcat 7.0服务器开发工具:MyEclipse;MySql开发语言:Java、JavaScript、Html5.2 模块说明程序流程设计5.2.1 功能设计(1)案例库功能设计:案例库主要包含案例增加、案例修改、案例删除、案例相关文件上传等功能。详细功能结构图如5.1所示:图:5.1 案例库子系统详细功能设计图(1)检索子系统功能设计:检索子系统主要包含案例检索和用户检索。其中用户检索是根据用户名进行模糊检索;案例检索包含根据案例名称模糊检索、根据上传用户名模糊检索、根据案例关键字和关键技术模糊检索、根据案例分类相关检索以及这几种方式的随意组合进行条件模糊检索。详细功能框架图如图 5.2所示:西安工业大学毕业设计(论文)图5.2:检索系统详细设计功能图毕业设计论文5.2.2 程序结构设计xuebin为项目的名称,也是项目的根目录。该目录下主要包含Src源码目录、项目所需的配置文件config目录、相关测试用例源码目录test文件、WebRoot等。WebRoot为 Web 目录,包括程序初始化载入页面main.jsp、案例上传目录uploadFile、用户头像上传目录uploadPhoto、图片目录 images、 样式文件css、相关js验证文件js文件夹、WEB-INF 文件夹目录。其中css文件夹中包含styles.css样式文件; js文件包含jquery.validate.js、jquery1.42.min.js、myjs.js等js文件; WEB-INF中包含存放项目必须的jar文件的lib文件夹、存放jsp文件的jsp文件夹和web.xml文件等。Src 源码目录包含如下几个部分:com.xuebin.bs.domain:项目中所用到的实体类和hibernate操作相关的实体配置文件*.hbm.xml等文件。主要有Comment.java、Comment.hbm.xml、Navigate.java、Navigate.hbm.xml、User.java、User.hbm.xml、Work.java、Work.hbm.xml、WorkFile.java、WorkFile.hbm.xml。com.xuebin.bs.base:包含项目所需要的公共Action操作类BaseAction.java、公共Dao操作接口DaoSupport.java、公共Dao实现类DaoSupportImpl.java和公共Service接口ServiceSupport.java。com.xuebin.bs.converter:主要存放项目的全局自定义转换器工具类。DateConverter.javaxwork-conversion.properties:该文件是自定义转换器的配置文件。com.xuebin.bs.utils:该包中主要存放项目所使用到的公共工具类。主要有:DigestMD5Utils.java密码进行MD5加密工具类、InitListener.java Tomcat服务器启动时的初始化数据监听工具类、案例相关评论处理工具类ListAllCommentUtils.java、分页工具类Page.java、文件上传工具类UploadFile.java。com.xuebin.bs.dao:提供数据库相关操作的接口方法。该包下的文件有以下接口文件:CommentDao.java、NavigateDao.java、UserDao.java、WorkDao.java、WorkFileDao.java。com.xuebin.bs.dao.impl:提供数据库相关操作接口的实现类。该包下的文件有以下接口实现类文件:CommentDaoImpl.java、NavigateDaoImpl.java、UserDaoImpl.java、WorkDaoImpl.java、WorkFileDaoImpl.java。com.xuebin.bs.service:定义项目服务层相关接口。主要包括以下文件:CommentService.java、NavigateService.java、UserService.java、WorkService.java、WorkFileService.java。com.xuebin.bs.service.impl:主要包含服务层相关接口的实现类。主要包含以下文件:CommentServiceImpl.java、NavigateServiceImpl.java、UserServiceImpl.java、WorkFileServiceImpl.java、WorkServiceImpl.java。config源码文件夹中主要包含struts2、hibernate、spring等开源框架的配置文件。test源码文件夹中主要包含相关测试代码。5.2.3 系统界面设计 系统总提页面采用jsp、css、js技术相结合来实现,其中js技术用来处理一些动态样式、页面的简单处理,实现导航菜单的联动显示,css技术用来页面布局样式效果。根据需求分析,系统总体页面结构如下图5. 3所示:图 5.3 总体页面结构图说明: user、work、Navigate等几个的修改和添加是同一页面。 user、work、Navigate等的列表在loginback.jsp页面中展示。5.2.3 系统页面效果如下图所示:个人信息效果页,如图:5.4所示:图 5.4 个人信息效果页用户列表效果页,如图5.5所示:图 5.5 用户列表效果页导航信息列表效果页,如图:5.6所示:图 5.6 导航信息列表页案例信息列表效果页,如图5.7所示:图 5.7案例信息列表搜索功能效果页,如图5.8 所示:图 5.8 搜索效果页5.3 重要模块实现细节5.3.1 案例库管理模块设计(1)业务流程设计根据需求分析,案例库模块主要包含案例的相关操作功能,主要有案例查询、案例上传、案例修改、案例删除。其业务流程设计图如下图5.9所示:图 5.9 案例库模块业务流程图(2)案例库管理模块实现本模块主要介绍案例库模块的具体实现。模型构造中抽象的模型名称和主要功能如下表5.1所示:表 5.1 模型设计表文件名实现功能Work.java封装案例的相关信息WorkFile.java分装案例的相关文件信息User.java封装与案例相关的用户的基本信息Navigate.java封装案例相关的分类信息控制层的设计中主要使用的struts2,相关Action、处理方法和功能介绍如下表5.2所示:表 5.2 控制层设计表Action动作类名称处理方法名称实现功能WorksAction.javaaddWorks添加案例并上传相关文件。editWork修改案例和相关文件。findAll查询所有案例。deleteWork删除案例和相关文件。workMessage查看案例信息workMessageStudy查看案例详细信息。服务层主要对模型进行一些业务逻辑处理,提供公共接口方法,实现代码低耦合和提高重复使用率。主要内容如下表5.3所示:表 5.3 服务层设计表接口实现类方法说明WorkServiceWorkServiceImplfindAllSearchAdmin管理员搜索案例。findAllSearchUser用户搜索案例。findAllPageAdmin管理员搜索案例需要在当前页面显示的案例。getTotalCountAdmin查询总的案例条目findAllPageSearch检索案例分页,当前页面要显示的数据。findAllRelated查询与本案例相关的案例findAllByUser查询用户上传的所有案例。在删除案例的时候,系统先试用js提示用户是否要真的删除本条案例记录和相关文件,以防止用户错误删除。实现代码使用onclick=return confirm(确认是否要案例删除?) 。如果用户确认要删除案例,则会调用deleteWork方法删除相应案例和案例相关的文件。数据层主要提供一些访问数据库的相关接口和实现类,方便用户操作过程中与数据库的交互。主要内容如下表5.4所示:表 5.4数据层设计表接口实现类方法说明WorkDaoWorkDaoImplfindAllSearchAdmin管理员搜索案例。findAllSearchUser用户搜索案例。findAllPageAdmin管理员搜索案例需要在当前页面显示的案例。getTotalCountAdmin查询总的案例条目findAllPageSearch检索案例分页,当前页面要显示的数据。findAllRelated查询与本案例相关的案例findAllByUser查询用户上传的所有案例。(3)关键代码 /* * 上传案例,采用子线程上传案例相关文件 * return */public String addWorks()if(model != null)if(work != null & work.length0)Set workFiles = new HashSet();WorkFile workFile = null;String imgpath = uploadFile/;String path = ServletActionContext.getServletContext().getRealPath(/);for (int i = 0; i work.length; i+) workFile = new WorkFile();final File file = worki;if(worki != null & !work.equals() & workFileName != null & !workFileName.equals()workFile.setFileName(this.workFileNamei);final String fileName = this.workFileNamei;final String url = path+imgpath;new Thread()public void run() UploadFile.upload(file, url,fileName);.start();workFile.setFilePath(path+imgpath+this.workFileNamei);String pix = workContentTypei.toLowerCase().substring(workContentTypei.lastIndexOf(/)+1);if(pdf.equals(pix) | doc.equals(pix) | txt.equals(pix) | xml.equals(pix)workFile.setFileType(1);workFiles.add(workFile);model.setWorkFiles(workFiles);User user = (User) ActionContext.getContext().getSession().get(user);if(user != null) model.setUser(user);Navigate navigate = navigateService.getById(navigateId);if(navigate != null) model.setWorkNavigate(navigate);model.setWorkUploadDate(new Date();workService.save(model);return addWorks;5.3.2 案例库检索模块设计(1) 业务流程设计根据需求分析,检索模块主要包含案例的相关检索,有按案例标题检索(workName)、按案例分类检索(Navigate)和组合详细检索。其业务流程设计图如下图5.10所示:图 5.10案例检索模块业务流程图(2)案例
展开阅读全文