随着BBS的出现,人们的交流有了新的变化。在BBS里,人们之间的交流打破了空间、时间的限制。BBS连人方便,可以通过Internet登录,也可以通过电话网拨号登录。BBS站往往是由一些有志于此道的爱好看建立,对所有人都免费开放。而且,由于BBS的参与人众多,因此各方面的话题都不乏热心者。可以说,在BBS上可以找到任何你感兴趣的话题。

此系统主要实现BBS网站全部功能。采用目前应用最为广泛的ASP作为开发工具来开发此系统、以保证系统的稳定性。采用目前最为流行的网页制作工具Dreamweaver和目前最为流行的动画制作工具Flash MX。整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发,完成会员的注册,会员发帖,浏览新帖等所要完成的功能和开发的过程。重点的说明了系统设计的重点、设计思想、难点技术和解决方案。我的模块是考勤承认子系统.只要的功能是从数据库里查找出所有员工的出勤和作业信息,供领导的审批。因为审批的项目多,所有要从多个表中查询,这就需要功能强大的数据库支持。如何利用COM组件在数据库里查找数据,就是本论文的核心内容。

关键字:BBS,COM组件,ASP

一、 绪论... 3

(一)  国内外的现状... 3

(二)  技术背景... 4

1.B/S模型的优点... 4

2.ASP技术... 4

3.数据库的应用... 5

二、 需求分析... 6

(一)  任务描述... 6

(二)  系统特点... 6

(三)  系统配置... 7

1. Hardware (硬件)... 7

2. Software (软件)... 7

(三)  编码规范... 8

(四)  相关技术说明... 8

1.COM组件与ASP的集成... 8

2.ASP对 象和ActiveX DLL 比 较... 11

3.ASP 与 组 件 比 较... 11

4.ASP 的" 黏 合" 作 用... 12

三、 系统设计... 13

(一)  模块划分... 13

1.论坛用户管理... 14

2.论坛贴子管理... 14

3.后台管理... 15

(二)  页面设计... 16

1.论坛用户管理... 16

2.论坛贴子管理... 19

3.后台管理... 22

(三)  数据库设计描述... 25

1.帖子信息表... 25

2.回复表... 26

3.链接表... 26

4.用户表... 27

4.附加表... 27

四、 系统实现... 28

(一)  用户注册... 28

(二)  用户登录... 28

(三)  显示发贴信息... 28

五、 参考文献... 30

一、 绪论

(一)  国内外的现状

社区是互联网的灵魂,BBS是网民互动沟通的最佳纽带。
  2005年7月,CNNIC发布的《第十六次中国互联网络发展状况统计报告》显示,在网民经常使用的网络服务/功能选项中,社区/BBS以40.6%的高比例选票,仅次于即时通讯的44.9%。同时,国内知名调查机构艾瑞iResearch发布的《2004年中国网络社区研究报告》也显示,超过68%的网络用户使用过社区/BBS服务。

.B/S模型的优点

几乎没有限制的客户端访问和极其简单化的应用程序部署和管理是B/S模型的优势所在,这一点主要是针对C/S开发模型来说的,因为C/S开发模型,采用服务器/客户端的形式来运行的,所以,客户扩展起来麻烦,而且,维护难,地理位置要求严格,所以,目前,已经有很多分布式的系统,都采用了B/S架构。

.ASP技术

 采用一种已经成熟的语言,一种简单的语言,有利于我们刚毕业的新生来开发这个系统。虽然,大家一再强调,ASP技术已经被取代,但目前,还是有很多公司继续使用它,可见,其稳定性还是可以的,开发出来的系统还是可以在企业中良好的运用的,所以,为我们开发系统,提供了很好的基础。

.数据库的应用

一个成功的信息管理系统,是建立在许多条件之上的,而数据库是其中一个非常重要的条件和关键技术。信息管理系统所涉及的数据库设计分五个步骤:数据库需求分析、概念设计、逻辑设计、物理设计与加载测试。对数据库操作的语言有很多种,SQL(Structured Query Language,结构查询语言)是一个功能强大的数据库语言。SQL通常使用于数据库的通讯。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。使用SQL的常见关系数据库管理系统有:Oracle、 Sybase、 Microsoft SQL Server、 Access、 Ingres等等。考勤管理系统的信息量非常大,所以,我采用的是Microsoft SQL Server2000。

需求分析

一)  任务描述

系统模块的设计应该遵循整个系统总体设计思路。即基于B/S模型构建考勤系统。系统的总体设计应该是提供给用户一个操作简单,功能全面的信息发布系统,整个系统可以实现BBS的基本信息,详细信息的录入,修改和删除,信息的增加、修改和删除等,本系统涉及到数据库中8

二)  系统特点

