1湖南涉外经济学院题目(中文)新闻发布系统的设计与实现姓名学号学部专业、年级指导教师2新闻发布系统设计与实现目录一、需求分析1、概论2、背景3、数据管理能力要求4、基于Web的新闻发布系统的设计与实现二、系统分析1、流程设计2、构建新闻数据库3、添加和管理每天的新闻内容4、把新闻代码插入页面5、显示新闻的详细内容和相关新闻的标题三、程序设计1、用户登录2、用户数据删除四、结束语参考文献3新闻发布系统设计与实现一、需求分析1.1概述网站新闻发布系统,是将网站上的需要经常变动的信息,类似公司动态、企业新闻、新产品发布、促销活动和行业动态等更新信息集中管理,并通过信息的某些共性进行分类,最后系统化、标准化发布到网站上的一种网站应用程序。网站信息通过一个操作简单的界面加入数据库,然后通过已有的网页模板格式与审核流程发布到网站上。1.2背景目前许多企业网站的新闻大多是静态的HTML页面,每次更新信息需要做一个页面,然后FTP上传,再修改页面链接,这样维护非常麻烦,而网站新闻发布系统大大减轻了网站更新维护的工作量,通过新闻后台维护程序在浏览器上只需录入文字和上传图片就可以快速实现新闻维护,从而大大加快了信息的传播速度,时时保持网站的活动力和影响力。1.3数据管理能力要求实现新闻发布系统的做法大致上有两种:一种是把录入的新闻内容自动由程序直接生成HTML文件,比如按日期和新闻ID号来做HTML文件的名称,一些大的新闻网站如新浪、网易的新闻发布系统都是采用这个思想。而另一种就是直接把新闻数据保存到数据库里,当用户阅读新闻时,从数据库中调出数据,动态生成页面。这两种方法是有差别的:第一种的显示速度和对服务器的负荷来说,是最轻的。对于大流量的站点,速度就是生命,网站太慢了。后一种方法在处理上比较简便,维护也方便;还有一种就是两种结合,因为只有应用数据库才能方便地处理查询,从而把读者引导至相应的新闻页面。综合上面的方法,可以说各有千秋,本文主要介绍基于Web的两种结合方法。1.4基于Web的新闻发布系统的设计与实现目前基于Web的软件体系结构主要是B/S结构,即Browswser/Server(浏览器/服务器),主要利用了不断成熟的浏览器技术,通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本。PHP是现在流行的面向Web编程的语言之一,是一种服务器端的HTML嵌入脚本描述语言,并且很容易与现有的网页整合,可在Windows,Unix,Linux的Web服务器上正常运行,还支持IIS,Apache等通用Web服务器,用户更换平台时,无须变换PHP代码,可即拿即用。PHP支持Internet开发的一些前沿技术。这些技术包括身份认证、XML、动态图像生成、共享内存,以及动态PDF文档等,不一而足。MySQL是一个小巧灵珑的数据库服务器软件,对于小型(当然也不一定很小)应用系统是非常理想的。除了支持标准的ANSISQL语句,它还支持多种平台,而在Unix系统上该软件支持多线程运行方式,从而能获得相当好的性能。PHP+MySQL的组合还可以跨平台运行,这意味着可以在Windows上开发,然后在Unix平台上运行,PHP+MYSQL被称为黄金组合。PHP开发小组正准备加入BEATuxedo扩展,BEATuxedo是一个中间件产品,由BEA公司开发,该产品可以大大改善网站的响应速度和性能。这个扩展可以进一步提高PHP的效率,为PHP走向高端应用作好准备。本系统就是基于PHP+MYSQL开发的。二、系统设计2.1流程设计从处理流程上说,主要是提供一个基于Web管理新闻的页面(可添加和删改每天的4新闻,包括新闻图片,标题等),然后再到调用新闻的显示页面处理。考虑到新闻需要插到不同风格的网页中,所以不能使用一个固定格式的页面来显示新闻提要。应当把它们做成一个主页的可插入部分,最后还有一个阅读新闻时的详细内容页面。总的来说,一个可以完成在线新闻发布的程序主要由4大部分构成:把新闻数据保存到数据库中、处理删除新闻、处理新闻的标题显示(也就是插入主页的部分)、生成新闻的详细内容页面,如图1所示。2.2构建新闻数据库分析一下构成每条新闻的元素,主要由新闻标题、新闻内容、图片地址、连接地址、新闻的发布时间组成。而在构建数据库的时候,考虑到处理需要,必须加上新闻的ID号,以便识别。另外,可以加上点击统计,以便了解读者感兴趣的内容。构造如下的一个新闻数据库(news):表datanews_idint新闻的编号news_classint新闻的类别news_class_namevarchar(50)新闻的类别名news_titlevarchar(100)新闻的标题news_keywordvarchar(100)新闻的关键字news_headint是否首页显示news_commentblob新闻的内容news_timedatetime录入时间news_modifytimedatetime更新时间news_linkvarchar(200)链接地址按上述的要求建好这个表,就可以把新闻数据库转入MySql里面了。当建好数据库后就可以向库里添加新闻内容,并且对新闻内容进行编辑修改。2.3添加和管理每天的新闻内容当进行了新闻提交后,则交由一个录入程序来对新闻内容进行处理,以便分类和保存,为了显示清晰,每提交1条新闻,显示新闻文件的程序就重新读入,以便可以查看新闻是否能成功加入到数据库中,也可以方便地删除和编辑修改新闻内容。录入程序中首先应该判断提交的新闻是否符合条件,比如新闻标题是不能为空的。对录入和修改都是用户的录入的原始信息,在入库前用addslashes()编码,防止执行SQL出错。而输出的5时候进行必要的转换。换行符得转换为html语句的br,否则不能正常地显示出新闻的格式。以下是输出时使用的格式转换函数functionhtmlencode($str){$newstr=;$str_length=strlen($str);if($str_length0){//每次取出一个字符for($i=0;$i$str_length;$i++){$str_char=substr($str,$i,1);switch($str_char){casechr(13)://转换硬回车为br并让下一段首行缩进2个字$newstr.=br;break;casechr(10):$newstr.=;//转换软回车为空break;case:$newstr.=<;//过滤,防止htmlbreak;case&:$newstr.=&;//转换&break;default:$newstr.=$str_char;}//endofswitch()}//endoffor()}//endofif()return$newstr;}//endfunction程序处理完毕后,重新导向显示新闻文件,用以刷新新闻数据库内的显示,那么每提交1条新闻资料,马上可以看见执行的结果是否成功了。显示新闻文件也是一个构成管理页面的文件,它负责新闻数据库的标题显示,以便知道现在库里有些什么新闻。同时可以通过它来删除和编辑修改新闻记录,那么在使用新闻管理的页面里反应出来的结果就是动态的了,这样新闻就可以在线添加、删除和编辑修改。2.4把新闻代码插入页面最好的新闻发布,当然是为网站本身定做的,那样才能与主页风格一致,但如此一来,新闻发布系统又缺乏了通用性,不能移植到别的网站上使用,有得必有失,在这个基础上关键是找一个平行点。综合来考虑,最好的做法是与页面分离,那样就可以不影6响网页的外观,而又能达到很好的效果,在使用新闻的网页上可以通过放置一条这样的script语句来调用新闻代码scriptlanguage=JavaScriptsrc=http//host/intall-pall/autouplay.php/script其中autoplay.php程序就是从数据库里读取新闻标题的程序。通过定制autoplay.php程序,就能制作出符合您要求的网页显示格式。在这个程序中,可以设置每次显示新闻的条数以及新闻类别等。例如,要显示体育新闻的最新20条:?phprequire(init.inc);if(empty($offset))$offset=5;//显示过的条数$mysql_link=mysql_connect($host,$username,$password);$db=mysql_select_db($dbname,$mysql_link);//按时间顺序取体育新闻的相关信息$result=mysql_query(select*from$tablenamewherenews_class_name'=体育新闻'Orderbynews_timeDesclimit0,$offset,$mysql_link);if($result){echodocument.write(\ul\);\n;while($r=mysql_fetch_array($result)){echodocument.write(\liahref=$r['news_link']target=_blank.$r['news_title']./a/li\);\n;}echodocument.write(\/ul\);\n;}else//数据库中没有体育新闻{echo''数据库中没有体育新闻'';}?这里采用了一个包含文件init.inc,它的用处主要是用于连接不同的数据库,所以php程序都通过包含这个文件来指定数据库的配置,那么当更改使用别的数据库时,只需要更改这个文件,就能方便地实现不同数据库的切换。以下是init.inc文件的内容:?#使用新闻发布系统的数据库服务器的主机IP$host=127.0.0.1;#MYSQL数据库用户名$username=root;#MYSQL用户密码$password=;#MYSQL数据库账号名7$dbname=news;#存储新闻使用的表$tablename=data;#显示更多新闻时的条数$pagesize=15;?2.5显示新闻的详细内容和相关新闻的标题如果依然采取动态的页面来显示新闻的详细内容和相关新闻的标题,运行速度会很慢,并且对服务器的负担也很大。这时就要采取动态页面静态化来减小服务器负载:即当有新闻录入时自动由程序直接生成HTML文件,该程序的流程图如图2所示。这样,当用户点击新闻标题,就可以通过链接地址直接找到该静态页面,这样就提高了运行速度。为了保持与主页风格一致,同样采取了内容和页面分开处理的方法。在该程序中用了两个工作:一是读取新闻内容,二是读取关键字并对库进行检索查找相关新闻。另外用该新闻的ID号和录入时间生成该静态页面的文件名,并把文件名和地址写入新闻数据库中的连接地址字段中。2.6新闻检索新闻系统已能完成日常的新闻在线添加、删除等功能,但有的用户可能还需要查找一下以往某一专题内容的相关新闻条目。要为新闻系统添加上(全文/标题)的检索功能,首先做一个检索表单,放在需要新闻检索的页面上。在表单中用这个参数来指示出需要匹配的字串,而参数指定是基于全文搜索还是标题搜索。在程序处理过程中,通过传入的key参数和select(全文或标题检索)参数,生成一条SQL查询语句,分别在标题的数据库字段或在内容的字段中查找是否包含有key的字串,如果有的话就加到结果记录集,最后把新闻标题显示出来。对于输出界面可以根据个人需要定制。8三、程序设计3.1用户登陆%@pagelanguage=javacontentType=text/html;charset=gb2312%htmlheadtitle新闻发布系统登录/titleLINKhref=css/sts.cssrel=stylesheettype=text/css/headbody%@includefile=inc/top.jsp%%if(session.g