ASP网络多功能办公系统设计与实现

       互联网的出现与迅速发展,信息技术步伐的加快,使得企业面临着众多的挑战与竞争,在竞争过程中,对于一个集团企业而言,对信息的掌握程度、信息获取是否及时、信息能否得到充分的利用、对信息的反应是否敏感准确,也越来越成为衡量一个企业市场竞争能力的重要因素。随着中国加入WTO,各行各业都在努力提高自身的竞争力,各企业根据自身发展的多方需要,进行有关的改革,企业信息化管理进程的加快都在说明一个趋势:传统以红头文件为主的、强调公文处理的办公自动化将从主导地位逐渐减弱,以强调信息服务、知识管理为主的企业信息服务系统将逐渐代替原有的办公自动化。商场如战场,新一代的战争是信息化战争,如何通过互联网这一利器,使企业信息化建设完善起来,这就需要一种高效、稳定的办公自动化系统!

      人们普遍使用计算机来提高个人工作效率,但是在需要许多人一起协同工作的现代工作环境中,我们更需要提高我们的整体工作效率。利用网络通讯基础及先进的网络应用平台,建设一个安全、可靠、开放、高效的信息网络和办公自动化、信息管理电子化系统,为管理部门提供现代化的日常办公条件及丰富的综合信息服务,实现档案管理自动化和办公事务处理自动化,以提高办公效率和管理水平,实现企业各部门日常业务工作的规范化、电子化、标准化,增强档案部门文书档案、人事档案、 财务档案等档案的可管理性,实现信息的在线查询、借阅。最终实现“无纸”办公。在网络应用日益普及的今天,无纸化网络办公是目前企事业单位提高办公效率和机构精简改革趋势的一个重要要求。采用无纸化网络办公不仅可以实现资源的共享、提高办公效率,而且也可以使工作人员的办公更加轻松自如,同时也节减了许多不必要的开支。无纸化网络办公系统具有众多优点,已经越来越多地进入到各级单位的日常工作中。系统开发主要包括前台界面的设计和后台数据库的设计。

本次的任务是,构建一个网络多功能办公系统,采用的主要技术是基于IIS服务器端的ASP、IIS的组件、网页编程语言HTML、数据库以Microsoft Office 的Access为平台以及链接数据库ODBC。

1.1   HTML

HTML是用来表示Web文档的规范,它使用标记来确定网页显示的格式静态网页是标准的HTML文件,动态网页经过应用程序服务器的处理后也将生成标准的HTML文件。

1.1.1  HTML的工作原理

HTML是一种规范,是用于Web文档的格式语言。HTML通过标记(Tag)来标记要显示的网页中的各个部分。以告诉Web浏览器应该如何显示网页,既确定网页内容的格式。浏览器按照顺序阅读HTML文件,然后根据内容附近的HTML标记来解释和显示各种内容,这个过程称为语法分析。

1.1.2  HTML文档的基本结构

HTML文档的基本结构可以表示如下:

         

            

                标题文字

            

            

                     文本、图像、动画、HTML指令等

            

        

1.1.3  HTML标记

 1.HTML文档标记

 格式:…标志文件开始和结尾的标记。

 2.HTML文件头标记

 格式:…用于包含文件的基本信息。

 3.HTML文件主体标记

 格式:…文件主体标记。 

 注意:与为独立的两个部分,不能互相嵌套。

1.1.4设置的属性

格式:----

功能:文件主体标记,其中包含了Web文档的内容。

属性:

BACKGROUD:设置网页背景。

BGCOLOR: 设置网页的背景颜色。

TEXT: 设置网页文本颜色。

LINK: 设置网页链接的颜色。

VLINK: 设置网页已被访问过的链接的颜色。

ALINK: 设置网页正被选中的链接的颜色。

BGPROPERTIES: 设置背景是否随滚动条滚动。

LEFTMARGIN: 设置网页左右边的空白。

TOPMARGIN设置网页上下方的空白。

ONLOAD: 设置网页首次加载时调用的事件处理程序。

ONUNLOAD: 设置网页卸载时调用的事件处理程序。

1.1.5  段落格式化

1.标题标记

格式:

设置各种大小不同标题的标记。

2.段落标记

格式:

设置段落标记。

3.预定格式标记

格式:

在浏览器中浏览时,按照文档中预先排好的形式显示内容。

4.分区显示标记

格式:

分区显示标记。

5.词标记


           

格式:
强制进行换行标记。  

6.注释标记

格式:注释标记。

1.1.6插入图像

图像在网页设计中是必不可少的,所以用户应掌握在网页中操作图像的方法。

 格式:

 功能:在网页中加入图像。

1.1.7 超连接

超连接是由源端点到目的端点的一种跳转。

按照目标端点的不同。可以分为以下几种:

文件连接:这种连接的目标是一个文件,它可以位于当前网页的服务器,也可以位于其他服务器。

锚连接:这种连接的目标是网页的一个位置,通过这种连接可以从当前网页跳转本网页或其他网页的某个位置。

E-mail连接:通过这种连接可以启动电子邮件客户端程序,并允许访问者向指定的地点发邮件。

 格式:

创建锚点

创建锚点连接:

1.1.8表单

 HTML表单(Form)是HTML的一个重要部分,主要用于采集和提交用户输入的信息。

学习HTML表单(Form)关键要掌握的有三个要点:

表单控件(Form Controls)

Action

 Method

先说表单控件(Form Controls),通过HTML表单的各种控件,用户可以输入文字信息,或者从选项中选择,以及做提交的操作。

用户填入表单的信息总是需要程序来进行处理,表单里的action就指明了处理表单信息的文件。

至于method,表示了发送表单信息的方式。method有两个值:get和post。get的方式是将表单控件的name/value信息经过编码之后,通过URL发送(你可以在地址栏里看到)。而post则将表单的内容通过http发送,你在地址栏看不到表单的提交信息。那什么时候用get,什么时候用post呢?一般是这样来判断的,如果只是为取得和显示数据,用get;一旦涉及数据的保存和更新,那么建议用post。

1.1.9表格

HTML表格用

表示。一个表格可以分成很多行(row),用表示;每行又可以分成很多单元格(cell),用

表示。…创建表格,可用于数据表或控制你网页的布局,定义单元格,…设计表内的一行。

1.2  VBscript

VBScript是程序开发语言Visual Basic家族的最新成员,可以将灵活的脚本应用于更广泛的领域,包括Microsoft Internet Explorer中的Web客户端脚本和Microsoft Internet Information Server中的Web服务器端脚本。

1.2.1   VBScript代码的基本格式

一般ASP程序都是将VBScript代码放在服务器端执行的,此时有两种方法。

方法一:<%VBScript%>

方法二:

1.2.2   数据类型 

在VBScript语言中只有一种数据类型,即Variant,这种数据类型可以包含不同类别的信息,它也是VBScript中所有函数的返回值的数据类型。Variant是一种特殊的数据类型,根据不同的使用方式,它可以包含不同的数据类别信息,这些不同的数据类别称为数据子类型。具体如下表

子类型

说明

String

其值是变长字符串类型,最大长度可谓20亿个字符

Byte

其值是0到255之间的无符号整数

Integer

其值是-32768到32767之间的带符号的整数

Long

取值范围是-2147483648到2147483647之间的长整型整数

Single

其值是单精度浮点数。

Double

其值是单精度浮点数。

Date

其值是代表某个日期和时间的数字。

Boolean

其值是True和False的布尔型

Currence

取值范围是-922337203685477.5808到922337203685477.5807

Empty

未初始化变量

Null

不包含任何有效数据的变量

Object

包含一个对象

(1)常量

常量时在程序执行期间其值不发生变化的数据。在VBScript中,常量分为普通常量和符号常量。常量的命名规则和一般的程序设计语言一样,可以使用字母、数字、下划线等字符,但每一个字母必须是英文字母,中间不能有标点符号和运算符号,长度不能超过255个字符。

1)普通常量

普通常量分为字符串常量和数值常量两种。

字符串常量简称字符串,它由一对双引号括起来的字符序列所组成,其中可以包含字母、汉字、数字,空格以及标点符号等,长度不超过20亿个字符。

  数值常量分为整型数、长整型数和浮点数。

  整型数和长整型数都可以用十进制、十六进制和八进制三种形式来表示。使用十六进制数时,应在数字前面加上&H前缀;使用八进制数时,应在数字前面加上&O前缀。对于长整型数,使用十六进制或八进制形式表示时,还要在数字后面加上后缀&。

   浮点数也称为实型数,分为单精度浮点数和双精度浮点数。浮点数可以用小数形式表示,也可以用科学记数法表示。

