淮海工学院计算机工程学院实验报告书课程名:《软件开发工具》题目:个人博客系统个人博客系统的设计与实现班级:学号:姓名:一、课题的研究背景与意义越来越多的网络用户希望能够在网络平台上更多地展现自己的个性,更方便地与人互动交流,在传统的WEB1.0时代,无论是论坛、社区还是个人网站,都试图在这些方面进行努力,随着WEB2.0时代的到来,一个新的概念出现了----博客。
随着计算机网络的飞速发展,博客已经成为写网络日志必不可少的一种工具,也是一种简单有效的提供网络用户之间进行在线交流的网络平台,通过其可以结交更多的朋友,表达更多的想法,它随时可以发布日志,方便快捷。
个人博客的发展,也已经成为广告商业务拓展的重要领域。
本实验研究了一种基于数据关联规则的个人博客网站。
其开发主要包括后台数据库的建立、后台管理以及前台页面的Web设计。
系统使用Microsoft公司以C#为核心语言的开发工具,再结合SQL Server 2005建立数据连接关系。
利用其提供的各种组件,在短时间内建立数据库,对数据库进行分析与建立页面,不断改进,直到功能基本实现的可行系统。
本文的研究在一定程度上借鉴了互联网上博客的发展经验成果,系统的最终目的是通过为博客提供优质的互动交流平台,提高网站的知名度和访问量,从而获得为企业提供更多的产品介绍及发展的机会,提升自己的网络价值。
本实验报告主要介绍了本课题的开发背景、完成的功能和开发过程,并着重说明了开发设计的思想、技术难点和解决方案。
系统前台包含的功能:日志、相册、博客个人资料、留言板的浏览和发表留言,博主主要是负责后台的管理:日志、相册、留言板和个人资料等的管理。
本实验是个人博客系统的设计与开发,意在构建一个B/S模式的个人博客系统,最终形成一个以网络信息交流为中心,包括博主和游客两种角色的信息系统。
管理与浏览者主要功能介绍如下:●游客1)日志浏览:可查看所有博客的日志。
2)发表评论:可对所有的博客日志发表评论。
●管理功能模块1) 发表日志:博主写日志,按类别区分。
2) 日志搜索:根据日志类别进行查询,此处是为了方便博主管理发布的日志,同时方便游客的浏览。
当管理员要修改某日志时,可选择所属分类查询出来,而无需逐页查找。
3) 日志修改,删除:博主可以编辑和删除日志。
4)留言管理:博主根据自己的喜好,可以删除一些不良的留言。
二、需求分析游客流程图:博主流程图UML图:浏览个人档案浏览修改个人档案三、系统设计1)明确系统里的实体2)列出实体的属性3)用PD画出表及其属性4)画出ER图E-R图关系模型(1) 个人博客系统的关系模式如下:博客信息(编号, 用户名,密码,性别,真实姓名,生日,地址,邮编,邮件,固定电话,手机,QQ,MSN,注册时间)日志(编号,发布人,标题,内容,发表时间,评论,博客编号)留言(编号,留言内容,留言时间)日志类别(编号,类别名称,博客编号)评论(编号,评论人,标题,内容,日期,博客编号)(2) 个人博客系统的逻辑结构设计表图表1:博客表(tb_Blog)图表2:日志表(ST_message)图表3:留言表(ST_message)图表4:文章类别表(ST_class)四、界面设计1)明确系统里的网页2)列出前台页面和后台页面3)画出关系图前台页面Default.aspx 博客主页ViewContent.aspx 浏览文章页面Register.aspx 注册资料编辑页面RegPro.aspx 用户须知页面后台页面BlogIndex.aspx 个人博客主页Acticlemanage.aspx 文章信息管理页面AddActicle.aspx 添加文章页面EditContent.aspx 修改文章页面ReplyManage.aspx 留言管理页面BlogInfo.aspx 详细资料编辑页面五、界面设计(系统设计)软件的界面如同人的脸一样,软件界面的好坏决定了用户对软件的第一印象。
设计好的界面能够引导用户自己完成相应的操作,起到引导作用。
设计合理的界面能给用户带来轻松愉悦的感受。
一些专家指出:对于用户,人机界面就是系统本身。
这充分说明了软件界面设计的重要性。
请完成各自的系统用户界面的设计。
(1)母版页1(2)首页的效果:(3)点击查看文章出现的界面:(4)注册见面效果图(5)添加新日志效果图:六、公共模块设计CommonClass.csusing System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient;/// <summary>/// CommonClass 的摘要说明/// </summary>public class CommonClass{public CommonClass(){//// TODO: 在此处添加构造函数逻辑//}/// <summary>/// 说明:MessageBox用来在客户端弹出对话框,关闭对话框返回指定页。
/// 参数:TxtMessage 对话框中显示的内容。
/// 参数:Url 对话框关闭后,跳转的页/// </summary>public string MessageBox(string TxtMessage,string Url){string str;str = "<script language=javascript>alert('" + TxtMessage + "');location='" + Url + "';</script>";return str;}/// <summary>/// 说明:MessageBox用来在客户端弹出对话框。
/// 参数:TxtMessage 对话框中显示的内容。
/// </summary>public string MessageBox(string TxtMessage){string str;str = "<script language=javascript>alert('" + TxtMessage + "')</script>";return str;}/// <summary>/// 说明:MessageBoxPage用来在客户端弹出对话框,关闭对话框返回原页。
/// 参数:TxtMessage 对话框中显示的内容。
/// </summary>public string MessageBoxPage(string TxtMessage){string str;str = "<script language=javascript>alert('" + TxtMessage + "');location='javascript:history.go(-1)';</script>";return str;}/// <summary>/// 实现随机验证码/// </summary>/// <param name="n">显示验证码的个数</param>/// <returns>返回生成的随机数</returns>public string RandomNum(int n) //{//定义一个包括数字、大写英文字母和小写英文字母的字符串string strchar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c ,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";//将strchar字符串转化为数组//String.Split 方法返回包含此实例中的子字符串(由指定Char 数组的元素分隔)的String 数组。
string[] VcArray = strchar.Split(',');string VNum = "";//记录上次随机数值,尽量避免产生几个一样的随机数int temp = -1;//采用一个简单的算法以保证生成随机数的不同Random rand = new Random();for (int i = 1; i < n + 1; i++){if (temp != -1){//unchecked 关键字用于取消整型算术运算和转换的溢出检查。
//DateTime.Ticks 属性获取表示此实例的日期和时间的刻度数。
rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks));}//Random.Next 方法返回一个小于所指定最大值的非负随机数。
int t = rand.Next(61);if (temp != -1 && temp == t){return RandomNum(n);}temp = t;VNum += VcArray[t];}return VNum;//返回生成的随机数}}DBClass.csusing System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient;/// <summary>/// DBClass 的摘要说明/// </summary>public class DBClass{SqlConnection myConn; //用于连接数据库SqlCommand myCmd; //用于执行Sql语句DataSet ds; //数据集SqlDataAdapter adapt; //填充数据集public DBClass(){//// TODO: 在此处添加构造函数逻辑//}/// <summary>/// 连接数据库/// </summary>/// <returns>返回SqlConnection对象</returns>public SqlConnection GetConnection(){string myStr = ConfigurationManager.AppSettings["ConnectionString"].ToString();myConn = new SqlConnection(myStr);return myConn;}/// <summary>/// 更新数据库/// </summary>/// <param name="strSql">sqlStr执行的SQL语句</param>public void ExecNonQuery(string strSql){try{myConn = GetConnection();//与数据库连接myCmd = new SqlCommand();//初始化SqlCommand类对象myCmd.Connection = myConn;mandText = strSql;if (myCmd.Connection.State != ConnectionState.Open){myCmd.Connection.Open();//打开与数据库的连接}myCmd.ExecuteNonQuery();//执行Sql操作,并返回受影响的行数}catch (Exception ex){throw new Exception(ex.Message, ex);}finally{if (myCmd.Connection.State == ConnectionState.Open){//断开连接,释放资源myCmd.Connection.Close();myConn.Dispose();myCmd.Dispose();}}}/// <summary>/// 返回一个值/// </summary>/// <param name="strSql">sqlStr执行的SQL语句</param>/// <returns>返回获取的值</returns>public string ExecScalar(string strSql){try{myConn = GetConnection();//与数据库连接myCmd = new SqlCommand();//初始化SqlCommand类对象myCmd.Connection = myConn;mandText = strSql;if (myCmd.Connection.State != ConnectionState.Open){myCmd.Connection.Open();//打开与数据库的连接}//使用SqlCommand对象的ExecuteScalar方法返回第一行第一列的值strSql=Convert.ToString(myCmd.ExecuteScalar());return strSql ;}catch (Exception ex){throw new Exception(ex.Message, ex);}finally{if (myCmd.Connection.State == ConnectionState.Open){//断开连接,释放资源myConn.Dispose();myCmd.Connection.Close();myCmd.Dispose();}}}/// <summary>/// 说明:GetDataSet数据集,返回数据源的数据表/// 返回值:数据源的数据表/// 参数:sqlStr执行的SQL语句,TableName 数据表名称/// </summary>public DataTable GetDataSet(string strSql, string TableName){ds= new DataSet();try{myConn = GetConnection();//与数据库连接adapt = new SqlDataAdapter(strSql, myConn); //实例化SqlDataAdapter类对象adapt.Fill(ds,TableName);//填充数据集return ds.Tables[TableName];//返回数据集DataSet的表的集合}catch (Exception ex){throw new Exception(ex.Message, ex);}finally{//断开连接,释放资源myConn.Close();adapt.Dispose();ds.Dispose();myConn.Dispose();}}}七、用户手册系统功能简介个人博客系统主要的功能有:日志的管理,留言的管理,个人资料的管理。