第13章 设计实例——网上论坛系统.ppt_第1页
第13章 设计实例——网上论坛系统.ppt_第2页
第13章 设计实例——网上论坛系统.ppt_第3页
第13章 设计实例——网上论坛系统.ppt_第4页
第13章 设计实例——网上论坛系统.ppt_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第13章 设计实例网上论坛系统,13.1 论坛概述 13.2 用户注册、登录、注销和个人资料管理功能模块 13.3 话题管理功能模块 13.4 回复管理功能模块 13.5 论坛栏目信息模块 13.6 论坛话题搜索功能模块 13.7 论坛管理功能模块 13.8 软件测试、运行与维护,本章学习目标,软件项目开发的六个阶段 软件项目的需求分析 软件项目的系统设计和模块划分 论坛系统的主要功能及其实现 软件的测试与维护 论坛系统的主要功能,13.1 论坛概述,13.1.1 需求分析和说明 13.1.2 软件设计和功能模块划分,返回首页,图13-1 软件项目开发的六个阶段,13.1.1 需求分析和说明,

2、表13-1 用户信息表user_info,表13-2 话题信息表art_info,表13-3 回复信息表re_info,表13-4 栏目信息表column_info,返回本节,13.1.2 软件设计和功能模块划分,1设置程序代码文件的存放位置 2创建数据库和ODBC数据源 3创建层叠样式表文件 4创建公用函数文件 5编辑global.asa文件 6功能模块划分,图13-2 网上论坛系统功能模块划分,返回本节,13.2 用户注册、登录、注销和个人资料管理功能模块,13.2.1 模块功能描述 13.2.2 用户注册 13.2.3 用户登录 13.2.4 用户注销 13.2.5 修改个人资料,返回首

3、页,13.2.1 模块功能描述,网上论坛系统要求用户注册并登录后才能进行发表新话题、回复话题和搜索话题等操作。注册时需要填写用户个人资料,包括用户姓名、登录密码、电子邮件和个人介绍等内容。填写完成并提交后,系统要验证提交数据是否有效,如果有效则将该用户的个人资料写入用户信息表user_info。用户登录论坛时,需要输入用户姓名和登录密码,系统在用户信息表user_info中查询是否存在该用户,如果存在则认为该用户是论坛合法用户,允许其登录论坛,否则不允许其登录。,返回本节,13.2.2 用户注册,用户首先在注册页中填写个人资料,如图13-3所示。,填写完成后单击“提交”按钮,将数据提交给用户注

