华东交通大学理工学院
课 程 设 计 报 告 书
所属课程名称 电子商务网站建设课程设计
题 目 ASP新闻发布系统
分 院 电 信 分 院
专业班级 电子商务1班
学 号 **************
学生姓名 何芳林
指导教师 程志平
2013年12月25日
序号 | 项 目 | 等 级 | ||||
优秀 | 良好 | 中等 | 及格 | 不及格 | ||
1 | 课程设计态度评价 | |||||
2 | 出勤情况评价 | |||||
3 | 任务难度评价 | |||||
4 | 工作量饱满评价 | |||||
5 | 任务难度评价 | |||||
6 | 设计中创新性评价 | |||||
7 | 论文书写规范化评价 | |||||
8 | 综合应用能力评价 | |||||
综合评定等级 |
评阅人 职称
20 年 月 日
目 录
第1章 课程设计内容及要求
1.设计内容
本次任务是要实现一个新闻发布系统,系统的主要功能包括:管理员登录功能、查看新闻功能、发布新闻功能和新闻管理功能。用户可使用本系统来查看、发布新闻。用户可以通过单击每条新闻的标题来查看该条新闻的详细内容。新闻总体设计可分为新闻标题、新闻作者、新闻类别、新闻内容和发布日期。当用户作为系统管理员,成功登录后,可以使用新闻管理功能。新闻管理功能包括对现有新闻的修改,增加和删除等,管理员操作完毕后,可单击“管理员退出”超链接退出登录状态。
2.设计要求
基于ASP和SQL数据库设计一个新闻发布系统,要求系统具有登录功能以及对新闻信息的增、删、查、改等基本功能。
第2章 系统分析与总体设计
2.1 系统功能描述
新闻发布及管理系统包括新闻类别管理、新闻发布管理、图片处理、新闻查询、网友评论和用户管理等模块。具体描述如下:
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)系统用户信息的删除。
2.2 系统功能模块划分
从功能描述的内容可以看到,本实例可以实现6个完整的功能。我们根据这些功能,设计出系统的功能模块。
图2-1系统功能模块图
新闻发布及管理系统的功能模块之间的关系:
图2-2新闻发布及管理系统的功能模块关系图
在本系统中,用户管理模块的功能比较简单。在系统初始化时,有一个默认的“系统管理员”用户Admin,由程序设计人员手动地添加到数据库中。Admin用户可以创建用户、修改和删除用户;普通用户则只能修改自己的用户名和密码。
用户管理功能模块的关系:
图2-3用户管理功能模块的关系图
2.3 系统流程分析
本系统分为前台系统和后台系统两个部分。前台系统不需要进行身份认证,任何人都可以通过浏览器阅读已经发布的新闻、发表网友评论。
后台系统的流程分析如下图所示。Admin用户拥有所有的权限,普通用户只能对自己发布的新闻进行管理,包括修改新闻内容、删除新闻和删除网友评论。
图2-4后台系统的流程分析图
第3章 数据库的设计
3.1 创建数据库
首先创建一个数据库news,用来保存本系统的所有数据。创建数据库的脚本代码如下:
CREATE DATABASE news
GO
可以在SQL查询分析器中执行该语句,创建数据库。
3.2 数据库的逻辑设计
本系统定义的数据库中包含以下4个表:新闻类别表:Category、新闻基本信息表:News、网友评论信息表:Discuss和用户信息表:users。
下面分别介绍这些表的结构。
1.新闻类别表Category
新闻类别表Category用来保存新闻类别数据,结构如表1所示。
表1 表Category的结构
编号 | 字段名称 | 数据结构 | 说明 |
1 | CateId | int | 新闻类别编号 |
2 | CateName | varchar (50) | 新闻类别名称 |
基本新闻表News用来保存网上新闻的基本信息,结构如表2所示。
表2表News的结构
编号 | 字段名称 | 数据结构 | 说明 |
1 | Id | int | 新闻编号 |
2 | Title | varchar(100) | 新闻标题 |
3 | Content | text | 新闻内容 |
4 | PostTime | datetime | 提交时间 |
5 | Poster | varchar(50) | 提交人 |
6 | CateId | int | 新闻类别编号 |
7 | Attpic | bit | 是否有图片标记(0没有;1有) |
8 | Readcount | int | 阅读次数 |
网友评论信息表Discuss用来保存网友对新闻的评论信息,结构如表3所示。
表3 表Discuss的结构
编号 | 字段名称 | 数据结构 | 说明 |
1 | id | int | 评论编号 |
2 | UserId | varchar(20) | 评论人名称 |
3 | Posttime | sinaildatetime | 提交时间 |
4 | Content | varchar(4000) | 评论内容 |
5 | Newsld | int | 新闻编号 |
用户信息表Users用来保存用户的基本信息,结构如表 4所示。
编号 | 字段名称 | 数据结构 | 说明 |
1 | UserId | int | 用户ID号 |
2 | UserName | varchar(50) | 用户名 |
3 | UserPwd | varcahr(50) | 密码 |
4 | Ename | varchar(50) | 用户姓名 |
5 | varchar(50) | 电子邮箱 |
4.1 系统主界面
本主界面为default.asp,它的功能是显示新闻类别和每个类别中的10条新闻,并提供进入管理界面(index.asp)的链接。
录入新闻类别和新闻内容后,default.asp的界面如图4-1所示
图4-1 default.asp的界面
主要代码:
sql = "SELECT * FROM Category ORDER BY CateId"
Set rsCate = conn.Execute(sql)
'显示所有新闻类别链接
Do While Not rsCate.EOF
stitle = rsCate("CateName")
cid = rsCate("CateId")
'每个新闻类别标题被定义为一个书签,名为 #a类别编号
%>
<% rsCate.MoveNext Loop %> 4.2 程序登录界面 图4-2登录界面图 4.3 新闻管理界面 图4-3新闻管理界面图 主要代码: <% 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") %>| <%=stitle%> <% rsCate.MoveNext Loop %> 4.4 新闻类别管理界面 图4-4新闻类别管理界面 主要代码: 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 %> 4.5 新闻发布管理界面 图4-5新闻发布管理界面图 主要代码: <% 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") %> <% rsCate.movenext LOOP %> 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,"' 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 " 4.6 新闻查询界面 图4-6新闻查询界面图 可以看到,新闻查询可以分为下面几种情况: (1)按发布日期查询。 (2)查询新闻标题和新闻内容中包括的文字。 在search.asp中,用于编辑查询条件的表单为Form1,它的定义代码如下:添加成功!
"