kl800.com省心范文网

基于WEB的新闻发布系统完整的论文

计算机科学与技术专业零六届毕业设计论文

论文题目:基于 WEB 的新闻发布系统


第一章



诸论 ........................................................................ 5

第一节 开发工具的选用及介绍 ....................................................................................... 5 第二节 ASP 技术访问 WEB 数据库 ................................................................................ 6

第二章

系统分析与总体设计 .................................................. 9

第一节 系统功能描述 ....................................................................................................... 9 第二节 系统功能模块划分 ............................................................................................. 10 第三节 系统流程分析 ..................................................................................................... 12

第三章

数据库结构设计与实现 ............................................. 13

第一节 创建数据库 ......................................................................................................... 13 第二节 数据库逻辑结构设计 ......................................................................................... 14 第三节 创建表的脚本文件 ............................................................................................. 16

第四章

目录结构与通用模块 ................................................ 18

第一节 目录结构 ............................................................................................................. 18 第二节 通用模块 ............................................................................................................. 18

第五章

系统主界面与登录程序设计 ...................................... 24

第一节 设计主界面 ......................................................................................................... 24 第二节 登录程序设计 ..................................................................................................... 28 第三节 设计管理界面 ..................................................................................................... 29

第六章

新闻类别管理模块设计 ............................................. 34

第一节 设计新闻类别管理界面 ..................................................................................... 35 第二节 添加新闻类别 ..................................................................................................... 39 第三节 修改新闻类别 ..................................................................................................... 41 第四节 删除新闻类别 ..................................................................................................... 41

第七章

新闻发布管理模块设计 ............................................. 44

第一节 添加新闻 ............................................................................................................. 44 第二节 修改新闻 ............................................................................................................. 49 第三节 删除新闻 ............................................................................................................. 51 第四节 新闻查询管理 ..................................................................................................... 52

第八章

调试与安装 .............................................................. 61

第一节 安装 IIS ............................................................................................................... 61 第二节 ASP 硬件要求..................................................................................................... 62

结束语 .................................................................................... 63 参 考 文 献 ........................................... 错误!未定义书签。 后 记 ................................................................................ 64

摘要

【摘要】 我们从建站的实际情况出发, 经过对有关网站新闻发布事项的一番考察和分析, 确立了新闻发布系统的具体实现功能。 并阐述系统的结构设计和功能设计, 实现新闻的分类 显示,最近新闻的提示,新闻滚动功能等。经过授权的用户可以通过 Web 浏览器,以人机 交互式的客户端程序实现对学校新闻的发布、管理、实时的进行行为统计和记录。本系统是 学校网站的一个子系统, 具有很好的外部接口, 能够很好的配合站点的其它子系统服务于网 站的新闻发布.该系统是一个基于新闻发布和内容管理的全站管理系统;基于 B/S 模式 WEBMIS 系统,本系统可以将杂乱无章的信息(包括文字、图片和影音)经过组织,合理 而且有序地呈现在大家面前。简单的说,新闻发布系统就是充当一个网络新闻媒介的功能。 主要实现对新闻的分类,审核,发布,模拟了一般新闻媒介的发布的过程

we embark from the station construction actual situation,pass through to a related website news issue item inspection and theanalysis, has established the news issue system concrete realizationfunction. And the elaboration system structural design and

【Abstract】

thefunctional design, realize the news classification to demonstratethat, the recent news prompt, the news rolls the function and so on.After the authorized user may through the Web browser, by theman-machine interactive customer end procedure realization to theschool news issue, the management, real-time carry on the behaviorstatistics and the record. This system is a school website sub-system, has the very good exterior connection, can the very goodcoordinate stand other subsystems serve the website news issue This system is based on the news issue and the content managemententire station management system management system; Based on B/S thepattern WEBMIS system, this system may the chaotic information(including writing, picture and video and music) the processorganization, reasonably has the foreword to present in front ofeverybody. Simple saying, the news issued the system is acts as a NetNews medium the function, the main realization to the newsclassification, the verification, the issue, has simulated the commonnews medium news issue process

前言
在 Internet 飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道, 它在人们政治、经济、生活等各个方面发挥着重要的作用。Internet 上发布信息主要是通过 网站来实现的,获取信息也是要在 Internet“海洋”中按照一定的检索方式将所需要的信息从 网站上下载下来。因此网站建设在 Internet 应用上的地位显而易见,它已成为政府、企事业 单位信息化建设中的重要组成部分,从而倍受人们的重视。 由于时间有限, 加之信息系统开发经验的缺少和编程能力的有限, 所以本系统难免存在 各种各样的缺点。 敬请指导老师能够提出批评和宝贵意见, 也希望各位读者提出宝贵意见并 进行指正,谢谢!

第一章
第一节 开发工具的选用及介绍

诸论

1. ASP 的优势:Active Server Pages:“动态服务器网页”,一般简称为“ASP”,ASP 之所 以能受到大家的重视与使用的原因,主要在于所产生的执行结果都是标准的 HTML 格式, 而且这些程序是在网络服务端中执行,使用一般的浏览器(如 IE 或 Netscape)都可以正确 地获得 ASP 的“执行”结果, 并且将这 ASP 执行的结果直接在浏览器中“浏览”, 不像 VBScript 或 JavaScript 是在客户端(Client)的浏览器上执行,若使用 VBScript 来设计程序,客户端 (Client)在 IE 浏览器中可以显示程序执行的结果,可是,客户端(Client)若使用 Netscape 浏览器就无法显示 VBScript 的执行结果。 2.ASP 的特点: 任何开发工具皆可发展 ASP。 只要使用一般的文书编辑程序, 如 Windows 记事本,就可以编辑。当然,其他网页发展工具,例如,FrontPage Express、 FrontPage 等 也都可以;不过还是建议你用记事本来写,既省钱又方便,若是使用那些所见即所得的网页 编辑来写 ASP,可能会发生一些意想不到的离奇状态。 3.通吃各家浏览由于 ASP 程序是在网络服务器端中执行,执行结果所产生的 HTML 文 件适用于不同的浏览器。 4. 语言相容性高: ASP 与所有的 ActiveX Script 语言都相容,除了可结合 HTML, VBScript、Java Script、Active X 服务器组件来设计外,并可经由“plug-In(外挂组件模组) 的方式,使用其他厂商(Third Party)所提供的语言。 隐密安全性高。如果我们在浏览器中直接查看网页的原始代码,就只能看到HTML文件, 原始的 ASP 程序代码是看不到的!这是因杰 ASP 程序先于网站服务(Web Server)端执行 后,将结果转换成标准HTML文件,再传送到客户端(Client)的浏览器上,因此,我们 所辛苦撰写的 ASP 程序并不会轻易地被看见进而被盗用。 5.易于操控数据库: ASP 可以轻易地通过 ODBC(Open Database Connectivity)驱动程序连 接各种不同的数据库,例如:Acess、Foxpro、dBase、Oracle 等等,另外,ASP 亦可将“文 本文件”或是”Excel” 文件当成数据库用。 6.面向对象学习容易:ASP 具备有面向对象(Object-Oriented)功能,学习容易,ASP 提供了五种方便能力强大的内建对象:Request、Response、Sever、Application 以及 Session, 同时,若使用 ASP 内建的“Application”对象或”Session”对象所撰写出来的 ASP 程序可以在 多个网页之间暂时保存必要的信息。

ASP 的六大内部对象 Request、Response、Server、Session、Application、ObjectContext 从客户端取得信息将信息送给客户端提供一些 Web 服务器工具储存在一个 Session 内的用户 信息,该信息仅可被该用户访问在一个 ASP-Application 中让不同的客户端共享信息可以用 来配合 Microsoft Transaction 服务器进行分布式事务处理。 所以我选择了 ASP 结合 Frontpage 架构网站。在此期间本人将使用 Macromedia Dreamweaver MX 2004 进行 ASP 页面的编码,并使用 IIS6.0 对页面进行调试。

第二节

ASP 技术访问 WEB 数据库

一.访问 WEB 数据库的多种方案 目前在 WINDOWS 环境下有多种访问 WEB 数据库的技术,主要有: (1).公共网关接口 CGI(Common Gateway Interface) CGI 是较早实现的技术。适用于多种服务器平台,如 UNIX、WINDOWS 等,但 CGI 的开发成本高、维护困难、功能有限、不具备事务处理功能、占用服务器资源较多。 (2). INTERNET 数据库连接器 IDC(Internet Database Connector)。 IDC 集成在 ISAPI(Internet Server API)中, 充分利用了 DLL 技术, 易扩充, 但编程较 CGI 更为复杂,只适用于小型数据库系统。 (3). 先进数据库连接器 ADC(Advance Database Connector) ADC 提供了 ActiveX Control 来访问数据库,它的主要特点是数据查询由用户端浏览器 执行,因而需将服务器端数据库中的部分记录下载到用户端,系统开销较大、响应慢,只适 用于特别频繁的数据库查询操作。 (4). JAVA/JDBC 语言编程 JAVA 语言是一种面向对象、易移植、多线程控制的语言,可通过 JDBC 去连接数据库。 用 JAVA/JDBC 编写的软件可移植性强,适用于多种操作系统,但其执行效率和执行速度还 不理想,目前无法建立高效、高速的应用。 (5). 动态服务器页面 ASP(Active Server Page) ASP 是微软公司最新推出的 WEB 应用开发技术,着重于处理动态网页和 WEB 数据库 的开发,编程灵活、简洁,具有较高的性能,是目前访问 WEB 数据库的最佳选择。

二.ASP 简介

1.ASP 访问数据库的原理 ASP 是服务器端的脚本执行环境, 可用来产生和执行动态的高性能的 WEB 服务器程序。 当用户使用浏览器请求 ASP 主页时,WEB 服务器响应,调用 ASP 引擎来执行 ASP 文 件,并解释其中的脚本语言(JScript 或 VBScript),通过 ODBC 连接数据库,由数据库访问 组件 ADO(ActiveX Data Objects)完成数据库操作,最后 ASP 生成包含有数据查询结果的 HTML 主页返回用户端显示。 由于 ASP 在服务器端运行,运行结果以 HTML 主页形式返回用户浏览器,因而 ASP 源程序不会泄密,增加了系统的安全保密性。此外,ASP 是面向对象的脚本环境,用 户可自行增加 ActiveX 组件来扩充其功能,拓展应用范围。 2.ASP 页面的结构: ASP 的程序代码简单、通用,文件名由.asp 结尾,ASP 文件通常由四部分构成: (1) 标准的 HTML 标记:所有的 HTML 标记均可使用。 (2) ASP 语法命令:位于<% %> 标签内的 ASP 代码。 (3) 服务器端的 include 语句:可用#include 语句调入其它 ASP 代码,增强了编程 的灵活性。 (4) 脚本语言:ASP 自带 JScript 和 VBScript 两种脚本语言,增加了 ASP 的编程功能, 用户也可安装其它脚本语言,如 Perl、Rexx 等。 3.ASP 的运行环境 目前 ASP 可运行在三种环境下。 (1) WINDOWS NT server 4.0 运行 IIS 3.0(Internet Information Server)以上。 (2) WINDOWS NT workstation 4.0 运行 Peer Web Server 3.0 以上。 (3) WINDOWS 95/98 运行 PWS(Personal Web Server)。 其中以 NT server 上的 IIS 功能最强,提供了对 ASP 的全面支持,是创建高速、稳 定的 ASP 主页的最佳选择。 4.ASP 的内建对象 ASP 提供了六个内建对象,供用户直接调用: (1) Application 对象:负责管理所有会话信息,可用来在指定的应用程序的所有用 户之间共享信息。 (2) Session 对象: 存贮特定用户的会话信息, 只被该用户访问, 当用户在不同 WEB 页面跳转时, Session 中的变量在用户整个会话过程中一直保存。 Session 对象需 cookie 支持。

