配色: 字号:
jsp校园网络教学ssh论文
2024-04-18 | 阅:  转:  |  分享 
  






毕业设计(论文)





设计(论文)题目:   



在21世纪这个信息高度发达,并且高速流通的时代,计算机的普及以及计算机网络技术的应用,让大量普通人能够有机会接触到比以往更多的知识。作为一个以传播知识为主要职能的机构——学校,建立一个自己的精品课程网站是十分必要的事情,这不仅能使更多的人享用宝贵的教育资料源,同时也对于提升学校自身的知名度,提高学生自学能力,有相当大的帮助。

随着互联网技术的飞速发展,利用网络进行辅助教学已经成为时代发展的必然趋势,建立精品课程网站,尽可能提高优质教学的利用率,对实现人才培养,促进社会经济发展都能起到十分重要的作用。也可以引导用户主动年该学习,提高学习效率,更为教学双方提供一个进行写作学习和交流的平台。

针对以上问题,设计开发了创新园网站系统,本系统前台主要使用JSP作为开发语言,后台使用SqlServer作为数据库管理系统,开发环境是MyEclipse,服务器采用tomcat,开发出的一个基于Web技术的B/S结构的基于在线课件发布、在线课件视频发布、在线考试一体的管理系统。



关键词:教学管理,WEB,JSP,B/S结构











ABSTRACT

In twenty-first Century this information is highly developed, and the high circulation time, the popularity of computer and the application of computer network technology, make a large number of ordinary people can have access to more knowledge. As a knowledge as the main functions of the body -- school, set up a high-quality goods curriculum website is very necessary things, it not only makes more people to get valuable educational information source, but also school to enhance their visibility, improve students'' self study ability, there is considerable help.

With the rapid development of Internet technology, the use of network aided teaching has become the development trend of the times, build high-quality goods curriculum website, as far as possible to improve the quality of teaching utilization, to achieve the training, promoting social and economic development will play a very important role. Can also guide the user active years of the study, to improve learning efficiency, more teaching both sides to provide a platform for the exchange of learning and writing.

In view of the above problems, design and development of the Innovation Park website system, this system mainly uses the JSP as a development language, the use of SqlServer as database management system, the development environment is MyEclipse, server using tomcat, developed a Web technology based on B/S structure based on online courseware publishing, online courseware video publishing, online examination integrated management system.



Key words: teaching management, WEB, JSP, B/S structure















目 录

摘 要 I

ABSTRACT II

第一章 绪论 1

1.1课题背景 1

1.2目的和意义 1

1.3开发工具及技术 1

1.3.1开发工具 1

1.3.2 JSP 2

1.3.3 JavaScript 3

1.3.4 Struts 2简介 3

1.3.5 Hibernate简介 4

1.4软硬件需求 4

第二章 需求分析 6

2.1需求调研 6

2.2可行性分析 6

2.2.1技术的可行性 6

2.2.2经济的可行性 6

2.2.3操作可行性 6

2.2.4法律的可行性 6

2.3系统用户用例图 7

2.3.1管理员用例图 7

2.3.2教师用例图 7

2.4功能模块需求分析 8

2.5设计的基本思想 9

2.6性能需求 9

2.6.1系统的安全性 9

2.6.2数据的完整性 10

2.7界面需求 10

第三章 系统分析与设计 11

3.1数据库的分析与设计 11

3.1.1数据库的概念结构设计 11

3.1.2数据库的逻辑结构设计 15

3.1.3数据库的连接原理 18

3.2中文乱码问题处理 19

第四章 系统功能实现 21

4.1系统登陆页面实现 21

4.2管理员功能模块 23

4.2.1学生信息管理 23

4.2.2教师信息管理 25

4.2.3测试题目管理 27

4.2.4竞赛获奖管理 29

4.2.5公告信息管理 31

4.2.6留言信息管理 33

4.2.7修改密码 35

4.2.8退出系统 35

4.3教师功能模块 35

4.3.1课件信息管理 35

4.3.2教学视频管理 37

4.3.3试题信息管理 38

4.4前台网站模块 40

4.4.1网站首面 40

4.4.2用户注册 41

4.4.3获奖信息查看 41

4.4.4教学课件查看 42

4.4.5教学视频查看 43

4.4.6考试试题查看 43

4.4.7学生在线自测 44

4.4.8系统留言板功能 45

第五章 系统测试 47

5.1系统测试目的与意义 47

5.2测试过程 47

5.2.1主页面的登录模块测试 47

5.3其他错误 48

结 论 49

参考文献 50

致 谢 51



第一章 绪论

1.1课题背景

随着互联网技术的飞速发展,利用网络进行辅助教学已经成为时代发展的必然趋势,建立精品课程网站,尽可能提高优质教学的利用率,对实现人才培养,促进社会经济发展都能起到十分重要的作用。也可以引导用户主动年该学习,提高学习效率,更为教学双方提供一个进行写作学习和交流的平台。

人口多而教育资源缺乏影响着我国受过高等教育的人在人口比例中所占的比重,这严重的制约了我国社会的发展与进步,这对于提高我国国民的文化科学素养十分不利。怎样才能让更多的人享有少部分人拥有的精品教育资源呢?对于这个问题,前人已经做了大量的研究。随着计算机技术以及计算机网络技术的飞速发展,人们终于找到了一条实现这种梦想的捷径,那就是寄希望于把各种教育资源移置到互联网上去,使得各地方的人都能够方便的获取到各种自己想要的知识,打破传统教育资源分配不均的限制,使得更多的人能够有机会获取到知识。

近年来,学校学生的数量逐渐增加,人工书写教学的方式已经不能满足如此庞大的数据。为了更好的适应信息时代的高效性,一个利用计算机来实现学校精品课程网站管理工作的系统将必然诞生。基于这一点,设计了一个精品课程网站,用来就学生精品课程网站进行管理,以便在最短的时间内,高效准确的完成整个教学程。

1.2目的和意义

与传统的教育相比,精品课程教学平台是一种全新的教育模式,它可以突破时间和空间的限制,让更多的学习者共享优秀的教育资源。精品课程教学平台既具有开放性、交互性、协作性和自主性等特点,有具有异步性、实时性、生动性、集成性和大容量等优势。因此在精品课程教学平台系统的建设中,单纯地构建各种功能单一的系统并不能完全满足精品课程教学平台建设的要求,只有那些对数据和信息进行有效组织,整合了多种业务,为用户提供个性化服务的系统才能充分地发挥精品课程教学平台的作用。

数据库原理精品课程是具有一流教师队伍、一流教学内容、一流教学方法、一流教材和一流教学管理等特点的示范性课程。建设精品课程的根本目的是利用现代化的教育信息技术手段将精品课程的相关内容上网并免费开放,以实现优质教学资源共享,提高高等学校教学质量和人才培养质量。

1.3开发工具及技术

1.3.1开发工具

此次设计主要采用MyEclipse加Tomcat后台服务器进行,设计过程中页面主要使用JSP技术完成,下面对MyEclipse、Tomcat和SqlServer数据库进行简要介绍。

