基于J2EE的新闻管理系统的设计与实现

TFBOYSer

发布日期: 2019-05-20 22:09:24 浏览量: 1618
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

摘 要

为了实现网上新闻的发布与管理,方便后台人员操作,提高工作效率,构建了基于Java Web技术的新闻管理系统。文中论述了新闻管理系统的开发工具,系统分析、设计、实现和测试过程。分析了系统的可行性和用户需求,给出了系统的总体设计,包括功能模块划分和数据库设计,进一步阐述了系统的详细设计与实现。经过测试,系统实现了用户身份验证,管理员可以对新闻进行添加、修改、删除、查询等操作,普通用户可以浏览和评论新闻。系统比较完善,达到了预期目标。

关键词:新闻管理,系统分析,系统设计,系统测试

ABSTRACT

In order to implement the release and management of news on-line, be convenient to operate for administrators and improve the efficiency, the news management system based on Java Web technology is constructed. In the paper, it elaborates the development tools of the system, the procedure of system analysis, design, implementation and test. First, the feasibility and requirement are anglicized. Next, the general design, including function module dividing and database design is given. Furthermore, the detail design and implementation are expounded. After testing, the system has realized the functions of user authentication. Administrator can add news, update news, delete news, and search news, beside the ordinary people can browse news and review news. The system is nearly perfect, and the expected goal has achieved.

KEY WORDS: News Management, System Analysis, System Design, System Testing

1 绪论

1.1 选题的背景

现在是一个科学技术飞速发展的世纪。随着计算机及网络技术的飞速发展,Internet应用在全球范围内日益普及,当前社会正快速向信息化社会前进,各个领域都向系统化、规范化、自动化的方向发展,信息自动化的作用也越来越大,使得人们的工作效率、工作成绩和生活水平都日益提高。为了满足人们各自兴趣,如阅读新闻或对时事新闻的评论,社会上有不少的各类新闻网站等为人们提供获取新闻及新闻评论的平台。新闻管理系统在信息技术的强有力的推动下,已经叩响了人类的大门。当今社会,人们深深领略到了网络新闻的迅猛发展,在已经迈入21世纪的今天,认识、了解新闻管理系统,是每个人都要认真对待的一项新任务。

1.2 选题的意义

随着Internet的兴起,网络已经成为现代人生活的一部分,人们越来越想在最短的时间内知道所发生的各种新闻。于是新闻自动化便成了人们向往的事情,本系统就是一个基于B/S模式的新闻管理系统,采用的是J2EE技术,实现了网站新闻的动态管理,使得对信息的管理更加及时、高效,提高了工作效率。一方面,它提供了一个新闻发布和管理的功能;另一方面,现在的新闻发布要求与普通的用户实现交互,这一点也是其他一些媒体(电视、电台等)现在无法做到的,以后新闻管理系统会成为人们生活中不可缺少的一部分。

1.3 系统及开发工具简介

本系统是基于Java Web技术的新闻管理系统,其主要功能是信息的发布和管理,涉及到前台用户对新闻的浏览及评论和后台管理员对用户和新闻的管理。在前台新闻浏览模块,对新闻进行分类别展示,并通过栏目导航进入特定的新闻信息分类模块。前台浏览新闻不需要用户登录注册,对所有用户均开放,但是只有注册登录的用户才能发表评论。后台管理一般只有使用了正确的管理员账号和密码才能进入后台管理新闻和用户信息。

本系统是采用Myeclipse8.6作为开发工具,MySQL作为后台数据库的基于B/S模式的新闻管理系统。MyEclipse是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能。MyEclipse可以简化Web应用开发,利用它可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大地提高工作效率。MySQL是一套功能强大的关系型数据库管理系统,适用于Windows平台,采用它作为新闻管理系统的数据来源,可以让用户很简便地实现所要进行的数据存取操作。

2 系统分析

2.1 系统设计原则

新闻是直接与广大用户进行会面的,新闻管理系统是用户对外发布消息的门户,对用户也有非常重要的影响。在进行系统设计时要充分考虑新闻管理工作的特点,需要遵循以下几个原则[1]:

目的要明确

首先,要有明确的设计目标和意图,需要设计开发什么类型的系统,系统应该有哪些功能,只有这样才会构建一个良好的新闻管理系统。

可扩展性较强

新闻管理系统完成并投入使用以后,主、客观条件难免会发生变化,同时在使用过程中也许会发现软件系统不够完善,此外为了加强系统功能,都需要对该系统进行维护和优化,因此在系统开发过程中要预先考虑到系统可扩展性,采取一定方法,增强系统的可扩展性。

实用性和经济性

在新闻管理系统设计开发过程中,要在尽量降低成本的同时,满足系统实用的需要,使的系统操作更加简便,使用效率更高,灵活性更强。

2.2 系统需求分析

作为软件的开发人员,无论开发任何一种软件,设计任何一个软件系统,首先要做的第一步骤就是需求分析[2]。软件需求分析是软件生存期中重要的一步,也是决定性的一步。需求分析的基本任务是准确地回答“系统必须做什么”这个问题,深入描述软件的功能和性能需求,确定软件设计的约束和软件同其他系统元素的接口细节,定义软件的其他有效性需求[3]。

系统的需求分析在整个系统的开发过程中有着举足轻重的作用,只有在做好系统需求分析的基础上,才能开发出好的应用系统。

2.2.1 系统的功能需求分析

在对文献研究以及对相关用户充分调研的基础上,总结出了新闻管理系统的功能需求:

  • 新闻管理系统首先要具有新闻管理的功能,即发布新闻、修改新闻和删除新闻

  • 级别不同的用户要有不同的权限:管理员不仅可以对新闻进行分类、添加、修改和删除,还可以管理普通用户;普通用户登录系统后可对新闻进行浏览和评论

  • 要优化新闻管理流程,提高效率,保证新闻时效性