(3) Request 对象:从用户端取得信息传递给服务器,是 ASP 读取用户输入的主要方法。 (4) Response 对象:服务器将输出内容发送到用户端。 (5) Server 对象:提供对服务器有关方法和属性的访问。 (6) Object Context 对象:IIS 4.0 新增的对象,用来进行事务处理。此项功能需得到 MTS(Microsoft Transcation Server)管理的支持。 5. ASP 的主要内置组件: (1) Ad Rotator 组件:用来按指定计划在同一页上自动轮换显示广告,用于 WWW 上日益重要的广告服务。 (2) Browser Capabilities 组件:确定访问 WEB 站点的用户浏览器的功能数据,包括 类型、性能、版本等。 (3) Database Access 组件: 提供 ADO (ActiveX Data Objects)来访问支持 ODBC 的数 据库。 (4) File Access 组件:提供对服务器端文件的读写功能。 (5) Content Linking 组件:生成 WEB 页内容列表,并将各页顺序连接,用于制作导 航条。 此外,还可安装 Myinfo、Counters、Content Rotator、Page Count 等组件,用户也 可自行编制 Actiive 组件,以提高系统的实用性。 6. Database Access 组件 ADO WWW 上很重要的应用是访问 WEB 数据库,用 ASP 访问 WEB 数据库时,必须使 用 ADO 组件,ADO 是 ASP 内置的 ActiveX 服务器组件(ActiveX Server Component),通过 在 WEB 服务器上设置 ODBC 和 OLEDB 可连接多种数据库:如 SYBASE、ORACLE、 INFORMIX、SQL SERVER、ACCESS、VFP 等,是对目前微软所支持的数据库进行操作的 最有效和最简单直接的方法。 ADO 组件主要提供了以下七个对象和四个集合来访问数据库。 (1) Connection 对象:建立与后台数据库的连接。 (2) Command 对象:执行 SQL 指令,访问数据库。 (3) Parameters 对象和 Parameters 集合:为 Command 对象提供数据和参数。 (4) RecordSet 对象:存放访问数据库后的数据信息,是最经常使用的对象。 (5) Field 对象和 Field 集合: 提供对 RecordSet 中当前记录的各个字段进行访问的功 能。

(6) Property 对象和 Properties 集合:提供有关信息,供 Connection、Command、 RecordSet、Field 对象使用。 (7) Error 对象和 Errors 集合:提供访问数据库时的错误信息。

第二章

系统分析与总体设计

很多网站都提供新闻栏目,例如搜狐、新浪等著名网站的新闻专栏。许多企业和个人网 站也需要定期发布一些关于企业或网站的新闻。 因为网络中新闻发布的频率非常高, 如果使 用静态网页作为新闻页面,则维护工作将非常繁琐,管理员每天需要制作大量的网页,从而 浪费很多时间和精力。 使用新闻发布及管理系统可以使新闻发布和管理变得很轻松, 管理员 只需设置标题、内容和图片等新闻就可以了,系统将自动生成对应的网页。本文将对新闻发 布及管理系统进行系统分析与总体设计。

第一节

系统功能描述

新闻发布及管理系统包括新闻类别管理、新闻发布管理、图片处理、新闻查询、网友评 论和用户管理等模块。具体描述如下: 1.新闻类别管理: (1)新闻类别的录入,包括类别编号和类别名称等信息; (2)新闻类别的修改; (3)新闻类别的删除; (4)新闻类别的查询。

2.新闻发布管理: (1)基本新闻信息的录入,包括新闻标题、新闻内容和所属类别等; (2)基本新闻信息的修改; (3)基本新闻信息的删除; 3.图片处理模块: (1)选择图片文件; (2)上传图片文件; (3)存储图片新闻; (4)修改新闻图片; (5)删除新闻图片; (6)在网页中浏览新闻图片。 4.新闻查询模块: (1)按照新闻类别分页显示新闻; (2)按照日期分页显示新闻。 5.网友留言模块: (1)网友对某条新闻发表评论; (2)管理员可以删除新闻评论。 6.系统用户管理功能: (1)系统用户信息的录入,包括用户名和密码等信息; (2)系统用户信息的修改; (3)系统用户信息的删除。 -

第二节

系统功能模块划分

从功能描述的内容可以看到,本实例可以实现 6 个完整的功能。我们根据这些功能,设 计出系统的功能模块,如图 1 所示。

新闻发布及管理系统

新 闻 类 别 管 理

新 闻 发 布 及 管 理

图 片 处 理 模 块

新 闻 查 询 模 块

网 友 评 论 模 块

系 统 用 户 管 理

图 1 新闻发布及管理系统功能模块示意图 新闻发布及管理系统的功能模块之间的关系如图 2 所示。

后台系统

前台系统

新 闻 类 别 管 理

基本信息发布 提供数据
数据库

新闻图片发布

新 闻 查 询 管 理

发 表 网 友 评 论

图 2 新闻发布及管理系统的功能模块关系图 在本系统中,用户管理模块的功能比较简单。在系统初始化时,有一个默认的“系统管 理员”用户 Admin,由程序设计人员手动地添加到数据库中。Admin 用户可以创建用户、 修改和删除用户;普通用户则只能修改自己的用户名和密码。 用户管理功能模块的关系如图 3 所示。

Admin 用户

修改 Admin 用户的密码

系 统 用 户 信 息 管 理

创建、修改、删除普通用户信息

普通用户 修改自身的

图 3 用户管理功能模块的关系图

第三节

系统流程分析

为了使读者进一步了解本实例系统的设计, 本小节将对系统进行流程分析。 多用户系统 的工作流程都是从用户登录模块开始, 对用户的身份进行认证。 身份认证可以分为以下两个 过程: (1)确认用户是否是有效的系统用户。 (2)确定用户的类型。 第 1 个过程决定用户能否进入系统。第 2 个过程根据用户的类型决定用户的操作权限, 从而决定用户的工作界面。 本系统分为前台系统和后台系统两个部分。 前台系统不需要进行身份认证, 任何人都可 以通过浏览器阅读已经发布的新闻、发表网友评论。 后台系统的流程分析如图 4 所示。 Admin 用户拥有所有的权限, 普通用户只能对自己发 布的新闻进行管理,包括修改新闻内容、删除新闻和删除网友评论。

开始 失败重试

用户登录

Admin

管理所有用户的信息 管理新闻类别,发布信息,所有新闻 信息的管理

管理自己的信息 普通用户 新闻发布,自己发布的新闻的管理

图 4 后台系统的流程分析

第三章

数据库结构设计与实现

这一章将介绍系统的数据库表结构和创建表的脚本。

第一节

创建数据库

首先创建一个数据库 news,用来保存本系统的所有数据。创建数据库的脚本代码如下: CREATE DATABASE news GO 可以在 SQL 查询分析器中执行该语句,创建数据库。

第二节

数据库逻辑结构设计

本系统定义的数据库中包含以下 4 个表: 新闻类别表: Category、 新闻基本信息表: News、 网友评论信息表:Discuss 和用户信息表:users。 下面分别介绍这些表的结构。 1.新闻类别表 Category 新闻类别表 Category 用来保存新闻类别数据,结构如表 1 所示。 表 1 表 Category 的结构 编号 1 2 字段名称 CateId CateName 数据结构 int varchar (50) 说明 新闻类别编号 新闻类别名称

在设计数据库结构时, 很多表都需要设计一个整型字段作为标识列, 这几乎已经成为 惯例,例如表 Category 中的 CateId 字段。所谓标识列,就是可以惟一标识一行记录的列, 在表中不会存在两条标识列相同的记录。如果其他表需要引用表 Category 中的数据,则在 表中添加一个 CateId 字段就可以了。有的程序设计人员习惯于直接使用名称字段作为标识 列,例如表 Category 中的 CateName 字段。这样,如果修改 CateName 字段的值,就需要同 时修改其他所有表的相应字段的值,从而造成不必要的麻烦。在系统中,CateId 字段对于用 户来说是透明的,用户感觉不到它的存在,也无法对其进行修改。 2.基本新闻表 News 基本新闻表 News 用来保存网上新闻的基本信息,结构如表 2 所示。 表 2 表 News 的结构 编号 1 2 3 4 5 6 7 字段名称 Id Title Content PostTime Poster CateId Attpic 数据结构 int varchar(100) text datetime varchar(50) int bit 说明 新闻编号 新闻标题 新闻内容 提交时间 提交人 新闻类别编号 是否有图片标记(0 没有;1 有)

8

Readcount

int

阅读次数

在 SQL Server 2000 中,可以使用 char、varchar 和 text 等 3 种数据类型存储非 Unicode 字符数据。char 和 varchar 只能存储最多 8000 个字符,其中 char 用于存储固定长度的字符 数据,varchar 用于存储可变长度的字符数据。如果需要存储的数据很大,则可以使用 text 数据类型, 例如表 News 中的 Content 字符, 因为新闻内容的数据量通常会超过 8000 个字符。 text 数据类型也是可变长度的,最多可为 2147483647 个字符。 3.网友评论信息表 Discuss 网友评论信息表 Discuss 用来保存网友对新闻的评论信息,结构如表 3 所示。 表 3 表 Discuss 的结构 编号 1 2 3 4 5 字段名称 id UserId Posttime Content Newsld 数据结构 int varchar(20) sinaildatetime varchar(4000) int 说明 评论编号 评论人名称 提交时间 评论内容 新闻编号