1.3.1.1 MyEclipse

MyEclipse,是一个十分优秀的用于开发Java, J2EE的Eclipse集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSP, CSS, Javascript, SQL, Hibernate。

Tomcat

Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。可以这样认为,当在一台机器上配置好服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的

1.3.1.3 SqlServer

SqlServer使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性;支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统为多种编程语言提供了API支持多线程,充分利用CPU资源提供TCP/IP、ODBC和JDBC等多种数据库连接途径可以处理拥有上千万条记录的大型数据库。对于一般的个人使用者和中小型企业来说,SqlServer提供的功能已经绰绰有余,而且由于SqlServer是开放源码软件,因此可以大大降低总体拥有成本

1.3.2 JSP

JSP技术使用编写类XML的tags和scriptlets,来封装产生动态的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的。JSP将网页逻辑与和显示分离,支持可重用的基于组件的设计,使基于Web的的开发变得迅速和容易。

Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能JSP与Servlet一样,是在服务器端执行的,通常返回给客户端就是一个HTML文本,因此客户端只要有浏览器能浏览。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点JSP技术的

(1)一次编写,到处运行。除了系统之外,代码不用做任何更改。

(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/.net的局限性是显而易见的。

(3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。



(5)支持服务器端组件。web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能。JSP可以使用成熟的JAVA BEANS 组件来实现复杂商务功能。

内部对象说明request 客户端请求,此请求会包含来自GET/POST请求的参数 response 网页传回客户端的响应pageContext 网页的属性是在这里管理 session 与请求有关的会话 application servlet正在执行的内容out 用来传送响应的输出流 config 代码片段配置对象page JSP网页本身 exception 针对错误网页,未捕捉的例外



JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观、模块化和可重复使用的方式进行程序开发。在HTML基础上,使用Javascript可以开发交互式Web网页。Javascript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。在本系统中很多地方使用了javascript技术,比如说,检验用户输入数据的有效性,是否重复,是否为空等等。

1.3.4 Struts 2简介

Struts最早是作为Apache Jakarta项目的组成部分问世运作。项目的创立者希望通过对该项目的研究,改进和提高Java Server Pages、Servlet、标签库以及面向对象的技术水准。它的目的是为了减少在运用MVC设计模型来开发Web应用的时间。

使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。Struts是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2002年3月成为ASF的顶级项目。它通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-View-Controller〔MVC〕设计模式的应用框架〔Web Framework〕,是MVC经典设计模式中的一个经典产品。而Struts2则是Struts的升级版本。

它的优点在于:

Struts2基于MVC架构,框架结构清晰,开发流程一目了然,开发人员可以很好的掌控开发的过程;

使用OGNL进行参数传递;

强大的拦截器;

易于测试;

易于扩展的插件机制;

全局结果与声明式异常。

.3.5 Hibernate简介

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

Hibernate的核心接口一共有2个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这2个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。

硬件需求:

CPU:

内存: 512M以上

软件需求:

操作系统版本:Windows XP /vista/Win7

开发工具:MyEclipse 6.0.1

后台服务器:Apache Tomcat 6.0

开发语言:Java

浏览器:IE6.0



























































第二章 需求分析

2.1需求调研

在项目的开始是需求调研,并且走访了学校,经过一系列的调查与谈话,了解当前教学管理的流程。根据实际情况及调查结果,发现实现教学管理的网络化、信息化是十分有必要的,因此设计了创新园网站系统。

2.2可行性分析

开发任何一个系统,都会受到时间和资源上的限制。因此,在每一个项目开发之前,都要进行可行性分析,可以减少项目的开发风险,避免人力、物力和财力的浪费。下面就技术、经济、操作和法律四个方面来介绍。

2.2.1技术的可行性

本系统开发工具是MyEclipse和SqlServer数据库,开发语言是Java,主要使用了J2EE的技术,java是一种面向对象编程语言,简单易学而且灵活方便。大三时就学习了java课程,大四期间也系统的了解了J2EE的知识,创新园网站系统总体上开发难度不高,数据库的设计和操作是本系统设计的核心。在大学期间学习过软件工程,软件测试,UML统一建模语言等课程,每个学期也会完成对应的课程设计,具备一定的系统分析、设计和测试能力。因此,完成系统实现在技术上完全具有可行性。

2.2.2经济的可行性

如今是信息化时代,信息化管理可以使教学管理工作更加系统化、快速化、全面化。这样可以为企业带来较高的工作效益和经济效益,本系统对计算机配置的要求不高,企业机房更换下来的低配置电脑都可以完全满足需要,再者,企业在管理工作上的高效率和便捷性远远超过了开发本系统的成本,所以在经济上具有完全的可行性。

2.2.3操作可行性

本系统操作简单,输入信息页面大多数都是下拉框的选择形式,在某些页面,信息可以自动生成,无需输入,时间的输入也是用的日历控件,操作简便,对操作人员的要求很低,只需对WINDOWS操作熟练,加之对本系统的操作稍加培训即可工作,而且本系统可视性非常好,所以在技术上不会有很大难度。

2.2.4法律的可行性

本创新园网站系统是自行开发的管理系统,是很有实际意义的系统,开发环境软件和使用的数据库都是开源代码,开发这个系统不同于开发普通的系统软件,不存在侵权等问题,即法律上是可行的。

综上所述,开发一个创新园网站系统与原有的教学管理方式相比具有速度更快,操作更准确,节省开支等有利之处,因此,建立一个创新园网站系统是必要可行的。

2.3系统用户用例图

2.3.1管理员用例图

管理员是系统的核心用户,涉及到六大功能模块,管理员对系统的所有用户有着操作的权限。



图2.1 管理员用例图

2.3.2教师用例图

教师用户涉及到三大功能模块,教师对系统的课件、教学视频有着操作的权限。



图2.2 教师用例图

2.4功能模块需求分析

本系统最大的特点是使用操作简单、友好的提示信息。本系统将实现以下基本功能:

(1) 系统具有简洁大方的页面,使用简便,友好的错误操作提示

(2) 管理员用户具有系统信息管理、班级信息管理理

(3) 具有较强的安全性,避免用户的恶意操作

管理员功能模块图说明:

(1) 教师信息管理模块:在该模块中定义了教师信息的管理,其功能包括教师信息的录入、查询、删除等操作。

(2) 学生信息管理模块:在该模块中定义了学生信息的管理,其功能包括学生信息的录入、查询、删除等操作。

(3) 测试题目信息管理模块:在该模块中定义了测试题目信息的管理,其功能包括测试题目信息的录入、查询、删除等操作。

(4) 获奖信息管理模块:在该模块中定义了获奖信息的管理,其功能包括获奖信息的录入、查询、删除等操作。

(5) 公告信息管理模块:在该模块中定义了公告信息的管理,其功能包括公告信息的录入、查询、删除等操作。

(6) 留言信息管理模块:在该模块中定义了留言信息的管理,其功能包括留言信息的查询、删除等操作。



图2.3 管理员用户功能模块图

教师功能模块图说明:

(1) 课件信息管理模块:在该模块中定义了课件信息的管理,其功能包括课件信息的录入、查询、删除等操作。

(2) 教学视频信息管理模块:在该模块中定义了教学视频信息的管理,其功能包括教学视频信息的录入、查询、删除等操作。

(3) 试题信息管理模块:在该模块中定义了试题信息的管理,其功能包括试题信息的录入、查询、删除等操作。



图2.4 教师用户功能模块图

2.5设计的基本思想

设计思想遵循以下几点:

1. 采用B/S模式进行开发,其优点是后台与前台处理层次分明,而且符合众多已经习惯网页方式的用户。

2. 采用面向对象的开发与设计理念。运用面向对象技术的前提是对整体系统的高度和准确抽象,通过它可以保证系统良好的框架,进而带来产品较强的稳定性和运行效率。

采用模块化设计。模块化设计要求将整个系统划分成基于小的模块,有利于代码的重载,简化设计和实现过程。

简单方便的系统界面。设计简单友好的系统界面,方便用户较快的适应系统的操作。



6.设计既要突出重点,又要细致周到。要符合设计需求,在有可能改进的地方进行扩充,使系统更适应用户的需要。



2.6.1系统的安全性

创新园网站系统在管理权限上要严格进行控制,具体要求如下:

想登录创新园网站系统进行操作,必须有操作权限,没有权限的用户不能通过任何方式登录系统查看系统的任何信息和数据,以确保系统的严密性和安全性。

2.6.2数据的完整性

1.各种记录信息的完整性,信息记录内容不能为空

2.各种数据间相互联系的正确性

3.相同数据在不同记录中的一致性

2.7界面需求

界面设计目前已经成为评价软件质量的一条重要指标,一个好的用户界面可以增加用户使用系统的信心和兴趣,提高工作效率,JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。

1.输出设计

输出是由计算机对输入的原始信息进行加工处理,形成高质量的有效信息,并使之具有一定的格式,提供管理者使用,这是输出设计的主要职责和目标。

系统设计的过程正好和实施过程相反,并不是从输入设计到输出设计,而是从输出设计到输入设计,这是因为输出表格直接与使用者相联系,设计的出发点应当是保证输出表格方便地为使用者服务,正确及时反映和组成用于各部门的有用信息。输出设计的原则是考虑既要全面反映不同管理层的各项需要,又要言简意赅,不要将用户需要和不需要的都提供给用户。

2.输入设计

输入数据的收集和录入是比较费事的,需要大量的人力和一定设备,并且容易出错。如果输入系统的数据有错误,则处理后的输出将扩大这些错误,因此输入数据的正确性对于整个系统质量的好坏是具有决定性意义的。

输入设计的原则有如下几点:

1)输入量应保持在能满足处理要求的最低限度。设计中可采用设置字段初值,下拉式数据窗口等方式尽量减少用户键盘输入量。输入量越少,错误率就越少,数据准备时间也减少。

2)输入的准备及输入过程应尽量容易进行,从而减少错误的发生。

