网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > 课程设计 > 正文

BBS论坛系统-数据库课程设计

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
BBS论坛系统-数据库SQL Server 2000课程设计
1.课程设计的目的
现如今网络盛行,BBS论坛也成为人们生活中的信息渠道。BBS是电子公告板系统(Bulletin Board System)之英文缩写,它通过在计算机上运行服务软件,允许用户使用终端程序通过电话调制解调器拨号或者Internet来进行连接,执行下载数据或程序、上传数据、阅读新闻、与其它用户交换消息等功能。
利用SQL Server 2000作为设计工具,理解并应用课程中关于数据库设计的相关理论,能按照设计流程完成完整的数据库设计,包括需求分析、概念设计、逻辑设计、物理设计和实施。
给某BBS论坛模拟开发一套BBS论坛系统,实现如下具体功能:
1.用户注册和登录,后台数据库需要存放用户的注册信息和在线状态信息。
2.用户发帖,后台数据库需要存放贴子相关信息,如贴子内容、标题等。
3.论坛版块管理,后台数据库需要存放各个版块信息,如版主、版块名称和贴子数等。
通过完成BBS系统掌握数据库应用设计的方法及分析、解决实际问题的能力。
2.设计方案论证
(一)设计思路
需求分析是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。可以说,“需求分析”就是确定要计算机“做什么”。
这个设计是完成模拟BBS论坛使用过程中和用户的交互过程。
主要实现如下功能:
(1)    修改密码。
(2)    系统信息。
(3)    提高用户的积分。
(4)    显示精华贴的信息以及回贴详细信息。
(5)    实现论坛的年度评估。
(二)概念结构设计
     现实世界中的事物及其活动被人们抽象为数据,人们为了更好地利用和处理数据,
又必须把针对某一方面应用的相关数据按照一定的数据结构形式组织起来。这种数据结
构形式只考虑数据本身的结构以及相互的自然联系,是人们对现实世界的认识和抽象,不考虑在计算机上的具体实现,也可以说与计算机的具体实现无关,所以被人们称之为概念数据模型。表示概念数据模型的工具有许多种,其中最常用的一种叫做实体联系模型,简称ER模型。若图片无法显示请联系QQ3710167,BBS论坛系统-数据库课程设计系统免费,转发请注明源于www.lwfree.cn
BBS论坛系统数据库E—R模型图如下图1:
图1 论坛系统E-R图
由上一步概念设计得到四个基本表:论坛用户表、主贴表、跟贴表和版块表。从而得出关系模式:
论坛用户表(用户编号,拥护昵称,密码,电子邮件,生日,性别,用户等级,用户备注,注册日期,用户状态,用户积分)
主帖表(贴子编号,所在版块编号,发贴人编号,回复数量,发贴表情,标题,正文,发贴时间,点击数,状态,最后回复时间)
跟帖表(贴子编号,回复的主贴编号,所在版块编号,回贴人编号,回贴表情,正文,回贴时间,点击数)
版块表(版块编号,版块名称,版主的用户编号,版面简介,点击率,发贴数)
(一)物理结构设计
先启动服务管理器如图2
打开查询分析器建立数据库bbsDB。
创建数据库是检测是否存在bbsDB,如果存在,则先删除再创建。
exec xp_cmdshell 'mkdir E:\ys'
use master
go
if exists(select * from sysdatabases where name='bbsDB')
drop database bbsDB
go
create database bbsDB
on primary
(
name='bbsDB_data',
filename='E:\ys\bbsDB_mdf',
size=10mb,
filegrowth=20%
)
log on
(
name='bbsDB_log',
filename='E:\ys\bbsDB_ldf',
size=3mb,
maxsize=20mb,
filegrowth=10%
)109
 
BBS论坛系统-数据库课程设计
go
数据库保存在E:\ys下,主数据文件增长20%。
下面用SQL语句给出它的结构定义表1
表1 结构定义表







