web课程设计网络论坛系统.docx

上传人:b****1 文档编号:99432 上传时间:2023-04-28 格式:DOCX 页数:26 大小:485.91KB
下载 相关 举报
web课程设计网络论坛系统.docx_第1页
第1页 / 共26页
web课程设计网络论坛系统.docx_第2页
第2页 / 共26页
web课程设计网络论坛系统.docx_第3页
第3页 / 共26页
web课程设计网络论坛系统.docx_第4页
第4页 / 共26页
web课程设计网络论坛系统.docx_第5页
第5页 / 共26页
web课程设计网络论坛系统.docx_第6页
第6页 / 共26页
web课程设计网络论坛系统.docx_第7页
第7页 / 共26页
web课程设计网络论坛系统.docx_第8页
第8页 / 共26页
web课程设计网络论坛系统.docx_第9页
第9页 / 共26页
web课程设计网络论坛系统.docx_第10页
第10页 / 共26页
web课程设计网络论坛系统.docx_第11页
第11页 / 共26页
web课程设计网络论坛系统.docx_第12页
第12页 / 共26页
web课程设计网络论坛系统.docx_第13页
第13页 / 共26页
web课程设计网络论坛系统.docx_第14页
第14页 / 共26页
web课程设计网络论坛系统.docx_第15页
第15页 / 共26页
web课程设计网络论坛系统.docx_第16页
第16页 / 共26页
web课程设计网络论坛系统.docx_第17页
第17页 / 共26页
web课程设计网络论坛系统.docx_第18页
第18页 / 共26页
web课程设计网络论坛系统.docx_第19页
第19页 / 共26页
web课程设计网络论坛系统.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

web课程设计网络论坛系统.docx

《web课程设计网络论坛系统.docx》由会员分享,可在线阅读,更多相关《web课程设计网络论坛系统.docx(26页珍藏版)》请在冰点文库上搜索。

web课程设计网络论坛系统.docx

web课程设计网络论坛系统

设计总说明.........................................................3

系统分析与设计.....................................................4

1、需求分析.......................................................4

2、功能设计.......................................................4

3、数据库设计.....................................................4

系统实现...........................................................7

1、论坛浏览.......................................................7

2、用户使用.......................................................12

3、管理员使用.....................................................17

心得体会...........................................................20

参考文献...........................................................20

 

设计总说明

一、课程设计的意义:

作为《web程序设计》课程的延伸,在学生完成了《web程序设计》课程的理论学习后,安排的课程设计,旨在提高学生web程序开发水平,培养学生网络编程的能力。

二、设计内容

设计一个网络论坛系统。

三、设计要求

系统功能:

1、注册新用户:

新用户填写注册表单,包括用户姓名、密码、联系方式等信息;如果输入用户名已被注册过,系统提示用户更改自己的用户名。

2、用户登录:

输入用户名和密码;若用户输入有误,系统将提示错误。

3、用户发表帖子;成功登录的用户可以发表帖子。

4、浏览帖子:

成功登录的用户可以浏览其他用户发布的帖子。

5、用户注册信息修改:

用户可以修改自己的注册信息。

6、用户退出登录:

成功登录的用户可以使用该功能退出论坛系统。

 

系统分析与设计

1、需求分析

开发一个论坛系统,首先需要确定论坛的功能是什么,也就是用户想要的论坛所能做的工作。

用户使用论坛是按照一定得流程来进行的:

用户注册登录进入论坛,就某个话题展开讨论,通过发帖功能发布新的话题,通过回帖的功能回复已有的话题,通过搜索查找已有的话题;管理员要管理论坛,系统需要具有的功能管理注册的用户,管理帖子。

这样的流程就决定了论坛所应具有的功能,路摊流程图如下:

通过上面的分析,总结论坛的功能有以下几项:

论坛版块列表;浏览帖子;发帖回帖;搜索帖子;删除帖子;用户注册;用户登录;控制用户权限;修改注册信息;管理用户。

论坛一般存在两种用户,注册用户和管理员。

用户的权限是向下覆盖的,即上级权限包含下级权限,管理员的权限是上级权限。

论坛系统的用户浏览信息功能,是用户讨论问题的平台,发帖、浏览。

回帖一直贯穿用户的整个活动。

同时又有论坛系统的帖子管理是管理员在帖子浏览时进行的,只是一般用户没有权限做这些动作。

2、功能设计

从需求分析可以找到,论坛功能分为用户使用各基本功能和管理员管理的功能。

论坛系统包括以下主要功能:

(1)注册登录功能:

用户注册,登录以及修改个人注册信息;

(2)浏览功能:

用户浏览版块,查看帖子;

