个人博客管理系统WEB课程设计.doc_第1页
个人博客管理系统WEB课程设计.doc_第2页
个人博客管理系统WEB课程设计.doc_第3页
个人博客管理系统WEB课程设计.doc_第4页
个人博客管理系统WEB课程设计.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Web程序设计课程设计目录1.系统应用背景12.系统分析22.1.系统功能分析22.2.系统模块分析32.2.1.博客注册登录管理模块32.2.2.博客及文章检索查询模块32.2.3.博客页面显示模块42.3.博客个人管理维护模块43.系统设计53.1.数据库设计53.1.1.数据库需求分析53.1.2.数据表设计53.2.界面设计及主要代码73.2.1.文章信息管理界面83.2.2.博客文章信息修改133.2.3.博客文章添加163.2.4.文章类别管理页面193.2.5.管理员首页页面264.总结304.1.不足之处与改进304.2.心得体会305.参考文献311. 系统应用背景随着计算机技术的发展和普及,blog得到了极大的发展。Blog,是Web log的简称。blog是一种新的生活方式、新的工作方式、新的学习方式和交流方式。它是继E-mail、BBS、ICQ、之后出现的第4种网络交流方式。Blog主要应用于3个方面:一是新的人际交流方式;二是以个人为中心的信息摘选和知识管理;三是以个人为中心的传播出版。blog作为个人的一种学习工具,简单易用,吸引人的兴趣。Blog在教育方面得到了很大的发展,它将互联网从过去的通讯功能,资料功能、交流功能等进一步强化,使其更加个性化、开放化、实时化、全球化,把信息共享发展到资源共享、思想共享、生命历程共享。Blog已经成为一种继课件、积件、资源库、教育主题网站等信息化教学模式之后,新的网络应用模式。它是应时代的需求而兴起的,也是应时代需求不断进步的1。博客的精神是:自由表达,开放宽容,个性张扬,专业精神。在没有自己的博客之前,人们会经常进出于论坛发表贴子或者通过即时通信软件聊天,来表达自已的想法,可是这些都是零散的和杂乱的。博客的出现,让人们可以不断的把自己以前的和每天激发的一些想法或者感受整理放在自己的博客上,每次在写文章的时候,可能又会产生新的想法。虽然一些想法一些思考只是皮毛,没有什么深度,但是当下笔去写的时候每次都会对某个小小的问题有了更多的一点点思考,再写博客的时候就感觉到了一种满足感,一种想法得以释放思考得以延伸的满足感。生活中每天的一个小小的事情都会引起人们的思考,甚至是和朋友的聊天中一个小小的火花迸发。督促自己努力、把一时的想法变成观点,争取在生命中的每天里留下点什么,这也是人们写博客的目的之一。这样就能督促自己每一天不要浑浑噩噩,时光流逝无痕无声无息,写博客也是在自己的每一天上留下了一道浅浅的思考和划痕。不仅如此,通过写博客、记录自己的想法可以帮助实现如下这些目的:a)记录生活,在自己的每一天上留下思考的划痕。 b)整理思路,固化知识,获得更多更好的想法。 c)分享,将自己的想法、经验与人分享。d)交流、提高,通过交流产生更多的思维火花,相互提高。 e)交友,互相鼓励,一路同行。 如果说博客网站是一个舞台,那么所有的博客都是其中的舞者,把自己有价值的真实的一面展示在网络世界中,相互交流沟通; 如果博客仅仅为了写日志,那么博客是一面镜子,镜子中展现的是真实的自己;如果博客是一个自由媒体,可以把自身感觉有价值的信息通过博客这个工具发布,与网友共享2。2. 系统分析2.1. 系统功能分析系统功能模块包括两大块:管理界面功能模块和普通用户界面功能模块。其具体功能如下所示:*管理员功能:分类管理,文章管理,评论管理,链接管理,留言管理。*普通用户功能:阅读文章,留言,评论和在线聊天。*分类管理:文章类型的添加,修改,删除。*文章管理:文章的修改,删除。*评论管理:评论的删除。*链接管理:链接的添加和删除。*留言管理:留言的删除和回复。*管理员用户功能图如图表 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-1 ST_admin(用户表)序号列名数据类型长度字段说明1ST_admin_userNvarchar50管理员ID2ST_admin_pswNvarchar50管理员密码该表为管理员登录的信息表,本系统没有包含管理员用户的注册模块,管理员帐号直接在数据库中设计。普通用户匿名登录主页。表格 3-2 ST_class(类型信息表)序号列名数据类型长度字段说明1ST_c_id Bigint8文章类型号2ST_c_nameNvarchar50文章类型名该表用来记录文章类型的相关信息,系统文章分了类别,使管理文章,查看文章都变的非常的方便。表格 3-3 ST_link(链接信息表)序号列名数据类型长度字段说明1ST_l_idBigint8链接号2ST_l_nameNvarchar50链接名3ST_l_urlNvarchar50链接地址该表记录了链接的相关信息,方便用户快速的链接到想浏览的网站,提高了用户的操作效率。表格 3-4 ST_message(留言信息表)序号列名数据类型长度字段说明1ST_idBigint8留言号2ST_nicknameNvarchar50网友呢称3ST_titleNvarchar50留言标题4ST_homepageNvarchar50个人主页5ST_contentNtext16留言内容6ST_mdateDatetime8留言时间7ST_hf Ntext16留言回复该表包含了留言的相关信息,留言模块方便普通用户和版主之间的交流,为他们提供了一个专门的途径。表格 3-5 ST_news(文章信息表)序号列名数据类型长度字段说明1ST_n_idBigint 4文章号2ST_n_authorNvarchar50文章作者3ST_n_titleNvarchar200文章标题4ST_n_keyNvarchar200文章摘要5ST_n_contentNtext16文章内容6ST_n_dateDatetime8文章发表日期7ST_n_reBigint8文章回复8ST_c_idBigint8文章类型编号9ST_c_nameNvarchar50文章类型名称10ST_n_iscmdint4文章回复数该表为文章信息表,包含了文章的相关属性,用来记录文章信息。该模块可以帮助用户了解文章的基本信息。比如:文章人气高可能是内容很有意义,方便用户去阅读那些比较好的文章。表格 3-6 ST_replay(评论信息表)序号列名数据类型长度字段说明1ST_r_idBigint8评论号2ST_r_nickNvarchar50呢称3ST_r_titleNvarchar50评论标题4ST_r_contentNvarchar250评论内容5ST_r_dateDatetime8评论发表时间6ST_n_idInt4评论文章编号3.2. 界面设计及主要代码此表为评论信息表,用来记录评论信息。评论也是用户的一种交流方式。该模块加强了用户之间的沟通5。3.2.1. 文章信息管理界面文章管理页图如下所示:图表 3-1 文章管理编写后台事件处理页面ArticleManage.aspx.cs,实现数据的查询、修改、删除和添加文章的功能。在页面加载事件中调用ST_Article_Bind方法,从数据库中获取文章信息并绑定GridView控件。单击ArticleManage.aspx页面中的“查找”、按钮,触发Click事件。具体代码如下:public partial class Module_Blog_ArticleManage : System.Web.UI.Page SqlData da = new SqlData(); SqlConnection mycon; private static string ID; protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) /调用自定义绑定方法绑定数据 ST_Article_Bind(); /*判断是否登录*/ ST_check_Login(); string ST_dns = ConfigurationSettings.AppSettingsconStr; mycon = new SqlConnection(ST_dns); DataSet mydataset = new DataSet(); SqlDataAdapter mydataadapter1 = new SqlDataAdapter(select * from tb_Blog where UserName= + SessionUserName + , mycon); mydataadapter1.Fill(mydataset, tb_Blog); DataRowView rowview1 = mydataset.Tablestb_Blog.DefaultView0; ID = rowview1BlogID.ToString(); public void ST_check_Login() if (SessionUserName = null) Response.Write(alert(对不起!您还不是管理员,请先注册再登录!);location=././BlogIndex.aspx); Response.End(); public void ST_Article_Bind() string sqlstr = select * from ST_news where BlogID= + ID + ; /调用公共类中的ExceDS方法,返回一个DataSet类型的数据集,并作为GridView控件的数据源 GridView1.DataSource = da.ExceDS(sqlstr); GridView1.DataKeyNames = new string ST_n_id ; GridView1.DataBind(); protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) SqlData da = new SqlData(); bool delete = da.ExceSQL(delete from ST_news where ST_n_id= + GridView1.DataKeyse.RowIndex.Value + ); if (delete) Response.Write(alert(删除成功!);location=ArticleManage.aspx); else Response.Write(alert(删除失败!);location=ArticleManage.aspx); protected void btnSearch_Click(object sender, EventArgs e) SqlData da = new SqlData(); string search = this.ddlSearch.SelectedValue; switch (search) case 文章ID: da.BindData(this.GridView1, Select * From ST_news Where ST_n_id Like % + this.txtKey.Text + % and BlogID= + ID + ); break; case 文章主题: da.BindData(this.GridView1, Select * From ST_news Where ST_n_title Like % + this.txtKey.Text + % and BlogID= + ID + ); break; default: Response.Write(alert(查询失败!);location=javascript:history.go(-1); break; protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) GridView1.PageIndex = e.NewPageIndex; ST_Article_Bind(); protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) if (e.Row.RowType = DataControlRowType.DataRow) if (e.Row.Cells1.Text).Length 5) e.Row.Cells1.Text = (e.Row.Cells1.Text).Substring(0, 5) + ; (LinkButton)e.Row.Cells5.Controls0).Attributes.Add(onclick, return confirm(确定要删除吗?); protected void CheckBox2_CheckedChanged(object sender, EventArgs e) for(int i=0; i=GridView1.Rows.Count-1;i+) CheckBox cbox=(CheckBox)GridView1.Rowsi.FindControl(CheckBox1); if(CheckBox2.Checked=true) cbox.Checked=true; else cbox.Checked=false; protected void Button2_Click(object sender, EventArgs e) /mycon.Open(); for (int i = 0; i = GridView1.Rows.Count - 1; i+) CheckBox cbox = (CheckBox)GridView1.Rowsi.FindControl(CheckBox1); if (cbox.Checked = true) string sqlstr = delete from ST_news where ST_n_id= + GridView1.DataKeysi.Value + ; da.ExceSQL(sqlstr); Response.Write(alert(批量删除成功!);location=ArticleManage.aspx); protected void Button1_Click(object sender, EventArgs e) CheckBox2.Checked = false; for (int i = 0; i = GridView1.Rows.Count - 1; i+) CheckBox cbox = (CheckBox)GridView1.Rowsi.FindControl(CheckBox1); cbox.Checked = false; 3.2.2. 博客文章信息修改当单机GridView控件中的“修改”按钮时,将会链接到ViewContent.aspx页面,如下图所示:图表 3-2 博客文章信息修改图具体代码如下:public partial class Module_Blog_ReplayContent : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) /if (SessionUserName = null) / / Response.Redirect(/BlogIndex.aspx); / if (!IsPostBack) try string str; string str2 = Page.Requestid.ToString(); /此处用来实现将数据绑定到前台 SqlConnection mycon = new SqlConnection(ConfigurationManager.AppSettingsconStr); mycon.Open(); SqlDataAdapter myada = new SqlDataAdapter(select * from ST_news where ST_n_id= + str2 + , mycon); DataSet ds = new DataSet(); myada.Fill(ds, ST_news); /创建DataRowView对象的一个实例 DataRowView rowview = ds.TablesST_news.DefaultView0; /将文章主题读取到labSubject文本框中 this.labSubject.Text = rowviewST_n_title.ToString(); /将文章内容读取到txtContent文本框中 this.txtContent.Text = rowviewST_n_content.ToString(); mycon.Close(); catch (Exception ex) Response.Write(ex.Message); protected void btnUpdate_Click(object sender, EventArgs e) string id = Requestid.ToString(); string Com = update ST_news set ST_n_content= + this.txtContent.Text + where ST_n_id= + id + ; /创建公共类SqlData的一个新的实例对象 SqlData da = new SqlData(); bool update = da.ExceSQL(Com); if (update) Response.Write(alert(修改成功!);location=ArticleManage.aspx); else Response.Write(alert(修改失败!);); protected void btnBack_Click(object sender, EventArgs e) Response.Redirect(ArticleManage.aspx); 3.2.3. 博客文章添加博客文章添加页面如下图所示:当单机ArticleManage.aspx页面中的“添加新文章”超链接时,将会链接到Blog文件夹下的AddArt.aspx页面;在页面加载事件中将博客文章类型绑定到下拉列表中;单击“添加”按钮,触发其Click事件,实现博客新文章的添加操作。具体代码如下:public partial class Module_Blog_AddArt : System.Web.UI.Page SqlData mydata = new SqlData(); SqlConnection mycon; /sqlconnection是一个对象 int cbox; string ID; /定义字符串ID protected void Page_Load(object sender, EventArgs e) if (SessionUserName = null) /如果(会话【用户名】)为空 Response.Redirect(/BlogIndex.aspx); /页面重定向 SqlConnection mycon = new SqlConnection(ConfigurationManager.AppSettingsconStr); mycon.Open();/连接数据库mycon。Open() DataSet mydataset = new DataSet(); SqlDataAdapter mydataadapter = new SqlDataAdapter(select * from tb_Blog where UserName= + SessionUserName + , mycon);/SqlDataadapter是一个对象。SqlDataAdapter是 DataSet和 SQL Server之间的桥接器,用于检索和保存数据。 mydataadapter.Fill(mydataset, tb_Blog);/填充数据集,使用语句填mydataset,利用查询命令赋值。 DataRowView rowview = mydataset.Tablestb_Blog./DefaultView0;取出来mydataset中tb_Blog表的默认视图,其实就是datatable,然后取第0行数据,类型是datarowview。 ID = rowviewBlogID.ToString();/通过视图通过rowview也就是一行数据,取blogID列的值。 /this.Label1.Text = SessionUserName.ToString(); /SqlConnection mycon = new SqlConnection(ConfigurationManager.AppSettingsconStr); /mycon.Open(); string sqlstr = select * from ST_Class where BlogID=+ID+;/字符串sqlstr是ST-CLASS表中的的博客ID SqlCommand mycom = new SqlCommand(sqlstr, mycon);/创建sqlcommand对象 SqlDataReader dr = mycom.ExecuteReader();/mycom是sqlcommand的一个实例/判断是否有数据 while (dr.Read() DropDownList1.Items.Add(new ListItem(drST_c_name.ToString(),drST_c_id.ToString();/如果dropdownlist1已经绑定了数据,需要将“请选择部门”加到第一项。 protected void btnAdd_Click(object sender, EventArgs e) /string ID; /SqlConnection mycon = new SqlConnection(ConfigurationManager.AppSettingsconStr); /mycon.Open(); /DataSet mydataset = new DataSet(); /SqlDataAdapter mydataadapter = new SqlDataAdapter(select * from tb_Blog where UserName= + SessionUserName + , mycon); /mydataadapter.Fill(mydataset, tb_Blog); /DataRowView rowview = mydataset.Tablestb_Blog.DefaultView0; /ID = rowviewBlogID.ToString(); /创建插入新文章信息的Sql语句 string com = Insert into ST_news(ST_n_title,ST_n_author,ST_n_key,ST_n_content,ST_n_iscmd,ST_c_id,BlogID) values( + this.txtSubject.Text + , + this.TextBox2.Text + , + this.TextBox1.Text + , + this.txtContent.Text + , + cbox + , + this.DropDownList1.SelectedValue + , + ID + ); /调用公共类中的ExceSQL方法,返回一个布尔值 bool add =mydata.ExceSQL(com);if (add)Response.Write(alert(文章添加成功!);location=ArticleManage.aspx);elseResponse.Write(alert(文章添加失败!);location=javascript:history.go(-1);protected void btnCancle_Click(object sender, EventArgs e)Response.Redirect(ArticleManage.aspx); protected void Button1_Click(object sender, EventArgs e) this.txtSubject.Text = ; this.TextBox2.Text = ; this.TextBox1.Text = ; this.txtContent.Text = ; protected void CheckBox1_CheckedChanged(object sender, EventArgs e) if (CheckBox1.Checked = true) cbox = 1; else cbox = 0; 3.2.4. 文章类别管理页面博客文章类别管理页面如下图所示:图表 3-3 博客文章类别管理页面图在文章类别管理页面中,主要是对博客文章进行管理,以方便访客分类阅读发表的博客文章。具体代码如下:public partial class Module_Admin_BlogType : System.Web.UI.Page SqlData My_sqldata = new SqlData(); SqlConnection ST_myConn; private static string ID; protected void Page_Load(object sender, EventArgs e) /建立数据库连接 string ST_dns = ConfigurationSettings.AppSettingsconStr; ST_myConn = new SqlConnection(ST_dns); if (!IsPostBack) /调用自定义方法ST_Type_List_Bind()进行数据绑定 ST_Type_List_Bind(); /*判断是否登录*/ ST_check_Login(); DataSet mydataset = new DataSet(); SqlDataAdapter mydataadapter = new SqlDataAdapter(select * from tb_Blog where UserName= + SessionUserName + , ST_myConn); mydataadapter.Fill(mydataset, tb_Blog); DataRowView rowview = mydataset.Tablestb_Blog.DefaultView0; ID = rowviewBlogID.ToString(); public void ST_check_Login() if (SessionUserName = null) Response.Write(alert(对不起!您还不是会员,请先注册再登录!);location=././BlogIndex.aspx); Response.End(); /加载文章类型的信息 public void ST_Type_List_Bind() string sqlstr = select * from ST_class where BlogID= + ID + ; /调用公共类中的ExceDS()方法,用来返回一个DataSet类型 My_sqldata.ExceDS(sqlstr); /获取数据表中的主键字段 ClassList.DataKeyNames = new string ST_c_id ; ClassList.DataSource = My_sqldata.ExceDS(sqlstr); ClassList.DataBind(); protected void btmAdd_Click(object sender, EventArgs e) ST_myConn.Open(); if (this.typename.Text != ) string sqlstr1 = select count(*) from ST_class where ST_c_na

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论