表名

作用

备注


论坛用户表

bbsUsers

存储注册的用户信息

用户注册后才能发贴和回贴


主贴表

bbsTopic 

存储主贴的内容

因主贴和跟贴有些内容不同,因此分为两张表


跟贴表

bbsReply

存储跟贴的内容


版块表

bbsSection

存储版块的信息

包括版块名、版主等信息
表2 bbsDB数据库中的表





列名

数据类型

长度

是否允许为空

默认值

描述
 


UID

int

4

不允许

 

用户编号,标识列、自动增长,主键


Uname

varchar

15

不允许

 

用户名。昵称


Upassword

varchar

10

不允许

888888

密码,必须大于6位


Uemail

varchar

20

允许

 

必须包含“@”符号


Usex

bit

1

不允许

1(男)

性别


Uclass

int

4

允许

1

用户的级别(几星级)


Uremark

varchar

20

允许

 

备注信息


UregDate

datetime

 

不允许

当天日期

注册日期


Ustate

int

4

允许

0(离线)

状态,例如是否被禁言,是否在线


Upoint

int

4

允许

20

用户的积分(点数)
表3 论坛用户表结构





列名

数据类型

长度

是否允许为空

默认值

描述


SID

int

4

不允许

 

 


Sname

varchar

32

不允许

 

 





SmasterID

int

4

不允许

 

版主的用户ID,外键;引用用户表bbsUsers的主键UID


Sprofile

varchar

20

允许

 

版面简介


SclickCount

int

4

允许

0

点击率


StopicCount

int

4

允许

0

发贴数
                             表4 版块表的结构





列名

数据类型

长度

是否允许为空

默认值

描述


TID

int

4

不允许

 

贴子编号,自动增长


TsID

int

4

不允许

 

版块编号;外键,引用bbsSection表的主键UID


TuID

int

4

不允许

 

发贴人ID;外键,引用bbsUsers表的UID


TreplyCount

int

4

允许

0

回复数量


Tface

int

4

允许

 

发贴表情


Ttopic

varchar

20

不允许

 

标题


Tcontents

varchar

30

不允许

 

正文,必须大于6个字符


Ttime

datetime

8

允许

当天

发贴时间


TclickCount

int

4

允许

0

点击数


Tstate

int

4

不允许

1

状态,例如是否被锁,是否为精华贴


TlastReply

datetime

4

允许

 

最后回复时间,必须晚于发贴时间
表5主贴表的结构





列名

数据类型

长度

是否允许为空

默认值

描述


RID

int

4

不允许

 

自动编号,贴子编号


RtID

Int

4

不允许

 

主贴ID,外键,引用bbsTopic表的主键TID


RsID

int

4

不允许

 

版块ID,外键,引用bbsSection表的主键SID


RuID

int

4

不允许

 

回贴人ID;外键,引用bbsUsers表的主键UID


Rface

int

4

允许

 

回贴表情
 
 
 
BBS论坛系统-数据库课程设计




Rcontens

varchar

30

不允许

 

正文,必须大于6个字符


Rtime

datetime

8

允许

当天

回贴时间


RclickCount

int

4

允许

 

点击数
                                         跟贴表的结构
