




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
该论文是本团队帮同学做过的案例,需要源程序或者更多毕业设计联系799523222毕业设计(论文)个人博客系统的设计与实现 姓 名系 别、 专 业导 师 姓 名、职 称完 成 时 间目录一、开发背景3二、系统分析4(一)可行性分析4(二)需求分析4三、系统设计5(一)系统目标5(二)业务流程图6(三)系统功能结构7四、数据库设计7(一)数据库E-R图分析7(二)数据表结构8五、公共类的编写10六、详细设计14(一)界面的设计14七、测试17(一)测试目的17(二)测试方法18(三)测试用例18附录1 系统使用说明21附录2 程序主要源代码25附录3总结29一、开发背景博客的精神是:自由表达,开放宽容,个性张扬,专业精神。在没有自己的博客之前,人们会经常进出于论坛发表贴子或者通过即时通信软件聊天,来表达自已的想法,可是这些都是零散的和杂乱的。博客的出现,让人们可以不断的把自己以前的和每天激发的一些想法或者感受整理放在自己的博客上,每次在写文章的时候,可能又会产生新的想法。虽然一些想法一些思考只是皮毛,没有什么深度,但是当下笔去写的时候每次都会对某个小小的问题有了更多的一点点思考,再写博客的时候就感觉到了一种满足感,一种想法得以释放思考得以延伸的满足感。生活中每天的一个小小的事情都会引起人们的思考,甚至是和朋友的聊天中一个小小的火花迸发。督促自己努力、把一时的想法变成观点,争取在生命中的每天里留下点什么,这也是人们写博客的目的之一。这样就能督促自己每一天不要浑浑噩噩,时光流逝无痕无声无息,写博客也是在自己的每一天上留下了一道浅浅的思考和划痕。不仅如此,通过写博客、记录自己的想法可以帮助实现如下这些目的:a)记录生活,在自己的每一天上留下思考的划痕。 b)整理思路,固化知识,获得更多更好的想法。 c)分享,将自己的想法、经验与人分享。d)交流、提高,通过交流产生更多的思维火花,相互提高。 e)交友,互相鼓励,一路同行。 如果说博客网站是一个舞台,那么所有的博客都是其中的舞者,把自己有价值的真实的一面展示在网络世界中,相互交流沟通; 如果博客仅仅为了写日志,那么博客是一面镜子,镜子中展现的是真实的自己;如果博客是一个自由媒体,可以把自身感觉有价值的信息通过博客这个工具发布,与网友共享二、系统分析(一)可行性分析 可行性分析(Feasibility Analysis)也称为可行性研究,是在系统调查的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、社会的方面进行分析和研究,以避免投资失误,保证新系统的开发成功。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。为了确定开发具有可行性,对本系统主要进行了以下四个方面的分析。(1) 经济可行性。经济可行性主要是对项目的经济效益进行评价。本系统对系统开发者来说并不需要太高的成本支出,只是对系统的管理者付出管理报酬即可,而且开发周期不需要太长,节省了人力、物力、财力资源,所以本系统在经济上是可行的。(2) 技术上的可行性。技术上的可行性分析主要是分析技术条件能否顺利完成开发工作,硬、软件能否满足开发者的需要等。在软件方面,本系统采用的是ASP.NET进行开发,前台网页设计使用的是Dreamweaver MX,而数据库系统采用的是Microsoft SQL 2005。通过分析,在软、硬件方面现有工具与环境完全可以实现系统的开发,因此具有技术上的可行性。(3) 时机可行性。时机可行性是分析系统开发时机是否成熟。目前越来越多的应用程序都已经是转向基于Web的开发,并且Internet已经广泛使用,因此系统的设计具有时机可行性。(4) 管理上的可行性:主要是管理人员是否支持,现有的管理制度和方法是否科学,规章制度是否齐全,原始数据是否正确等。系统的开发主要就是为了方便校友信息的管理,补充现在传统管理方式的不足,因此具备了管理上的可行性。 综上所述,本系统开发目标已明确,在技术和经济等方面具备可行性,并且投入少、见效快,因此系统的开发是完全可行的。(二)需求分析在可行性分析阶段已经简要地分析和研究了本系统的基本需求,也论证了开发平台及软件的可行性,但为了明确系统设计的目标,了解用户的需求,现对用户需求作以调研,从而进一步明确了设计所实现子系统的功能。(I) 管理员登录在调研中了解到,用户想要使用系统,首先要有一个友好的用户注册界面,其次,用户需要经历登录验证过程,只有合法的拥有管理员身份的用户才可以使用系统中的管理功能,这样做可以防止非法用户登录并使用本系统,妨害数据安全。用户登录。通过系统登录验证,用户成功进入系统并开始使用其中功能。(II) 文章管理文章管理是用户所有文章的信息,用户可以进入此处进行相关文章的管理。这部分主要包括以下方面:(1) 文章信息显示。显示出所有文章的大概信息。(2) 发表新文章。可以发表新的文章,以供网友浏览。(3) 修改文章。可以修改已有的文章的内容。(4) 删除文章。允许用户对文章信息进行删除操作。(III) 系统信息管理系统开始运行之后,随着时间的变化会有想要更改系统的相关信息的要求,比如:修改博客的标题、联系的地址,因此需要提供信息修改的功能。同时,为了保证数据使用系统的安全性,用户也应该经常修改登录密码信息。三、系统设计(一)系统目标 (1)界面设计的简洁、友好、美观大方。(2)操作简单、快捷方便。(3)数据库存储安全、可靠。(4)登录博客系统浏览文章。(5)管理自己博客的基本信息。(6)撰写个人随笔。(7)处理留言、文章评论等内容。(二)业务流程图个人信息修改用户登录文章管理评论管理通讯管理退出系统(三)系统功能结构个人博客系统文章信息管理个人信息管理通讯信息管理评论信息管理添加删除修改添加查看查看查看四、数据库设计(一)数据库E-R图分析 (二)数据表结构Admin表字段名称数据类型字段大小是否主键默认值是否必填备注IDint是用户编号UserNamenvarchar50否否用户代号PassWordnvarchar50否是用户密码Reallydaynvarchar50否是用户性别Birthdaynvarchar50否是验证问题Addressnvarchar100否是验证问题答案PostCodedatetime否是注册日期Emailnvarchar50否是邮箱号码homePhonenvarchar50否是家庭电话QQnvarchar50否是QQ号码ICQnvarchar50否是ICQ号码RegTimedatetime否是 时间Sexnvarchar4否是性别Ipnvarchar20否是地址IpBlogIDnvarchar4否是用户IDSuperadmin文本20否是超级管理员 Articles 表字段名称数据类型字段大小是否主键默认值是否必填备注ArticlesIDint是编号Authornvarchar50否否AuthorSubjectnvarcharMax否是SubjectContentntext否是ContentBlogIDint否是ID号Timedatetime否是时间Blog表字段名称数据类型字段大小是否主键默认值是否必填备注BlogIDint是用户编号UserNamenvarchar50否否用户代号PassWordnvarchar50否是用户密码Reallydaynvarchar50否是用户性别Birthdaynvarchar50否是验证问题Addressnvarchar100否是验证问题答案PostCodedatetime否是注册日期Emailnvarchar50否是邮箱号码homePhonenvarchar50否是家庭电话QQnvarchar50否是QQ号码ICQnvarchar50否是ICQ号码RegTimedatetime否是 时间Sexnvarchar4否是性别Ipnvarchar20否是地址IpBlogIDnvarchar4否是用户IDHref表字段名称数据类型字段大小是否主键默认值是否必填备注HrefIDint是Href编号Namenvarchar100否否名称Urlnvarchar200否是网址Message表字段名称数据类型字段大小是否主键默认值是否必填备注MessageIDint是Message编号BlogIDint否否BlogIDFriendIDint否是好友IDRevert表字段名称数据类型字段大小是否主键默认值是否必填备注RevrtIDint是Revrt编号Subjectnvarchar50否否SubjectContentntext否是ContentArtideIDint否是Artide号码BlogIDint否是Blog号码Timedatetime否是时间Ipnvarchar20否是Ip地址VisitorIDint否是Visitor号码VisitorNamenvarchar50否是Visitor名称五、公共类的编写using 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;/ / DBClass 的摘要说明/ public class DBClass SqlConnection myConn; /用于连接数据库 SqlCommand myCmd; /用于执行Sql语句 DataSet ds; /数据集 SqlDataAdapter adapt; /填充数据集public DBClass()/ TODO: 在此处添加构造函数逻辑/ / / 连接数据库 / / 返回SqlConnection对象 public SqlConnection GetConnection() string myStr = ConfigurationManager.AppSettingsConnectionString.ToString(); myConn = new SqlConnection(myStr); return myConn; / / 更新数据库 / / sqlStr执行的SQL语句 public void ExecNonQuery(string strSql) try myConn = GetConnection();/与数据库连接 myCmd = new SqlCommand();/初始化SqlCommand类对象 myCmd.Connection = myConn; myCmd.CommandText = 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(); / / 返回一个值 / / sqlStr执行的SQL语句 / 返回获取的值 public string ExecScalar(string strSql) try myConn = GetConnection();/与数据库连接 myCmd = new SqlCommand();/初始化SqlCommand类对象 myCmd.Connection = myConn; myCmd.CommandText = 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(); / / 说 明: GetDataSet数据集,返回数据源的数据表 /返回值: 数据源的数据表 /参 数: sqlStr执行的SQL语句,TableName 数据表名称 / 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.TablesTableName;/返回数据集DataSet的表的集合 catch (Exception ex) throw new Exception(ex.Message, ex); finally /断开连接,释放资源 myConn.Close(); adapt.Dispose(); ds.Dispose(); myConn.Dispose(); 六、详细设计(一)界面的设计界面主要采用比较清爽的绿色以及纯白色为背景,布局比较传统,但同时也不乏其实用性。其中各个模块的东西都可以在主页面中看到。(1)主页面:提供了用户的登录,以使用户能够操作个人博客,实现对其中文章对增删查改,同时也可对文章进行评论以及查看他人文章等。(2)登录界面:登录后能够在界面上显示登录用户以及能够对博客进行操作。(3)信息修改界面:可供修改个人信息(4)文章管理界面:可以对文章进行增删查改。(5)评论管理界面(6)通讯管理界面:可以对联系人进行增删查改操作。七、测试(一)测试目的 程序测试就是在程序投入运行前,对程序的需求分析、设计规格说明和编码的最终复审,是保证程序质量的关键步骤。如果要给程序测试下定义,可以这样讲,程序测试是为了发现错误而执行程序的过程。测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。在开发大型软件系统的过程中,需要面对错综复杂的问题,因此,在软件生存周期的每个阶段都不可避免地会产生错误。编程人员力求在每个阶段结束之前通过严格的技术审查,尽可能早的发现并纠正错误。(二)测试方法程序测试的主要方法为黑盒测试。黑盒测试:也称功能测试,将软件看作黑盒子,在完全不考虑程序的内部结构和特性的情况下,测试软件的外部特性。根据软件的需求规格说明书设计测试用例,从程序的输入和输出特性上测试是否满足设定的功能。(三)测试用例 (1) 用户测试权限测试内容:填写用户名及密码,验证能否成功登陆。操作: 填写正确的用户名及密码。 填写错误的用户名或密码。结果: 成功登陆。 提示用户名或密码错误。(2) 文章管理测试(I) 发表文章测试内容:用户发表新文章,。操作:进入博客系统,点击文章管理,选择添加文章的操作如下图6-1所示,填写完文章内容之后单击添加按钮,看系统是否会提示发表成功。结果:系统提示如图6-2所示,测试成功。图6-1 添加文章操作图6-2 添加文章测试 (II) 修改文章测试内容:管理员对自己所发表的文章信息是否可以修改。操作:点击文章管理打开文章编辑页面。如图6-3所示结果:文章信息重新编辑后提交成功,如图6-4所示。结论:测试成功。图6-3 修改文章测试图6-4 文章修改成功(III) 删除文章。测试内容:用户对自己所发表的文章信息能否成功删除。操作:点击删除系统询问是否删除该文章信息,如图6-5所示。结果:文章信息被成功删除。结论:测试成功。图6-5删除文章操作附录1 系统使用说明1 用户可以在主页依据个人用户名进行登录,对个人博客进行操作2 登陆后的用户可以在自己的首页上面查看博客公告,最新评论以及进行以下操作。(1)个人休息修改:用户可以输入自己的博客详细资料供系统录入。(2)文章管理:查看已经发布的文章,如果文章比较多的话还可以输入关键字对文章进行模糊查询。同时也可对文章进行增删查改。(3)评论管理:可以查看或删除个人已发表文章已被人评论的信息。(4)通讯管理:可供添加联系人以及删除联系人,并可点击某个联系人的详细信息对其详细信息进行查看并且修改。(5)退出登录:用户可以退出登录,回到原先的主页面。附录2 程序主要源代码public partial class Module_Blog_AddArt : System.Web.UI.Page CommonClass ccObj = new CommonClass(); DBClass dbObj = new DBClass(); protected void Page_Load(object sender, EventArgs e) if (SessionUserName = null)Response.Redirect(./Default.aspx);this.labAuthor.Text = SessionUserName.ToString(); protected void btnAdd_Click(object sender, EventArgs e) string strSql = Insert into tb_Article(Subject,Author,Content,Time,BlogID) values( + this.txtSubject.Text + , + SessionUserName.ToString() + , + this.txtContent.Text + , + DateTime.Now.ToString() + , + int.Parse(SessionUserID.ToString() + ); dbObj.ExecNonQuery(strSql); Response.Write(ccObj.MessageBox(文章添加成功!); protected void btnBack_Click(object sender, EventArgs e)Response.Redirect(ArticleManage.aspx);public partial class Module_Admin_BlogInfo : System.Web.UI.Page DBClass dbObj = new DBClass(); CommonClass ccObj = new CommonClass(); protected void Page_Load(object sender, EventArgs e) if (SessionUserName = null)Response.Redirect(./Default.aspx);if (!IsPostBack) string strSql = select * from tb_Blog where BlogID= +SessionUserID; DataTable dsTable = dbObj.GetDataSet(strSql, tbBlog); if (dsTable.Rows.Count 0) this.txtName.Text = Convert.ToString(dsTable.Rows0UserName); this.txtPwd.Text = Convert.ToString(dsTable.Rows0PassWord); this.ddlSex.SelectedValue = Convert.ToString(dsTable.Rows0Sex); this.txtRealName.Text = Convert.ToString(dsTable.Rows0ReallyName); this.txtBirthday.Text = Convert.ToString(dsTable.Rows0Birthday); this.txtAddress.Text = Convert.ToString(dsTable.Rows0Address); this.txtPostCode.Text = Convert.ToString(dsTable.Rows0PostCode); this.txtEmail.Text = Convert.ToString(dsTable.Rows0Email); this.txtHphone.Text = Convert.ToString(dsTable.Rows0HomePhone); this.txtMphone.Text = Convert.ToString(dsTable.Rows0MobilePhone); this.txtQQ.Text = Convert.ToString(dsTable.Rows0QQ); this.txtICQ.Text = Convert.ToString(dsTable.Rows0ICQ); this.TextBox1.Text = Convert.ToString(dsTable.Rows0RegTime); this.txtIP.Text = Convert.ToString(dsTable.Rows0IP); protected void btnOK_Click(object sender, EventArgs e)string strUpdate = update tb_Blog set UserName= + this.txtName.Text + ,PassWord= + this.txtOKpwd.Text + + ,Sex= + this.ddlSex.SelectedValue + ,ReallyName= + this.txtRealName.Text + + ,Birthday= + this.txtBirthday.Text + ,Email= + this.txtEmail.Text + ,HomePhone= + this.txtHphone.Text + + ,MobilePhone= + this.txtMphone.Text + ,PostCode= + this.txtPostCode.Text + ,QQ= + this.txtQQ.Text + + ,ICQ= + this.txtICQ.Text + ,Address= + this.txtAddress.Text + + where BlogID= + SessionUserID + ; dbObj.ExecNonQuery(strUpdate); Response.Write(ccObj.MessageBox(信息修改成功!,Index.aspx); protected void btnBack_Click(object sender, EventArgs e)Page.Response.Redirect(Index.aspx);public partial class Module_Blog_ReplayContent : System.Web.UI.Page CommonClass ccObj = new CommonClass(); DBClass dbObj = new DBClass(); protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) try /此处用来实现将数据绑定到前台 string strSql=select * from tb_Article where ArticleID=+Requestid; DataTable dsTable = dbObj.GetDataSet(strSql, tbArticle); if (dsTable.Rows.Count 0) this.txtSubject.Text =dsTable.Rows0Subject.ToString(); this.txtContent.Text =dsTable.Rows0Content.ToString(); catch (Exception ex) Response.Write(ex.Message); protected void btnUpdate_Click(object sender, EventArgs e) string strSql=update tb_Article set Content= + this.txtContent.Text + ,Subject=+this.txtSubject.Text+ where ArticleID=+Requestid; dbObj.ExecNonQuery(strSql); Response.Write(ccObj.MessageBox(修改成功); protected void btnBack_Click(object sender, EventArgs e) Response.Redirect(ArticleManage.aspx); public partial class Module_Blog_PersonInfo : System.Web.UI.Page DBClass dbObj = new DBClass(); protected void Page_Load(object sender, EventArgs e) if (RequestVisitorID.ToString() != )if (!IsPostBack) string strSql = select * from tb_Blog where BlogID= + RequestVisitorID; DataTable dsTable = dbObj.GetDataSet(strSql, tbBlog); if (dsTable.Rows.Count 0) this.txtName.Text = dsTable.Rows0UserName.ToString(); this.ddlSex.SelectedValue = dsTable.Rows0Sex.ToString(); this.txtRealName.Text = dsTable
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论