3)应尽量早对输入数据进行检查(尽量接近原数据发生点),以便使错误及时得到更正。

4)输入数据尽早地用其处理所需的形式被记录,以避免数据由一种介质转移到另一种介质时需要转录而可能发生的错误



第三章 系统分析与设计

3.1数据库的分析与设计

计算机信息系统以数据库为核心,在数据库管理系统的支持下,进行信息的收集、整理、存储、检索、更新、加工、统计和传播等操作。数据库已经成为现在信息系统等计算机系统的基础与核心部分。数据库设计的好坏直接影响到整个系统的质量和效率。

数据库的设计一般经过规划。需求分析、概念设计、逻辑设计、物理设计5个步骤。

3.1.1数据库的概念结构设计

概念设计是指在数据分析的基础上自底向上的建立整个系统的数据库概念结构,从用户的角度进行视图设计,然后将视图集成,最后对集成的结构分析优化得到最后结果。

数据库的概念结构设计采用实体—联系(E-R)模型设计方法。E-R模型法的组成元素有:实体、属性、联系,E-R模型用E-R图表示,是提示用户工作环境中所涉及的事物,属性则是对实体特性的描述。

概念设计的目标是产生反映企业组织信息要求的数据库概念结构,即概念模式。概念模式是独立于数据库逻辑结构,独立于支持数据库的DBMS,不依赖于计算机系统的,

根据以上对数据库的需求分析,并结合系统概念模型的特点及建立方法,建立E-R模型图。















(1)学生信息实体E-R图如图3.1所示:



图3.1 学生信息实体E-R图

(2)教师信息实体E-R图如图3.2所示



图3.2 教师信息实体E-R图

(3)测试题目信息E-R图如图3.3所示



图3.3 测试题目信息实体E-R图

(4)获奖信息E-R图如图3.4所示



图3.4 获奖信息实体E-R图

(5)课件信息E-R图如图3.5所示



图3.5 课件信息实体E-R图

(6)视频信息E-R图如图3.6所示



图3.6 视频信息实体E-R图

(7)试题信息E-R图如图3.7所示



图3.7 试题信息实体E-R图

(8)公告信息E-R图如图3.8所示



图3.8 公告信息实体E-R图

(9)留言信息E-R图如图3.9所示



图3.9 留言信息实体E-R图

(10)管理员信息E-R图如图3.10所示



图3.10 管理员信息实体E-R图

3.1.2数据库的逻辑结构设计

我们知道,数据库概念模型独立于任何特定的数据库管理系统,因此,需要根据具体使用的数据库管理系统的特点进行转换。即转化为按计算机观点处理的逻辑关系模型,E-R模型向关系数据库模型转换应遵循下列原则:

每一个实体要转换成一个关系

所有的主键必须定义非空(NOT NULL)

对于二元联系应按照一对多、弱对实、一对一、多对多等联系来定义外键。

根据E-R模型,创新园网站系统建立了以下逻辑数据结构,下面是各数据表的详细说明。

(1)学生信息表主要是记录了学生基本信息。表结构如表3.1所示。

表3.1学生信息表(t_stu)

列名 数据类型 长度 允许空 是否主键 说明 stu_id int 4 否 是 编号 stu_xuehao varchar 50 否 否 学号 stu_realname varchar 50 否 否 姓名 stu_sex varchar 50 否 否 性别 stu_age varchar 50 否 否 年龄 login_pw varchar 50 否 否 登录密码 zhuangtai varchar 50 否 否 审核状态 (2)教师信息表主要是记录了教师的基本信息,表结构如图3.2所示。

表3.2教师信息表(t_tea)

列名 数据类型 长度 允许空 是否主键 说明 tea_id int 4 否 是 编号 tea_bianhao varchar 50 否 否 教师号 tea_realname varchar 50 否 否 姓名 tea_sex varchar 50 否 否 性别 tea_age varchar 50 否 否 年龄 login_name varchar 50 否 否 登录名 login_pw varchar 50 否 否 登录密码 (3)测试题目信息表主要是记录了测试题目的基本信息,表结构如图3.3所示。

表3.3测试题目信息表(t_timu)