在 SQL Server 2000 中, 可以使用 datetime 和 smalldatetime 两种数据类型存储日期时间 数据。datetime 数据类型用于存储从 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和时间数 据,精确到 3.33ms;smalldatetime 数据类型用于存储从 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和时间数据, 精确到分钟。有些程序员习惯于使用 datetime 数据类型存储日期时间 数据,其实在精确度要求不高的情况下,使用 smalldatetime 数据类型是足够了。 4..用户信息表 Users 用户信息表 Users 用来保存用户的基本信息,结构如表 8.4 所示。 编号 1 2 3 4 5 字段名称 UserId UserName UserPwd Ename Email 数据结构 int varchar(50) varcahr(50) varchar(50) varchar(50) 说明 用户 ID 号 。 用户名 密码 用户姓名 电子邮箱

第三节

创建表的脚本文件

本节将介绍创建表的脚本文件,可以在“查询分析器”中执行这些脚本,在数据库 news 中创建表。 1.创建表 Category 创建表 category 的脚本文件为 Category.sql,它的代码如下: USE news GO CREATE TABLE Category ( CateId CateName ) GO 在使用 CREATE TABLE 指令创建表时,应该注意使用 PRIMARY KEY 关键字定义表 的主键。表中每一行的主键都有惟一值,可以使用主键惟一地标识一行数据。 2.创建表 News 创建表 News 的脚本文件为 News.sql,它的代码如下: USE news GO CREATE TABLE News ( Id Title Content PostTime Poster CateId Attpic ReadCount Int IDENTITY PRIMARY KEY, Varchar(100) NOT NULL, Text, Datetime, Varchar(50), Int, Int DEFAULT 0, Int DEFAULT 0 Int IDENTITY PRIMARY KEY, Varchar(50) NOT NULL

) GO 在使用 CREATE TABLE 指令创建表时,应该注意使用 NOT NULL 关键字定义表的未 空字段。 使用 NOT NULL 定义的字段将不允许为空, 这样就可以避免表中出现无效的数据, 影响系统运行。例如,表 News 中的 Title 字段将不能为空,否则在新闻列表中将出现一个 空行。 在使用 CREATE TABLE 指令创建表时, 使用 DEFAULT 关键字可以字义字段的默认值, 例如表 News 中,Attpic 和 ReadCount 字段的默认值为 0。 3.创建表 Discuss 创建表 Discuss 的脚本文件为 Discuss.sql,它的代码如下: USE news GO CREATE TABLE Discuss ( Id UserId Posttime Content NewsId ) GO 在使用 CREATE TABLE 指令创建表时, 通常可以使用 IDENTITY 关键字与 PRIMARY KEY 关键字相结合,创建标识字段。每次增加新记录时,标识字段自动递增。程序员在编 写程序的过程申,无需考虑标识字段的值。 4.创建表 Users 创建表 Users 的脚本文件为 Users.sql,它的代码如下: USE news GO CREATE TABLE Users ( UserId Int Primary Key IDENTITY, Int IDENTITY PRIMARY KEY, Varchar(20), Smalldatetime, Varchar(4000), Int

UserName UserPwd Ename Email ) GO

Varchar(50) NOT NULL, Varchar(50) NOT NULL, Varchar(50), Varchar(50)

INSERT INTO Users (UserName, UserPwd, Ename, Email) VALUES('Admin', '111111', '', '') GO 在创建表 users 的同时,将默认的用户 Admin 插入到表中,默认的密码为“llllll”。 在执行这些脚本之前,请确定数据库 news 已经存在,否则会产生错误。如果要创建的 表已经存在,则需要先将表删除。

第四章
第一节 目录结构

目录结构与通用模块

在运行实例时,需要将 web 目录复制到 IIS/PWS 的根目录下,例如 目录下包含下面两个子目录: images 用于存储上传的新闻图片; pic 用于存储网页中的图片文件; 其他 ASP 和 HTM 文件都保存在 web 目录下。

第二节

通用模块

本实例中包含一些通用模块,这些模块以文件的形式保存,可以在其他文件中使用 #include 语句包含这些模块,使用其中定义的功能。

1.ConnDB.asp ConnDB.asp 的功能是实现到数据库的连接, 因为在很多网页中都有连接数据库的操作, 所以把它保存在文件 ConnDB.asp 中,这样可以避免重复编程。ConnDB.asp 的代码如下: <% dim Conn dim ConnStr set Conn=server.createobject("adodb.connection")ConnStr="driver={SQL Server};server=(local);UID=sa;PWD=yourpassword;Database=news" Conn.Open ConnStr %> 在文件中引用此文件作为头文件就可以访问数据库,代码如下: <!--#include File="ConnDB.asp"--> 2.IsAdmin.asp 因为本实例中有些功能只有 Admin 用户才有权限使用,所以在进入这些网页之前,需 要判断用户是否是 Admin。IsAdmin.asp 的功能是判断当前用户是否是 Admin,如果不是, 则中断执行;如果是,则不执行任何操作,直接进入包含它的网页。 IsAdmin.asp 的代码如下: <% If Session("UserName") <> "Admin" Then Response.Write("不是 Admin 用户,没有此权限") Response.End End If %> 在文件中引用此文件作为头文件,代码如下: <!--#include File="IsAdmin.asp"--> 3.IsAuthor.asp 在修改和删除新闻时,除了 Admin 用户拥有所有权限外,其他用户只能修改自己创建 的新闻。所以在修改和删除新闻时,需要判断当前用户是否是 Admin 或指定新闻的作者。 IsAuthor.asp 可以实现此功能,代码如下: <%

If Session("UserName") <> "Admin" Then NewsId = Request("Id") '根据新闻编号读取新闻信息 set rsNews = Server.CreateObject("ADODB.RecordSet") sql = "SELECT * FROM News WHERE Id=" & Trim(NewsId) set rsNews=Conn.Execute(sql) Set Rs=conn.Execute(sql) If rsNews.EOF Then Response.Write "指定新闻不存在" Response.End Else '判断用户权限,是否可以维护新闻,管理员可以编辑所有新闻,编辑者只能修 改自己的新闻 If rsNews("Poster") <> Session("UserName") Then Response.Write "不是 Admin 或新闻的作者,无权修改!" Response.End End If End If End If %> 如果当前用户是 Admin,则 IsAuthor.asp 不做任何操作;否则,程序将根据参数 Id 读取 新闻信息,并将 Poster 字段的值与当前用户名进行比较。在两种情况下,IsAuthor.asp 将阻 止程序继续执行: (1)指定新闻不存在; (2)当前用户不是指定新闻的作者。 使用 Response.End 可以结束网页的输出。 在文件中引用此文件作为头文件,代码如下: <!--#include File=" IsAuthor.asp"--> 4.template.asp 在添加和修改新闻内容时,需要对字体、字号、颜色和排列位置等属性进行设置。

Template.asp 可以实现这些功能。 Template.asp 的设计界面如图 5 所示。

图 5 Template.asp 的设计界面 在使用 template.asp 时,设置指定的选项,将会在新闻内容中生成相应的 HTML 代码。 例如,选中正文 abc,然后选择“楷体”、“1 号字”,将生成如下代码: <font[space]face=楷体_GB2312><font[space]size=1>abc</font></font> [space]是自定义的符号,因为空格在转换成 HTML 格式时,将被替换为“&nbsp;”, 所以这里使用[space]表示空格。在显示新闻内容时,程序将会自动将[space]转换为空格。 因为 template.asp 的代码较多,这里仅以字体控制的代码为例说明。相关代码如下: 字体&nbsp;<SELECT onChange="var c=this.options[this.selectedIndex].value; if(selection.createRange().text!='')

{selection.createRange().text='<font[space]face='+c+'>'+selection.createRange().text+'</font>'}el se {myform.txtcontent.value = '<font[space]face='+c+'>'+myform.txtcontent.value+'</font>'}" name=font style='FONT-SIZE:

9pt'> <OPTION selected value=宋体>宋体</OPTION> <OPTION value=楷体_GB2312>楷体</OPTION> <OPTION value=新宋体>新宋体</OPTION> <OPTION value=黑体>黑体</OPTION> <OPTION value=隶书>隶书</OPTION> <OPTION value="Andale Mono">Andale Mono</OPTION> <OPTION value=Arial>Arial</OPTION> <OPTION value="Arial Black">Arial Black</OPTION> <OPTION value="Book Antiqua">Book Antiqua</OPTION> <OPTION value="Century Gothic">Century Gothic</OPTION> <OPTION value="Comic Sans MS">Comic Sans MS</OPTION> <OPTION value="Courier New">Courier New</OPTION> <OPTION value=Georgia>Georgia</OPTION> <OPTION value=Impact>Impact</OPTION> <OPTION value=Tahoma>Tahoma</OPTION> <OPTION value="Times New Roman">Times New Roman</OPTION> <OPTION value="Trebuchet MS">Trebuchet MS</OPTION> <OPTION value="Script MT Bold">Script MT Bold</OPTION> <OPTION value=Stencil>Stencil</OPTION> <OPTION value=Verdana>Verdana</OPTION> <OPTION value="Lucida Console">Lucida Console</OPTION></SELECT> 在下拉菜单中,定义了系统支持的字体名称,下拉菜单的值与字体名称相同。 当下拉菜单的选择发生变化时,将触发 onChange 事件,程序中直接定义了对应的 JavaScript 代码。This 表示字体下拉菜单,this.selectedlndex 表示当前选择的菜单项目索引, This.options[this.selectedlndex].value 则表示选择下拉菜单的值,程序将其保存变量 C 中。 Selection.createRangeO.text 表示当前选择字符的内容,如果它不为空,则将其替换为如 下代码: selection.createRange().text='<font[space]face='+c+'>'+selection.createRange().text+'</font>' 也就是在它的两侧添加字体标识<font>和</font>。

如果没有选择字符,则在输入新闻内容的文本域中直接加入字体标识,用户可以在 <font>和</font>之问添加相应的文字,代码如下: myform.txtcontent.value='<font[space]face='+c+'>'+myform.txtcontent.value+'</font> 在添加和修改新闻内容的网页中,必须将表单定义为 myform,输入新闻内容的滚动文 本框定义为 txtcontent,否则此功能将无法实现。

第五章

系统主界面与登录程序设计

第一节 设计主界面

本主界面为 default.asp,它的功能是显示新闻类别和每个类别中的 10 条新闻,并提供 进入管理界面(index.asp)的链接。 录入新闻类别和新闻内容后,default.asp 的界面如图 5-6 所示。

图 5-6 default.asp 的界面 下面介绍 default.asp 的主要代码。 1.显示新闻类别链接 default.asp 将新闻按照分类显示,每个新闻类别只显示最新的 10 条新闻。如果新闻类别 较多,则网页会被拉长,给用户阅读带来不便。为了解决这个问题,本实例使用书签来定义 新 闻类别的位置,书签格式为#a<类别编号>。例如,类别编号为 1 的新闻类别的书签名称为 #al。下面的代码将在网页中生成所有新闻类别的链接,每个链接都指相应新闻类别的书签。 这样,用户就可以通过单击链接直达新闻类别了。

