jsp课程设计软件综合实践.docx
- 文档编号:3444032
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:34
- 大小:325.35KB
jsp课程设计软件综合实践.docx
《jsp课程设计软件综合实践.docx》由会员分享,可在线阅读,更多相关《jsp课程设计软件综合实践.docx(34页珍藏版)》请在冰豆网上搜索。
jsp课程设计软件综合实践
中国石油大学计算机与通信工程学院通信工程系课程设计系列
软件综合实践
指导手册
刘建航、张锡岭
通信工程系
2007年6月
本材料专门为课程设计而编写,内容包括语言介绍,课程设计指导和实例介绍。
每个例子内容相对独立,而且程序都调试通过,本书内容包括html介绍,javascript介绍。
例子包括html网页特效,javacript特效、投票系统、通讯录管理系统、新闻发布系统、软件下载系统、电子书店系统等例子。
本材料适合高等院校相关专业,也适用与其他高职、高专等不同层次人员。
第一章概述
1.1JSP概述
1.1.1JSP的含义和发展背景
JSP的全称是JavaserverPages,翻译过来可以称为“基于Java的服务器端动态页面技术”。
它由sunMicrosystems公司在l999年6月推出,近年来已发展成为一种最流行的动态网页开发技术。
Sun公司自1990年开始设计Java,凭借着其简单、面向对象、与平台无关等特点迅速征服了世界,尤其在日益普及的Internet应用上,更是有着其独特的、不可替代的优势。
由于JSP是在Java的基础上发展而来的,因此它也具有java的一切优秀品质。
这些优点,使得它区别于同时期的其他动态网页技术,并且比它们更加符合和满足程序开发人员的需要。
JSP在H1ML代码中嵌入Java程序片段,并使用各种Jsp指令,构成了JSP页面。
这种页面可以完成操作数据库、上传文件等复杂的逻辑处理功能。
另外,还通过支持javaBean加实现了功能扩展。
1.1.2JSP的特点
JSP技术让动态网页的编写更加容易、功能更强,可移植性、可扩展性更好。
总结起来,它的特点如下。
1.将内容的生成与显示分离
使用JSP技术,开发人员可以使用HTML来设计页面显示部分,使用JsP标记或脚本来生成页面上的动态内容。
这样,核心逻辑被封装在标记和JavaBean组件中,其他人员如页面设计者,就能够编辑和使用JSP页面而不影响核心逻辑代码。
2.支持可重用组件
JSP页面中可以使用可重用的跨平台的组件(JavaaBean或EnterpriseJavaBean)来执行应用程序所要求的更为复杂的处理。
开发人员可以共享和交换执行普通操作的组件,使这些组件为更多的使用者或客户团体所使用。
JavaBean的使用也很方便,又由于Java的跨平台性,也使得JavaBean的可移植性和可重用性非常高。
3.采用标签简化页面开发
标准的JSP标签能够访问和实例化JavaBean组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。
通过开发定制化标签库,JsP技术是可扩展的。
第——方开发人员和其他人员可以为常用
功能创建白己的标签斥,这使得Web页面开发人员能够使用熟悉的工具和An同标签一样的
1.3课程设计指导
在课程设计过程中,应该遵循软件工程的思想,按软件工程的流程来指导学生工作的开展。
软件工程是指导计算机项目开发与维护的工程学科。
软件项目的开发应该遵循软件工程标淮,这样可以提高软件开发的效率,减少软件开发与维护中的问题。
一个计算机软件,从开始构思起,经过该软件开发成功投入使用,直到最后决定停止使用,并被另一个软件代替时为止,称为该软件的一个生命周期。
典型的软件生命周期包括下列阶段。
1.3.1问题定义
问题定义阶段必须回答的问题是:
你要解决的问题是什么?
具体包括:
背景、开发该系统的现状、项目的目标等。
1.3.2可行性研究
可行性研究的目的是用最小的代价判断在问题定义阶段所确定的系统的目标和规模是否能实现,所确定的问题是否可以解决,系统方案在经济上、技术上和操作上是否可以接受。
典型的可行性研究有下列具体步骤:
(1)确定项目规模和目标;
(2)研究正在运行的系统;
(3)建立新系统的高层逻辑模型;
(4)导出和评价各种方案;
(5)推荐可行的方案;
(6)编写可行性研究报告。
1.3.3需求分析
需求分析是指开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式化的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程。
需求分析虽然处于软件开发过程的开始阶段,但它对于整个软件开发过程以及软件产品质量是至关重要的。
需求分析的基本任务是要准确地定义新系统的目标,回答系统必须“做什么”的问题。
结构化分析(StructureAnalysis,简称SA),是面向数据流进行需求分析的方法。
SA也是一种建模活动,该方法使用简单易读符号,根据软件内部数据传递、变换的关系,自顶向下逐层分解,描绘出满足功能要求的软件模型。
SA分析步骤
(1)了解当前系统的工作流程,获得当前系统的物理模型。
当前系统指目前正在运行的系统,可能是需要改进的正在计算机上运行的软件系统,也可能是人工处理系统。
(2)抽象出当前系统的逻辑模型。
物理模型反映了系统“怎样做”的具体实现,去掉物理模型中非本质的因素,抽象出本质的因素。
所谓的本质因素是指系统固有的、不依赖运行环境变化而变化的因素,任何实现均可这样做。
非本质因素不是固有的,随环境不同而不同,随实现不同而不同。
(3)建立目标系统的逻辑模型。
目标系统指待开发的系统。
分析、比较目标系统与当前系统逻辑上的差别,然后对“变化的部分”重新分解,分析人员根据自己的经验,采用自顶向下逐步求精的分析策略,逐步确定变化部分的内部结构,从而建立目标系统的逻辑模型。
(4)做进一步补充和优化。
为了完整描述目标系统,还要做一些补充:
说明目标系统的人机界面;说明至今尚未详细考虑的细节。
1.3.4总体设计
软件总体设计的两个基本任务如下。
1.设计软件系统结构(简称软件结构)
为了实现目标系统,首先进行软件结构设计,具体为:
(1)采用某种设计方法,将—个复杂的系统按功能划分成模块。
(2)确定每个模块的功能。
(3)确定模块之间的调用关系。
(4)确定模块之间的接口,即模块之间传递的信息。
(5)评价模块结构的质量。
2.数据结构及数据库设计
(1)数据结构的设计。
采用逐步细化的方法设计有效的数据结构,将大大简化软件模块处理过程的设汁。
(2)数据库设计。
数据库设计指数据存储文件的设计,主要进行概念、逻辑和物理三方面的设计。
(3)编写概要设计文档。
1.3.5详细设计
详细设计阶段主要确定每个模块的具体执行过程,其主要任务有:
(1)为每个模块进行详细的算法设计。
(2)对模块内的数据结构进行设计。
(3)对数据库进行物理设计,即确定数据库的物理结构。
(4)其他设计。
根据软件系统的类型,还可能要进行代码设计、输入/输出格式设计和人机对话设汁。
(5)编写详细设计说明书。
(6)评审。
1.3.6编码
编码是用选定的程序设计语言实现详细设计,选择程序语言一般考虑的两个因素如下。
1.项目的应用领域
这是选择语言的关键因素,项目应用领域一般为以下几种类型:
(1)科学工程计算。
可供选用的语言有:
FORTRAN语言,Pascal语言,c语言,PL/1。
(2)数据处理与数据库应用。
可供选用的语言有:
COBOL语言,SQL,4GL。
(3)实时处理。
可供选用的语言有:
汇编语言,Ada语言。
(4)系统软件。
编写操作系统、编译系统等系统软件时,可选用汇编语言、c语言、Pascal语言和Ada语言。
(5)人工智能。
如果要完成知识库系统、专家系统、决策支持系统、推理工程、语言识别、模式识别、机器人视觉、自然语言处理等人工智能领域内的系统,应选择prolog、lisp语言。
2.软件开发的方法
有时编程语言的选择依赖于开发的方法,如果要用快速原型模型来开发,要求能快速实现原型,因此宜采用4GL。
如果是面向对象方法,宜采用面向对象的语言编程。
而向对象的语言之要有:
C++、Java。
1.3.7综合测试
软件测试的目的是为了发现程序今的错误而执行程序的过程。
一个好的测试用例能够发现至今为止尚未发现的错误,一次成功的测试应该是发现了至今为止尚未发现的错误。
1.测试的指导原则
在软件测试中,应注意以下指导原则:
(1)测试用例应由输入数据和预期的输出数据两部分组成。
(2)测试用例不仅选用合理的输入数据,还要选择不合理的输入数据。
(3)除了检查程序是否做了它应该做的事,还应该检查程序是否做了它不应该做的
(4)应制定测试计划并严格执行,排除随意性。
(5)长期保留测试用例。
(6)对发现错误较多的程序段,应进行更深入的测试。
(7)程序员避免测试自己的程序。
2.测试方法
软件测试力法一般分为两大类:
动态测试方法与静态测试方法,
根据测试用例的设计方法不同,分为黑盒测试与白盒测试两类。
〔1)静态测试
静态测试指被测试程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。
(2)动态测试
动态测试指通过运行程序发现错误。
一般意义上的测试大多是指动态测试。
对软件产品进行动态测试时,也采用两种方法,分别称为黑盒测试法和白盒测试法。
a)黑盒法‘
该方法把被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求。
因此,黑盒测试义称为功能测试或数据驱动测试。
通过黑食测试主要发现以下错误:
1是否有不正确或遗漏了的功能。
2在接口上,能能否正确地接收输入数据,能否产生正确的输出信息
3访问外部数据是否有错
4性能上是否满足要求。
等等。
b)白盒法
该方法把测试对象看做是一个打开的盒子,测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础。
对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。
1.3.8维护
软件维护是在软件交付使用以后对他所做的改变。
软件维护的内容有四种:
校正性维护、适应性维护、完善性维护和预防性维护。
1、校正性维护
软件交付使用后,由于在软件开发过程中产生的错误并没有完全彻底的在测试中发现,因此必然有一部分隐含的错误被带到维护阶段上来,这些隐含的错误在某些特定的适用环境下会暴露出来。
为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就成为校正性维护。
这种维护活动占整个维护工作的21%。
2、适应性维护
为了使应用软件适应这种变化而修改软件的过程称为适应性维护。
这种维护活动占整个维护活动的25%。
完善性维护
3、预防性维护
在软件漫长的运行时期,用户往往会对软件提出新的功能要求与性能要求。
这是因为用户的业务会发生变化,组织机构也会发生变化。
为了适应这些变化,应用软件原来的功能和性能需要扩充和增强。
这种增加软件功能、增强软件性能、提高软件运行效率而进行的维护活动称为完善件维护。
这种维护性活动数量较多,占整个维护活动的50%。
4.预防性维护
为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。
这种维护活动只占很小的比例,为4%。
1.4课程设计课题选题及考核
1.4.1课程设计选题
恰当的选题是开展好课程设计的前提,选题要结合所学专业,对所选课题,要认真进行调查研究、系统分析。
选题应当符合以下要求;
1选题必须符合计算机专业培养目标的要求,体现本专业的特色
2所选课题应尽量使用最近学习的开发工具,并结合其教授课程的知识点、内容进一步延伸,在实用方面具有更强的针对性;
3题目具有较好的代表性,选题应尽可能结合生产、科研、管理、教学等方面的实际需要,也可以选用符合教学要求的模拟题目:
4选题的难易程度要适当,以学生可以在2—4周的规定时间内完成为宜:
5选题一般由指导教师下达,可以每人独立完成相同的题目,也可以根据选题难度情况,对学生进行分组,比如5—6人一组,每组共同完成一题。
1.4.2课程设计考核
在课程设计的考核中,一般采用五级(忧、良、中、及格、不及格)评分制,最后成绩依据课程设计过程中学生完成工作情况、最后递交的软件源码和设计报告质量来进行评定。
在设计过程中,可以由老师进行两到三次的进度检查,记录学牛的工作进展情况。
采用进度检查的方式能够更好地控制学生设计工作的真实性,可以作为指导老师最后评定成绩的一个重要标准。
学生在设计课程结束后,上交一份课程设计报告,同时把个人完成的软件源码一起上交给指导老师,作为指导老师评定最后成绩和成绩复查时的资料。
指导老师可以根据课程特点,要求学生上交其他文档和资料。
课程结束后,指导老师给出成绩,并根据情况填写课程设计总结报告。
第x章投票系统
x.1需求分析
本系统实现了网络上较为常用的投票功能,为调查、收集、统计各类用户的意见反馈信息提供了一个方便易用的网上平台。
本系统遵循软件工程标准,并按照软件工程规定的流程进行项目的开发。
x.1.1系统概述
本系统是一个简单的投票系统,主要提供以下功能:
系统首页上显示所有投票选项的列表,用户可以通过选中某个选项并单击“投票”按钮进行投票操作。
另外,还提供查看投票详细信息的超链接,用户单击后可在另一页面上看到各个投票选项目前的投票情况,主要包括各选项所得的票数、占总票数的百分比等信息,并且以柱形图显示各选项的得票数,可以让用户从直观上看到各项的得票情况。
最后,还提供系统维护功能,当用户以合法的管理员身份登录后,可以利用该功能来添加、删除投票选项。
x.1.2系统运行环境
1.硬件环境
2.软件环境
x.1.3功能需求描述
投票系统主要是为用户提供一个方便易用的投票界面,同时还具有查看投票、添加和删除投票选项的功能。
投票系统主要需要实现以下一些基本功能。
1投票:
用户在投票系统首页上,可以通过选中每个投票项前面的单选按钮并单击“投票”按钮来进行投票。
2查看投票情况;用户在投票系统首页上可以通过单击“查看投票”超链接来查看当前的最新投票情况,包括各投票项的得票数、得票率等。
3管理员登录:
当用户在投票系统首页上单击“投票系统维护”超链接时,需要用户输入合法的用户名和密码,成功登录后,可以使用系统维护功
4删除投票选项:
用户作为管理员进入系统维护页而后,可以通过单击显示在每个投票项右边的“删除”超链接来删除对应的投票选项。
5添加投票选项:
用户作为管理员进入系统维护页面后,可以通过在文本框输入新的投票项名称并单击“提交”按钮来添加新的投票选项。
x.2总体设计
在前面对用户需求的分析和研究的过程中,对于本系统中几个主要的功能模块大致有了一个抽象的认识。
下面通过总体设计,给出投票系统的模块结构、流程描述和用户界面布局,
x.2.1开发与设计的总体思想
现在许多网站都提供用户投票功能,本系统可作为一个子模块链入到任何一个需要投票功能的网站中,因此系统界面的设计应该尽量做到简洁友好,方便用户的使用。
系统采用B/S模式,使用JSP进行服务器端动态网页的开发。
x.2.2系统模块结构图
依据需求分析结果,投票系统可以分为三个模块:
数据库访问模块、投票功能模块和系统维护模块,如图2。
1所示。
x.2.3模块设计
1数据库访问模块:
提供连接、访问数据库的功能,利用JavaBean实现,当JSP页面中需要访问数据库时直接调用这个JavaBean。
模块功能树如图2—2所示。
2投票功能模块:
提供投票功能以及查看投票功能,用户通过“投票”按钮对选中项进行投票操作,还可以通过“查看投票”链接查看各个投票选项白前的得票情况。
模块功能树如图2-3所示。
3系统维护模块:
包括管理员的登录、投票选项的添加、删除功能。
系统维护模块功能树如图2-4所示
x.2.4系统流程描述
系统的流程图如图2-5所示。
x.2.5界面设计
界面设计应遵循简介美观、方便易用的基本原则,具体设计如下。
投票系统主页面设计,具体设计效果图如图2-6所示
图2-6投票系统主页面设计效果图
查看投票情况页面设计,具体设计效果图如图2-7所示
图2-7查看投票情况页面设计效果图
管理员登陆页面设计,具体设计效果如图2-8所示
图2-8管理员登陆页面设计效果图
系统维护页面设计,具体设计效果如图2-9所示
图2-9系统维护页面设计效果图
X.2.6数据库设计
本系统采用Access数据库,在数据库vote中使用的数据表结构设计如下。
(1)名称:
投票信息表
表名称表示:
vote
数据表vote用来存储所有投票选项的id号、名称、得票数等信息,表的结构如表2-1
表2-1数据表vote的结构
名称
字段名称
数据类型
主键
非空
投票项id号
id
数字(自动编号)
Yes
Yes
投票项名称
item
文本
No
No
投票项的得票数
count
数字
No
Yes
表vote中的测试数据如图2-10所示
图2-10数据表vote中的测试数据
(2)名称:
管理员信息表
表名称标识:
admin
数据表admin用来存储管理员的用户名和密码信息,表的结构如表2-2所示。
表2-2数据表admin的结构
名称
字段名称
数据类型
主键
非空
管理员id号
Id
数字(自动编号)
Yes
Yes
管理员用户名
Name
文本
No
No
管理员口令
Password
文本
No
No
表admin中的测试数据如图2-11
图2-11数据表admin中的测试数据
本系统采用JDBC-ODBC桥的方式链接数据库,因此要首先配置一个ODBC数据源,数据源名称定为vote
2.3详细设计
基于系统需求分析与系统总体设计的结论,下面按照模块的划分来分别阐述系统的详细设计和实现过程。
2.3.1应用部署图
投票系统对应于一个名为lab1的web应用,具体的部署情况及目录结构如图2-12所示。
2.3.2访问数据库的JavaBean
本系统使用一个JavaBean来专门完成数据库的连接、访问等操作,当在某几个JSP页面中需要访问数据库时,就可以直接调用这个JavaBean,而不是把重复的代码都重写一遍,这样使得整个程序变得更加简捷、清晰。
接下来,实现访问数据库JavaBean。
1.模块描述
负责完成与数据库的链接、访问、关闭等操作。
2.类的设计与实现
名称:
DBBean.java
功能:
负责完成与数据库的连接、访问、关闭操作。
属性设计:
如表2-3所示
表2-3类属性定义表
属性名
属性类型
访问控制
描述
DriverStr
Sting
私有
要加载的描述驱动程序类名
ConnStr
String
私有
连接数据库url
Conn
Connection
私有
驱动程序和指定数据库之间的连接对象
Stmt
Statement
私有
语句对象
构造方法设计
方法定义:
publicDBBean()
IPO图
输入:
无
处理:
加载由属性driverStr指定的驱动程序,若加载中出现异常,则显示异常描述信息。
输出:
无。
程序清单:
PublicDBBean()
{
Try{
//加载驱动程序
Class.forName(driverStr);
}catch(ClassNotFoundExceptionex){
System.out.println(ex.getMessage());
}
}
主要设计方法
方法一:
executeQuery方法
方法定义:
publicResultSetexecuteQuery(Stringsql)
IPO图
输入:
要执行的SQL语句。
处理:
创建驱动程序和指定数据库间的连接对象,建立语句对象,利用语句对象的executeQuery()方法执行SQL语句,井将执行结果存放于局部变量rs中。
输出:
查询结果集rs。
程序清单:
//执行查询SQL语句,返回值是一个满足查询条件的结果集
publicResultSetexecuteQuery(stringsql)
(
ResultSetrs=null;
Try{
//获取驱动程序对象和指定数据库之间的连接对象
Conn=DriverManager.getConnection(connStr);
//建立语句对象
stmt=conn.createStatement();
//执行SQL语句,返回一个结果集对象
rs=stmt.executeQuery(sql);
catch(SQLExceptionex){
System.out.println(ex.getMessage());
}
returnrs;
}
方法二:
executeUpdate方法
方法定义:
PublicintexecuteUpdate(Stringsql)
IPO图
输入:
要执行的SQL语句。
处理:
创建驱动程序和指定数据库间的连接对象,建立语句对象,利用语句对象的executeUpdate()方法执行SQL语句,并将执行结果存放于局部变量result中。
输出:
更新的记录个数result
程序清单:
//执行添加、修改和删除SQL语句,返回值是受到此次操作影响的记录个数
publicintexecuteUpdate(Stringsql)
{
intresult=0;
try{
conn=DriverManager.getConnection(connStr);
stmt=conn.createStatement();
result=stmt.executeUpdate(sql);
}
Catch(SQLExceptionex){
System.out.println(ex.getMessage());
}
returnresult;
}
方法三:
close方法
方法定义:
publicvoidclose()
IPO图
输入:
无
处理:
调用Connection对象和Statement对象的close()方法,关闭语句对象和连接对象。
输出:
无。
程序清单:
//关闭方法
publicvoidclose()
{
Try{
//关闭语句对象
stmt.close();
//关闭连接对象
conn.close();
}
catch(SQLExceptionex)
{
System.out.println(ex.getMessage());
}
}
编译和部署JavaBean
编写好的JavaBean,可以使用JDK中的javac命令进行编译,需要注意的是,不带参数的javac命令没有生成目录的能力,需要使用带-d参数的命令进行编译:
javacDBBean.java–d.
其中的“.”代表当前目录,编译成功后,会在当前目录下生成一个名为dbBean
的目录,在该目录中有编译好的字节码文件DBBean.class。
然后,将dbBean子目录以及该目录中的字节码文件复制到“lab1\WEB-INF\classes中,重启Tomcat服务器即可lab1中的各个JSP页面里使用该JavaBean。
2.3.3投票功能模块
投票
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- jsp 课程设计 软件 综合 实践