该系统根据大连通世泰建材有限公司的具体情况设计的员工考勤管理系统,每个模块都有它的针对性,针对普通员工和领导都有不同的使用功能。能够详细的记录员工每天的出勤和工作情况,领导还可以在线对员工的请求审批。大大的减少了工作量,增加了工作效率。也为员工的表现提供一个有力的证据。使每个员工的工作透明化,增加了上下级的沟通与了解。另外该系统模块划分清楚,功能独立,操作简单。

三)  系统配置

. Hardware (硬件)

硬件环境(访问者):建议用户在力所能及的情况下采用较高配置的硬件资源。

硬件环境(开发者):pentium4处理器,256M内存,40G磁盘空间。

. Software (软件)

访问者:IE、Netscape等浏览器。最好是IE浏览器,本网页在IE浏览器下通过了测试。

开发者:

  1. Operating System (操作系统):Windows2000
  2. Tools (工具):EditPlus 2,Visual basic 6.0
  3. Database (数据库):SQL Server 2000
  4. Server (服务器) :IIS
  5. Technic (技术):前台网页的设计采用HTML 和Java script 脚     本语言技术制作。 这样的优点就是,不但可以实现美丽的页面,还可以进行输入判断,使用用户操作容易,后台对数据库进行操作采用COM技术,两者独立性好,代码可复用。

三)  编码规范

  1. 文件命名用采用统一方式,相同模块的名的头部相同;
  2. 文件归类,以不同的文件夹存放,分四个文件夹,        include, com, css, image;
  3. 出错信息的制作,采用<javascript>脚本语言校验,出错信息均用   alert函数报错。

四)  相关技术说明

.COM组件与ASP的集成

本系统主要采用的是ASP语言。虽然ASP是一个很成熟的开发语言,但是所有的操作都用ASP代码实现,就会影响页面的浏览速度和系统的执行的速度。所以,我们采用了COM组件与ASP集成起来的方法去开发这个系统。把一部分的代码转移到COM里。在开发这个系统的时候,COM是我新接触的一个技术,正是对它的使用使我的功能模块得到了很大的改善。所以,我想把我认为好的地方介绍给大家。

----(1)  应 用 程 序 对 象(Application)

---可以使用Application对象实现应用软件的所有用户共享信息,并在服务器运行期间持久地保存数据,只有应用程序结束时,该对象才被撤消。Application对象除了能够共享和保存数据之外,还具有控制访问应用层数据的方法和可用于程序启动和停止时触发过程的事件。

(2)  会 话 对 象(Session)

---利用session对象可以为应用程序的单个用户持久保持数据信息。当某用户第一次请求服务器应用程序中,*.asp文件的URL时,要启动session。在缺省情况下,如果没有用户请求,则服务器只保留session对象20分钟。当用户关闭浏览器时,session对象关闭。例如,在“考勤管理系统”中,由于职位的不同,权限也不同,可以查阅的信息也不同,所以将起身份唯一标识作为Ssession对象,保证用户在页面跳转时不会丢失其身份信息。

----(3) 请 求 对 象(Request)

    Request对象允许服务器应用程序查询有关与之交互的客户程序的信息,Request对象由客户程序发往服务器。客户程序有许多种方法可以将信息发送给ASP文件,但无论使用哪种方法,ASP代码都必须使用Request对象及其集合,以便接收信息。Request对象的两个集合能够实现输入的HTML表单的信息与服务器端脚本间的通信。通过使用QueryString集合或Form集合检索表单的数据,取决于提交数据的HTTP表单的Method属性。当HTML表单使用Get方法向ASP文件传递数据时,用QueryString集合;用Post方法时,则用Form集合。

----(4) 响 应 对 象(Response)

Response对象的属性、方法和集合可用于格式化HTTP头信息及要返回给用户的HTML。

----(5) 服 务 器 对 象(Server)

Server对象提供了服务器应用程序可以使用的对象和访问的方法。使用Server对象,可以在服务器上启动ActiveX对象例程。

----(6) 环 境 对 象(ObjectContext)

----环境对象ObjectContext用于提交或放弃一项由MTS管理的事务,它以ASP页面包含的脚本进行初始化。

.ASP对 象和ActiveX DLL 比 较  

----就本质而言,ASP内置对象和定制的ActiveX Dll差别不大,都可以在Microsoft Visual Basic中使用。从应用方式来说,ASP对象和ActiveX Dll的不同之处在于其打包方法。ASP对象是始终能在VBScript中应用的ActiveX元素,不用明确地创建ASP对象;ActiveX Dll是存在于ASP结构之外的Dll,在应用中须首先创建该对象实例。从应用范围来说,ASP对象主要用于客户端保存信息,提供客户的处理请求;而ActiveX Dll则主要用于中间层的事务逻辑处理,功能更强,应用范围更广。

.ASP 与 组 件 比 较

