湖南铁路科技职业技术学院BBS论坛姓名龚涛年级2009级专业软件系(院)信息技术系指导教师吴廷焰2011年 1 月 5 日目录一、绪论二、系统需求规划三、功能模块与数据库设计四、数据库设计五、重要代码六、结束语一、绪论1.BBS的发展背景BBS是在1992年底随着国际互联网的开始流行而迅速发展起来的.互联网的产生使得以前只能在本地访问的BBS可以被全世界随意访问, 这对大多数人来说是极具诱惑力的.BBS 是一个有多人参加的讨论系统,在BBS上大家可以对一个共同感兴趣的问题进行讨论,自由地发表自己的意见与观点,并且能直接与其他的人进行沟通.按照网站的性质以及服务对象来分,迄今有以下几种类型:一是校园BBS.校园BBS作为主要的集中地,在BBS领域具有举足轻重的地位. 由于校园BBS的繁荣,吸引了很多的社会人士参与.二是专业BBS.一般是由各个著名的大公司组建,人们可以利用其交流自己对商品的看法,更为重要的是可以解决商品使用中的问题.三是商业BBS.它是由ISP建立的BBS站点,这类BBS站点各种信息比较多,内容相当丰富. 四是小型局域BBS.一般是由个人或小型集体建立,为小范围信息交流服务. 五是业余BBS.一般由BBS爱好者个人利用一些免费空间办的BBS,目的是为广大网友提供一个在某些专业上的交流场所.六是新闻媒体BBS.是由新闻媒体网站设立的,为广大网友提供对新闻信息进行评论、发表意见和观点的场所. 随着互联网事业的蓬勃发展.BBS,这个具有强大实时交互功能,信息交流的平台,使人们不再像电视观众、电台听众、报纸杂志读者一样只是被动地观看、收听、阅读,而是可以积极而及时地参与讨论,在了解他人观点意见的同时也可以发表自己的看法.1.BBS对大学生学习生活的影响1.1BBS提供了丰富的网络学习资源论坛是一个经过学习者整理加工过的网络资源汇en集中心,从新闻、学习到娱乐、体育,从文字到视频、音频,BBS汇集了各种形式、内容的网络资源。
不少BBS都设有专门的NetResources(网络资源)板块;FTP技术和BT技术的发展更是为BBS站内资源的更新、共享提供了方便。
如今,大部分大学的BBS论坛都有相应的FTP服务器,不少BBS还与网络新兴的BT技术、Blog(博客)技术等连接起来BBS水木清华站就有“水木Blog”的栏目)。
1.2 BBS促进了协作学习基于网络的论坛社区也是各种学习资源组合的场所,为学习者提供了学习环境。
作为一个学生参与论坛的网络活动可包括许多种学习的意义,在特定板块内,论坛参与者围绕某个话题或者问题,通过发表、回复话题、版面讨论、站内信件等方式进行互动讨论、相互探讨,形成了一种以学习者为中心的学习方式。
从教育网内人气排名前十名的论坛的网友参与的情况来看,在各大学习板块里,基本上每张帖子提出的问题都可以得到网友友好的、认真的回复解答,有着浓郁的协作探讨的学习气氛和良好的学习效果。
1.3 BBS提高了学生自主学习能力网络学习的本质是一种自主学习,论坛提供了丰富的网络学习资源,使学习者能自主选择和控制学习地点、学习时间、学习方法和学习内容。
在论坛里,学生可以自主地围绕学习问题,通过发帖、回复的形式提出讨论,寻求解答帮助,提高了学习的积极性和自主学习的能力。
二、系统需求规划用户使用论坛,有一定的流程:用户注册登陆进入论坛,就某个话题(主题帖)展开讨论,通过发帖功能发布新的话题,通过回帖的功能回复已有的话题,通过搜索功能查找已有的话题;管理员通过管理功能创建、编辑、删除论坛的板块,管理注册用户,管理帖子,设置论坛基本参数。
这样的流程就决定了论坛的需求,如图所示:论坛流程图1、需求分析从流程图上可以看到论坛完成的走向,其实每一个流程的节点处都有许多功能,如下表:论坛功能列表论坛板块列表浏览帖子发帖回帖搜索帖子编辑帖子删除帖子精华帖置顶帖子转移帖子用户注册用户登陆控制用户权限修改注册信息设置论坛参数管理板块管理用户在这十六个凌乱无序的需求进行整理、归纳、再构建系统的整体框架,设计处数据实体、接口、用户界面,最终将所有功能需求装化为可以编码实现的程序框架。
首先,通过观察论坛所有功能需求,可以发现在这十六个功能需求中,如果按照不同事务分类,可以分为四类对象:板块、帖子、用户和论坛。
这四类对象,可以设计为四个数据实体,如果用数据库存储它们,即可以设计四个基本数据表。
论坛配置信息表模块信息表帖子信息表用户信息表板块类有浏览列表和管理两个方法,管理方法又可以分为创建、修改和删除3个子方法,如图:板块对象的相关用例图帖子类有浏览、发帖、回帖、搜索和管理5个方法,浏览方法又可以分为列表和查看2个子方法,管理方法又可以分为编辑、删除、置顶、转移、指定精华5个子方法,如图:帖子对象的相关用例图用户类有注册、登陆和管理3个子方法,管理方法又分为添加、删除和设置权限3个子方法,如图:用户对象的相关用例图论坛一般存在两种用户,分别为注册用户和管理员。
用户的权限是向下覆盖的,即上级权限包含下级权限,在本论坛中,管理员的权限是上级权限。
与注册用户相关的功能,其实就是论坛前台的主要功能。
论坛系统的前台,是用户讨论问题的平台,发帖、回帖一直贯穿用户整个的前台活动。
同时,由于论坛系统的帖子管理是管理员在帖子浏览时进行的,所以编辑帖子、删除帖子、转移帖子、置顶帖子和指定精华帖等功能也安排在前台实现。
其他与管理员相关的功能,包括板块管理、用户管理和论坛设置等都是管理员在后台进行的操作。
2、功能设计2.1基本功能设计通过需求分析,论坛的基本功能可以从众多的需求中筛选出来。
顾名思义,基本功能就是构成论坛系统的必要功能,具备这些功能的Web系统即是论坛。
基本功能:●发帖。
论坛最初是为了相互讨论话题而诞生的,发表帖子就是表达自己的看法,与他人进行讨论,因此发帖是论坛首要的功能。
●浏览帖子。
发表了帖子,就要供他人浏览查看,与他人分享自己的想法和经验。
●回帖。
浏览了他人发表的帖子,想要发表自己的想法,参与讨论,就可以回复这个帖子。
其实,发帖→浏览帖子→回帖三大功能周而复始的循环进行,就构成论坛。
每个参与论坛的人,主要目的就是发帖,查看已经发表的帖子,针对自己感兴趣的帖子进行回帖,参与讨论。
三大基本功能的相互关系如图:三、功能模块与数据库设计1、设计框架在确定了论坛系统的设计思路之后,还需要归纳成系统的相关模块,每个模块实际上就是功能的合理组合。
由于已经将功能做了前台与后台的分类,因此模块也应该分为两大类:前台模块和后台模块。
用户在前台的注册、登陆,以及修改个人的注册信息组合成注册信息组合成注册登陆模块。
用户浏览板块、浏览主题帖列表、查看帖子组合成浏览模块。
用户发帖、回帖、编辑自己发布的帖子组合成发帖回帖模块。
管理员编辑帖子、删除帖子、转移帖子、置顶帖子和精华帖子组合成管理帖子模块。
以上4个模块是前台模块。
后台模块都是与管理员相关的,设置论坛参数单独为论坛设置模块;创建、修改和删除板块为管理板块模块;添加、删除和设置权限为管理用户模块。
四、数据库设计表4-1 数据库建库清单序号数据库数据库表存储内容1 UserData 父版块ID,主键,自动增长2 Forum 子版块表,主键,自动增长3 ReForum 帖子表,主键,自动增长4 Celle 收藏夹,主键,自动增长5 Manager 管理员表非注册部分数据库表:UserData:Forum五、重要代码:首先是SQL的链接类:SQLConn.cs代码如下:SqlConnection myConnection;myConnection = new SqlConnection();myConnection.ConnectionString = "Data Source=localhost;initial catalog=DMForum;integrated security=true";return myConnection;验证用户项:SqlDataReader reader = comm.ExecuteReader();if (cookie.Value == Check.Text){if (reader.Read()){Response.Write("<script>alert('用户名和密码验证成功!')</script>");this.Session.Add("login_user_id", reader.GetString(0));this.Session.Add("login_user_name", reader.GetString(1));this.Response.Redirect("EnterFirst.aspx");}else{Response.Write("<script>alert('验证码错误,请刷新后重试!')</script>");}}else{Response.Write("<script>alert('对不起,用户名或密码错误,请重新输入!')</script>"); }conn.Close();修改语句:SqlConnection conn = SQLConn.GetConnection();try{SqlCommand cmd = new SqlCommand("update UserData setUserId=@UserId,RealName=@RealName,IdentityCard=@IdentityCard,Sex=@Sex,Email=@Email,Address=@Address,Birthday=@Birthday where AuthorityId=@AuthorityId", conn);cmd.Parameters.Add("@AuthorityId", SqlDbType.VarChar, 20);cmd.Parameters.Add("@UserId", SqlDbType.VarChar, 20);cmd.Parameters.Add("@RealName", SqlDbType.VarChar,20);cmd.Parameters.Add("@IdentityCard", SqlDbType.VarChar,20);cmd.Parameters.Add("@Sex", SqlDbType.Char,2);cmd.Parameters.Add("@Email", SqlDbType.VarChar,30);cmd.Parameters.Add("@Address", SqlDbType.VarChar,200);cmd.Parameters.Add("@Birthday", SqlDbType.DateTime);cmd.Parameters["@AuthorityId"].Value = card.AuthorityId;cmd.Parameters["@UserId"].Value = erId;cmd.Parameters["@RealName"].Value = card.RealName;cmd.Parameters["@IdentityCard"].Value = card.IdentityCard;cmd.Parameters["@Sex"].Value = card.Sex;cmd.Parameters["@Email"].Value = card.Email;cmd.Parameters["@Address"].Value = card.Address;cmd.Parameters["@Birthday"].Value = card.Birthday;conn.Open();cmd.ExecuteNonQuery();return"用户信息更新成功!";}catch (Exception e){return"用户信息更新失败!";}finally{conn.Close();}添加语句:SqlConnection myConnection = SQLConn.GetConnection();SqlCommand insertCmd = new SqlCommand("insert intoUserData(AuthorityId,UserId,PassWd,RealName,IdentityCard,Sex,Birthday,Email,Address,Picture,Integral)va lues(@AuthorityId,@UserId,@PassWd,@RealName,@IdentityCard,@Sex,@Birthday,@Email,@Address,@Picture,@Inte gral)", myConnection);insertCmd.Parameters.Add("@AuthorityId", SqlDbType.VarChar,20);insertCmd.Parameters.Add("@UserId", SqlDbType.VarChar, 20);insertCmd.Parameters.Add("@PassWd", SqlDbType.VarChar, 20);insertCmd.Parameters.Add("@RealName", SqlDbType.VarChar, 20);insertCmd.Parameters.Add("@IdentityCard", SqlDbType.VarChar, 20);insertCmd.Parameters.Add("@Sex", SqlDbType.VarChar, 2);insertCmd.Parameters.Add("@Birthday", SqlDbType.DateTime);insertCmd.Parameters.Add("@Email", SqlDbType.VarChar, 30);insertCmd.Parameters.Add("@Address", SqlDbType.VarChar, 200);insertCmd.Parameters.Add("@Picture", SqlDbType.VarChar, 100);insertCmd.Parameters.Add("@Integral", SqlDbType.Int);insertCmd.Parameters["@AuthorityId"].Value = this.authorityId.Text;insertCmd.Parameters["@UserId"].Value = erId.Text;insertCmd.Parameters["@PassWd"].Value = this.PassWd.Text;insertCmd.Parameters["@RealName"].Value = this.RealName.Text;insertCmd.Parameters["@IdentityCard"].Value = this.IdentityCard.Text;insertCmd.Parameters["@Sex"].Value = this.Sex.SelectedValue;insertCmd.Parameters["@Birthday"].Value = this.BirthDay.SelectedDate;insertCmd.Parameters["@Email"].Value = this.Email1.Text + "@" + this.Email2.Text; insertCmd.Parameters["@Address"].Value = this.Address.Text;insertCmd.Parameters["@Picture"].Value = (String)this.Session["Imagename"];insertCmd.Parameters["@Integral"].Value = this.Integral1.Text;try{insertCmd.Connection.Open();insertCmd.ExecuteNonQuery();Response.Write("<script>alert('数据保存成功!')");this.Response.Redirect("Login.aspx");}catch (Exception e1){Label20.Text = e1.ToString();Response.Write("<script>alert('数据保存失败!')" + e1.Message);}myConnection.Close();六、结束语致谢在本论文完稿之际,谨向所有给予我关心和帮助的人们致以我最诚挚的谢意。