求新闻发布及管理系统的ASP代码
毕业设计的,最好包括论文 一、系统分析与总体设计 许多网站都提供新闻栏目。例如搜狐、新浪等著名网站的新闻专栏。许多企业及个人网站也需要定期发表一些关于企业或网站的新闻。因为网络中新闻发布的频率非常高,如果使用静态网页作为新闻网页,则维护工作非常繁琐,管理员每天需要制作大量的网页,花费了大量的时间和精力。 使用新闻发布及管理系统可以使新闻发布和管理变得非常轻松。管理员只需设置标题、内容和图片等新闻就可以了,系统将自动生成对应的网页 1、 系统功能描述 新闻发布及管理系统包括新闻离别管理、新闻发布管理、图片处理、新闻查询、网友评论和用户管理等模块。具体描述如下: 新闻类别管理模块 * 新闻类别的录入,包括类别编号和类别名称等信息; * 新闻类别的修改; * 新闻类别的删除。 新闻发布管理模块 * 基本新闻信息的录入、包括新闻标题、新闻内容和所属类别等; * 基本新闻信息的修改; * 基本新闻信息的删除。 图片处理模块 * 选择图片文件; * 上传图片文件: * 存储图片信息; * 修改线路图片; * 删除线路图片; * 在网页中浏览新闻图片。 报名管理模块 * 查看报名信息; * 处理报名信息; * 删除报名信息; * 查询报名信息。 新闻查询模块 * 按照新闻类别分页显示新闻; * 按照日期分页显示新闻; 网友留言模块 * 网友对某条新闻发表评论; * 管理员可以删除新闻评论 系统用户管理模块 * 系统用户信息的录入,包括用户名和密码等信息; * 系统用户信息的修改; * 系统用户信息的删除; 2、 系统功能模块划分 从功能描述的内容可以看到,本设计可以实现7个完整的功能。我们根据这些功能,设计出系统的功能模块如下图所示。 新闻发布及管理系统 新 闻 类 别 管 理 新 闻 发 布 管 理 新 闻 查 询 模 块 图 片 处 理 模 块 系 统 用 户 管 理 网 友 评 论 模 块 新闻发布及管理系统的功能模块之间的关系如下图所示。 后台系统 在本系统中用户管理的模块比较简单,在系统初始化时,有一个默认的“系统管理员”用户Admin ,由程序设计人员手动的添加数据库中。Admin用户可以创建用户,修改和删除用户,普通用户则只能修改自己的用户名和密码。 用户管理功能模块的关系如图所示。 系统用户 信息 管理 修改Admin用户密码 创建、删除和修改普通用户信息 修改自身的密码 3、系统流程分析 多用户系统的工作流程都是从对用户的身份进行认证开始用户登陆模块的。身份认证可以分为以下两个过程: 确认用户是否是有效的系统用户 确定用户的类型 本系统分为前台系统和后台系统两个部分,前后系统不需要进行身份验证,任何人都可以通过浏览器阅读已经发布的新闻、发表网友评论。 后台系统的流程分析如下图所示。Admin用户拥有所有的权限,普通用户只能对自己发布的新闻进行管理,包括修改新闻、删除新闻和删除网友评论。 用户管理模块 新闻发布后台系统 二、数据库结构设计与实现 1、 创建数据库 首先创建数据库newsl,用来保存本系统的所有数据。 2 数据库逻辑结构设计 本系统定义的数据库中包含以下4个表;新闻类别表 category、新闻基本信息表 news、网友评论信息表 discuss和用户信息表 users. 新闻类别表 category 新闻类别表 category 用来保存新闻类别数据,结构如表1.1所示。 表1.1 表category 的结构 编号 字段名称 数据结构 说明 1 Int 新闻类别编号 2 Varchar(50) 新闻类别名称 新闻基本信息表 news 新闻基本信息表 news 用来保存网上新闻的基本信息,结构如表1.2所示。 表1.2 表news的结构 编号 字段名称 数据结构 说明 1 int 新闻编号 2 varchar(100) 新闻标题 3 text 新闻内容 4 dateTime 提交时间 5 varchar(50) 提交人 6 int 新闻类别编号 7 bit 是否由图片标记(0-没有、1-有) 8 int 阅读次数 网友评论信息表 discuss 。 网友评论信息表 discuss 用来保存网友对新闻的评论信息。 结构表如1.3所示。 表1.3 表discuss的结构 编号 字段名称 数据结构 说明 1 Int 评论编号 2 Varchar(20) 评论人名称 3 smalldatetime 提交时间 4 Varchar(4000) 评论时间 5 int 新闻编号 用户信息表 users. 用户信息表 users用来保存用户的基本信息,结构如表1.4所示。 表1.4 表users的结构 编号 字段名称 数据结构 说明 1 报名编号 int 用户ID 2 线路编号 Varchar(50) 用户名 3 出发日期 Varchar(50) 密码 4 人数 Varchar(50) 用户姓名 5 报名人姓名 Varchar(50) 电子邮箱 三、设计要点 1、 主界面的主要功能是显示新闻类别和每个类别中的10条新闻。 2、 在修改和删除新闻时,除了admin 用户拥有所有的权限外,其他用户只能修改自己创建的新闻。所以在修改和删除新闻时,需要判断当前用户是否是admin或指定新闻作者。新闻阅读和查询没有权限限制。 3、 在添加和修改新闻内容时,需要对字体、字号、颜色和排列位置等属性进行设置 4、 添加新闻图片时,将其上传到服务器指定的目录下,需要时直接在网页中显示图片。
新闻程序的算法(一) 添加新闻 一。添加新闻 添加新闻既是向数据库添加新的数据。 整个算法是这样的:管理员在表单中填写新闻的内容,包括: title,author,source,content ,另外两个字段( id,time )的内容有服务器完成,当然也要自己写程序,只是不由自己手动而已。
提交表单后,用 MySQL 语句将它们添加到数据库中。 下面简单介绍一下表单中 标签和 标签。 标签为单行文本框。偶们常用的属性有: name, type 。 name 属性指定了变量的名称,既这个名称代表了这个 中的内容。
type 属性指定了 中内容的性质。如果 type=text ,则为一般性的文字。如果 type=password ,则这个“ ”中的内容在浏览器一律以黑点显示,这样可以在输入内容时不会在无意中被他人见到而造成数据安全问题。 标签为多行文本框,常用属性为 name 。
在本程序中此段程序如下所示: 在“ name="author" ”中的 "author" 就代表了“ ”中的内容。同样的,这个 "author" 也可以是 "title" 或者其他,值得注意的是,这个 "author" 和字段 author 是不一样的。
偶在这个地方提到两个非常相似的概念:字段 author 和变量 $author (上面的 ”author” 实际上就是 $ author ,因为它代表了“ ”中的内容)。虽然它们几乎是同名的,但可绝对不是一回事。 Author 是数据表 news 里的一个字段名, PHP 用它来有限定的访问 MySQL 中的数据,在程序中是不能用其它的字符替换的;而 $author 是本程序中用户自己设定的变量符号,其值由“ ”中对应元素的 name 属性得到。
既然它只是变量符号,偶们就可以使用任意字段,只要保证与表单中对应元素的 name 属性一致就可。之所以选择用与字段名相同的字符,是因为这样偶们就不必再费力去多记一个变量名而已。 偶们再来看 标签中的内容: 这个 中的内容是用来得到 content 字段内容的,因为此字段中的内容太多,所以只能用这个标签了。
当偶们填好这些内容后,只要提交就可以了,那么这一过程又是如何实现的呢? 下面偶们再来看以下的程序: 这里的 type="submit"/ type="reset" 分别代表提交和重写新闻。
value 属性的内容在此按钮上显示出来。 name=" reset"/ name="submit" 中的含义和上面所说的是一样的。 HTML 中的表单( form )元素是专门负责也用户进行交互式操作的。当点击类型为 submit 的按钮时,表单中所有的元素都将以变量的形式提交给 action 所指的文件来处理。
变量名由该元素的 name 属性来确定。在本程序中这个代码如下: 在这个地方偶们把处理数据的程序还是放在同一页面( action= p ),在 method 属性中偶们令 method=post ,这里的 post 是值传递的方式。
那现在偶们就在 action 指定的页面来讨论以下的程序: $author=$_POST["author"]; 这里的 $author 是偶们自己定义的变量名, author 是在 标签中 name 属性中定义的名字。
POST 为 中 method 定义的值传递方式。通过这种值传递方式得到的数据,偶们一律用 $_POST[" "] 收取。 完整的这类程序如下所示: if(@$_POST["submit"]) { $author=$_POST["author"]; $department=$_POST["department"]; $title=$_POST["title"]; $content=parsecontent($_POST["content"]); $date=date("y-m-d H:i"); mysql_query("INSERT INTO news(title,date,author,department,content) VALUES('$title','$date','$author','$department','$content')"); } 其中的 date( ) 函数用法请查看其他书籍。
上面一共是 5 个字段,还有一个字段 id 因为偶们在“额外”中选择了 auto-increment ,所以上面的数据插入到数据库时, id 就自动加 1 了。 当然在这个程序前,必须先连接好数据库,下面的所有与数据库连接的程序也是一样的,必须先连接还数据库。
二.显示新闻 添加新闻后,就可以让别人来看新闻了。 这里的算法是这样的:先在新闻首页上显示新闻的标题及其他附加内容(如发表时间),这可以用循环输出的办法输出所有的新闻的标题。要查看具体新闻的内容时,点击新闻标题的超级链接进入一个新的页面查看这条新闻。
在开始这程序之前,链接好数据库。 当新闻很多时,偶们就要给新闻分页了,偶们设置好每页显示 10 条新闻。 具体的分页程序如下: $respage = mysql_query("SELECT COUNT(*) FROM news;"); //$num 是数据库中总纪录数 while($row = mysql_fetch_row($respage)) { $num = $row[0]; } $recordnum =10; $pages = ceil($num/$recordnum); // $recordnum 是每页显示多少条记录, $pages 是一共有多少页 if (@$_GET["page"]) // 获取 url 中的参数 page { //$current 是当前页 ,$pre 是前一页的, $next 是后一页, $pre 和 $next 为后面前一页和后一页的连接参数 page 的值 // 如果 url 中的参数为 1 ,把当前页置为 1 前一页, $pre 也为一, $next 为 2 if($_GET["page"]==1) { $current = 1; $pre = 1; $next = 2; }else{ // 如果 url 中的参数不为一(不是第一页),就把当前页取值为 url 中获得的参数, $pre 为当前页减 1 , $next 为加 1 $current = $_GET["page"]; $pre = $current-1; $next = $current+1; } }else { // 如果 url 中没有参数 page ,当前页置为 1 , $pre=1,$next=2 $current = 1; $pre = '1'; $next = 2; } $now = ($current-1)*$recordnum; $echopage = ""; $echopage 。
= ""。$pages。" 页 "; $echopage 。= " 第一页 最后一页 "; $echopage 。= " 前一页 后一页 "; $echopage 。= " 到第 \n"; for($i=1;$i$i\n"; else $echopage 。
= "$i\n"; } $echopage 。= " 页 "; $echopage 。= ""; 对这段程序偶就不做详细的讲解了。因为很麻烦,再说这和新闻程序的算法不是一回事,呵呵。在用的时候,偶们在输出的新闻标题后面这样写就可以了: echo ""。
$echopage。""; 放在后面是因为 $echopage。 里面包含了选择去第几页的程序。 偶们再来看以下程序: 1 : $sql="SELECT * FROM news order by id desc LIMIT $now,$recordnum"; 这里的“ order by id desc ”意为驱除的记录是按编号由大到小的顺序输出的,换句话说就是新闻的输出总是新发表的在前面。
“ LIMIT $now,$recordnum ”限制了新闻输出的数目, id 的大小在 $now,$recordnum 之间,具体 $now,$recordnum 的数值请看上面的分页程序的讲解(粗黑体字部分)。 2 : $res=mysql_query($sql); 这条语句意思是向服务器发送请求,并将返回的结果保存在 $res 中。
3 : $rows=fetch_assoc($res); 这条语句意思是将查询结果 $res 的内容拆到一个数组 rows 中。如果 $res 中没有数据,函数返回 false 值。 fetch_assoc( ) 函数的作用和 mysql_fetch_row() 是一样的。
4 : while($rows) { echo ""; echo ""。$rows["title"]。"["。$rows["date"]。"]"; echo ""; } while($rows) 便是按 id 的由大到小的顺序输出新闻的。
$rows["title"] , $rows["author"] 就是数组形式的内容了。 下面来谈谈如何查看每一条新闻的内容。 偶们来看看上面第 4 个程序中的: "。$rows["title"]。"["。
$rows["date"]。"] 其中的“ href=' p?id="。$rows["id"]。"' ”就是第 $rows["id"] 条新闻的具体地址了。从上面也可以看出显示具体新闻的程序也在 p 中了。当偶们点击这个超级链接时,此程序将参数传递给 PHP 文件中的同名变量。
需要注意的是,你只能向动态页面传递参数,而不能传递给 。htm 结尾的静态页面。 那这里所说的参数是指什么呢?上面的“ p?id="。$rows["id"]。" ”的“?”就是变量的开始,“ id ”则是变量名,“ "。$rows["id"]。
" ”就是变量的值了。如果还想向 PHP 文件传递更多的参数,可以用“ & ”隔开。例如: p?id="。$rows["id"]。"& title="。$rows["title"]。" 在本程序中,偶们得到的变量名为“ id ”,现在偶们来分析这段程序吧! 1 :首先偶们要保证这个 id 在数据库是有数据的,所以偶们用以下语句来判断: if(isset($_GET["id"])){ } 这里的 $_GET["id"] 就是从浏览器地址栏中接受数据的方式。
isset( ) 是判断有无数据的函数。 2 :如果有数据,偶们就把以下的程序写入上面的“ { } ”中。 $sql= "select * from news where id="。$_GET["id"]。""; $res= mysql_query($sql); $rows=fetch_assoc($res); while($rows) { echo ""; echo ""; echo ""。
$rows["title"]。""; echo "
"; echo ""; echo ""。$rows["date"]。" "。$rows["department"]。" "。$rows["author"]。
""; echo ""; echo ""; echo ""; echo ""; echo ""; echo " "。$rows["content"]。""; echo ""; echo ""; } 三.修改、删除新闻 和查看新闻的程序一样,偶们要先列出所有的新闻标题,然后在选择具体的新闻进行修改、删除操作。
在这里列出新闻标题时,比 p 的程序多了一条语句,那就是输出: 修改 通过点击这个超级链接,偶们进入具体的修改、删除新闻的程序。 具体的程序如下: if(@$_GET["id"]) { $id = $_GET["id"]; $sql="SELECT * FROM news WHERE id=$id"; $res = mysql_query($sql); $row=fetch_assoc($res); $edit = ""; $edit 。
= ""; $edit 。= " 第 $id 条新闻 标题 : "; $edit 。= " 作者
日期 :
"。$row["date"]。""。$row["content"]。
""; $edit 。= ""; $edit 。= ""; $edit 。= ""; $edit 。= ""; echo $edit; } 上面“ if(@$_GET["id"]) ”中的“ @ ”意思是说禁止函数返回出错提示。
这样当程序出现异常时,不至于让普通用户看见那莫名其妙的出错信息。 值得一说的是,偶们把可以修改的内容放在属性 value 中,既“ value="。$row["title"]。" ”等。 在 标签中把 action 属性设为“ action= p ”,当偶们提交表单后,由 p 对数据库进行操作。
这其中的语句都是偶们在前面提到的,偶就不信你看不懂!!!程序如下: if(@$_POST["edit"]) { $author = $_POST["author"]; $title = $_POST["title"]; $content = $_POST["content"]; $source =$_POST["source "]; $date = date("y-m-d H:i"); mysql_query("UPDATE news SET author='$author',title='$title',content='$content', source =' source',date='$date' WHERE id=$id"); } if(@$_POST["delete"]) { mysql_query("DELETE FROM news WHERE id=$id LIMIT 1"); } 。
眼花了兄弟,份给我+起谢谢了哈.
答:这里有很多,看看吧,但不是免费的详情>>
答:我建议你去--天下网吧联盟 这里面都是网吧业主和网管交流的论坛,你可以自己注册一个用户进去看看,你可以和他们交流也可以寻求他们的帮助,我想没有你解决不了的问题,...详情>>
答:格式化文本区域的段落标记,用于规定文本和层的属性和位置等。比如: 新浪网 用来规定 新浪网 这三个字居中显示。 文本中心(CENTER)、左(LEFT)或右(R...详情>>