<% '=====显示所有新闻类别供点击,点击不同类别显示该类别的新闻===== '按顺序读取所有新闻类别,保存在记录集 rsCate 中 sql = "SELECT * FROM Category ORDER BY CateId" Set rsCate = conn.Execute(sql) '显示所有新闻类别链接 Do While Not rsCate.EOF stitle = rsCate("CateName") cid = rsCate("CateId") '每个新闻类别标题被定义为一个书签,名为 #a 类别编号 %> <a href="#a<%=cid%>"><font style='TEXT-DECORATION:

none;color:black'><%=stitle%></font></a> | <% rsCate.MoveNext Loop %> 如果网页中显示的内容较多,通常需要通过定义书签的方法使用户快速到达指定的位 置。书签是网页中被标记的位置或被标记的选中文本。在 FrontPage 中选择“插入”/“书签” 菜单项,可以在指定位置插入书签。在本例中,因为书签位置是动态变化的,所以需要使用 代码定义,方法如下: <a name=书签名></a> 2. “新闻管理”链接 系统管理员 Admin 或其他用户可以通过“新闻管理”链接进入新闻管理页面 index.asp <a href="index.asp"><font color=red style='TEXT-DECORATION: none'>新闻管理</font></a> 3.显示各新闻类别中的最新新闻 default.asp 的主要内容是显示新闻类别中的最新 10 条新闻, 并将 3 天内的新闻使用 new 图片标记。当然,如果新闻的内容经常更新,则可以将 3 天改为 1 天。 这部分代码如下: <%

'=====显示所有新闻类别供点击,点击不同类别显示该类别的新闻===== '按顺序读取所有新闻类别,保存在记录集 rsCate 中 sql = "SELECT * FROM Category ORDER BY CateId" Set rsCate = conn.Execute(sql) '显示所有新闻类别链接 Do While Not rsCate.EOF stitle = rsCate("CateName") cid = rsCate("CateId") '每个新闻类别标题被定义为一个书签,名为 #a 类别编号 %> <a href="#a<%=cid%>"><font style='TEXT-DECORATION: none;color:black'><%=stitle%></font></a> | <% rsCate.MoveNext Loop %> <a href='search.asp'><font color=red>新闻查询</font></a> |&nbsp;<a href="index.asp"><font color=red style='TEXT-DECORATION: none'>新闻管理 </font></a> </div> <table align="center" width="100%" cellspacing="0" cellpadding="0" border="0"> <tr> <td width="*" valign="TOP"> <% '将指针移至开始位置,分别显示每个分类中的新闻 If rsCate.BOF = False Then rsCate.MoveFirst End If '依次显示每个新闻类别中最新的 10 条新闻 DO WHILE Not rsCate.EOF

stitle = rsCate("CateName") cid = rsCate("CateId") '变量 cnt 用来记录 cnt = 0 '生成表格 Response.Write "<table width='100%' cellspacing=1 cellpadding=2><tr>" '显示新闻类别,并设置书签 Response.Write "<td bgcolor=#ceceff><a name=""a"&cid&"""></a>&nbsp;==&nbsp;" '显示新闻类别标题 Response.Write stitle + "&nbsp;==</td></tr>" '生成另一个表格,用于显示新闻标题 Response.Write"<table width='100%' border=0 cellspacing=0 cellpadding=0>" '按提交时间的降序显示新闻标题 sql = "SELECT * FROM News WHERE CateId=" & cid & " ORDER BY Posttime DESC" rs.Open sql, conn, 1, 1 DO WHILE Not rs.EOF '计数 cnt = cnt + 1 '只显示 10 条新闻 If cnt < 11 Then Dim ndate ndate = DateAdd("d",-3,date()) '显示新闻标题及链接,查看新闻的脚本文件为 NewsView.asp Response.Write "<tr><td width='50%'><a onClick='return newwin(this.href);' href='NewsView.asp?id=" + cstr(rs("id")) + "'>" + rs("Title") +"" '如果新闻中有图片,则在标题中显示(附图) If rs("Attpic") Then Response.Write "(附图)" End If

Response.Write "</a>" '3 天内新闻标记 new 图片 If datediff("d", rs("Posttime"), ndate+time()) <= 0 Then

Response.Write "<img SRC='pic/new.gif' ALT='最新的新闻!' border=0></td>" End If '显示新闻提交的时间 Response.Write "<td width='20%'>(" + CStr(rs("Posttime")) + ")</td></tr>" End If rs.MoveNext Loop Response.Write"</table>" '设置返回顶部链接,跳转到书签#top Response.Write "<p align=right><a href=""#top"">返回顶部</a>&nbsp;&nbsp;&nbsp;" '生成“更多新闻”链接,查看指定类别所有新闻的脚本为 Category.asp Response.Write "<a target='_self' href='Category.asp?flag=" + CStr(cid) + "'>更多新 闻...</a></p>" Response.Write "</td></tr></table></td></table>" rs.Close rsCate.MoveNext loop %> 因为在第 l 步中已经将各新闻类别的标题读取到记录集 rsCate 中, 所以只需要使用执 行 rsCate.MoveFirst 语句将指针复位就可以了。 使用 DO WHIIlE 循环语句依次处理每个新闻 类别,读取此类别中的所有新闻信息到记录集 rs 中,并在表格中显示新闻标题。请参照注 释理解。

第二节

登录程序设计

在对系统进行管理之前,需要通过系统的身份认证。本站中使用 chkpwd.asp 进行身份 验证。对于需要登陆才能察看的网页可以在网页的最前端加上如下代码: <!--#include file=”chkpwd.asp”--> 这样为登陆的用户将看到如下界面:

第三节 设计管理界面

管理界面的功能是对新闻类别和新闻提供管理界面, 只有有权限的用户才能进入管理界 面。本节将介绍管理界面 index.asp 的实现方法。 录入新闻类别和新闻内容后,index.asp 的界面如图 5-7 所示。

下面介绍 index.asp 的主要代码。 (1)包含文件 在 index.asp 的开始部分添加下面的代码,这样在打开网页时,程序会自动连接到数据 库,并进行身份验证。 <!--#include file="ConnDB.asp"--> <!--#include file="ChkPwd.asp"--> (2)显示新闻类别链接 index.asp 将新闻按照分类显示,每个新闻类别只显示最新的 20 条新闻。显示新闻类别 的代码如下: <% Dim rs,rsCate Set rs = Server.CreateObject("ADODB.RecordSet") set rsCate = Server.CreateObject("ADODB.RecordSet") '定义变量 Dim iflag,sql_where '参数 flag 表示指定的新闻类别 iflag = Request.QueryString("flag") '设置 SQL 语句,读取所有的新闻类别到 rs.Cate

sql = "SELECT * FROM Category ORDER BY CateId" Set rsCate = conn.Execute(sql) '显示新闻类别链接,注意根据类别编号设置参数 flag DO WHILE Not rsCate.EOF stitle = rsCate("CateName") cid = rsCate("CateId") %>| <a href='index.asp?flag=<%=cid%>'><font style='TEXT-DECORATION: none;color:black'><%=stitle%></font></a> <% rsCate.MoveNext Loop %> 在调用 index.asp 时,参数 flag 表示新闻类别。如果 flag=0,则显示全部新闻,否则显 示指定类别的新闻。 (3)显示管理链接 在 index.asp 中,将根据用户类型显示管理链接,包括“更改密码” 、 “类别管理” 、 “用 户管理”和“退出登录” ,只有 Admin 用户才能看到“类别管理”和“用户管理”链接。显 示管理链接的代码如下: <% '如果为管理员则显示类别管理和用户管理 If Session("UserName") = "Admin" Then Response.Write "&nbsp;&nbsp;<a href='Cate_Admin.asp'><font color=red>类别管理 </font></a>" Response.Write "&nbsp;&nbsp;&nbsp;<a href='UserList.asp'><font color=red>用户管 理</font></a>" sql_where = "" Else '如果不是系统管理员,则只能管理自己提交的新闻,所以在这里设置 WHERE 子 句的条件 sql_where = " Poster='" & Session("UserName") & "'"

End If %> Session(”UserName”)中保存着当前登录用户的用户名。当 Session(”UserName”)=” Admin”时,才能显示“类别管理”和“用户管理”超级链接。 从程序中可以看到,各项管理功能对应的页面如下: (1)更改密码 PwdChange.asp; (2)类别管理 Cate—Admin.asp; (3)用户管理 UserList.asp; (4)退出登录 logout.asp。 变量 sql_where 用来记录查询条件。如果当前用户是 Admin,则 sql_where=“” ,即显 示所有新闻;否则设置查询条件为“Poster=“”&Session(“UserName”)&“” ” ,即只能管 理自己创建的新闻。 (4)分页显示新闻信息 下面将根据指定的新闻类别和页码显示新闻标题列表,代码如下: <% '根据参数 iflag 和 sql_where 变量设置 SQL 语句,读取新闻数据 If iflag = "" Then If sql_where = "" Then sql = "SELECT * FROM News ORDER BY Posttime DESC" Else sql = "SELECT * FROM News WHERE " & sql_where & " ORDER BY Posttime DESC" End If Else If sql_where = "" then sql = "SELECT * FROM News WHERE CateId=" & iflag & " ORDER BY Posttime DESC" Else sql = "SELECT * FROM News WHERE CateId=" & iflag & " And " & sql_where & " ORDER BY Posttime DESC"

End If End If rs.Open sql,conn,1,1 '如果记录集 rs 为空,则显示“目录还没有记录” If rs.EOF Then Response.Write "<tr><td colspan=4 align=center>目前还没有记录。 </td></tr></table>" Else '设置分页显示,每页显示 20 条新闻记录 rs.PageSize = 20 '读取参数 page,表示当前的页码,使用 CLng 将其转换为长整型 Page = CLng(Request("Page")) '处理不合法的页码 If Page < 1 Then Page = 1 If Page > rs.PageCount Then Page = rs.PageCount '设置当前页码为 Page rs.AbsolutePage = Page '循环显示当前页的记录 For i = 1 to rs.PageSize '如果到达记录集结尾,则跳出循环 if rs.EOF then Exit For %> <tr><td><a href="newsView.asp?id=<%=rs("id")%>" onClick="return newwin(this.href)"><%=rs("title")%></a> <%If rs("attpic")=true then Response.write "(附图)" End If%></td> <td align="center"><%=rs("posttime")%></td> <td align="center"><a href="newsedit.asp?id=<%=rs("id")%>" onClick="return newwin(this.href)">修 改</a></td> <td align="center"><input type="checkbox" name="News" id="<%=rs("id")%>" style="font-size: 9pt" value="ON"></td>

