博客网站设计报告
博客系统设计报告书
一、设计简述
越来越多的网络用户希望能够在网络平台上更多地展现自己的个性,更方便地与人互动交流,在传统的WEB1.0时代,无论是论坛、社区还是个人网站,都试图在这些方面进行努力,随着WEB2.0时代的到来,一个新的概念出现了----博客。随着计算机网络的飞速发展,博客已经成为写网络日志必不可少的一种工具,也是一种简单有效的提供网络用户之间进行在线交流的网络平台,通过其可以结交更多的朋友,表达更多的想法,它随时可以发布日志,方便快捷。个人博客的发展,也已经成为广告商业务拓展的重要领域。
本实验研究了一种基于数据关联规则的个人博客网站。其开发主要包括后台数据库的建立、后台管理以及前台页面的Web设计。系统使用Microsoft公司以C#为核心语言的https://www.360docs.net/doc/c18648002.html, 开发工具,再结合SQL Server 2005建立数据连接关系。利用其提供的各种组件,在短时间内建立数据库,对数据库进行分析与建立https://www.360docs.net/doc/c18648002.html,页面,不断改进,直到功能基本实现的可行系统。
本文的研究在一定程度上借鉴了互联网上博客的发展经验成果,系统的最终目的是通过为博客提供优质的互动交流平台,提高网站的知名度和访问量,从而获得为企业提供更多的产品介绍及发展的机会,提升自己的网络价值。
本实验报告主要介绍了本课题的开发背景、完成的功能和开发过程,并着重说明了开发设计的思想、技术难点和解决方案。
二、设计目的
在https://www.360docs.net/doc/c18648002.html,的课程设计中将通过完成一个博客系统的设计来较全面的复习这一学期所学的内容,例如:利用DIV+CSS进行网站的修饰、排版及布局;根据本学期所学的网站应用系统的开发架构、代码组织及相应的功能模块案例,来实现一个带有博客系统的综合性小型网站。
三、设计步骤
1)网站结构布局的分析设计,画出关键页面的总体结构图
2)功能需求分析、系统总体结构设计,功能模块的划分、画出流程图。
3)开发平台的安装调试,Web服务器的配置。
4)数据库的设计
5)利用CSS+DIV进行各个页面的排版、布局,并进行各个功能模块的设计及调试。
6)综合调试及发布。
四、设计要求
(4.1)设计目标要求
本课程设计要实现一个带有博客系统的小型网站。网站的各个页面尽量使用CSS+DIV进行排版,博客系统要求有如下的功能模块:
1)注册模块
a)要求实现:利用配置文件连接数据库、生成验证码,进行密码加密,限制密码大小、
验证账号重复、使用存储过程进行数据库操作。
2)登录模块
a)用户身份的识别、用户输入的验证。
3)博客系统主模块
a)注册用户可以发表日志、管理日志及管理日志目录。
b)日志浏览者可以发表评论。
c)系统提供日志列表功能。
d)管理员可以管理普通用户及其日志。
4)日志搜索功能模块
a)能够在博客系统中进行各种复杂的搜索功能,如模糊搜索、与条件搜索、或条件搜
索等。
(4.2)系统的性能要求
网站界面美观,布局合理,导航方便,运行时能满足使用需求。
五、需求分析
(5.1)系统需求分析
本系统的具体要求为:
1)浏览日志用户可以浏览作者的日志,以分享作者的心情或知识;
2)发表日志作者可以通过该功能发表自己的日志或知识;
3)评论日志用户对作者的日志发表自己的看法;
4)日志管理供作者管理文章
(5.2)功能需求分析
1)日志管理模块:该模块可进行日志文章管理、日志目录管理等
2)写日志模块:通过该模块添加新的日志
3)评论模块:用户可以通过该模块发表对作者日志的看法
4)日志列表模块:日志列表模块根据日志所在的目录显示给用户,方便用户阅览。
六、系统结构的设计
(6.1)系统功能模块
我的博客系统
浏览日志文章添
加
评
论
日
志
管
理
日
志
列
表
目
录
管
理
评
论
管
理
文
章
管
理
(6.2)数据库结构的设计
博客系统的数据库功能主要体现在对各种信息的提供、保存、更新和查询操作上,包括文章信息、文章目录信息和评论信息,各个部分的数据内容又有内在联系。针对该系统的数据特点,可以总结如下的需求:
1)文章信息记录作者发表的日志信息。
2)文章目录信息记录了文章所在的目录分类。
3)评论信息对应某个文章浏览者发表的评论。
经过上述需求总结,得出如下数据项和数据结构:
1)文章信息,包括数据项有:文章编号、文章内容、标题等。
2)文章目录信息,包括数据项有:目录编号、目录名称、目录描述等。
3)评论信息,包括数据项有:评论编号、文章编号、评论内容等。
(6.3)数据库逻辑结构的设计
在博客系统中,首先要创建系统数据库,然后在数据库中创建需要的表和字段。数据库命名为BlogData,在这个数据库中管理系统中要建立4个表,分别是,用户信息表,文章信息表,文章目录信息表和评论信息表。
(1)用户信息表(Admins)记录了用户的账号和密码,如下图所示:
(2) 文章信息表(Articles)记录了文章的编号、目录编号、文章标题、简介和文章内
容等详细信息,如下图所示:
(3) 文章目录表(Tags)记录了文章的分类信息,如下图所示:
(4) 评论信息表(Comments)记录了评论的编号、文章编号、评论的内容和时间等,如
下图所示:
七、部分设计步骤以及代码的分析
(7.1)用户登录模块是有login文件实现的代码如下:
protected void btn_login_Click(object sender, EventArgs e)
{
string UserName = tbxaccount.Text.ToString();//获取用户输入信息
string Password = tbxpwd.Text.ToString();
//用户数据加密
if (Session["CheckCode"] == null)
{
lblMessage.Text = "系统错误,不能生成验证码";
lblMessage.Visible = true;
return;
}
if (tbxcheckcode.Text == "")
{
lblMessage.Text = "请输入验证码";
lblMessage.Visible = true;
return;
}
if(https://www.360docs.net/doc/c18648002.html,pare(Session["CheckCode"].ToString(), tbxcheckcode.Text, true) != 0) {
lblMessage.Text = "验证码错误,请输入正确的验证码。";
lblMessage.Visible = true;
return;
}
//读取数据库连接字符串
string settings =
Convert.ToString(ConfigurationManager.ConnectionStrings["SqlServices"]);
//创建数据库连接对象
SqlConnection myconn = new SqlConnection(settings);
//打开数据库连接
myconn.Open();
//读取用户信息
string mysql = "select * from Admins Where AdminName=" + "'" + UserName + "'" + "And Password=" + "'" + Password + "'";
//创建命令对象
SqlCommand mycmd = new SqlCommand(mysql, myconn);
//创建适配器并执行命令
SqlDataReader mydr = mycmd.ExecuteReader();
try
{if (mydr.Read())
{
Session["UserName"] = mydr["AdminName"].ToString();//把用户名写入session对象//页面定位
Response.Redirect("Default.aspx?action=0");
}
else
{
lblMessage.Visible = true; //显示错误信息
lblMessage.Text = "用户名或密码错误";
}
}
finally
{//关闭操作
mydr.Close();
myconn.Close();
}
}
protected void btn_clear_Click(object sender, EventArgs e)
{ tbxaccount.Text = "";
tbxpwd.Text = "";
}
用户登录后就可以进行日志管理了,登录页面如下图所示:
(7.2)日志文章列表模块articlelist文件实现,从界面和代码中可以看出,数据绑定是由Bind_Data()函数实现的代码如下:
protected void Page_Load(object sender, EventArgs e)
{
Bind_Data();
}
void Bind_Data()
{
//读取数据库连接字符串
string settings =
Convert.ToString(ConfigurationManager.ConnectionStrings["SqlServices"]);
//创建数据库连接
SqlConnection myconn = new SqlConnection(settings);
//打开数据库连接
myconn.Open();
string strsql = "select * from articles";
//创建数据库命令
SqlCommand mycmd = new SqlCommand(strsql, myconn);
//执行数据操作命令
//SqlDataReader读取数据到记录集后,会自动关闭数据库的连接
SqlDataReader result =
mycmd.ExecuteReader(CommandBehavior.CloseConnection);
//绑定数据源
gv_article.DataSource = result;
//绑定数据
gv_article.DataBind();
}
protected void gv_article_RowDeleting(object sender, GridViewDeleteEventArgs e) {
//读取数据库连接字符串
string settings =
Convert.ToString(ConfigurationManager.ConnectionStrings["SqlServices"]);
//创建数据库连接
SqlConnection myconn = new SqlConnection(settings); //打开数据库连接
myconn.Open();
int id = (int)gv_article.DataKeys[e.RowIndex].Value;
string strsql="delete from articles Where ArticleID=" + id;
//创建数据库命令
SqlCommand mycmd = new SqlCommand(strsql, myconn);
//进行数据库操作
mycmd.ExecuteNonQuery();
//关闭数据库连接
myconn.Close();
Bind_Data();
}
(7.3)在博客首页模块中,文章目录列表实现了从数据库tags信息表中读取目录信息并绑定到一个DataList控件上用于向用户展示文章目录。该页面的界面布局如图所示:
该控件绑定了文章目录信息表中的Tag_Name信息,并通过Tag_ID信息链接到该目录下的文章列表页面,数据绑定实现代码如下:
protected void Bind_Tags()
{//读取数据库连接字符串
string settings =
Convert.ToString(ConfigurationManager.ConnectionStrings["SqlServices"]);
//创建数据库连接对象
SqlConnection myconn = new SqlConnection(settings);
myconn.Open();
string strsql = "select * from Tags";
SqlCommand mycmd = new SqlCommand(strsql, myconn);
//SqlDataReader读取数据到记录集后,会自动关闭数据库的连接
SqlDataReader result =
mycmd.ExecuteReader(CommandBehavior.CloseConnection);
dl_tags.DataSource = result;
dl_tags.DataBind();
}
八、总结
(8.1)不足
由于自己的分析设计和经验不足,该系统设计和实现过程中,还有许多没有完善的地方,比如页面结构,色彩搭配不和谐,还有部分代码不够完善。
开始编写时就遇到了登录界面与数据库连接的困难,借助平时实训的仔细分析和探讨完成了开始的登录界面.
在之后的过程中遇到了连接数据库失败等问题,在参考了相关的书籍和查阅了网上相关
资料而解决的
(8.2)感悟
通过本学期对ASP这门课程更深入的学习,让我对https://www.360docs.net/doc/c18648002.html,网络开发有了很深的了解,并在老师的指导下完成了基于https://www.360docs.net/doc/c18648002.html,个人博客系统的设计。经过一周的努力,博客系统终于按预期的结果顺利完成了。从系统最初的需求分析、设计,到最后实现的过程中,经过多次反复的修改,功能逐渐完善,已经基本达到了实用,方便,人性化等预期目标。在开发过程中因为对细节的不重视和忽略使得自己的程序功败垂成,经常因为一个问题,导致整个工作无从下手.所以要更注重细节,
课题完成到现在,从开始连项目流程都不怎么熟悉,到现在完成基本需求功能,遇到了不少问题。本次课程设计不但复习了一学期所学知识,而且还让我从中学到了很多新的内容。