4、册执行页register.asp。该页接收用户提交的注册信息,并验证注册信息的有效性,如果无效,则显示错误信息,并返回register.htm页重新注册;如果有效则将该用户的注册信息添加到用户信息表user_info中,显示注册成功信息,并进入论坛主页面main_bbs.asp。register.asp页的程序源代码如下: %如果程序代码在执行过程中遇到错误,则将其忽略,继续向下执行,On Error Resume Next 接收register.htm页提交的用户注册信息,并去掉数据开头和结尾的空格 user_name=Trim(Request.Form(user_name) 用户姓名 us

5、er_pwd=Trim(Request.Form(user_pwd) 登录密码 user_pwd2=Trim(Request.Form(user_pwd2) 确认密码 e_mail=Trim(Request.Form(e_mail) 电子邮件 intro=Trim(Request.Form(intro) 自我介绍 初始化自动跳转页变量return_url为“返回上一页” return_url=JavaScript:History.Back(),返回本节,13.2.3 用户登录,用户登录页default.htm是论坛默认打开页,提供用户登录功能,如图13-4所示。,用户输入用户名称和登录密码,然

6、后单击“登录”按钮,将登录数据提交给用户身份验证页chk_user.asp。该页接收用户提交的登录信息,并验证登录信息的有效性,如果无效,则显示错误信息,并返回default.htm页重新登录;如果有效则显示登录成功信息,并进入论坛主页面main_bbs.asp。chk_user.asp页的程序源代码如下: %On Error Resume Next user_name=Trim(Request(user_name) 用户姓名 user_pwd=Trim(Request(user_pwd) 登录密码 return_url=default.htm,如果登录数据不完整、登录数据存在非法字符、账号正

7、在被使用或登录数据不正确,则返回上一页,否则将用户名称(user_name)和用户权限(ctrl_lev)分别赋值给Session(user_name)和Session(ctrl_lev),并跳转到论坛栏目主页面 If (user_name=Empty) Or (user_pwd=Empty) Then errmsg=登录失败!请正确输入名称和密码。 Elseif Instr(user_name,)0 Or Instr(user_name,0 Or Instr (user_name,)0 Or Instr(Lcase(user_name),Or)0 Or Instr(user_pwd,) 0

8、Or Instr(Lcase(user_pwd),Or)0 Then errmsg=登录失败!请正确输入名称和密码。 Elseif Instr(Application(online_name),&user_name&)0 Then errmsg=登录失败!该账号正在被使用。 Else,sql_chk_user=Select * From user_info Where user_name=&user_name& And user_pwd=&user_pwd& Set rs_chk_user=conn_db(sql_chk_user,1) If rs_chk_user.Eof Then errm

9、sg=登录失败!请正确输入名称和密码。 Else errmsg=登录成功!你好,&rs_chk_user(user_name)&!冷雨论坛欢迎你的到来。 Session(user_name)=user_name,Session(ctrl_lev)=rs_chk_user(ctrl_lev) return_url=main_bbs.asp End If close_conn(rs_chk_user) End If% .: 冷雨论坛 :. ,返回本节,13.2.4 用户注销,用户离开论坛时执行用户注销页logout.asp。程序中首先将该用户名从在线用户名单中删除,然后将该用户的所有会话信息清空,

10、再用Session的Abandon方法结束用户的会话,释放其所占的资源,并返回default.htm登录页。logout.asp页的程序源代码如下: ,返回本节,13.2.5 修改个人资料,修改个人资料时要具有良好的操作性,需将用户的个人资料回显,便于用户修改,其页面显示如图13-5所示。,updt_info.asp页的程序源代码如下: %On Error Resume Next If Session(user_name)= Then Response.Redirectdefault.htm End If user_pwd=Trim(Request.Form(user_pwd) 登录密码 us

11、er_pwd2=Trim(Request.Form(user_pwd2) 确认密码 e_mail=Trim(Request.Form(e_mail) 电子邮件 intro=Trim(Request.Form(intro) 自我介绍 return_url=JavaScript:History.Back() 用户更新信息验证。如果用户更新的内容有任一项为空,或登录密码同确认密码不相符,则返回上一页;如果密码里存在非法字符,则返回上一页,否则就更新该用户信息,If (user_pwd=Empty) Or (user_pwd2=Empty) Or (e_mail=Empty) Or (intro=Em

12、pty) Or (user_pwduser_pwd2) Then errmsg=修改失败!原因可能是:1. 表格填写不完整;2. 表格填写有误,如“登录密码”和“确认密码”不符等;3.内容中存在非法字符,如“”、“Or”、“”、“”等。 Elseif Instr(user_pwd,)0 Or Instr(Lcase(user_pwd),Or)0 Then errmsg=修改失败!原因可能是:1. 表格填写不完整;2. 表格填写有误,如“登录密码”和“确认密码”不符等;3.内容中存在非法字符,如“”、“Or”、“”、“”等。 Else,sql_updt_info=Update user_info

13、 Set user_pwd= URL= ,返回本节,13.3 话题管理功能模块,13.3.1 模块功能描述 13.3.2 发表新话题 13.3.3 修改话题 13.3.4 删除话题,返回首页,13.3.1 模块功能描述,话题管理包括添加新话题、修改话题和删除话题三部分。用户登录后,就可以执行发表新话题操作,操作时要求提供新话题的标题和内容。用户填写完毕并提交后,系统要验证提交资料是否有效,如果有效则将该话题信息写入话题信息表art_info。栏目管理员和超级管理员可以执行修改话题和删除话题操作。修改话题是在话题信息表art_info中更新该话题的记录。删除话题时,不但要删除话题信息表art_i

14、nfo中相应的话题记录,还要删除回复信息表re_info中该话题的回复记录。,返回本节,13.3.2 发表新话题,发表新话题wrt_art.asp页面显示如图13-6所示。,add_art.asp页的程序源代码如下: %On Error Resume Next If Session(user_name)= Then Response.Redirectdefault.htm End If art_sub=Trim(Request.Form(art_sub) 话题标题 content=Trim(Request.Form(content) 话题内容 column_id=Request.Form(co

15、lumn_id) 话题所属栏目编号 如果标题和内容都不为空,则将该主题信息写入表art_info If (art_sub=) Or (content=) Then errmsg=主题标题和主题内容不能为空! return_url=JavaScript:History.Back() Else,sql_add_art=insert into art_info (art_sub, content, author, app_time, read_amt, column_id) values ( URL= ,返回本节,13.3.3 修改话题,修改话题时需将话题资料回显,便于用户修改,其页面显示如图13-

16、7所示。,返回本节,13.3.4 删除话题,删除话题执行页del_art.asp删除话题信息表art_info中指定的话题记录,同时删除回复信息表re_info中该话题的回复记录,显示删除成功信息,并跳转到论坛栏目主页面main_column.asp。del_art.asp页的程序源代码如下: %On Error Resume Next If Session(user_name)= Then Response.Redirectdefault.htm End If art_id=Request(art_id) 话题编号,column_id=Request(column_id) 话题所属栏目编号

17、删除该主题信息 sql_del_art=Delete From art_info Where art_id= URL= ,返回本节,13.4 回复管理功能模块,13.4.1 模块功能描述 13.4.2 回复话题 13.4.3 修改回复话题 13.4.4 删除回复话题,返回首页,13.4.1 模块功能描述,回复管理模块和话题管理模块类似,包括回复话题、修改回复和删除回复三部分。用户浏览话题时可以回复该话题,论坛需要给用户提供一个回复话题页面。在该页面中,用户填写回复内容并提交后,系统要验证提交资料是否有效,如果有效则将该回复信息写入回复信息表re_info。栏目管理员和超级管理员可以执行修改回复

18、和删除回复操作。修改回复是在回复信息表re_info中更新该回复的记录数据。删除回复比较简单,只要删除回复信息表art_info中相应的回复记录即可。,返回本节,13.4.2 回复话题,回复话题页面显示如图13-8所示。,返回本节,13.4.3 修改回复话题,修改回复话题时需要将回复资料回显,便于用户修改,其页面显示如图13-9所示。,返回本节,13.4.4 删除回复话题,删除回复话题的执行过程同删除话题类似,所不同的是此时是删除回复信息表re_info中指定的记录。,返回本节,13.5 论坛栏目信息模块,13.5.1 模块功能描述 13.5.2 论坛栏目浏览 13.5.3 话题内容浏览,返回

19、首页,13.5.1 模块功能描述,该模块包括论坛主页面、栏目主页面和话题内容页面三部分。用户登录后,首先进入论坛主页面,该页列出所有论坛栏目信息供用户选择进入各栏目主页面,栏目信息保存在栏目信息表column_info中。栏目主页面列出该栏目所有的话题信息,用户可以通过单击话题的标题进入话题内容页面,以阅读该话题以及回复的详细内容。,返回本节,13.5.2 论坛栏目浏览,论坛主页面main_bbs.asp中包含的内容比较多。该页面首先在栏目信息表column_info中读取论坛所有栏目的基本信息,在话题信息表art_info中查询某一指定栏目的所有话题信息,得到其数量,然后在回复信息表re_i

20、nfo中查询该指定栏目所有话题的全部回复信息,得到其数量并累加,得到该栏目所有回复信息的数量,最后将以上信息依次显示出来。另外提供论坛管理入口以及系统时间、在线人数和在线用户名单等辅助信息,如图13-10所示。,图13-10 论坛主页面main_bbs.asp,图13-11 栏目主页面main_column.asp,返回本节,13.5.3 话题内容浏览,话题内容浏览页面art_content.asp显示单个话题以及该话题的所有回复信息,如图13-12所示。,返回本节,13.6 论坛话题搜索功能模块,13.6.1 模块功能描述 13.6.2 功能实现,返回首页,13.6.1 模块功能描述,该模块

21、可以让用户搜索指定作者、指定栏目以及指定时间范围内的话题信息。用户提交搜索条件后,页面将列出所有符合条件的话题信息。,返回本节,13.6.2 功能实现,话题搜索页search_art.asp将指定搜索条件和搜索结果的显示放在同一个页面里,用户易于操作,也减少了程序文件的数量,如图13-13所示。,search_art.asp页的程序源代码如下: %On Error Resume Next If Session(user_name)= Then Response.Redirectdefault.htm End If 获取搜索主题的作者信息。如果没有指定作者信息,则默认为当前登录用户。 autho

22、r=Request(author) If author= Then author=Session(user_name) End If 获取搜索主题的时间范围信息,并将其转换为时间范围的下限。 date_bound=Request(date_bound) Select Case date_bound Case 1_day date_bound=dateserial(year(date(),month(date(),day(date()-1),Case 3_day date_bound=dateserial(year(date(),month(date(),day(date()-3) Case 1

23、0_day date_bound=dateserial(year(date(),month(date(),day(date()-10) Case 1_month date_bound=dateserial(year(date(),month(date()-1,day(date() Case 3_month date_bound=dateserial(year(date(),month(date()-3,day(date() Case 1_year date_bound=dateserial(year(date()-1,month(date(),day(date() Case Else date

24、_bound=dateserial(year(date()-1,month(date(),day(date() End Select date_bound=Datevalue(date_bound),获取搜索主题的栏目ID信息。如果没有指定栏目ID,则默认为所有栏目 column_id=Request(column_id) If column_id= Then column_id=all_column End If 读取指定作者、指定时间范围以及指定栏目的主题信息,以发表时间降序排列 If column_id=all_column Then sql_search_art=Select * Fr

25、om art_info Where author=&author& And app_time=&date_bound& order by app_time desc Else sql_search_art=Select * From art_info Where author=&author& And app_time=&date_bound& And column_id=&column_id& order by app_time desc End If Set rs_search_art=conn_db(sql_search_art,1)%,.: 冷雨论坛 :. .: 冷雨论坛 :. 注册

26、| 档案 | 搜索 | 注销 | 首页 搜索用户 ,&rs_author_list(user_name) Else Response.Write &rs_author_list(user_name) End If rs_author_list.Movenext Wend close_conn(rs_author_list)%,在 所有栏目 &rs_column_list (column_name) Else Response.Write & rs_column_list (column_name) End If rs_column_list.Movenext Wend close_conn(r

27、s_column_list)% 中 昨天 3天 10天 1个月,3个月 1年 以来的所有主题 没有搜索到的主题 ,返回本节,13.7 论坛管理功能模块,13.7.1 模块功能描述 13.7.2 管理主页面 13.7.3 管理功能实现,返回首页,13.7.1 模块功能描述,论坛管理是任何论坛系统都不可缺少的功能。该模块包括论坛栏目管理(添加、修改和删除栏目)、论坛权限管理(添加和删除管理员)和论坛用户管理(删除用户)三部分。论坛限制只有超级管理员级别的用户才能进入该管理模块执行操作。,返回本节,13.7.2 管理主页面,论坛管理页面admin.asp将添加栏目、修改栏目、添加管理员、删除管理员和

28、删除用户五组提交表单放在一起。每个表单都通过操作类型(oper_type)区分,如图13-14所示。,返回本节,13.7.3 管理功能实现,论坛管理执行页admin_oper.asp也把论坛管理的各种操作放在一起。程序接收用户提交数据信息后,根据操作类型(oper_type)执行相应的程序代码段,从而实现了在同一个程序文件中执行多种操作。admin_oper.asp页的程序源代码如下: %On Error Resume Next If Session(user_name)= Then Response.Redirect default.htm End If 从admin.asp提交的数据中获取

29、操作类型(oper_type)参数,根据该参数的值进行不同的操作。 oper_type=Request(oper_type),“添加栏目”操作。先判断栏目名称(column_name)和栏目简介(column_resume)是否为空。如果任一项为空,则返回上一页;如果都不为空,则继续判断该栏目名称是否已经被使用。如果已经被使用,则返回上一页,如果没有被使用,则添加该新栏目信息。 If oper_type=add_column Then column_name=Trim(Request.Form(column_name) column_resume=Trim(Request.Form(resum

30、e) If column_name= Or column_resume= Then errmsg=栏目名称或栏目简介不能为空! return_url=JavaScript:History.Back() Else sql_chk_column=Select * From column_info Where column_name=& column_name&,Set rs_chk_column=conn_db(sql_chk_column,1) If Not rs_chk_column.Eof Then errmsg=该栏目名称已经被使用,请更换其他名称! return_url=JavaScri

31、pt:History.Back() Else sql_add_column=insert into column_info (column_name, resume) values (&column_name&, &column_resume&) Set rs_add_column=conn_db(sql_add_column,3) errmsg=论坛栏目添加成功! return_url=admin.asp End If close_conn(rs_chk_column) End If “编辑栏目”操作。先判断栏目名称(column_name)和栏目简介(column_resume)是否为空。

32、如果任一项为空,则返回上一页;如果都不为空,则继续判断该栏目名称是否已经被使用。如果已经被使用,则返回上一页,如果没有被使用,则更新该栏目信息,Elseif oper_type=edit_column Then column_id=Trim(Request.Form(column_id) column_name=Trim(Request.Form(column_name) column_resume=Trim(Request.Form(resume) If column_name= Or column_resume= Then errmsg=栏目名称或栏目简介不能为空! return_url=

33、JavaScript:History.Back() Else sql_chk_column=Select * From column_info Where column_name=& column_name& Set rs_chk_column=conn_db(sql_chk_column,1) If Not rs_chk_column.Eof Then errmsg=该栏目名称已经被使用,请更换其他名称!,return_url=JavaScript:History.Back() Else sql_edit_column=Update column_info Set column_name=&

34、column_name& , resume=&column_resume& Where column_id=&column_id Set rs_edit_column=conn_db(sql_edit_column,3) errmsg=论坛栏目修改成功! return_url=admin.asp End If close_conn(rs_chk_column) End If “删除栏目”操作。先删除该栏目所有的回复信息,再删除该栏目所有的主题信息,最后删除该栏目信息 Elseif oper_type=del_column Then column_id=Trim(Request(column_i

35、d) sql_get_art=Select art_id From art_info Where column_id=&column_id Set rs_get_art=conn_db(sql_get_art,1) While Not rs_get_art.Eof,sql_del_re=Delete From re_info Where art_id=&art_id Set rs_del_re=conn_db(sql_del_re,3) rs_get_art.Movenext Wend close_conn(rs_get_art) sql_del_art=Delete From art_inf

36、o Where column_id=&column_id Set rs_del_art=conn_db(sql_del_art,3) sql_del_column=Delete From column_info Where column_id=&column_id Set rs_del_column=conn_db(sql_del_column,3) errmsg=该栏目以及该栏目的主题和回复删除成功! return_url=admin.asp “添加管理员”操作 Elseif oper_type=add_admin Then user_name=Trim(Request.Form(user_

37、name) column_id=Trim(Request.Form(column_id),如果是添加超级管理员,则继续判断该用户的权限,如果该用户已经是超级管理员,则返回上一页;如果该用户不是超级管理员,则将其权限更新为超级管理员(ctrl_lev=3),还要将其在论坛各个栏目的栏目管理员信息去掉,以免出现冗余数据信息 If column_id=0 Then sql_chk_super_admin=Select * From user_info Where ctrl_lev=3 And user_name=&user_name& Set rs_chk_super_admin=conn_db(s

38、ql_chk_super_admin,1) If Not rs_chk_super_admin.Eof Then errmsg=该用户已经是超级管理员,无需再添加! return_url=JavaScript:History.Back() Else sql_updt_aduser_info=Update user_info Set ctrl_lev=3 Where user_name=&user_name& Set rs_updt_aduser_info=conn_db(sql_updt_aduser_info,3),sql_get_admin=Select * From column_inf

39、o Set rs_get_admin=conn_db(sql_get_admin,1) While Not rs_get_admin.Eof tmp_admin_name=rs_get_admin(admin_name) tmp_admin_name=Replace(tmp_admin_name, &user_name&, ) sql_del_admin=Update column_info Set admin_name=& tmp_admin_name& Where column_id=&rs_get_admin(column_id) Set rs_del_admin=conn_db(sql

40、_del_admin,3) rs_get_admin.Movenext Wend close_conn(rs_get_admin) errmsg=超级管理员添加成功! return_url=admin.asp End If,如果是添加栏目管理员,则再判断该用户的权限。如果该用户已经是超级管理员,则返回上一页;如果该用户不是超级管理员,则继续判断其是否已经是该栏目管理员。如果已经是该栏目管理员,则返回上一页;如果不是该栏目管理员,则将该用户添加为该栏目管理员,并将其权限更新为栏目管理员(ctrl_lev=2) Else sql_chk_super_admin=Select * From user

41、_info Where user_name=& user_name& Set rs_chk_super_admin=conn_db(sql_chk_super_admin,1) If rs_chk_super_admin(ctrl_lev)=3 Then errmsg=该用户已经是超级管理员,无需再添加! return_url=JavaScript:History.Back() Else,d&And admin_name Like %&user_name&% Set rs_chk_admin=conn_db(sql_chk_admin,1) If Not rs_chk_admin.Eof Th

42、en errmsg=该用户已经是本栏目的管理员,无需再添加! return_url=JavaScript:History.Back() Else sql_get_admin=Select * From column_info Where column_id=&column_id Set rs_get_admin=conn_db(sql_get_admin,1) tmp_admin_name=rs_get_admin(admin_name)&user_name& close_conn(rs_get_admin) sql_add_admin=Update column_info Set admin

43、_name=& tmp_admin_name& Where column_id=&column_id,Set rs_add_admin=conn_db(sql_add_admin,3) sql_updt_user_info=Update user_info Set ctrl_lev=2 Where user_name=&user_name& Set rs_updt_user_info=conn_db(sql_updt_user_info,3) errmsg=栏目管理员添加成功! return_url=admin.asp End If End If End If,“删除栏目管理员”操作。将要删除

44、的管理员信息在该栏目管理员信息中删除,并判断该用户是否担任其他栏目的管理员,如果是则不更新其权限,否则更新其权限为一般注册用户(ctrl_lev=1) Elseif oper_type=del_admin Then column_admin=Trim(Request.Form(column_admin) column_id=Trim(Request.Form(column_id) sql_get_admin=Select * From column_info Where column_id=&column_id Set rs_get_admin=conn_db(sql_get_admin,1)

45、 tmp_admin_name=rs_get_admin(admin_name) tmp_admin_name=Replace(tmp_admin_name, &column_admin&, ) sql_del_admin=Update column_info Set admin_name=&tmp_admin_name& Where column_id=&column_id Set rs_del_admin=conn_db(sql_del_admin,3) close_conn(rs_get_admin),sql_chk_admin=Select * From column_info Where admin_name Like %& colum

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论