2)符号常量

符号常量是用一个标识符表示的常量,用于代替数字或字符串,其值从发生不改变。在VBScript中,符号常量分为预定义符号常量和用户自定义常量。

  VBScript提供了许多预定义符号常量,在编写脚本代码时无须声明即可直接使用。例如,vbCrLf表示回车符和换行符的组合,vbGreen表示绿色的数值。

3)用户自定义常量。

可以使用 const 语句在 vbscript 中创建用户自定义常数。(const修饰符可以把对象转变成常数对象,意思就就是说利用const进行修饰的变量的值在程序的任意位置将不能再被修改,就如同常数一样使用)

注意:不能使用的VBScript的关键字,就是Dim、Sub、End、Request等VBScript使用的一些特殊字符串。

(2)变量

变量时一种使用方便的占位符,用于引用计算机的内存地址,该地址可以存储脚本运行时可更改的数据。

1)声明变量

变量的声明包括显式声明、隐式声明和强制显式声明。

在VBScript中,通常使用Dim语句显式声明变量并分配存储空间,语法格式如下:

   Dim 变量名[, 变量名]

此外,也可以通过直接在脚本中使用变量名这种方式隐式声明变量。但这通常不是一个好习惯,因为这样有时会由于变量名被拼错而导致在运行脚本时出现意外的结果。

若要强制显式声明所有变量,可以在脚本程序的开头处使用下面的语句:

   Option Explicit

(3)VBSript数组

  所谓数组,存储在内存中的用来包含数据的一组地址的名字。

1)声明数组

a.静态数组

  静态数组可以分为一维数组、二维数组或多维数组。数组的数维和大小由数组名之后紧跟的括号中的数字的个数和数值的大小来决定的。

b动态数组

  动态数组是在程序运行时数组大小发生变化的数组,对动态数组的最初声名可以使用Dim语句或ReDim语句来实现,但括号中不能包含任何数字。

(4)vbscript 运算符

vbscript 有一套完整的运算符,包括算术运算符、比较运算符、连接运算符和逻辑运算符。

当表达式包含多个运算符时,将按预定顺序计算每一部分,这个顺序被称为运算符优先级。可以使用括号越过这种优先级顺序,强制首先计算表达式的某些部分。运算时,总是先执行括号中的运算符,然后再执行括号外的运算符。但是,在括号中仍遵循标准运算符优先级。

当表达式包含多种运算符时,首先计算算术运算符,然后计算比较运算符,最后计算逻辑运算符。所有比较运算符的优先级相同,即按照从左到右的顺序计算比较运算符。算术运算符和逻辑运算符的优先级如下所示:

算术运算符   比较运算符   逻辑运算符   

各种运算符及说明:

描述     符号     描述       符号      描述           符号

求幂       ^      等于        =       逻辑非          not

负号      -      不等于       <>      逻辑与         and

乘        *      小于         <       逻辑或         or

除        /     大于          >      逻辑异或        xor

整除      /    小于等于      <=      逻辑等价        eqv

求余     mod   大于等于      >=      逻辑隐含        imp

加       +                        对象引用比较        is       

减        -                        字符串连接           &            

(5)Vbscript函数

所谓函数,类似于过去所学的三角函数,就是别人将一些复杂的功能编成了一个函数,你不需要知道函数内部是怎么计算的,只要会使用就行。恰当的使用已有的函数可以节省大量的时间。下面介绍常用的几种VBScript中的函数。

1.转换函数

通过转换函数将子数据类型转换成需要的数据类型。

2.字符串函数

在VBScript中,包含很多处理字符串的函数,主要功能是:删除字符串前后的空格符、比较两个字符串、转换字符串的大小写字母等。

3.日期和时间函数

在VBScript中,可以使用日期和时间函数来得到各种样式的日期和时间。

(6)Vbscript过程

VBScript中,过程有两种,一种是Sub 过程,一种是Function函数。Sub 过程只执行程序而不返回值,而Function函数可以将执行代码的结果返回给请求程序。

1.Sub 过程

Sub 过程是包含在 Sub 和 End Sub 语句之间的一组 VBScript 语句,执行操作但不返回值。Sub 过程可以使用参数(由调用过程传递的常数、变量或表达式)。

语法如下:

Sub 过程名 (参数1,参数2,…)

End Sub

说明:

其中参数是指由调用过程传递的常数、变量或表达式。如果 Sub 过程无任何参数,则 Sub 语句必须包含空括号 ( )。

Sub 过程名 ( )

End Sub

2.Function 函数

Function函数,是包含在 Function 和 End Function 语句之间的一组 VBScript 语句。Function函数与 Sub 过程类似,但是 Function函数可以返回值。Function 函数可以使用参数(由调用过程传递的常数、变量或表达式)。如果 Function 函数无任何参数,则 Function 语句必须包含空括号 ( )。Function函数通过函数名返回一个值,这个值是在过程的语句中赋给函数名的。Function 返回值的数据类型总是 Variant。

语法如下:

Function 函数名 (参数1,参数2...)

End Function

1.3 Asp内置对象

ASP的内置对象是嵌入在系统中的一组共享代码,他是由系统开发商根据Web应用程序的需要,将一些常用的操作代码经过优化得来的。

1.3.1  Request对象

接收客户端在请求一个页面或传送一个表单时提供的所有信息,包括能够标识浏览器和用户的HTTP变量、Cookie信息以及附在URL后面的值(查询字符串或表单数据)。

(1)Request对象的获取方法

(2)Request对象的属性

Request对象唯一的属性,它提供关于用户请求的字节数量的信息,它很少用于ASP页,我们通常关注指定值而不是整个请求字符串。

TotalBytes

只读,返回由客户端发出的请求的整个字节数量。

(3)Request对象的方法

Request对象只有一个方法:即BinaryRead。该方法以二进制方式来读取客户端使用POST传送方法所传递的数据。

1.3.1  Response对象介绍

用于向客户端浏览器发送信息,或者将访问者转移到另一个网址,并可以设置和控制Cookie信息等。

(1)Response对象的集合

Response对象只有一个集合,即Cookies集合。

(2)Response对象的方法

方法

说明

Write

Response对象中最常见的方法,用来送出信息给客户端

Redirect

引导客户端浏览器至新的Web页面,前面已经作国星系介绍

Binary Wrtie

输出二进制信息

End

终止处理ASP并返回当时的状况

Flush

立刻送出缓冲区的HTML数据

Buffer

设置为缓冲信息。取值为True或False

contenttype

控制送出的文件类型

Clear

清除在缓冲区的所有HTML页面

(3)Response对象的属性

属性

说明

Buffer

设置为缓冲信息,取值为Tue或Flse,默认为Flse

CntenType

控制送出的文件类型

1.3.5  Session对象:

存储一个会话内的信息。Session对象是在每一位访问者从Web站点或Web应用程序中首次请求一个ASP页时创建的,它将保留到默认的期限结束或者通过脚本设置中止的期限。

   (1)Session工作作原理

在一个应用程序中,当客户端启动一个Session时,ASP会自动产生一个长整数SessionID,并且把这个SessionID送回给客户端浏览器,浏览器会把这个SessionID存放在Cookies内。当客户端再次向服务器送出HTTP请求时,ASP会去检查申请表头的SessionID,并返回该SessionID对应的Session信息。

   (2)Session对象的集合

Session.contents 集合包括所有未使用 标记而为该会话建立的项目。此集合可用于确定指定会话项的值或遍历集合并检索出会话中所有项的列表。

 StaticObjects 集合包含 Session 对象范围中用 标记创建的所有对象。该集合可用于确定对象特定属性的值,或用于遍历集合并获取所有对象的全部属性。

   (3)Session对象的属性

CodePage

读/写。整型。定义用于在浏览器中显示页面内容的代码页(Code Page)。

LCID

读/写。整型。定义发送给浏览器的页面地区标识(LCID)。

Abandon

Abandon 方法删除所有存储在 Session 对象中的对象并释放这些对象的源。如果您未明确地调用 Abandon 方法,一旦会话超时,服务器将删除这些对象 。

   (4)Session对象的方法

Abandon:破坏Session对象并释放其资源

Contents.Remove:从Contents集合中删除一个项目

Contents.RemoveAll:从Contents集合中删除所有项目

1.3.6  Application对象:

在一个ASP应用中让不同客户端共享信息。Application对象是在为响应一个ASP页的首次请求而载入Asp.dll时创建的,它提供了存储空间用来存放变量和对象的引用,可以用于所有的页面,任何访问者都可以打开这些页面。

   (1)Application对象的获取方法

Contents:含所有通过脚本命令添加到应用程序中的项目

Staticobjects:含通过OBJECT标记创建的并给了应用程序作用域的对象

   (2)Application对象的方法

Lock:禁止其他客户修改Application对象的属性

Unlock:允许其他客户修改Application对象的属性 

   (3)Application对象的作用

●存储应用程序级全局变量

●锁定与解锁全局变更

●网站计数器

1.3.7  Server对象:

提供了一系列的方法和属性,在使用ASP编写脚本时是非常有用的。最常用的是Server.CreateObject方法,它允许在当前页的环境或会话中在服务器上实例化其他COM对象。

   (1)Server对象的集合

Server对象仅支持ScriptTimeout属性,用于指定超时值,在脚本运行超过这一时间之后即作超时处理。

   (2)Server对象的方法

CreateObject:Server对象中最重要的方法,用语创建已注册到服务器的ActionX组建、应用程序或脚本对象。

Execute:停止执行当前页,转到新的页上执行,执行完毕后返回原页,继续执行Execute方法后面的语句。

MapPath:将路径转化为物理路径

Transfer:停止执行当前网页,转到新的网页执行,执行完毕后不返回原网页,而是停止执行过程

HTMLExecute:将字符串转换成HTML格式输出

URL Execute:将字符串转换成URL格式输出

  (3)Server对象的作用

●创建组件实例

●获取服务器的物理路径

●对字符串进行HTML编码

●转向执行其他ASP文件

1.4 ADO组件

ADO是ActiveX Data Object的缩写,称为ActiveX数据对象,是为OLE DB设计的应用编程接口,使用ADO对象实现在ASP页面中对数据库的访问。在ASP页面中,OLE DB及ODBC无法直接使用,但是ADO却是一种可以在ASP中使用的标准对象,通过ADO就可以调用OLE DB提供者或者ODBC驱动程序来访问数据库。

1.4.1ADO的对象

  ADO组件又称为数据库访问组件,用于访问存储在数据库或其他数据表结构中的信息。ADO设计了许多环环相扣的继承对象,让Web数据库开发人员可以轻易地操纵数据库,在ADO运行时继承子对象之间是相互影响的。

ADO组件提供了7中对象

1)Connection对象:提供对数据库的连接服务。

2)Command对象:定义对数据源操作的命令。

3)Recordset对象:由数据库服务器所返回的记录集。

4)Fields对象:由数据库服务器所返回的单一数据字段。

5)Parameters对象:表示Command对象的参数。

6)Proerty对象:单独的一个Proerty对象,提供属性功能。

7)Error对象:提供处理错误的功能。

  使用ADO对象可以建立和管理数据库的连接,按数据库服务器的要求获得数据,执行更新、删除、填加数据,获取ODBC的错误信息等。

1.4.2 ADO的操作流程

1)连接到数据源

2)指定访问数据源的命令,可以同时指定变量参数,通过涉及Command对象。

3)执行命令。

4)如果命令使数据按表中的行的形式返回,则将这些存储在易于检查、操作或更改的缓存中。

5)在适当情况下,可以通过修改缓存行的内容来更新数据源。

6)提供常规方法检测错误,涉及Error对象。

1.5数据库

1.5.1数据库基础知识

  数据:泛指一切可以输入到计算机并能被计算机处理符号。

  数据库:是存储在计算机内、有组织、可共享的数据集合。

数据库管理系统:是位于用户与操作系统之间的一层数据管理软件。

数据库系统:是指在计算机系统中引入数据库后的系统。

1.5.2 Access2000数据库系统简介

Access2000是微软公司的Microsoft Office 2000系统软件中的一个重要组成部分。

它是一个运行于Windows平台上的关系数据库管理系统,通过各种数据库对象对数据进行控制和管理。

  它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;为建立功能完善的数据库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的任务

  Access的优点在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类似于Excel的电子表格,可以使数据库一目了然。另外,Access允许创建自定义报表用于打印或输出数据库中的信息。Access也提供了数据存储库,可以使用桌面数据库文件把数据库文件置于网络文件服务器,与其他网络用户共享数据库。

Access是一种关系数据库工具,关系数据库是已开发的最通用的数据库之一。如上所述,Access作为关系数据库开发具备了许多优点,可以在一个数据包中同时拥有桌面数据库的便利和关系数据库的强大功能,同时对于小型的数据交换来说使用非常方便。

1.5.3 Access2000数据库对象

表是一种特定实体据集合,表以行、列格式组织数据。表中的字段用来描述一个试题的完整信息。通常,一个数据库保存的主要信息,都是以表的形式来表示和存储的。

查询是对数据库中数据的直接访问。利用查询可以通过不同的方法来查看、更改、分析以及操纵数据库中的数据,可以为其他查询、窗体和报表提供数据,还可以为一个数据访问页提供数据源。

窗体是用户交互式访问数据库的界面,是数据库与用户之间的主要接口。使用窗体可以想表中输入数据,查看或更新表中的数据,以及根据用户的输入信息执行响应的操作。

报表是输出数据库最有效的方法。因为在报表中可以控制每个数据的显示方式,可以对数据进行排序和分组,并给出每个的各种统计数据。

数据访问页是一种特殊的Web访问页,提供可以在Internet或Intranet上浏览的数据。这些数据保存在Microsoft Access数据库或microsoft SQL Server数据库中。数据访问页与一般Web页的最大区别在于它的数据是个更新的。

宏是指一个或多个操作的集合,其中每个操作可实现特定的功能。数据库的很多地方要用的到宏,尤其是在窗体设计中。使用宏可以让用户非常方便第处理一些重复性操作。

模块是将Visual Basic for Applications声明和过程作为一个单元进行保存的集合,专门用来存放VBA数据代码。模块有2个基本类型,既类模块和标准模块一个模块一般包含多个过程或函数。

1.5.4 SQL语句

Access 2000中查询是以SQL语句为基础来实现查询功能的。因此,Access 2000中所有的查询都可以认为是一个SQL查询。

SQL的数据定义功能

SQL的数据定义功能包括定义基本表和定义索引。

1.定义基本表的语句是CREATE,语法格式为:

CREATE TABLE<表名>(<列名1><数据类型>[列级完整性约束条件]

[,<列名2><数据类型>[列级完整性约束条件]]…..

[,<表级完整性约束条件>])

2.修改基本信息

修改基本表的语句是ALTER,语法格式为:

ALTER TABLE<表名>[ADD<新列名><数据类型>[列级完整性约束条件]];

其中,ADD字句用于增加新列和新的完整性约束条件。

3.删除表

删除一个表是将表结构和表中记录一起删除,如果这个表上建有索引,则索引一起删除。

删除基本表的语句是DPOP,语法格式为:DRPO TABLE<表名>

4.建立索引

建立索引是加快查询速度的有效手段。用户可根据需要在基本表上建立有索引,则将索引一起删除。

删除基本表的语句是DRPO,语法格式为:DROP TABLE<表名>.

SQL的数据查询功能

SQL语言的核心是查询操作,擦黑寻操作由SELECT命令实现。SELECT命令的语法如下。

SELECT [ALLIDISTINCT]<目标表达式>[,<目标列表达式>]

FORM <表名>[, <表名>]

[WHERE<条件表达式>]