综上所述,可将新闻管理系统分为前台页面模块和后台管理模块两大部分进行设计与实现。

前台页面模块主要提供浏览功能,是用户访问新闻的界面。具体功能如下:

  • 首页是整个新闻管理系统的第一个页面,负责从总体上对系统信息进行显示。在首页的顶部要有用户注册和登录的模块

  • 用户注册和登录模块的下方要有新闻分类的主题。可以将新闻分为国内、国际、军事、财经、体育、娱乐、科技、房产、汽车、社会、游戏、教育等几类。点击某个主题后,仅对应该分类的所有新闻要以列表的形式分页显示出来

  • 首页的左侧,要将新闻标题以列表的形式显示出来,图片新闻显示在首页的右侧

  • 由于新闻管理系统的数据量极大,新闻标题也会很多,所以系统对新闻标题的显示要有分页功能,每一页显示一定数量的新闻标题

  • 首页的底部要显示网站的服务链接,网站地图,留言反馈,常见问题解答,热线电话,举报邮箱,以及版权等相关信息

  • 点击新闻标题,打开一个新闻后,要在新闻内容的下方显示出评论列表。评论包括评论人、评论内容和评论时间。如果一条新闻还没有用户评论,则在新闻内容的下方显示“暂无评论”

  • 新闻阅读页面顶部要有返回新闻首页的链接,页面底部要有合作伙伴的友情链接

  • 普通用户登录新闻管理系统后,在首页的顶部要有“返回用户主页”的链接。管理员登录系统后,在首页的顶部要有“返回后台主页”的链接,方便管理员进入系统后台对新闻管理系统进行管理

  • 新闻管理系统要有一定的出错提示。例如用户登录时没有输密码或者密码输入错误,要有“请输入密码”或“密码错误,请重新输入”的提示;用户注册时输入的密码和确认密码不一致时也要有提示,同时,为了方便数据库的管理,对用户注册输入的用户名和密码要有长度限制,如果用户输入的信息不在此限制范围内,也要有出错提示

  • 系统还要用一定的确认操作提示,以防止用户在不小心的情况下对系统做出错误的操作,造成损失。例如管理员在删除用户、删除新闻和删除分类主题时,要有确认是否删除的对话框提示

后台管理模块 主要实现新闻管理系统的管理与维护,又分为管理员管理维护系统的界面和普通用户的个人主页。具体功能如下:

  • 管理员登录系统后进入后台管理界面。用户管理模块实现用户信息的查看和删除。新闻管理模块实现新闻的添加、分类、编辑、删除及相关属性的设置。分类管理模块实现新闻类别的添加、修改、删除

  • 普通用户登录系统后进入个人主页,在个人主页可以查看个人信息,可以修改密码

  • 注册并登录过用户可以对新闻发表评论,未注册的用户则不能对新闻发表评论

2.2.2 系统的性能需求分析

在功能需求基础上,要提出系统的性能目标,新闻管理系统需要达到以下性能要求[4]:

  • 界面友好。系统各个模块的界面布局和背景要美观,不能给用户很乱的感觉

  • 操作简单。新闻管理系统所面向的用户众多,用户角色也各不相同,他们中有系统管理人员,有注册过的普通用户,也有以游客身份访问系统、无需登录系统的匿名用户。其文化程度各异,掌握的计算机水平也不同。因此,设计的新闻管理系统在操作上要简单易用,人机界面友好,使用户无需培训就能在较短时间内熟练使用系统,完成新闻的管理、浏览和评论等业务

  • 安全性高。新闻管理系统是用户对外宣传的门户,系统设计的安全性十分重要。一旦系统遭到非法入侵,破坏系统或发布不良信息,将对用户产生严重的不良影响。为此,新闻管理系统将采取用户信息加密、用户权限设计、数据库备份等措施来保证系统的安全性

  • 稳定性高,易维护。一般来讲,新闻管理系统运行在中心服务器上,因此新闻管理系统必须有较强的稳定性和易维护性,一旦系统出现问题,可以快速修复,恢复正常运行

2.3 用例图

用例图描述的是参与者(actor)所理解的系统功能。用例图的建立是系统开发者和用户反复讨论的结果,描述了开发者和用户对需求规格达成的共识[5]。首先,它描述了待开发系统的功能需求;其次,它把系统看做黑盒子,从参与者的角度来理解系统;第三,它驱动了需求分析之后各阶段的开发工作,不仅在开发过程中保证了系统所有功能的实现,而且被用于验证和检测所开发的系统,从而影响到开发工作的各个阶段和UML的各个模型[6]。

用例图的主要元素是用例和参与者。该新闻管理系统的参与者主要有:管理员,注册过的用户和没有注册过的匿名用户。

注册过的用户可以浏览新闻、评论新闻,可以查看个人信息,也可以修改自己的登录密码。

注册过的用户在新闻首页任意点击一个新闻标题,系统就会跳转到新闻阅读界面,用户就可以查看新闻的具体内容。

新闻内容的下方是评论列表,注册过的用户登录系统后,还可以在评论列表下方的评论框里发表对该新闻的评论。

注册过的用户登录系统后会跳转到个人主页。

在个人主页里,用户点击查看个人信息,就会在个人主页看到自己的用户名和密码。
用户点击修改密码,在出现的文本框里输入自己的新密码,点击修改,提示修改成功,则用户的密码被成功修改。

注册用户的用例图如图2-1所示:

没有注册过的匿名用户只可以浏览新闻,在新闻首页点击任意一个新闻的标题,就能在阅读页面看到该新闻的具体内容和其他用户对该新闻的评论。

匿名用户的用例图如图2-2所示:

