基于JSP的毕业设计选题系统的设计与实现(含源文件)


获取项目源文件,学习交流联系Q:1225467431


目录
TOC 1-4 1 绪 论 1
1.1 选题的目的及意义 1
1.2 系统开发的关键技术 1
1.3 本课题研究的主要内容以及展望 1
2 系统开发技术 3
2.1语言可行性的分析 3
2.1.1 SERVLET技术简介 3
2.1.2 JSP及其特点 4
2.2 框架的可行性 4
2.2.1 MVC(Model View Controller)分层结构 4
2.2.2 基于MVC结构 web系统设计 5
2.3 系统开发所用工具 6
2.3.1 Apache Tomcat 6
2.3.2 MySQL数据库 6
2.4 系统运行环境 7
2.4.1 硬件环境 7
2.4.2 软件环境 7
3 需求分析 8
3.1 需求说明 8
3.2 功能定义 10
3.2.1 功能结构图 10
3.2.2 系统模块介绍 10
3.3系统的总体结构 11
3.4 业务流程分析 12
3.4.1 学生志愿课题管理 12
3.4.2 教师课题管理 13
3.4.3 用户基本信息管理 13
3.4.4 自动生成终表 14
3.4.5 手动生成终表 14
4 数据库设计 16
4.1 数据库概念结构设计 16
4.1.1 实体E-R图 16
4.1.2 实体联系E-R图 18
4.1.3 E-R图向关系模型的转换 19
4.1.4 关系模式设计 19
4.1.5 数据表结构 20
5 系统实现详细设计与实现 25
5.1 系统登陆界面的设计与实现 25
5.2 主控制平台的设计与实现 25
5.3 用户操作总体设计 26
5.3.1 用户登录设计 26
5.3.2 教师管理模块设计 29
5.4 技术难点 31
5.4.1 中文乱码 31
5.4.2 HQL 语言 31
6 测 试 32
6.1 常用的测试方法 32
6.2 系统测试 33
6.3 系统的安全性分析 34
6.4 系统的实用性分析 34
总结 35
参考文献 36
致 谢 37
1 绪 论
1.1 选题的目的及意义
随着网络和信息技术的发展,20世纪80年代人们提出了办公自动化”的概念,经过20多年两代的发展,办公自动化系统发生了根本的变化,它主要采用客户/服务器的二层结构、浏览器/服务器/数据库的三层结构,以网络技术和协同工作技术为主要特征,实现工作流程自动化和非结构化数据库的功能,实现了收发文件从传统的手工方式向工作流程自动化方式飞跃,可以方便的实现非结构化文档的处理。
学校处在信息接受的前沿,实现教学办公自动化是必然趋势,毕业生的毕业设计选题管理系统”就是办公自动化的一项主要内容。毕业设计选题管理系统”利用了方便的网络通信技术,使得管理员管理教师课题和学生的志愿工作变得非常方便。该系统采用JSP(Java Server Pages)开发技术,基于B/S模式的工作方式使得数据的维护也显得非常方便
1.2 系统开发的关键技术
本系统采用了基于MVC模式的Struts框架与Hibernate框架进行开发。开发的关键技术:
⑴ JSP技术的应用。
⑵ Struts框架的使用。
⑶ Hibernate框架的使用。
1.3 本课题研究的主要内容以及展望
毕业设计选题管理系统是基于浏览器/服务器架构的软件管理系统,它的开发技术是目前比较流行的基于windows 平台的JSP结合JAVASCRIPT技术,数据库采用了SUN 公司开发的MYSQL数据库,MYSQL是高性能的数据库管理系统,在可靠性、易用性、可伸缩性、业务职能功能等方面都具有非常优秀的表现,它具有支持多用户同时访问,自适应内存调节特性等优点,有良好的可扩展性和可维护性,更容易控制。
毕业设计选题管理系统 ”分为前台”和后台两部分,前台是实现学生和教师浏览网站的功能,学生用户通过网上浏览教师的课题选择自己喜欢的课题,然后提交到后台数据库保存选题信息,待由管理员处理信息,而教师则可以通过网上浏览申请课题,然后提交到后台数据库,待由管理员处理信息,学生和教师只能浏览数据库信息,不能修改,数据库的相关信息处理由管理员完成。管理员处理教师课题和学生志愿要完成的操作有:对学生志愿的添加、删除、修改,能够查看有哪些学生选择了志愿,哪些学生还没有选择志愿。对教师课题管理要完成的操作有:对教师课题的添加、删除、修改,并要对教师申请的课题进行审查、批准。另外,管理员还要完成学生课题的排列:分为两种方式:自动生成终表和手动生成终表,按志愿优先级进行排列。发布公告,查看公告。
2 系统开发技术
2.1语言可行性的分析
2.1.1 SERVLET技术简介
Servlet是Java技术对CGI(Common Gateway Interface)编程的回答。Servlet程序在服务器端运行,动态地生成Web页面。同时它也作为一个中间层,负责连接来自Web浏览器或其他HTTP客户程序的请求和HTTP服务器上的数据库或应用程序。与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资,更高效。Servlet被调用的流程如图2.1所示。
图2.1 Servlet被调用的流程
图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.2 JSP及其特点
JSP及其特点[2]:JavaServer Pages(JSP)是一种实现普通静态HTML和动态HTML混合编码的技术。JSP和ASP相比具有两方面的优点。首先,动态部分用Java编写,而不是VB Script或其他Microsoft语言,不仅功能更强大而且更易于使用。第二,JSP应用可以移植到其他操作系统和非Microsoft的Web服务器上。JSP和纯Servlet相比JSP并没有增加任何本质上不能用Servlet实现的功能。但是,在JSP中编写静态HTML更加方便,不必再用println语句来输出每一行HTML代码。更重要的是,借助内容和外观的分离,页面制作中不同性质的任务可以方便地分开:比如,由页面设计专家进行HTML设计,同时留出供Servlet程序员插入动态内容的空间[4]。
2.2 框架的可行性
2.2.1 MVC(Model View Controller)分层结构
MVC即模型-视图-控制器模式是一种分治”的思想。模型,即相关的数据,它是对象的内在属性;视图是模型的外在表现形式,一个模型可以对应一个或者多个视图,视图还具有与外界交互的功能;控制器是模型与视图的联系纽带,控制器提取通过视图传输进来的外部信息转化成相应事件,然后由对应的控制器对模型进行更新;相应的,模型的更新与修改将通过控制器通知视图,保持视图与模型的一致性。图2-2揭示了这三者之间的关系:
图2-2 MVC模型图
2.2.2 基于MVC结构 web系统设计
MVC是包含模型、视力、控制器的分层结构,其系统设计也分别从这三个方面入手,
图2-3为基于MVCWEB系统的图形化描述。
图2-3 MVC模型
⑴ 控制器的设计
控制器是模型和视图联系的纽带,同时也是系统的控制中心。根据控制器在系统中的不同作用,将控制器抽象成四种控制器类型,即主控制器(MainController)、请求映射控制器(RequestMappingConntroller)、视图选择控制器(ViewController)和模型控制器(ModelController)。其中,主控制器在系统服务器最前端,用于从xml配置文件中获取HTTP请求映射表,接收客户的HTTP请求并且将该请求传送给请求映射控制器和视图选择控制器;请求映射控制器将传送来的HTTP请求映射到相应的处理器(处理器采用JavaBean形式)进行处理,其映射表直接从Servlet Context的变量中获取(因为该映射表已经由主控制器装入),处理完后返回结果;视图控制器根据HTTP请求映射表及处理器处理后的结果进行下一个视图的选择;模型控制器负责客户会话数据的处理:每一个客户对应一个会话模型,用来描述客户的各种状态等。
⑵ 视图层设计
视图层即用户界面,在WEB系统中表现为用户可见的网页,对于每一个使用HTTP请求响应模型WEB应用,View组件基本上总是和响应相关联的组件,并将结果返回给用户,视图层应该尽量减少业务逻辑或复杂的分析。
⑶ 模型层设计
模型层通常表现为业务对象或者物理后端系统。模型层通常都是业务相关的,对于数据库的相关操作,及复杂的业务逻辑分析都应该在模型层实现。【15】
2.3 系统开发所用工具
2.3.1 Apache Tomcat
Tomcat服务器是一个免费的开放源代码的Web应用服务器,它是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,Tomcat5支持最新的Servlet 2.4和JSP 2.0规范。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。
2.3.2 MySQL数据库
MySQL数据库技术:MySQL是一个快速的多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务。重负载生产系统的使用,也可以将它嵌入到一个大配置(mass-deployed)的软件中去。
(1) MySQL是一个数据库管理系统。
一个数据库是一个结构化的数据集合。它可以是从一个简单的销售表到一个美术馆、或者一个社团网络的庞大的信息集合。如果要添加、访问和处理存储在一个计算机数据库中的数据,你就需要一个像MySQL这样的数据库管理系统。从计算机可以很好的处理大量的数据以来,数据库管理系统就在计算机处理中和独立应用程序或其他部分应用程序一样扮演着一个重要的角色。
(2) MySQL是一个关系数据库管理系统。
关系数据库把数据存放在分立的表格中,这比把所有数据存放在一个大仓库中要好得多,这样做将增加你的速度和灵活性。MySQL”中的SQL代表Structured Query Language”(结构化查询语言)。
(3) MySQL服务器是一个快的、可靠的和易于使用的数据库服务器。
如果这是你正在寻找的,你可以试一试。MySQL服务器还包含了一个由用户紧密合作开发的实用特性集。
(4) MySQL服务器工作在客户/服务器或嵌入系统中。
MySQL数据库服务器是一个客户/服务器系统,它由多线程SQL服务器组成,支持不同的后端。多个不同的客户程序和库。管理工具和广泛的应用程序接口(APIs)。
(5) MySQL也可以是一个嵌入的多线程库,你可以把它连接到你的应用中而得到一个小、快且易于管理的产品。
2.4 系统运行环境
2.4.1 硬件环境
后台数据库服务器:
因为服务器为数据库服务器,且要完成高密度的运算量,所以应采用较高档的服务器。考虑到与软件的兼容性,建议采用Intel Pentium 4多处理器系统、512MB RAM、80GB以上硬盘。
客户机:
采用Intel Pentium 4 多处理器系统、512MB RAM、80GB以上硬盘。
网络配置:10M/100M 网络带宽、100Mb/s网卡、16口交换机。
2.4.2 软件环境
操作系统的选择:
数据库服务器:因为服务器为数据库服务器,特别对稳定性有极高的要求,且支持多CPU。所以应采用Windows 2000 Server,因为它有优良的稳定性和操作性。
数据库的选择:
因大部分情况下软件都是在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.1.2 实体联系E-R图
实体联系E-R图如图4.10所示。
1 n
1
1