</tr> <% rs.MoveNext() Next %> </table> <% '显示分页页码 If rs.pagecount>1 then Response.Write "<table border='0'><tr><td><b>分页:</b></td>" For i = 1 To rs.PageCount Response.Write "<td><a href='index.asp?flag=" & iflag & "&page=" & i & "'>" Response.Write "[<b>" & i & "</b>]</a></td>" Next Response.Write "</tr></table>" End If End If %> 这部分代码的关键部分是根据新闻类别和用户类型生成 sELECT 语句, 查询指定的新闻 记录。在调试程序时,可以使用下面的语句显示 sELECT 语句的内容。 Response.write sql

第六章

新闻类别管理模块设计

新闻类别管理模块可以实现以下功能: (1)添加新的新闻类别记录; (2)修改新闻类别记录;

(3)删除新闻类别记录。 只有 Admin 用户才有权限进入新闻类别管理模块,在 index.asp 中,单击“类别管理” 超级链接,可以打开类别管理页面 cate_Admin.asp。

第一节

设计新闻类别管理界面

打开新闻类别管理界面,如图 6-9 所示。

图 6-9 新闻类别管理界面 下面将介绍 Cate_Admin.asp 中与界面显示相关的部分代码。 1.显示新闻类别信息 为了便于用户管理新闻类别,Cate_Admin.asp 以表格的形式显示新闻类别名称,并在后 面显示修改链接和删除复选框,代码如下: <p align='center'><font style="FONT-SIZE: 12pt"><b>新 闻 类 别 管 理</b></font></p> <center> <table border="0" cellspacing="0" width="90%"> <tr> <td align=right>

<a href="index.asp"><font color="red">新闻管理</font></a> <a href="User_admin.asp"><font color="red">用户管理</font></a> </td> </tr> </table> <table border="1" cellspacing="0" width="90%" bgcolor="#F0F8FF" bordercolorlight="#4DA6FF" bordercolordark="#ECF5FF"> <tr> <td width="60%" align="center" bgcolor="#FEEC85"><strong>类 别</strong></td> <td width="20%" align="center" bgcolor="#FEEC85"><strong>修 改</strong></td> <td width="20%" align="center" bgcolor="#FEEC85"><strong>选 择</strong></td> </tr> <% Set rs = Server.CreateObject("ADODB.RecordSet") '读取所有的新闻类别数据到记录集 rs 中 sql = "SELECT * FROM Category ORDER BY CateId" rs.Open sql, conn, 1, 1 If rs.EOF Then '如果记录集为空,则显示“目前还没有记录” Response.Write "<tr><td colspan=3 align=center><font style='COLOR:Red'>目前还没 有记录。</font></td></tr></table>" Else '在表格中显示新闻类别名称 DO WHILE Not rs.EOF %> <tr> <td><%=rs("CateName")%></td> <td align="center"><a href="Cate_Admin.asp?Oper=update&cid=<%=rs("CateId")%>&name=<%=rs("C ateName")%>">修 改</a></td>

<td align="center"><input type="checkbox" name="Cate" id="<%=rs("CateId")%>"></td> </tr> <% rs.MoveNext() LOOP %> </table> 可以看到,修改新闻类别的页面也是 Cate_Admin.asp。参数 Oper 的值为 update,表 示当前操作为修改新闻类别;参数 cid 表示要修改的新闻类别编号;参数 name 表示要修改 的新闻类别名称。新闻类别后面的复选框名为 Cate,它的 id 值与对应新闻类别的编号相同。 通常删除功能也可以通过超级超级链接来实现,就像本例中的‘ ‘修改’ ’ 超级链接。但是一次只能删除一条记录。本实例介绍一种更方便的方法,即通 过复选框选择要删除的记录,然后单击 cc 删除, ,按钮,这样可以同时删除多 条记录。 2.显示功能按钮 如果存在新闻类别记录,则在表格下面显示“全选” 、 “清空”和“删除” 按钮,这些按钮是为删除新闻类别记录服务的,代码如下: '如果记录数大于 0,则显示全选、清空和删除等按钮 If rs.RecordCount>0 then %> <input type="button" value="全 选" onclick="sltAll()"> &nbsp;&nbsp;<input type="button" value="清 空" onclick="sltNull()"> &nbsp;&nbsp;<input type="submit" value="删 除" name="tijiao" onclick="SelectChk()"> <%End If%> rs.RecordCount 返回当前记录集的记录数量。 3.显示添加或修改新闻类别的表单 在功能按钮的下面,将显示添加或修改新闻类别的表单。当 flag=update 时,将显示修改新闻类别的表单;否则显示添加新闻类别的表单,代码如下:

<% '如果当前状态为修改,则显示修改的表单,否则显示添加的表单 If Soperate = "update" Then sTitle = Request.QueryString("name") %> <form name="UFrom" method="post" action="Cate_Admin.asp?cid=<%=Operid%>&Oper=edit"> <div align="center"> <input type="hidden" name="sOrgTitle" value="<%=sTitle%>"> <font color="#FFFFFF"><b><font color="#000000">类别名称</font></b></font> <input type="text" name="txttitle" size="20" value="<%=sTitle%>"> <input type="submit" name="Submit" value=" 修 改 "> </div> </form> <%Else%> <form name="AForm" method="post" action="Cate_Admin.asp?Oper=add"> <div align="center"> <font color="#FFFFFF"><b><font color="#000000">类别名称</font></b></font> <input type="text" name="txttitle" size="20"> <input type="submit" name="Submit" value=" 添 加 "> </div> </form> <%End If%> 添加和修改新闻类别的脚本都是 Cate_Admin.asp, 只是参数不同。 当参数 0per 等于 edit 时,程序将处理修改的新闻类别数据;当参数 Oper 等于 add 时,程序将处理添加的新闻类 别 数据。

第二节

添加新闻类别

在执行 Cate_Admin.asp 时,如果参数 Oper 不等于 update,页面的下方将显示添加数 据的表单 Aform。在文本域 txttitle 中输入新闻类别的名称,然后单击“添加’ ,按钮,将调 用 Cate_Admin.asp,参数 Oper 等于 add,表示插入新记录。 下面将介绍相关的代码。 在执行 Cate_Admin.asp 时,可以在 url 中包含参数,程序将根据参数 Oper 的值决定进 行的操作,与添加数据相关的代码如下: <% '处理添加、修改和删除操作 dim Soperate Soperate = Request.QueryString("oper") Operid = Request.QueryString("cid") '删除 If Soperate="delete" Then sql = "SELECT * FROM News WHERE CateId In (" & CStr(Operid) & ")" Set rs = Conn.Execute(sql) If rs.EOF Then sqldelt = "DELETE FROM Category WHERE CateId In(" & CStr(Operid) & ")" Conn.Execute(sqldelt) Response.Write "新闻类别已经成功删除!" Else Response.Write "新闻类别中包含新闻,不能删除" End If '添加 ElseIf Soperate = "add" then CateName = Request("txttitle") '判断是否已经存在此类别名称 sql = "SELECT * FROM Category WHERE CateName='" & CateName & "'" Set rs = Conn.Execute(sql)

'如果没有此类别名称,则创建新记录 If Rs.EOF Then sql = "INSERT INTO Category(CateName) VALUES('" & CateName & "')" Conn.Execute(sql) Response.Write"新闻类别已经成功添加!" Else Response.Write "已经存在此类别名称!" End If Set rs = Nothing ElseIf Soperate = "edit" Then CateName = Request("txttitle") '如果新类别名称与旧名称不同,则判断是否存在此类别名称 sql = "SELECT * FROM Category WHERE CateName = '" & CateName & "' And CateId=" & Operid Set rs = conn.Execute(sql) If Rs.EOF Then '如果原类别编号和新类别名称不存在,则表示类别名称发生变化 Set rs = Nothing '此时判断是否存在此类别名称 sql = "SELECT * FROM Category WHERE CateName='" & CateName & "'" Set rs = Conn.Execute(sql) If Rs.EOF Then '新类别不存在 conn.Execute("UPDATE Category SET CateName='" & CateName & "' WHERE CateId=" & Operid) Response.Write "新闻类别已经成功修改!" Else Response.Write "已经存在此类别名称" End if End If End If %>

注意,在插入新闻类别之前,应该判断此新闻类别是否已经存在。这样可以避免出现重 复的新闻类别。

第三节

修改新闻类别

在 Cate_Admin.asp 中,单击新闻类别后面的“修改’ ,超级链接,将再次执行 Cate_Admin.asp, 参数 Oper 等于 update。 此时, 页面的下方将显示修改数据的表单 Uform。 在文本域 txttitle 中输入新闻类别的名称,然后单击“修改”按钮,将调用 Cate_Admin.asp,参数 Oper 等于 edit,表示修改记录。下面将介绍相关的代码。在执行 Cate_Admin.asp 时,可以在 url 中包 含参数,程序将根据参数 Oper 的值决定进行的操作。 注意,在修改新闻类别之前,应该判断新的新闻类别是否已经存在。这样可以避免出现 重复的新闻类别。

第四节

删除新闻类别

在删除新闻类别之前,需要选中相应的复选框。下面介绍几个与选择复选框相关的 javaScript 函数。 1.选择全部复选框 在 Care_Admin.asp 中,定义“全选”按钮的代码如下: <input type="button" value="全 选" onclick="sltAll()"> 当单击“全选”按钮时,将执行 sltAll()函数,代码如下: function sltAll() { var nn = self.document.all.item("Cate"); for(j=0;j<nn.length;j++) { self.document.all.item("Cate",j).checked = true; } } self 对象指当前页面, self.document.a11.item("Cate")返回当前页面中 Cate 复选框的数量。

程序通过 for 循环语句将所有的 Cate 复选框值设置为 true。 2.全部清除选择 在 Cate_Admin.asp 中,定义“清空”按钮的代码如下: <input type="button" value="清 空" onclick="sltNull()"> 当单击“清空”按钮时,将执行 sltNull()函数,代码如下: function sltNull() { var nn = self.document.all.item("Cate"); for(j=0;j<nn.length;j++) { self.document.all.item("Cate",j).checked = false; } } 3.生成并提交删除编号列表 在 Cate_Admin.asp 中,定义“删除”按钮的代码如下: <input type="submit" value="删 除" name="tijiao" onclick="SelectChk()"> 当单击“删除”按钮时,将执行 SelectChk()函数,代码如下: function SelectChk() { var s = false; //用来记录是否存在被选中的复选框 var Cateid, n=0; var strid, strurl; var nn = self.document.all.item("Cate"); //返回复选框 Cate 的数量 for (j=0; j<nn.length; j++) { if (self.document.all.item("Cate",j).checked) { n = n + 1; s = true; Cateid = self.document.all.item("Cate",j).id+""; //生成要删除新闻类别编号的列表 if(n==1) { //转换为字符串

strid = Cateid; } else { strid = strid + "," + Cateid; } } } strurl = "Cate_Admin.asp?Oper=delete&cid=" + strid; if(!s) { alert("请选择要删除的新闻类别!"); return false; } if (confirm("你确定要删除这些新闻类别吗?")) { form1.action = strurl; form1.submit(); } } 程序对每个复选框进行判断,如果复选框被选中,则将复选框的 id 值转换为字符串, 并追加到变量 strid 中。因为复选框的 id 值与对应的新闻类别编号相同,所以最后 strid 中保 存的是以逗号为分隔符的待删除的新闻类别编号。以 strid 的值为参数执行 Cate_Admin.asp, 参数 Oper 等于 delete,就可以删除选中记录了。 在删除新闻类别之前, 应该判断此新闻类别中是否包含新闻, 如果有新闻, 则不能删除, 否则会产生没有新闻类别的垃圾新闻。