管理员对新闻管理系统的管理主要分为用户管理、新闻管理和主题管理。其中在用户管理模块中,管理员可以查看其他用户的信息,可以删除其他用户。在新闻管理模块中,管理员可以添加新闻、修改新闻、删除新闻和查找新闻,当然管理员也可以浏览和评论新闻。在主题管理模块中,管理员可以添加主题、修改主题和删除主题。

管理员登录系统后会跳转到后台管理页面。

管理员点击“用户管理”,用户的详细信息就会以表格的形式出现在用户管理页面。点击任意一条用户信息后面的“删除”,会弹出确认删除对话框,点击“确认”,就可以删除一条用户信息。

管理员点击“添加新闻”,在添加新闻页面,从新闻分类的下拉菜单选择新闻分类的主题,输入新闻的标题、作者以及正文内容,点击“提交”,就能成功发布一条新闻。

管理员点击“编辑新闻”,会出现新闻的标题列表,在新闻标题的后面有“修改”和“删除”两个按钮。

点击新闻标题后的“修改”,会跳转到新闻编辑页面,管理员在新闻编辑页面可以对新闻的分类主题、标题、作者以及正文内容进行修改,修改完后点击“提交”,就能成功修改一条新闻。

点击新闻标题后的“删除”,会弹出确认删除对话框,点击“确定”,就能成功删除一条新闻。

管理员点击“查找新闻”,在查找框里输入要查找的新闻标题,点击“提交”,想要查找的新闻的标题就会以列表的形式出现在查找结果页面。点击新闻标题或者标题后的“修改”和“删除”,就可以对查找到的新闻进行进一步的操作。

管理员点击“添加主题”,输入要添加的新闻分类的名称,点击“提交”,就能成功添加一个新闻分类。

管理员点击“编辑主题”,新闻的分类主题就会以列表的形式分页显示出来,在每个主题的后面都有“修改”和“删除”两个按钮。

点击主题名称后的“修改”,管理员在修改框里输入新的标题,点击“提交”,就能成功修改一个新闻分类。

点击主题名称后的“删除”按钮,会弹出一个确认删除对话框,点击“确定”,就能成功删除一个新闻分类。

管理员的用例图如图2-3所示:

2.4 系统的可行性分析

系统的可行性分析是对开发系统的可行性程度进行评价,以便对系统开发、应用进行评测,主要包括技术可行性、经济可行性、操作可行性等[7]。

技术可行性分析

新闻管理系统使用计算机对新闻信息进行全面管理。为了提高工作效率和工作质量,系统通过运用计算机网络技术和数据库技术,对新闻管理系统的各个阶段实现计算机管理和控制。

考虑到系统的扩展性,本系统以Java为开发语言、MySQL作为后台数据库,进行新闻管理系统的研究与开发。Java语言是一种跨平台、适合分布式计算机环境的面向对象编程语言。它具有的特点很多,如简单易学、面向对象性、分布式、可靠性、安全性、平台无关性、高性能、多线程、动态性等。

系统开发步骤依据软件工程的项目开发模型,结合通用的应用开发平台进行系统配置,且有很多相关的成熟系统可以参考,因此,课题开发在技术上完全可行的。

操作可行性分析

该系统基于B/S模式,客户端只需安装Web浏览器即可访问系统,通用简单的操作界面,具有一般计算机知识的人员都可以轻松掌握其使用方法。用户交互界面友好,简洁明了,能切实提高新闻管理系统的可操作性,几乎无需人员培训。

经济可行性分析

根据新闻系统的实际需求,开发本系统,不但可以提高用户的新闻管理水平,同时还可以大大提高新闻采编的效率,优化新闻流程,保证新闻的时效性。就目前这个系统,需求方并不需要花太大的代价就能保证系统的运行。服务器可以用原有的Tomcat6,至于数据库,需求方只需在服务器上安装MySQL5.5.15就可以了,运行维护过程中也不要花费很多人力和物力,只要有管理员和一般维护性人员即可,所以在经济方面也是可行的。

3 系统总体设计

3.1 系统体系结构设计

新闻管理系统是典型的管理信息系统。管理信息系统的结构设计是系统设计中的一项重要工作,系统结构设计的好坏,直接影响着系统的效率、安全性、可维护性。管理信息系统常用的体系结构有:文件服务器模式(File/Server)、C/S模式(Client/Server,客户机/服务器)和B/S模式(Browser/Server,Web浏览器/服务器)[8]。

新闻管理系统需要向外发布信息,用户众多,并且数据库信息的更新和维护涉及到地域和即时性的制约,系统的实现一般采用B/S结构,操作方便快捷,而且对服务器端数据库的访问量较小[9]。 B/S结构用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,简单易用,节约了开发成本,减轻了系统维护和升级的成本。可以说B/S结构,是当今Web应用软件的首选体系结构[10]。

采用B/S结构的新闻管理系统可以轻松地发布新闻信息,而用户也无须安装专门的客户端软件,直接使用浏览器就可以查看新闻。

未注册的普通用户可浏览新闻信息;注册用户可浏览新闻、发表评论等;系统管理员完成新闻管理、用户管理、系统维护等。

3.2 系统功能模块

新闻管理系统具有多个模块。该系统的用户分为三种:未注册的匿名用户,注册过的普通用户和管理员。

所有用户都能浏览新闻。

注册过的普通用户登录系统后可以查看自己的个人信息,可以对新闻进行评论,修改自己的密码。
管理员登录后可以管理新
闻、主题和用户,实现信息的添加、修改和删除。其中用户管理分为查看用户信息、删除用户;新闻管理分为添加新闻、查找新闻、编辑新闻和删除新闻;主题管理分为添加主题、修改主题和删除主题。

系统功能模块如图3-1所示。

3.3 数据库设计

