基于JSP的在线学习网站 的设计与实现

欢迎添加微信互相交流学习哦!

二维码

项目源码:https://gitee.com/oklongmm/biye2

 

摘    要
本文采用自顶向下的结构化的系统分析方法,阐述了一个功能全面的在线学习网站的开发过程、操作流程及其一些核心的技术。本文首先进行了项目概述,简单介绍了项目开发的背景、项目开发的目的和项目开发的意义;接下来是系统规划阶段,通过实际的业务流程调研,分析了系统的组织结构,具体完成了在线学习网站的需求分析、可行性分析、现行业务流程分析,并通过对现行业务流程的优化,得出了系统的业务流程;之后是系统分析,具体完成了数据流分析和数据字典;系统设计阶段主要完成了功能模块的划分、数据库的设计和系统界面设计。该阶段对各个模块的功能进行了详细设计,形成了本系统的功能模块图,在此基础上选择了合适的开发模式;数据库的设计先进行了概念结构设计,之后进行了逻辑结构设计,最后完成了数据库表的设计。
根据前几个阶段的分析和设计,本系统在设计方面采用B/S模式,同时使用JSP技术进行基本页面的设计与功能实现,后台数据库选用SQLSERVER数据库。本系统的设计实施为在线学习网站的运行做基础,为在线学习网站提供良好的条件。
关键词:学习网站;在线学习;JSP;B/S

Abstract
This paper using the top-down structured system analysis method, this paper expounds the functions of a comprehensive course website development process, operation process and some of the core technology. This paper first on the description of project, introduced the project development background, the purpose of the project development and the significance of developing project; The next stage is system planning, through the actual business process of the investigation and research, and the analysis of system structure, specific completed quality course website needs analysis, feasibility analysis, the current business process analysis, and through to the current business process optimization, concludes that the system of business process,After the system analysis, specific completed the data flow analysis and data dictionary; System design phase is completed the function module and database design and system interface design. This phase of the function of each module of the detailed design, formed the system function module chart, on the basis of the choice of appropriate development mode; The first database design the concept structure design, on the logical structure after design, finally completed the design of database table
According to former several stages of the analysis and design, this system in the design on the B/S mode, use at the same time JSP technology of basic pages design and function realization, the backend database choose SQLSERVER database. This system design for assembly language implementation of the operation of the auxiliary JiaoXueWang do foundation, to provide auxiliary assembly language JiaoXueWang good conditions.

Key Words:Learning network; structural analysis; B/S

