资源描述
12
总体设计说明书
简易论坛系统
总体设计说明书
学号
姓名
所完成的任务
成绩
1071309117
顾江华
1.1,1.2,1.3, 2.2, 2.3
1071309116
江国华
1.1,1.2,1.3
1071309118
黄帅
6.1, 6.2
1071309109
査冰卿
3, 3.1, 3.2, 6.3
1071309101
叶甜
2.1, 5
1071309102
宋晓倩
4,8
2009 年 12 月 15 日
1.引言
1.1编写目的
本概要设计文档说明描述了“简易论坛系统”这个项目的总体设计思路,作为系统详细设计、项目目标及项目验收的依据。总体设计详细描述了系统的功能结构、各模块的划分和数据库的设计以及体系结构和开发技术。
软件开发小组每位成员应该阅读本总体设计说明,以明确项目的总体设计思路及实现方法。
1.2背景
l 待开发软件系统的名称:简易论坛系统
l 任务提出者、开发者:本小组全体成员
l 用户:网络及终端用户
l 运行该项软件的计算机网络系统:Internet
l 该网上论坛管理系统是现在几乎各个大型网站都有各种类型网站论坛管理系统
1.3定义
列出本文件中用到的专门术语的定义和外文首字母组词的原词组。
2.系统功能结构设计
2.1模块的划分和描述
2.1.1开发意图
这个系统预期的目的是为了做成交互式的网页,方便客户端和浏览器端之间的交流。通过论坛,人们能够相互交流沟通,把疑惑在论坛里公布,大家献计献策,共同学习,共同进步。
2.1.2 应用目标
网上论坛系统是一个会员登录留言系统。网上游客能够浏览论坛上的帖子,并且能够注册成为用户。论坛注册会员能够发表帖子,让大家积极参与讨论。论坛管理员能够便于管理论坛,包括浏览游客留言,审核留言,对于不健康或是不利于社会稳定的留言能进行删除操作。
2.1.3背景材料
现代社会信息要求建立通畅快捷的信息沟通渠道,从而降低自身与营销成本,提高反应速度。因此无论是现代企业内部,还是社会各群组之间,网上讨论区已经成为一种比不可少的信息交流的快速渠道。
网上讨论区提供了更加完整的信息交流方式:留言功能使得信息的发布可以面向群组和个人。论坛提供不同的讨论区,用户可以根据个人喜好自由的选择喜欢的讨论区阅读、留言。用户对用户式的短息可以方便用户与用户之间点对点的信息交流更加快捷方便。照片上传功能使用户可以随心所欲地挑选自己喜欢的图片等各种功能。
2.2系统的功能结构图
2.2.1系统前台功能结构如图1所示
普通用户
登录/退出
注册
浏览主页
发表主题
删除主题
修改个人信息
论坛前台
图1 系统前台功能模块图
用户注册模块:首先设置一个注册入口(以页面形式),要求用户输入用户基本信息要求,要求必选项不能为空,用户名是否符合命名规则,密码长度要求,二次密码输入是否与第一次相同,E-mail.格式是否正确,否则则返回,若成功则提示注册成功。输入论坛的信息以及各个人真实信息(此项可选!)
用户登录模块:提供登录入口就是一个登录页面,调用此页面连接数据库,把登录信息赋值给变量,检查用户是否存在,若不存在则登录用户变量清空,若存在则检查密码是否正确,不正确则登录用户变量清空,若正确则把用户信息赋值给变量,过滤用户ip地址,登录成功显示不同用户的界面风格。
用户状态模块:调用模块连接数据库,每停留10分钟;经验值加1,体力值加10等等。
2.2.2系统后台台功能结构如图2所示
主题管理
板块管理
用户管理
论坛后台
删除用户
用户排序
添加板块
删除主题
查看主题
图2 系统后台功能模块图
论坛后台首页流程:调用setup.asp页面连接数据库,检验用户名是否为空,若为空返回错误,为登录论坛。若不为空,判断用户是否退出,若退出则页面返回,不退出则判断页面框架内分页面提交的值,刷新提交分页。
论坛设置管理页面流程:调用setup.asp页面连接数据库,检验用户名是否正确,若不正确返回之前页面。若正确则调用函数剔除返回变量id中的容易出错字符,判断表单提交值,执行相应操作。
3.接口设计
3.1外部接口
1用户界面
这是我们所做“BBS论坛系统”与用户进行沟通交流的一个渠道,有着十分重要的作用。所以,我们的用户应该界面友好、清楚明了、突出重点、而且容易使用;另外,该界面还必须能够提供尽量多的功能,以给顾客便捷的服务。 我们的用户界面由论坛首页页面,用户服务功能页面,控制面板功能页面,论坛状态功能页面,论坛后台页面等各大界面构成。
2 软件接口
数据访问模块为访问数据库提供了一个通用接口,是表现层和业务逻辑层从底层数据库的访问中独立出来。即使数据库类型变化也无需更改程序,仅需对数据访问模块进行配置。
一个高性能的Web应用系统需要一个独立的海量写接口,海量写接口可以缓解数据库连接资源有限所造成的并发海量数据更新瓶颈,使得异步写数据操作成为可能,极大的增加了写数据的吞吐能力。往往许多Web系统只是在一个较短的波峰阶段才达到海量的指数,在其他大多数时间都是很一般的访问(典型的Web例子就是论坛系统)。海量访问写接口可以更好的解决海量访问压力下的数据库写入操作的负荷问题,增加系统整体的稳定性。而且海量访问压力的增加对该系统也不会产生太大的影响。
无论是Oacrel或者MSSQL等比较优秀的数据库服务器中都具有自己的数据库内部Cache系统,这些Cache可以大大提高数据库访问性能,但是这些Cache也具有如下这些缺点:它们仍旧占用数据库连接资源;它们在分布式环境中仍然需要通过网络资源传送到接受查询结果的服务器;它们很难通过调整和控制来优化查询效率。基于以上这些原因不少持久化技术中加入了数据库访问的Cache系统,来缓存已经被访问过的数据库数据,而不需要每次查询都通过连接访问数据库。但是就目前来看,在表现层上也存在着缓存页面内容的Cache系统,和该系统机制和原理不同,数据端的Cache系统往往应该是缓存被频繁访问的数据对象的。鉴于以上原因,设计一个符合海量访问要求的读数据库缓存系统是至关重要的问题。而且基于分布式设计的理念,该系统同时也应该位于中间层,来控制和缓存中间层的业务功能模块类对数据持久层的数据调用。
3.1.3通信接口
系统配置可通过Web应用程序的setting.php配置文件实现。 setting.php是一个PHP格式的文件。
将数据库连接字符串保存在setting.php文件中便于系统各个页面调用。同时系统重新部署时,只需修改此处的数据库连接字符串,.NET框架运行时会自动检测setting.php中的更改,不必重新启动Apache这些更改即可生效。
3.2内部接口
模块的接口:模块的输入和输出。
1、匿名用户与信息处理系统之间
系统的输入数据流:注册资料、登录数据;
系统的输出数据流:某篇贴子内容、会员列表、版主列表、版面列表;
加工逻辑:注册加工、登录加工。
2、会员用户与信息处理系统之间
系统的输入数据流:版主资格申请、注册资料修改、发表贴子、回复贴子;
系统的输出数据流:某篇贴子内容、会员列表、版主列表、版面列表;
加工逻辑:版主资格申请、注册资料修改、发表贴子,回复贴。
3、版主与信息处理系统之间
系统的输入数据流:注册资料修改、发表贴子、回复贴子、友情链接维护、发布公告、管理版面贴子维护;
系统的输出数据流:某篇贴子内容、会员列表、版主列表、版面列表;
加工逻辑:注册资料修改、发表贴子、回复贴子、友情链接维护、发布公告、管理版面贴子维护。
4、管理员与信息处理系统之间
系统的输入数据流:注册资料修改、发表贴子、回复贴子、友情链接维护、添加版面、论坛基本信息维护、论坛所有贴子维护、版主申请批复;
系统的输出数据流:某篇贴子内容、会员列表、版主列表、版面列表;
加工逻辑:注册资料修改、发表贴子、回复贴子、友情链接维护、添加版面、论坛基本信息维护、论坛所有贴子维护、版主申请批复。
4.数据库逻辑结构设计
将E-R模型转化为关系模式
1.用户实体集可以转换为关系
user(Id,username,password,membercode,usermail,,userhome,question,answer,honer,realname,birthday,sex,country,province,city,blood,character,belie,occupation,faction,consort,college,marital,education,personal,sign,friend,newmessage,posttopic,postrevert,deltopic,goodtopic,money,savemoney,userlife,experience,degree,regtime,landtime,savetime,userface,userphoto,userqq)
用户(用户编号,用户姓名,用户密码,用户类型,电子邮件,个人主页,密码提示问题,密码提示答案,头衔,真实姓名,生日,性别,国家,省份,城市,血型,性格,信仰,职业,门派,配偶,毕业院校,婚姻状况,最高学历,个人信息,签名档,好友的ID列表,新留言,发表原帖,发表回帖,被删帖子,收录精华,社区货币,存款,体力值,经验值,登陆次数,,注册日期,最后登陆日期,存款日期,头像URL,照片URL,QQ号码,ICQ号码)
2.论坛留言实体集可以转换为关系
bbsconfig(id ,followid,SortNum,bbsname,moderated,intro,today,toltopic,tolrestore,pass,logo,icon,hide,lasttopic,lastname,lasttime,password)
论坛留言(论坛ID,类归ID,排列ID,论坛名称,论坛版主,论坛介绍,今日帖子数,主题数,帖子数,论坛访问权限,logo图标,小图标,隐藏论坛,最后发表主题,最后发帖人的名称,最后发帖人的时间,通行密码)
3.用户日记实体集可以转换为关系
calendar(id ,username ,title,content,adddate,hide,addtime)
用户日记(日记编号,用户姓名,标题,内容,所属日期,是否隐藏,添加时间)
4.论坛基本参数实体集可以转换为关系
clubconfig(clubname,adminpassword,homename,homeurl,allclass,selectmail,cluburl,smtp,smtpmail,MailServerUserName,MailServerPassword,badwords,badlist,badip,affichetitle,afficecontect,afficheman,affichetime,nowdate,today,oldday,style,CacheName,selectup)
论坛基本参数(社区名称,管理密码,主页名称,主页URL,社区参数设置,发送邮件组件,社区URL地址,SMTP Server地址,管理员Email地址,邮件服务器登陆名,邮件服务器登陆密码,过滤不良字符,黑名单,禁止IP列表,社区公告标题,社区公告内容,公告发布人,公告发表时间,当前日期,今日总发帖数,昨日总发帖数,风格目录名,缓存名称,上传组件)
5. 帮派实体集可以转换为关系
faction(replyid,buildman,factionname,allname,tenet,addtime)
帮派(帮派编号,创始人,帮派名称,帮派全称,帮派宗旨,创建日期)
6,论坛留言主题实体集可以转换为关系
forum(id,forumid,topic,username,contect,posttime,postip,replies,views,icon,goodtopic,toptopic,locktopic,deltopic,lastname,lasttime,polltopic,pollresult,multiplicity)
论坛留言主题(留言编号,论坛ID,主题,作者,内容,发表时间,发表IP,回复数,点击数,表情,是否精华帖,是否置顶主题,是否禁止回复,是否删除主题,最后回复用户名称,最后更新时间,投票主题,投票结果,投票是否多选)
7.添加菜单项实体集可以转换为关系
menu(id,name,url,followid,SortNum)
添加菜单项(编号,菜单名称,URL,跟随ID,排序)
8.用户信息9.论坛用户在线信息
message(id,author,incept,contect,time)
用户信息(留言ID,留言人,接收留言的人,留言内容,留言时间)
9.论坛用户在线信息实体集可以转换为关系
online(id,sessionid,username,ip,eremite,userface,bbsname,act,acturl,cometime,lasttime)
论坛用户在线信息(论坛ID,Session ID,用户名称,IP地址,当前当前用户状态,头像,所在论坛,当前动作,当前位置url,来访时间,最后更新时间)
10.论坛留言回复实体集可以转换为关系
reforum(id ,topicid,username,contect,posttime,postip)
论坛留言回复(回复留言编号,原主题ID,作者,内容,发表时间,发表IP)
5.数据库物理结构设计
主要数据表结构:
Admins
Boards
Topics
Users
6.系统的体系结构和开发技术
6.1体系结构
6.1.1三层Web体系结构
B/S结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓N-Tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(PHP、JavaScript…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着Windows 98/Windows 2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。
将应用程序分成好几个离散逻辑组件,就是多层式结构 (N-Tier) 应用程序。最常见的选择是分成三个部分:表示层、事务逻辑层和数据层(3-Tier),不过也有其它的组合。多层式结构应用程序,在一开始是解决某些与传统客户端/服务器 (主从式) 应用程序相关的问题,但是随着 Web 的出现,此结构已经成为主导新程序之开发的结构。下面就是3-Tier结构各层功能以及经常采用的技术作个简介:
表示层主要运行于客户端浏览器,采用Script (脚本)语言编写。HTML、JavaScript、PHP是此类应用系统中展示层最常用的脚本编制语言,结合CCS以及ActiveX技术,能设计出交互相当灵活功能又相当强大的客户端网页。
事务逻辑层设计通常有三个选择:PHP网页、COM或COM+组件、DBMS中所执行的预存程序。将程序代码的一部分,建立成执行于数据库管理系统 (DBMS) 中的预存程序,使数据与程序代码储存在相同的位置,有助于最佳化执行效率,但是,预存程序都依赖于特定的数据库系统,在编写和侦错方面都相当复杂,只适宜于大型的商业应用系统。以 COM 对象的方式,编写中间层 (Middle Tier) 事务逻辑,可以使用全功能的语言,来产生经过编译的执行程序,执行效率也相当高,此外,在 COM 对象中包装事务逻辑,还可以清楚地将此程序代码与网页内含的展示程序代码分隔,这样可以使应用程序更易于维护,但是,COM对象的部署也有一定的麻烦,新编写的组件对象,只有在服务器重新启动后才能被应用程序调用。用PHP网页设计事务逻辑相对来说比较简单,但是,PHP网页采用脚本语言来编写事务逻辑,比如PHP,程序代码只有在执行时才被翻译,这样会降低执行效能,此外,PHP 网页中的程序代码也是难以维护的,因为事务逻辑程序代码与建立使用者接口的展示程序代码彼此混杂在一起。
数据层较为灵活,视系统规模可选择Sybase、Oracle、My SQL、SQL server或者MS Access。
综上所述,结合简易论坛系统实际需要,本简易论坛系统采用B/S结构。论文设计开发的系统为通用简易论坛系统,系统应该具备较大的可伸缩性,应该能适应最基本应用最广泛的WEB平台。另外,通用系统应该具备较大的可扩展性,目前,PHP技术发展较快,譬如,如今的开心网也使用PHP做的,而且相对成本比较小。因此,这次设计开发的简易论坛事务逻辑层设计采用PHP网页;至于数据层,本系统采用最基本的MySQL数据库系统。
6.2开发技术
6.2.1 PHP技术
PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。它可以比 CGI 或者 Perl 更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;与同样是嵌入HTML文档的脚本语言JavaScript相比,PHP在服务器端执行,充分利用了服务器的性能;PHP执行引擎还会将用户经常访问的PHP程序驻留在内存中,其他用户再一次访问这个程序时就不需要重新编译程序了,只要直接执行内存中的代码就可以了,这也是PHP高效率的体现之一。PHP具有非常强大的功能,所有的CGI或者JavaScript的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。
PHP的特性包括:
1)开放的源代码:所有的PHP源代码事实上都可以得到。
PHP是免费的。
2)php的便捷性 : php十分便捷,学习简单
3)基于服务器端:由于PHP是运行在服务器端的脚本,可以运行在UNIX、LINUX、WINDOWS下。
4)嵌入HTML:因为PHP可以嵌入HTML语言,所以学习起来并不困难。
5)简单的语言:PHP坚持脚本语言为主,与Java和C++不同。
6)效率高:PHP消耗相当少的系统资源。
7)图像处理:用PHP动态创建图像
8)面向对像:在php4,php5 中,面向对象方面都有了很大的改进,现在php完全可以用来开发大型商业程序
9)PHP 相对于其他语言,编辑简单,实用性强,更适合初学者。
6.2.2 Apache Web技术
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。
Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。
本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如A、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
7.参考资料
[1] 李存珠,李宣东. 软件工程概论[M].南京大学计算机系出版, 2001:30-87.
[2] 李大友,陈明编著.实用软件工程基础.清华大学出版社,2003.8
[3] 马忠超. 零基础学PHP.机械工业出版社,2007.4
12
展开阅读全文