在查询分析器里创建这四张表
创建bbsUsers表
create table bbsUsers
(
UID int not null identity(1,1),
Uname varchar(15) not null,
Upassword varchar(10) not null,
Ubirthday datetime not null,
Uemail varchar(20),
Usex bit not null,
Uclass int,
Uremark varchar(20),
UregDate datetime not null,
Ustate int,
Upoint int,
);
创建bbsSection表
create table bbsSection
(
SID int not null identity(1,1),
Sname varchar(32) not null,
SmasterID int not null,
Sprofile varchar(20),
SclickCount int,
StopicCount int,
);
创建bbsTopic表
create table bbsTopic
(
TID int not null identity(1,1),
TsID int not null,
TuID int not null,
TreplyCount int ,
Tface int ,
Ttopic varchar(20) not null,
Tcontents varchar(30) not null,
Ttime datetime,
TclickCount int ,
Tstate int not null,
TlastReply datetime
);
创建bbsReply表
create table bbsReply
(
RID int not null identity(1,1),
RtID int not null,
RsID int not null,
RuID int not null,
Rface int,
Rcontents varchar(30) not null,
Rtime datetime,
RclickCount int
);
根据结构表中的说明添加约束
为bbsUsers表添加约束条件
alter table bbsUsers add constraint PK_UID primary key(UID)
alter table bbsUsers add constraint DF_Upssword default (888888) for Upassword                                          
alter table bbsUsers add constraint CK_Upassword check(Len(Upassword)>=6)
alter table bbsUsers add constraint CK_Uemail check(Uemail like '%@%')
alter table bbsUsers add constraint DF_Usex default(1) for Usex
alter table
alter table bbsUsers add constraint DF_Ustate default(0) for Ustate
alter table bbsUsers add constraint DF_Upoint default(20) for Upoint                                         
为bbsSection表添加约束条件
alter table bbsSection add constraint PK_SID primary key(SID)
alter table bbsSection add constraint DF_SclickCount default(0) for SclickCount
 
BBS论坛系统-数据库SQL Server 2000课程设计
alter table bbsSection add constraint DF_StopicCount default(0) for StopicCount
alter table bbsSection add constraint Fk_SmasterID
foreign key(SmasterID) references bbsUsers(UID)
为bbsTopic表添加约束条件
alter table bbsTopic add  constraint PK_TID primary key(TID)
alter table bbsTopic add constraint DF_TreplyCount default(0) for TreplyCount
alter table bbsTopic add constraint DF_Ttime default(getdate()) for Ttime
alter table bbsTopic add constraint DF_TclickCount default(0) for TclickCount
alter table bbsTopic add constraint DF_Tstate default(1) for Tstate
alter table bbsTopic add constraint FK_TsID
foreign key(TsID) references bbsSection(SID)
alter table bbsTopic add constraint FK_TuID
foreign key(TuID) references bbsUsers(UID)
为bbsReply表添加约束条件
alter table bbsReply add constraint PK_RID primary key(RID)
alter table bbsReply add constraint DF_Rtime default(getdate()) for Rtime
alter table bbsReply add constraint FK_RtID
foreign key(RtID) references bbsTopic(TID)
alter table bbsReply add constraint FK_RsID
foreign key(RsID) references bbsSection(SID)
alter table bbsReply add constraint FK_RuID
foreign key(RuID) references bbsUsers(UID)
向四个表中录入数据
insert into bbsUsers(Uname,Upassword,Uemail,Ubirthday,Uremark,Upoint)
values('可卡因','HYXS007','ss@HotMail.com','1978-7-09','我要去公安局',50)

insert into bbsUsers(Uname,Upassword,Uemail,Ubirthday,Uremark,Upoint)
values('冬离儿','fangdong','bb@sohu.com','1976-10-03','爱迷失在天堂',1200)
insert into bbsUsers(Uname,Upassword,Uemail,Ubirthday,Uremark,Upoint)
values('Super','master','dd@p.com','1977-5-16','BBS大斑竹',5000)
select * from bbsUsers
go
insert into bbsSection (Sname,SmasterID,Sprofile,SclickCount,StopicCount)
values ('JAVA技术',3,'讨论JAVA相关技术',500,1)
insert into bbsSection (Sname,SmasterID,Sprofile,SclickCount,StopicCount)
values ('.net',2,'讨论Web Service',800,1)
insert into bbsSection (Sname,SmasterID,Sprofile,SclickCount,StopicCount)
values ('LinusUnix社区',2,'包含系统维',10,2)
select * from bbsSection
go
insert into bbsTopic
values (1,3,2,1,'还是jsp中的问题','jsp文件中读取','2007-10-10',200,1,'2007-10-11')
insert into bbsTopic
values (2,2,2,2,'部署.net中的问题','项目包括windows','2007-10-11',0,1,'2007-10-12')
select * from bbsTopic
go
insert into bbsReply(RtID,RsID,RuID,Rface,Rcontents,Rtime,RclickCount)
values (1,1,3,2,'数据库联接池在','2007-10-10',100)
insert into bbsReply(RtID,RsID,RuID,Rface,Rcontents,Rtime,RclickCount)
values (1,1,4,4,'public static date','2007-10-10',200)
insert into bbsReply(RtID,RsID,RuID,Rface,Rcontents,Rtime,RclickCount)
values (2,2,2,3,'帮测试人员架as','2007-10-10',0)
select * from bbsReply
go    

