个人博客管理系统WEB课程设计文档格式.docx
《个人博客管理系统WEB课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《个人博客管理系统WEB课程设计文档格式.docx(36页珍藏版)》请在冰点文库上搜索。
![个人博客管理系统WEB课程设计文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/6/afdf6def-8fc7-4774-a48d-31347e91c324/afdf6def-8fc7-4774-a48d-31347e91c3241.gif)
分类管理,文章管理,评论管理,链接管理,留言管理。
*普通用户功能:
阅读文章,留言,评论和在线聊天。
*分类管理:
文章类型的添加,修改,删除。
*文章管理:
文章的修改,删除。
*评论管理:
评论的删除。
*链接管理:
链接的添加和删除。
*留言管理:
留言的删除和回复。
*管理员用户功能图如图表2-1所示:
图表2-1管理员用户功能图
*普通用户功能图如图表2-2所示:
图表2-2普通用户功能图
2.2.系统模块分析
博客信息管理系统分为面向网络用户的前台及面向个人博客维护管理的后台,依据博客网站中所要实现的基本功能的设定,将所有功能分解为如下四个主要的功能模块来加以实现。
用户以合法的用户名及密码登录,系统即可按该登录用户的权限分配操作模块。
2.2.1.博客注册登录管理模块
博客注册登录管理模块用于建立博客网站固定的客户群体,通过记录对应的博客档案,实现对博客信息的后台维护及管理,同时也便于通过博客档案库将网站最新动态及相关企业的信息方便地传达给每一位潜在的客户。
该功能模块实现了以下几个子功能[3]。
a)新博客在线注册。
b)博客登录管理。
c)跳转到博客主页。
只有进行登录并通过身份验证的用户,才可以在个人博客页面发表日志,并借助个人设置实现对个人博客相关信息的管理维护。
对于没有经过身份验证的网络用户不允许在博客页面中发表日志,更不允许对博客页面信息进行管理维护。
该模块实现新博客的注册及登录验证功能。
其中,注册新博客时会对用户输入的注册信息进行有效性验证,包括基本数据格式的有效性以及逻辑有效性,例如,用户名被占用时将及时给出提示。
注册成功的博客登录时,会随时根据博客输入的登录信息进行提示,如用户名错误或者密码错误。
2.2.2.博客及文章检索查询模块
博客及文章检索查询模块为网络用户提供便捷的搜索,以及日志阅读浏览等功能,同时对日志的评论信息、博客推荐也能够及时反馈给网络用户。
该功能模块实现了以下几个子功能。
a)热门博客页面推荐。
b)最新博客日志推荐。
c)日志信息关键字搜索。
该模块能够在网页中随时提供在线的最新日志信息。
该信息需要定期更新,网络用户可以随时获得最新日志以及最热门的博客推荐。
在客户选择了某个博客或者某个感兴趣的日志后,可以方便地跳转到对应博客页面进行日志的阅读,并和博客进行交流互动。
2.2.3.博客页面显示模块
为了使网络用户尽快定位到所需的博客资料及日志信息,本模块提供了搜索功能,用户可以对所关注的日志信息按照标题进行关键字搜索,以避免用户浏览多个页面来寻找所需的日志信息[4]。
当网络用户进入某个人博客主页后,在该页面中将提供博客日志列表的显示,同时为了方便用户浏览,在该模块中提供根据分类名进行日志列表的显示,也提供日志评论的浏览,此外还允许用户在博客页面中发表评论及留言。
该功能模块实现了如下几个子功能。
a)用户可以分页查看对应的日志内容及评论信息。
b)用户可以针对日志内容发表评论。
c)用户可以针对博客进行留言。
d)用户可以分类查看日志内容。
在该模块中还提供了博客页面统计信息,日志、评论及留言信息分页显示等方便用户的显示效果。
2.3.博客个人管理维护模块
博客个人维护管理模块用于实现用户对博客个人主页及相关信息的动态管理。
该功能模块实现了如下几个子功能:
a)日志及日志分类管理。
b)评论及留言管理。
c)个人基本信息维护管理。
借助该模块,用户可以随时对个人博客主页中的内容进行增加或修改,包括日志分类信息的更新、评论及留言管理等功能,也允许用户对博客的个人信息进行维护及其管理。
3.系统设计
3.1.数据库设计
3.1.1.数据库需求分析
用户分为普通用户和管理员用户
*管理员涉及类型管理、文章管理、添加文章、评论管理、链接管理、留言管理。
*普通用户可以阅读文章、发表回应、留言、评论。
一种文章类型有多篇文章。
一篇文章有多篇评论、回复。
对上面系统功能分析,设计如下数据项:
*管理员信息:
用户名、密码。
*类型信息:
类型编号、类型名称。
*链接:
链接编号、链接名称、链接地址。
*留言:
留言编号、留言人呢称、留言标题、个人主页、留言内容、留言时间、留言回复。
*文章信息:
文章序号、文章作者、文章标题、摘要、文章内容、文章发表日期、文章人气、回复、文章类型编号、文章类型名称、文章回复数。
*评论:
评论序号、评论用户呢称、评论标题、评论内容、评论时间、评论的文章序号。
3.1.2.数据表设计
表格3-1ST_admin(用户表)
序号
列名
数据类型
长度
字段说明
1
ST_admin_user
Nvarchar
50
管理员ID
2
ST_admin_psw
管理员密码
该表为管理员登录的信息表,本系统没有包含管理员用户的注册模块,管理员帐号直接在数据库中设计。
普通用户匿名登录主页。
表格3-2ST_class(类型信息表)
ST_c_id
Bigint
8
文章类型号
ST_c_name
文章类型名
该表用来记录文章类型的相关信息,系统文章分了类别,使管理文章,查看文章都变的非常的方便。
表格3-3ST_link(链接信息表)
ST_l_id
链接号
ST_l_name
链接名
3
ST_l_url
链接地址
该表记录了链接的相关信息,方便用户快速的链接到想浏览的网站,提高了用户的操作效率。
表格3-4ST_message(留言信息表)
ST_id
留言号
ST_nickname
网友呢称
ST_title
留言标题
4
ST_homepage
个人主页
5
ST_content
Ntext
16
留言内容
6
ST_mdate
Datetime
留言时间
7
ST_hf
留言回复
该表包含了留言的相关信息,留言模块方便普通用户和版主之间的交流,为他们提供了一个专门的途径。
表格3-5ST_news(文章信息表)
ST_n_id
4
文章号
ST_n_author
文章作者
ST_n_title
200
文章标题
ST_n_key
文章摘要
ST_n_content
文章内容
ST_n_date
文章发表日期
ST_n_re
文章回复
ST_c_id
文章类型编号
9
文章类型名称
10
ST_n_iscmd
int
文章回复数
该表为文章信息表,包含了文章的相关属性,用来记录文章信息。
该模块可以帮助用户了解文章的基本信息。
比如:
文章人气高可能是内容很有意义,方便用户去阅读那些比较好的文章。
表格3-6ST_replay(评论信息表)
ST_r_id
评论号
ST_r_nick
呢称
ST_r_title
评论标题
ST_r_content
250
评论内容
ST_r_date
评论发表时间
Int
评论文章编号
3.2.界面设计及主要代码
此表为评论信息表,用来记录评论信息。
评论也是用户的一种交流方式。
该模块加强了用户之间的沟通[5]。
3.2.1.文章信息管理界面
文章管理页图如下所示:
图表3-1文章管理
编写后台事件处理页面ArticleManage.aspx.cs,实现数据的查询、修改、删除和添加文章的功能。
在页面加载事件中调用ST_Article_Bind方法,从数据库中获取文章信息并绑定GridView控件。
单击ArticleManage.aspx页面中的“查找”、按钮,触发Click事件。
具体代码如下:
publicpartialclassModule_Blog_ArticleManage:
System.Web.UI.Page
{
SqlDatada=newSqlData();
SqlConnectionmycon;
privatestaticstringID;
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!
IsPostBack)
//调用自定义绑定方法绑定数据
ST_Article_Bind();
/*判断是否登录*/
ST_check_Login();
}
stringST_dns=ConfigurationSettings.AppSettings["
conStr"
];
mycon=newSqlConnection(ST_dns);
DataSetmydataset=newDataSet();
SqlDataAdaptermydataadapter1=newSqlDataAdapter("
select*fromtb_BlogwhereUserName='
"
+Session["
UserName"
]+"
'
mycon);
mydataadapter1.Fill(mydataset,"
tb_Blog"
);
DataRowViewrowview1=mydataset.Tables["
].DefaultView[0];
ID=rowview1["
BlogID"
].ToString();
publicvoidST_check_Login()
if((Session["
]==null))
Response.Write("
<
script>
alert('
对不起!
您还不是管理员,请先注册再登录!
location='
../../BlogIndex.aspx'
/script>
Response.End();
publicvoidST_Article_Bind()
stringsqlstr="
select*fromST_newswhereBlogID='
+ID+"
;
//调用公共类中的ExceDS方法,返回一个DataSet类型的数据集,并作为GridView控件的数据源
GridView1.DataSource=da.ExceDS(sqlstr);
GridView1.DataKeyNames=newstring[]{"
ST_n_id"
};
GridView1.DataBind();
protectedvoidGridView1_RowDeleting(objectsender,GridViewDeleteEventArgse)
booldelete=da.ExceSQL("
deletefromST_newswhereST_n_id='
+GridView1.DataKeys[e.RowIndex].Value+"
if(delete)
scriptlanguage=javascript>
删除成功!
ArticleManage.aspx'
else
删除失败!
protectedvoidbtnSearch_Click(objectsender,EventArgse)
stringsearch=this.ddlSearch.SelectedValue;
switch(search)
case"
文章ID"
:
da.BindData(this.GridView1,"
Select*FromST_newsWhereST_n_idLike'
%"
+this.txtKey.Text+"
%'
andBlogID='
break;
文章主题"
Select*FromST_newsWhereST_n_titleLike'
default:
scriptlanuage=javascript>
查询失败!
javascript:
history.go(-1)'
protectedvoidGridView1_PageIndexChanging(objectsender,GridViewPageEventArgse)
GridView1.PageIndex=e.NewPageIndex;
protectedvoidGridView1_RowDataBound(objectsender,GridViewRowEventArgse)
if(e.Row.RowType==DataControlRowType.DataRow)
if((e.Row.Cells[1].Text).Length>
5)
e.Row.Cells[1].Text=(e.Row.Cells[1].Text).Substring(0,5)+"
…"
((LinkButton)e.Row.Cells[5].Controls[0]).Attributes.Add("
onclick"
"
returnconfirm('
确定要删除吗?
)"
protectedvoidCheckBox2_CheckedChanged(objectsender,EventArgse)
for(inti=0;
i<
=GridView1.Rows.Count-1;
i++)
CheckBoxcbox=(CheckBox)GridView1.Rows[i].FindControl("
CheckBox1"
if(CheckBox2.Checked==true)
cbox.Checked=true;
cbox.Checked=false;
}
protectedvoidButton2_Click(objectsender,EventArgse)
//mycon.Open();
for(inti=0;
i<
=GridView1.Rows.Count-1;
i++)
CheckBoxcbox=(CheckBox)GridView1.Rows[i].FindControl("
if(cbox.Checked==true)
+GridView1.DataKeys[i].Value+"
da.ExceSQL(sqlstr);
批量删除成功!
protectedvoidButton1_Click(objectsender,EventArgse)
CheckBox2.Checked=false;
cbox.Checked=false;
3.2.2.博客文章信息修改
当单机GridView控件中的“修改”按钮时,将会链接到ViewContent.aspx页面,如下图所示:
图表3-2博客文章信息修改图
publicpartialclassModule_Blog_ReplayContent:
//if(Session["
]==null)
//{
//Response.Redirect("
~/BlogIndex.aspx"
//}
try
stringstr;
stringstr2=Page.Request["
id"
//此处用来实现将数据绑定到前台
SqlConnectionmycon=newSqlConnection(ConfigurationManager.AppSettings["
]);
mycon.Open();
SqlDataAdaptermyada=newSqlDataAdapter("
select*fromST_newswhereST_n_id='
+str2+"
DataSetds=newDataSet();
myada.Fill(ds,"
ST_news"
//创建DataRowView对象的一个实例
DataRowViewrowview=ds.Tables["
//将文章主题读取到labSubject文本框中
this.labSubject.Text=rowview["
ST_n_title"
//将文章内容读取到txtContent文本框中
this.txtContent.Text=rowview["
ST_n_content"
mycon.Close();
catch(Exceptionex)
Response.Write(ex.Message);
protectedvoidbtnUpdate_Click(objectsender,EventArgse)
stringid