最新ASP新闻发布系统课程设计报告.doc
Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateASP新闻发布系统课程设计报告存档资料 成绩:存档资料 成绩: 华东交通大学理工学院课 程 设 计 报 告 书所属课程名称 电子商务网站建设课程设计 题 目 ASP新闻发布系统 分 院 电 信 分 院 专业班级 电子商务1班 学号 20100210460123 学生姓名 何芳林 指导教师 程志平 2013年12月25日 -序号项 目等级优秀良好中等及格不及格1课程设计态度评价2出勤情况评价3任务难度评价4工作量饱满评价5任务难度评价6设计中创新性评价7论文书写规范化评价8综合应用能力评价综合评定等级课程设计(论文)评阅意见评阅人 职称 20 年 月 日 目录第1章 课程设计内容及要求4第2章 系统分析与总体设计52.1 系统功能描述52.2 系统功能模块划分62.3 系统流程分析8第3章 数据库的设计93.1 创建数据库93.2 数据库的逻辑设计9第4章 详细设计114.1 系统主界面114.2 程序登录界面124.3 新闻管理界面134.4 新闻类别管理界面144.5 新闻发布管理界面164.6 新闻查询界面18第5章 课程设计心得20参考文献(资料)21第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用户可以创建用户、修改和删除用户;普通用户则只能修改自己的用户名和密码。用户管理功能模块的关系:系统用户信息管理修改Admin用户的密码创建、修改、删除普通用户信息修改自身的Admin用户普通用户图2-3用户管理功能模块的关系图2.3 系统流程分析本系统分为前台系统和后台系统两个部分。前台系统不需要进行身份认证,任何人都可以通过浏览器阅读已经发布的新闻、发表网友评论。后台系统的流程分析如下图所示。Admin用户拥有所有的权限,普通用户只能对自己发布的新闻进行管理,包括修改新闻内容、删除新闻和删除网友评论。开始用户登录失败重试管理所有用户的信息管理新闻类别,发布信息,所有新闻信息的管理管理自己的信息新闻发布,自己发布的新闻的管理Admin普通用户图2-4后台系统的流程分析图第3章 数据库的设计3.1 创建数据库首先创建一个数据库news,用来保存本系统的所有数据。创建数据库的脚本代码如下:CREATE DATABASE newsGO可以在SQL查询分析器中执行该语句,创建数据库。3.2 数据库的逻辑设计本系统定义的数据库中包含以下4个表:新闻类别表:Category、新闻基本信息表:News、网友评论信息表:Discuss和用户信息表:users。下面分别介绍这些表的结构。1新闻类别表Category新闻类别表Category用来保存新闻类别数据,结构如表1所示。表1 表Category的结构编号字段名称数据结构说明1CateIdint新闻类别编号2CateNamevarchar (50)新闻类别名称 2基本新闻表News基本新闻表News用来保存网上新闻的基本信息,结构如表2所示。表2表News的结构编号 字段名称数据结构 说明1Idint新闻编号2Titlevarchar(100)新闻标题3Contenttext新闻内容4PostTimedatetime 提交时间5Postervarchar(50) 提交人6CateIdint新闻类别编号7Attpicbit是否有图片标记(0没有;1有)8 Readcountint阅读次数3网友评论信息表Discuss网友评论信息表Discuss用来保存网友对新闻的评论信息,结构如表3所示。表3 表Discuss的结构编号字段名称 数据结构 说明1id int评论编号2UserId varchar(20)评论人名称3Posttimesinaildatetime提交时间4Contentvarchar(4000)评论内容5Newsld int新闻编号4用户信息表Users用户信息表Users用来保存用户的基本信息,结构如表 4所示。编号字段名称 数据结构 说明1 UserId int用户ID号 2 UserName varchar(50)用户名3 UserPwd varcahr(50)密码4 Ename varchar(50)用户姓名5 Email varchar(50)电子邮箱第4章 详细设计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类别编号%> <ahref="#a<%=cid%>"><fontstyle='TEXT-DECORATION: none;color:black'><%=stitle%></font></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") %>| <a href='index.asp?flag=<%=cid%>'><font style='TEXT-DECORATION: none;color:black'><%=stitle%></font></a> <% 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" thenCateName = 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" ThenCateName = 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")%> <option value="<%=cid%>"><%=stitle%></option><% 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.AddNewrs("CateId") = CInt(Request("Cate") rs("Title") = titlers("Content") = rqtContentrs("Posttime") = now()rs("Poster") = Session("UserName")rs("ReadCount") = 0If attpic <> "" Then rs("attpic") = attpicEnd Ifrs.Update'释放资源,显示提示信息set rs = nothingResponse.Write "<h2>添加成功!</h2>"4.6 新闻查询界面图4-6新闻查询界面图可以看到,新闻查询可以分为下面几种情况: (1)按发布日期查询。 (2)查询新闻标题和新闻内容中包括的文字。在search.asp中,用于编辑查询条件的表单为Form1,它的定义代码如下:<form name="form1" method="POST" action="searchResult.asp">当表单数据提交时,将执行searchResult.asp。为了验证用户录入数据的有效性,在search.asp中定义了一些函数,下面介绍这些函内容。1IsEmpty()函数IsEmpty()函数的功能是判断字符串是否为空,代码如下:function isEmpty (str) if (str=null)|(str.length=0) return true;else return(false);参数str表示要判断的字符串,如果它为空或长度为0则返回true,否则返回false。2IsDigital()函数IsDigital()函数的功能是判断字符串是否是数字类型,代码如下:function isDigit(s)ar patrn=/0-91,20$/;if (!patrn.exec(s) return falsereturn true 参数s表示要判断的字符串。变量patrn是一个正则表达式,正则表达式是由普通字符以及特殊字符组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。正则表达式中的Execute方法对指定的字符串执行正则表达式搜索。/表示正则表达式的开始,$/表示正则表达式的结束,09表示以09的数字为开始和结束,1,20表示长度为120。3IsInt()函数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。5IsIDate()函数IsDate()函数的功能是判断指定数据是否是日期型数据,代码如下:function isDate (theStr) var the1st = theStr.indexOf('-');else return(true); 这段程序将判断用户输入的查询条件是否为空,并使用自定义函数IsDate()验证日期是否有效。第5章 课程设计心得过一个星期的设计和开发,网上新闻发布系统基本开发完毕。其功能基本符合新闻发布需求,能够完成新闻发布、新闻修改和新闻显示以及新闻评论。并提供部分系统维护功能,使用户方便进行新闻浏览和管理员对新闻进行修改、数据删除。,对于新闻同类性的问题也通过程序进行了有效的解决。但是由于课程设计时间较短,所以该系统还有许多不尽如人意的地方,比如页面设计内容不是十分丰富,用户界面不够美观,出错处理不够等多方面问题。这些都有待进一步的改善。参考文献(资料)1 谢希仁. 计算机网络(第五版)M. 北京:电子工业出版社,2008年2月2 胡小强 计算机网络M 北京:北京邮电大学出版社2005年1月3 高怡新 电子商务网站建设M 北京:人民邮电出版社 2011年12月4 李国庆. ASP.NET程序设计项目教程M. 北京:北京理工大学出版社 2010年2月5 俞俊甫. 数据库原理应用教程 M. 北京:北京邮电大学出版社2010年7月致 谢感华东交通大学理工学院的各位领导,感谢我的老师给我们这次学习课程设计的机会,让我们更加深入的了解和学习了ASP,同时也感谢我的同学给我无私的帮助,只有相互之间密切配合在能更好的完成和丰富课设内容。在这里特此表示感谢。