新闻管理系统的大量新闻信息保存在数据库中,同时新闻管理系统的用户相关信息也保存在数据库中。由于新闻管理系统处理的新闻信息数据更新较快,随着新闻管理系统使用时间的增长,数据日积月累,必将产生海量数据。同时在功能上考虑到数据处理速度、数据处理能力、性能稳定性、安全可靠性等,需要合理设计数据库系统。由于大量的信息被组织在数据库中,数据库的设计将影响整个管理系统的性能,数据库设计是系统设计中的一个重点。

数据库作为新闻管理系统的基础,首先要保证其设计的合理性。在使用应用系统时,拥有设计合理的数据库往往可以起到事半功倍的效果。数据库设计是针对给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够高效地存储数据,满足系统用户的应用需求[11]。目前通用的数据库设计开发流程,主要分以下几个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行和维护[12]。设计一个完善的数据库应用系统是不可能一蹴而就的,它往往是上述六个阶段的不断重复。

本新闻管理系统一共用到四个表:评论信息表(comments),新闻信息表(news),用户信息表(news_users),分类信息表(topic)。这四个表的设计分别如下:

评论信息表(comments)

字段名称 字段类型 字段长度 字段说明
CID int 11 评论编号
CNID int 11 评论所对应的新闻编号
CCONTENT varchar 3000 评论内容
CDATE datetime 0 评论日期
CAUTHOR varchar 100 发表评论的用户

新闻信息表(news)

字段名称 字段类型 字段长度 字段说明
NID int 11 新闻编号
NTID int 11 所属分类号
NTITLE varchar 200 新闻标题
NAUTHOR varchar 50 作者
NCREATEDATE datetime 0 发布时间
NCONTENT mediumtext 0 新闻内容

用户信息表(news_users)

字段名称 字段类型 字段长度 字段说明
USID int 11 用户编号
UNAME varchar 20 用户名
UPWD varchar 20 用户密码

分类信息表(topic)

字段名称 字段类型 字段长度 字段说明
TID int 11 主题编号
TNAME varchar 50 主题名

3.4 实体关系图

实体关系图,简记E-R图,是指以实体、关系、属性三个基本概念概括数据的基本结构,从而描述静态数据结构的概念模式[13]。

本新闻管理系统有四个实体,分别为用户、主题、新闻和评论。

  • 用户的属性:登录名,密码

  • 新闻的属性:主题,标题,作者,发布时间,内容。

  • 评论的属性:用户,内容,发表时间

  • **主题只有主题名一个属性

其中用户分为管理员和普通用户。管理员可以管理主题、新闻以及普通用户。所有用户都可以发表新闻评论。

各实体之间的关系如图3-2和图3-3所示:

3.5 过程设计

概要设计的任务完成后,就进入详细设计阶段,也就是过程设计阶段。在这个阶段要解决新闻管理系统各个模块的实现算法,并使用过程描述工具(程序流程图、N-S图、PAD图、决策树等)精确地描述这些算法。对于比较简单的算法,可以采用自然语言来描述。但是对于此新闻管理系统,有一些算法比较复杂,使用自然语言描述就不太合适。一方面自然语言在语法上和语义上往往具有歧义性,常常要依赖上下文才能把问题描述清楚;另一方面,自然语言本身具有顺序性,不适合描述具有很多分支和循环的算法[14]。

因此本新闻管理系统使用程序流程图来描述一些比较复杂的算法。

用户注册的流程为:在新闻首页点击“注册”,输入用户名和密码,如果密码长度少于6位,则会提示“密码长度为6-255”,重新输入符合标准的密码后,输入“确认密码”,确认密码要和密码一致,否则会提示“密码不正确,请重新输入”。最后点击“注册”,跳转到注册成功页面,提示“注册成功”。

用户注册流程图如图3-4所示:

用户登录的流程为:用户输入登录名和密码,点击登录,如果是管理员账户,则跳转到后台管理页面;如果是注册过的普通用户,则跳转到普通用户的个人主页;如果输入的登录名和密码不是注册过的,则不能登录到系统,会提示请先注册。

用户登录流程图如图3-5所示:

3.6 类图

模型的静态结构也称为静态模型,在UML中表示为类图。类图显示了类(及其接口)、类的内部结构以及与其他类的联系。联系是指类元之间的联系,在类的建模中可以使用关联、聚合和泛化(继承)关系[15]。

在新闻管理系统中,涉及到的主要类有CommentsServlet,ExitServlet,LoginServlet,NewsServlet,ShowInfoServlet,TopicServlet,UserServlrt;CommentsServiceImpl,NewsServiceImpl,TopicServiceImpl,UserServiceImpl;CommentsDaoImpl,NewsDaoImpl,TopicDaoImpl,UserDaoImpl;DButil等。

新闻管理系统的核心类图如图3-6所示。

其中,CommentsServlet,CommentsServiceImpl,CommentsDaoImpl,这三个类是控制用户对新闻的评论的,实现的功能有用户新增评论,所有的评论以列表的形式显示出来,管理员删除评论。

NewsServlet,NewsServiceImpl,NewsDaoImpl,这三个类是控制新闻管理的。实现的功能有浏览新闻、添加新闻、按标题查找新闻、编辑新闻、删除新闻等。

TopicServlet,TopicServiceImpl,TopicDaoImpl,这三个类是控制主题管理的。所实现的功能有添加主题、编辑主题、删除主题等。

UserServlrt,UserServiceImpl,UserDaoImpl,这三个类是控制用户管理的。所实现的功能有显示用户的信息,添加用户,修改用户信息,删除用户等。

4 系统实现

4.1 新闻首页

用户进入本新闻管理系统后,首先看到的是新闻首页。

首页的顶部是用户注册和登录模块,用户在本新闻管理系统注册后,输入登录名和密码即可登录本系统。