列名 数据类型 长度 允许空 是否主键 说明 id int 4 否 是 编号 name varchar 50 否 否 名称 xuanxianga varchar 50 否 否 选项a xuanxiangb varchar 50 否 否 选项b xuanxiangc varchar 50 否 否 选项c xuanxiangd varchar 50 否 否 选项d daan varchar 50 否 否 答案 fenshu varchar 50 否 否 分数 (4)竞赛获奖信息表主要是记录了竞赛获奖的基本信息,表结构如图3.4所示。

表3.4竞赛获奖信息表(t_jingsai)

列名 数据类型 长度 允许空 是否主键 说明 id int 4 否 是 编号 biaoti varchar 50 否 否 标题 neirong varchar 50 否 否 内容 shijian varchar 50 否 否 发布时间 (5)课件信息表主要是记录了课件的基本信息,表结构如图3.5所示。

表3.5课件信息表(t_doc)

列名 数据类型 长度 允许空 是否主键 说明 id int 4 否 是 编号 mingcheng varchar 50 否 否 课件标题 fujian varchar 50 否 否 附件路径 fujianyuanshiming varchar 50 否 否 附件原始名 shijian varchar 50 否 否 发布时间 (6)视频信息表主要是记录了视频的基本信息,表结构如图3.6所示。

表3.6视频信息表(t_shipin)

列名 数据类型 长度 允许空 是否主键 说明 shipin_id int 4 否 是 编号 shipin_name varchar 50 否 否 视频名称 shipin_jianjie varchar 50 否 否 视频简介 fujian varchar 50 否 否 附件路径 fujianyuanshiming varchar 50 否 否 附件原始名 shijian varchar 50 否 否 发布时间 (7)试题信息表主要是记录了试题的基本信息,表结构如图3.7所示。

表3.7试题信息表(t_shiti)

列名 数据类型 长度 允许空 是否主键 说明 id int 4 否 是 编号 mingcheng varchar 50 否 否 试题标题 fujian varchar 50 否 否 附件路径 fujianyuanshiming varchar 50 否 否 附件原始名 shijian varchar 50 否 否 发布时间 (8)公告信息表主要是记录了公告的基本信息,表结构如图3.8所示。

表3.8公告信息表(t_gonggao)

列名 数据类型 长度 允许空 是否主键 说明 id int 4 否 是 编号 title varchar 50 否 否 标题 content varchar 5000 否 否 内容 shijian varchar 50 否 否 发布时间 (9)留言信息表主要是记录了留言的基本信息,表结构如图3.9所示。

表3.9留言信息表(t_liuyan)

列名 数据类型 长度 允许空 是否主键 说明 id int 4 否 是 编号 title varchar 50 否 否 标题 content varchar 5000 否 否 内容 shijian varchar 50 否 否 发布时间 user_id Varchar 50 否 否 发布人 (10)管理员信息表主要记录的管理员的账号信息,包括用户名和密码,表结构如表3.10所示。

表3.10管理员信息表(t_admin)

列名 数据类型 长度 允许空 是否主键 说明 userId int 4 否 是 编号 userName varchar 50 否 否 用户名 userPw varchar 50 否 否 密码 3.1.3数据库的连接原理

本系统采用Hibernate对数据库进行管理。Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了轻量级的对象封装,使 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。它不仅提供了从 Java 类到数据表之间的映射,也提供了数据查询和恢复机制。相对于使用 JDBC 和 SQL 来手工操作数据库,Hibernate 可以大大减少操作数据库的工作量。 另外 Hibernate 可以利用代理模式来简化载入类的过程,这将大大减少利用 Hibernate QL 从数据库提取数据的代码的编写量,从而节约开发时间和开发成本 Hibernate 可以和多种Web 服务器或者应用服务器良好集成,如今已经支持几乎所有的流行的数据库服务器。Hibernate 技术本质上是一个提供数据库服务的中间件。它的架构如图所示:

图3.5Hibernatre架构图

图显示了 Hibernate 的工作原理,它是利用数据库以及其他一些配置文件如 Hibernate .properties ,XML Mapping 等来为应用程序提供数据持久化服务的。

Hibernate 具有很大的灵活性,但同时它的体系结构比较复杂,提供了好几种不同的运行方式。在轻型体系中,应用程序提供 JDBC 连接,并且自行管理事务,这种方式使用了 Hibernate 的一个最小子集;在全面解决体系中,对于应用程序来说,所有底层的 JDBC/JTA API 都被抽象了,Hibernate 会替你照管所有的细节。



在程序中经常会遇到中文乱码的情况,如果手动的在servlet和jsp页面进行设置,相当麻烦。因此,在程序的开始就写了一个过滤器SetCharacterEncodingFilter。

在web.xml中配置:



SetCharacterEncodingFilter

myweb.util.filter.SetCharacterEncodingFilter



encoding

gb2312







SetCharacterEncodingFilter

///表示工程下所有的页面都会有此过滤器的处理



对应的SetCharacterEncodingFilter.java文件中的重要代码,在初始化init()方法中定义:

public void init(FilterConfig filterConfig) throws ServletException {

this.filterConfig = filterConfig;

this.encoding = filterConfig.getInitParameter("encoding");

String value = filterConfig.getInitParameter("ignore");

}

在工具包util包中同样定义了DataFormate类来处理字符转换:

public static String toUni(String gbStr){

String uniStr = ""; /把字符串转换成uincode编码/

if(gbStr == null){

gbStr = "";

}

try{

byte[] tempByte = gbStr.getBytes("GB2312");

uniStr = new String(tempByte,"ISO8859_1");

}catch(Exception ex){

}

return uniStr;

}

