面向对象课程设计c# 新闻发布系统Word文件下载.docx
《面向对象课程设计c# 新闻发布系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《面向对象课程设计c# 新闻发布系统Word文件下载.docx(50页珍藏版)》请在冰豆网上搜索。
该系统是基于B/S(Browser/Server,浏览器/客户端)模式实现,基于.NET平台架构开发设计,主要实现对校园新闻的发布与管理功能,对新闻内容信息的浏览阅读、评论、搜索等。
随着Internet/Intranet技术的兴起,将原本在单机或本地局域网上运行的数据库系统移植到因特网中,即开发基于B/S模式的新一代MIS(ManagementInformationSystem,管理信息系统)系统,正成为技术发展的趋势。
为了保证系统性能的高效性、可扩展性,以及达到数据共享和网络化管理的目的,本系统采用B/S体系结构进行设计开发。
1.2需求分析
1.2.1功能需求
该系统的用户为校园网站,需要经常发布一些新闻,如何能有效地管理和发布新闻呢?
通过对其它一些新闻系统的调查发现,一般新闻系统功能如下:
(1)前台按分类显示新闻;
(2)搜索新闻;
(3)评论新闻
(4)图片展示
(5)后台管理:
●添加、删除和修改新闻
●添加、删除和修改用户(管理员)
●添加、删除和修改新闻分类
●添加新闻(添加成功后的新闻根据管理员权限分为可发布新闻和待审核新闻)
根据校园网站新闻发布管理的实际需求,在首页中能显示最热门新闻、头条新闻和最近发布的几条新闻等,同时在后台发布新闻时可以添加图片,也可以添加HTML语法,在前台能自动根据所显示的图片和HTML语法来显示新闻。
在后台管理中,因为有权限的管理员才能登录管理后台,所以需要有个登录验证模块,而且需要根据用户权限的不同显示不同的管理目录,在管理新闻和用户时,当数据少时管理起来还比较方便,如果一多则想找到某条新闻或某个用户就很难,所以需要有个查找(新闻标题、用户)模块用于查找新闻或用户。
根据以上需求分析,该系统要实现的主要功能为:
(1)前台显示新闻部分
●用户登录区
●显示最热门的前几条新闻
●显示最新的前几条新闻
●搜索新闻功能(按种类、按标题、按内容搜索)
●显示所有新闻分类和其下的所有新闻(社团新闻、学院新闻、校级新闻等)
●新闻详细信息浏览阅读(作者,编辑,时间,浏览次数)
●图片新闻(自动生成缩略图)以滚动形式在首页显示且只显示前几条
●网站友情链接(可在管理中添加设置)
●网站公告可显示发布了新闻但没通过审核的一些相关通知等
(2)后台管理部分
●管理员登录验证
●添加、修改和删除新闻
●管理评论(删除不良评论)
●新闻分类管理(大类,二级分类)
●用户管理(添加、修改、删除管理员,密码加密)
●系统设置、网站基本配置(网站标题、关键字)等
●后台用统一的风格(采用母板页)
1.2.2性能需求
●该系统在性能功能上应达到如下需求:
●操作简单、界面友好:
完全控件式的页面布局,使得新闻的录入工作更简便,许多选项包括新闻分类、来源部门等只需要点击鼠标就可以完成。
对常见网站的新闻管理的各个方面:
新闻录入、浏览、删除、修改、搜索等方面都大体实现,实现了网站对即时新闻的管理要求;
●即时可见:
对新闻的处理(包括录入、修改、删除)将立即在主页的对应栏目显示出来,达到“即时发布、即时见效”的功能;
●系统运行应该快速、稳定、高效和可靠;
●在结构上应具有很好的可扩展性,便于将来的功能扩展和维护。
1.3系统的模块结构
工作流程为:
一般访问者浏览主页Default.aspx,可以按照自己的需求浏览不同种类的新闻(class.aspx),对查看的每一篇新闻(show.aspx)下方都有一个看后感受的投票和一个写评论的地方(无须登录,但是会记录下发表评论的网友名),如果有需要访问者可以按找不同的方式(标题、内容,或者新闻类别)搜索包含关键字的新闻(query.aspx),以列表方式呈现。
如果是管理员,则进入后台登录页面(login.aspx),验证登录通过后来到后台管理主页(admin_index.aspx,包含一个母版页Admin.Master),管理员可以选择添加、修改、删除新闻大类和二级分类(admin_class.aspx),可以添加新闻(add_news.aspx)和管理新闻(admin_news.aspx,将数据库中的新闻用列表显示),在管理新闻的界面可以点击“修改”按钮进行新闻的修改(update_news.aspx)。
也可以修改用户(admin_pwd.aspx),包括添加用户,删除用户,修改密码(MD5算法加密),还可以管理友情链接(admin_link.aspx),或者修改整个网站的配置(admin_config.aspx)如网站名,联系人qq,关键字等待,点击后台母版页中的“退出登录”(login_out.aspx)断开会话区间,退出到管理后台登录页面,点击取消登录返回主页(Default.aspx)。
2系统设计
2.1数据库设计
2.1.1概念设计(E-R图)
通过visio作的E-R图如下(省去了各属性),其中还有links,admin,config三个表是独立的,没有画出。
2.1.2逻辑设计(关系表)
(1)news表——新闻表
字段
中文意义
数据类型
能否为空
备注
id
新闻唯一ID号
int
NOTNULL
主键
title
新闻标题
nvarchar(100)
classid
所属分类
外键,参照type表
boardid
所属二级分类
可
contents
新闻内容
ntext
oAuthor
责编
nvarchar(50)
oSource
来源
picurl
图片地址
data
发布日期
datatime
hklick
浏览次数
nvarchar(255)
pinglun
评论次数
(2)type表——新闻分类表
一级分类id
class_name
一级分类名
board_name
二级分类名
nvchar(50)
所属二级分类id
外键,参照自身type表
leishu
种类数
(3)admin表——用户管理
id号
username
用户名
password
登录密码(密文存储)
groud
所属分组
(4)Comment-——评论表
id标识号
newsid
新闻编号
外键,参照news表
评论标题
content
评论内容
text
ip
评论者的ip地址
评论时间
datetime
(5)links——友情链接表
网站名
logo
logo地址
url
网站地址
txt_or_logo
logo替换文本
paixu
排序
网站描述描述
(6)Mood——心情表
mood1
惊讶
mood2
欠揍
mood3
支持
mood4
很棒
mood5
愤怒
mood6
搞笑
mood7
恶心
mood8
不解
类别id
参照type表
moodid
心情id
(7)config——网站配置表
W_WebSiteName
网站站点名
W_Webtitle
网站副标题
nvarchar(200)
W-WebSiteUrl
网站域名
W_StatMastName
站长名
W_StatMastEmail
联系邮箱
invarchar(50)
W_StatMastQQ
联系QQ
char(12)
W_StatMastICP
备案
W-WebSiteKeyword
网站关键词
nvarchar(500)
W-WebSiteIntr
网站介绍
W_WorryNeed
过滤字
W_Webtongji
统计代码
2.2主要功能(界面)模块设计
2.2.1显示新闻
(1)新闻的显示包括主体内容页面:
新闻标题,新闻来源,责任编辑,阅读次数,发布时间和新闻内容(包含图片)。
右边是一个新闻搜索窗口(在某一类别中搜索包含某一关键字所有新闻),一个图片新闻列表。
(2)新闻主体的下方是一个评论窗口,包括一个看完后的心情投票、一个发表看法的地方和一个查看所有评论的区域
(3)按时间顺序将查看的新闻所属种类的其他新闻,以标题列出。
2.2.2添加、修改新闻
添加新闻模块,如下图所示。
可以实现图片上传,预览功能。
并在提交时进行各内容填写的合法性要求检查。
管理新闻包括修改和删除新闻,点击各个标题的链接可查看新闻,点击后面的按钮可分别实现修改和删除功能。
(分页显示,每页10条记录,并实现在查看各页数据时局部刷新)
修改成功提示
2.2.3添加评论
上面是添加评论的区域,包括评论人、验证码和评论内容,下半部分是已有的评论。
2.2.4修改分类
添加新的大类,和它的二级分类
修改和删除已有分类(删除大类时,在数据库中设置级联删除它的所属二级分类)
修改大类下的二级分类名字:
2.2.5搜索新闻
包括首页的按标题或内容搜索新闻,和在新闻大类显示页按新闻种类的关键字搜索
搜索标题中有“学校”两个字的所有新闻。
分页显示,结果如下图:
2.2.6显示最新或最热新闻、图片
在首页,有最新资讯和热门图片两个模块,分别是按照新闻发布的时间和有图片的新闻的浏览次数在数据库中进行筛选的。
2.2.7心情管理
读完某一篇文章之后,读者可进行心情表态,点击某一心情下的单选按钮时,数据库中做相应改变:
(该功能区域下方还有阅读上一篇、下一篇的提示标题)
2.2.8后台登录和退出
整个页面下方显示的是一个网站的信息,最重要的是后台管理链接入口:
点击进去后,便看到登录界面:
正确输入用户名、密码和验证码后(输入错误会有相应提示),登录到了后台:
点击退出登录后,出现一个提示窗口,确定后返回到登录后台页面。
2.2.9友情链接管理
可以添加新链接,上传LOGO:
修改链接:
2.3界面设计
2.3.1前台展示
界面采用div+css,配合table的使用,图片展示、搜索、分类新闻布局清晰,看起来简单明了。
引用头部、底部和搜索框三个自定义的控件。
2.3.2后台管理
后台使用了母版页,配合站点地图使得可视化效果良好。
3系统实现
3.1关键技术
(1)引用操作数据的操作类SQLHelper.cs,给查询、更新、插入、删除等操作带来了极大方便;
(2)用配置文件Web.config来配置数据库连接字符串;
(3)使用站点地图Web.sitemap和TreeView导航控件来定置母板页,使得风格统一;
(4)在添加和修改新闻时引用了一个富文本编辑器FreeTextBox,添加引用FreeTextBox.dll并在页面中加入相关代码即可使用;
(5)管理新闻时用DataList数据控件列出各条新闻,并实现分页功能后,拖用UpdatePanel这个AJAX扩展控件来实现分页时局部刷新功能。
(6)心情评价主要用到javascript;
(7)自己定置了top.ascx,bottom.ascx,search.ascx三个自定义控件;
(8)搜索新闻时发挥T-SQL语句的优势,使用了like模糊查询;
(9)通过session内置对象建立一个登录会话来实现为登录不能访问后台的功能。
3.2关键源程序
3.2.1Web.config配置文件中重要信息
数据库连接字符串:
<
appSettings>
<
addkey="
connStr"
value="
DataSource=(local);
InitialCatalog=new;
IntegratedSecurity=True"
/>
/appSettings>
connectionStrings>
addname="
connectionString="
providerName="
System.Data.SqlClient"
/connectionStrings>
后台母版页配置站点地图:
siteMap>
<
providers>
<
admin"
siteMapFile="
admin/web.sitemap"
type="
System.Web.XmlSiteMapProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"
/providers>
/siteMap>
在httpHandlers节点中配置富文本编辑器:
<
addverb="
GET"
path="
FtbWebResource.axd"
FreeTextBoxControls.AssemblyResourceHandler,FreeTextBox"
/>
3.2.2Web.sitemap后台管理站点地图配置文件
siteMapxmlns="
siteMapNodeurl="
"
title="
后台管理"
>
admin/admin_index.aspx"
新闻管理"
description="
admin/admin_class.aspx?
action=0"
分类管理"
admin/add_news.aspx"
添加新闻"
admin/admin_news.aspx"
删改新闻"
管理新闻(修改|删除)"
admin/admin_comment.aspx"
管理评论"
/siteMapNode>
站点管理"
admin/config.aspx"
基本配置"
admin/admin_link.aspx"
友情链接"
admin/admin_pwd.aspx"
管理密码"
admin/login_out.aspx"
退出登录"
3.2.3显示新闻
以下show_news.aspx.cs代码所实现的功能主要是:
显示id号对应的新闻内容,统计浏览次数,添加评论(过滤不良词汇),上下篇导航,填充图文资讯和本类新闻的内容。
privatestringAuther;
//全局id
privatevoidbind1()
{
//用Repeater控件显示新闻
stringsqlStr="
select*fromnewswhereid="
+this.Auther;
this.Repeater1.DataSource=SqlHelper.ExecuteDataset(SqlHelper.ConnectionString,CommandType.Text,sqlStr);
this.Repeater1.DataBind();
}
//浏览次数统计
privatevoidbind2()
updatenewssethklick=hklick+1whereid="
+this.Auther;
SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionString,CommandType.Text,sqlStr);
//添加评论
protectedvoidButton1_Click(objectsender,EventArgse)
if(this.TextBox2.Text.ToString()!
=this.Session["
CheckCode"
].ToString())
base.Response.Write("
script>
alert('
验证码不对!
'
);
/script>
else
try
stringstr=base.Request.QueryString["
id"
].ToString();
stringstr2=repHtml(this.FilterBadWords(this.TextBox1.Text));
//替换不良词汇
stringstr3=repHtml(this.FilterBadWords(this.TextBox3.Text));
stringuserHostAddress=base.Request.UserHostAddress;
//插入到评论Comment数据表中,同时将该新闻的评论调试字段pinglun加1
stringsqlStr1="
insertintoComment(username,conent,ip,newsid)values('
+str2+"
'
+str3+"
+userHostAddress+"
+str+"
)"
;
stringsqlStr2="
updatenewssetpinglun=pinglun+1whereid="
+str;
SqlHelper.Ex