虽然不用定制组件,仅使用ASP也能实现绝大部分的服务器端事务处理,但相对组件而言,仅凭ASP脚本来构建应用系统存在着明显的局限性。首先,解释脚本比运行一个对象要慢得多,不利于向大范围的用户推广;其次脚本不能从功能中分离出来,用脚本编写的事务逻辑划分不明晰,增大了发现错误的难度,无形中加大了排错的开销;而且组件是可重用的,脚本则谈不上真正意义桑的重用性。

.ASP 的" 黏 合" 作 用

在三层体系结构中,事务逻辑作为一个个COM组件在中间层执行,大大减少了服务器端运行的ASP脚本。但这并不意味着ASP将失去其原有的光彩。ASP不仅可以编写脚本动态生成HTML,还可以作为“黏合剂”将各个COM组件“黏合”在一起,并负责应用系统和COM组件间参数的传递。

一)  模块划分

基于B/S模型构建论坛分以下二个模块:

.论坛用户管理

(1) 用户注册

      将用户信息保存到数据库中。注册的信息用于在论坛中识别身份。

(2) 用户信息修改

      修改数据库中的用户信息。修改信息分为两个部分。

修改用户基本信息和修改密码。

(3) 用户登录

      用户输入注册的用户名密码登入系统。系统将设别用户身份。系统将用户信息和系统时间显示在主页上。

.论坛贴子管理

(1) 发表新贴

      用户登录后在论坛主页可以发表新贴。新贴是新的讨论的开始。只有登录的用户才能发表新贴。

(2) 用户回帖

      论坛的用户登录以后可以回复其他人发表的贴子。只有登录的用户才能回帖。回帖能恢复文本信息不能发送图片。

(3) 删除旧帖

      超级管理员登录以后可以删除过期的就贴,和违反规定的,不合法的贴子。

.后台管理

(1) 用户管理

      超级用户登录后,进入后台管理系统。点击用户管理并进入。超级用户可以编辑、删除普通用户。编辑包括修改用户信息、改普通用户为高级用户。系统的唯一管理员是admin。

(2) 贴子加精

      管理员进入系统后可以设置某个贴子为精华帖子。精华帖子的图标和普通帖子的图标不同。

(3) 帖子置顶

      管理员进入系统后可以设置某个贴子置顶。置顶帖子的图标和普通帖子的图标不同。

(4) 友情连接管理

      管理员进入系统后可以设置友情连接。输入LOGO图标地址和连接地址,友情连接会以图片的形式出现在页面底部。

(5) 版权信息管理

      管理员进入系统后可以设置版权信息。版权信息在页面的底部。

二)  数据库设计描述

.帖子信息表

GO

CREATE TABLE [dbo].[Content] (

        [ContId] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,

        [Subject] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

        [Words] [varchar] (1000) COLLATE Chinese_PRC_CI_AS NULL ,

        [UserName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

        [CreateTime] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

        [LastAnswerTime] [char] (30) COLLATE Chinese_PRC_CI_AS NULL ,

        [HitCount] [int] NULL ,

        [IsTop] [int] NULL ,

        [face] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

        [tian] [datetime] NULL

) ON [PRIMARY]

GO

.回复表

GO

CREATE TABLE [dbo].[HuiFu] (

        [Hid] [int] IDENTITY (1, 1) NOT NULL ,

        [ContId] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,

        [Hobj] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

        [Hwords] [varchar] (1000) COLLATE Chinese_PRC_CI_AS NULL ,

        [Husers] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

        [Hsex] [varchar] (2) COLLATE Chinese_PRC_CI_AS NULL ,

        [Hface] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

        [Hlasttime] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

        [Hquan] [int] NULL ,

        [Hlogo] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

        [Hemail] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL

) ON [PRIMARY]

GO

.链接表

GO

CREATE TABLE [dbo].[link] (

        [linkid] [int] IDENTITY (1, 1) NOT NULL ,

        [linkurl] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,

        [linklogo] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL

) ON [PRIMARY]

GO

.用户表

GO

CREATE TABLE [dbo].[Users] (

        [UserId] [int] IDENTITY (1, 1) NOT NULL ,

        [UserName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

        [UserSex] [varchar] (2) COLLATE Chinese_PRC_CI_AS NULL ,

        [UserPwd] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

        [Email] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

        [Logo] [char] (50) COLLATE Chinese_PRC_CI_AS NULL ,

        [Qan] [int] NULL

) ON [PRIMARY]

GO

.附加表

GO

CREATE TABLE [dbo].[FuJia] (

        [banquan] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,

        [pagenum] [int] NULL

) ON [PRIMARY]

GO

一)  用户注册

%>

                <%

                               

                                        set rs=con.execute("select username from users where username='"& rname &"'")

                                        if rs.eof=false then

                                                response.Write("用户名已经有人注册过了,请重新填写<br><br>")%>

                                                <a href="reg.asp" class="hlink"><font class="aa" >返回注册页面</font></a>

                                        <%else<%

                set con=server.CreateObject("adodb.connection")

            set rs=server.CreateObject("adodb.recordset")

        con.open"provider=sqloledb.1;data source=.;uid=sa;pwd=sa;database=Discuss"

                rname=request.Form("regname")

                rsex=request.Form("sex")

                rpass=request.Form("pwd1")

                rcpass=request.Form("pwd2")

                remail=request.Form("email")

                rface=request.Form("face")

                application("face")=rface

                if rsex=1 then

                        fsex="男"

                else

                        fsex="女"

                                                set rs=con.execute("insert into users(username,usersex,userpwd,email,logo,qan) values('"&rname&"','"&fsex&"','"&rpass&"','"&remail&"','"&rface&"',0)")

                                                response.Write("<br>恭喜您注册成功<br><br>")

                                                response.Write("您的用户名是:<font color=red>"&rname&"</font><br><br>")

                                                response.Write("您的密码是:<font color=red>"&rpass&"</font><br><br>")%>

                                                <meta HTTP-EQUIV=REFRESH CONTENT='2; URL=index.asp'>

                                                <a href="index.asp" class="hlink"><font class="aa">返回首页面</font><br><br></a>

                                        <%end if%>

               

二)  用户登录

