新闻发布管理系统实习报告.docx
- 文档编号:4762966
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:54
- 大小:1.49MB
新闻发布管理系统实习报告.docx
《新闻发布管理系统实习报告.docx》由会员分享,可在线阅读,更多相关《新闻发布管理系统实习报告.docx(54页珍藏版)》请在冰豆网上搜索。
新闻发布管理系统实习报告
新闻发布管理系统
第一章引言
1.1研究意义
随着互连网的进一步发展,网络媒体在人们心中的地位进一步提高,新闻发布管理系统做为网络媒体的核心系统,其重要性是越来越重要:
一方面,它提供一个新闻管理和发布的功能;另一方面,现在的新闻发布要求实现与普通的用户实现交互,用户可以很方便地参加一些调查和相关新闻的评论,这一点也是其他一些媒体现在无法做到的(电视,电台等)。
新闻发布管理系统就是一个把杂乱无章的新闻信息有效得组织起来并以有序的方式呈现给前端客户的一个信息系统,系统主要实现对新闻的分类,管理,检索,浏览等一系列问题,从而为用户提供一个美观,大方,快速的前台新闻阅读界面。
1.2开发环境的搭建与开发工具
1.2.1本系统采用php+apache+mysql+PDO技术开发,使用smarty模板引擎,将逻辑代码与外在内容分离。
Smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一。
它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。
简单的讲,目的就是要使PHP程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。
DO扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。
1.2.2开发环境搭建
WampServer,是在windows下将Apache+PHP+Mysql集成环境,拥有简单的图形和菜单安装和配置环境。
1.2.3ide的选择
Dreamweavercs5,所见即所得网页编辑器。
EclipsePHPStudio1.2.2是一个大型PHP项目开发编译器,给予Eclipse底层开发而来,并且集成了JDK,免除处了安装配置的麻烦,一次安装即可使用无需配置。
此编译器为PHP编译器,辅助PHP代码的开发和调试,集成了代码高亮,函数跟踪,时时纠错等功能。
同时还增加了协作开发版本服务器功能:
SVN,CVS。
内嵌浏览器可以在调试简单代码时时浏览。
1.2.4UML设计工具
PowerDesigner是Sybase公司的CASE工具集,使用它可以方便地对管理信息系统进行分析设计,它几乎包括了数据库模型设计的全过程。
利用PowerDesigner可以制作数据流程图、概念数据模型、物理数据模型,可以生成多种客户端开发工具的应用程序,还可为数据仓库制作结构模型,也能对团队设备模型进行控制。
第二章系统分析
2.1需求分析
2.1.1系统需求分析
本系统设计的目的是将不同类型的新闻发布到网络上,任何用户都可以
通过这个平台来浏览新闻,用户登录后可以对新闻发表评论。
管理员管理新闻,新闻栏目,用户信息和评论。
将系统需求总结,得出系统需求如下:
●系统用户分为游客,已登录用户和管理员
●游客可以浏览新闻,但不能对新闻进行评论
●游客可以注册,注册后进行登录可以获得更多权限
●已经登录用户具有游客的所有权限
●已经登录用户可以对新闻进行评论
●已经登录用户可以对偏激的评论举报
●只有超级管理员具有用户所有的权限
●管理员可以对新闻进行管理
●管理员可以对新闻分类进行管理
●管理员可以对用户进行管理
●管理员可以对评论进行管理
2.1.2用例图
用例图(UserCase)是被称为参与者的外部用户所能观察到的系统功能的模型图,呈现了一些参与者和一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。
新闻发布管理系统面向三类用户:
管理员,已经登录用户,游客,权限依次递减。
1)管理员
管理员拥有最高权限,负责新闻发布管理系统的日常运行和维护,该系统给管理员的主要功能有:
管理用户,新闻分类管理,新闻管理,评论管理,管理员角色用例如图2-1所示。
图2-1管理员角色用例图
2)已经登录用户
已经登录用户是新闻发布管理系统的使用者。
本系统为他们提供了以下主要功能:
用户登录,浏览新闻,搜索新闻,发表新闻评论,举报评论,参加投票、收藏新闻等。
已经登录用户的角色用例图如图2-2所示
图2-2已经登录用户角色用例图
3)游客
游客是任何能登录到新闻发布管理系统的的人,但是没有注册,登录验证。
所以权限最低。
主要有以下几个功能:
注册,登录,浏览新闻,搜索新闻,参加投票。
游客角色用例图如图2-3所示。
图2-3游客角色用例图
2.13数据流图
数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的传输变换过程。
数据流图是结构化系统分析的主要工具,它表示了系统内部信息的流向,并表示了系统的逻辑处理的功能。
数据流图的基本图形元素有4种,如图2-4所示
图2-4数据流图基本图形符号
根据调查材料,明确系统外部项,识别数据输入的来源和输出的去向,自顶向下逐层扩展整个系统的逻辑功能,画出中层数据流图。
D1:
用户信息存储,D2:
评论信息存储,D3:
用户收藏新闻信息存储,D4:
新闻信息存储,D5:
新闻分类信息存储,
D6:
管理员信息存储
图2-5数据流图
2.2可行性分析
本系统属于数据信息发布与管理系统类。
用户对功能上的要求不是很复杂。
并且用php开发,php简单,功能强大。
新闻发布管理系统后台管理对新闻做了详细的分类,前台以分类形式显示新闻的详细信息,满足了人们浏览新闻时分类查看新闻信息的要求,前台提供新闻搜索功能,方便浏览者查找新闻。
新闻发布管理系统后台由管理员进行管理维护,保证了安全性,所以本系统是十分可行的。
第三章概要设计
3.1系统功能结构图
本系统的功能结构图如图3-1所示
图3-1系统功能结构图
3.2实体关系图
实体关系图:
简记E-R图是指以实体、关系、属性三个基本概念概括数据的基本结构,从而描述静态数据结构的概念模式。
图3-2新闻发布管理系统E-R图
3.3系统功能模块设计
本系统分为前台和后台两大模块,后台是针对管理员设计的,后台模块主要负责用户的管理,新闻的管理,新闻分类的管理,以及评论的管理。
用户管理包括对用户的添加,删除功能;新闻管理包括对新闻的添加,删除和修改功能;新闻栏目管理包括对新闻分类的添加,删除,修改功能;评论管理包括对评论的查找和删除功能;该模块的功能结构图如图3.3所示。
前台模块针对游客和已登录用户而设计的,主要负责用户的登录,注册和注销功能以及新闻的浏览和对新闻发表评论的功能,其模块功能图如图34所示。
图3-3新闻后台功能模块
图3-4新闻前台功能模块
3.5数据库设计
1.后台用户表:
np_admin
2.前台用户表:
np_user
3.系统基本配置表:
np_config
4.新闻基本表:
np_newsbase
5.新闻内容表:
np_newscontent
6.新闻分类表:
np_newsclass
7.新闻评论表:
np_comment
8.投票项目表:
np_vote
9.投票选项表:
np_item
10.友情链接表:
np_link
11.用户收藏表:
user_store
连接数据用PDO
封装的pdo的类pdo.class.php
php
/*********pdo连接数据库的简单继承封装***********/
classmypdoextendsPDO{
private$dsn="mysql:
host=localhost;dbname=newsphp";/******数据库类型,ip,数据库名*****/
private$user="root";//用户名
private$pass="";
/**
*构造函数,连接数据库
*
*/
publicfunction__construct(){
try{
PDO:
:
__construct($this->dsn,$this->user,$this->pass,array(PDO:
:
ATTR_PERSISTENT=>true,PDO:
:
MYSQL_ATTR_INIT_COMMAND=>"SETNAMES'utf8';"));
parent:
:
setAttribute(PDO:
:
ATTR_ERRMODE,PDO:
:
ERRMODE_EXCEPTION);
}catch(PDOException$e){
$e->getMessage();
}
}
/*******统计条数*****/
publicfunctioncount_row($table){
$rs=$this->query("SELECT*FROM$table");
$rs->fetch();
return$rs->rowCount();
}
>
第四章详细设计
4.1目录结构
网站总目录
前台配置:
网站后台目录
4.2模块划分
系统功能模块的划分,是在需求分析基础上进行的,是把具有复杂功能的系
统通过设计分解为具有基本独立,功能简单,易于实现等特点的多个功能模块.
模块划分的好处是,由于组成系统的模块基本独立,功能明确,因此便于模块的
独立开发、维护和修改,而不会影响系统中的其他模块.
本系统主要分为前台和后台2大模块
1.前台主要模块
1.1新闻浏览
1.2新闻搜索
1.3用户登录与注册
1.4发表评论
1.5收藏文章
2.后台主要模块
2.1管理员权限
2.2登录,注册
2.3发表新闻
2.4管理新闻
2.4管理用户
2.5管理评论
4.3网站布局的设计
网站前台使用css+div布局,css布局用到了960gridsystem,CSS框架能够节省更多的开发时间,显著提高工作效率。
网站的首页
4.4用户登录与验证
前台和后台操作用到的基本代码设计成函数,在action.php里
Action.php代码:
php
session_start();
define("ALLPS","xu--");
/*********显示全部错误***********/
error_reporting(E_ALL);
ini_set("display_errors","on");
/***********屏蔽警告和错误提示*******************/
/*error_reporting(E_ERROR);
ini_set("display_errors","Off");*/
/********用户登录********/
functionuser_login(){
$db=newmypdo();
$username=str_replace("","",$_POST['username']);
$rs=$db->prepare("select*from`np_user`where`username`=?
");
$rs->execute(array($username));
$row=$rs->fetch();
$us=is_array($row);
$pass=$us?
md5($_POST['password'].ALLPS)==$row['password']:
false;//验证密码
if($pass){
$_SESSION['uid']=$row['uid'];
$_SESSION['shell']=md5($row['username'].$row['password'].ALLPS);
$_SESSION['times']=time();
$rs=$db->prepare("UPDATE`newsphp`.`np_admin`SET`last_login`=?
WHERE`id`=?
");
$rs->execute(array(time(),$row['uid']));//更新登录时间
return$row;
}else{
session_destroy();
show_msg("index.php","用户名或密码错误");
}
}
/***********用户权限判断*************/
functionuser_check($uid,$shell){
$db=newmypdo();
$rs=$db->prepare("select*from`np_user`where`uid`=?
");
$rs->execute(array($uid));
$row=$rs->fetch();
$us=is_array($row);
$pass=$us?
$shell==md5($row['username'].$row['password'].ALLPS):
false;//验证密码
if($pass){
return$row;
}else{
session_destroy();
}
}
/*******注销********/
functionlogout(){
session_destroy();
}
/*******超时判断*******/
functiontimeout($long="3600"){
$new_time=time();
$onlinetime=$_SESSION['times'];
if($new_time-$onlinetime>$long){
session_destroy();
header("Content-Type:
text/html;charset=utf-8");
echo"登录超时".'
exit();
}else{
$_SESSION['times']=time();
}
}
/*************PHP中文字符截取***************/
/*@paramstring$str要截取的字串
*@paramint$start截取起始位置
*@paramint$length截取长度
*@paramstring$charsetutf-8|gb2312|gbk|big5编码
*@param$suffix是否加尾缀
*/
functioncutstr($str,$start=0,$length,$charset="utf-8",$suffix=true)
{
if(function_exists("mb_substr"))
{
if(mb_strlen($str,$charset)<=$length)return$str;
$slice=mb_substr($str,$start,$length,$charset);
}
else
{
$re['utf-8']="/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
$re['gb2312']="/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
$re['gbk']="/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
$re['big5']="/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
preg_match_all($re[$charset],$str,$match);
if(count($match[0])<=$length)return$str;
$slice=join("",array_slice($match[0],$start,$length));
}
if($suffix)return$slice."…";
return$slice;
}
/*******操作提示跳转页******/
functionshow_msg($url,$show='操作已成功!
',$open="self"){
$msg='
DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http:
//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
//www.w3.org/1999/xhtml">
setTimeout("goto()",2000);
functiongoto(){
'.$open.'.window.location="'.$url.'";
}
100px;border-collapse: collapse;"> #cef">信息提示
2秒后返回指定页面!
如果浏览器无法跳转,