第1章 概述
1.1 课题背景
在21世纪这个信息高度发达,并且高速流通的时代,计算机的普及以及计算机网络技术的应用,让大量普通人能够有机会接触到比以往更多的知识。建立一个自己的在线学习网站是十分必要的事情,这不仅能使更多的人享用宝贵的教育资料源,同时也对于提高学生自学能力,有相当大的帮助。
随着互联网技术的飞速发展,利用网络进行学习已经成为时代发展的必然趋势,建立在线学习网站,尽可能提高优质学习的利用率,对实现人才培养,促进社会经济发展都能起到十分重要的作用。也可以引导用户主动年该学习,提高学习效率,更为学习双方提供一个进行写作学习和交流的平台。
人口多而教育资源缺乏影响着我国受过高等教育的人在人口比例中所占的比重,这严重的制约了我国社会的发展与进步,这对于提高我国国民的文化科学素养十分不利。怎样才能让更多的人享有少部分人拥有的精品教育资源呢?对于这个问题,前人已经做了大量的研究。随着计算机技术以及计算机网络技术的飞速发展,人们终于找到了一条实现这种梦想的捷径,那就是寄希望于把各种教育资源移置到互联网上去,使得各地方的人都能够方便的获取到各种自己想要的知识,打破传统教育资源分配不均的限制,使得更多的人能够有机会获取到知识。
近年来,学校学生的数量逐渐增加,人工书写学习的方式已经不能满足如此庞大的数据。为了更好的适应信息时代的高效性,一个利用计算机来实现学校在线学习网站管理工作的系统将必然诞生。基于这一点,设计了一个在线学习网站,用来就学生在线学习网站进行管理,以便在最短的时间内,高效准确的完成整个学习程。
基于对上述的认识,收集相关资料和数据,查阅有关文献及技术参数,对学校的实际需求等方面进行了调研,发现目前所采用的手工记录的方法进行管理存在以下几个方面的弊端:对象范围广,数据存储不易;填写的数据多,且大量数据重复;不易存档,成千上万的信息和堆积如山的单据对管理人员来说是一个负担,需要大量的文档资料。鉴于以上种种原因,学校学习的管理急需一种软件来代替手工操作来管理数据资料。
计算机技术在现代管理中的应用,使计算机成为领导者和管理人员应用现代技术的重要工具[1]。计算机辅助高校管理活动,可以极大地增强管理者采集、处理信息的能力,从而有利于管理者及时决策。计算机系统能根据管理过程的变化情况,将原始数据、资料等进行加工、保存,管理人员可以在解决具体问题需要信息资料时,随时进行检索查询,了解整个在线学习网站的动态情况,进行动态管理,从而有效的处理在线学习网站的管理工作,实现在线学习网站信息管理的自动化,提高办学效率。
1.2 课题意义
与传统的教育相比,网络学习是一种全新的教育模式,它可以突破时间和空间的限制,让更多的学习者共享优秀的教育资源。网络学习既具有开放性、交互性、协作性和自主性等特点,有具有异步性、实时性、生动性、集成性和大容量等优势。因此在网络学习平台系统的建设中,单纯地构建各种功能单一的系统并不能完全满足网络学习平台建设的要求,只有那些对数据和信息进行有效组织,整合了多种业务,为用户提供个性化服务的系统才能充分地发挥精品课程学习平台的作用。
建设在线学习网的根本目的是利用现代化的教育信息技术手段将相关学习知识内容上网并免费开放,以实现优质学习资源共享,提高学习质量和人才培养质量。
1.3开发工具及技术
1.3.1 MyEclipse
MyEclipse,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSP, CSS, Javascript, SQL, Hibernate。
1.3.2 Tomcat
Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。可以这样认为,当在一台机器上配置好Apahce服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
1.3.3 SqlServer
SQL(Structured Query Language),结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。绝大多数流行的关系型数据库管理系统都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select, Insert, Update, Delete, Create,以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。
1.3.4 JSP
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 
Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP与Servlet一样,是在服务器端执行的,通常返回给客户端就是一个HTML文本,因此客户端只要有浏览器能浏览。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。JSP技术的优点:
(1)一次编写,到处运行。除了系统之外,代码不用做任何更改。 
(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/.net的局限性是显而易见的。 
(3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。 
(4)多样化和功能强大的开发工具支持。Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。
(5)支持服务器端组件。web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能。JSP可以使用成熟的JAVA BEANS 组件来实现复杂商务功能。
内部对象说明:request 客户端请求,此请求会包含来自GET/POST请求的参数; response 网页传回客户端的响应;pageContext 网页的属性是在这里管理; session 与请求有关的会话; application servlet正在执行的内容;out 用来传送响应的输出流; config 代码片段配置对象;page JSP网页本身; exception 针对错误网页,未捕捉的例外。

第2章 可行性分析及总体设计原则
2.1可行性分析
可行性分析也称为可行性研究,是在调查的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、社会等方面进行分析和研究,以避免投资失误,保证新系统的开发成功[2]。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
下面将分别从技术、经济、社会三个方面对在线学习网站的建设进行分析和研究。
2.1.1技术可行性
根据在线学习网的系统功能、性能及实现系统的各种约束条件,根据新系统目标来衡量所需的技术是否具备,本系统是一个数据库管理和查询的系统,现有的技术已较为成熟,硬件、软件的性能要求、环境条件等各项条件良好,估计利用现有技术条件应完全可以达到该系统的功能目标。同时,考虑给予的开发期限也较为充裕,预计系统是可以在规定期限内完成开发的。
由以上分析可知,在线学习网站的开发在技术上是可行的
2.1.2经济可行性
学校具有信息化的处理设施,并且拥有支持本系统的应用平台。因此无需再投入资金购买其他设施。系统的开发基于本人对程序开发的实践学习而来,学校无需资金投入,并且软件开发过程投入的成本不高,因此开发经费完全可以接受。
由以上分析可知,在线学习网站在经济上是可行的。
2.1.3社会可行性
本系统的社会可行性主要从法律因素、用户使用可行性两方面进行研究。
(1)法律因素
本系统是根据在线学习网站的实际情况开发研制的,是通过大量的调研得出的,系统的软件设计是在独立的环境下完成的,无可供抄袭的软件产品。
(2)用户使用可行性
本系统对用户的要求,除了需要具备在Microsoft Windows平台上使用个人电脑的知识外,并不需要特别的技术能力。使用系统的管理员,需要具备对Tomcat服务器的使用能力,在投入使用前,无需对操作系统的人员进行培训。这样既减少投入成本又简化了操作环节。由以上分析可知,本系统具有社会可行性。

2.2总体设计原则
本系统为了设计、实现和后期维护的方便,以及系统用户使用的便利,所以必须采取一定的设计原则。其主要设计原则有:
简单性:在实现系统的功能的同时,尽量让系统操作简单易懂,这对于一个系统来说是非常重要的。
针对性:本系统设计是针对在线学习网站的需求定向开发设计,所以具有专业突出和很强的针对性。
实用性:要求本系统能够满足在线学习网站的需求,因此具有良好的实用性。
一致性:页面整体设计风格以及命名规则的一致性:整体页面布局和用图用色风格及变量、类名和其他元素的命名规则保持一致。功能一致性:完成同样的功能应该尽量使用同样的元素。 元素风格一致性:界面元素的美观风格、摆放位置在同一个界面和不同界面之间都应该是一致的。变量命名规则的一致性:变量应该用统一的规则进行命名,做到任意变量均能从上下文推断其义。
先进性:本系统采用JSP技术、SQLSERVER等被广泛采用系统开发技术和数据库,因此本设计具有良好的先进性,具体表现在其具有良好的可扩展性,可开发性。

第3章 系统分析
3.1业务流程分析
在进行业务流程分析时,需要按照原有信息流动过程,逐个地调查分析所有环节的处理业务、处理内容、处理顺序和对处理时间的要求,弄清各个环节需要的信息、信息来源、流经去向、处理方法、计算方法、提供信息的时间和信息形态(报告、报单、屏幕显示)等[4]。
业务流程分析可以帮助开发者了解该业务处理过程,发现和处理系统调查工作中的错误和疏漏。业务流程分析是通过业务流程图来进行,即用一些规定的符号及连线来表示某个具体业务处理过程[5]。


图3.1业务流程图
3.2数据流图
数据流程是指数据在系统中产生、传输、加工处理、使用、存储的过程[6]。数据流程分析是把数据在现行系统内部的流动抽象的独立起来,舍去了具体组织机构、信息载体、处理工具、物质、材料等,单从数据流动过程来考查实际业务的数据处理模式。
数据流程与数据流程分析是今后建立数据库系统和设计功能模块处理过程的基础。描述数据流程的工具是数据流程图以及其附带的数据字典、处理逻辑等图表。其中数据流程图是描述系统逻辑模型的主要工具,它以少数几种符号综合地反映出信息在系统中的流动、存储和传递[7]。
在业务流程分析的基础上,对数据流进行了分析,从数据流动过程考察了实际业务的数据处理模式。该系统的数据流图分为顶层、一层、二层。现行的顶层数据流图如图3.2所示。

图3.2顶层数据流图

具体分析第一层数据流图,该层数据流图如图3. 3所示。


图3.3第一层数据流图

由于论文的篇幅限制不能一一列举数据流图,只给出了部分数据流图,其他的数据流图基本一致。

第4章 系统设计
4.1系统功能设计
系统设计是一个把软件需求转换成用软件系统表示的过程。通过对目标系统的分析和研究,做出了在线学习网站的总体规划,这是全面开发系统的重要基础。在对在线学习网站全面分析调查的基础上,制定出在线学习网站的总体规划。系统设计包括系统总体设计、系统详细设计、系统数据库设计、系统开发工具、开发技术和开发模式等。
从数据流图出发,对数据流图进行分析,得出的层次化的模块结构图.
在线学习网站前台功能模块图如图4-1所示:

图4-1前台功能模块图


在线学习网站后台功能模块图如图4-2所示:

图4-2 在线学习网站后台功能模块图

4.2数据库设计
数据库是本系统的核心和基础。它设计的好坏直接影响着整个系统的质量。数据是一切系统设计的基础,通俗地说,数据库设计就像高楼大厦的根基一样,如果设计的不合理、不完善,将在系统开发过程中,甚至到后期的系统维护、功能变更和功能扩充时,引起较多问题,严重时甚至要重新设计,重做大量已完成工作。
4.2.1概念结构设计
从数据需求分析中得出系统的实体属性图。
(1)管理员实体属性图如图4-3所示:

图4-3管理员实体属性图
 (2)会员信息实体属性图如图4-5所示:

图4-4会员实体属性图


(3)学习资料实体属性图如图4-7所示:

图4-7学习资料实体属性图

(4)公告信息实体属性图如图4-8所示:

图4-8公告信息实体属性图

(5)留言信息实体属性图如图4-9所示:

图4-9留言信息实体属性图

(6)视频信息实体属性图如图4-10所示:

图4-10视频信息实体属性图

4.2.2数据库表设计
(1)管理员信息表(t_admin)
管理员信息表主要用于系统管理员的信息,主要字段包括:编号、登陆账号、登陆密码。
表4.13 管理员信息表(t_admin)
字段名    数据类型    字段描述    长度    主键
userId    Int    编号    10    √
userName    varchar    登陆账号    50    
userPw    varchar    登陆密码    50    

(2)学习资料信息表(t_doc)
学习资料信息表主要用于管理员发布的学习资料信息,主要字段包括:编号、标题、介绍等。
表4.14 学习信息表(t_doc)
字段名    数据类型    字段描述    长度    主键
id    Int    编号    10    √
title    varchar    标题    50    
content    varchar    内容    50    
fujian    varchar    附件    50    
fujianYuanshiming    varchar    附件原始名    50    
shijian    varchar    发布时间    50    

(3)视频信息表(t_shipin)
学习视频信息表主要用于管理员发布的视频信息,主要字段包括:编号、视频标题、附件等。
表4.15 学习视频信息表(t_shipin)
字段名    数据类型    字段描述    长度    主键
Id    Int    编号    10    √
title    varchar    标题    50    
content    varchar    内容    50    
fujian    varchar    附件    50    
shijian    varchar    发布时间    50    


(4)会员信息表(t_user)
学生表主要存储学生的基本信息,主要字段包括:ID、学号、姓名、性别、年龄、登录帐号、登录密码等。
表4.17学生信息表(t_stu)
字段名    数据类型    字段描述    长度    主键
id    Int    编号    10    √
loginname    varchar    账号    50    
loginpw    varchar    密码    50    
xingming    varchar    姓名    50    

(5)自测题目信息表(t_timu)
自测题目信息表主要存储测试题目的基本信息,主要字段包括:ID、学号、姓名、性别、年龄、登录帐号、登录密码等。
表4.17学生信息表(t_stu)
字段名    数据类型    字段描述    长度    主键
id    Int    编号    10    √
name    varchar    题目名称    50    
xuanxianga    varchar    选项A    500    
xuanxiangb    varchar    选项B    500    
xuanxiangc    varchar    选项C    500    
xuanxiangd    varchar    选项D    500    
daan    varchar    题目答案    500    
fenshu    Int    题目分数    5    


(6)公告信息表(t_gonggao)
公告信息表主要存储管理员发布的公告信息,主要字段包括:ID、公告标题、公告内容、发布时间等。
表4.19公告信息表(t_gonggao)
字段名    数据类型    字段描述    长度    主键
id    Int    ID    10    √
title    varchar    公告标题    50    
content    varchar    公告内容    5000    
shijian    varchar    发布时间    50    

(7)留言信息表(t_liuyan)
公告信息表主要存储学生和老师的留言信息,主要字段包括:ID、留言标题、留言内容、留言时间等。
表4.20留言信息表(t_liuyan)
字段名    数据类型    字段描述    长度    主键
id    Int    ID    10    √
title    varchar    公告标题    50    
content    varchar    公告内容    5000    
shijian    varchar    发布时间    50    


第5章 系统实现
5.1管理员登录
1.描述:为了保证系统的安全性,要先使用本系统必须先登陆到系统中,用户需要正确的账号和密码登录本系统。
2.程序运行效果图如图5.1所示:

图4.1 系统登陆页面设计
3.在登陆页面输入用户名和密码以,点击提交按钮,跳转到登陆的service中,在该service中会对用户名密码,验证码进行判断,验证通过进入对应的页面,loginservice关键代码:
    public String login(String userName,String userPw,int userType)
    {
        String result="no";
        if(userType==0)//系统管理员登陆
        {
            String sql="select * from t_admin where userName=? and userPw=?";
            Object[] params={userName,userPw};
            DB mydb=new DB();
            mydb.doPstm(sql, params);
            try 
            {
                ResultSet rs=mydb.getRs();
                boolean mark=(rs==null||!rs.next()?false:true);
                if(mark==false)
                {
                     result="no";
                }
                else
                {
                     result="yes";
                     TAdmin admin=new TAdmin();
                     admin.setUserId(rs.getInt("userId"));
                     admin.setUserName(rs.getString("userName"));
                     admin.setUserPw(rs.getString("userPw"));
                     WebContext ctx = WebContextFactory.get(); 
                     HttpSession session=ctx.getSession(); 
                     session.setAttribute("userType", 0);
                     session.setAttribute("admin", admin);
                }
                rs.close();
            } 
            catch (SQLException e)
            {
                System.out.println("登录失败!");
                e.printStackTrace();
            }
            finally
            {
                mydb.closed();
            }
        }
5.2管理员功能模块
5.2.1公告信息管理
5.2.1.1公告信息录入
1.描述:管理员输入公告相关正确信息后点击录入按钮,如果是没有输入完整的公告信息,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法οnsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。
2.程序效果图如下图5.12所示:

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

图5.13 公告信息管理页面
公告信息管理关键代码:
    public void gonggaoAdd(HttpServletRequest req,HttpServletResponse res)
    {
        String id=String.valueOf(new Date().getTime());
        String title=req.getParameter("title");
        String content=req.getParameter("content");
        String shijian=new Date().toLocaleString();
        String sql="insert into t_gonggao values(?,?,?,?)";
        Object[] params={id,title,content,shijian};
        DB mydb=new DB();
        mydb.doPstm(sql, params);
        mydb.closed();
        req.setAttribute("message", "操作成功");
        req.setAttribute("path", "gonggao?type=gonggaoMana");
        String targetURL = "/common/success.jsp";
        dispatch(targetURL, req, res);
        
    }
    public void gonggaoDel(HttpServletRequest req,HttpServletResponse res)
    {
        String id=req.getParameter("id");
        String sql="delete from t_gonggao where id=?";
        Object[] params={id};
        DB mydb=new DB();
        mydb.doPstm(sql, params);
        mydb.closed();
        req.setAttribute("message", "操作成功");
        req.setAttribute("path", "gonggao?type=gonggaoMana");
        String targetURL = "/common/success.jsp";
        dispatch(targetURL, req, res);
    }
    public void gonggaoMana(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
    {
        List gonggaoList=new ArrayList();
        String sql="select * from t_gonggao";
        Object[] params={};
        DB mydb=new DB();
        try
        {
            mydb.doPstm(sql, params);
            ResultSet rs=mydb.getRs();
            while(rs.next())
            {
                Tgonggao gonggao=new Tgonggao();
                gonggao.setId(rs.getString("id"));
                gonggao.setTitle(rs.getString("title"));
                gonggao.setContent(rs.getString("content"));
                gonggao.setShijian(rs.getString("shijian"));
                gonggaoList.add(gonggao);
            }
            rs.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        mydb.closed();
        
        req.setAttribute("gonggaoList", gonggaoList);
        req.getRequestDispatcher("admin/gonggao/gonggaoMana.jsp").forward(req, res);
    }
5.2.1.3公告详细信息查看
1.描述:先是点击公告信息管理,页面跳转到公告信息管理界面,浏览所有的公告信息,点击要查看的公告信息,弹出公告信息详细信息界面。
5.2.1.4公告信息删除
1.描述:先是点击公告信息管理,页面跳转到公告信息管理界面,浏览所有的公告信息,点击要删除的公告信息,弹出的确定对话框,即可删除该公告信息。
5.2.2留言信息管理
5.2.2.1在线留言信息管理
1.描述:管理员点击左侧的菜单“在线留言信息管理”,页面跳转到在线留言信息管理界面,调用后台的action类查询所有在线留言信息。
2.程序效果图如下图5.14所示

图5.14 在线留言信息管理
在线留言信息管理关键代码:
    public void liuyanDel(HttpServletRequest req,HttpServletResponse res)
    {
        String id=req.getParameter("id");
        String sql="delete from t_liuyan where id=?";
        Object[] params={id};
        DB mydb=new DB();
        mydb.doPstm(sql, params);
        mydb.closed();
        req.setAttribute("message", "操作成功");
        req.setAttribute("path", "liuyan?type=liuyanMana");
        String targetURL = "/common/success.jsp";
        dispatch(targetURL, req, res);
    }
    public void liuyanMana(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
    {
        List liuyanList=new ArrayList();
        String sql="select * from t_liuyan";
        Object[] params={};
        DB mydb=new DB();
        try
        {
            mydb.doPstm(sql, params);
            ResultSet rs=mydb.getRs();
            while(rs.next())
            {
                Tliuyan liuyan=new Tliuyan();
                liuyan.setId(rs.getString("id"));
                liuyan.setTitle(rs.getString("title"));
                liuyan.setContent(rs.getString("content"));
                liuyan.setShijian(rs.getString("shijian"));
                liuyan.setUser_id(rs.getString("user_id"));
                liuyan.setUser_name(liuService.getUserName(rs.getString("user_id")));
                liuyanList.add(liuyan);
            }
            rs.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        mydb.closed();
        req.setAttribute("liuyanList", liuyanList);
        req.getRequestDispatcher("admin/liuyan/liuyanMana.jsp").forward(req, res);
    }
5.2.2.2在线留言信息删除
1.描述:先是点击在线留言信息管理,页面跳转到在线留言信息管理界面,浏览所有的在线留言信息,点击要删除的在线留言信息,即可删除该在线留言信息。
5.2.3学习资料管理
5.2.3.1资料信息录入
1.描述:管理员输入资料相关正确信息后点击录入按钮,如果是没有输入完整的资料经理信息,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法οnsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。
2.程序效果图如下图5.15所示:

图5.15 资料信息录入
5.2.3.2资料信息管理
1.描述:管理员点击左侧的菜单“资料管理”,页面跳转到资料管理界面,调用后台的servlet类查询所有资料信息。
2.程序效果图如下图5.16所示

图5.16 资料信息管理
资料管理关键代码:
    public void docAdd(HttpServletRequest req,HttpServletResponse res)
    {
        String id=String.valueOf(new Date().getTime());
        String title=req.getParameter("title");
        String content=req.getParameter("content");
        String fujian=req.getParameter("fujian");
        String fujianYuanshiming=req.getParameter("fujianYuanshiming");
        String shijian=req.getParameter("shijian");
        String del="no";
        String sql="insert into t_doc values(?,?,?,?,?,?,?)";
        Object[] params={id,title,content,fujian,fujianYuanshiming,shijian,del};
        DB mydb=new DB();
        mydb.doPstm(sql, params);
        mydb.closed();
        req.setAttribute("message", "操作成功");
        req.setAttribute("path", "doc?type=docMana");
        String targetURL = "/common/success.jsp";
        dispatch(targetURL, req, res);
        
    }
    public void docDel(HttpServletRequest req,HttpServletResponse res)
    {
        String id=req.getParameter("id");
        String sql="delete from t_doc where id=?";
        Object[] params={id};
        DB mydb=new DB();
        mydb.doPstm(sql, params);
        mydb.closed();
        req.setAttribute("message", "操作成功");
        req.setAttribute("path", "doc?type=docMana");
        String targetURL = "/common/success.jsp";
        dispatch(targetURL, req, res);
    }
    public void docMana(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
    {
        List docList=new ArrayList();
        String sql="select * from t_doc where del='no'";
        Object[] params={};
        DB mydb=new DB();
        try
        {
            mydb.doPstm(sql, params);
            ResultSet rs=mydb.getRs();
            while(rs.next())
            {
                Tdoc doc=new Tdoc();
                doc.setId(rs.getString("id"));
                doc.setTitle(rs.getString("title"));
                doc.setContent(rs.getString("content"));
                doc.setFujian(rs.getString("fujian"));
                doc.setFujianYuanshiming(rs.getString("fujianYuanshiming"));
                doc.setShijian(rs.getString("shijian"));
                docList.add(doc);
            }
            rs.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        mydb.closed();
        req.setAttribute("docList", docList);
        req.getRequestDispatcher("admin/doc/docMana.jsp").forward(req, res);
    }
5.2.3.3资料信息删除
1.描述:先是点击资料管理,页面跳转到资料管理界面,浏览所有的资料信息,点击要删除的资料,弹出的确定对话框,即可删除该资料信息。
5.2.4视频信息管理
5.2.4.1视频信息录入
1.描述:管理员输入视频相关正确信息后点击录入按钮,如果是没有输入完整的视频经理信息,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法οnsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。
2.程序效果图如下图5.17所示:

图5.17 视频信息录入
5.2.4.2视频信息管理
1.描述:管理员点击左侧的菜单“视频管理”,页面跳转到视频管理界面,调用后台的servlet类查询所有视频信息。
2.程序效果图如下图5.18所示

图5.18 视频信息管理
视频管理关键代码:
    public void shipinAdd(HttpServletRequest req,HttpServletResponse res)
    {
        String id=String.valueOf(new Date().getTime());
        String title=req.getParameter("title");
        String content=req.getParameter("content");
        String fujian=req.getParameter("fujian");
        String fujianYuanshiming=req.getParameter("fujianYuanshiming");
        String shijian=req.getParameter("shijian");
        String del="no";
        String sql="insert into t_shipin values(?,?,?,?,?,?,?)";
        Object[] params={id,title,content,fujian,fujianYuanshiming,shijian,del};
        DB mydb=new DB();
        mydb.doPstm(sql, params);
        mydb.closed();
        req.setAttribute("message", "操作成功");
        req.setAttribute("path", "shipin?type=shipinMana");
        String targetURL = "/common/success.jsp";
        dispatch(targetURL, req, res);
    }
    public void shipinDel(HttpServletRequest req,HttpServletResponse res)
    {
        String id=req.getParameter("id");
        String sql="delete from t_shipin where id=?";
        Object[] params={id};
        DB mydb=new DB();
        mydb.doPstm(sql, params);
        mydb.closed();
        req.setAttribute("message", "操作成功");
        req.setAttribute("path", "shipin?type=shipinMana");
        
        String targetURL = "/common/success.jsp";
        dispatch(targetURL, req, res);
    }
    public void shipinMana(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
    {
        List shipinList=new ArrayList();
        String sql="select * from t_shipin where del='no'";
        Object[] params={};
        DB mydb=new DB();
        try
        {
            mydb.doPstm(sql, params);
            ResultSet rs=mydb.getRs();
            while(rs.next())
            {
                Tshipin shipin=new Tshipin();
                shipin.setId(rs.getString("id"));
                shipin.setTitle(rs.getString("title"));
                shipin.setContent(rs.getString("content"));
                shipin.setFujian(rs.getString("fujian"));
                shipin.setFujianYuanshiming(rs.getString("fujianYuanshiming"));
                shipin.setShijian(rs.getString("shijian"));
                shipinList.add(shipin);
            }
            rs.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        mydb.closed();
        req.setAttribute("shipinList", shipinList);
        req.getRequestDispatcher("admin/shipin/shipinMana.jsp").forward(req, res);
    }
5.2.4.3视频信息删除
1.描述:先是点击视频管理,页面跳转到视频管理界面,浏览所有的视频信息,点击要删除的视频,弹出的确定对话框,即可删除该视频信息。
5.2.5修改个人密码
1.描述:输入用户名和用户的原有密码,输入新密码以后点击修改按钮即可修改密码成功。
2.程序效果图如图5.21所示:

图5.21修改密码
5.3前台网站功能模块
5.3.1网站首面
1.描述:前台首页是浏览者打开一个网站后第一眼看到的网页,网站能不能吸引浏览者,在很大程度上取决于首页做得怎么样。首页包含内容虽然丰富但不杂乱,色彩搭配要合理,整体风格要独特。
2.程序效果图如下图5.22所示:

图5.22 网站首页
5.3.2学习资料下载
1. 描述:点击网站主页菜单的学习资料,进入学习资料信息列表,点击资料信息浏览具体内容,并可以下载。
2.程序效果图如下图5.23所示:

图5.23 学习资料下载
学习资料下载关键代码:
    public void docAll(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
    {
        List docList=new ArrayList();
        String sql="select * from t_doc where del='no'";
        Object[] params={};
        DB mydb=new DB();
        try
        {
            mydb.doPstm(sql, params);
            ResultSet rs=mydb.getRs();
            while(rs.next())
            {
                Tdoc doc=new Tdoc();
                doc.setId(rs.getString("id"));
                doc.setTitle(rs.getString("title"));
                doc.setContent(rs.getString("content"));
                doc.setFujian(rs.getString("fujian"));
                doc.setFujianYuanshiming(rs.getString("fujianYuanshiming"));
                doc.setShijian(rs.getString("shijian"));
                docList.add(doc);
            }
            rs.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        mydb.closed();
        req.setAttribute("docList", docList);
        req.getRequestDispatcher("qiantai/doc/docAll.jsp").forward(req, res);
    }
    public void docDetailQian(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
    {
        String id=req.getParameter("id");
        Tdoc doc=new Tdoc();
        String sql="select * from t_doc where id=?";
        Object[] params={id};
        DB mydb=new DB();
        try
        {
            mydb.doPstm(sql, params);
            ResultSet rs=mydb.getRs();
            rs.next();
            doc.setId(rs.getString("id"));
            doc.setTitle(rs.getString("title"));
            doc.setContent(rs.getString("content"));
            doc.setFujian(rs.getString("fujian"));
            doc.setFujianYuanshiming(rs.getString("fujianYuanshiming"));
            doc.setShijian(rs.getString("shijian"));
                
            rs.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        mydb.closed();
        req.setAttribute("doc", doc);
        req.getRequestDispatcher("qiantai/doc/docDetailQian.jsp").forward(req, res);
    }
5.3.3学习视频下载
1. 描述:点击网站主页菜单的学习视频,进入学习视频信息列表,点击视频标题信息超链接,可以在线观看视频,登录系统后可以下载该视频。
2.程序效果图如下图5.24所示:

图5.24 学习视频下载
学习视频下载关键代码:
    public void shipinAll(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
    {
        List shipinList=new ArrayList();
        String sql="select * from t_shipin where del='no'";
        Object[] params={};
        DB mydb=new DB();
        try
        {
            mydb.doPstm(sql, params);
            ResultSet rs=mydb.getRs();
            while(rs.next())
            {
                Tshipin shipin=new Tshipin();
                shipin.setId(rs.getString("id"));
                shipin.setTitle(rs.getString("title"));
                shipin.setContent(rs.getString("content"));
                shipin.setFujian(rs.getString("fujian"));
                shipin.setFujianYuanshiming(rs.getString("fujianYuanshiming"));
                shipin.setShijian(rs.getString("shijian"));
                shipinList.add(shipin);
            }
            rs.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        mydb.closed();
        req.setAttribute("shipinList", shipinList);
        req.getRequestDispatcher("qiantai/shipin/shipinAll.jsp").forward(req, res);
    }
    public void shipinDetailQian(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
    {
        String id=req.getParameter("id");
        Tshipin shipin=new Tshipin();
        String sql="select * from t_shipin where id=?";
        Object[] params={id};
        DB mydb=new DB();
        try
        {
            mydb.doPstm(sql, params);
            ResultSet rs=mydb.getRs();
            rs.next();
            shipin.setId(rs.getString("id"));
            shipin.setTitle(rs.getString("title"));
            shipin.setContent(rs.getString("content"));
            shipin.setFujian(rs.getString("fujian"));
            shipin.setFujianYuanshiming(rs.getString("fujianYuanshiming"));
            shipin.setShijian(rs.getString("shijian"));
            rs.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        mydb.closed();
        req.setAttribute("shipin", shipin);
        req.getRequestDispatcher("qiantai/shipin/shipinDetailQian.jsp").forward(req, res);
    }
5.3.7留言板功能
1.描述:注册用户通过该模块实现实时留言功能。
2.程序效果图如下图5.28所示:

图5.28 系统留言界面


第6章软件测试
测试是开发时期最后一个阶段,是保证软件质量的重要手段。软件测试就是在受控制的条件下对系统或应用程序进行操作并评价操作结果的过程,所谓控制条件应包括正常条件与非正常条件。软件测试过程中应该故意地去促使错误的发生,也就是事情在不该出现的时候出现或者在应该出现的时候没有出现。从本质上说,软件测试是"探测",在“探测”中发现软件的毛病。
6.1软件测试的重要性
软件测试在软件生命周期中占据重要的地位,在传统的瀑布模型中,软件测试学仅处于运行维护阶段之前,是软件产品交付用户使用之前保证软件质量的重要手段。近来,软件工程界趋向于一种新的观点,即认为软件生命周期每一阶段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发现错误并加以修正,如果不在早期阶段进行测试,错误的延时扩散常常会导致最后成品测试的巨大困难。[19] 
事实上,对于软件来讲,不论采用什么技术和什么方法,软件中仍然会有错。采用新的语言、先进的开发方式、完善的开发过程,可以减少错误的引入,但是不可能完全杜绝软件中的错误,这些引入的错误需要测试来找出,软件中的错误密度也需要测试来进行估计。测试是所有工程学科的基本组成单元,是软件开发的重要部分。自有程序设计的那天起测试就一直伴随着。统计表明,在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40%以上。而在软件开发的总成本中,用在测试上的开销要占30%到50%。如果把维护阶段也考虑在内,讨论整个软件生存期时,测试的成本比例也许会有所降低,但实际上维护工作相当于二次开发,乃至多次开发,其中必定还包含有许多测试工作。
6.2测试实例的研究与选择
程序测试的主要方法分为两大类,白盒测试和黑盒测试。
白盒测试:一种是以程序的内部逻辑结构为依据而设计测试用例的方法,因而又称结构测试或玻璃盒测试,将软件看成一个透明的白盒子,按照程序的内部结构和处理逻辑来选定测试用例,对软件的逻辑路径及过程进行测试,检查它与设计是否相符[20]。白盒测试就是要选取足够的测试用例,对源代码实行比较充分的覆盖,以便尽可能多地发现程序中的错误。主要有两种方法:一种称为逻辑覆盖法,另一种称为路径覆盖法。
黑盒测试:也称功能测试,数据驱动测试等,它将待测对象堪称是一个黑盒子,在完全不考虑程序的内部结构和特性的情况下,只依据规格说明书检查程序的功能是否能正常使用。
黑盒测试主要是根据输入条件和输出条件的确定测试数据,来检查程序是否能产生正确的输出。进行黑盒测试主要有下面几种方法:等价分类法、边界值分析法、猜错法、因果图法。
本系统的测试综合了白盒测试、黑盒测试两种方法,但主要使用的是黑盒测试方法。在测试当中遵循了“尽早地和不断进行测试”,“保证测试用例的完整性和有效性”原则。通过测试达到以下测试目的:
1.功能检查:检查功能是否争取,是否遗漏或实现不了应该实现的功能等。
2接口检查:检查能否正确地接受信息或输出信息。
3数据检查:检查数据结构或外部信息是否有(如数据文件)访问错误。
4性能检查:检查性能需求能否得到满足。[21]
5初始化、终止检查:检查是否能进行正确地初始化或终止。
6.3测试环境与测试条件
处理器:Inter(R) Core (TM)2 Duo T5750
内存:2GB
硬盘:160G
操作系统:Windows XP
数据库:SqlServer
6.4系统运行情况
通过对系统的全面测试,所有测试条目都已经通过,实现了基本要求,系统可以正常运行。
6.5系统评价
系统评价是指系统在正式运行了一段时间之后,对它在功能上、技术上和经济上所进行的审核评价。针对本系统的评价如下:
(1)系统功能评价
根据本系统开发前所订的目标,在系统完成后经过测试运行,该系统达到了预定的开发目标,在实际使用中的功能可以满足用户需求。[22]
(2)系统技术评价
本系统设计合理,功能达到了预期目标,且系统运行后稳定可靠,安全性高,具有实用性,大大提高了信访办公效率。
(3)系统经济评价
在规定时间内,该系统完成了系统分析时所确定的系统开发目标,达到了设计要求,投入使用后为用户节省了大量人力物力财力,提高了科学管理水平。

第7章 结论
计算机技术的飞速发展带动了很多行业的发展,计算机带给我们最直观的价值就是减少了人力物力的投资,提高了工作质量和效率,从而提高了整个社会的生产力。目前各大酒店充分利用计算机资源和网络资源来提高自身的管理水平,而有关在线学习网站的设计也成为在线学习网站争论的热点问题。
本文在分析在线学习网站的基础上,用JSP和SqlServer数据库设计并完成在线学习网站。通过系统调试结果显示,本系统基本完成了功能需求。在整个设计过程中,采用瀑布模型和结构化的设计方法。本系统界面美观友好,操作方便,做出了自己的特色。但由于时间仓促加上缺乏系统开发经验,系统在设计过程中不可避免地遇到了各种各样的问题,如:
1. 有些数据输入时没有及时的进行数据格式校验,不能保证数据绝对正确性。
2. 由于时间关系,系统功能实现不够完善,使用可能存在一些不方便。
本系统在实际使用过程中有可能出现一些问题,通过对系统的不断优化和完善,能够调试出真正符合实际情况的在线学习网站,形成统一、规范、科学、合理的在线学习网站。


参考文献
[1] 张孝祥、徐明华. JAVA基础与案例开发详解[M]. 清华大学出版社. 2009.45-46.
[2] 康牧.JSP动态网站开发实用教程[M].清华大学出版社.2009.127-127.
[3] 刘亚宾.精通Eclipse--JAVA技术大系[M].电子工业出版社.2005.167-168.
[4] 于万波.网站开发与应用案例教程[M].清华大学出版社.2009.77-78.
[5] 杨学瑜.高立军,软件开发过程与项目管理[M].电子工业出版社.2008.43-46.
[6] 张洁才.Java web应用开发教程[M].科学出版社.2005.66-68.
[7] 戴维尔.JavaScript程序员教程[M].电子工业出版社.2010.333-334.
[8] 黎连业、王华、李淑春.软件测试与测试技术[M].清华大学出版社.2009.321-322.
[9] 黄梯云.管理信息系统[M].北京:电子工业出版社.2006 .216-217.
[10]James D. McCaffrey等.NET软件测试自动化之道[M]. 北京:电子工业出版社.2007.213-214.
[11]甘仞初.信息系统开发[M].北京:经济科学出版社.2007.144-145.
[12]马赫. Dreamweaver MX 2004 网页设计经典108例[M].中国青年出版社.2005.99-101.
[13]唐友国 湛洪波著.JSP网站开发详解[M].电子工业出版社.2008.111-112.
[14]卫红春等著.信息系统分析与设计[M].北京:清华大学出版社.2009.51-53.
[15]张大方 李玮等著.软件测试技术与管理[M].湖南:湖南大学出版社.2007.333-334.
[16](美)H.M.Deitel,P.Jdeitel.Java程序设计教程(第五版). 清华大学出版社.2004.212-212.
[17](美)Elliotte Rusty Harold.Java Network Programming.东南大学出版社 .2005.122-123.
[18]孙卫琴等.精通struts:基于MVC的Java Web设计与开发[M]. 电子工业出版社.2005.144-144.
[19]张文静 林琪著.JSP程序设计[M].人民邮电出版社.2005.256-257.
[20]孙卫琴 李洪成著.Tomcat与Java Web开发技术详解[M]. 电子工业出版社.2005.343-344.
[21](美)John J.Patrick.SQL基础(第二版).清华大学出版社.2004.77-79.
[22](美)David flanagan.Java技术手册(第五版).东南大学出版社.2006.33-35.
[23]黄裴、徐汀荣.电子商务原理与技术(第二版),科学出版社.2006.124-126.


管理员

登录信息

登录

登录与否

学习视频管理

教学资料

公告信息

留言板信息

自测题目管理

会员信息管理

会员信息

题目信息


视频信息


教学资料


公告信息


留言信息


N

管理员

在线学习网站

系统信息

输入账号和密码

管理员

学生信息

会员信息管理

增删改学生

学习视频管理

视频信息

增删改视频信息

教学资料管理

资料信息

自测题目管理

班级信息

增删改班级

会员信息

视频信息

资料信息

题目信息

在线学习网前台

在线注册会员前台


浏览学习资料

视频信息下载

在线留言板


参与自测题目


在线学习网后台

学习视频管理


教学资料管理

会员信息管理

公告信息管理

自测体力管理

修改个人密码


留言信息信息

管理员

用户ID

登陆账号

登陆密码

会员信息

会员ID

登陆账号

会员姓名

登陆密码


内容


学习资料

标题

发布时间

资料ID

附件


公告信息

标题

发布时间

公告ID

内容

留言信息

标题

留言时间

留言ID

内容

视频资料

标题

发布时间

视频ID

附件


内容

- IV -

本文采用自顶向下的结构化的系统分析方法,阐述了一个功能全面的在线学习网站的开发过程、操作流程及其一些核心的技术。本文首先进行了项目概述,简单介绍了项目开发的背景、项目开发的目的和项目开发的意义;接下来是系统规划阶段,通过实际的业务流程调研,分析了系统的组织结构,具体完成了在线学习网站的需求分析、可行性分析、现行业务流程分析,并通过对现行业务流程的优化,得出了系统的业务流程;之后是系统分析,具体完成了数据流分析和数据字典;系统设计阶段主要完成了功能模块的划分、数据库的设计和系统界面设计。该阶段对各个模块的功能进行了详细设计,形成了本系统的功能模块图,在此基础上选择了合适的开发模式;数据库的设计先进行了概念结构设计,之后进行了逻辑结构设计,最后完成了数据库表的设计。根据前几个阶段的分析和设计,本系统在设计方面采用B/S模式,同时使用JSP技术进行基本页面的设计与功能实现,后台数据库选用SQLSERVER数据库。本系统的设计实施为在线学习网站的运行做基础,为在线学习网站提供良好的条件。
 

  • 7
    点赞
  • 7
    评论
  • 18
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

切梦刀

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值