n 1
图4.10 实体联系图
4.1.3 E-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 管理员信息表
中文名称 字段名 数据类型 约束
管理员帐号 account VARCHAR Not null unique
管理员姓名 name VARCHAR Not null
管理员密码 password VARCHAR Not null
所属院系 college INTEGER References college_t(college_id)
联系方式 phone VARCHAR yes
邮箱 mail VARCHAR yes
角色 role VARCHAR Not null
2.学生信息表,如表4.12。
表4.12 学生信息表
中文名称 字段名 数据类型 约束
学号 stuid VARCHAR Not null unique
学生姓名 name VARCHAR Not null
登录密码 password VARCHAR Not null
学生性别 sex VARCHAR Not null
学生所在班级 class VARCHAR Not null
学生所属院系 profession INTEGER References profession_t(profession_id)
联系方式 phone VARCHAR yes
邮箱 mail VARCHAR yes
课题 topic INTEGER References topic_t(topic_name)
角色 role VARCHAR Not null


3.教师信息表,如表4.13。
表4.13 教师信息表
中文名称 字段名 数据类型 约束
教师工号 teach_id VARCHAR Not null uniqu
教师姓名 name VARCHAR Not null
登录密码 password VARCHAR Not null
教师性别 sex VARCHAR Not null
教师职称 title VARCHAR Not null
教师学历 education VARCHAR Not null
所属院系 college INTEGER References college_t(college_id)
联系方式 phone VARCHAR yes
邮箱 mail VARCHAR yes
角色 role VARCHAR Not null