创建视图:为了向客户显示信息友好,查询各表,要求字段全为中文字段名。      
create view vbbsUsers
as
select 用户编号=UID,用户昵称=Uname,密码=Upassword,电子邮件=Uemail,性别=Usex,等级=Uclass,备注=Uremark,注册日期=UregDate,状态=Ustate,积分=Upoint
from bbsUsers
go
select * from vbbsUsers
 
create view vbbsSection
as
select版块编号=SID,版块名称=Sname,版主的用户编号=SmasterID,版面简介=Sprofile,点击率=SclickCount,发贴数=StopicCount
from  bbsSection
go
select * from  vbbsSection                                     
 
create view vbbsTopic
as
select 贴子编号=TID,所在版块编号=TsID,发贴人编号=TuID,回复数量=TreplyCount,发贴表情=Tface,标题=Ttopic,正文=Tcontents,发贴时间=Ttime,点击数=TclickCount,状态=Tstate,最后回复时间=TlastReply
from bbsTopic
go
select * from vbbsTopic
 
create view vbbsReply
as
select贴子编号=RID,回复的主贴编号=RtID,所在版块编号=RsID,回贴人编号=RuID,回贴=Rface,正文Rcontents,回贴时间=Rtime,点击率=RclickCount
from bbsReply
go
select * from vbbsReply
 
BBS论坛系统-数据库SQL Server 2000课程设计
3.设计结果及分析
(1) 修改密码
心酸股东(用户编号为2)修改用户密码为abcdef
Supper(用户编号为3)修改用户密码为123456
update bbsUsers set Upassword='abcdef' where UID='2'
update bbsUsers set Upassword ='123456' where UID='3'
(2)       系统信息。
查询用户昵称为心酸股东的发贴情况。
此查询需要查看主贴表和跟贴表,但这些表中没有“心酸股东”的昵称,所以需要依靠用户编号才能查找。
set nocount on
print''
print '个人信息'
select 昵称=Uname,等级=Uclass, 个人说明=Uremark, 积分=Upoint
from bbsUsers where Uname='心酸股东'
print'心酸股东发贴如下:'
select 发贴时间=convert(varchar(10),Ttime,111),点击率=TclickCount,主题内容=Ttopic
from bbsTopic,bbsUsers  where bbsTopic.TuID=bbsUsers.UID and bbsUsers.Uname='心酸股东'
print'心酸股东回帖如下图3:'
select 回贴时间=convert(varchar(10),Rtime,111),点击率=RclickCount,回帖内容=Rcontents
from bbsReply,bbsUsers where bbsReply.RuID=bbsUsers.UID and bbsUsers.Uname='心酸股东'  
(2)       提高用户的积分。
鉴于目前的星级用户偏少,用户普遍因积分较少而发贴热情不高,这也间接影响了论坛的人气,版主希望通过提高用户的积分,从而增加星级用户。每用户均增加积分300。星级用户的评定规则如下:
积分:0-500评为1星级;500-1000评为2星级;1000-2000评为3星级;2000-4000评为4星级;4000-5000评为5星级,5000以上评为6星级,提分后显示用户星级和积分情况。
print '开始提分,请稍候。。。。'
update bbsUsers set  Upoint= Upoint+200 where Ustate<>4
update bbsUsers
set Uclass=
case
when Upoint<500 then 1
when Upoint between 500 and 1000 then 2
when Upoint between 1001 and 2000 then 3
when Upoint between 2001 and 4000 then 4
when Upoint between 4001 and 5000 then 5
else 6
end
print '----------------------加分后的用户级别情况-----------------------'
select 昵称=Uname,星级=
case
when Uclass=0 then ''
when Uclass=1 then '★'
when Uclass=2 then '★★'
when Uclass=3 then '★★★'
when Uclass=4 then '★★★★'
when Uclass=5 then '★★★★★'
else '★★★★★★'
end ,
积分=Upoint
from bbsUsers
go
 