第七章

新闻发布管理模块设计

系统用户都可以发布新闻,新闻发布管理模块包含以下功能: (1)发布新新闻; (2)修改新闻; (3)删除新闻。

第一节

添加新闻

在 index.asp 中, “添加新闻”按钮的定义代码如下: <input type="button" value="添加新闻" onclick="newwin('NewsAdd.asp')" name=add> 当单击“添加新闻”按钮时,将触发 onclick 事件,并调 newwin ('NewsAdd.asp')函数,即在弹出的新窗口中执行 News.Add.asp。 NewsAdd.asp 的运行界面如图 7-10 所示。

图 7-10 NewsAdd.asp 的运行界面 将新闻类别添加到下拉菜单中,代码如下: <% Set rs = Server.CreateObject("ADODB.RecordSet") '将新闻类别装入下拉菜单中 sql = "SELECT * FROM Category ORDER BY CateId" Set rsCate = Conn.Execute(sql) DO WHILE Not rsCate.EOF stitle = rsCate("CateName") cid = rsCate("CateId") %> <option value="<%=cid%>"><%=stitle%></option>

<% rsCate.movenext LOOP %> 下拉菜单名为 Cate,值为新闻类别编号,显示的内容是新闻类别名称。编辑新闻内容 表单的定义代码如下: <form action="newsSave.asp" method="POST" name="myform" align="center" onsubmit="return ValidationPassed"> 可以看到,表单名为 myfom,表单提交后,将由 newsSave.asp 处理表单数据。在提交 表单数据之前,程序将对 ValidationPassed 变量进行判断,只有当 ValidationPassed=True 时, 才执行提交操作。变量 ValidationPassed 的值将在对数据有效性进行验证时被赋值。 在.NewsAdd.asp 中,定义“确定”按钮的代码如下: <input type="submit" value=" 确 定 " name="B1" onclick="return form_onsubmit(this.form)"> 在单击“确定”按钮时,将执行 form_onsubmit(this.form),进行数据有效性验证,代码 如下: function form_onsubmit(obj) { ValidationPassed = true; if(obj.Cate.selectedIndex <0) { alert("请选择新闻类别") ValidationPassed = false; return ValidationPassed; } if(obj.title.value == "") { alert("请填写新闻标题"); ValidationPassed = false; return ValidationPassed; } if(obj.txtcontent.value == "") {

alert("请填写新闻内容!"); ValidationPassed = false; return ValidationPassed; } } 这是一段 JavaScript 代码,参数 obj 接受 this.form 的值,表示表单 myfom。程序将分别 对新闻类别、新闻标题和新闻内容进行判断,这些信息是必须填写的。如果没有填写前面提 到的信息,将弹出相关的对话框,ValidationPassed=false,这样表单数据将无法提交。 在 NewsAdd.asp 页面的相关位置使用#include 命令包括 template.asp, 将可以显示控制模 板。 下面介绍 newSave.asp 的部分代码。在 newSave.asp 中,有一个函数 ChangeStr(),它的 功能是替换新闻正文中的功能字符串,目的是使其能够成为 HTML 网页的一部分,在浏览 网页时被正常显示。被替换的功能字符串包括以下内容: [upload] 上传新闻 图片标记, 需要将其替换为

“<div[space]align=center><img[space]src=images/” ,其中[space]是空格标记,需要在显示新 闻正文时转换: [/upload] 与[upload]匹配使用,标记上传新闻图片的结束。需要将其替换为 “[space]border=0[space]width=300></img></div>” ;空格(” ”) 空格将被替换为“&nbsp; ” ; chr(13) 回车符将被替换为<BR>。 函数 ChangeStr()的代码如下: Function ChangeChr(str) ChangeChr = Replace( str, "[upload]", "<div[space]align=center><img[space]src=images/") ChangeChr=Replace( ChangeChr, "[/upload]", "[space]border=0[space]width=300></img></div>") ChangeChr = Replace( ChangeChr, " ", "&nbsp;") ChangeChr = Replace( ChangeChr, chr(13), "<br>") End Function 新闻正文需要保存在数据库中, 当从数据库中读取新闻正文的内容在网页中显示时, 空 格将被自动过滤掉,这样<imgsrc=images/>将无法被正确显示。为了避免这种情况发生,这

里将空格表示为[space],并存入数据库,在读取数据时再将其转换为空格。 下面程序将接收从 NewsAdd.asp 传递来的数据,并将它们转换为能够保存到数据库中 的格式,代码如下: Dim title '新闻标题

Dim content '新闻内容 Dim category '新闻类别 Dim sql 'sql 语句字符串 Dim rs '记录集变量

title = Request("title") title = Replace(title,"'","?") attpic = Request("attpic")

rqtContent = ChangeChr(request("txtcontent")) rqtContent = Replace(rqtContent,"'","?")

'替换函数

因为在 sql 语句中,单引号(')是特殊字符,所以需要将新闻标题和正文中 的单引号替换为全角单引号(‘),并使用 ChangeChr()函数对新闻正文进行转换。 接下来程序将保存新闻数据,代码如下: Set rs = Server.CreateObject("ADODB.RecordSet") '定义 sql 语句,为插入新闻记录定义记录集 sql="SELECT * FROM News" rs.Open sql, Conn, 1, 3 '使用 AddNew 和 Update 插入新记录 rs.AddNew rs("CateId") = CInt(Request("Cate")) rs("Title") = title rs("Content") = rqtContent rs("Posttime") = now() rs("Poster") = Session("UserName") rs("ReadCount") = 0

If attpic <> "" Then rs("attpic") = attpic End If rs.Update '释放资源,显示提示信息 set rs = nothing Response.Write "<h2>添加成功!</h2>" 本节前面介绍插入新数据时,都是采用定义 INSERT 语句的方法。这里使 用一种新方法,在记录集中使用 rs.AddNew 插入新记录,然后依次对 rs 中各字段赋值, 最后使用 rs.Update 方法保存记录。

第二节

修改新闻

在 index.asp 中,每条新闻记录的后面都有一个修改超级链接。单击此链接,将打开 NewsEdit.asp,对指定新闻进行编辑。参数 id 表示新闻编号。 本节将介绍如何使用 NewsEdit.asp 修改新闻内容。在 NewsEdit.asp 的开始部分,将使 用下面的代码包含相关文件,从而连接到数据库,并判断用户的编辑权限。 <!--#include file="ConnDB.asp"--> <!--#include file="isAuthor.asp"--> 在 Newsedit.asp 中程序将首先根据参数 ID 的值读取新闻数据,代码如下: Set rsNews = Server.CreateObject("ADODB.RecordSet") Set rsCate = Server.CreateObject("ADODB.RecordSet") '读取指定新闻数据 Set rsNews = Conn.Execute("SELECT * FROM News WHERE Request.QueryString("id")) 因为新闻正文数据在存储前进行过替换处理,所以这里需要将数据还原,代码如下: If Not rsNews.EOF Then '对新闻内容进行替换 txtcontent = rsNews("content") txtcontent = replace(txtcontent, "<br>", chr(13)) id = " &

txtcontent = replace(txtcontent, "&nbsp;", " ") rqtContent = replace(txtcontent, "''", "'") 替换数据的目的是使它能够在表单的滚动文本域 txtcontent 中正确显示。代码中省略的 部分包括生成新闻类别下拉菜单,以及根据新闻数据对表单中的各组件赋值。 在 NewsEdit.asp 中,定义了一个隐藏域,代码如下: <input type="hidden" name="id" value="<%=rsNews("id")%>"> 它的作用是记录当前编辑新闻的编号。 编辑新闻信息表单的定义代码如下: <form action="newsUpdate.asp" method="POST" name="myform" align="center" onsubmit="return ValidationPassed"> 与 userAdd.asp 相似,在提交新闻信息时,需要首先执行 form_onsubmit 函数,对用户 输入数据的有效性进行验证。 数据提交后,将由。newsupdate.asp 进行处理,它的主要代码如下: <% '对新闻正文进行替换的函数 Function ChangeChr(str) ChangeChr = Replace( str, "[upload]", "<div[space]align=center><img[space]src=images/") ChangeChr=Replace( ChangeChr, "[/upload]", "[space]border=0[space]width=300></img></div>") ChangeChr = Replace( ChangeChr, " ", "&nbsp;") ChangeChr = Replace( ChangeChr, chr(13), "<br>") End Function rqtContent = ChangeChr(request("txtcontent")) rqtContent = Replace(rqtContent,"'","?") '替换新闻标题中的半角单引号 Dim title title = Request.Form("title") title = replace(title,"'","?") '设置附图标记 '替换函数

If Request.Form("attpic")<>"" Then attpic = 1 Else attpic = 0 End If '设置 UPDATE 语句,更新新闻信息 sql = "UPDATE News SET Posttime='" & now() &"', Attpic=" & attpic & ", Title = '" & title _ & "', CateID = " & CInt(Request("Cate")) & "," & "Content='" & rqtContent & "' WHERE Id=" & CInt(Request("Id")) conn.Execute(sql) Response.Write "<h2>修改成功!</h2>" %> 程序首先定义了替换函数 ChangeChr(), 然后接收从 NewsEdit.asp 中传递来的新闻数据, 最后定义了 update 语句,根据接收到的数据更新新闻信息。 NewsEdit.asp 的显示界面与 NewsAdd.asp 相似,处理过程也有相同之处,请读者参照理 解。

第三节

删除新闻

在删除新闻之前,需要选中相应的复选框。这与删除新闻类别时的操作相似,所以在 index.asp 中,也定义了操作复选框的函数,包括选择全部复选框的 sltAll()清除全部选择的 sltNull()和生成并提交删除编号列表的 SelectChk()等。 处理删除新闻操作的脚本为 NewsDelt.asp, 参数 id 表示要删除的新闻编号。 NewsDelt.asp 的主要代码如下:

<% Dim ids ids = Request.QueryString("id") sql = "DELETE FROM News WHERE Id IN (" & ids & ")"

conn.Execute(sql) %> <script language="JavaScript"> alert("成功删除!"); location.href = "index.asp"; </script> 在 DELETE 语句中使用 WHERE…in…字句的功能是删除新闻编号列表 IDS 中出现的所 有的新闻。

第四节

新闻查询管理

如果系统中新闻数量比较多, 那么只按照分类察看新闻显然是不够的。 为了方便网友使 用,本站中设计了新闻管理功能。 新闻查询管理页面的脚本是 search.asp,运行界面如图所示

可以看到,新闻查询可以分为下面几种情况: (1)按发布日期查询。 (2)查询新闻标题和新闻内容中包括的文字。 在 search.asp 中,用于编辑查询条件的表单为 Form1,它的定义代码如下: <form name="form1" method="POST" action="searchResult.asp"> 当表单数据提交时,将执行 searchResult.asp。为了验证用户录入数据的有效性,在

search.asp 中定义了一些函数,下面介绍这些函内容。 1.IsEmpty()函数 IsEmpty()函数的功能是判断字符串是否为空,代码如下: function isEmpty (str) { if ((str==null)||(str.length==0)) return true; else return(false); } 参数 str 表示要判断的字符串,如果它为空或长度为 0 则返回 true,否则返回 false。 2.IsDigital()函数 IsDigital()函数的功能是判断字符串是否是数字类型,代码如下: function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false return true } 参数 s 表示要判断的字符串。变量 patrn 是一个正则表达式,正则表达式是由普通字符以及 特殊字符组成的文字模式。 该模式描述在查找文字主体时待匹配的一个或多个字符串。 正则 表达式作为一个模板, 将某个字符模式与所搜索的字符串进行匹配。 正则表达式中的 Execute 方法对指定的字符串执行正则表达式搜索。/^表示正则表达式的开始,$/表示正则表达式的 结束,[0.9]表示以 0~9 的数字为开始和结束,{1,20}表示长度为 1~20。 3.IsInt()函数 IsInt()函数的功能是判断指定的字符串是否是整型数据,代码如下: function isInt (theStr) { var flag = true;

if (isEmpty(theStr)) { flag=false; } else { for (var i=0; i<theStr.length; i++) { if (isDigit(theStr.substring(i,i+1)) == false) {

flag = false; break; } } } return(flag); } 参数 theStr 表示要判断的字符串。如果 theStr 为空,则返回 false;否则对 theStr 中的每 个字符进行判断,如果有一个字符不是数字类型(使用 IsDigital 函数判断)则返回 false。如果 上述情况都没有返回 false,则返回 true。 4.IsBetween(、)函数 IsBetween()函数的功能是判断指定数据是否在两个数字之间,代码如下: function isBetween (val, lo, hi) { if ((val < lo) || (val > hi)) { return(false); } else { return(true); } } 参数 val 表示要比较的数值,参数 lo 表示比较范围的下限,参数 hi 表示比较范围的上 限。 程序将 val 与 lo、 hi 进行比较, 如果 val 的值不在它们之间, 则返回 false, 否则返回 true。 5.IsIDate()函数 IsDate()函数的功能是判断指定数据是否是日期型数据,代码如下: function isDate (theStr) {

var the1st = theStr.indexOf('-'); var the2nd = theStr.lastIndexOf('-');

if (the1st == the2nd) { return(false); } else { var y = theStr.substring(0,the1st); var m = theStr.substring(the1st+1,the2nd); var d = theStr.substring(the2nd+1,theStr.length); var maxDays = 31;

if (isInt(m)==false || isInt(d)==false || isInt(y)==false) return(false); else if (y.length < 4) return(false); else if (!isBetween (m, 1, 12)) return(false); else if (m==4 || m==6 || m==9 || m==11) maxDays = 30; else if (m==2) { if (y % 4 > 0) maxDays = 28; else if (y % 100 == 0 && y % 400 > 0) maxDays = 28; else maxDays = 29; } if (isBetween(d, 1, maxDays) == false) { return(false); } else { return(true); } } } 可以看到前面定义的函数都是为了实现 Isdate()函数的功能。 在 search.asp 中,定义“开始”按钮的代码如下: <input type="submit" value=" 开 始 " language=javascript name="tijiao" onclick="return button2_onclick()"> 当用户单击“开始”按钮时,将触发 onclick 事件,并执行 Button2_onclick()函数,代码 如下: function button2_onclick() { // 字段不能都为空,如果发布日期为空,则查询条件不能空 if (form1.sdate.value=="" && form1.edate.value=="" && form1.searchcontent.value == "") { alert("查询条件不能都为空!"); form1.searchcontent.focus(); return (false);

}