4.课题信息表,如表4.14。
表4.14 课题信息表
中文名称 字段名 数据类型 约束
课程名称 topic_name VAECHAE Not null unique
出题教师 teacher INTEGER Not null
允许学院 permit_col INTEGER References college_t(college_id)
允许专业 permit_prof INTEGER References profession_t(profession_id)
限选人数 limit_no INTEGER Not null
课题难度 difficult VARCHAR Not null
课题工作量 workload VARCHAR Not null
课题性质 topic_prop VARCHAR Not null
课题来源 topic_source VARCHAR Not null
课题简介 topic_intro VARCHAR Not null
课题要求 topic_ask VARCHAR Not null
出题日期 topic_date TIMESTAMP Not null
5.学院信息表,如表4.15。
表4.15 学院信息表
中文名称 字段名 数据类型 约束
学院编号 college_id INTEGER Not null unique
学院名称 college_name VARCHAE Not null
6.专业信息表,如表4.16。
表4.16 专业信息表
中文名称 字段名 数据类型 约束
专业编号 Profession_id INTEGER Not null unique
专业名称 Profession_name VARCHAR Not null
所属院系 college INTEGER References college_t(college_id)
7.课题申请信息表,如表4.17。
表4.17课题申请信息表
中文名称 字段名 数据类型 约束
审核状态 topic_state INTEGER Not null
正选状态 student_state VARCHAR Not null
已选人数 topic_num VARCHAR yes
出题编号 select_num VARCHAR Not null
申请日期 apply_date TIMESTAMP Not null
8.学生预选信息表,如表4.18。
表4.18学生预选信息表
中文名称 字段名 数据类型 约束
学号 student_id INTEGER References student_t(stuid)
志愿编号 wash_id VARCHAR Not null
课题 topic_name VARCHAR References topic_t(topic_name)
预选日期 select_time TIMESTAMP Not null
9.系统设置信息表,如表4.19。
表4.19系统设置信息表
中文名称 字段名 数据类型 约束
所属院系 college INTEGER References profession_t(profession_id)
院系状态 college_state INTEGER Not null
出题状态 produce_topic INTEGER Not null
预览状态 view_topic INTEGER Not null
选题状态 select_topic INTEGER Not null
出题个数 produce_no INTEGER Not null
10文件信息表,如表4.20。
表4.20文件信息表
中文名称 字段名 数据类型 约束
用户帐号 User_id VARCHAR Not null unique
用户姓名 User_name VARCHAR Not null
用户角色 User_type VARCHAR Not null
接收用户 To_who VARCHAR yes
文件名称 File_naem VARCHAR Not null
文件路径 File_path VARCHAR Not null
文件内容 File_context TEXT yes
发表日期 upfile_time TIMESTAMP Not null
5 系统实现详细设计与实现
根据已有的需求信息和总体设计,来进行系统的详细设计和实现。为此,我们建立了一个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的实现类在配置文件中的名字,如下所示:

action是Struts的Action的URL,他们在Struts的配置文件中都是已经配好的,如下所示:

/student/index.jsp
login.jsp
/teacher/index.jsp
login.jsp
/admin/index.jsp
login.jsp

在这个配置文件中,可以了解到如下信息:
根据name=login可以找到与之相对应的Action的实现类com.graduate.action.LoginAction”。
根据type= com.graduate.action.LoginAction 可以找到处理用户数据的Action类。
根据/user/index.jsp可以了解,这个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的欲编译技术。
关键代码如下:
public String execute(){
if(hasErrors()){
return INPUT;
}
ActionContext.getContext().getSession().put(user, admin);
return SUCCESS;
}
public void validate(){
String number = (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;
}
AdminDAO dao = (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 添加课题信息页面
添加课题信息的链接是这样的,如下所示:
添加课题
在Struts配置文件中,添加课题信息的链接没有使用Action类,也没有使用Action的实现类,如下所示:
addTopic.jsp文件,只是一个普通的JSP文件,但是它的表单元素都是与TopicAction相对应的,TopicAction如下所示:
TocpicAction类中的reset()方法作用是当用户点击重置”按钮时,清空input输入框的内容,toString()方法覆盖了Object和toString()方法,populate()方法很有,它把TopicAction转化成Topic实体类,大大方便了程序在对数据库操作时使用的方便。而且这个方法中还把申请日期等表单元素的值由字符型转成日期类型。
在addTopic.jsp页面中的action上可以看到它要提交的URL,如下所示:
  ,Topic的action实现类是com.graduate.TopicAction”,如下所示:
public T save(T entity) {
Session session = HibernateSessionFactory.getSession();
session.save(entity);
return entity;
在TopicAction找到参数action等于add时所调用的方法addTopic (),它只是把从topic表单转化成的topic类做为参数传给了TopicDAO的save()方法。在由这个方法向数据库添加课题信息,如下所示:
如果添加成功页面会被被重新加载回页面显示出来topic.action的URL。
这样就在页面做一次提交时它访问了二次TopicAction,第一次的作用是向数据库中添加信息,随后又把所添加的课题信息取出来显示给用户,同样TopicAction还只是调用TopicDAO,
TopicAction取出从TopicDAO中数据,在把它存到ActionContext里,然后返回return mapping.findForward(success);在Strutsr的配置文件里返回页是addTopic.jsp。课题信息都在这个页中显示出来。
这是添加课题信息的整个过程,在这个过程中,有一部分是用于显示课题信息的,
课题信息的列表的最后一列可以对该条记录做删除和修改。删除的链接地址是删除它向Action的实现类提交了两个参数,一个是action=deleteTopic是固定不变的,另一个是该课题的id这是根据不同记录取出来的。在TopicAction类中根据action的值可以找到与其相对的方法,
在这个方法里得到页面提交过来的用户ID,把这个id存在Topic表中的实例中,传给dao的delete ()方法,我们可以看到关于数据库方面的操作都被封装在Dao中。
删除用户时和添加用户一样都是先得到一个Hibernate的Session,后调用它的delete()方法就可以了
修改课题的信息时必须先把要修改的课题信息先查找出来,让用户可以直观的根据以前的信息修改。这样在点击修改时也要传给Action一个用户ID,用来查询出课题信息,如下所示:
编辑>修改
根据页面的链接可以在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.2 HQL 语言
本系统中,所有对数据库的操作都由Hibernate来完成,因此用到了大量的HQL语言.HQL是Hibernate设计的一套完整而实用高效的查询语言,它通过面向对象的语句结构实现了和SQL语言类似的功能.如果向表里插入一条数据的话,直接调用save()方法即可,但如果要使用查询功能的话,我按照一般的SQL语句的方法:from 表名 where 条件,却总是找不到预期的数据,后来看书中发现,from后跟的是表对应映射的类文件名,而非表名,比如招聘表为invite,它对应的类为Invite.java,所以在from后要根Invite而不是invite.
6 测 试
6.1 常用的测试方法
测试在整个软件开发过程中起着至关重要的作用,软件测试对于保证一个软件的可靠性是极为重要的。测试占据整个软件生命周期的75%左右,可见它的重要性。特别是在面对一个庞大而复杂的系统,软件测试就能充分的发挥它的作用,因为伴随着测试,我们会发现软件中存在的各种各样的问题。从而,尽快地解决问题。在开发一个系统的各个阶段都不可避免地会发生这样或那样的问题,所以在每一个开发的过程中的各个阶段都要对软件进行测试,软件测试的目标是尽可能地发现软件中的错误,以便对其进行修改。
测试包括单元测试和集成测试。单元测试是把一个模块作为独立的程序单元进行测试,以保证它能够正确执行规定的功能,单元测试是编码和单元测试阶段的任务。集成测试是将已经通过彻底测试的模块组装起来,以形成一个系统或软件产品,集成测试主要使用黑盒测试法对系统进行功能测试,集成测试的主要任务是检查和排除模块接口错误。全局数据结构错误。模块中某些遗漏的错误;集成测试是系统集成阶段的任务;集成测试可分为自顶向下集成测试、自底向上集成测试、自顶向下和自底向上综合的集成测试、回归测试、测试工作能否成功,主要取决于测试案例设计是否科学合理。测试案例系指测试输入数据及其对应的输出,其设计依赖于所采用的测试方法:白盒测试与黑盒测试。
1.白盒测试:使用白盒方法导出测试案例是依据模块的编码,即模块的内部逻辑对测试者是可见的,故称为白盒测试,有时也称为玻璃盒测试。测试的目的在于用最少的测试案例,检测出最多的错误。使用白盒测试方法所导出的测试案例能保证模块中所有独立途径至少要测试一次。测试所有逻辑决策真和假两个方面。在所有循环的边界内部和边界上执行循环体。检查内部数据结构以保证其有效性。白盒测试又包含基本路径测试、条件测试、数据流测试和循环测试。
2.黑盒测试:黑盒测试集中在软件的功能需求上,黑盒测试是在程序或模块的接口级进行,而不考虑该程序的内部逻辑。黑盒测试能够用于检测程序中下列类型的错误:
(1) 不正确或漏掉的功能,这往往是由于程序算法中的问题所造成;
(2) 接口错误;
(3) 数据结构或外部数据库存取中的错误;
(4) 性能方面的问题,这类问题通常也与算法有关;
(5) 初始化或结束错误。
6.2 系统测试
在完成编码的工作以后,根据以上的方法和步骤进行了如下的测试:
界面测试:在不开启Web服务器的情况下,反复点击网页上的超链接,测试其连接情况,直到所有的链接都达到预期的效果.
功能测试:对网站的几大功能模块逐一测试,尽最大可能发现起潜在的错误,下面是我测试的典型例子:
1.进入页面首页,输入用户名和密码,成功后跳转到登陆后的首页。见图6-1和图6-2。

图6.1登陆成功
图6.2管理界面
2.进入页面首页,输入用户名和密码不正确,转到登陆界面。见图6-3。
图6.3 失败页面
性能测试:将程序以局域网的形式发布,查看其是否满足多用户的要求.
需求测试:根据需求分析的内容,测试网站是否和当初的设计一样.
通过这几方面的测试,我及时修正了系统中存在的问题,很好的提高了系统的性能,达到了预期目标。
6.3 系统的安全性分析
系统对于错误操作和非法用户的恶意破坏的安全保证的可靠程度。在本系统中,测试了所有可能涉及的错误操作,每个可能涉及到的错误操作都有相应的错误处理机制,在系统实现过程中,定义了本系统可能出现的错误的处理信息以及相应的解决办法。对于用户,通过权限设置使其完成相应的操作,并且系统管理员可以修改普通用户的权限,非法用户是不可能登录到系统中的。
6.4 系统的实用性分析
对于系统全部模块进行测试,基本达到了任务书的要求,也达到了系统起初的设计需求,当然也会有考虑不详尽的方面,详细说明如下:全部功能要求已尽量达到了满足,全部性能达到要求,数据库操作正常。因为整个系统是基于教学管理系统,但是由于部分功能实现的并不是非常理想,而且也没有将系统在实际中测试,所以并不敢确保系统在实际中会有良好的应用效果。不过总体上说来,系统还是具有一定的实用性,这是我的第一个完整的软件系统,因为本身能力的限制,以及经验的不足,这个系统很难算作是产品,但是我认为,通过这样一个毕业设计,以及我现在所学习到的东西,下一个系统,一定是一个可以应用的、具有实用性的产品。
总结
经过不懈努力,选题管理系统终于开发完成了。系统的开发采用了JSP开发工具和MySQL数据库,按照可行性分析、需求分析、总体设计、详细设计、系统测试的步骤进行开发。在需求分析阶段对整个系统共能进行了严格仔细的分析;在总体设计阶段设计了系统的框架结构并根据需求进行数据库设计;在详细设计阶段按照从后台到前台界面的顺序进行开发。
为了设计出毕业生选题管理系统,参阅了大量的资料,在测试和调试阶段走了不少的弯路,但经过认真的学习和思考,最终完成了作品。在整个系统中把系统分析放在为重要的位置,如果在开发前对整个开发工作做出全方位的规模化系统分析,开发过程就是事半功倍,否则就会遇到许多意想不到的问题,延缓开发进度。总体上来说,这次的设计对是非常难得的一次锻炼的机会,使得对大学四年所学的专业课有了更深刻的认识,使知识得到了融会贯通。与以往分组做的毕业设计不同,在这次设计中,独立完成所有的分析与设计过程,真的有了更大的收获。在系统设计中,也遇到了很多问题,但是通过努力都一一解决了,在解决这些困难的过程中提高了自身的学习能力。解决问题的能力和实际工作的能力,学到了许多书本以外的知识。
由于时间和个人能力有限,所以该系统可能还有许多不尽人意的地方,有一些功能点还没有实现,想法和设计也还不够全面,因此在本文之中难免有失误之处,还请各位老师多多指正本系统可能存在错误与不足,望老师给予指导与批评。虽然有不足但这是用自己所学的知识与全身心的投入做出来的成果,以后会总结本次经验,在日后的工作中做出更完善更完美的系统。
参考文献
[1] 叶核亚, 陈立. Java2程序设计实用教程. 北京:电子工业出版社, 2003
[2] 资讯教育小组. HTML标准教程. 北京:中国青年出版社, 2000
[3] 张跃平. JSP实用教程. 北京:清华大学出版社, 2001
[4] 姬成强. Dreamweaver就这么简单. 北京:机械工业出版社, 2002
[5] 苏治中. DreamweaverMX2004实用教程. 北京:中国铁道出版社, 2004
[6] 魏海平. 标准Java2类库使用手册. 北京:电子工业出版社, 2005
[7] Bruce Eckel. JAVA编程思想. 北京:机械工业出版社, 2002
[8] 孙晓龙,赵莉. JSP动态网站技术入门与提高. 北京:人民邮电出版社, 2004
[9] 张亦华. JSP程序设计精彩实例. 北京:清华大学出版社, 2004
[10] 沈洁. 实用软件工程. 北京:机械工业出版社, 2005
[11] 李大友,陈明. 实用软件工程基础. 北京: 清华大学出版社, 2005
[12] 吴建编, JSP网络开发入门与实践. 北京:人民邮电出版社, 2006
[13] 黄明,梁旭. JSP信息系统设计与开发实例. 北京: 机械工业出版社, 2004
[14] 刘伟,张立国. Hibernate开发与实践. 北京:电子工业出版社,2009
[15] [美]Patrick LightBody. WebWork in Action. 北京:电子工业出版社, 2006
[16] [美] Kim B.Bruce,Thomas P.Murtagh. JAVA编程. 北京:清华大学出版社, 2005
致 谢
在我完成这篇毕业论文期间,得到了周宇老师的热情帮助和悉心指导,从她身上,我不仅仅学到了计算机领域先进的理论知识,弥补了自己理论知识的不足,更重要的是学到了严谨治学的态度和忘我的工作精神,还有就是如何做人,如何处世,这些东西都是在其他的地方所无法学到的,将令我受益终生。
我衷心的感谢关心和指导我的周宇老师,感谢她对我的培养和教育,同时也非常感谢曾经教授过我专业课程的老师,没有他们的精心培育也不会有这篇论文的诞生,还有给我带来活力的实验室里共同奋斗过的其他老师和同学,再此一致表示衷心的感谢,这将是我有生以来最难忘的校园生活。
四年的大学生生活就要结束了。就要离开这个朝夕相处、蓬勃发展的集体了。回首往事, 心头升起无比的眷恋。在今后的人生路上,我会不断的进取,为自己的生活增添新的色彩,实现自己的人生价值,为祖国的繁荣富强贡献一份力量。
开始
用户登录
验证
教师管理系统
管理员管理系统
学生管理系统
教师课题添加
教师课题删除
教师课题查询
教师信息修改
按类型查询
查询全部
按类型删除
系统设置
学生管理
教师管理
发表公告
学生查看课题
学生课题退选
学生课题查询
查看审核状态
存在提示
确定删除
确定退选
确定是否选上
按类型查询
查询全部
学生信息修改
退出
确定是否退出
未通过验证
通过验证


生成终表
毕业生选题管理系统
学生子系统
管理员子系统
教师子系统








































删除学生志愿
删除学生课题
修改教师课题
删除教师课题
增加教师课题
申请课题管理
添加用户
删除用户
发表公告
修改用户
生成终表
系统登录的主界面
管理员登录
管理员录入教师及学生初始信息
管理员开启提交选题功能
管理员添加审核管理员
教师登录提交选题
管理员关闭提交选题功能
管理员开启题目审核功能
管理员开启学生预览功能
管理员调剂选报情况
审核管理员审核题目
学生登录预览题目
管理员打印输出最终报表
管理员关闭题目审核功能
管理员关闭学生预览功能
管理员开启学生选报功能
学生登录选报题目
管理员关闭学生选报功能
管理人员
登 录
学生志愿存储
学生课题存储
修改学生志愿
删除学生志愿
删除学生课题
查看未选志愿学生
学生基本信息存储
控制界面
登陆错误被弹出
管理员
登陆
教师课题存储
教师申请课题
修改教师课题
添加教师课题
删除教师课题
批准教师申请课题
主控制界面
非法用户被禁止
管理员
登陆
添加用户
修改用户
删除用户
主界面
用户信息存储
管理员
登陆
控制界面
学生志愿存储
学生第一志愿
相应教师课题
判断教师课题是否未满
生成终表


教师课题存储
学生第二志愿
相应教师课题
判断教师课题是否未满

终表存储
生成终表

管理员
登陆
控制页面
学生志愿存储
教师课题存储
终表存储
学生志愿
教师课题
管理员信息
管理员账号帐号
管理员姓名
管理员密码
所属院系
联系方式
邮箱
角色
学生信息
学号
学生姓名
登录密码
所属班级
所属院系
性别
联系方式
邮箱
课题
角色
教师信息
教师工号
教师姓名
登录密码
所属院系
职 称
性 别
联系方式
邮箱
角色
课题信息
课程名称
出题教师
允许学院
允许专业
限选人数
课题难度
工作量
课题性质
课题来源
课题简介
课题要求
出题日期
图4-5 学生信息实体和课题实体之间的联系
学生
课题
1
1
引用
图4-6 教师信息实体与课题信息实体之间的联系
教师
课题
n
1
拥有
图4-7 学院实体和专业实体之间的联系
学院
专业
n
1
拥有
图4-8 学院实体和教师实体之间的关系
学院
教师
n
1
拥有
图4-9 课题实体和课题申请信息实体之间的关系
课题
课题申请
1
1
引用
选 题
指 导
出 题
教师信息
课题
学生信息
PAGE
获取项目源文件,联系Q:1225467431,可指导其它毕设,课设

发布了8 篇原创文章 · 获赞 0 · 访问量 354

猜你喜欢

转载自blog.csdn.net/weixin_44938415/article/details/104235320