public static String toUtf8String(String s) {

StringBuffer sb = new StringBuffer();

for (int i = 0; i < s.length(); i++) {

char c = s.charAt(i);

if (c >= 0 && c <= 255) {

sb.append(c);

}

else {

byte[] b;

try {

b = Character.toString(c).getBytes("utf-8");

}catch (Exception ex) {

System.out.println(ex);

b = new byte[0];

}

for (int j = 0; j < b.length; j++) {

int k = b[j];

if (k < 0) {

k += 256;

}

sb.append("%" + Integer.toHexString(k).

toUpperCase()); } }

return sb.toString(); }

第四章 系统功能实现

在管理信息系统的生命周期中,经过了需求分析、系统设计等阶段之后,便开始了系统实施阶段。在系统分析和设计阶段,系统开发工作主要是集中在逻辑、功能和技术设计上,系统实施阶段要继承此前面各个阶段的工作成果,将技术设计转化为物理实现,因此系统实施的成果是系统分析和设计阶段的结晶。

4.1系统登陆页面实现

1.描述:为了保证系统的安全性,要先使用本系统必须先登陆到系统中,用户需要正确的账号和密码登录本系统。

2.程序运行效果图如图4.1所示:



图4.1 系统登陆页面设计

3.在登陆页面输入用户名和密码以,点击提交按钮,跳转到登陆的service中,在该service中会对用户名,密码,验证码进行判断,验证通过进入对应的页面,loginservice关键代码:

public String login(String userName,String userPw,int userType)

{

String result="no";

if(userType==0)//系统管理员登陆

{

String sql="from TAdmin where userName=? and userPw=?";

Object[] con={userName.trim(),userPw.trim()};

List adminList=adminDAO.getHibernateTemplate().find(sql,con);

if(adminList.size()==0)

{

result="no";

}

else

{

WebContext ctx = WebContextFactory.get();

HttpSession session=ctx.getSession();

TAdmin admin=(TAdmin)adminList.get(0);

session.setAttribute("userType", 0);

session.setAttribute("admin", admin);

result="yes";

}

}

if(userType==1)//老师登陆

{

String sql="from TTea where loginName=? and loginPw=? and del=''no''";

Object[] con={userName.trim(),userPw.trim()};

List teaList=teaDAO.getHibernateTemplate().find(sql,con);

if(teaList.size()==0)

{

result="no";

}

else

{

WebContext ctx = WebContextFactory.get();

HttpSession session=ctx.getSession();

TTea tea=(TTea) teaList.get(0);

session.setAttribute("userType", 1);

session.setAttribute("tea", tea);

result="yes";

}

}

if(userType==2)//学生登陆

{

String sql="from TStu where stuXuehao=? and loginPw=? and del=''no'' and zhuangtai=''b''";

Object[] con={userName.trim(),userPw.trim()};

List stuList=stuDAO.getHibernateTemplate().find(sql,con);

if(stuList.size()==0)

{

result="no";

}

else

{

WebContext ctx = WebContextFactory.get();

HttpSession session=ctx.getSession();

TStu stu=(TStu) stuList.get(0);

session.setAttribute("userType", 2);

session.setAttribute("stu", stu);

result="yes";

}

}

return result;

}

4.2管理员功能模块

1.描述:系统主页面:左方页面展示了管理员可操作的六大功能,进入相关的管理页面可以链接到子菜单,并且高亮显示,每个管理模块下面都有相应的子菜单。

2.程序运行效果图如图4.2所示:



图4.2管理员主页面

在每个jsp页面将会对相关用户进行拦截操作,这样可以提高安全性,防止用户不经过登陆页面而进入任何子菜单页面:

if(session.getAttribute("user")==null)

{

out.print("");



4.2.1学生信息管理

4.2.1.1学生信息管理

1.描述:管理员点击左侧的菜单“学生信息管理”,页面跳转到学生信息管理界面,调用后台的action类查询出所有的学生信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出学生信息。

2.程序效果图如下图4.3所示



图4.3 学生信息管理页面

学生信息管理关键代码:

public String stuMana()

{

List stuList=stuDAO.getHibernateTemplate().find("from TStu where del=''no''");

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("stuList", stuList);

return ActionSupport.SUCCESS;

}

public String stuShenhe()

{

TStu stu=stuDAO.findById(stuId);

stu.setZhuangtai("b");

stuDAO.attachDirty(stu);

this.setMessage("审核完毕");

this.setPath("stuMana.action");

return "succeed";

}

public String stuDel()

{

TStu stu=stuDAO.findById(stuId);

stu.setDel("yes");

stuDAO.attachDirty(stu);

this.setMessage("删除成功");

this.setPath("stuMana.action");

return "succeed";

}

4.2.1.2学生信息审核

1.描述:先是点击学生信息管理,页面跳转到学生信息管理界面,浏览所有的学生信息,点击要审核的学生信息,点击弹出的确定对话框,即可审核该学生信息。

2.程序效果图如下图4.4所示



图4.4 学生信息审核页面

4.2.1.3学生信息删除

1.描述:先是点击学生信息管理,页面跳转到学生信息管理界面,浏览所有的学生信息,点击要删除的学生信息,点击弹出的确定对话框,即可删除该学生信息。

2.程序效果图如下图4.5所示



图4.5 学生信息删除页面

4.2.2教师信息管理

4.2.2.1教师信息录入

1.描述:管理员输入教师相关正确信息后点击录入按钮,如果是没有输入完整的教师信息,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法onsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。

2.程序效果图如下图4.6所示:



图4.6 教师信息录入

4.2.2.2教师信息管理

1.描述:管理员点击左侧的菜单“教师信息管理”,页面跳转到教师信息管理界面,调用后台的action类查询出所有的教师信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出教师信息。

2.程序效果图如下图4.7所示



图4.7 教师信息管理页面

教师信息管理关键代码:

public String teaAdd()

{

TTea tea=new TTea();

tea.setTeaBianhao(teaBianhao);

tea.setLoginName(loginName);

tea.setLoginPw(loginPw);

tea.setTeaRealname(teaRealname);

tea.setTeaSex(teaSex);

tea.setTeaAge(teaAge);

tea.setDel("no");

teaDAO.save(tea);

this.setMessage("操作成功");

this.setPath("teaMana.action");

return "succeed";

}

public String teaMana()

{

String sql="from TTea where del=''no''";

List teaList=teaDAO.getHibernateTemplate().find(sql);

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("teaList", teaList);

return ActionSupport.SUCCESS;

}

public String teaDel()

{

TTea tea=teaDAO.findById(teaId);

tea.setDel("yes");

teaDAO.attachDirty(tea);

this.setMessage("操作成功");

this.setPath("teaMana.action");

return "succeed";

}

4.2.2.3教师信息删除

1.描述:先是点击教师信息管理,页面跳转到教师信息管理界面,浏览所有的教师信息,点击要删除的教师信息,点击弹出的确定对话框,即可删除该教师信息。

2.程序效果图如下图4.8所示



图4.8 教师信息删除页面

4.2.3测试题目管理

4.2.3.1测试题目录入

1.描述:管理员输入测试题目相关正确信息后点击录入按钮,如果是没有输入完整的测试题目信息,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法onsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。

2.程序效果图如下图4.9所示:



图4.9 测试题目录入

4.2.3.2测试题目管理

1.描述:管理员点击左侧的菜单“测试题目管理”,页面跳转到测试题目管理界面,调用后台的action类查询出所有的测试题目信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出测试题目信息。

2.程序效果图如下图4.10所示



图4.10 测试题目管理页面

测试题目管理关键代码:

public String timuAdd()

{

TTimu timu=new TTimu();

timu.setName(name);

timu.setXuanxianga(xuanxianga);

timu.setXuanxiangb(xuanxiangb);

timu.setXuanxiangc(xuanxiangc);

timu.setXuanxiangd(xuanxiangd);

timu.setDaan(daan);

timu.setFenshu(fenshu);

timu.setDel("no");

timuDAO.save(timu);

this.setMessage("操作成功");

this.setPath("timuMana.action");

return "succeed";

}

public String timuDel()

{

TTimu timu=timuDAO.findById(id);

timu.setDel("yes");

timuDAO.attachDirty(timu);

this.setMessage("删除成功");

this.setPath("timuMana.action");

return "succeed";

}

public String timuMana()

{

String sql="from TTimu where del=''no''";

List timuList=timuDAO.getHibernateTemplate().find(sql);

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("timuList", timuList);

return ActionSupport.SUCCESS;

}

4.2.3.3测试题目删除

1.描述:先是点击测试题目信息管理,页面跳转到测试题目管理界面,浏览所有的测试题目信息,点击要删除的测试题目信息,点击弹出的确定对话框,即可删除该测试题目信息。

4.2.4竞赛获奖管理

4.2.4.1竞赛获奖录入

1.描述:管理员输入竞赛获奖相关正确信息后点击录入按钮,如果是没有输入完整的竞赛获奖信息,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法onsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。

2.程序效果图如下图4.11所示:



图4.11 竞赛获奖录入

4.2.4.2竞赛获奖管理

1.描述:管理员点击左侧的菜单“竞赛获奖管理”,页面跳转到竞赛获奖管理界面,调用后台的action类查询出所有的竞赛获奖信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出竞赛获奖信息。

2.程序效果图如下图4.12所示



图4.12 竞赛获奖管理页面

竞赛获奖管理关键代码:

public String jingsaiAdd()

{

TJingsai jingsai=new TJingsai();

jingsai.setBiaoti(biaoti);

jingsai.setNeirong(neirong);

jingsai.setShijian(shijian);

jingsaiDAO.save(jingsai);

this.setMessage("操作成功");

this.setPath("jingsaiMana.action");

return "succeed";

}

public String jingsaiDel()

{

TJingsai jingsai=jingsaiDAO.findById(id);

jingsaiDAO.delete(jingsai);

this.setMessage("删除成功");

this.setPath("jingsaiMana.action");

return "succeed";

}

public String jingsaiMana()

{

String sql="from TJingsai";

List jingsaiList=jingsaiDAO.getHibernateTemplate().find(sql);

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("jingsaiList", jingsaiList);

return ActionSupport.SUCCESS;

}

4.2.4.3竞赛获奖删除

1.描述:先是点击竞赛获奖信息管理,页面跳转到竞赛获奖管理界面,浏览所有的竞赛获奖信息,点击要删除的竞赛获奖信息,点击弹出的确定对话框,即可删除该竞赛获奖信息。

2.程序效果图如下图4.13所示



图4.13 竞赛获奖删除页面

4.2.5公告信息管理

4.2.5.1公告信息录入

1.描述:管理员输入公告相关正确信息后点击录入按钮,如果是没有输入完整的公告信息,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法onsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。

2.程序效果图如下图4.14所示:



图4.14 公告信息录入

4.2.5.2公告信息管理

1.描述:管理员点击左侧的菜单“公告信息管理”,页面跳转到公告信息管理界面,调用后台的action类查询出所有的公告信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出公告信息。

2.程序效果图如下图4.15所示



图4.15 公告信息管理页面

公告信息管理关键代码:

public String gonggaoAdd()

{

TGonggao gonggao=new TGonggao();

gonggao.setGonggaoTitle(gonggaoTitle);

gonggao.setGonggaoContent(gonggaoContent);

gonggao.setGonggaoData(new Date().toLocaleString());

gonggaoDAO.save(gonggao);

this.setMessage("公告添加完毕");

this.setPath("gonggaoMana.action");

return "succeed";

}

public String gonggaoMana()

{

List gonggaoList =gonggaoDAO.findAll();

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("gonggaoList", gonggaoList);

return ActionSupport.SUCCESS;

}

public String gonggaoDel()

{

TGonggao gonggao=gonggaoDAO.findById(gonggaoId);

gonggaoDAO.delete(gonggao);

this.setMessage("公告删除完毕");

this.setPath("gonggaoMana.action");

return "succeed";

}

public String gonggaoDetail()

{

TGonggao gonggao=gonggaoDAO.findById(gonggaoId);

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("gonggao", gonggao);

return ActionSupport.SUCCESS;

}

4.2.5.3公告详细信息查看

1.描述:先是点击公告信息管理,页面跳转到公告信息管理界面,浏览所有的公告信息,点击要查看的公告信息,弹出公告信息详细信息界面。

2.程序效果图如下图4.16所示



图4.16 公告信息详细信息页面

4.2.5.4公告信息删除

1.描述:先是点击公告信息管理,页面跳转到公告信息管理界面,浏览所有的公告信息,点击要删除的公告信息,弹出的确定对话框,即可删除该公告信息。

4.2.6留言信息管理

4.2.6.1留言信息管理

1.描述:管理员点击左侧的菜单“留言信息管理管理

2.程序效果图如下图4.17所示



图4.17 留言信息管理

留言信息管理关键代码:

public String liuyanMana()

{

List liuyanList=liuyanDAO.findAll();

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("liuyanList", liuyanList);

return ActionSupport.SUCCESS;

}

public String liuyanAdd()

{

TLiuyan liuyan=new TLiuyan();

liuyan.setLiuyanContent(liuyanContent);

liuyan.setLiuyanTitle(liuyanTitle);

liuyan.setLiuyanDate(new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()));

liuyanDAO.save(liuyan);

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("msg", "留言完毕");

return "msg";

}

public String liuyanDel()

{

TLiuyan liuyan=liuyanDAO.findById(liuyanId);

liuyanDAO.delete(liuyan);

this.setMessage("留言删除成功");

this.setPath("liuyanMana.action");

return "succeed";

}

4.2.6.2留言信息删除

1.描述:先是点击留言信息管理,页面跳转到留言信息管理界面,浏览所有的留言信息,点击要删除的留言信息,即可删除该留言信息。

4.2.7修改密码

1.描述:输入用户名和用户的原有密码,输入新密码以后点击修改按钮即可修改密码成功。

2.程序效果图如图4.21所示:



图4.18修改密码

4.2.8退出系统

1.描述:点此按钮回到系统的主页面。

2.关键代码:主要是通过javascript语句来实现, item_word[8][4]="退出系统";

item_link[8][4]="javascript:window.open(''../index.jsp'',''_self'')";

4.3.1课件信息管理

4.3.1.1课件信息录入

1.描述:教师输入课件信息相关正确信息后点击录入按钮,如果是没有输入完整的课件信息,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法onsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。

2.程序效果图如下图4.19所示:



图4.19 课件信息录入

4.3.1.2课件信息管理

1.描述:教师点击左侧的菜单“课件信息管理”,页面跳转到课件信息管理界面,调用后台的action类查询出所有的课件信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出课件信息。

2.程序效果图如下图4.20所示



图4.20 课件信息管理页面

课件信息管理关键代码:

public String docAdd()

{

TDoc doc=new TDoc();

doc.setMingcheng(mingcheng);

doc.setFujian(fujian);

doc.setFujianYuanshiming(fujianYuanshiming);

doc.setShijian(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));

doc.setDel("no");

docDAO.save(doc);

this.setMessage("操作成功");

this.setPath("docMana.action");

return "succeed";

}