// 检查日期格式是否正确 if (form1.sdate.value.length>0) { if(!isDate(form1.sdate.value)) { alert("开始日期格式不正确,请重新输入!"); form1.sdate.focus(); return (false); } } if (form1.edate.value.length>0) { if(!isDate(form1.edate.value)) { alert("截至日期格式不正确,请重新输入!"); form1.edate.focus(); return (false); } } } 这段程序将判断用户输入的查询条件是否为空,并使用自定义函数 IsDate()验证日期是 否有效。 下面介绍 searchResult.asp 的实现方法。它的主要功能是根据用户提交的查询条件生成 SELECT 语句,并以表格的形式显示查询结果。在 searchResuIt.asp 中,定义了一个函数 GetUserName(),它的功能是根据用户名返回用户的真实姓名,代码如下: <% '根据用户名读取用户姓名 Function GetUserName(UserId)

Dim RsUser,sql Set RsUser = Server.CreateObject("ADODB.RecordSet") sql= "SELECT * FROM Users WHERE UserName='" & Trim(UserId) & "'" Set rsUser = Conn.Execute(sql) If NOT rsUser.EOF Then GetUserName = rsUser("Ename") Else GetUserName = "无名" End If End Function %> 这里使用 GetuserName()函数的作用是取得新闻提交人的姓名,并在查询结果中显示。 如果将本系统用于企业内部的新闻发布平台, 则通常需要显示提交人姓名。 如果不需要此功 能,也可以将相关代码去掉。 searchResult.asp 的最重要部分就是生成查询新闻的 SELECT 语句,代码如下: <% ' 提取发布时间查询范围 sDate = Request("sdate") eDate = Request("edate") ' 根据时间字段设置查询语句,需要把时间字符串转换为日期型 If Len(sDate)>0 And Len(eDate)>0 Then strSqlPTime = " WHERE PostTime>='" & sDate & "'" strSqlPTime = strSqlPTime & " And PostTime<='" & eDate & "'" ElseIf Len(sDate)>0 And Len(eDate)=0 Then strSqlPTime = " WHERE PostTime>='" & sDate & "'" ElseIf Len(sDate)=0 And Len(eDate)>0 Then strSqlPTime = " WHERE PostTime<='" & eDate & "'" End If ' 取得查询模式(精确查询或模糊查询) ,参见 search.asp 中的定义 searchcontent1 = Request("searchcontent")

fanwei = Request("fanwei") If fanwei ="all" Then '精确查询 searchcontent = searchcontent1 Else '模糊查询 searchcontent = "%" & searchcontent1 & "%" End If ' 取得查询范围值 searchfanwei = Request("D1") If searchfanwei="title" Then '只在新闻标题中查询 Response.Write "<h4><font color=#7966C6>按 信息标题 查询的结果 </font></h4><br>" strSQL = " Title LIKE '" & searchcontent & "' ORDER BY PostTime DESC" ElseIf searchfanwe="content" Then '只在新闻内容中查询 Response.Write "<h4><font color=#7966C6>按 信息内容 查询的结果 </font></h4><br>" strSQL = " Content LIKE '" & searchcontent1 & "' ORDER BY PostTime DESC" End If '合并查询条件 If Len(strSqlPTime)=0 Then strSQL = " WHERE " & strSQL Else strSQL = strSqlPTime & " And " & strSQL End If

'记录查找到的新闻序号 Dim ncnt ncnt = 0 '输出表格 Response.Write "<table width='100%'>" Response.Write "<tr>"

Response.Write "<td align=middle width='10%'><b>序号</b></td>" Response.Write "<td align=left width='30%'><b>信息标题</b></td>" Response.Write "<td align=middle width='14%'><b>所属类别</b></td>" Response.Write "<td align=middle width='10%'><b>内容长度</b></td>" Response.Write "<td align=middle width='16%'><b>提交人</b></td>" Response.Write "<td align=middle width='20%'><b>提交时间</b></td>" Response.Write "</tr>"

Dim rsSearch,rsCate Set rsSearch= Server.CreateObject("ADODB.RecordSet") Set rsCate = Server.CreateObject("ADODB.RecordSet") '生成查询语句 strSQL = "SELECT * FROM News " & strSQL 'Response.Write "sql :"& strSQL rsSearch.Open strSQL, Conn, 1, 3 以上代码的工作过程如下: 根据参数 sdate 和 edate 生成与日期相关的查询条件;根据查询模式(精确查询或模糊查询) 生成相关的查询条件。如果是精确查询,则使用“=” ;如果是模糊查询,则使用 LIKE 和通 配符%;根据查询范围生成相关的查询条件;将所有查询条件合并成 WHERE 子句;生成 显示查询结果的表头;生成并执行 SELECT 语句。 -接着程序将使用循环语句依次处理每条查询记录,代码如下: '依次处理查询结果 Do While Not rsSearch.EOF ncnt = ncnt + 1 Response.Write "<tr bgColor=Lavender style='COLOR:Purple;'>" Response.Write "<td align=middle>"&ncnt&"</td>" '输出新闻标题及链接 Response.Write "<td><a href=NewsView.asp?id="&rsSearch("Id")&" onClick='return newwin(this.href)'>"&rsSearch("Title")&"</a>" ' 判断是否有图片

If rsSearch("attpic") Then Response.Write "(附图)" End If Response.Write "</td>" ' 取得信息分类名称 sql = "SELECT * FROM Category WHERE CateId=" & rsSearch("CateId") Set rsCate = Conn.Execute(sql) If NOT rsCate.EOF Then Response.Write "<td align=middle>"&rsCate("CateName")&"</td>" End If ' 计算内容大小 If rsSearch("Content")="--" Then nlength=0 Else nlength = Len(rsSearch("Content")) ' 输出内容大小、提交人姓名 Response.Write "<td align=middle>"&nlength&"&nbsp;Bytes</td>" ' 显示提交人姓名 Response.Write "<td align=middle>"&GetUserName(rsSearch("Poster"))&"</td>" ' 显示提交时间 Response.Write "<td align=middle>"&rsSearch("PostTime")&"</td>" Response.Write "</tr>" End If rsSearch.MoveNext() LOOP Response.Write "</table>" Set rsSearch = Nothing Set rsCate = Nothing Set Conn = Nothing %>

第八章
第一节 安装 IIS

调试与安装

