毕业设计(论文)-在线新闻发布系统设计与实现.doc_第1页
毕业设计(论文)-在线新闻发布系统设计与实现.doc_第2页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业论文(设计)在线新闻发布系统设计与实现姓名:学号: 专业:计算机信息管理指导教师:贺桂英副教授66 广东广播电视大学07春计算机信息管理 0744001400379 陈劲勋 目 录目 录i摘 要ii关键字ii在线新闻发布系统设计与实现1一 概述1二 系统分析和设计1(一) 需求分析1(二) 流程设计2(三) 功能划分4三 数据库设计5(一) 逻辑视图5(二) 数据库建表5(三) 数据库持久化处理7(四) 分页浏览的实现29四 新闻信息管理实现32(一) 实现效果32(二) 视图组件设计及实现45(三) 控制器组件实现52(四) 部署与运行64五 结论66参考文献67摘 要21世纪是信息爆炸的时代,网络的出现是这个信息时代的催化剂。面对网络上几何式增长的的信息,我们需要一个方便易用的平台,来将信息分类展示给信息接收者。在线新闻发布系统就应运而生了,提供新闻信息的分类,方便信息接收者查看。时刻提供最新的新闻消息。这为信息接收者带来很大的方便。关键字:在线新闻、分页、struts、hibernate68在线新闻发布系统设计与实现一 概述网络作为新闻传媒新型载体,以其信息化服务的方便迅捷实效性高、信息容量不受限制、受众参与性强和反馈快的优势区别于传统的新闻传播方式。随着在线新闻发布服务的迅速发展,网络日益成为社会公众获知最新重要新闻的重要渠道。同时,在线新闻发布服务的产生也为企业提出了一个减少人力物力投入同时深化企业管理程度的切实可行的办法。在企业的电子商务应用中,在线新闻发布服务也已发展成为其中必不可少的重要组成部分。此在线新闻发布系统将采用面向对象编程的java语言开发。在java ee企业级开发平台的基础上,配合两大流行的框架技术:struts和hibernate实现前台显示、数据转换、连接数据对象等功能。数据库将使用开源的mysql数据库。web服务器采用apache的tomcat服务器。二 系统分析和设计(一) 需求分析在线新闻发布系统,为新闻阅读者及时了解社会发展和学习知识提供了一个重要的平台,它将实现及时的新闻浏览显示以及在线新闻信息管理等功能。该系统可供新闻阅读者浏览包括财经、娱乐和科技等类型的新闻信息。在系统主页面中,新闻阅读者可以根据不同的新闻类型单击不同的链接浏览相关的新闻信息。由于新闻发布系统一般会表现出信息量大等特点,如果在一个页面中显示数据库中存储的所有企业新闻将导致系统与数据库网络交互量过大而延迟浏览速度。因此为了降低单次页面浏览与数据库交互的网络流量,页面的浏览方式采用分页浏览的风格,即在一个浏览页面中只显示数据库中的部分新闻信息。在主页面中,显示最新的新闻标题,每个新闻标题都作为一个超链接,在单击该超链接后,可以跳转到新的页面显示对应的新闻的所有信息,包括标题、类型、内容、发布时间、作者等信息。为了使该在线新闻发布系统有一个安全的运行环境,提供了用户登录功能。在用户登录网站时,首先要进行身份验证,如果身份信息在数据库中不存在即不合法,则系统自动退回到登录界面;如果用户登录身份合法,则系统自动会根据用户事先被赋予的使用权限,提供相应的服务和管理界面,如普通用户只提供新闻信息浏览功能,新闻编辑人员则可以使用“添加新闻”、“修改新闻”等功能,系统管理员除拥有新闻编辑员的功能外,还有“删除新闻”的功能。登录后的新闻发布管理员通过单击页面上的“添加”链接、“修改”链接和“删除”链接分别完成对应对数据库的操作:新闻的添加、新闻的修改和新闻的删除等功能。(二) 流程设计用户在使用新闻发布系统时应进行如下的操作流程,如图 1 所示为用户使用系统时的时序图:l 用户进入新闻发布系统首页。l 系统从数据库读取新闻类型数据记录如:“财经”、“娱乐”和“科技”等。根据这些新闻类型,进行新闻类型选择。l 根据第2步新闻类型的选择,在页面中显示相应类型的新闻标题列表。l 每个标题都提供一个包含新闻编号的超链接。l 新闻标题列表采用分页显示技术。可重复第2步至第5步内容,对列表进行翻页操作。在第3步中默认为显示第一页。l 单击标题超链接,进入新的页面浏览所选择新闻的具体信息。l 拥有权限的用户通过登录后,获得对新闻系统的操作权如:“添加新闻”、“修改新闻”和“删除新闻”。图 1 用户使用系统时的时序图如图 2 用户浏览操作协作图所示用户使用系统时序图对应的协作图。系统除了为所有用户提供友好的新闻浏览页面外,还应提供友好的新闻信息维护手段。当用户具有新闻编辑或管理员权限时,即可进行以下操作,如图 3所示为新闻编辑和管理员进行新闻信息维护时的用例图。如图 4 所示为一个用户正常的系统登录流程.l 新闻编辑。l 新闻添加。l 删除操作。在进行修改或删除操作之前,管理员必须得到相关新闻的编号,并根据这个编号进行修改或删除操作。在进行新闻添加操作时,数据库自动为新闻生成编号信息。用户/新闻编辑员/管理员 新闻类型 新闻标题列表分页 新闻信息 1:成功进 入新闻发布系统2:选择新闻类型3:标题列表显示4:列表分页显示5:浏览新闻 具体信息图 2 用户浏览操作协作图新闻编辑/管理员获取新闻编号新闻添加新闻修改新闻删除图 3 管理员新闻信息维护用例图用户登录身份验证权限划分普通用户新闻编辑员 系统管理员图 4 用户登录系统流程(三) 功能划分根据系统需求分析和流程设计,可以将系统按功能分为4个模块(如图 5所示为在线新闻发布系统模块功能划分图):在线新闻发布系统新闻信息管理浏览(用户/新闻编辑/管理员)修改(新闻编辑/管理员)删除(管理员)添加(新闻编辑/管理员)图 5 在线新闻发布系统功能模块划分图l 新闻浏览。l 新闻修改。l 新闻删除。l 新闻添加。在这4个功能模块中,“浏览”功能为所有用户提供,而“修改”、“删除”和“添加”操作只有新闻编辑员和管理员才能使用。三 数据库设计(一) 逻辑视图根据该新闻发布系统的需求,找到4个实体:用户实体、权限实体、新闻实体和新闻类型实体,其中用户信息包括新闻系统为每位用户分配的唯一编号、用户名以及密码。如图 6所示数据库逻辑关系视图。userid int10 name va20pwd va20powerid int10 name va20user : power = n : 1newspressid int10 title va50content va5000author va20presstime timestampnewstypeid int10 name va20newspress : newstype = n : 1图 6 在线新闻发布系统数据逻辑视图l 用户实体(user)包括元素为 用户编号、用户名、密码等。 l 权限实体(power)包括元素为 类型编号和名称等。l 新闻实体(newspress)包括元素为:新闻编号、标题、内容、作者、发布日期和类型等。l 新闻类型(newstype)包括元素为:类型编号和类型名称等。(二) 数据库建表根据图 6的数据库逻辑视图,在数据库中设计有4张数据表格:用户基本信息表(user表)、用户权限表(power表)、新闻类型表(newstype)、新闻信息表(newspress),如图 7为数据表格物理关系图。userid int(10) name varchar (20)pwd varchar(20)powerid int(10) powerid int(10) name varchar (20)remarks varchar(200)fk_power_reference_usernewspressid int(10) title varchjar (50)content varchar(2000)author varchjar (20)presstime timestamptype int(10) remarks varchar(200)newstypeid int(10) name varchjar (20)remarks varchar(200)fk_newspress_reference_newstype图 7 新闻发布系统数据表物理关系图在数据库newsdb中建立用户基本信息表(user 表),表中只需包括四个字段。 l id 用户编号,由系统统一分配,每个用户拥有唯一的编号。 l name 用户名,用户登录系统时使用的名字。l pwd 用户登录密码,只有使用该密码登录,用户才能以合法身份使用这个在线并管理系统。 l powerid 用户访问权限,不同的权限可以访问不同的网页,得到不同的服务。如表 1所示为user表结构表 1 user表结构字段名中文描述数据类型长度允许空键属性初始值id用户编号int10主键name用户名varchar20pwd登录密码varchar20powerid权限int10外键1在数据库newsdb中建立用户权限类型表(power表),表中的字段包括id、name、remark。如表 2 所示为power表结构。表 2 power表结构字段名中文描述数据类型长度允许空键属性初始值id权限类别编号int10主键name权限名称varchar20remarks备注varchar200新闻类型表(newstype表)描述了新闻的类型信息,如类型编号、类型名称等。在本系统中以“财经”、“娱乐”和“科技”等九种类型的新闻为例,可以先在新闻类型表中插入这三种类型信息,如表 3所示为新闻类型表字段信息描述信息。表 3 newstype表结构字段名中文描述数据类型长度允许空键属性初始值id类型编号int10主键name类型名称varchar20remarks备注varchar200插入适应性数据的sql脚本如下:insert into newstype (id, name) values(1, 财经 );insert into newstype (id, name) values(2, 娱乐 );insert into newstype (id, name) values(3, 科技 );等九种类型信息。在数据库newsdb中执行以上sql脚本即可插入“财经”、“娱乐”和“科技”等九种新闻类型信息适应性数据。新闻信息表(newspress表)描述了新闻基本信息,包括:新闻编号、新闻标题、新闻内容、作者、发布时间和新闻类型编号等信息。id 字段为表中的标识字段,type 字段为外键与newstype 表中的id 字段关联。如表 4 所示为数据库中新闻信息表的字段信息。表 4 newspress表结构字段名中文描述数据类型长度允许空键属性初始值id新闻编号int10主键title新闻标题varchar50标题content新闻内容varchar5000内容author作者varchar20作者presstime发布时间timestamptype新闻类型int10外键remarks备注varchar200(三) 数据库持久化处理数据库持久化处理采取hibernate框架实现。为使用hibernate的功能,首先要对hibernate的配置进行修改。hibernate的配置文件名为hibernate.cfg.xml,里面包含与数据库连接的各种信息如:数据库url、数据库jdbc驱动、数据库用户名和密码等等。如表 5 所示为hibernate.cfg.xml文件代码。表 5 hibernate.cfg.xml代码 newsdb jdbc:mysql:/localhost:3306/newsdb com.mysql.jdbc.driver org.hibernate.dialect.mysqldialect root 123 根据该系统数据库表设计及表间关系,运行hibernate orm 工具middlegen,首先从数据库得到4 个hbm.xml 资源文件:user.hbm.xml、power.hbm.xml、newspress.hbm.xml 文件和newstype.hbm.xml 文件。user.hbm.xml文件映射数据库中的user表,代码如表 6:表 6 user.hbm.xml代码 用户名称 用户密码 power.hbm.xml文件映射数据库中的power表,代码如表 7:表 7 power.hbm.xml代码 权限名称 备注 newspress.hbm.xml文件映射数据库中的newspress表,代码如表 8:表 8 newspress.hbm.xml代码外键标题内容作者发布时间备注newstype.hbm.xml文件映射数据库中的newstype表,代码如表 9:表 9 newstype.hbm.xml代码 名称 备注 外键 利用hibernate 提供的hbm2java 工具,根据以上得到的4 个hbm.xml 文件,可以自动生成编程开发所需要的*.java 文件。这些java 文件便可以充当 struts 架构中模型组件的代码。hbm.xml 与java 文件对应关系如表 10 所示。 表 10 文件对应关系表hbm.xml文件java文件user.hbm.xmluser.javapower.hbm.xmlpower.javanewstype.hbm.xmlnewstype.javanewspress.hbm.xmlnewspress.java下面将分别介绍根据hbm.xml文件生成的java代码。如表 11 所示为user.java代码,hibernate从数据库中读取user表的一条记录,并保存到user.java的实例对象中。程序中通过操作这些实例对象,达到操作数据库中数据的目的。表 11 user.java代码package news.hibernate;/* * 数据库用户表的dao对象 */public class user implements java.io.serializable /用户编号private integer id;/用户权限private power power;/用户名private string name;/用户密码private string pwd;public integer getid() return this.id;public void setid(integer id) this.id = id;public power getpower() return this.power;public void setpower(power power) this.power = power;public string getname() return ;public void setname(string name) = name;public string getpwd() return this.pwd;public void setpwd(string pwd) this.pwd = pwd;如表 12 所示为power.java代码,与数据库power表对应的java对象。表 12 power.java代码package news.hibernate;import java.util.hashset;import java.util.set;/* * 数据库权限表的dao对象 */public class power implements java.io.serializable /权限类型编号private integer id;/权限类型名称private string name;/权限类型备注private string remarks;/相同权限的用户集合private set users = new hashset(0);public integer getid() return this.id;public void setid(integer id) this.id = id;public string getname() return ;public void setname(string name) = name;public string getremarks() return this.remarks;public void setremarks(string remarks) this.remarks = remarks;public set getusers() return this.users;public void setusers(set users) this.users = users;如表 13所示为newstype.java代码,与数据库newstype表对应的java对象。表 13 newstype.java代码package news.hibernate;import java.util.hashset;import java.util.set;/* * 数据库新闻类型表的dao对象 */public class newstype implements java.io.serializable /新闻类型编号private integer id;/新闻类型名称private string name;/新闻类型备注private string remark;/相同新闻类型的新闻信息集合private set newspresses = new hashset(0);public integer getid() return this.id;public void setid(integer id) this.id = id;public string getname() return ;public void setname(string name) = name;public string getremark() return this.remark;public void setremark(string remark) this.remark = remark;public set getnewspresses() return this.newspresses;public void setnewspresses(set newspresses) this.newspresses = newspresses;如表 13所示为newspress.java代码,与数据库newspress表对应的java对象。表 14 newspress.java代码package news.hibernate;import java.util.date;/* * 数据库新闻信息表的dao对象 */public class newspress implements java.io.serializable /新闻信息编号private integer id;/新闻信息类型private newstype newstype;/新闻信息标题private string tiele;/新闻信息内容private string content;/新闻信息作者private string author;/新闻信息发布时间private date presstime;/新闻信息备注private string remark;public newspress() /构造方法public newspress(integer id,newstype newstype, string tiele, string content,string author, string remark) this.id = id;this.newstype = newstype;this.tiele = tiele;this.content = content;this.author = author;this.remark = remark;/ property accessorspublic integer getid() return this.id;public void setid(integer id) this.id = id;public newstype getnewstype() return this.newstype;public void setnewstype(newstype newstype) this.newstype = newstype;public string gettiele() return this.tiele;public void settiele(string tiele) this.tiele = tiele;public string getcontent() return this.content;public void setcontent(string content) this.content = content;public string getauthor() return this.author;public void setauthor(string author) this.author = author;public date getpresstime() return this.presstime;public void setpresstime(date presstime) this.presstime = presstime;public string getremark() return this.remark;public void setremark(string remark) this.remark = remark;利用工具除了生成上面的java文件外,还会生成hibernate框架与数据库连接的实现类文件hibernateservice.java及其业务逻辑文件newspressutil.java 和newstypeutil.java。由工具生成的代码未必符合本系统的业务需求,所以需要做出适当的修改。具体的代码内容如下:如表 15 所示为hibernateservice.java的代码,此文件为系统提供一个封装完善的数据库操作服务类,类中定义了configuration、sessionfactory等成员变量,通过读取hibernate.cfg.xml文件的数据库连接信息,创建连接数据库实例对象供系统访问数据使用。还提供了对数据库操作的事务控制,数据库执行sql语句方法。表 15 hibernateservice.java代码package news.hibernate;import java.util.list;import org.hibernate.hibernateexception;import org.hibernate.session;import org.hibernate.sessionfactory;import org.hibernate.transaction;import org.hibernate.cfg.configuration;/* * hibernate框架与数据库连接的实现类 * 提供获取数据库连接的对象 * 有简单的数据库表信息查询方法 */public class hibernateservice private static configuration configuration;private static sessionfactory sessionfactory;statictry /在当前的classpath路径中寻找hibernate.cfg.xml配置文件, /并将配置信息读入内存。configuration = new configuration().configure();sessionfactory = configuration.buildsessionfactory(); catch (exception e) e.printstacktrace();public static sessionfactory getsessionfactory()return sessionfactory;public static configuration getconfiguration() return configuration;public static void rebuildsessionfactory()synchronized (sessionfactory) try sessionfactory = getconfiguration().buildsessionfactory(); catch (exception e) e.printstacktrace();public static void rebuildsessionfactory(configuration cfg)synchronized (sessionfactory) try sessionfactory = cfg.buildsessionfactory();configuration = cfg; catch (exception e) e.printstacktrace();/创建session类实例public static session getsession()session session

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论