public String docDel()

{

TDoc doc=docDAO.findById(id);

doc.setDel("yes");

docDAO.attachDirty(doc);

this.setMessage("删除成功");

this.setPath("docMana.action");

return "succeed";

}

public String docMana()

{

String sql="from TDoc where del=''no''";

List docList=docDAO.getHibernateTemplate().find(sql);

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("docList", docList);

return ActionSupport.SUCCESS;

}

4.3.1.3课件信息删除

1.描述:先是点击课件信息管理,页面跳转到课件信息管理界面,浏览所有的课件信息,点击要删除的课件信息,点击弹出的确定对话框,即可删除该课件信息。

4.3.2教学视频管理

4.3.2.1教学视频录入

1.描述:教师输入教学视频相关正确信息后点击录入按钮,如果是没有输入完整的教学视频信息,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法onsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。

2.程序效果图如下图4.21所示:



图4.21 教学视频录入

4.3.2.2教学视频管理

1.描述:教师点击左侧的菜单“教学视频管理”,页面跳转到教学视频管理界面,调用后台的action类查询出所有的教学视频信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示教学视频信息。

2.程序效果图如下图4.22所示



图4.22 教学视频管理页面

教学视频管理关键代码:

public String shipinAdd()

{

TShipin shipin=new TShipin();

shipin.setShipinName(shipinName);

shipin.setFujian(fujian);

shipin.setShipinJianjie(shipinJianjie);

shipin.setFujianYuanshiming(fujianYuanshiming);

shipin.setShijian(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));

