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 | 编号 |