(3)发帖回帖功能:

用户发帖、回帖;

(4)帖子管理功能:

管理员删除帖子。

3、数据库设计

1.概要设计:

通过对系统进行的需求分析和系统功能的确定,规划出系统中使用的数据库实体对象分别为用户实体、管理员实体、发帖实体、回帖实体。

因此bbs论坛系统的E-R模型图为:

2.详细设计

(一)设计表

将E-R图转换为关系模型一般遵循如下原则:

  

(1)一个实体型转换为一个关系模式。

实体的属性就是关系的属性,实体的码就是关系的码。

  

(2)一个m:

n联系转换为一个关系模式。

与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。

  (3)一个1:

n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。

如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。

(4)一个1:

1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。

根据上述原则设计的数据表如下:

①用户实体:

用户(用户名、密码、性别、年龄、邮箱、地址、图像、电话)

  ②管理员实体:

管理员(姓名、密码)

  ③发帖实体:

发帖(发帖人、编号、主题、内容、时间、浏览次数、回帖次数)

④回帖实体:

回帖(编号、主题、内容、回帖时间)

(二)设计数据字典

数据字典:

bbs论坛系统会涉及大量的静态数据,如发帖主题、发帖内容、发帖时间、用户年龄、用户性别、用户地址等,这些数据,其数据的组织结构基本一致,现为该系统设计四个数据字典:

用户字典、管理员字典、发帖字典、回帖字典。

用户字典userna:

属性名称

属性类型

是否可以为空

约束

含义

user_name

varchar2(30)

NOTNULL

主键

用户名

password

varchar2(20)

NOTNULL

密码

sex

number

(1)

NOTNULL

只能为0和1

性别

age

date

NULL

年龄

userface

varchar2(6)

NULL

图像

email

varchar2(30)

NULL

邮箱

address

varchar2(20)

NULL

地址

tel

varchar2(11)

NULL

电话

管理员字典glb:

属性名称

属性类型

是否可以为空

约束

含义

gl

varchar2(20)

NOTNULL

主键

姓名

pw

varchar2(20)

NOTNULL

密码

发帖字典:

属性名称

属性类型

是否可以为空

约束

含义

art_id

number

NOTNULL

主键

编号

user_name

varchar2(20)

NOTNULL

发帖人

author

varchar2(20)

NOTNULL

主题

content

clbo

NOTNULL

内容

issue_time

date

NULL

发帖时间

view_times

number

NULL

浏览次数

reply_times

number

NULL

回帖次数

回帖字典:

属性名称

属性类型

是否可以为空

约束

含义

re_id

number

NOTNULL

编号

author

varchar(20)

NOTNULL

主题

content

blob

NOTNULL

内容

re_time

date

NOTNULL

回帖时间

系统实现

1、论坛浏览

1、进入主页面

排版说明:

横栏为导航栏,用户可以选择想去的页面;再下一栏为用户登录栏,方便用户登录;左边竖栏为活跃发帖人排行,根据发帖人的发帖数来降序排序;右边一栏为为热门帖子按浏览数降序排序,方便用户看到最好的帖子。

并且帖子被点击一次就会自动增加一次点击数。

贴吧:

此为方便用户浏览所有的帖子。

可以按照时间升降和浏览数升降排序。

效果图如下:

代码实现如下:

按时间降排序

按时间升排序

按浏览降排序

按浏览升排序

标题

发帖时间

发帖人

点击数

回帖数

所有帖子

<%

Stringpx=request.getParameter("paixu");

try

{

Connectioncon=DriverManager.getConnection(url,user,password);

Statementst=con.createStatement();

ResultSetrs=null;

Stringsql="selectuser_name,author,issue_time,view_times,reply_timesfromarticles_bbs";

if(px==null);

elseif(px.equals("0"))

sql=sql+"orderbyissue_timedesc";

elseif(px.equals("1"))

sql=sql+"orderbyissue_time";

elseif(px.equals("2"))

sql=sql+"orderbyview_timesdesc";

elseif(px.equals("3"))

sql=sql+"orderbyview_times";

rs=st.executeQuery(sql);

inti=0;

while(rs.next())

{i++;

out.print("

id="+.URLEncoder.encode(rs.getString

(2))+">"+i+"、"+rs.getString

(2)+"");

out.print(""+rs.getString(3)+"");

out.print("

id="+.URLEncoder.encode(rs.getString

(1))+">"+rs.getString

(1)+"");

out.print(""+rs.getString(4)+"");

out.print(""+rs.getString(5)+"");

}

con.close();

}

catch(SQLExceptionel){out.print(el);}

%>

浏览帖子:

该页面主要显示每个帖子的内容和回帖内容以及相应的用户信息,效果图如下:

代码实现:

首先查询该帖子输出贴主的信息,接着查询对应的回帖表循环输出所有帖子;楼主代码:

request.setCharacterEncoding("gb2312");

Stringun=newString(request.getParameter("id").getBytes("8859_1"));

try

{

Connectioncon=DriverManager.getConnection(url,user,password);

Statementst=con.createStatement();

st.executeUpdate("updatearticles_bbssetview_times=view_times+1whereauthor='"+un+"'");

ResultSetrs=null;

Strings;

intj;

rs=st.executeQuery("selectusersna.user_name,usersna.sex,usersna.userface,extract(yearfromsysdate)-extract(yearfromusersna.age)nl,articles_bbs.issue_time,articles_bbs.content,articles_bbs.view_times,articles_bbs.reply_timesfromusersna,articles_bbswhereusersna.user_name=articles_bbs.user_nameandarticles_bbs.author='"+un+"'");

rs.next();

%>

<%=un%>

回复/<%=rs.getString(8)%>次,浏览/<%=rs.getString(7)%>次

刷新

回帖类似楼主的代码,只是用上了while循环。

2、用户使用

1、注册

说明:

可以点击超链接选择用户喜欢的头像。

用户名、密码和电话用了JavaScript进行限制代码如下:

functioncheck()

{

if(tijiao.username.value.length<1||tijiao.username.value.length>20)

{alert("用户名长度必须在1位到20位之间!

");

returnfalse;

}

if(tijiao.tel.value.length>11||tijiao.tel.value.length<1)

{alert("电话未填!

");

returnfalse;

}

if(tijiao.pw.value.length<6)

{alert("密码的长度应大于等于6位!

");

returnfalse;

}

if(tijiao.pw.value!

=tijiao.pw2.value)

{alert("两次输入的密码不一致!

");

returnfalse;

}}

数据按要求填写后就提交跳转到注册成功页面,该页面主要执行sql数据插入语句。

2、登录

用户登录成功效果图如下:

登录成功后可以出现用户登录状态,并且拥有发帖和回帖的权限以及退出操作。

用户状态在切换页面也不会改变。

登录代码如下:

request.setCharacterEncoding("gb2312");

Stringusername=request.getParameter("user");

Stringpw=request.getParameter("userpw");

intk=0;

try

{

Connectioncon=DriverManager.getConnection(url,user,password);

Statementst=con.createStatement();

ResultSetrs=null;

rs=st.executeQuery("selectuser_name,passwordfromusersnawhereuser_name='"+username+"'");

rs.next();

inti=rs.getRow();

if(session.getAttribute("user")!

=null)

k=k+1;

if(i==0&&k!

=0)

out.print("欢迎"+session.getAttribute("user")+"成员登录/"+"发帖/"+"退出登录/");

elseif(String.valueOf(pw).equals(rs.getString

(2)))

{

out.print("欢迎"+username+"成员登录/"+"发帖/"+"退出登录/");

session.setAttribute("user",username);

}

else

out.print("你还未登录论坛/");

con.close();

}

catch(SQLExceptionel){out.print("你还未登录论坛/");}

3、回帖

效果图如上浏览帖子哪版,是与帖子一起的,其中用JavaScript限制了内容不为空以及用session对象来确定是否登录来判断有无回帖权利。

代码如下:

functioncheck(form)

{

if(form.content.value=="")

{

alert("请填写内容!

");

returnfalse;

}

}

0px">

回帖内容:

request.setCharacterEncoding("gb2312");

Stringcontent=request.getParameter("content");

if(content!

=null)

{

try

{

Connectioncon=DriverManager.getConnection(url,user,password);

Statementst=con.createStatement();

ResultSetrs=null;

st.executeUpdate("updatearticles_bbssetreply_times=reply_times+1whereauthor='"+un+"'");

rs=st.executeQuery("selectart_idfromarticles_bbswhereauthor='"+un+"'");

rs.next();

Stringnum=rs.getString

(1);

st.executeUpdate("insertintoreplies_bbs(re_id,author,repcont,re_time)values('"+num+"','"+session.getAttribute("user")+"','"+content+"',sysdate)");

content="";

out.print("回帖成功");

}

catch(SQLExceptionel){out.print("请先登录");}

4、发帖

效果图如下:

同样用JavaScript限制了内容标题不为空,以及用session对象获得用户信息,存入数据库;代码如下:

functioncheck(form)

{

if(form.author.value=="")

{

alert("请填写主题!

");

form.author.focus();

returnfalse;

}

if(form.content.value=="")

{

alert("请填写内容!

");

form.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2