论坛为何?是何方神圣?其实呢?论坛也称为BBS,是bulletin Board System的简称,意即电子公告板,是一种在Internet上常见的用于信息服务的Web系统,它主要给浏览者提供相互沟通的平台,以此来吸引用户,服务用户。
BBS起源于20世纪80年代初。最初,论坛只是用于发布公告信息,讨论问题的在线交流平台。后来,随着网络的普及,论坛的功能越来越丰富,受到广大网民的欢迎。因此,商业网站对论坛重视起来,纷纷在自己的网站上开辟论坛。作为与网民交流的园地。同时在线技术支持和在线服务也在论坛中开展起来。
由此可见,论坛系统也是一种很值得掌握的程序。
论坛的需求规划
在开始编写一个论坛系统之前,首先要确定论坛的功能是什么,也就是开发中常提到的需求是什么。那么什么决定需求呢?用户使用论坛,有一定的流程:用户注册登录进入论坛,就某个话题(主题贴)展开讨论,通过发贴功能发布新的话题,通过回贴的功能回复已有的话题,通过搜索功能查找已的话题;管理通过管理功能创建、编辑、删除论坛的板块,管理注册的用户,管理贴子。设置论坛的基本参数。这样的流程就决定了论坛的需求,如图:
浏览者 |
用户 |
注册登录 |
搜索 |
管理板块 |
浏览板块 |
管理用户 |
发帖 |
浏览帖子 |
回帖 |
管理帖子 |
管理员 |
从流程图上可以看到论坛完成的走向,其实每一个流程的节点处都有许多功能,如表2-1
论坛功能列表
论坛板块列表 |
浏览帖子 |
发帖回帖 |
搜索帖子 |
编辑帖子 |
删除帖子 |
精华帖 |
置顶帖子 |
转移帖子 |
用户注册 |
用户登录 |
控制用户权限 |
修改注册信息 |
设置论坛参数 |
管理板块 |
管理用户 |
2.1.1分析需求并确定思路
在看了表2-1所示的功能需求后,你是不是觉得论坛的功能很凌乱无序?可是如何把这些凌乱的功能能整理好,拨云见日呢?这正是程序员分析设计的地方。
设计一个应用系统的过程,其实就是将凌乱无序的需求进行分析以得到功能列表,然后进行整理、归纳、再构建系统的整体框架,读者设计出数据实体、接口、用户界面,最终将所有功能需求转化为可以编码实现的程序框架。
现在就开始根据论坛的功能需求讲解设计思路。首先,观察论坛所有功能需求,你会发现在这16个需求中,如果执照不同的事物分类,可以分类4类对象:板块、帖子、用户和论坛。这4类对象,可以设计为4个数据实体,如果使用数据库存储它们,即可以设计4个基本数据表。
接下来分析每个对象的相关操作。设计为对象的功能实现接口,即为对象的操作类的方法,如图2-3所示。论坛类只有设置参数一个方法,即可以把设置一组参数作为一个方法,也可以把设置一个参数作为一个方法。由于现在只是设计程序框架,这些参数设置的细节将在编写程序的时候详细说明。
板块类有浏览列表和管理两个方法,管理方法可以分为创建、修改和删除3个方法,如图。
管理员 |
设置论坛参数 |
论坛分页参数 |
基本参数 |
用户相关参数 |
管理员 |
设置论坛参数 |
创建板块 |
修改板块 |
删除板块 |
用户 |
浏览板块列表 |
帖子类有浏览、发帖、回帖、搜索和管理5个方法,浏览方法又可以分为列表和查看2个子方法,管理方法又可以分为编辑、删除、置顶、转移、指定精华5个子方法,如图2-5所示。
用户 |
管理员 |
浏览帖子 |
搜索 |
回帖 |
管理帖子 |
编辑 |
指定精华 |
置顶 |
转移 |
删除 |
发帖 |
用户类有注册、登录和管理3个方法,管理方法又分为添加、删除和设置权限3个子方法,如图2-6所示。
用户 |
管理员 |
修改个人信息 |
注册 |
登录 |
管理用户 |
设置权限 |
添加 |
删除 |
经过上面分析后,当初列出的功能列表就分别有了各自的归属对象。
论坛一般存在两种用户,分别为注册用户和管理员。用户的权限是向下覆盖的,即上级权限包含下级权限,在这里的论坛中,管理员的权限是上级权限。接下来,需要归好类的对象及其方法分配给不同的论坛用户。具体功能的分配结果如表2-2所示。
如表2-2 论坛功能和用户权限对应表
对象实体 |
功能方法 |
用户类型 |
论坛 |
设置参数 |
管理员 |
板块 |
浏览列表 |
注册用户 |
创建板块 |
管理员 |
|
修改板块 |
管理员 |
|
删除板块 |
管理员 |
|
帖子 |
浏览列表 |
注册用户 |
查看帖子 |
注册用户 |
|
发帖 |
注册用户 |
|
回帖 |
注册用户 |
|
搜索 |
注册用户 |
|
编辑(自己所有) |
注册用户 |
|
编辑(全部) |
管理员 |
|
删除 |
管理员 |
|
置顶 |
管理员 |
|
指定精华 |
管理员 |
|
转移 |
管理员 |
|
用户 |
注册 |
注册用户 |
注册用户登录 |
注册用户 |
|
管理员登录 |
管理员 |
|
添加 |
管理员 |
|
删除 |
管理员 |
|
设定权限 |
管理员 |
与注册用户相关的功能,其实就是论坛前台的主要功能。论坛系统的前台,是用户讨论问题的平台,发帖、浏览、回帖一直惯穿用户整个的前台活动。同时,由于论坛系统的帖子管理是管理员在帖子浏览时进行的,所以编辑帖子、删除帖子、转移帖子、置顶帖子和指定精华等到功能也安排在前台实现,其他与管理员相关的功能,包括板块管理、用户管理和论坛设置都是管理员在后台进行的操作。
这样,一路分析下来,论坛的基本功能,也就是必要的功能就浮现在眼前了。接下来,将要讲解怎么样设计论坛的基本功能。
2.1.2设计基本功能
通过以上分析,论坛的基本功能可以从众多需求中筛选出来。顾名思义,基本功能就是构成论坛系统的必要功能,具备这些功能的这eb系统即是论坛。
论坛大类表
名称 |
类型 |
说明 |
CateId |
Int |
分类编号,主键 |
Catename |
Varchar |
分类名称 |
Cateposition |
Varchar |
分类显示位置 |
Date |
Datetime |
创建时间 |
论坛小类表
名称 |
类型 |
说明 |
Forcunid |
Int |
板块id 主键 |
Cateid |
Int |
归属那一大类 |
Forcumname |
Varchar |
板块名称 |
Forcumdesc |
Varchar |
板块描述 |
Forcumposition |
Varchar |
板块位置 |
Date |
Datetime |
创建时间 |
Member |
Varchar |
版主名称 |
Topic |
Varchar |
主题数(舍去) |
Reply |
Varchar |
回复数(舍去) |
Click |
Varchar |
点击数(舍去) |
Imageurl |
Varchar |
小类图像url |
|
|
|
论坛人员表
名称 |
类型 |
说明 |
Memberid |
Int |
用户id 主键 |
Membername |
Varchar |
用户名 |
Memberpwd |
Varchar |
用户密码 |
Membericon |
Varchar |
用户图标 |
Memberrealname |
Varchar |
用户真实姓名 |
Showemail |
Bit |
是否显示email(舍去) |
Signature |
Varchar |
个性化签名 |
AvatarUrl |
Image |
用户自定义图像(舍去) |
Homepage |
Varchar |
用户主页 |
|
Varchar |
用户email |
Mobile |
Varchar |
手机号 |
Homephone |
Varchar |
固定电话 |
|
Varchar |
|
Adress |
Varchar |
地址 |
Code |
Varchar |
邮编(舍去) |
Cardno |
Varchar |
身份证号(舍去) |
Ip |
Varchar |
用户Ip |
Isadmin |
Bit |
是否管理员 |
Ispower |
Bit |
是否版主 |
Mark |
Varchar |
积分 |
Action |
Bit |
是否在线 |
Topiccount |
Varchar |
发帖数量 |
Replycount |
Varchar |
回帖数量 |
Date |
Datetime |
注册时间 |
Notused |
Bit |
是否删除(舍去) |
LastVist |
Datetime |
登出时间 |
论坛主题表
名称 |
类型 |
说明 |
Id |
Int |
主键编号 |
Topiccaption |
Varchar |
主题标题 |
Content |
Varchar |
主题内容 |
Focumid |
Int |
论坛id编号 |
Memberid |
Int |
发帖人id |
Istop |
Bit |
是否置顶 |
Isgood |
Bit |
是否精华 |
Notused |
Bit |
是否删除(舍去) |
Date |
Datetime |
法帖时间 |
Ip |
Varchar |
发帖人ip |
Click |
Int |
点击数也是阅读数 |
Replycount |
Int |
回复数(舍去) |
Lastreplyuser |
Varchar |
最后回复人 |
Lastreplydate |
Datetime |
最后回复时间 |
回帖表
名称 |
类型 |
说明 |
Id |
Int |
主键 |
Forumid |
Int |
板块Id(用于计算版块的回帖数) |
Topicid |
Int |
主题编号 |
Memberid |
Int |
回复人id |
Catption |
Varchar |
回复贴标题 |
Content |
Varchar |
回复内容 |
Ip |
Varchar |
回复人ip |
Date |
Datetime |
回复时间 |
Notused |
Bit |
是否删除(舍去) |
论坛登陆日志
名称 |
类型 |
说明 |
Id |
Int |
主键 |
Membername |
Varchar |
登陆名 |
Action |
Varchar |
动作名 |
Time |
Datetiem |
登陆时间 |
Ip |
Varchar |
Ip地址 |
|
|
|
权限表
名称 |
类型 |
说明 |
PermissionId |
Int |
编号 |
Description |
Varchar |
权限说明 |
CategoryId |
Int |
分类号 |
角色表(Forums_Role)
名称 |
类型 |
说明 |
RoleId |
Int |
编号 |
Description |
Varchar |
角色描述 |
角色权限表(Forums_Role_Permission)
名称 |
类型 |
说明 |
RoleId |
Int |
编号 |
PermissionId |
Int |
编号 |
需求下载