BBS论坛系统-数据库课程设计
(2)    显示精华贴的信息以及回贴详细信息。
假设论坛规定:回贴数最多的贴子称为第一精华贴。表情数字及对应的含义:
1为^(00)^猪头;2为*:0)小丑;3为[:|]机器人;4为{^0~0^}老人家;5为(:<)吹水大王。
print '第一精华贴的信息如下:'
select 发贴时间=Ttime, 点击率=TclickCount, 作者=Uname, 主题=Ttopic, 内容=Tcontents
from bbsTopic inner join bbsUsers on TuID=UID where TreplyCount=(select max(TreplyCount)  from  bbsTopic)
print ''
print '回帖数:'+ +'贴: 如下所示:'
select 回帖数=Rtime,点击率=RclickCount,回帖表情=
case
when Rface=1 then '^(00)^猪头'
when Rface=2 then '*:0)小丑'
when Rface=3 then '[:|]机器人'
when Rface=4 then '{^0~0^}老人家'
when Rface=5 then '(:<)吹水大王'
end
,回帖内容=Rcontents from bbsReply如图4
(2)    实现论坛的年度评估。
1)论坛人气评估:论坛总点击率〉1000,为“人气熊旺旺”;否则就为“一般般”。
2)年度回贴人气最旺奖:回贴的点击率排名前2名。
年度业绩最差版主:版主点击率低于500或主贴量等于0 。
use bbsDB
go
set nocount on
print’-->>各位大虾注意了,本论坛即将发布年度无记名评奖<<--‘
if (select sum(SclickCount) from bbsSection)>1000
print’论坛人气年度评估:熊旺旺,大家辛苦了!‘
else
print’ 论坛人气年度评估:一般般,大家加油啊!‘
print’年度回贴人气最旺的前两名‘
select 大名=Uname,星级=Uclass from bbsUsers
where UID in (select TOP 2 TuID from bbsTopic order by TclickCount DESC)
print’ 年度业绩最差版主’
if exists (select* from bbsSection where StopicCount=0 or SclickCount<=500)
begin
print’请下列版块的版主加加油哦!‘
select 版块名称=Sname,主贴数量=StopicCount,点击率=SclickCount from
bbsSection
where StopicCount=0 or SclickCount<=500
end
4.设计体会
这个设计都覆盖了insert,update,if语句,日期函数,子查询,优化查询,创建视图等技能点。
课程设计是培养我们综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们实际工作能力的具体训练和考察过程.此次课程设计,我学到很多很多的的东西,不仅巩固了以前所学过的知识,而且还学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
5.参考文献
[1] 陈伟.SQL Server 2005数据库应用与开发教程[M].2007, 9: 97-139
[2] 何文华,李萍.SQL Server2000[M]. 北京:电子工业出版社,2004,8:2-122
[3] 王珊,萨师煊.数据库系统概论[M]. 北京: 高等教育出版社,2006,5:1-224
 
 
设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师