在用户注册和登录模块的下方,是新闻管理系统的logo,“新闻中国,有态度的新闻门户”。网站logo里包含有一个超链接,用户在任意页面,只要点击网站的logo,就可以返回到新闻首页。

网站logo的下方是一个类似于分割线功能的有色框。

再下方是新闻分类主题的导航模块。有国内新闻、国际新闻、军事新闻、财经新闻、体育新闻、娱乐新闻、科技新闻、房产新闻、汽车新闻、社会新闻、游戏新闻、教育新闻等分类。

新闻分类导航模块的下方是新闻浏览模块。新闻浏览模块左边是新闻列表,可以看到新闻标题列表和新闻发布时间。

点击新闻标题,可以超链接到另一个显示新闻具体内容的阅读页面,可以查看新闻的具体内容。

新闻浏览模块的右边,上部分是滚动的图片新闻,新闻的图片会自动切换,时间间隔是1秒。用户也可以分别点击滚动框里的四个按钮,可以查看相对应的新闻图片。

下部分是旋转新闻,新闻标题以旋转的方式显示出来,旋转的轨迹是一个球形。把鼠标放在一个标题的上面,该标题的颜色会发生变化,突出显示出来。用户点击新闻标题就可以跳转到新闻阅读界面,查看新闻的详细内容。

滚动新闻和旋转标题,这两部分都是用的特效。用Javascript控制图片滚动和标题旋转,用CSS控制这两部分的样式,再把Javascript和CSS引用到控制首页显示的JSP页面中,这两个特效就显示在网站的首页了。

首页底部显示网站的一些服务的链接,包括广告服务、供稿服务、法律声明、招聘信息、网站地图、留言反馈等。还有热线电话,常见问题解答,举报邮箱,以及版权等信息。

首页如图4-1所示。

4.2 各类新闻浏览模块

在该模块中,显示新闻的分类,新闻的标题列表,以及新闻的发布时间,还有图片新闻。

新闻浏览模块如图4-2所示。

4.3 用户注册

点击新闻首页上方的“注册”,用户即可进入注册页面,输入用户名、密码和确认密码,点“注册”,即可完成注册。

如果输入错误,可以点击“重置”,就会清空所有已输入的信息,重新输入用户名、密码和确认密码。

注册页面如图4-4所示:

注册成功后,系统会跳转到注册成功的提示页面。点击“现在登录”,返回新闻首页,即可用刚才注册的用户信息登录新闻管理系统。

注册成功页面如图4-5所示:

实现注册功能的关键代码如下:

  1. private void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  2. String name = request.getParameter("name");
  3. String pwd = request.getParameter("pwd");
  4. User n = new User();
  5. n.setUname(name);
  6. n.setUpwd(pwd);
  7. boolean b = userServiceImpl.save(n);
  8. if (b) { request.getRequestDispatcher("WEB-INF/user/doregister.jsp").forward(request, response);
  9. }
  10. }

4.4 用户登录

在新闻管理系统中有三种用户:未注册的用户,注册过的用户,管理员。

在新闻首页,管理员和注册过的用户输入登录名和密码,点击“登录”即可进入新闻管理系统。在登录前勾选“七天免登录”,系统会自动记住该用户的登录名和密码,该用户七天内即可免登录进入新闻管理系统。

用户登录模块如图4-6所示:

其中,管理员登录到系统后会进入后台管理页面,普通用户登录到系统后会进入个人主页。判定输入的登录名和密码是否是管理员的关键代码如下:

  1. if ("admin".equals(name)) {
  2. request.getSession().setAttribute("sname", name);
  3. response.sendRedirect("NewsServlet");
  4. }
  5. if (!("admin".equals(name))) {
  6. request.getSession().setAttribute("sname", name);
  7. response.sendRedirect("UserServlet");
  8. }

4.5 管理员后台管理模块

用管理员账号登录后,即可进入后台管理页面,对新闻管理系统进行管理。

在后台管理的欢迎页面,左边是功能模块,包括用户管理、添加新闻、编辑新闻、查找新闻、添加主题、编辑主题。欢迎页面的右边有欢迎语:“欢迎来到后台管理,数据无价,谨慎操作!”

后台管理的欢迎页面如图4-7所示:

4.5.1 用户管理页面

在后台管理页面,点击“用户管理”进入用户管理界面,可以查看到注册用户的用户信息(包括用户名和密码),点击“删除”,会弹出确认删除对话框,再点击确定,就可删除一条用户信息。

用户管理页面如图4-8所示。

实现删除用户信息的关键代码如下:

  1. private void delete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  2. String usid = request.getParameter("id");
  3. System.out.println("++++deleteUser_usid++++"+usid);
  4. Integer id=Integer.parseInt(usid);
  5. System.out.println("++++deleteUser_usid++++"+id);
  6. boolean b = userServiceImpl.deleteById(id);
  7. if (b) {
  8. request.getRequestDispatcher("UserServlet?model=show_users").forward(request, response);
  9. }
  10. }

4.5.2 添加新闻页面

在该页面中,输入新闻的各项信息:点击下拉菜单选择新闻的分类主题,输入新闻的标题、作者、内容。点击“提交”,即可成功发布一条新闻,在新闻首页可以查看到新添加的新闻。如果新闻的某项信息填写有误,点击“重置”,即可清空所有已输入信息,方便重新输入。

添加新闻页面如图4-9所示:

实现添加新闻功能的关键代码如下:

  1. private void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  2. String ntid = request.getParameter("ntid");// 获取新闻id
  3. String ntitle = request.getParameter("ntitle");// 获取新闻title
  4. String nauthor = request.getParameter("nauthor");//获取新闻的author
  5. System.out.println("---->"+nauthor);
  6. String ncontent = request.getParameter("ncontent");
  7. News n = new News();
  8. // request获取到的值是字符串类型,转换成integer类型的。
  9. Integer tid = Integer.valueOf(ntid);
  10. n.setNtid(tid);
  11. n.setNtitle(ntitle);
  12. n.setNauthor(nauthor);
  13. n.setNcontent(ncontent);
  14. boolean b = newsServiceImpl.save(n);
  15. if (b) {
  16. response.sendRedirect("NewsServlet");
  17. }
  18. }

4.5.3 编辑新闻页面

管理员进入后台管理页面后,点击编辑新闻,会显示出新闻标题列表。

新闻标题列表如图4-10所示。

点击新闻标题后的“修改”,就进入新闻修改页面。在修改新闻页面可以对新闻的主题、标题、作者、内容进行修改,修改完后再点击“提交”即可完成修改。或者点击“重置”,就可以清空该新闻的所有信息,再重新输入新闻的主题、标题、作者、内容等。

点击新闻标题后的“删除”,会弹出确认删除对话框,点击“确定”即可删除一条新闻。

新闻修改页面如图4-11所示:

实现修改新闻功能的关键代码如下:

  1. private void update(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  2. String nid = request.getParameter("nid"); // 获取新闻id
  3. String ntid = request.getParameter("ntid"); // 获取新闻主题id
  4. String ntitle = request.getParameter("ntitle"); // 获取新闻title
  5. String nauthor = request.getParameter("nauthor"); // 获取新闻author
  6. System.out.println("nauthor"+nauthor);
  7. String ncontent = request.getParameter("ncontent");
  8. News news = new News();
  9. // request获取到的值是字符串类型,转换成integer类型的。
  10. Integer id = Integer.valueOf(nid);
  11. Integer tid = Integer.valueOf(ntid);
  12. news.setNid(id);
  13. news.setNtid(tid);
  14. news.setNtitle(ntitle);
  15. news.setNauthor(nauthor);
  16. news.setNcontent(ncontent);
  17. boolean b = newsServiceImpl.update(news);
  18. if (b) {
  19. response.sendRedirect("NewsServlet");
  20. } else {
  21. response.sendRedirect("NewsServlet?model=update_jsp");
  22. }
  23. }

4.5.4 查找新闻页面

新闻管理系统的查找新闻的功能是根据新闻的标题查找的。

在后台管理页面中点击“查找新闻”,在查找新闻页面中输入要查找的新闻标题,点击“提交”,即可得到想要查找的新闻。

查找新闻页面如图4-12所示:

查找结果如图4-13所示:

实现查找新闻功能的关键代码如下:

  1. /**
  2. * 按新闻标题检索新闻
  3. *
  4. * @param request
  5. * @param response
  6. */
  7. private void search(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  8. // TODO Auto-generated method stub
  9. String ntitle = request.getParameter("ntitle");
  10. System.out.println("++++++++"+ntitle);
  11. List<News> lst = newsServiceImpl.findNews(ntitle);
  12. System.out.println("++++++++"+lst);
  13. request.setAttribute("lst", lst);
  14. request.getRequestDispatcher("WEB-INF/news/newList01.jsp").forward(request, response);
  15. }

4.5.5 添加主题页面

在该页面输入要添加的新闻分类名称,点击“提交”,即可添加一个新闻分类。在新闻首页就可以看到新添加的分类。同时,在“添加新闻”页面的新闻主题下拉菜单中也会增加新添加的新闻主题。

添加主题页面如图4-14所示:

4.5.6 编辑主题页面

点击主题后的“修改”,就进入主题修改页面,在修改主题页面可以对主题进行修改,再点击“提交”即可完成修改。点击主题后的“删除”,会弹出确认删除对话框,点击“确定”即可删除一个新闻分类,否则点击“取消”。

主题列表如图4-15所示:

修改主题页面如图4-16所示:

4.6 普通用户功能模块

普通用户登录新闻管理系统后会进入个人主页的欢迎页面。

欢迎页面的左边是功能模块,包括查看个人信息和修改密码。欢迎页面的右边是欢迎语:欢迎来到个人主页。

欢迎页面如图4-17所示:

4.6.1 查看个人信息

普通用户登录系统后,点击“查看个人信息”,可查看该用户的登录名和密码。

查看个人信息的页面如图4-18所示:

实现查看个人信息功能的关键代码如下:

  1. private void show_users(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  2. // TODO Auto-generated method stub
  3. List<User> lst=userServiceImpl.findAll();
  4. request.setAttribute("lst", lst);
  5. request.getRequestDispatcher("WEB-INF/admin/userList.jsp").forward(request, response);
  6. }

4.6.2 修改密码

普通用户进入个人主页后点击“修改密码”,输入新密码,点击“修改”,即可修改该用户的密码。如果点击“取消”则会清空已输入的新密码。

修改密码的页面如图4-19所示:

实现修改密码功能的关键代码如下:

  1. private void update(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  2. String uname=request.getParameter("uname");
  3. String upwd = request.getParameter("password");
  4. User user=new User();
  5. user.setUname(uname);
  6. user.setUpwd(upwd);
  7. boolean b=userServiceImpl.update(user);
  8. if(b){
  9. request.getRequestDispatcher("WEB-INF/user/success.jsp").forward(request, response);
  10. }else{
  11. response.sendRedirect("UserServlet?model=update_jsp");
  12. }
  13. }

4.6.3 评论新闻

普通用户登录新闻管理系统后,可以点击新闻标题浏览新闻,也可以在新闻内容的下方进行评论。用户在评论框里输入评论后,点击“发表”,即可发表评论。评论列表里会显示出发表评论的用户名、评论日期和评论内容。

评论列表如图4-20所示:

没有注册过的用户则只可以浏览新闻,不能对新闻进行评论。匿名用户在评论框里输入评论,点击提交时,会提示“您还没登陆,请先登录”。

评论失败的提示如图4-21所示:

实现评论功能的关键代码如下:

  1. public class CommentsServlet extends HttpServlet {
  2. private static final long serialVersionUID = 1L;
  3. public CommentsServlet() {
  4. super();
  5. }
  6. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  7. this.doPost(request, response);
  8. }
  9. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  10. request.setCharacterEncoding("utf-8");
  11. String nid=request.getParameter("cnid");
  12. Integer cnid=Integer.parseInt(nid);
  13. String cauthor=request.getParameter("cauthor");
  14. String ccontent=request.getParameter("ccontent");
  15. //添加日期的格式
  16. Timestamp cdate=new Timestamp(System.currentTimeMillis()+8*60*60*1000);
  17. String cip=request.getRemoteAddr();
  18. Comments comments =new Comments(cnid,ccontent,cdate,cip,cauthor);
  19. CommentsServiceImpl commentsServiceImpl=new CommentsServiceImpl();
  20. boolean b=commentsServiceImpl.save(comments);
  21. if(b){
  22. response.sendRedirect("NewsServlet?model=read&nid="+cnid);
  23. }
  24. }
  25. }

5 系统的测试与评价

5.1 系统测试

系统测试采用黑盒测试法(Black-box Testing),黑盒测试方法,也称功能测试或数据驱动测试方法,在测试时,把程序看做一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试人员针对软件直接进行测试[16]。

首先运行整个程序进入到网站首页,在网站首页显示出用户登录、新闻分类、新闻标题、新闻图片等模块,达到了预期效果。

首页中的各项均是用超链接实现的,依次点击相应的功能按键和超链接,查看功能是否能够按照设计时的构想实现,例如,在点击“注册”,出现用户注册界面,填写用户的登录名、密码和确认密码,再点击“注册”,进入注册成功页面等等。依照此思想逐个点击各项功能和超链接,检查是否实现该功能。

测试项目 功能描述 操作步骤/输入数据 预期结果 测试结果
新闻浏览 查看新闻的具体内容 进入主界面,点击新闻标题 跳转到新闻阅读页面,能看到新闻的详细内容。 成功
新闻分类 将新闻按照分类分页显示 点击新闻主题 新闻按照对应的分类分页显示 成功
未注册的用户的权限:不能评论新闻 对新闻进行评论 进入新闻管理系统后不登录,直接点击一条新闻标题,在新闻内容的下方输入评论,然后点击“发表” 评论不成功,提示“您还没登陆,请先登陆”。 成功
用户注册 注册一个新用户 进入主界面,点击注册,输入登录名:aaa,密码:aaaaaa,确认密码:aaaaaa,提交表单后跳转到注册成功页面。 成功注册一个新用户 成功
普通用户登录 普通用户登录系统 进入主界面,登录名输入“aaa”,密码输入“aaaaaa”,点击登录。 登录成功,跳转到个人主页,返回新闻首页后在左上角显示用户名。 成功
管理员登录 管理员登录系统 进入主界面,登录名输入“admin”,密码输入“admin”,点击登录。 登录成功,跳转到后台管理页面,返回新闻首页后在左上角显示管理员名称。 成功
查看个人信息 查看已登录用户的个人信息 进入主界面,登录名输入“aaa”,密码输入“aaaaaa”,点击登录,跳转到个人主页后点击“查看个人信息”。 能看到个人信息:登录名为aaa,密码为aaaaaa。 成功
修改密码 修改登录密码 进入主界面,登录名输入“aaa”,密码输入“aaaaaa”,点击登录,跳转到个人主页后点击“修改密码”,输入新密码并点击“修改”。提示密码修改成功后退出当前用户,用新密码重新登录。 提示密码修改成功,用新密码重新登录后能正常登录。 成功
评论新闻 对新闻进行评论 用用户aaa登录系统,点击新闻标题,跳转到新闻阅读页面后在新闻内容下方写评论,并点击“发表”。 评论发表成功,在评论列表里能看到发表的评论。 成功
查看用户信息 查看注册用户的登录名和密码 用管理员身份登录系统后选择“用户管理”。 能查看到注册用户的登录名和密码。 成功
删除用户 删除一个注册过的用户 用管理员身份登录系统后选择用户管理,点击想要删除的用户信息后的“删除”,在弹出的确认删除对话框里点“确定”。然后退出管理员,用刚删除的那个用户的登录名和密码登陆系统。 成功删除一条用户信息,退出管理员后,用刚删除的用户的信息登录系统,提示请先注册。 成功
添加新闻 向系统里添加一条新闻 用管理员身份登录系统后选择“添加新闻”,填写新闻的主题、标题、作者、内容,点击“提交”。返回新闻首页,点击新添加的新闻所属的主题,看新闻列表里是否有刚才添加的新闻的标题。 成功添加一条新闻,在新闻首页的新闻列表里能看到新添加的新闻。 成功
编辑新闻 修改已经发布过的新闻 用管理员身份登录系统后选择“编辑新闻”,点击新闻标题后面的“修改”,进入到新闻修改页面,修改新闻的主题、标题、作者、内容,点击“提交”。 成功修改一条新闻。 成功
查找新闻 根据新闻标题查找想要的新闻 用管理员身份登录系统后选择“查找新闻”,进入新闻查找页面后输入新闻标题,点击“提交”。 在一个新页面显示出要查找的新闻的标题。 成功
删除新闻 删除过时的新闻 用管理员身份登录系统,在后台管理页面,点击新闻标题后面的“删除”,再点击弹出的确认删除对话框里的“确定”。返回新闻首页,点击新添加的新闻所属的主题,看新闻列表里是否有刚才添加的新闻的标题。 成功删除一条新闻,在新闻首页的新闻列表里也看不到删除的那条新闻的标题。 成功
添加主题 添加一个新闻分类 用管理员身份登录系统后选择“添加主题”,输入主题名称,点击“提交”。 返回新闻首页后可以看到新添加的新闻分类,添加新闻时主题的下拉菜单里也有新添加的主题。 成功
编辑主题 修改已有的主题 用管理员身份登录系统后选择“编辑主题”,点击主题后面的“修改”,进入到主题修改页面,输入新的主题名,点击“提交”。 返回新闻首页后可以看到修改后的新闻分类。 成功
删除主题 删除一个新闻分类 用管理员身份登录系统后选择“编辑主题”,点击主题后面的“删除”,再点击弹出的确认删除对话框里的“确定”。 返回新闻首页后可以看到被删除的新闻分类不再显示,添加新闻时主题的下拉菜单里也看不到新添加的主题。 成功
分页功能 让新闻分页显示 依次点击新闻列表右下角的“下一页”、“上一页”、“末页”、“首页”。 分页功能正常实现,在不同的页面能看到不同的新闻标题。 成功