1、在安装 IIS 之前,必须安装 TCP/IT 协议。 TCP/IP 协议是执行 IIS 的必要条件,没有它 ASP 就不能运行,所以必须先安装 TVP/IP 协议(如果已经安装就可以跳过这一节) 。 步骤: 控制面板→双击"网络" →单击:"添加"按钮 →选择"协议"选项 →在厂商列表框 中选择 Microsolf 选项 →在"网络协议"列表框中选择 TCP/CP,单击"确定" 2、安装 IIS 服务器程序 IIS 的安装是创建 ASP 运行环境的关键一步,安装好它以后,计算机就是一台 Web 服 务器了。 步骤:放入光盘,点击控制面板->添加或删除程序->添加或删除 windows 组件,如图 8-1 所示选择 INTERNET 信息服务单击下一步。 安装好 IIS 后,进入控制面板下的管理工具找到 INTERNET 信息服务双击即可打开。 然后建立虚拟目录,把自己首页的目录写上去,然后取一个别名,主要是为了方便,再在默 认文档中,写上主页的文件名就可以了,以后在 IE 浏览器中只要打 127.0.0.1 就会显示自己 的主页。

图 8-1

第二节

ASP 硬件要求

操 作 系 统 Windows 9X 、 windows NT Workstation/Server4.0 、 Windows 2000 Server/Professional 版。 CPU:没有大的要求,只要可以运行以上的 Windows 操作系统就可以了。当然,速度 是越快越好。 内存:基于内存需要 32MB,建议使用 64MB 以上内存,如果使用 Windows 2000,建议 用 128MB 内存。 硬盘空间:至少有 50MB 以上的磁盘空间来安装所需的组件。 ASP 软件要求 Windows 98: PWS4.0 版附属于 Windows 98 光盘的 add=one\pws 目录,执行其中的 setup.exe,即可安装 PWS4.0 版。 Web 服务器软件建设 Web 的内容保存在 Web 站点(Web 服务器)中,用户可以通过浏览器(Browser)访问 Web 站点。因此,Web 是一种基于客户机/服务器的体系结构。也就是说,Web 实际上是一 种全球性通信系统,该系统通过 Intrnet 使计算机相互传送基于超媒体的数据信息。Web 是 一个超文本信息系统,它的超文本链接使得 Web 文档不再象书本一样的固定的、线性的, 而是可以从一个位置迅速转到另外的位置,从一个主题到另一个相关的主题。Web 是分布

式的。无论系统的 internet 访问 WWW。对于 Web,只要通过超链接指向所需的站点,就可 以使物理上放置在不同位置的信息在逻辑上一体化。对用户来说这些住处是一体的。 Web 具有新闻性。Web 站点上的信息是动态的,经常更新的。住处的提供者可以经常 的对站上的信息进行更新,所以用户(浏览者)可以得到最新的信息。 Web 是动态的、交互的。以 Java 为代表的动态技术使 Web 从静态的页面变成可扩行程 序,从而大大提高了 Web 的动态性和交互性。可以通过超链接,用户的浏览顺序和所到站 点完全由用户自行决定。 Web 服务器硬件建设专线入网具有通信速度高等优点,但是费用相对较高,投资较大。 需要具备入网专线。入网后网上所有终端和工作站均可享受 Internet 服务。用户可向 ISP 申 请 X.25 声母或 DDN 专线。专线速度可达 200bps 至 2048bps 可选。 具有了专线以后,就需要位本地子网选择一个路由器以实现路由功能,然后接入 IGS 网关;也可以不用路由器,直接接入 IGS 网关路由器因为 IGS 具有 IP 路由软件,可局域网 连上服务器。

结束语
经过老师耐心细致的指导,及设计小组同学们的密切合作,同时翻阅了大量的资料(包 括网上资料,书本及学校的一些相关资料)经过近一个月的努力,网站的设计制作告一段落。 总结这次“蓝球网站设计”开发制作过程,我们综合使用了目前因特网上的各种静态制作方 法及交互式动态网站的制作设计手段, 并对初步利用后台程序完成了网站的动态响应与生成 网页的技术。同时也从中学习了对静态页面的处理风格,色彩搭配,页面导航方面有了一定 经验。对用 Javascript 语言制作动态效果也有了更进一步的认识。在交互式网页设计学会了 如何使用 MYSQL 建立数据库, 以及对数据库浏览, 修改, 添加, 查询。 如何用 PHP 编写 序来方便访客,读者在网上查询学校各方面的信息。 目前网站的制作技术与要求,都已经告别了因特网初期网站制作的“幼稚”期,随着各 类网站的迅速增加与浏览者需求的提高,无不要求网站从立意,策划,页面设计到后台程序 的全面提高。 无论是个人网站还是企业网站都必须被要求从浏览者角度出发, 最大限度的满 足用户的要求,这也是以后各类网站发展竞争的真正实质所在。 程

本次设计由于设计时间较紧,且相关模块比较多,加之设计经验的不足,在网站的整体 设计及各模块功能可能设计的不完全,有待于进一步的完善和改进。





网站的建立与发布,最终离不开计算机网络系统平台的支持。计算机网络是计算 机技术和现代通信技术的有机结合。计算机网络技术是由现代计算机处理技术和现代 通信技术结合发展而成的,是社会信息化的基础技术。 计算机网络技术经过 30

余年的发展,已经成长为一棵参天大树。从它的作用范围角度讲有局域网、城域网和 广域网;从传递的速率角度讲有低速、高速和超高速宽带网等之分;从连接的形式讲 有环形网、星形网、总线网等;从应用的类型讲可以分成控制网、通讯网、管理网等; 并且把最适应于人类与外部物理世界沟通的多媒体技术大量结合在一起,形成了丰富 多彩的综合运行环境。 通过本次课程设计的制作,不但是对我这三年所学知识的一个 检验,也是对我计算机应用水平与写作水平的一个考核,而且还给了我一个找出自己 不足的机会。 由于课程设计者水平有限,时间仓促,错误之处在所难免,希各位读者批评指正。


毕业设计论文 基于WEB的新闻发布系统完整.doc

毕业设计论文 基于WEB的新闻发布系统完整_工学_高等教育_教育专区。毕业设计论文 基于WEB的新闻发布系统完整【优秀毕业设计论文 精品推荐】 ...

基于WEB的新闻发布管理系统毕业论文设计.doc

基于WEB的新闻发布管理系统毕业论文设计 - 毕业设计论文 论文题目:基于 WEB 的新闻发布系统 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈...

计算机专业毕业设计论文 基于WEB的新闻发布系统完整论文.doc

计算机专业毕业设计论文 基于WEB的新闻发布系统完整论文_工学_高等教育_教育专区。计算机专业毕业设计论文 基于WEB的新闻发布系统完整论文【优秀毕业设计论文 精品推荐】...

基于WEB的新闻发布系统毕业论文.doc

基于WEB的新闻发布系统毕业论文_管理学_高等教育_教育专区。基于WEB的新闻发布系统毕业论文【优秀毕业设计论文 精品推荐】 计算机科学与技术专业毕业设计论文 基于 WEB...

基于web的新闻发布管理系统的研究与设计毕业论文.doc

基于web的新闻发布管理系统的研究与设计毕业论文 - 南昌航空大学科技学院 2013 届学士学位论文 基于 web 的新闻发布管理系统的研究与设计 1 前言 互联...

新闻发布系统论文-《基于WEB的新闻发布管理系统》_图文.doc

新闻发布系统论文-《基于WEB的新闻发布管理系统》_互联网_IT/计算机_专业资料。...高效性、完整性、易使用性、可维护性、可测试性、复用性、安全保密性、可移植...

基于javaweb的新闻发布系统设计与实现本科论文_图文.doc

基于javaweb的新闻发布系统设计与实现本科论文 - JINING UNIVERSITY 学士学位论文 学生姓名: 学系专题号: 别: 业: 计算机科学系 计算机科学与技...

基于WEB网站的新闻发布系统的设计与实现_论文.pdf

基于WEB网站的新闻发布系统的设计与实现 - 软件开发与应用 信息与电脑 China Computer&Communication 2017 年第 6 期 基于 WEB 网站的新闻发布系统...

基于web的学校新闻发布系统毕业设计论文 推荐.doc

基于web的学校新闻发布系统毕业设计论文 推荐 - 目录 第一章 系统概述...

计算机毕业论文新闻发布系统基于web的个人网站新闻....doc

计算机毕业论文新闻发布系统基于web的个人网站新闻发布系统 - 目 录 摘要

基于Web的新闻发布管理系统.doc

基于Web的新闻发布管理系统 - 诚信声明 本人声明: 我所呈交的毕业设计论文是本人在导师指导下进行的研究工作及取得的研究成 果。尽我所知,除了文中特别加以标注...

(完整版)新闻发布系统毕业论文8524408.doc

(完整版)新闻发布系统毕业论文8524408 - 单片机论文,毕业设计,毕业论文,单片机设计,硕士论文,研究生论文,单片机研究论文,单片机设计论文

基于WEB的校园新闻发布系统毕业论文开题报告.pdf

基于WEB的校园新闻发布系统毕业论文开题报告 - 呼伦贝尔学院 计算机科学与技术学院 本科生毕业论文(设计)开题报告书 题 目 基于 WEB 的校园新闻发布系统...

基于WEB的新闻发布管理系统 【毕业论文 绝对精品】_图文.doc

基于WEB的新闻发布管理系统 【毕业论文 绝对精品】_管理学_高等教育_教育专区。基于WEB的新闻发布管理系统 【毕业论文 绝对精品】 ...

毕业设计论文 基于WEB的新闻发布系统完整.doc

毕业设计论文 基于WEB的新闻发布系统完整_工学_高等教育_教育专区。毕业设计论文 基于WEB的新闻发布系统完整【优秀毕业论文设计 精品推荐】 ...

新闻发布系统毕业论文.doc

中文摘要 新闻发布系统论文中文摘要 新闻发布系统是一...2.3.3 开发工具 基于 Web 的系统开发工具应使...要求系统运行时能够保证正确性、高效性、完整性、...

毕业设计-新闻发布系统-毕业论文.doc

毕业设计-新闻发布系统-毕业论文_工学_高等教育_...二是基于 ASP、 PHP 或者 JSP 和脚本语言, 将...web site , publishing the latest developments, ...

基于bs模式的新闻发布系统设计与实现_毕业论文.doc

基于bs模式的新闻发布系统设计与实现_毕业论文 - Selectio nPara

新闻网站系统毕业论文.doc

新闻网站系统毕业论文_理学_高等教育_教育专区。企业新闻网站毕业论文,校园新闻网站毕业论文,新闻网站毕业论文,新闻网站系统毕业设计 ...

新闻发布管理系统的研究与设计 毕业论文 推荐.doc

新闻发布管理系统的研究与设计 毕业论文 推荐_管理学_高等教育_教育专区。南昌航空大学科技学院 2013 届学士学位论文 基于 web 的新闻发布管理系统的...