毕业论文-科大开源平台设计与实现_第1页
毕业论文-科大开源平台设计与实现_第2页
毕业论文-科大开源平台设计与实现_第3页
毕业论文-科大开源平台设计与实现_第4页
毕业论文-科大开源平台设计与实现_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

湖南科技大学毕业设计(论文)题目科大开源平台设计与实现作者学院计算机科学与工程学院专业学号指导教师二〇一五年六月五日湖南科技大学毕业设计(论文)任务书计算机科学与工程院网络工程系(教研室)系(教研室)主任:(签名)年月日学生姓名:学号:专业:网络工程1设计(论文)题目及专题:科大开源平台设计与实现2学生设计(论文)时间:自2014年12月31日开始至2015年5月31日止3设计(论文)所用资源和参考资料:[1]徐建波.JavaWeb应用开发原理与技术[M].湖南,国防科技大学出版社,2010:20-150.[2]JhonResig.精通JavaScript[M].北京,人民邮电出版社,2007:2-200.[3]RogerS.Pressman.软件工程实践者的研究方法[M].北京,机械工业出版社,2011:9-78.[4]李刚.轻量级J2EE企业实战[M].北京,电子工业出版社,2006:25-96.[5]孙卫琴.精通Struts[M].北京,电子工业出版社,2004:18-120.[6]孙卫琴.精通Hibernate[M].北京,电子工业出版社,2005:5-128.4设计(论文)应完成的主要内容:(1)普通用户登录注册模块。(2)普通用户对资源上传、下载、查看、评论、搜索。(3)普通用户参加竞赛、发表作品、对作品投票、评论作品。(4)管理员对用户的管理。(5)管理员对资源的管理。(6)管理员对竞赛管理。(7)管理员对系统公告的管理。5提交设计(论文)形式(设计说明与图纸或论文等)及要求将论文纸质版、电子版、软件源码与说明文档刻成光盘提交6发题时间:2014年12月31日指导教师:(签名)学生:(签名)湖南科技大学毕业设计(论文)指导人评语指导人:(签名)年月日指导人评定成绩:湖南科技大学毕业设计(论文)评阅人评语评阅人:(签名)年月日评阅人评定成绩:湖南科技大学毕业设计(论文)答辩记录日期:2015.06.02学生:学号:班级:题目:科大开源平台设计与实现提交毕业设计(论文)答辩委员会下列材料:1设计(论文)说明书 共 38 页2设计(论文)图纸 共 0 页3指导人、评阅人评语 共 3 页毕业设计(论文)答辩委员会评语:答辩委员会主任:(签名)委员:(签名)(签名)(签名)(签名)答辩成绩:总评成绩:-39-第一章绪论1.1研究背景及意义开源(OpenSource,开放源码)被非盈利性软件组织注册为认证标记,并对其进行了正式的定义,用于描述那些源码可以被公众使用的软件,并且此软件的使用、修改和发行也不受许可证的限制。开源的好处是有很多的,软件更具有安全性,软件开放,每个人都能为你的软件添砖加瓦,由于软件开源,可以及早发现某个bug。此次课题研究的对象并不是主要针对如何写一个开源软件,相信大家都有用过Github这个网站。Github是一个开源代码库以及版本控制系统,拥有140多万开发者用户,它还提供了一个Web界面,用于显示软件的结构以及源码。而国内,比如CSDN论坛,开源中国社区,最代码等网站起到了分享源码,推广源码的作用。jQuery是一个优秀的JavaScript类库,此软件目前开源,作者是著名的JohnResig,这个类库吸引了全世界著名JavaScript程序员的参与编写,让这个类库更加完善。一个好的开源软件能吸引很多优秀的程序员的。而我们如果拥有众多的程序源码,但是如何才能统一的管理这些源码,让这些源码被众多的人群所得到呢?科大开源平台就是这样一个平台,这个系统主要模仿的是最代码这个网站,主要功能是分享代码以及一个竞赛模块。竞赛模块就是发布各种竞赛,用户可以上传自己的作品。科大开源平台是一个优秀的资源分享平台,自带竞赛模块,致力于提高本校学生的整体编程能力,促进学生之间的交流,让更多的编程爱好者学习到更多的知识。国内的某些资源分享平台比如CSDN,开源中国,ITEYE论坛,最代码网站等都有资源分享下载的功能,这些平台的共同特点是提供了一个资源共享的平台,用户随时可以去这个平台上拿自己想要的资源,这样有利于各个程序员之间的相互学习相互交流。国外的网站比如Github这个代码管理平台,也有实现资源分享下载的功能,当然这个网站是做的非常好的。我们手里的好的资源需要共享在互联网上。为了促进学生之间的相互学习和交流,方便学生获取学习资源,我们学校急需一个平台来实现这一需求,科大开源平台正好解决了这个问题,这个平台能实现基本的资源上传下载,并且不需要积分,这个平台的出现,极大方便了学生获取相关资源,促进了学生之间的交流,另外这个平台附带竞赛模块,丰富学生的课余生活。1.2论文主要研究内容科大开源平台是一个基于SSH(Struts2.0+Spring2.5+Hibernate3.0)框架制作而成的Web系统。该系统主要由两大模块组成,分别是资源模块和竞赛模块,另外还有系统公告模块,用户模块。因此本文研究的主要内容是:(1)普通用户登录注册模块。(2)普通用户对资源上传、下载、查看、评论、搜索。(3)普通用户参加竞赛、发表作品、对作品投票、评论作品。(4)管理员对用户的管理。(5)管理员对资源的管理。(6)管理员对竞赛管理。(7)管理员对系统公告的管理。1.3论文研究需要解决的问题本系统所需解决的主要问题有:如何搭建Java的SSH(Struts2.0+Spring2.5+Hibernate3.0)框架。如何实现文件的上传下载功能。调用富文本编辑器CKeditor。基于jQuery框架实现Ajax异步刷新技术。数据分页技术的实现。Java实现邮件发送技术。JavaScript实现的预览图片。投票功能的实现。1.4论文的组织结构本文的组织结构如下:第一章分析了研究目的以及意义,然后确定研究问题。第二章介绍了该系统的相关知识。第三章对系统的各个功能模块做了详细的需求分析并给出了活动图。第四章通过系统运行环境分析、数据库设计的分析、类图的分析、接口设计对系统进行了详细的概要设计。第五章给出了系统整体框架,分析了程序结构,对各个页面进行了分析,给出了实体类分析,数据库操作分析,对系统进行了详细的设计。第六章给出了每个功能模块的实现效果。1.5本章小结本章主要先明确研究背景,然后再由研究意义和研究价值来确定研究的内容,再根据研究的内容提出要解决的问题,最后对本文的组织结构进行了详细的描述。第二章相关知识介绍该系统运行在Window7.0操作系统下,Web容器采用Tomcat7.0,数据库采用MySQL5.6,前端有用到DIV+CSS布局,框架有用到jQuery框架,CKeditor框架,后台语言采用Java语言,并且应用了SSH框架,Java服务端语言JSP。本章将对该系统运用到的这些相关知识进行详细的介绍。2.1前端技术2.1.1DIV+CSS布局DIV+CSS布局是网页设计中的一种标准,DIV是HTML语言中的一个标签,是一个块标签,CSS是层叠样式表,是英文单词CascadingStyleSheets的缩写。一般在网页中都会引入相关的CSS文件来美化页面,目前CSS的最新版本为CSS3.0。本系统前端界面用HTML语言编写,采用的是目前比较流行的DIV+CSS布局。跟table布局相比,DIV+CSS布局有下面的优势:编写更加简单,开发效率快。如果需要更换网站的风格,不需要在HTML页面中一一改变样式,只需要改动该页面引入的相关CSS文件就行,实现了样式与页面的分离。因为能提高系统的访问速度,所以能给用户带来舒适的体验。采用DIV+CSS布局的最大的特点是更容易被百度等搜索引擎收录。代码简洁,有利于开发人员进行维护。2.1.2jQuery框架jQuery框架是由美国人JhonResig创作的一个优秀的JavaScript框架。jQuery秉承了它的设计理念写的更少,做的更多。它可以使用链式代码,来实现页面的动画效果、弹出层效果、选择dom元素等。目前世界流行的大部分网站中都有采用jQuery这个框架,这个框架的简便性与方便性是不言而喻的,用户JavaScript代码的撰写变得更简洁,且不需要考虑兼容性问题,另外jQuery还封装了Ajax技术,在本系统中有大量用到这个技术。jQuery框架支持插件的机制,当jQuery库提供的系统函数不能满足用户当前的需求的时候,用户可以自己来写一些插件来满足自己当前的需求。采用jQuery框架,能带来的好处是:实现了JavaScript代码和HTML代码分离,使程序看起来更加简洁。实现了快速查找页面HTML元素。jQuery代码采用链式编程,是程序更加容易理解,便于程序员进行维护。jQuery代码兼容多种浏览器,避免了程序浏览器的不兼容性。jQuery的帮助文档详细,能找到很多实例程序,便于学习。本系统采用jQuery框架,主要用于一些表单验证,Ajax实现异步刷新,某些元素的快速查找等。2.1.3CKeditor框架CKeditor是当前优秀的网页编辑器,CKeditor原来是叫做FCKeditor,在2009年的时候,改名为CKeditor,它是一个优秀的可见即可得的富文本编辑器,它采用JavaScript语言编写,是一个开源软件。国内许多Web项目都有使用这个框架。使用了该框架之后,对于网页的文字编辑就变得像用户在编辑WORD文档一样那么丰富,同时该框架还支持图片上传功能。本系统个页面采用到这个框架。该框架的特点有:功能强大,使用起来及其方便,是一个开源软件。容易配置、跨浏览器(兼容IE浏览器,FireFox浏览器,Google浏览器)。支持ASP、Java、PHP、ASP.NET等多种编程语言。有详细的API文档。界面简洁,给用户带来很好的体验。2.2后端技术2.2.1JavaJava语言是一种完全面向对象的语言,它的编程风格跟C和C++特别相似,但是Java语言并没有C和C++语言复杂的指针,而是采用了引用来取代。另外Java语言的类不支持多重继承,但是它引入了接口来实现这一功能。Java开发者分为3个方向,J2SE是做Windows应用程序的,但是由于Java语言做的Windows应用程序界面不美观,比不上微软的开发语言做起来简单,一般很少有人用Java语言开发桌面应用程序。J2ME是做像手机一样的可移动设备方面开发的,J2EE是做网页编程方面的,在J2EE上拥有许多框架,由于Java语言的跨平台特性,所以Java语言在网站开发方面具有很大的优势。本系统后台采用的Java语言。为何采用Java语言,因为其具有如下特点:语言简单,容易理解。完全面向对象。Java是编译成字节码,具有跨平台的特性,无论是在linux操作系统上还是在Windows操作系统上都可以运行。自带垃圾回收机制,及时清理内存。具有异常处理机制,使程序更加稳定。2.2.2Struts2.0+Spring2.5+Hibernate3.0Struts2.0+Spring2.5+Hibernate3.0简称SSH框架,后面的数字是每个框架的版本号。这个框架是基于Java平台的,致力于更加方便的开发网站应用程序。下面将逐一介绍这三个框架。Struts是一个在Java语言上面实现的MVC框架,主要分为模型、视图、控制器三部分。通过配置Struts.xml文件,来实现对视图及表现层的控制。如果我们想减少运用MVC框架来开发网站应用的时间,可以使用Struts框架。Strtus是Apache基金会的一个开源项目,它也是面向对象的,Struts会对用户的没一个请求都对应一个Action,这个Action是一个类,里面可以写很多方法,每个方法会返回一个字符串,这个字符串对应了配置文件中的某个字段,通过这个配置文件再来控制程序跳转到那个页面。Strtus中还引入了Taglib标签库,除了使用JSP自带的标签库外,还可以是用Struts自带的标签库。Spring是一个轻量级Java开源框架,Spring对类统一的初始化在一个容器里面,实现对类的管理。这个框架的特点是分层架构,这个架构指挥程序使用哪个组件。Spring采用了面向切面编程(AOP)。面向切面编程是Spring的核心思想,比如在一个程序中,你需要在两个逻辑之间,加上另外一个逻辑,这就是面向切面编程,Spring恰好做到了这点,运用这一个理念,让程序的运行更加健壮。Spring的作用是用来整合其他框架,对其他框架进行一个统一的管理,并且对程序中的类和资源进行统一的初始化,它有一个容器,可以对这些资源进行管理,在Spring框架中可以配置数据源、数据库连接池的配置、JavaBean的配置等。另外Spring也实现了MVC框架,使用Spring能带来以下的好处:方便解耦,可以简化程序的开发。可以很方便的实现AOP编程。可以很方便的对资源进行统一的管理。方便程序的测试和开发人员的维护。Hibernate是对象关系映射框架,这个框架对JDBC操作进行了封装。将数据库的处理都封装成对象的思维。使用者操作数据库可以运用对象的思维进行操作。Hibernate框架的出现,简化了传统JDBC程序带来的繁琐的代码编写,它和Spring框架整合之后,更能显示出其强大的功能。Hibernate框架拥有延迟加载的特性,采用映射实体类的方式,根据设计的实体类来创建相应的数据库表格,使用起来及其方便。Hibernate框架不仅可以用在客户端程序中,还可以用在网页程序中,它的作用是实现了数据库的持久化。使用Hibernate框架能带来的好处有:支持多种数据库,只需要改变配置文件即可。封装了JDBC的操作,简化了代码的编写。采用面向对象的思维,使程序更加容易理解。将这三个框架整合起来,能方便程序的编写,对数据进行持久化,实现了MVC的分层思想。2.2.3JSPJSP全名为JavaServerPages。它是在传统的HTML页面中加入Java语法,它的本质其实是一个Servlet,当Tomcat容器对JSP文件进行编译之后,会在相应的目录生成一个Java文件,这个文件就是Servlet文件。使用JSP开发的Web程序是跨平台的,因为Java语言是跨平台的。JSP里自带了很多标签。它是在服务器端执行的语言,一般是在Tomcat服务器中,经过服务器的编译,返回给用户的是一些HTML代码。JSP内置了九大对象request、response、session、application、out、page、config、exception、pageContext。JSP是基于Java技术的,也是完全面向对象的,具有跨平台特性。它是一种动态语言技术,用于制作动态网页。JSP编写简单,使用方便,具有跨平台特性,运行速度快。2.3Ajax技术Ajax即AsynchronousJavaScriptAndXml,异步JavaScript和xml,指在不刷新本页面url的情况下与后端进行通信,对网页的某个部分进行更新。Ajax不是一种新的编程语言,而是一种交互性更强的Web技术。比如当注册用户,在文本框中输入一个用户名的时候,当你鼠标移开文本框,会采用Ajax技术,与后端异步通信,检测用户名是否存在,这是不能刷新整个页面的。运用了这种技术之后,会使整个网页的体验度更好,速度更快。jQuery框架中有对Ajax技术的封装,你只需要使用几行代码便可以调用这个技术。Ajax技术应用在很多方面,能提高网页的交互性,使网页功能更加友好。Ajax技术具有以下几个优点:使操作更加方便。加快和服务器之间的通信速度。实现局部刷新。2.4开发工具2.4.1Sublimetext2.0Sublimetext2.0是一款开源代码编写软件,其独特的代码提示功能,代码高亮风格,插件安装机制,使得开发人员一使用这个软件就会爱上它,本系统采用该软件来编写前端界面,及其方便。2.4.2Myeclipse10.0Myeclipse10.0是对eclipse软件的集成,这个软件集成了很多插件,使用起来特别方便。主要用于J2EE的开发,本系统后端Java代码的编写都是采用这个软件来编写的。2.5本章小结本章系统的介绍了科大开源平台系统所使用的前端技术,后端技术,开发工具,Ajax技术,SSH框架,jQuery框架,Ckeditor框架等做了详细介绍。第三章系统需求分析需求分析是软件开发的基础,需求分析的目的是明确好软件需要实现什么功能,只有将需求分析做好了,才能开始制作一个软件。需求分析就像一个目标一样,指引着软件开发者前行。经过详细的思考,科大开源平台要实现这些功能:对于普通用户:用户注册、用户登录、修改密码、上传头像、资源上传、资源下载、参见竞赛、发表竞赛作品、对作品投票、评论、搜索资源。对于管理员:资源的管理(包括对资源的审核、修改、删除、语言管理、标签管理),竞赛管理(发起竞赛,正在进行竞赛,已经结束竞赛),系统公告,留言管理。3.1用户注册需求分析功能:实现普通用户的基本注册功能。说明:游客填写完注册信息,提交信息时检测信息是否有效,如果信息正确则发送邮件提醒用户激活,完成注册。否则,提示注册失败。其活动图如下图3.1所示:图3.1用户注册活动图3.2用户登录需求分析功能:实现普通用户的基本登录功能。说明:用户输入信息,如果用户名密码错误,提示登录失败,如果三次登录失败,给出提示找回密码链接。其活动图如下图3.2所示:图3.2用户登录活动图3.3资源上传需求分析功能:实现普通用户的上传资源至服务器的功能。说明:用户填写资源标题,资源描述,资源分类等信息,选择文件并且上传至服务器如果用户没有的登录,提醒用户登录。其活动图如下图3.3所示:图3.3资源上传活动图3.4资源下载需求分析功能:实现普通用户的下载资源的功能。说明:用户选定某资源,发送下载请求,下载这个资源。其活动图如下图3.4所示:图3.4资源下载活动图3.5资源搜索需求分析功能:实现普通用户对资源进行搜索的功能。说明:用户输入关键字,点击搜索按钮,根据关键字搜索出相关资源。其活动图如下图3.5所示:图3.5资源搜索活动图3.6资源管理需求分析功能:实现管理员用户对资源管理的功能。说明:管理员对普通用户上传的资源进行管理,包括删除资源、编辑资源、审核资源。其活动图如下图3.6所示:图3.6资源管理活动图3.7参加竞赛需求分析功能:实现普通用户参加竞赛的功能。说明:实现普通用户参加竞赛,并且上传相关作品到这个竞赛目录下面的功能。其活动图如下图3.7所示:图3.7参加竞赛活动图3.8竞赛管理需求分析功能:实现管理员对竞赛的管理功能。说明:管理员可以查看当前正在进行的竞赛,已经结束竞赛,发起竞赛。其活动图如下图3.8所示: 图3.8竞赛管理活动图3.9作品投票需求分析功能:实现普通用户对参赛作品的投票功能。说明:某个竞赛目录下面可能会有许许多多的作品,如何给这些作品排名,需要普通用户在查看某个竞赛的参赛作品的时候,可以对这个作品进行投票,给出一定的分数,一个用户只能对同一个作品投一次票,这样就杜绝了一个用户无限刷投票的出现。其活动图如下图3.9所示:图3.9作品投票活动图3.10评论需求分析功能:实现普通用户对某个参赛作品或者某个资源评论的功能。说明:有些时候,用户想对某个参赛作品或者某个资源进行评论来发表自己对这个东西的看法,其他的用户可以通过查看这些评论,从侧面来了解这些东西的好坏,于是需要一个评论的功能,用户输入自己的评论信息,点击发布,就可以及时呈现出来。其活动图如下图3.10所示:图3.10评论活动图图3.11系统公告活动图3.11系统公告需求分析功能:实现管理员对系统公告管理的功能。说明:管理员有些时候需要发送一些系统公告给普通用户看,这时候需要一个模块来实现这个功能,系统公告模块可以实现发布公告,编辑公告,删除公告的功能。其活动图如右图3.11所示:3.12本章小结本章对科大开源平台系统的各个模块的需求进行了分析,全方位的考虑了用户的需求,通过需求分析的详细描述,了解了该系统的整体功能,描述了各个模块的基本功能,制作了相关的活动图,直观的展示了用户的需求,一个好的需求分析是制作好的软件的开始。第四章系统概要设计4.1编写目的编写系统概要设计的目的是为了将该系统的运行环境、类图设计、接口设计、数据库设计、设计约束进行一个基本的描述。通过这些描述,大概了解系统的架构,能给软件开发人员和实现人员对该系统进行维护和实现提供一定的依据。4.2系统运行环境该系统运行环境如表4.2所示:表4.2系统运行环境表名称环境操作系统windows7.0开发语言Java服务器Tomcat7.0数据库MySQL5.6JDK环境JDK1.7+内存2G以上CPUInteli32.20GHz4.3设计约束数据库表的命名:t_xxx(xxx是一个数据实体的英文),比如用户(user)表,那么数据库表名字则叫做t_user。包名:com.hnust.research.*。JavaScript文件名:JavaScript_xxxPage.JavaScript(xxx表示的是那个jsp页面的名字,比如有个注册页面register.jsp,对应的JavaScript就是register.JavaScript)。CSS文件名:xxx.CSS(xxx表示jsp页面的名字,比如有个注册页面register.jsp,对应的CSS就是register.CSS)。编码:UTF-8编码方式。项目名称:Research。数据库名称:Research。4.4类图本系统总共需要10个实体类来实现具体功能,分别是User(用户类)、Source(资源类)、Soft(作品类)、Comment(评论类)、Competition(竞赛类)、PageBean(分页类)、Score(得分类)、Notice(系统公告类)、Label(标签类)、ProgLanguage(编程语言类)。这些类中的字段将在第五章系统详细设计中一一描述。为了更好的的描述程序中各个类之间的关系,需要通过uml工具来画出各个类之间的一个关系图。图4.4是类图的描述:图4.4类图从图4.4可以看出有6个类是具有对应关系的,其余的四个ProgLanguage(编程语言类),Label(标签类),Notice(系统公告类),PageBean(类)是独立开来的。一个User对应多个Source,一个User对应多个soft,一个Competition对应多个Soft,一个Soft对应一个Score,一个Soft对应多个Comment,一个Source对应多个Comment。明确了这些对应关系,是为了以后设计数据库而用的,数据库中的字段都是根据这些实体类中的字段设计而来的,数据库的设计将在4.6小结详细介绍。4.5接口设计在本系统中,有三个包,com.hnust.research.base包,com.hnust.research.service包,com.hnust.research.serviceImpl包。第一个包是基本的接口,有一个接口DaoSupport,一个类DaoSupportImpl实现了了DaoSupport接口。第二个包中有九个接口:CompetitionService,LabelService,ProLanguageService,CommentService,ScoreService,SoftService,SourceService,UserService,NoticeService。第三个包中是具体接口的实现类:CompetitionServiceImpl,LabelServiceImpl,ProLanguageServiceImpl,CommentServiceImpl,ScoreServiceImpl,SoftServiceImpl,SourceServiceImpl,UserServiceImpl,NoticeServiceImpl。在第一个包com.hnust.research.base中,基础接口DaoSupport定义了基本的方法(add方法,delete方法,getById方法,list方法等等),在DaoSupportImpl类中实现了这个接口中的方法。第二个包中,每个对应的Service继承了第一个包中的Daosupport接口。第三个包中,每个对应的ServiceImpl继承了第一个包中的DaosupportImpl类和实现了第二个包中的对应的Service接口。下图4.5描述了这几个包中接口设计以及接口类实现的关系:图4.5接口以及接口类实现图从图4.5可以看出,具体的XXXServiceImpl类中继承了来自DaoSupportImpl的某些基本方法,如果需要添加自己的方法,只需要在自己身上添加即可,这样抽取公共方法,既简化了代码的编写,又实现了解耦。有时候在编程的时候,就需要抽取某些公共方法来达到分层的效果,这样虽然层次是较为复杂了,但是结构变得更加清晰,编程变得更加方便,某些公共的方法一有改变,其余只要继承了这些公共方法的类都会改变。4.6数据库表设计4.6.1t_competition数据表表4.6.1t_competition数据表字段名类型是否为空描述idintyes主键,自动递增titilevarcharno竞赛标题descriptiontextno竞赛描述statusvarcharno竞赛状态tauthorvarcharno竞赛发起人名字startdatetimeno开始日期enddatetimeno结束日期noteIdsvarcharno记录参加人idcountintno作品数目4.6.2t_comment数据表表4.6.2t_comment数据表字段名类型是否为空描述idintyes主键,自动递增toIdintno评论哪个实体的idcommenttextno评论timedatetimeno评论时间flagvarcharno评论的是资源还是作品标记userIdintno用户id4.6.3t_label数据表表4.6.3t_label数据表字段名类型是否为空描述idintyes主键,自动递增typevarcharno标签类型4.6.4t_notice数据表表4.6.4t_notice数据表字段名类型是否为空描述idintyes主键,自动递增contentvarcharno评论哪个实体的idtimedatetimeno发布时间4.6.5t_proglanguage数据表表4.6.5t_proglanguage数据表字段名类型是否为空描述idintyes主键,自动递增languagevarcharno编程语言4.6.6t_score数据表表4.6.6t_score数据表字段名类型是否为空描述idintyes主键,自动递增level1intno等级1的票数level2intno等级2的票数level3intno等级3的票数level4intno等级4的票数level5intno等级5的票数noteIdsvarcharyes投票人idscoresfloatyes得分4.6.7t_soft数据表表4.6.7t_soft数据表字段名类型是否为空描述idintyes主键,自动递增titlevarcharno作品标题descriptionintno作品描述createdateintno创建日期pathintno上传路径userIdintno上传人idcompetitionIdvarcharyes竞赛idscoreIdfloatyes得分id4.6.8t_source数据表表4.6.8t_source数据表字段名类型是否为空描述idintyes主键,自动递增titlevarcharno资源标题descriptiontextno资源描述pathvarcharno上传路径countintno下载次数typevarcharno标签timedatetimeno上传时间statusintno状态languagevarcharno编程语言userIdintno上传人idscoreIdintno得分id4.6.9t_user数据表表4.6.9t_user数据表字段名类型是否为空描述idintyes主键,自动递增usernamevarcharno用户名passwordvarcharno密码sharecountintno分享次数softcountintno上传作品数createdatedatetimeno创建日期imgpathvarcharno头像地址descriptionvarcharno用户描述nicknamevarcharno昵称sexintno性别activeintno状态mailvarcharno邮箱地址activeCodevarcharno激活码4.7本章小结本章通过对科大开源平台系统的概要设计,详细的分析了系统的运行环境,给出了系统的详细类图设计,实现了用户的接口设计描述,并对该系统的某些规则进行了约束,最后分析了该系统数据库表格的设计。这样有利于开发人员对该系统进行开发。第五章系统详细设计5.1系统框架图5.1系统框架图图5.1系统框架图如上图5.1所示,这个系统主要由两套操作界面组成,科大开源平台系统这一块是给普通用户准备的,而科大开源平台管理系统是给管理员准备的。前者拥有四个模块,分别是用户模块,资源模块,竞赛模块,评论模块。而后者拥有五个模块,分别是用户管理,资源管理,竞赛管理,评论管理,系统公告管理。用户选择相应的系统,进行相关的操作,和数据库之间的交互是使用Hibernate框架。5.2程序结构设计如下图5.2所示,下面将分别介绍各个目录的内容:图5.2程序结构图5.2.1src目录src目录下存放的是类的源文件,第一个包里面存放的是各个实体类对应的action类,如图5.2.1所示,第二个包里的内容是一些抽取了公共方法的类,如图所示,第三个包里的内容是一些实体类以及对应的hbm映射文件,如图所示,第四个包里面的内容是各个实体对应的接口,如图所示,第五个包里面的内容是各个接口的实现类,如图所示,第六个包里面的内容是一些辅助类,如图所示。图action包图base包图domain包图service包图serviceImpl包图utill包下表5.2.1详细说明了每个类的作用。表5.2.1类功能表类名作用类名作用AdminHomeAction管理主页操作类CkeditorImgckeditor上传图片CommentAction评论操作类CompetitionAction竞赛操作类HomeAction主页操作类LabelAction标签操作类MailAction邮件操作类NoticeAction系统公告操作类ProgLanguageAction编程语言操作类SecurityCodeImageAction验证码操作类SoftAction作品操作类SourceAction资源操作类UploadAction上传操作类UserAction用户操作类BaseAction基础操作类DaoSupport基础接口类DaoSupportImpl基础接口实现类Comment评论实体类Competition竞赛实体类Label标签实体类Notice系统公告实体类PageBean分页实体类ProgLanguage编程语言实体类Score分数实体类Soft作品实体类Source资源实体类User用户实体类LabelService标签接口CommentService评论接口CompeititonService竞赛接口NoticeService系统公告接口ProgLanguageService编程语言接口ScoreService分数接口SoftService作品接口SourceService资源接口UserService用户接口CommentServiceImpl评论接口实现类CompeititonServiceImpl竞赛接口实现类NoticeServiceImpl系统公告接口实现类ProgLanguageServiceImpl编程语言接口实现类ScoreServiceImpl分数接口实现类SoftServiceImpl作品接口实现类SourceServiceImpl资源接口实现类UserServiceImpl用户接口实现类(续表5.2.1)类名作用类名作用LabelServiceImpl标签接口实现类CheckCookieInterceptor用户Cookie检查类CookieUtilsCook辅助类Installer数据安装类QueryHelper分页辅助类SecurityCode验证码生成辅助类SecurityImage验证码图片生成类SendMailUtil发送邮件辅助类UploadFileUtil文件上传辅助类5.2.2config目录applicationContext.xml是spring的配置文件。hibernate.cfg.xml是hibernate的配置文件。perties是数据源的配置文件。perties是日志的配置文件。Struts.xml是Struts2.0的配置文件。5.2.3WebRoot目录CSS文件夹下面存放的系统的CSS样式文件。images存放的系统的图片。plugins是CKeditor的文件存放处。resource是资源上传的文件夹。scripts是脚本的文件夹。soft是作品上传文件夹。upload是图片上传的文件夹。Web-INF是系统目录,存放Web.xml和jsp文件。5.3页面设计在Web-INF目录下面有一个jsp文件夹,jsp文件夹下面有三个目录。分别是source(科大开源平台页面),admin(管理页面),public(公共页面)。下面将分别介绍这几个目录下的页面。source目录如表5.3.1所示,admin目录如表5.3.2所示,public目录如表5.3.3所示。表5.3.3source目录表页面说明页面说明attendUI.jsp参加竞赛页面competitionDetail.jsp竞赛详情页面competitionList.jsp竞赛列表页面confirm.jsp激活验证页面error.jsp错误页面forget.jsp忘记密码页面login.jsp登录页面member.jsp信息设置页面(续表5.3.3)页面说明页面说明personalInfo.jsp个人信息页面register.jsp注册页面registerOk.jsp注册成功界面softDetail.jsp作品详情页面softList.jsp作品列表页面sourceDetail.jsp资源详情页面sourceIndex.jsp主页sourceList.jsp资源列表页面sourceResult.jsp资源搜素页面sourceUpload.jsp资源上传页面表5.3.2admin目录表页面说明页面说明list_end.jsp竞赛结束列表list_start.jsp正在进行列表saveUI.jsp保存页面list.jsp列表页面create.jsp创建页面detail.jsp详情页面edit.jsp编辑页面labelList.jsp资源标签列表页labelSaveUI.jsp保存标签页面languageList.jsp编程语言列表页languageSaveUI.jsp资源编程语言保存页面list_ok.jsp已经审核资源列表list_unchecked.jsp未经审核资源列表info.jsp用户信息页面bottom.jsp主页底部index.jsp主页left.jsp主页左边top.jsp主页顶部表5.3.3public目录表页面说明页面说明head.jspf头部jsp片段bottom.jspf底部jsp片段以上就是本系统的所有页面信息。5.4实体类设计publicpublicclassUserimplementsSerializable{ privateLongid;//id privateStringusername;//用户名 privateStringpassword;//密码 privateIntegersharecount;//分享次数 privateIntegersoftcount;//上传作品数目 privateDatecreatedate;//创建日期 privateStringimgpath;//头像路径 privateStringdescription;//描述privateprivateStringnickname;//昵称 privateIntegersex;//性别 privateIntegeractive;//激活状态 privateStringmail;//邮箱 privateStringactiveCode;//激活码 /** *一个用户有多个资源,一对多关系 */ privateSet<Source>sources=newHashSet<Source>(); /** *一个用户有多个作品,一对多关系 */ privateSet<Soft>softs=newHashSet<Soft>();}publicpublicclassCompetition{ privateLongid;//id privateStringtitle;//竞赛名字 privateStringdescription; //竞赛描述 privateStringstatus; //状态 privateStringauthor; //发起人 privateDatestart; //开始时间 privateDateend; //结束时间 privateStringnoteIds;//记录参加人的id的字段("1,3,5,6,7,8"),表示id为1,3,6,7,8的用户参加过这个比赛 privateIntegercount;//有多少个作品记录 privateSet<Soft>softs=newHashSet<Soft>(); //一个竞赛对应多个作品}publicpublicclassLabelimplementsSerializable{ privateIntegerid;//idprivateStringtype;//种类}publicpublicclassPageBean{ //指定的或是页面参数 privateintcurrentPage;//当前页 privateintpageSize;//每页显示多少条数据 //查询数据库 privateListrecordList;//本页的数据列表 privateintrecordCount;//总记录数 //计算出来的 privateintpageCount;//总页数 privateintbeginPageIndex;//页码列表的开始索引 privateintendPageIndex; //页码列表的结束索引}publicpublicclassProgLanguage{ //id privateIntegerid; //语言 privateStringlanguage;}publicpublicclassScore{ privateLongid;//id privateIntegerlevel1; privateIntegerlevel2; privateIntegerlevel3; privateIntegerlevel4; privateIntegerlevel5; privateStringnoteIds; privateFloatpercent1; privateFloatpercent2; privateFloatpercent3; privateFloatpercent4; privateFloatpercent5; privateFloatscores;}publicpublicclassSoft{ privateLongid;//idprivateprivateStringtitle;//作品名字 privateStringdescription; //作品描述 privateDatecreatedate;//上传时间 privateStringpath;//上传路径 /** *一个作品对应一个投票类(一一对应) */ privateScorescore; /** *一个作品,对应一个用户 */ privateUseruser; /** *一个作品对应一个竞赛 */ privateCompetitioncompetition;}publicpublicclassSourceimplementsSerializable{ privateLongid;//id privateStringtitle;//标题 privateStringdescription;//描述 privateStringpath; //路径 privateIntegercount; //下载次数 privateStringtype; //类型 privateDatetime; //上传时间 privateIntegerstatus;//资源状态 privateStringlanguage; //属于哪门语言 privateUseruser;//属于哪个用户 privateScorescore;//这个资源的得分}5.5操作数据库分析在一般的JavaWeb程序中,是采用JDBC技术来连接数据库并且操作数据库的,需要建立Connection,申明statement,执行sql语句,返回结果集ResultSet。而在Hibernate框架中,只需要配置了数据源连接参数。配置参数如下所示:jdbcUrl=jdbc:mysql:///researchdriverClass=com.mysql.jdbc.Driveruser=rootpassword=dislike09在程序中只需要获得数据库连接的sessionFactory,然后获得当前的session,就可以通过session对象来操作数据库,删除,增加等很多方法都封装在了session对象中,这样就方便了很多。5.6本章小结本章是对系统详细设计的描述,先从系统框架入手,给出了系统框架图,然后从程序结构开始,分析了程序的整体结构,给出了每个文件夹的作用,接下来,分析了每个jsp页面的作用,然后介绍了程序实体类的设计,最后分析了如何通过Hibernate操作数据库。第六章系统功能实现6.1用户注册实现预期效果:当用户填写信息,会进行表单验证,Ajax验证用户名是否存在。信息填写正确,发送邮件提醒用户激活。实际效果:如图6.1.1和图6.1.2所示:图6.1.1用户注册图6.1.2邮件激活6.2用户登录实现逾期效果:输入用户名和密码进行Ajax验证。如果三次输入密码不正确提示找回密码。实际效果:如图6.2.1和图6.2.2所示:图6.2.1用户登录失败图6.2.2提醒忘记密码6.3资源上传实现预期效果:用户填写相关信息,选择文件,实现上传。实际效果:如图6.3.1所示:图6.3.1资源上传6.4资源下载实现预期效果:用户点击资源列表页面,选中资源,点击相应的下载按钮,实现资源的下载。实际效果:如图6.4.1所示:图6.4.1资源下载6.5资源搜索实现预期效果:用户登录之后,在中间搜索框中输入jquery,就会搜索出

温馨提示

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

评论

0/150

提交评论