经过不断的“测试——修改——测试”的往复,该系统已经达到设计要求,各项功能都得到了完美的实现,达到了预期的效果。

5.2 系统的评价

通过以上各步工作,该新闻管理系统基本符合要求,在这里对本系统做一个简单的评价。

本系统在设计开发时采用后台的方法,整个系统具有以下几个特点:

安全性和可移植性较好

可以在任何Windows系统平台上运行。系统根据其权限做相应的处理,保护数据安全,方便管理员维护数据。

容错性能较好

在系统测试阶段对系统进行过大量的实例测试,并有许多出错提示,加强了系统的稳定与容错性。

结束语

课题结合新闻管理工作的实际需求,在B/S架构中,以数据库技术和Java语言作为主要工具,最终完成了新闻管理系统。其功能基本符合新闻管理的需求,并提供部分系统维护功能,使用户方便进行新闻浏览和管理员对数据进行添加、修改和删除。

通过对新闻管理系统的设计和实现,使我对新闻工作有了更全面的理解,同时也将学习到的软件工程的相关知识运用到实践中,学习并运用Java编程语言基本完成了既定设计任务。虽然设计和开发的系统在用户界面人性化设计、操作便捷性、功能完善性和系统运行稳定性等方面还存在一定不足,但已基本达成预期目标。在课题研发和开发工作中所学习到的分析问题和解决问题的方法,对自己以后的学习和工作将大有裨益。

通过做这个系统,我知道,有些东西细节决定成败,无论怎样都不能忽视细节的东西。这不是毕业设计的结束,更不是人生在学习生涯中的结束,而是新环境、新学习、新挑战的开始。只有这样我们才能学无止境,以求得更大的发展。对于我们年轻人来说,我相信:挑战越多,机会越多。我会打足精神,努力开创新的成绩,勇敢的面对以后发生的一切,更好的提高自己,以便能够更好为社会服务,为人民服务,进而体现自己在社会发展中的价值。

参考文献

[1] 史济民,顾春华,郑红.软件工程:原理、方法与应用[M].3版.北京:高等教育出版社,2009,298.

[2] Shari Lawrence Pfleeger.Software Engineering Theory and Practice [M].2nd ed.影印版.北京:高等教育出版社,2001,57.

[3] 郑人杰,马素霞,殷人昆.软件工程概论[M].北京:机械工业出版社,2009,38.

[4] 吴洁明.软件工程实例教程[M].北京:清华大学出版社,2010,40-42.

[5] Roger Pressman.Software Engineering:A Practitioner’s Approach [M].6th ed.影印版.北京:清华大学出版社,2005,207.

[6] Stephen R Schach.面向对象与传统软件工程:统一过程的理论和实践[M].韩松,等译.6版.北京:机械工业出版社,2006,180.

[7] 张海潘.软件工程导论[M].北京:清华大学出版社,2004.

[8] 马军.JAVA完全自学手册[M].北京:机械工业出版社,2007,186.

[9] 明日科技.Java Web从入门到精通[M].北京:清华大学出版社,2012,97.

[10] Jon Duckett.Web编程入门经典[M].杜静,敖福江译.北京:清华大学出版社,2010,109.

[11] 姚卿达.数据库设计[M].北京:高等教育出版社,1989,186.

[12] 王珊,萨师煊.数据库系统概论[M].4版.北京:高等教育出版社,2006,202-203.

[13] 百度百科—实体关系图:http://baike.baidu.com/link?url=FjXNUBVZNYUiuwf1aTOURJE3QIwcPe7_61Vi5Gnb85NIo2pmORpoIH_lTez6M-Yt#3

[14] 齐治昌,谭庆平,宁洪.软件工程[M].3版.北京:高等教育出版社,2012,165.

[15] 郑人杰,殷人昆,陶永磊.实用软件工程[M].3版.北京:清华大学出版社,2010,171.

[16] 朱少民.软件测试方法和技术[M].2版.北京:清华大学出版社,2010,38.

上传的附件 cloud_download 基于J2EE的新闻管理系统的设计与实现.7z ( 12.97mb, 72次下载 )
error_outline 下载需要15点积分

keyboard_arrow_left上一篇 : 基于JAVA的停车场管理系统 基于mfc实现的21点小游戏 : 下一篇keyboard_arrow_right



TFBOYSer
2019-05-20 22:08:57
基于J2EE的新闻管理系统的设计与实现
steven
2020-06-29 13:59:23
数据库呢?
lang
2020-07-06 11:42:47
数据库飞了啊 我去????

发送私信

让你的风铃晃动的,是风;让你的生命灵动的,是爱

7
文章数
16
评论数
最近文章
eject