[GROUP  BY <列名1>[HAVINGI<条件表达式>]

[OPDER  BY<列名2>[ASCIDESC]

SELECT语句的含义是:根据WHERE子句中的表达式,从表中找出满足条件的记录,按SELECT子句中的目标列,选出记录中的字段结果表。

在SELECT命令中各个字句的含义如下。

1.SELECT子句

SELECT子句指出所要查找的列。其中,ALL表示检索符合条件的所有记录,为缺省值;DISTINCT表示曲调重复记录;目标列表达式是指定要查询的列,可以是列名、表达式或函数。SELECT后如果没有指定目标列表达式,而是“*“表示,则表示要指定表中的所有列。

2.FORM子句

FORM子句指定要查询的数据出自哪张表,可以是一个表,也可以是多个表。

3.WHERE子句

WHERE子句指定查询所需的条件。如果没有WHERE子句,表示选择全部记录。

4.GROUP BY子句用语对查询结果按指定的列进行分组,并且可以利用函数进行统计,如求平均值、最大值、最小值和计数等。

5.HAVING子句

HAVING子句必须跟随GROUP  BY子句使用,用来限定分组必须满足的条件,并将满足HAVING子句指定调教的组放到结果集中。

6.OPDER BY子句

OPDER BY子句用来对查询结果按指定的列进行排序。

(2)SQL的数据更新功能

SQL的数据更新包括对表中记录的添加、删除和修改。

插入数据

插入数据分为两种格式,一种是插入单个记录,另一种是插入一个子查询的结果。

<1>插入单个记录

语法格式:INSERT

INTO <表名>[(属性列1>[,属性列2>])

VALUES(<常量1>[,<常量2>]);

<2> 插入子查询结果

语法格式:INSERT

INTO<表名>[(属性列1>[,属性列2>])子查询;

更新(修改)数据

语法格式:UODATE<表名>

SET<列名>=<表达式>[,<列名>=<表达式>]  WHERE<条件>

删除数据

语法格式:DELETE

FORM<表名>

[WHERE<条件>]

1.5.5 ACCESS数据库表

在数据库中表不是孤单存在的,相互之间有一定的联系。不同的表中可以有相同的字段,两张表通过表中相同的字段进行关联,建立表之间的关系。表中注意的是字段名和字段属性。

  在ACCESS2000数据库中字段的名称最多可以有64个字符,可以包含数字、字母和空格,以及除句号、惊叹号、重音符号和方括号外的所有字符,但不能使用前导空格或控制字符。

  数据类型如下表。

数据类型

用法

存储空间

文本(text)

文本或文本与数字的组合,如地址。也可以是不需要计算的数字。

最多用255个字符。

备注(Memo)

长文本及数字。

最多为65535个字符

数字(Number)

用于数字计算的数值数据

1、2、4、8或16个字符仅用于“同步复制ID”

日期/时间(time)

从100~9999年的日期和时间值

8个字节

货币(currency)

货币值或用数学计算的数值数据。使用货币数据类型可以精确到小数左边15位和小数点右4位

8个字节

自动编号(Auto Number)

在填加记录时自动插入一个顺序号或随即数

4个字节。16个字节仅用于“同步复制ID”

是/否(Yes/No)

字段只包含2个值中的一个

1个字节

OEL(OEL Object)

Microsoft Access表中连接或嵌入对象,如Microsoft word问档

最大可为1GB

超级连接(Hyperlink)

文本或文本和数字的组合,以及文本形式存储并用做超级连接地址。

超级连接地址中的每一部分最多只能包含2048个字符

查阅向导(lookup Wizard)

创建字段。该字段可以使用列表框或组合框从另一个表或取值。在数据类型列表中选择此选项,将启动查阅向导进行定义

用于执行查阅的主键字段大小相同,通常为4个字节

  表与表之间的关系

   在数据库中,表的内部和表之间均存在联系。表内部的联系是指组成的各表字段之间的关系。两个表之间的关系有3种关系:一对一、一对多、多对多。

  设有A、B两表。在一对一的关系中A表中的每一条记录仅能与B表中的一条匹配,并且B 表中的每一条记录仅能与A表中的一条记录匹配。

  一对多关系是关系中最常见的类型。在一对多联系中A表中的一条记录能与B表中的多条记录匹配,但B 表中的每一条记录仅能与A表中的一条记录匹配。

  多对多关系中,A表中的一条记录能与B表中的多条记录匹配,并且B表中的一条记录也能与A表中的多条记录匹配。

第二章 系统分析

2.1  需求分析

    通过调查,要求系统需要有以下功能

  1. 由于操作人员的计算机知识普遍较差,要求有良好的人机界面。
  2. 管理系统用户,由于该系统的使用对象多,要求有较好的权限管理。
  3. 管理企业的工作计划,通告信息,公文信息,人力资源,通讯资料,资源预约。
  4. 提供个人办公服务。
  5. 对企业员工基本情况进行全面管理。
  6. 当外界环境(停电、网络病毒)干扰本系统时,系统可以自动保护原始数据的安全。
  7. 在相应的权限下,删除数据方便简单,数据稳定性好。
  8. 数据计算自动完成,尽量减少人工干预。
  9. 系统退出。

2.2  可行性分析

2.2.1经济性

   通过网站对企业内部信息进行全面的自动化的管理,大大提高了企业的办公效率。通过系统对企业生产经营过程中的数据进行全面的管理和统计,避免人为处理各类数据时所产生的各种问题,提高了企业的经济效益,为企业经营决策提供了大量的、权威的数据,使企业的管理进行到科学化、系统化的范筹。

2.2.2技术性

网络化的办公管理,使企业管理更加规范,实现了通过网络对信息进行发布、传递、接收等一系列功能。系统中设置的个人办公管理模块,为个人办公提供了一个更为方便的管理平台,大大提高个人办公的工作效率,进而提高整个企业的办公效率。

2.3 开发及运行环境

    硬件平台:

CPU:P41.8GHz;

内存:256MB以上。

    软件平台:

操作系统:Windows xp/ Windows 2000。

数据库:Access2000。

浏览器:IE5.0,推荐使用IE6.0。

Web服务器:IIS5.0。

分辨率:最佳效果1024×768像素。

第三章总体设计

3.1 项目规划

办公自动化管理系统是一个典型的数据库开发应用程序,规划系统功  能模块如下:

  1. 系统登陆模块   通过登陆到系统主界面
  2. 工作计划管理模块 该模块包括员工工作计划模块、本人工作计划模块
  3. 通告信息管理模块 该模块包括发布公告模块、管理通告模块、浏览通告模块
  4. 公文信息管理模块 该模块包括公文管理模块、发送公文模块、已发公文模块、已收公文模块。
  5. 人力资源管理模块 该模块包括个人基本档案模块、员工基本档案模块、员工职位变动模块、员工奖惩情况模块、员工考核情况模块、员工工资档案模块。
  6. 通讯资料管理模块 该模块包括员工资料管理模块、客户资料管理模块。 
  7. 资源预约管理模块 主要是增加和预约资源
  8. 帮助信息管理模块 主要是对上面模块功能及具体操作的详细介绍。
  9. 设置用户权限模块 该模块包括有用户帐号设置和用户权限设置。
  10. 系统注销模块   该模块使用户退出系统  

3.2 系统功能结构图

         办公自动化管理系统功能结构如图

ASP网络多功能办公系统设计与实现_第1张图片

3.3  设计目标

本系统是针对企业内部办公自动化管理的要求进行设计的,主要实现如下目标:

l 系统采用人机对话方式,界面清晰、信息查询灵活、方便、快捷、准确、数据存储安全可靠。

l 利用系统快速的统计生产的数据报表,并对报表信息进行打印。

l 键盘操作,快速响应。

l 实现了各类发文信息、公共信息的强大的管理能力。

l 实现对员工基础信息(人事管理)的管理功能等。

l 实现了个人办公的信息自动化管理功能。

l 对系统用户进行管理。

l 为了加强数据保密性,为每个用户设置权限级别。

l 系统最大限度地实现了易安装性、易维护性和易操作性。

l 系统运行稳定、安全可靠。

3.4数据库设计

    数据库结构设计的好坏直接影响到系统的效率和实现的效果。合理地设计数据库结构可以提高数据库存储的效率,保证数据的完整和统一。数据库设计一般包括如下几个步骤:

  1. 数据库需求分析。
  2. 数据库概念结构分析。
  3. 数据库逻辑结构分析。

3.4.1数据库需求分析

数据库需求分析主要是用来搜集用户的需求,然后指导数据库设计。办公自动化系统主要对工作计划信息、通告信息、公文信息、人力资源信息、资源信息以及公司帮助信息进行编辑,针对该系统数据库的特点,总结出如下要求:

l 每个员工有一种身份。

l 系统信息是对员工信息的管理。

l 员工有对应的部分。

l 通知公告信息。

l 只有超级管理员才能设置权限

3.4.2数据库逻辑结构设计

   数据库概念结构设计完毕就可以通过数据库软件转化为实际的数据模型,即数据库的逻辑结构。本系统采用的数据库软件是Microsoft Access2000。

首先打开Microsoft Access2000,新建一个空的数据库,命名为为db . office ,然后通过表设计器创建本系统主要的几个表。下面分别介绍各个表的内容。

1资源预约管理表

表1 资源预约管理表(booking)

字段名称

数据类型

字段大小

说明

ID

自动编号

长整型

equipment

文本

50

公司设备名称

starttime

日期/时间

常规日期

开始预约时间

endtime

日期/时间

常规日期

结束预约时间

username

文本

50

预约者

purpose

文本

50

用途说明

2员工职位变动表

表2 员工职位变动表(changjob)

字段名称

数据类型

字段大小

说明

ID

自动编号

username

文本

50

员工用户名

oldjob

文本

50

原职务

changjob

文本

50

变动后职务

changdate

文本

50

职务变动时间

changfile

文本

50

职务变动文号

changsort

文本

50

职务变动类型

changtype

文本

50

职务变动方式

changreason

备注

职务变动原因及备注说明

recusername

文本

50

记录人

recdate

日期/时间

常规日期

记录时间

updateusername

文本

50

更改人

updatedate

日期/时间

常规日期

更改时间

3员工考核情况表

3员工考核情况表(checkinf)

字段名称

数据类型

字段大小

说明

ID

自动编号

username

文本

50

员工用户名

checkname

文本

50

考核名称

checkdate

文本

50

考核日期

checkcommment

备注

考核评语

checksort

文本

50

考核类型

checktype

文本

50

考核方式

checkresult

文本

50

考核结果

remark

备注

备注说明

recname

文本

50

记录人

recdate

日期/时间

常规日期

记录时间

updatename

文本

50

更改人

updatedate

日期/时间

常规日期

更改时间

4公司月计划及总结表

表4 公司月计划及总结表(commonthwork)

字段名称

数据类型

字段大小

说明

ID

自动编号

commonthwork

备注

公司月计划及总结

recdate

日期/时间

短日期

月计划的时间,格式2001-4-1

5公司月计划标题

表5 公司月计划标题表(commonthworktitle)

字段名称

数据类型

字段大小

说明

ID

自动编号

title

备注

50

月计划标题

recdate

日期/时间

短日期

月计划的时间,格式2001-4-1

6公司档案文件

表6 公司档案文件表(companydocument)

字段名称

数据类型

字段大小

说明

ID

自动编号

filename

文本

50

档案文件名

filetype

文本

50

档案文件类型

filecontent

文本

50

文件的数据

filebyte

文本

50

文件大小

edition

文本

50

版本号

username

文本

50

建立档案的用户名

creattime

文本

50

建立档案时间

title

文本

50

档案标题

sort

文本

50

档案类型

remark

文本

50

档案说明

documentcontent

文本

50

档案文件夹

7公司文件夹

表7公司文件夹表(companyfolder)

字段名称

数据类型

字段大小

说明

ID

自动编号

foldername

文本

50

文件夹名称

remark

文本

50

文件夹说明

8公司周计划

表8 公司周计划表(comweekworkrep)

字段名称

数据类型

字段大小

说明

ID

自动编号

weekworkrep

备注

公司周计划

myyear

文本

50

周计划所在年

myweek

文本

50

第几周

9公司部门表

表9 公司部门表(dept)

字段名称

数据类型

字段大小

说明

ID

自动编号

dept

文本

50

部门名称

10公司资源表

表10 公司资源表(equipment)

字段名称

数据类型

字段大小

说明

ID

自动编号

equipment

文本

50

公司资源名称

remark

备注

简单说明

controller

文本

50

管理者

11公司帮助信息表

表11 公司帮助信息表(helpinf)

字段名称

数据类型

字段大小

说明

ID

自动编号

helptitle

文本

50

帮助信息标题

helpcontent

备注

帮助信息内容

helpsort

文本

50

帮助信息类别

12公司通告信息表

表12 公司通告信息表(newnotice)

字段名称

数据类型

字段大小

说明

ID

自动编号

title

文本

50

通告标题

content

备注

通告内容

noticedate

日期/时间

sort

文本

50

通告类别

13个人基本档案表

表13 个人基本档案表(personinf)

字段名称

数据类型

字段大小

说明

ID

自动编号

username

文本

50

个人基本档案的用户名

inputdate

日期/时间

录入时间

updatedate

日期/时间

修改时间

a1

文本

50

员工编号

a2

文本

50

曾 用 名

a3

文本

50

性 别

a4

文本

50

民 族

a5

文本

50

职 称

a6

文本

50

出生日期

a7

文本

50

政治面貌

a8

文本

50

健康状况

a9

文本

50

籍 贯

a10

文本

50

体 重

a11

文本

50

身份证号

a12

文本

50

身 高

a13

文本

50

婚姻状况

a14

文本

50

毕业院校

a15

文本

50

本人成分

a16

文本

50

专 业

a17

文本

50

工 龄

a18

文本

50

学 历

a19

文本

50

外语语种

a20

文本

50

外语水平

a21

文本

50

普通话程度

a22

文本

50

粤语程度

a23

文本

50

计算机能力

a24

文本

50

户口所在地

a25

文本

50

现 住 址

a26

文本

50

档案存放地

a27

文本

50

个人专长以及爱好

a28

文本

50

本人曾受过何种奖励和处分

a29

文本

50

工作经历

a30

文本

50

家庭情况

a31

文本

50

本 人联系方式

a32

文本

50

发生意外紧急情况通知何人

a33

文本

50

备 注

photo

OLE 对象

照片

havephoto

文本

50

是否有照片

14个人周计划表

表14 个人周计划表(personweekworkrep)

字段名称

数据类型

字段大小

说明

ID

自动编号

weekworkrep

备注

公司周计划

myyear

文本

50

周计划所在年

myweek

文本

50

第几周

username

文本

50

周计划所属用户名

15员工奖惩情况表

表15 员工奖惩情况表(rewpuninf)

字段名称

数据类型

字段大小

说明

ID

自动编号

username

文本

50

员工用户名

rewpunname

文本

50

奖惩名称

rewpundate

文本

50

奖惩日期

rewpunfile

文本

50

奖惩文号

rewpunsort

文本

50

奖惩类型

rewpuntype

文本

50

奖惩方式

remark

备注

奖惩原因及备注说明

recname

文本

50

记录人

recdate

日期/时间

常规日期

记录时间

updatename

文本

50

更改人

updatedate

日期/时间

常规日期

更改时间

16已发公文表

表16 已发公文表(seesenddate)

字段名称

数据类型

字段大小

说明

ID

自动编号

senddateid

数字

长整型

公文的id

username

文本

50

公文接收者的用户名

havesee

文本

50

是否看过公文

17公文管理表

表17 公文管理表(senddate)

字段名称

数据类型

字段大小

说明

ID

自动编号

title

文本

50

公文的标题

content

备注

公文内容

sender

文本

50

recipientusername

文本

50

recipientuserdept

文本

50

inputdate

日期/时间

常规日期

reid

数字

长整型

filename

文本

50

fileContentType

文本

50

filevalue

OLE 对象

18员工资料管理表

表18 员工资料管理表(stafaddressinf)

字段名称

数据类型

字段大小

说明

ID

自动编号

username

文本

50

姓名

companytel

文本

公司电话

fax

文本

hometel

文本

50

email

文本

50

Email

homeaddress

文本

50

postcard

文本

50

sex

文本

50

handset

文本

50

callset

文本

50

remark

备注

50

19员工基本档案表

表19 员工基本档案表(stafinf)

字段名称

数据类型

字段大小

说明

ID

自动编号

name

文本

50

员工姓名

sex

文本

50

性别

birthday

文本

50

出生日期

dept

文本

50

部门

position

文本

50

职位

techpost

文本

50

职称

intocomday

文本

50

进公司时间

edulevel

文本

50

学历

idno

文本

50

身份证号

stafresume

备注

简历

specialty

备注

专长

remark

备注

备注

tel

文本

50

电话

native

文本

50

籍贯

school

文本

50

毕业学院

specialtystudy

备注

入用考核人意见

confirmidea

备注

批准人意见

resultidea

备注

工作成绩考核

dynamicidea

备注

动态考核

remark1

备注

备注1

20管理用户表

表20 管理用户表(userinf)

字段名称

数据类型

字段大小

说明

ID

自动编号

name

文本

50

用户姓名

username

文本

50

用户名

password

文本

50

密码

userdept

文本

50

所在部门

userlevel

文本

50

用户级别

forbid

文本

50

是否禁用

seenotice

文本

50

可以看所有员工的日志

是否看了通告

allow_see_all_workrep

文本

50

可以看所有员工的日志

allow_see_dept_workrep

文本

50

可以看同部门的日志

allow_write_complan

文本

50

可以输入公司计划

allow_control_dept_user

文本

50

可以管理部门用户

allow_control_all_user

文本

50

可以管理所有用户

allow_send_note

文本

50

可以发布通告

allow_control_note

文本

50

可以管理通告

allow_control_file

文本

50

可以管理公文

allow_write_stafinf

文本

50

可以输入职员资料

allow_control_level

文本

50

可以分配用户权限

allow_edit_person_personinf

文本

50

可以编辑本人基本档案

allow_see_all_personinf

文本

50

可以看所有员工基本档案

allow_see_dept_personinf

文本

50

可以看部门员工基本档案

allow_edit_all_jobchanginf

文本

50

可编辑所有员工职务变动档案

allow_edit_dept_jobchanginf

文本

50

可编辑本部门员工职位变动档案

allow_edit_all_rewpuninf

文本

50

可编辑所有员工奖惩档案

allow_edit_dept_rewpuninf

文本

50

可编辑所有员工考核档案

可编辑部门员工奖惩档案

allow_edit_all_checkinf

文本

50

可编辑所有员工考核档案

allow_edit_dept_checkinf

文本

50

可编辑部门员工考核档案

allow_edit_all_wageinf

文本

50

可编辑所有员工工资档案

allow_edit_dept_wageinf

文本

50

可编辑部门员工工资档案

allow_edit_person_addressinf

文本

50

可编辑本人的通讯录

allow_edit_dept_addressinf

文本

50

可编辑部门通讯录

allow_edit_all_addressinf

文本

50

可编辑全体员工通讯录

allow_edit_client_addre

文本

50

可编辑客户通讯录

allow_see_job

文本

50

可以看招聘信息

joindate

日期/时间

建立时间

21员工工资档案表

表21 员工工资档案表(wanginf)

字段名称

数据类型

字段大小

说明

ID

自动编号

username

文本

50

员工用户名

wagelevel

文本

50

工资级别

basewage

文本

50

基本工资

stafjob

文本

50

员工职务

jobwage

文本

50

职务工资

workyear

文本

50

员工工龄

workyearwage

文本

50

工龄工资

rentwage

文本

50

房租补贴

carwage

文本

50

车费补贴

prize

文本

50

奖金金额

insurance

文本

50

交保险费

tax

文本

50

交个人税

affairday

文本

50

事假天数

affairfund

文本

50

扣事假款

sickday

文本

50

病假天数

sickfund

文本

50

扣病假款

mustwage

文本

50

应发金额

actwage

文本

50

实发金额

changreason

文本

50

变动原因

actdate

文本

50

执行时间

remark

备注

备注说明

recname

文本

50

记录人

recdate

日期/时间

记录时间

updatename

文本

50

更改人

updatedate

日期/时间

更改时间

22工作计划信息表

表22工作计划信息表(woykrep)

字段名称

数据类型

字段大小

说明

ID

自动编号

title

文本

50

日志

recdate

日期/时间

中日期

日志记录日期

username

文本

50

本人用户名

superior

文本

50

安排工作的上级用户名

remark

备注

imp

文本

50

是否重要

finished

文本

50

是否完成

第四章主要界面及相关代码分析

4.1连接数据库

   本系统中有许多页面都要涉及到数据库的操作,包括查询、插入、删除等,执行这些操作之前首先要建立与数据库系统的连接,程序清单如下

<%

session.abandon

   'Server.ScriptTimeOut=500

   function opendb(DBPath,sessionname,dbsort)

dim conn   ‘数据库连接

if not isobject(session(sessionname)) then

Set conn=Server.CreateObject("ADODB.Connection")

'if dbsort="accessdsn" then conn.Open "DSN=" & DBPath

'if dbsort="access" then conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath

'if dbsort="sqlserver" then conn.Open "DSN=" & DBPath & ";uid=wsw;pwd=wsw"

'请在下面修改数据库名字

DBPath1=server.MapPath("data/office.mdb")

conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath1

‘打开数据库

set session(sessionname)=conn

end if

set opendb=session(sessionname)

end function

%>

本系统分为10个模块,包括系统登陆模块,工作计划管理模块,通告信息管理模块,公文信息管理模块,人力资源管理模块,通讯资料管理模块,资源预约管理模块,帮助信息模块,设置用户权限模块系统注销模块。下面我们就分别对这10个模块做详细介绍

4.2系统登陆模块

因为只有公司内部人员才可以进入该系统,因此设置了用户登陆界面,如图1所示。输入正确的用户名和密码就可以进入到系统导航页,如图2所示。该页面主要由几个部分的内容组成:头部功能选择文件,左侧功能选择文件,隐藏/显示页面文件,右侧功能主页面。

ASP网络多功能办公系统设计与实现_第2张图片

ASP网络多功能办公系统设计与实现_第3张图片

 登陆功能实现的关键代码

<%

 '登录

username=request("username")

password=request("password")

if username<>"" and password<>"" then

'打开数据库查找是否有此用户

set conn=opendb("oabusy","conn","accessdsn")

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

sql="select * from userinf where username=" & sqlstr(username) & " and password=" & sqlstr(password) & " and forbid='no'"

rs.open sql,conn,1

'如果有此用户就进入系统

if not rs.eof and not rs.bof then

response.cookies("oabusyname")=rs("name")

response.cookies("oabusyusername")=rs("username")

response.cookies("oabusyuserdept")=rs("userdept")

response.cookies("oabusyuserlevel")=rs("userlevel")

response.cookies("cook_allow_see_all_workrep")=rs("allow_see_all_workrep")

response.cookies("cook_allow_see_dept_workrep")=rs("allow_see_dept_workrep")

response.cookies("cook_allow_control_dept_user")=rs("allow_control_dept_user")

response.cookies("cook_allow_control_all_user")=rs("allow_control_all_user")

response.cookies("cook_allow_send_note")=rs("allow_send_note")

response.cookies("cook_allow_control_note")=rs("allow_control_note")

response.cookies("cook_allow_control_file")=rs("allow_control_file")

response.cookies("cook_allow_control_level")=rs("allow_control_level")

response.redirect "gensystem.asp"

end if

end if

%>

4.3工作计划管理模块

   工作计划管理包括本人工作计划和员工工作计划

   本人工作计划可以编辑 、删除、查看本人工作计划,还可以查看上级安排的工作,工作查看页如图3所示,增加工作页如图4所示,编辑工作页如图5

ASP网络多功能办公系统设计与实现_第4张图片

ASP网络多功能办公系统设计与实现_第5张图片

 功能实现的关键代码

<%

oabusyname=request.cookies("oabusyname")

oabusyusername=request.cookies("oabusyusername")

oabusyuserdept=request.cookies("oabusyuserdept")

oabusyuserlevel=request.cookies("oabusyuserlevel")

if oabusyusername="" then response.redirect "default.asp"

function havefinished(value)

if value="yes" then

havefinished="已完成"

else

havefinished="未完成"

end if

end function

function impdegree(value)

if value="yes" then

impdegree="重要"

else

impdegree="一般"

end if

end function

%>

<%

call bghead()

%>

<%

username=request("username")

superior=request("superior")

recdate=request("recdate")

'打开数据库读出用户姓名

set conn=opendb("oabusy","conn","accessdsn")

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

sql="select name from userinf where username=" & sqlstr(username)

rs.open sql,conn,1

if not rs.eof and not rs.bof then stafname=rs("name")

%>

<%=stafname%>的工作计划(<%=recdate%>)

<%

call bgmid()

%>

 

<%

'打开数据库,读出日期为recdate,用户名为username的记录

set conn=opendb("oabusy","conn","accessdsn")

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

sql="select * from workrep where username=" & sqlstr(username) & " and recdate=" & "#" & recdate & "#"

rs.open sql,conn,1

while not rs.eof and not rs.bof

'读出任务委派者姓名

if rs("superior")<>"" then

set conn=opendb("oabusy","conn","accessdsn")

set rs1=server.createobject("adodb.recordset")

sql="select name from userinf where username=" & sqlstr(rs("superior"))

rs1.open sql,conn,1

superiorname=rs1("name")

end if

%>

 

<%

if (username=oabusyusername) or (superior=oabusyusername) then

%>

>

<%

else

%>

不可编辑

<%

end if

%>

完成情况<%=havefinished(rs("finished"))%> 重要程度<%=impdegree(rs("imp"))%> 委派任务者<%=checked3(superiorname)%>
简要标题<%=rs("title")%>
详细说明<%=checked3(keepformat(rs("remark")))%>


<%

rs.movenext

wend

%>

<%

call bgback()

%>

   (2) 如果具有管理员身份进入系统,还具有了解员工工作计划信息的功能,工可以查看下级人员的工作计划,安排下级的工作和任务,编辑你给下属安排的工作和任务。你的下属员工将可以看到你安排给他的工作和任务,你还可以看到工作和任务完成情况。

4.4通告信息管理模块

   (1)浏览通告可以查看以前的通告信息

   (2)如果具有管理员身份进入系统,还具有发布通告信息、管理通告的功能

发布通告信息后,所有员工都会在浏览器窗口弹出你的通告,只有当他按了“我已经看了此通告”后,才不会弹出此信息。发布公告信息模块页面的设计效果如图6

ASP网络多功能办公系统设计与实现_第6张图片

 功能实现的关键代码

<%

if request("submit")="发布" then

title=request("title")

content=request("content")

set conn=opendb("oabusy","conn","accessdsn")

sql = "Insert Into newnotice (title,content) Values( "

sql = sql & SqlStr(title) & ", "

sql = sql & SqlStr(content) & ")"

conn.Execute sql

'把是否看过通告改为"no"

set conn=opendb("oabusy","conn","accessdsn")

sql = "update userinf set seenotice='no'"

conn.Execute sql

%>



新通告发布成功!

<%

else

%>

   (3)管理通告模块可以查看以前的通告信息,删除以前的通告信息

管理通告页面的设计效果如图7

ASP网络多功能办公系统设计与实现_第7张图片

 功能实现的关键代码

<%

mymonth=month(now())     '取得当前月

if request("mymonth")<>"" then mymonth=cint(request("mymonth"))

myyear=year(now())         '取得当前年

if request("myyear")<>"" then myyear=cint(request("myyear"))

if request("detel")="删除" and request("delid")<>"" then

set conn=opendb("oabusy","conn","accessdsn")

count=0

condition=""

for each idno in request("delid")

count=count+1

condition=condition+"id=" & idno

if count

condition=condition+" or "

end if

next

'删除数据库中的记录

sql = "delete * from newnotice where " & condition

conn.Execute sql

end if

%>

<%

<%

for i=2001 to 2010

%>

<%

next

%>

<%

call bgmid()

%>

<%

if myyear<>"" then

mydate=myyear & "-" & mymonth & "-" & 1

mydate1=dateadd("m",1,mydate)

else

mydate=""

end if

set conn=opendb("oabusy","conn","accessdsn")

Set rs=Server.CreateObject("ADODB.recordset")

sql="select * from newnotice order by id desc"

if request("lookfor")="yes" then sql="select * from newnotice where noticedate between " & "#" & mydate & "# and #" & mydate1 & "# order by id desc"

rs.open sql,conn,1

if not rs.eof and not rs.bof then

rs.pagesize=20

page=clng(request("page"))

if page<1 then page=1

if page>rs.pagecount then page=rs.pagecount

href="noticecontrol.asp"

rs.absolutepage=page

%>


<%

for ipage=1 to rs.pagesize

%>

<%

rs.movenext

if rs.eof then exit for

next

%>

4.5公文信息管理模块

  (1) 发送公文可以发送公文,当公文发送后,发送对象会及时弹出你的公文   信息,只有他回复后才不会再弹出此信息。在对方回复后,你也会及时弹出对方的回复信息。

  (2) 已发公文可以查看以前发送的公文。    

  (3) 已收公文可以查看以前收到的公文、转发公文、再次回复公文。

  如果具有管理员身份进入系统,还具有可以查看、删除企业以前的所有公文。

4.6力资源管理模块

   人力资源管理模块该模块可以查看个人基本档案、员工基本档案。

   如果具有管理员身份进入系统,还具有可以编辑个人基本档案、员工职位变动、员工奖惩情况、员工考核情况、员工工资档案、查询员工基本档案。

编辑个人基本档案设计效果如图8

ASP网络多功能办公系统设计与实现_第8张图片

 功能实现的关键代码

<%

'打开数据库,读出编辑通讯录权限

set conn=opendb("oabusy","conn","accessdsn")

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

sql="select * from userinf where username=" & sqlstr(oabusyusername)

rs.open sql,conn,1

allow_edit_person_personinf=rs("allow_edit_person_personinf")

%>

<% call bghead() %>

通告标题发布日期
>" target="_blank"><%=rs("title")%> <%=rs("noticedate")%>

<%

if allow_edit_person_personinf="yes" then

%>

<%

end if

%>

<%=oabusyname%>的个人基本档案  

<%

call bgmid()

%>

<%

if request("submit")="删除" then

set conn=opendb("oabusy","conn","accessdsn")

sql="delete from personinf where username=" & sqlstr(oabusyusername)

conn.execute sql

end if

'打开数据库,读出个人档案

set conn=opendb("oabusy","conn","accessdsn")

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

sql="select * from personinf where username=" & sqlstr(oabusyusername)

rs.open sql,conn,1

dim a(33)

if not rs.eof and not rs.bof then

for i=1 to 33

a(i)=rs("a" & i)

next

inputdate=rs("inputdate")

updatedate=rs("updatedate")

havephoto=rs("havephoto")

id=rs("id")

else

for i=1 to 33

a(i)=""

next

inputdate=""

updatedate=""

havephoto="no"

end if

%>

   员工职位变动设计效果如图9

ASP网络多功能办公系统设计与实现_第9张图片

 功能实现的关键代码

<%

'打开数据库,读出员工职位变动数据库

set conn=opendb("oabusy","conn","accessdsn")

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

sql="select * from changjob where username=" & sqlstr(username)

rs.open sql,conn,1

while not rs.eof and not rs.bof

oldjob=rs("oldjob")

changjob=rs("changjob")

changdate=rs("changdate")

changfile=rs("changfile")

changsort=rs("changsort")

changtype=rs("changtype")

changreason=rs("changreason")

recusername=rs("recusername")

recdate=rs("recdate")

updateusername=rs("updateusername")

updatedate=rs("updatedate")

id=rs("id")

%>

   员工奖惩情况设计效果如图10

ASP网络多功能办公系统设计与实现_第10张图片

功能实现的关键代码

<%

'打开数据库读出员工姓名

set conn=opendb("oabusy","conn","accessdsn")

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

sql="select name from userinf where username=" & sqlstr(username)

rs.open sql,conn,1

name=rs("name")

%>


<%=name%>的奖惩档案


<%

'打开数据库,读出员工职位变动数据库

set conn=opendb("oabusy","conn","accessdsn")

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

sql="select * from rewpuninf where username=" & sqlstr(username)

rs.open sql,conn,1

while not rs.eof and not rs.bof

rewpunname=rs("rewpunname")

rewpundate=rs("rewpundate")

rewpunfile=rs("rewpunfile")

rewpunsort=rs("rewpunsort")

rewpuntype=rs("rewpuntype")

remark=rs("remark")

recname=rs("recname")

recdate=rs("recdate")

updatename=rs("updatename")

updatedate=rs("updatedate")

id=rs("id")

%>

   员工工资档案设计效果如图11

ASP网络多功能办公系统设计与实现_第11张图片

功能实现的关键代码

<%

'打开数据库读出员工姓名

set conn=opendb("oabusy","conn","accessdsn")

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

sql="select name from userinf where username=" & sqlstr(username)

rs.open sql,conn,1

name=rs("name")

%>


<%=name%>的工资档案


<%

'打开数据库,读出员工工资数据库

set conn=opendb("oabusy","conn","accessdsn")

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

sql="select * from wageinf where username=" & sqlstr(username)

rs.open sql,conn,1

while not rs.eof and not rs.bof

wagelevel=rs("wagelevel")

basewage=rs("basewage")

stafjob=rs("stafjob")

jobwage=rs("jobwage")

workyear=rs("workyear")

workyearwage=rs("workyearwage")

rentwage=rs("rentwage")

carwage=rs("carwage")

prize=rs("prize")

insurance=rs("insurance")

tax=rs("tax")

affairday=rs("affairday")

affairfund=rs("affairfund")

sickday=rs("sickday")

sickfund=rs("sickfund")

mustwage=rs("mustwage")

actwage=rs("actwage")

changreason=rs("changreason")

actdate=rs("actdate")

remark=rs("remark")

recname=rs("recname")

recdate=rs("recdate")

updatename=rs("updatename")

updatedate=rs("updatedate")

id=rs("id")

%>

4.7通讯资料管理模块

   该模块包括员工资料管理、客户资料管理。设计效果如图12,图13

ASP网络多功能办公系统设计与实现_第12张图片

功能实现的关键代码

<%

'打开数据库显示通讯信息

set conn=opendb("oabusy","conn","accessdsn")

set rs1=server.createobject("adodb.recordset")

sql="select * from stafaddressinf where username=" & sqlstr(rs("username"))

rs1.open sql,conn,1

if not rs1.eof and not rs1.bof then

companytel=rs1("companytel")

email=rs1("email")

else

companytel=""

email=""

end if

%>

4.8资源预约管理模块

   资源预约管理主要是增加和预约资源,如何进行预约如何?在预约的资源中没有我要的资源怎么办?如何编辑和删除?

登录→选(通用)→选(资源预约管理)→点选“预约”→填写预约资料→预约

 当你预约资源时发现没有我要预约的资源,你可以增加预约资源,增加资源的方法:

      登录→选(通用)→选(资源预约管理)→点选“增加”→填写要增加的资源信息。

   登录→选(通用)→选(资源预约管理)→点选要编辑和删除的资源名称→编辑或删除。

   如何删除预约信息?只有填写预约信息的用户才有权人工删除本条预约信息。过期的预约信息会自动删除。 

   添加新的资源设计效果如图14

ASP网络多功能办公系统设计与实现_第13张图片

 功能实现的关键代码

<%

if request("submit")="增加" then

equipment=request("equipment")

controller=request("controller")

remark=request("remark")

'打开数据库判断设备名称是否重复

set conn=opendb("oabusy","conn","accessdsn")

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

sql="select * from equipment where equipment=" & sqlstr(equipment)

rs.open sql,conn,1

if not rs.eof and not rs.bof then

%>



输入的资源名称与原来记录重复,请重新输入!

<%

else

set conn=opendb("oabusy","conn","accessdsn")

sql = "Insert Into equipment (equipment,remark,controller) Values( "

sql = sql & SqlStr(equipment) & ", "

sql = sql & SqlStr(remark) & ", "

sql = sql & SqlStr(controller) & ")"

conn.Execute sql

%>



成功输入资源!

<%

end if

else

%>

资源预约设计效果如图15

ASP网络多功能办公系统设计与实现_第14张图片

功能实现的关键代码

if request("submit")="预约" then

starttime=request("starttime")

endtime=request("endtime")

username=oabusyusername

equipment=request("equipment")

purpose=request("purpose")

if isdate(starttime) and isdate(endtime) then

'打开数据库,判断预约时间是否冲突

set conn=opendb("oabusy","conn","accessdsn")

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

sql="select * from booking where equipment=" & sqlstr(equipment)

rs.open sql,conn,1

bookingallow="yes"

'response.write "bookingallow=" & bookingallow & "
"

while not rs.eof and not rs.bof

if (cdate(starttime)>cdate(rs("starttime")) and cdate(starttime)cdate(rs("starttime")) and cdate(endtime)cdate(rs("endtime"))) or (cdate(starttime)>=cdate(rs("starttime")) and cdate(endtime)<=cdate(rs("endtime"))) then bookingallow="no"

rs.movenext

wend

if bookingallow="no" then

%>



您预约的时间段已经被占用!

<%

else

set conn=opendb("oabusy","conn","accessdsn")

sql = "Insert Into booking (username,starttime,endtime,equipment,purpose) Values( "

sql = sql & SqlStr(username) & ", "

sql = sql & "#" & starttime & "#, "

sql = sql & "#" & endtime & "#, "

sql = sql & SqlStr(equipment) & ", "

sql = sql & SqlStr(purpose) & ")"

conn.Execute sql

%>



预约成功!

<%

end if

else

%>

4.9帮助信息模块

   帮助信息管理模块主要是对上面模块功能及具体操作的详细介绍,主要包括工作计划帮助,通告信息帮助,公文信息帮助,人力资源帮助,客户资料帮助,资源预约帮助,帐号设置帮助,权限设置帮助,管理帮助类别,输入帮助信息几个方面。

4.10设置用户权限模块

   该模块包括有用户帐号设置和用户权限设置

   (1) 用户帐号设置,如果是管理员身份进入系统,用户帐号设置具有增加下属用户,管理下属用户,增加用户,管理用户,个人资料维护的功能。否则只能个人资料维护。增加用户页面设计效果如图15

                                 ASP网络多功能办公系统设计与实现_第15张图片

 功能实现的关键代码

<%

oabusyuserdept=request.cookies("oabusyuserdept")

if request("submit")="增加" then

username=request("username")

password=request("password")

name=request("name")

userdept=request("userdept")

userlevel=request("userlevel")

'判断是否有与申请的用户名相同的

set conn=opendb("oabusy","conn","accessdsn")

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

sql="select * from userinf where username=" & sqlstr(username) & " and password=" & sqlstr(password)

rs.open sql,conn,1

if not rs.eof and not rs.bof then

%>



用户名为<%=username%>的用户已经存在,请选择其他用户名

返回

<%

else

sql = "Insert Into userinf (username,password,name,userdept,userlevel) Values( "

sql = sql & SqlStr(username) & ", "

sql = sql & SqlStr(password) & ", "

sql = sql & SqlStr(name) & ", "

sql = sql & SqlStr(userdept) & ", "

sql = sql & SqlStr(userlevel) & ")"

conn.Execute sql

%>



用户名为<%=username%>的用户注册成功!

<%

end if

else

%>

    (2)用户权限设置包括工作计划权限,通告公文权限,基本档案权限,职务变动权限,奖惩编辑权限,考核编辑权限,工资编辑权限,通讯资料权限,用户管理权限工作计划权限页面设计效果如图16,其它权限设置跟工作计划权限大同小异,这里就不在一一介绍了。

ASP网络多功能办公系统设计与实现_第16张图片

 功能实现的关键代码

<%=rs("name")%><%=rs("userdept")%><%=rs("userlevel")%>

>

>

>

>

4.11系统注销模块

用户可以通过注销模块退出该系统,程序清单如下

<%

response.cookies("oabusyname")=""

response.cookies("oabusyusername")=""

response.cookies("oabusyuserdept")=""

response.cookies("oabusyuserlevel")=""

response.cookies("cook_allow_see_all_workrep")=""

response.cookies("cook_allow_see_dept_workrep")=""

response.cookies("cook_allow_control_dept_user")=""

response.cookies("cook_allow_control_all_user")=""

response.cookies("cook_allow_send_note")=""

response.cookies("cook_allow_control_note")=""

response.cookies("cook_allow_control_file")=""

response.cookies("cook_allow_control_level")=""

response.redirect "default.asp"

%>

第五章 测试和维护

测试方法

关于程序修改:

经过多次的观察,改错题常见错误如下:

1、语法错误。

  a、丢失分号;

  b、关键字拼写错误。 

  c、语句格式错误,例如for语句中多写或者少写分号

  d、函数类型说明错误。与main中不一致。

  e、函数形参声明错误。例如,少*等。

  f、运算符书写错误,例如:/写成了\

2、逻辑错误

  这类错误不太好判断,常见的有:

  a、循环次数不对

  b、下标越界

c、运算类型不匹配,例如:两个整形运算的结果还是整形

关于程序设计问题。

  程序设计有很头疼的问题,经常表现为出现问题后不知道从何处下手,经过我的仔细分析发现,主要分为以下几类:

  第一、数值计算类。这类问题通常表现在多项式求和的问题,例如:S=1+2+3+…+100等等,对于这类程序,一般都是先找出规律然后根据规律确定循环的初值和终值,在循环体里面,一般都是先求出单项的值,然后进行累加就可以了。关于这方面的例子我会在接下来的文章中发表,请大家关注。

  第二、字符串运算类。这类问题在等级考试中占的比例较大,根据具体情况,一般有下面几种:

  1、删除字符串里面特定的字符串。这类问题一般都需要另外一个字符数组,然后对里面的字符进行扫描,然后逐个判断是否是需要删除的字符,是的话就不进行复制,不是的话就要进行复制。

  2、对特定的字符进行替换操作。这类问题一般也是先扫描字符串,然后判断是否符合条件,若是需要替换的字符,则进行替换,否则不替换。详细操作见我后面的例题。

  3、查找特定字符串出现的次数。

    4、对特定字符串进行替换。这个问题解决的办法和我们上面的题比较相象,首先是查找,如果找到了,则进行替换就可以了。

经过前面的介绍,一个办公系统建设完毕。由于篇幅有限,文中只是介绍了比较复杂的代码。至于简单的我在这里就不再做介绍了。通过本系统,详细介绍了系统的开发过程。并对系统中的模块也有了一定的了解。在今后的类似制作中我将按照这种方法来完成。

你可能感兴趣的:(asp.net,大数据,asp.net)