shipin.setDel("no");

shipinDAO.save(shipin);

this.setMessage("操作成功");

this.setPath("shipinMana.action");

return "succeed";

}

public String shipinMana()

{

String sql="from TShipin where del=''no''";

List shipinList=shipinDAO.getHibernateTemplate().find(sql);

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("shipinList", shipinList);

return ActionSupport.SUCCESS;

}

public String shipinDel()

{

TShipin shipin=shipinDAO.findById(shipinId);

shipin.setDel("yes");

shipinDAO.attachDirty(shipin);

this.setMessage("操作成功");

this.setPath("shipinMana.action");

return "succeed";

}

4.3.2.3教学视频删除

1.描述:先是点击教学视频信息管理,页面跳转到教学视频管理界面,浏览所有的教学视频信息,点击要删除的教学视频信息,点击弹出的确定对话框,即可删除该教学视频信息。

4.3.3试题信息管理

4.3.3.1试题信息录入

1.描述:教师输入试题信息相关正确信息后点击录入按钮,如果是没有输入完整的试题信息,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法onsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。

2.程序效果图如下图4.23所示:



图4.23 试题信息录入

4.3.3.2试题信息管理

1.描述:教师点击左侧的菜单“试题信息管理”,页面跳转到试题信息管理界面,调用后台的action类查询出所有的试题信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出试题信息。

2.程序效果图如下图4.24所示



图4.24 试题信息管理页面

试题信息管理关键代码:

public String shitiAdd()

{

TShiti shiti=new TShiti();

shiti.setMingcheng(mingcheng);

shiti.setFujian(fujian);

shiti.setFujianYuanshiming(fujianYuanshiming);

shiti.setShijian(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));

shiti.setDel("no");

shitiDAO.save(shiti);

this.setMessage("操作成功");

this.setPath("shitiMana.action");

return "succeed";

}

public String shitiDel()

{

TShiti shiti=shitiDAO.findById(id);

shiti.setDel("yes");

shitiDAO.attachDirty(shiti);

this.setMessage("删除成功");

this.setPath("shitiMana.action");

return "succeed";

}

public String shitiMana()

{

String sql="from TShiti where del=''no''";

List shitiList=shitiDAO.getHibernateTemplate().find(sql);

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("shitiList", shitiList);

return ActionSupport.SUCCESS;

}

4.3.3.3试题信息删除

1.描述:先是点击试题信息管理,页面跳转到试题信息管理界面,浏览所有的试题信息,点击要删除的试题信息,点击弹出的确定对话框,即可删除该试题信息。

4.4前台网站模块

4.4.1网站首面

1.描述:创新园网站首页分面菜单与网站欢迎页面两部分组成。

2.程序效果图如下图4.25所示:



图4.25 网站首页

4.4.2用户注册

1.描述:新用户通过该模块实现网站注册功能的实现。

2.程序效果图如下图4.26所示:



图4.26 用户注册界面

用户注册关键代码

public String stuReg()

{

TStu stu=new TStu();

stu.setStuXuehao(stuXuehao);

stu.setStuRealname(stuRealname);

stu.setStuSex(stuSex);

stu.setStuAge(stuAge);

stu.setLoginPw(loginPw);

stu.setZhuangtai("a");

stu.setDel("no");

stuDAO.save(stu);

HttpServletRequest request=ServletActionContext.getRequest();

request.setAttribute("msg", "注册成功,等待管理员审核");

return "msg";

}

4.4.3获奖信息查看

1.描述:学生登录系统后,通过该模块实现获奖信息查看功能。

2.程序效果图如下图4.27所示:



图4.27获奖信息查看界面

获奖信息查看关键代码

public String jingsaiAll()

{

String sql="from TJingsai";

List jingsaiList=jingsaiDAO.getHibernateTemplate().find(sql);

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("jingsaiList", jingsaiList);

return ActionSupport.SUCCESS;

}

public String jingsaiDetailQian()

{

TJingsai jingsai=jingsaiDAO.findById(id);

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("jingsai", jingsai);

return ActionSupport.SUCCESS;

}

4.4.4教学课件查看

1.描述:学生登录系统后,通过该模块实现教学课件查看、下载功能。

2.程序效果图如下图4.28所示:



图4.28教学课件查看界面

教学课件查看关键代码:

public String docAll()

{

String sql="from TDoc where del=''no''";

List docList=docDAO.getHibernateTemplate().find(sql);

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("docList", docList);

return ActionSupport.SUCCESS;

}

public String docDetailQian()

{

TDoc doc=docDAO.findById(id);

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("doc", doc);

return ActionSupport.SUCCESS;

}

4.4.5教学视频查看

1.描述:学生登录系统后,通过该模块实现教学视频查看、播放、下载功能。

2.程序效果图如下图4.29所示:



图4.29教学视频查看界面

教学视频查看关键代码

public String shipinAll()

{

String sql="from TShipin where del=''no''";

List shipinList=shipinDAO.getHibernateTemplate().find(sql);

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("shipinList", shipinList);

return ActionSupport.SUCCESS;

}

public String shipinDetailQian()

{

TShipin shipin=shipinDAO.findById(shipinId);

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("shipin", shipin);

return ActionSupport.SUCCESS;

}

4.4.6考试试题查看

1.描述:学生登录系统后,通过该模块实现考试试题查看、下载功能。

2.程序效果图如下图4.30所示:



图4.30 考试试题查看界面

考试试题查看关键代码

public String shitiAll()

{

String sql="from TShiti where del=''no''";

List shitiList=shitiDAO.getHibernateTemplate().find(sql);

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("shitiList", shitiList);

return ActionSupport.SUCCESS;

}

public String shitiDetailQian()

{

TShiti shiti=shitiDAO.findById(id);

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("shiti", shiti);

return ActionSupport.SUCCESS;

}

4.4.7学生在线自测

1.描述:学生通过该模块实现在线自测考试的功能。

