资源描述
安徽建筑工业学院毕业设计(论文) 安徽建筑工业学院 毕 业 设 计 (论 文) 课 题 新闻发布系统的设计与实现 后台管理模块 - 5 -摘要随着计算机科学的发展,数据库技术在Internet中的应用越来越广泛,为广大网络用户提供了更加周到和人性化的服务。个性化已逐渐成为当今Web应用的潮流。利用JSP技术开发的网站新闻管理系统,实现了网站新闻的动态管理,因为可以用来动态发布新闻信息,所以使得对信息的管理更加及时、高效,提高了工作效率。新闻发布系统后台对新闻作了详细的分类,前台以分类形式显示新闻的详细信息,满足了人们浏览新闻网时分类查看新闻信息的要求,同时提供新闻信息查询功能,方便浏览者查找相关的新闻信息。新闻网后台则通过对总管理员设置和管理员添加等模块对网站管理员进行管理在网络技术的领域里,传统的商务网站的管理方式有两种,一是静态HTML页面,更新信息时需要重新制作页面然后上传页面并修改相应链接,然而随着Internet的进一步发展,这种静态Web站点的开发与维护变得越来越困难,而且不能与浏览者进行有效交互,从而使得这种方法已不多用。二是基于ASP、PHP或者JSP和脚本语言,将动态网页和数据库结合,通过应用程序来处理信息,这是目前较为流行的做法。本文论述的就是采用jsp + javabean + MySQL开发环境开发动态的Web网络新闻发布系统。关键字:Internet,jsp,web开发,新闻系统AbstractWith the development of computer science, database technology is more widely on the Internet and provide a more thoughtful and humane services for the majority of network users. Personalization has gradually become the trend of todays Web applications. JSP technology development website news management system to realize the dynamic management of the site news, because it can be used to dynamically publish news and information, it makes the management of information is more timely, efficient, and improve the work efficiency.The press release made a detailed classification system background on the news, display detailed information on the news front to the form of classification to meet the requirements of the people browsing the News Category View news and information, while providing news and information inquiry function, the convenience of the viewer to find related newsmessage. News background by the site administrator to manage the total set by the administrator and the administrator to add other modules.In the field of network technology, the traditional business management of the site There are two ways, one static HTML pages, update the information need to re-create the page and then upload the page and modify the link, but with the further development of Internet, which a static Web site development and maintenance has become increasingly difficult, and can not effectively interact with the viewer, which makes this method has limited use. 2 is based on ASP, PHP or JSP, and scripting languages, dynamic web pages and database integration, through the application of procedures for handling information, which is the more popular approach. Of this paper is to use jsp + javabean + MySQL development environment for developing dynamic Web network news distribution system.Keywords:Internet,jsp,web development,News system目 录摘要IAbstractII1 绪论- 1 -1.1系统开发的背景- 1 -1.2 系统的研究目的和意义- 1 -2 系统分析- 3 -2.1 需求分析- 3 -2.2 可行性分析- 3 -3 系统设计- 4 -3.1新闻参与者- 4 -3.2新闻用例- 4 -3.3用例的事件流描述- 5 -3.3.1新闻浏览- 6 -3.3.2查询新闻- 6 -3.3.3维护系统- 6 -3.3.4维护一级栏目信息- 7 -3.3.5维护二级栏目信息- 8 -3.3.6登录- 8 -3.4功能图- 9 -3.5对性能的规定- 10 -3.6输入输出要求- 10 -3.7数据管理能力要求- 11 -3.8运行环境要求- 11 -4概要设计- 12 -4.1总体设计- 12 -4.2结构- 12 -4.3数据库设计- 14 -5详细设计与实现- 18 -5.1程序系统的结构- 18 -5.2程序描述- 19 -5.3功能- 20 -5.4流程逻辑- 20 -6界面设计- 22 -6.1首页- 22 -6.2一级栏目- 23 -6.3二级栏目- 23 -6.4新闻明细- 23 -6.5后台登陆- 24 -6.6后台管理主界面- 24 -6.7修改一级栏目以及管理其对应的二级栏目- 25 -6.8修改二级栏目以及管理其对应的新闻- 25 -7系统调试与测试- 26 -7.1程序调试- 26 -7.2程序的测试- 26 -7.2.1测试的重要性及目的- 26 -7.2.2测试的步骤- 28 -7.2.3测试的主要内容- 28 -8总结与展望- 29 -致谢- 30 -参考文献- 31 -附录- 32 -IV新闻发布系统的设计与实现 后台管理模块电子与信息工程学院 XXXXXXXXXXXXXX(专业) XXXXX级X班 XXXXX(姓名)指导老师:XXX XXX1 绪论1.1系统开发的背景 美国麻省理工学院斯隆管理学院院长来斯特认为:“在历史上,无论个人、企业还是国家,若要致富,一是要拥有比竞争对手更多的资源,二是要天生富有,获得人均占有资本高于别人的优势,三是使用更高超的技术,四是要有更多的技术工人。具备上述条件,加上合理的管理,成功便有了保障。”,然而,新技术和新体制从根本上改变了四大竞争优势,自然资源实际上不再是竞争的优势。天生富有的有时也不再那么重要。技术本身调了个儿,新产品技术成为了更重要的竞争手段。劳动者的信息能力和生产资料中的信息含量竞争力的主要特征,在这样一个实行的竞争优势来源变化时期,信息管理和信息字的有效开发利用成为竞争力的主要来源。只有通过信息资源的开发利用,才能够提高劳动者的信息能力和生产资料中的信息含量,减少能耗、物耗。提高生产率、提高管理决策水平,从而提高国家的综合国力和竞争力、提高全体人民的生活质量,从这样的角度来看,信息资源的有效利用是社会经济发展的必然趋势。1.2 系统的研究目的和意义Internet的蓬勃发展,使新闻的传播方式发生了巨大的变化,传统的信息传播媒体电视、广播、报纸已经不再是人们茶余饭后的主要精神甜点,人们更多的开始关注网络新闻。由于互联网所容纳的信息量大、内容丰富、信息及时、准确,更有相关信息的全面的介绍与比较,大大地方便了人们的阅读,因此在短短几年的时间里,互联网便济身于众多媒体之间,并具有相当一部分媒体人群。借此东风,新闻网也迅速发展起来,它内容丰富,涉及到商业、工业、农业、银行、财政、教育、娱乐、信息等各个产业,信息量大,不仅有实事新闻,还有相关的行业信息,同时新闻网具有互联网所具备的一切特性。作为计算机发展最迅速的领域之一的数据库技术,已经形成了一整套独有的理论,并广泛地应用于人们的生产和生活中。数据库技术与网站的结合是当今Web技术的一个热点。有了数据库的支持,可以扩展网页的功能,可以方便地设计出交互式页面,可以构造功能强大的后台管理系统,可以为网站的更新、维护提供极大的方便。因此,作为网络开发者或管理者,数据库知识是必不可少的。在当前社会,信息已成为一种隐型的财富,人们对信息的需求再也不是局限于单纯的电视、报纸等大众途径。随着Internet在中国的发展日新月异,人们在日常生活中也越来越多地使用这项新技术来为自己的工作和生活服务,人们通过网络来获取信息的需求越来越大。基于此种考虑,网络开发者们提出了一种“基于WEB的新闻发布系统”,该系统能够实现在线更新最新新闻、设置新闻分类导航等功能,此外,网站管理员也可在线对后台进行管理,例如新闻的修改、删除等操作,以保证新闻的及时、准确性。2 系统分析2.1 需求分析通过相关调查,要求网站具有以下功能;1.通过网络,展示各行业新闻及相关信息。2.提供新闻搜索功能。3.设置新闻人物投票功能,并统计投票数量。4.支持其他网站的友情链接。5.为后台管理提供管理入口。2.2 可行性分析新闻发布系统后台对新闻作了详细的分类,前台以分类形式显示新闻的详细信息,满足了人们浏览新闻网时分类查看新闻信息的要求,同时提供新闻信息查询功能,方便浏览者查找相关的新闻信息。新闻网后台则通过对系统管理员设置和管理员添加等模块对网站管理员进行管理,保证了网站的安全性。3 系统设计3.1新闻参与者过对系统需求的分析,可以确定系统有两个参与者:user(用户),admin(管理员)。参与者的描述如下:(1) user描述:用户可以浏览新闻,查看新闻,查询所需要的新闻以及与其相关的新闻,如果对某些新闻有些建议,可对新闻进行评论。 示例:浏览该网页的所有用户或者组织。(2) admin描述:系统管理员需要维护系统,可以添加,修改,删除新闻;可以添加,修改,删除一级标题以及二级标题。示例:系统管理员,一级栏目管理员,二级栏目管理员。3.2新闻用例前面已经识别出了参与者,通过对需求的进一步分析,可确定系统中有如下用例存在: (1) 新闻浏览 本用例提供了浏览新闻的功能。(2) 查看新闻 本用例提供了查看所需新闻的功能。(3) 查询新闻 本用例提供了查询所需新闻的功能。(4) 维护系统信息 本用例提供了添加,修改,删除以及显示所有一级栏目。(5) 维护一级栏目信息 本用例提供了添加,修改,删除以及显示当前一级栏目下的二级栏目。(6) 维护二级栏目信息 本用例提供了添加,修改,删除以及显示当前二级栏目下的新闻信息。(7) 登录 本用例描述了管理员如何登录进入软件管理后台。在识别出参与者和用例后,要想建立用例图,还需要识别出他们之间的关系。 新闻浏览,查看新闻,查询新闻,相关新闻这些动作是由user执行的,维护系统信息,维护一级栏目信息,维护二级栏目信息是由参与者admin执行。为了系统的安全性,系统还需要提供进行身份验证的功能,以确保只有具有权限的admin才可以进入软件系统后台,进而管理软件的功能,所以admin必须与用例“登录”交互,也即admin在使用系统前,要使用用户名和密码进行登录,系统验证用户的密码正确后,管理员才可以执行进一步的操作。 系统的用例图如图2-1所示:图2-1 系统的用例图3.3用例的事件流描述事件流是对完成用例行为所需的事件的描述。它描述系统应该做什么,而不是描述系统应该怎么做。 开始,只是对执行用例的常规流所需的步骤的简单描述。随着分析的进行,通过添入更多的详细信息,步骤不断细化。最后,将例外流添加到用例的事件流描述中。 新闻发布系统的用例事件流描述如下:3.3.1新闻浏览这个用例开始前,管理员已将新闻发布到此系统中。如果成功,则用户可使用此用例。当用户浏览新闻时,此用例启动。如果user选择新闻链接,则执行分支流S-1:新闻链接。如果单击一级栏目链接,则执行分支流。S-2:一级栏目链接。S-1:新闻链接。点击要浏览的新闻进行浏览。 S-2:一级栏目链接。点击栏目区中的一级标题,选择自己所想了解的方面,进去一级栏目页面,从而进行浏览新闻。3.3.2查询新闻这个用例开始前,管理员已将新闻发布到此系统中。如果成功,则用户可使用此用例。当用户查询新闻时,用例启动。用户根据自己的需要查询新闻。3.3.3维护系统这个用例开始前,系统管理员必须登录到系统中。如果这个用例成功,系统可添加,修改或者删除一级栏目。否则,系统的状态没有变化。当系统管理员想维护系统信息时,用例启动。系统要求管理员选择所想执行的活动(添加,修改,删除)。如果所选添加一级栏目,则执行分支流S-1:添加一级栏目。如果所选修改一级栏目,则执行分支流S-2:修改一级栏目。如果所选删除一级栏目,则执行分支流S-3:删除一级栏目。如果是添加,修改,删除二级栏目,则按照2.3.4 选择要执行的分支流。如果是添加,修改,删除二级栏目下的新闻信息,则按照2.3.5选择要执行的分支流。 S-1:添加一级栏目 (1)提供一级栏目的编号,名称以其对它的描述。 (2)系统存储添加的一级栏目信息(E-1)。 S-2:修改一级栏目 (1)提供一级栏目的信息。(2)查询并显示一级栏目的信息(E-2),修改相应的信息。(3)查询并修改一级栏目的信息。 S-3:删除一级栏目 (1)提供一级栏目的信息。 (2)查询一级栏目(E-2)。 (3)从系统中删除一级栏目的信息。 E-1:若一级栏目已存在,系统显示提示信息,用例终止。E-2:若查询不到一级栏目,系统显示提示信息,用例终止。3.3.4维护一级栏目信息开始前,系统管理员必须登录到系统中。如果这个用例成功,系统可添加,修改或者删除二级栏目。否则,系统的状态没有变化。当系统管理员想维护二级栏目信息时,用例启动。系统要求管理员选择所想执行的活动(添加,修改,删除)。如果所选添加二级栏目,则执行分支流S-1:添加二级栏目。如果所选修改二级栏目,则执行分支流S-2:修改二级栏目。如果所选删除二级栏目,则执行分支流S-3:删除二级栏目。如果是添加,修改,删除二级栏目下的新闻信息,则按照3.3.6选择要执行的分支流。 S-1:添加二级栏目 (1)提供二级栏目的编号,名称以其对它的描述。 (2)系统存储添加的二级栏目信息(E-1)。 S-2:修改二级栏目 (1)提供二级栏目的信息。 (2)查询并显示二级栏目的信息,修改信息。(3)更新系统中二级栏目的信息。 S-3:删除二级栏目 (1)提供二级栏目的信息。 (2)查询二级栏目(E-2)。 (3)从一级栏目中删除二级栏目的信息。 E-1:若二级栏目已存在,系统显示提示信息,用例终止。 E-2:若查询不到二级栏目,系统显示提示信息,用例终止。3.3.5维护二级栏目信息用例开始前,系统管理员必须登录到系统中。如果这个用例成功,系统可添加,修改或者删除二级栏目中的新闻信息。否则,系统的状态没有变化。当系统管理员想维护二级栏目新闻信息时,用例启动。系统要求管理员选择所想执行的活动(添加,修改,删除)。如果所选添加二级栏目中的新闻,则执行分支流S-1:添加新闻。如果所选修改新闻,则执行分支流S-2:修改新闻。如果所选删除二级栏目下的新闻,则执行分支流S-3:删除新闻。 S-1:添加新闻 (1)提供新闻的信息。如编号,名称以其它。 (2)系统存储添加的新闻信息(E-1)。 S-2:修改新闻 (1)提供新闻的信息。 (2)查询并显示新闻的信息(E-2),修改相应的信息。 (3)更新系统中新闻的信息。 S-3:删除新闻 (1)提供新闻的信息。 (2)查询新闻(E-2)。 (3)从二级栏目中删除新闻的信息。 E-1:如果新闻已存在,系统显示提示信息,用例终止。 E-2:如果查询不到信息,系统提示信息,用例终止。3.3.6登录用例成功,参与者可以启动系统并使用系统所提供的功能。反之,系统的状态不变。当管理员希望登录到系统中时,用例启动。系统提示管理员输入用户名和密码并选择其类型。管理员输入用户名和密码并选择其类型。系统验证输入的用户名,密码及类型,若正确(E-1),则用户登录到系统中。E-1: 如果管理员输入无效的用户名和/或密码,系统显示错误信息。用户可以选择返回基流的起始点,重新输入正确的用户名和/或密码;或者取消登录,用例结束。3.4功能图a.前台要实现的主要功能如图3-1所示: 进入主页面浏览新闻单击新闻链接进入一级栏目页面浏览新闻单击一级栏目链接输入主页地址图2-2 前台实现的主要功能b.新闻发布系统后台管理如图3-2所示:显示后台登录页面显示后台管理主页面登录成功登录失败添加,修改,删除一级栏目添加,修改,删除新闻添加,修改,删除二级栏目图3-2 新闻发布系统后台管理3.5对性能的规定a.操作应该方便、灵活。b. 系统应有较高的稳定性。c. 系统应有较高的安全性。d. 系统应有较高的容错性。e.速度上要求前台要能够很快地反应用户,后台操作不能出现超时现象。3.6输入输出要求a. 本实例将采用新闻模块化,在数据库中建有新闻模板表格,在新闻录入时,通过替换函数将模板内的相关内容替换为输入的内容,然后利用文件读写技术将替换后的代码写进新的文件中,形成一个新的新闻文件。所以系统中所有的新闻文件都是在新闻模板的基础上生成的。新闻文件的文件名也是根据系统时间自动生成的。b. 对于输出,采用输出缓存技术,可以大大提高系统性能,尤其针对这种访问量大的新闻网站更是如此。3.7数据管理能力要求a.能处理大量的新闻数据。b. 安全指数高,防止黑客攻击。c. 负荷能力强,防止数据量过大,而影响速度。d.采用日志备份,追查非法用户。e.遵循数据完整性规则,保证数据实际有效。3.8运行环境要求a. 硬件要求: CPU的型号:AMD Anthon(tm) 64*2 Dual Core CPU 4400+ 内存:1G或者以上 硬盘:150G或者以上数据库环境:MySQL服务器环境:Windows XP, Apache Tomcatb软件环境:myEclipse + tomcatc. 输入设备有鼠标,键盘;输出设备有显示器,音箱4概要设计4.1总体设计本系统主要的处理流程图如图4-1所示:管理首页添加新闻删除新闻维护新闻分类选择新闻进入新闻列表完成修改新闻验证登录图4-1 处理流程图4.2结构系统结构如图4-2所示:管理员登陆分类管理新闻管理添加目录修改目录删除新闻新闻详情推荐新闻新闻首页删除目录添加新闻修改新闻会员注册新闻发布系统后台管理前台管理图4-2 系统结构图(1) 后台管理模块 本子系统主要用于实现管理员登陆,分类管理和新闻管理3个子系统,也是本系统的关键部分。 管理员登陆:本模块是系统用于管理员登陆系统,对系统进行维护和管理,要输入帐号和密码才能进入系统。 分类管理:该子模块包含目录的添加,修改和删除三个部分。 新闻管理:该子模块包含新闻的添加,修改和删除以及文件上传四个部分。(2) 前台阅读模块该模块主要是和用户的交互界面,该模块分为新闻首页,搜索新闻,新闻详情和会员注册4个子模块。 新闻首页:用户可以看到所有新闻的大概情况。 搜索新闻:将比较新的新闻和比较重要的新闻推荐给用户。 新闻详情:将每条新闻的详细情况告知用户。 会员注册:会员注册后可发布新闻。4.3数据库设计 经过对数据库的需求分析,了解了系统的存储结构需求后,根据数据建摸的结果,我们可以得出4个表结构,即admin,column1,column2,news. 本系统采用的是MySql数据库,基于以上的需求分析,数据库中的各种表设计如下。 (1)admin表:管理员表。用于存放管理员信息;建表语句:create table admin( Id int primary key auto_increment, username varchar(20), password varchar(20),type int);详细字段见表4-1。表4-1 表名称:admin名称关键字类型长度备注IdPIntusernamevarchar20passwordvarchar20typeint管理员状态:0表示系统管理员;1表示一级栏目管理员;2表示二级栏目管理员(2)column1表:一级栏目表。用来存放一级栏目信息;建表语句:create table columnl( Id int primary key auto_increment, name varchar(20), description text(100);详细字段见表4-2。表4-2 表名称:column1名称关键字类型长度备注IdPInt一级栏目编号namevarchar20一级栏目名称descriptiontext100一级栏目说明(3) column2表:二级栏目表。用来存放二级栏目信息;建表语句:create table column2( Id int primary key auto_increment, name varchar(20), description text(100), Column1_id int);详细字段见表4-3。 表4-3 表名称:column2名称关键字类型长度备注IdPInt二级栏目编号namevarchar20二级栏目名称descriptiontext100二级栏目说明Column1_idint所属一级栏目编号(4)news表:用来存放新闻信息;建表语句:create table news( id int primary key auto_increment, title varchar(50),content longtext,Time date,column2_id int,count int,status int);详细字段见表见表4-4。表4-4 表名称:news名称关键字类型长度备注idPInt新闻编号titlevarchar50contentlongtextTimedatecolumn2_idintcountintstatusint数据库连接主要程序:package com.crazy4java.data;import java.sql.*;public class DBNews /取得数据库的连接public static Connection getConn()String driver = com.mysql.jdbc.Driver;String url = jdbc:mysql:/localhost:3306/DB;Connection conn = null;tryif(conn = null)Class.forName(driver);conn = DriverManager.getConnection(url,root,root);System.out.println(连接成功);catch(Exception e)e.printStackTrace();return conn; /释放数据库的连接public static void releaseConn(Connection conn) tryif(conn != null)conn.close();catch(Exception e)e.printStackTrace();/* * param args */测试连接的主方法public static void main(String args) / TODO Auto-generated method stubDBNews.getConn();5详细设计与实现5.1程序系统的结构功能需求与程序的关系如表5.1所示。表5.1 功能需求与程序的关系功能需求程序层次结构管理员登陆图5-3添加目录图5-3修改目录图5-3删除目录图5-3添加新闻图5-1修改新闻图5-1删除新闻图5-1新闻首页图5-2搜索新闻图5-2新闻详情图5-2会员注册图5-2后台登录图5-2新闻管理News Management Unit修改新闻Renew News Unit删除新闻Delete News Unit添加新闻Add News Unit图5-1 新闻管理层次结构图 前台阅读模块搜索新闻新闻详情会员注册新闻首页 图5-2 前台阅读模块图5-3 后台管理模块5.2程序描述“新闻发布系统”用于组建一个新的新闻发布管理,包括客户端和服务端,以及各种新闻的管理,包括新闻内容的发布,修改和删除。在设计新闻发布过程中,为了便于对新闻发布管理系统的测试,一般首先设计好新闻发布部分,以便可以向数据库中录入部分新闻数据,从而可以设计调试显示新闻列表和浏览新闻部分功能,在发布新闻时,要选好新闻的类型,然后再发布上去。在添加新闻过程中难免会出现错误,修改新闻是非常重要的。实现修改功能的过程一般是首先将指定的内容从数据库中读取出来,然后显示在页面的输入框中,然后再进行修改。删除一个新闻信息的第一步,只有当查找到合理的所需删除的新闻内容,才可以建立其隶属的关系,然后再删除录入新闻消息。关于上传新闻内容也是在原来的新闻内容基础上,先查看是否有相同的内容,符合上传条件后再上传内容。5.3功能说明该程序应具有的功能,可采用IPO图(即输入一处理一输出图)的形式。1. 添加新闻功能如表5-2所示。表5-2 新闻添加功能程序名称添加新闻相关数据库表news输入查找需要添加的新闻类型输出查找类型成功并添加新闻程序处理说明 调用方法(创建本窗体)。 在数据库中查询所想添加的新闻类型 在数据库中查到该信息后添加它。2修改新闻功能如表5-3所示。表5-3 修改新闻功能程序名称修改新闻相关数据库表news输入查找需要修改的新闻输出查找新闻成功并修改程序处理说明 调用方法(创建本窗体)。 在数据库中查询所想修改的新闻信息 在数据库中查到该信息后修改。3删除新闻功能如表5-4所示:表5-4 删除新闻功能程序名称删除新闻相关数据库表news输入查找需要删除的新闻输出查找数据成功并删除程序处理说明 调用方法(创建本窗体)。 在数据库中查询所想删除的新闻信息 在数据库中查到该信息后删除它。5.4流程逻辑1添加新闻流程图如图5-4所示。 查看所添加新闻的类型添加类型是否存在此类型添加新闻NY保存新闻退出操作图5-4 新闻添加流程2修改新闻流程图如图5-5所示。查找要修改的新闻修改新闻是否存在此新闻退出操作YESNO图5-5 修改新闻流程3删除新闻流程图如图5-6所示:查找要删除的新闻删除新闻是否存在此新闻退出操作YN图5-6 删除新闻流程6界面设计6.1首页主界面主要是用来发布新闻的,其显示内容如图6-1所示:图6-16.2一级栏目一级栏目主要是显示新闻的主体内容,如图6-2所示图6-26.3二级栏目二级栏目是在一级栏目的基础上,更详细的显示主体内容,如图6-3所示:图6-36.4新闻明细新闻明细是点击一个新闻,能显示出新闻的详细内容,如图6-4所示:图6-46.5后台登陆后台登陆界面,是管理员才能提交登录的,可以有三种不同等级的管理员,管理员要根据自己的等级来选择登录,登录界面如图6-5所示:图6-56.6后台管理主界面一级栏目管理员登录成功的界面如图6-6所示,一级栏目管理员可以对一级栏目进行添加或删除。图6-66.7修改一级栏目以及管理其对应的二级栏目二级栏目管理员登录成功的界面如图6-7所示,二级栏目管理员可以对二级栏目进行添加或删除。图6-76.8修改二级栏目以及管理其对应的新闻系统管理员可以直接对新闻进行添加、修改或者删除,界面如图6-8所示:图6-87系统调试与测试7.1程序调试在设计系统的过程中,存在一些错误是必然的。对于语句的语法错误,在程序运行时自动提示,并请求立即纠正,因此,这类错误比较容易发现和纠正。但另一类错误是在程序执行时由于不正确的操作或对某些数据的计算公式的逻辑错误导致的错误结果。这类错误隐蔽性强,有时会出现,有时又不出现,因此,对这一类动态发生的错误的排查是耗时费力的。7.2程序的测试7.2.1测试的重要性及目的(1)测试的重要性软件的测试在软件生命周期中占据重要的地位,在传统的瀑布模型中,软件测试学仅处于运行维护阶段之前,是软件产品交付用户使用之前保证软件质量的重要手段。近来,软件工程界趋向于一种新的观点,即认为软件生命周期每一阶段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发现错误并加以修正,如果不在早期阶段进行测试,错误的延时扩散常常会导致最后成品测试的巨大困难。 事实上,对于软件来讲,不论采用什么技术和什么方法,软件中仍然会有错。采用新的语言、先进的开发方式、完善的开发过程,可以减少错误的引入,但是不可能完全杜绝软件中的错误,这些引入的错误需要测试来找出,软件中的错误密度也需要测试来进行估计。测试是所有工程学科的基本组成单元,是软件开发的重要部分。自有程序设计的那天起测试就一直伴随着。统计表明,在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40以上。而在软件开发的总成本中,用在测试上的开销要占30到50。如果把维护阶段也考虑在内,讨论整个软件生存期时,测试的成本比例也许会有所降低,但实际上维护工作相当于二次开发,乃至多次开发,其中必定还包含有许多测试工作。 在实践中,软件测试的困难常常使人望而却步或敷衍了事,这是由于对测试仍然存在一些不正确的看法和错误的态度,这包括: 认为测试工作不如设计和编码那样容易取得进展难以给测试人员某种成就感。 以发现软件错误为目标的测试是非建设性的,甚至是破坏性的,测试中发现错位是对责任者工作的一种否定。 测试工作枯燥无味,不能引起人们的兴趣。 测试工作是艰苦而细致的工作。 对自己编写的程序盲目自信,在发现错误后,顾虑别人对自己的开发能力的看法。 这些观点对软件测试工作是极为不利的,必须澄清认识、端正态度,才可能提高软件产品的质量。 (2)测试的目的 如果测试的目的是为了尽可能多地找出错误,那么测试就应该直接针对软件比较复杂的部分或是以前出错比较多的位置。 软件测试是为了发现错误而执行程序的过程。 测试是为了证明程序有错,而不是证明程序无错误。 一个好的测试用例是在于它能发现至今未发现的错误。 一个成功的测试是发现了至今未发现的错误的测试。 这种观点可以提醒人们测试要以查找错误为中心,而不是为了演示软件的正确功能。但是仅凭字面意思理解这一观点可能会产生误导,认为发现错误是软件测试的唯一目,查找不出错误的测试就是没有价值的,事实并非如此。 首先,测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。同时,这种分析也能帮助我们设计出有针对性地检测方法,改善测试的有效性。其次,没有发现错误的测试也是有价值的,完整的测试是评定测试质量的一种方法。7.2.2测试的步骤与开发过程类似,测试过程也必须分步骤进行,每个步骤在逻辑上是前一个步骤的继续。大型软件系统通常由若干个子系统组成,每个子系统又由若干个模块组成。因此,大型软件系统的测试基本上由下述几个步骤组成:(1)模块测试 在这个测试步骤中所发现的往往是编码和详细设计的错误。(2)系统测试 在这个测试步骤中发现的往往是软件设计中的错误,也可能发现需求说明中的错误。(3)验收测试 在这个测试步骤中发现的往往是系统需求说明书中的错误。7.2.3测试的主要内容为了保证测试的质量,将测试过程分成几个阶段,即:代码审查、单元测试、集成测试、确认测试和系统测试。 (1)单元测试 单元测试集中在检查软件设计的最小单位模块上,通过测试发现实现该模块的实际功能与定义该模块的功能说明不符合的情况,以及编码的错误。 (2)集成测试 集成测试是将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的问题。如一个模块与另一个模块可能有由于疏忽的问题而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看起来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有错误等。 (3)确认测试 确认测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是确认测试的任务,即软件的功能和性能如同用户所合理期待的那样。 (4)系统测试 软件开发完成以后,最终还要与系统中其他部分配套运行,进行系统测试。包括恢复测试、安全测试、强度测试和性能测试等。 单独对系统的测试主要从以下几方面入手: 功能测试:测试是否满足开发要求,是否提供设计所描述的功能,是否用户的需求都得到满足。功能测试是系统测试最常用和必须的测试,通常还会以正式的软件说明书为测试标准。 强度测试及性能测试:测试系统能力最高实际限度,即软件在一些超负荷情况下功能实现的情况。 安全测试:验证安装在系统内的保护机构确实能够对系统进行保护,使之不受各种非常的干扰。针对本系统主要是对权限系统的测试和对无效数据、错数据、和非法数据干扰的能力的测试。经过上述的测试过程对软件进行测试后,软件基本满足开发的要求,测试宣告结束。 8总结与展望一个功能比较完备的新闻发布系统的实例就构建完毕了。由于篇幅的限制,文中只讲解了部分源代码,不过只要理解了这个部分的内容,是完全有能力理解没有讲解的那部分源代码的。通过这次做毕业设计,使我收益很多。本系统共分为3个模块,我们小组的人分工协作,各完成一部分功能的实现。运用Java语言编写,使用JCBC连接数据库的操作,运用多项技术完成了本系统的开发。在完成该系统的开发过程中遇到了很多的困难。在导师的指导下,我有了思路,详细的了解了系统的各部分的需求分析之后,通过查阅资料,运用所学过的知识完成了系统的开发。在这次的开发过程中,我印象最深的就是代码的调试工作。调试BUG的工作是相当辛苦的,也是开发过程中很重要的步骤,它能够即使找出代码中的错误,给后续的开发工作带来了极大的方便。在调BUG阶段,我发现我的代码最大的BUG就是抛出的NullPointerException(空指针异常),这都是我犯下的低级的错误,经过自己的调试修改,现在代码已是非常的健康了。在这次综合性的毕业设计中,我感受最深的是我的动手实践能力得到了提高,巩固了自己的理论知识,熟练掌握了软件开发的流程,提高了自己的编码能力,同时也培养了严肃认真和实事求是的科学态度、吃苦耐劳的精神和团队合作的意识。为以后参加工作打下了坚硬的基石。致谢毕业设计是大学四年的最后一门课程,也是综合运用所学知识的课程。平常上课学习的都是理论知识,然而亲自动手实践的机会很少,这次毕业设计为我提供了一个很好的机会,可以让我将所学的理论知识运用到实践中,是检验理论知识学习成果的最好方法。经过半年的忙碌和工作,本次毕业设计已经接近尾声,作为一个本科生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有导师的督促指导,以及一起工作的同学们的支持,想要完成这个设计是难以想象的。在这里首先要感谢我的导师XXX老师。他平日里工作繁多,但在我做毕业设计的每个阶段,都给予了我悉心的指导。论文从开题至最后的定稿都离不开XXX老师悉心的指导和严格的要求。XXX老师广博的知识、平易近人的风格、勤勤恳恳的工作作风一定会在我将来的工作中产生深远的影响。值此论文完成之际,谨向导师致以最崇高的谢意!其次要感谢我所在的达内培训公司的导师XXXX老师,在他的帮助下我学到了很多知识,这些知识是平时在课堂上很难学到的,而且我锻炼了自己的动手能力,为我这次毕业设计提供了很大的帮助,也为我以后的工作提供了宝贵的经验。然后要感谢和我一起作毕业设计的同组的同学,他们在本次设计中勤奋工作,克服了许多困难来完成此次毕业设计,并承担了大部分的工作量。如果没有他们的努力工作,此次设计的完成将变得非常困难。最后还要感谢大学四年来所有的老师,为我们打下计算机软件专业知识的基础;同时还要感谢所有的同学们,正是因为有了你们的支持和鼓励。此次毕业设计才会顺利完成。最后感谢安徽建筑工业学院四年来对我的大力栽培。- 36 -参考文献1JSP数据库系统开发完全手册 人民邮电出版社 2006年3月2Visual Basic数据库系统开发完全手册 人民邮电出版社 2006年3月3JSP 信息系统开发实例精选 机械工业出版社 王国辉、牛强、李南南等 2005年7月4Visual Basic信息系统开发实例精选 机械工业出版社 宋坤、赵智勇、刘强等 2005年7月5Visual Basic精彩编程200例 机械工业出版社赛奎春、高春艳等 2003年1月6ASP数据库开发实例解析 机械工业出版社 李严、于亚芳、王国辉2004年12月7Visual Basic工程应用与项目实践 机械工业出版社高春艳、李俊民等 2005年1月8Visual C工程应用与项目实践 机械工业出版社张雨、阮伟良等 5005年1月9JSP工程应用与项目实践 机械工业出版社 陈威、白伟明、李楠2005年2月10Visual Basic 信息系统开发实例精选 机械工业出版社高春艳、李俊民、张耀庭等2005年7月11MySQL技术内幕 机械工业出版社 姜承尧 2010年11月12Visual foxpro数据库开发关键技术与实例应用 人民邮电出版社 周桓、张雨、王国辉 2004年5月13PoweBuilder数据库开发关键技术与实例应用 人民邮电出版社 刘志铭 张振坤 冯文萃 2004年5月附录系统连接到数据库代码:package com.crazy4java.data;import java.sql.*;public class DBNews /取得数据库的连接public static Connection getConn()String driver = com.mysql.jdbc.Driver;String url = jdbc:mysql:/localhost:3306/DB;Connection conn = null;tryif(conn = null)Class.forName(driver);conn = DriverManager.getConnection(url,root,root);System.out.println(连接成功);catch(Exception e)e.printStackTrace();return conn; /释放数据库的连接public static void releaseConn(Connection conn) tryif(conn != null)conn.close();catch(Exception e)e.printStackTrace();/* * param args */测试连接的主方法public static void main(String args) / TODO Auto-generated method stubDBNews.getConn();管理员在数据库的字段:package com.crazy4java.bean;public class Admin private Integer id = null;private String username = null;private String password = null;private Integer type = null;public String getUsername() return username;public void setUsername(String username) this.username = username;public String getPassword() return password;public void setPassword(String password) this.password = password;public Integer getType() return type;public void setType(Integer type) this.type = type;public Integer g
展开阅读全文