<%

   if rs.eof=false then

          session.Timeout=30

          session("username")=uname

          session("userpassword")=upass

          session("uquan")=rs("Qan")

          session("face")=rs("logo")

          session("usex")=rs("UserSex")

          session("tt")=rs("Email")%>

          登陆成功,感觉社区欢迎您<br><br><a href="index.asp" class="hlink">返回首页</a>

          <meta HTTP-EQUIV=REFRESH CONTENT='2; URL=index.asp'>

          <%tt=Trim(Request.Form("cook"))

          select case tt

              case 1

                        Response.Cookies("userinfo")("uname") = Trim(Request.Form("uname"))

                Response.Cookies("userinfo")("upwd")=Trim(Request.Form("upwd"))

                case 2

                        Response.Cookies("userinfo").Expires=Date+1

                        Response.Cookies("userinfo")("uname") = Trim(Request.Form("uname"))

                Response.Cookies("userinfo")("upwd")=Trim(Request.Form("upwd"))

                case 3

                        Response.Cookies("userinfo").Expires=Date+31

                        Response.Cookies("userinfo")("uname") = Trim(Request.Form("uname"))

                Response.Cookies("userinfo")("upwd")=Trim(Request.Form("upwd"))

                case 4

                        Response.Cookies("userinfo").Expires=Date+365

                        Response.Cookies("userinfo")("uname") = Trim(Request.Form("uname"))

                Response.Cookies("userinfo")("upwd")=Trim(Request.Form("upwd"))

          end select 

  else%>

      密码或用户名错误请重新<a href="login.asp" class="hlink"><font color="#0066CC">登陆</font></a>或<a href="reg.asp" class="hlink"><font color="#0066CC">注册</font></a><br><br><a href="index.asp" class="hlink">返回首页</a>

  <%end if

   %>

三)  显示发贴信息

<SCRIPT language=javascript>

<!--

function checkform(){

        if (document.zhuform.zhuti.value == "" || document.zhuform.textfield.value==""){

                alert("请填写主题标题或主题内容" );

                document.zhuform.zhuti.focus();

                return(false);

        }

                if (document.zhuform.zhuti.value.length>50){

                alert("主题标题不能超过50个字符" );

                document.zhuform.zhuti.focus();

                return(false);

        }

                if (document.zhuform.textfield.value.length>1000){

                alert("主题内容不能超过1000个字符" );

                document.zhuform.zhuti.focus();

                return(false);

        }

}

-->

</SCRIPT>

 [1] 曹建平    《ASP访问数据库方法与原则》            电脑开发与应用       2001    第二期   页数:243

[2] 饶运涛    《ASP应用程序的优化技术》              计算机应用研究       2001    第一期    页数:364

[3] 朱兆优    《非接触IC卡管理系统的开发》      华东地质学院学报     2001    第二期    页数: 188

[4] 宋红梅    《非接触式IC卡门禁考勤管理系统》         南京工程学        2002    第四期    页数: 226
[5]白鹏 莫卫东 张福萍   《Visual Basic高级编程技巧——控件篇》 西安交通大学出版社 1999  12月第1版  页数:224

[6]博彦科技  《全面掌握ASP应用程序开发》     清华大学出版社    2000    8月第1版  页数:398

[7] 何文俊 马杰   《Visual Basic 6.0编程实例精解》   北京希望电子出版社      2000     4月第1版        页数:394

01-15 11:21