2.程序效果图如下图4.31所示:



图4.31 学生在线自测

学生在线自测关键代码

public String timuAll()

{

String sql="from TTimu where del=''no''";

List timuList=timuDAO.getHibernateTemplate().find(sql);

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("timuList", timuList);

return ActionSupport.SUCCESS;

}

public String ziciDafen()

{

HttpServletRequest request=ServletActionContext.getRequest();

int fenshu=0;

String timuIdList=request.getParameter("timuIdList");

String[] timuIdList1=timuIdList.split(",");

for(int i=0;i
{

String timuId=timuIdList1[i];

String timuDaan_user=request.getParameter(timuId);

String timuDaan=timuDAO.findById(Integer.parseInt(timuId)).getDaan();

if(timuDaan.equalsIgnoreCase(timuDaan_user))

{

fenshu+=timuDAO.findById(Integer.parseInt(timuId)).getFenshu();

}

}

this.setMessage("本次测试得分:"+fenshu);

this.setPath("index.action");

return "succeed";

}

4.4.8系统留言板功能

描述:注册用户通过该模板实现实时留言功能。

程序效果图如下图4.32所示:



图4.32 系统留言界面









































第五章 系统测试

5.1系统测试目的与意义

系统测试是管理信息系统开发周期中一个十分重要而漫长的的阶段。其重要性体现在他是保证系统质量与可靠性的最后关口,是对整个系统开发过程包括系统分析、系统设计和系统实现的最终审查。

系统测试的任务是尽可能彻底的检查出程序中的错误,提高软件系统的可靠性,其目的是检验系统“做得怎样”。这这阶段又可以分为三个步骤:模块测试,测试每个模块的程序是否正确;组装测试,测试模块之间的接口是否正确;确认测试,测试整个软件系统是否满足用户功能和性能的要求。测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。是基于系统整体需求说明书的黑盒测试,应覆盖系统随偶联合的部件,系统测试是正对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出需求规格不符合或与之矛盾的地方。

5.2测试过程

在测试之初,由于将数据库中的数据是随便输入,没有实用性,为了使系统更加完善,在系统测试的过程中,本系统将一开始编程随便输入的数据全部清理后,输入了一些有效的测试数据,这样可以更真实的反映系统的功能实现情况。

这样不断发现问题,经过反复的测试、调试,把问题一个个的解决,最终系统可以正常运行。

5.2.1主页面的登录模块测试

测试流程: 1.打开系统首页,输入错误的登录信息

2.登录

3.输入正确的登录信息

4.登录

5.测试结果



模块名称 测试用例 预期结果 实际结果 是否通过 登录模块 用户名:null 密码:null 弹出错误提示,请输入用户名 登陆失败,提示请输入用户名 通过 登录模块 用户名:m1

密码:null 弹出错误提示,请输入密码 失败,提示输入密码 通过 登录模块 用户名:m1

密码:1 弹出错误提示,用户名或者密码错误 登陆失败,提示用户名或者密码错误 通过 5.3其他错误

在程序设计实现的过程中不可避免的会产生各种难以预料的错误,如书写错误、传值类型不一致、参数传递问题等等。这些都需要通过细心的检测与不断的调试才能够排除。



图 5.4 由于servlet路径配置错误,运行时的提示





























结 论

本次毕业设计将我大学四年所学的软件工程理论知识用到了具体的实践中去,深化了理论知识,同时也锻炼了动手实践能力。在这段日子里,我查阅了管理信息系统建设的资料,翻阅了许多JSP的书籍,结合自己的经验,详细调查了学校中关于教学管理的相关流程,开发设计了这个创新园网站系统,虽然每个学期都会有相应课程的课程设计和实训来作为动手练习训练,不过在本次毕业设计具体的实践的时候还是遇到了很多小问题,比如说在jsp页面将输入框设为不可用是添加属性readonly=“true”,而我在实际编程中却错写成disable=“true”,这样直接导致了request对象取不到数据,调试了程序很久才发现request对象获得的返回值一直是空,之前一直以为是代码哪里出了问题,总是在查源程序的逻辑。这些虽然都是小问题,但是由于不细心在具体实践中却浪费了不少时间,看来平时还是要多多实践才是。

在系统的开发过程中,我运用到了B/S三层结构技术和自己在平时学习中掌握的一些技术,通过这些技术的实现,整个系统的性能得到了大大的提高。这些技术都在论文中做了比较详细的介绍系统还存在许多的缺陷和不足之处,比如很多细节上做的还不行,有些功能模块还应再加强。希望在以后的时间里,我可以把这些缺陷都弥补过来,进一步完善系统。

通过本次设计我也从中学到不少在企业在课堂上学不到的东西.通过实践我深刻的到软件开发的艰辛及问题解决后的喜悦,培养我独立思考问题的能力,同时也增强了我的理论联系实际的能力,自己以后工作奠定了基础。





















参考文献

[1] 张新曼. 精通JSP-WEB开发技术与典型应用

[3]邓子云.JSP网络编程从基础到实践[M].北京:电子工业出版社.

[4]朱涛江.SqlServer权威指南[M].中国电力出版社.2003.

[5]郝玉龙.JavaEE编程技术[M].北京:北京交通大学出版社.

[6] 赵增敏,《sql server 2000 实用教程(第 2 版),电子工业出版社,2008.9

[7] 李金勇,《SQL SERVER 2000 数据库技术与实训》北京理工大出版社,2008.11

[8] 周绪, 《sql server2000 中文版入门提高》清华大学出版社,2004.02

[9]朱涛江,《SqlServer权威指南》 ,中国电力出版社,2003

[10](美)Bruce Eckel著,陈昊鹏译

[11]李建中,王珊.《数据库系统原理(第2版)》电子工业出版社.2004.9

[12]张长富,黄中敏.JavaScript动态网页编程实例手册[M].北京:海洋出版社,2005:196-239

[]艾灵仙. .[J]. 科技信息-2008年16期

致 谢

本次设计历时个月。在本次毕业设计中,能够基本顺利的完成任务,是与付细楚老师的耐心指导分不开的。老师无论是在毕业设计过程中,还是在论文完成中都给予了我极大的帮助。同时,老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我匪浅。勤奋严谨的学态度也给我留下了极为深刻的印象。我从老师身上学到了很多东西。在理论上还是在实践中,我得到不少的提高,这对于我以后的工作和学习都有一种巨大的帮助,在此,特向老师表示由衷的感谢。

毕业设计的整个开发过程,我需求分析到具体功能实现,再到最终测试和维护的理解有了很大的进步,让我对系统开发有了更深层次的认识。现在我的动手能力和独立解决问题的能力得到了很大的锻炼和提高,这是收获。

最后,在整个开发过程中,我身边的同学给了我很多的建议,让我很快的确定了系统的业务逻辑。在次我衷心的向他们表示感谢。



日 期:





























基于S2SH的创新园网站



基于S2SH的创新园网站



IV









基于S2SH的创新园网站









实体间关系



属性



实体









献花(0)
+1
(本文系zy_360tsg原创)