信息安全05(2)班 黎乐荣
指导老师:陈蓉西
摘要 本课题的基本内容是利用编程技术和数据库技术创建一个OA管理系统,最大程度地提高员工办公的效率,实现了企业单位办公管理系统的智能化、系统化、信息化,这不仅解决了传统管理方式所带来的问题和满足了企业的需求,同时也为企业在今后的扩展提供了有力的后备力量。该OA管理系统基于B/S模式,以EclipsePHP Studio2008作为开发环境,运用PHP语言进行研发;并以Microsoft SQL Server 2000作为后台数据库进行创建和维护。总体上,该系统实现了登录模块,撰写公文,审批及阅读公文,发布及查看公告,查看系统日志等功能。可以说,它是一个功能较全的自动化办公管理系统。
关键字 OA管理系统;数据库;PHP;自动化办公
ABSTRACT The basic content of the topic is the use of programming techniques and technologies to create an OA database management system, maximize the efficiency of office staff to achieve the enterprise office management system intelligent, systematic, information-based, not only to solve the traditional brought about by management issues and to meet the needs of the enterprise, but also for business expansion in the future provide a strong reserve force. OA management system is based on the B / S model to EclipsePHP Studio2008 as a development environment, the use of PHP development language; and Microsoft SQL Server 2000 database as a background to create and maintain. In general, the system achieved a login module, written document, approved and read the document, publish and view the notice, view the system log functions. It can be said that it is a more full-function office automation management system.
KEY WORDS OA Management System;Database;PHP;Office automation
1.前 言
随着信息技术的发展和计算机普及率和国内信息技术应用水平的提高,在办公过程中,以传统的纸质为媒介的工作方式和审批模式已经难以满足现代大规模集成的工业化生产的新需求,实现这种以计算机为媒介的无纸化办公自动化已经是提高企业单位办公效率、规范化管理的必然趋势。
随着企业的发展和扩大,其企业的各种事务信息和业务数据将会不断以几何级的方式扩大。但是,以传统纸质为媒体的办公方式将这样各种各样的资料及信息记录的纸上,这样当面对巨量的信息资料时不但使得处理资料信息时容易导致各种错误的发生,而且使得企业内部门内上下级之间的信息发送与反馈造成不便,也使得各个部门的数据信息流通变得非常困难。所以在图书馆的存书量和业务量庞大,仅仅靠传统的记账式管理是不可行的,传统的管理方法既浪费人力物力财力,又容易导致各种错误的发生。所以如何高效、方便、快捷、安全地处理各种办公事务以及传递和记录各种信息和资料。从而更大程度地提高工作人员的工作效率,成为一个突出的问题摆在现代化公司管理层的前面。因此,运用科学技术的成果,使企业公司的办公管理方式进入以计算机网络为媒介,以信息管理软件为基础实现联网协同化的办公管理环境,成为我们急需完成的首要任务。因而基于网络的自动化办公系统也因此应运而生。
OA管理系统的产生,最大程度地提高员工办公的效率,实现了企业单位办公管理系统的智能化、系统化、信息化,这不仅解决了传统管理方式所带来的问题和满足了企业的需求,同时也为企业在今后的扩展提供了有力的后备力量。在企业的长远发展中有着举足轻重的作用。
本课题的基本内容是利用WEB及数据库技术创建一个办公自动化系统,提高办公效率和质量、辅助办公决策、实现无纸化办公。其中以PHP作为开发环境和以MSSQL作为数据库基础进行研发。预期研发出具有自己特色的自动化管理系统。高效完成包括信息采集、信息加工、信息传输、信息保存等任务。
2.项目背景
2.1 OA管理系统的研究
办公自动化于20世纪50年代提出, 在80年代至90年代得到了飞速的发展。办公自动化是以先进的科学技术、信息技术、系统科学和行为科学为支柱的一门综合性技术。
目前国内的OA系统在处于第二代OA系统阶段,从90年代中期开始的以网络技术和协同工作技术为主要特征,实现了工作流程自动化,即将收发文从传统的手工方式转向工作流自动化方式。第二代办公自动化系统,实现了不同职能部门间的工作流程自动化。不同部门及其工作人员工作间的协作大大加强,从而使/企业办公的效率得到较大的提高。而且,以Internet为基础,办公自动化系统实现了移动办公,资源的利用不再受通讯技术的,从而实现/企业内部的电子化和网络化办公。其中也存在一些问题如:1、开发手段单一,平台依赖性严重;2、为用户考虑得少,软件的柔性构造功能较差;3、办公系统概念弱化,办公资源无法统一管理,办公信息孤岛化。
而在一些发达国家里,图书馆管理系统的研究和发展比较早、比较好,所以他们的OA系统能体现出高智能、高便捷的优点。国外许多大公司投入了大量人力、物力,在语音、数字、文字图象、网络技术、人机工程等方面进行了深入细致的研究,并推出了影象处理设备、文字处理机、办公室助理机、袖珍组织机、笔记本计算机等现代办公设备。
2.2 OA管理系统的发展趋势
目前,由于计算机网络和信息技术的飞速发展,OA管理系统也因此得到了迅速的发展和改变,它逐步实现了多方位的联机办公,办公文档的快速传送及处理。而更重要的是,OA管理系统逐渐地向多元化发展,比较先进的OA自动化办公管理系统能够利用网络对语音、数字、文字图象、文档等等信息进行各种处理及传递。此外,随着 网络技术的应用的发展,一个完善的系统还应提供无缝接入影象处理设备、文字处理机、办公室助理机、袖珍组织机、笔记本计算机等现代办公设备。
总之,OA管理系统正朝着智能化、现代化、综合化等方向不断地发展。
3.需求分析
需求分析阶段是OA管理系统开发最重要的阶段。因为只有充分了解用户和系统本身的需求后,才能够设计出比较完善的系统。在此,我将需求分析分为两个部分。一是理解需求。二是功能需求。
3.1 理解需求
基于对OA管理系统的本身的理解,得到的需求规格说明以下:
(1)系统为所有用户建立登录资料信息,所有的用户在进入系统前都需要身份验证。用户证号和密码输入正确才能进入系统。
(2)系统为不同的用户分配不同的访问权限。
(3)在系统中,管理用户对系统的配置进行设置。
(4)系统中,管理用户可以对用户的某些信息进行修改,增加,删除。
(5)系统中,管理用户可以查看系统的运行日志。
(6)系统需有较好的安全性和可扩展性,并提供简洁方便的图形用户界面。
(7)用户根据自己的权限,可以访问拥有权限的文件及资源。并可以进行系统的操作。
3.2 功能需求
一个图书馆管理系统至少包括以下的功能:
(1)登录模块
主要功能是提供用户登录进入系统。并对用户的登录信息进行识别,包括用户的用户类型与权限。
(2)撰写公文
主要是实现对办公过程中的公文提交,以及公文的流通传送保存等。比如工作总结的上交上级管理人员、工作任务的下发等公文传送。
(3)审批及阅读公文
主要实现公文的处理。例如公文在上交后,上级对公文的进行审批及发回审批结果等公文处理任务。
(5)发布及查看公告
主要实现用户在许可权限的情况下向系统发布和查看公开的公告信息。使得每一个权限达到查看要求的成员都可以看得到。
(6)查看系统日志
为了保证系统的良好动作。该模块主要是提供给系统管理人员查看系统的操作日志,方便其了解系统的运行状态。
4.系统的功能设计
4.1 功能设计概述
OA自动化办公管理系统的主要目的是有效提高办公效率和质量、辅助办公决策、实现无纸化办公。
为了解决问题,满足用户的需求,该系统项目将从实际、方便的角度出发,分别设置面向三种类型的用户,包括普通用户、部门主管、管理用户。其中,(1)普通用户:这部门用户为部门中的普遍员工。(2)部门主管:主要是指各个部门的负责人,他们主要是负责管理部门的事务,管理员工,处理员工提交的各种文档。(3)管理用户:该用户拥有完全地使用OA管理系统的权力,并对用户及部门的基本信息、用户登录管理、系统的显示设置等等进行维护。
所以,基于以上三种不同类型的用户,该系统给予分配不同的权限,系统会根据用户的不同权限进行判断是否可以访问的某页面,并且提供不同的系统菜单。它们都是基于在同一个数据库上所进行的操作,所以它们之间也相互联系,相互影响。因此,总的来说,该OA管理系统包括如下的功能(如图4.1所示),其中每个功能模块都由若干相关联的子功能模块组成。
4.2 登录管理设计
“登录管理”功能模块是指系统用户必须输入正确的用户名和密码才可以登录进入OA管理系统,其中密码是通过MD5进行摘要后保存在数据库里。在这部分的功能块中,应该要充分地体现系统的安全性,以提高整个系统的性能。
4.3 办公文档设计
“办公文档”功能模块用于用户对各种文档的发送、处理、提交等操作,其中包含的子功能模块如图4.2所示。
(1)我的办公:用于显示用户需要处理的办公文档,系统为为用户提交两种界面,第一种是为用户提供同时列表三种处理状态的文档,方便用户概览全部办公文档的情况。第二种是为用户只列表一种处理状态的文档。在两种界面中,都为用户提供查看及处理文档的连接。
(2)发送的文档:用于查看用户自己提交的文档在别的用户上处理的状态及处理结果。方便用户及时知道自己提交的文档的处理情况。其操作界面与“我的办公”模块大致相同。
4.4文件管理设计
文件管理是对OA系统里的共享文件的管理。在该模块中,用户可以根据自己的部门和用户的ID号分别对全体共享文件、部门共享文件、私人文件进行访问。并可以上传自己的私人文件到服务器上。对于三种共享模式的文件可以通过查看文件的模块中下载该文件。通过访问及上传功能,可以方便用户之间的文件传送业务。
4.4.1文件查看
“文件查看”功能模块用于共享文件的查看及下载操作。
(1)全体共享文件:该类型文件是面向全体用户的共享文件。全体用户对该类型的文件有访问及下载的权限。
(2)部门共享文件:该类型的文件是面向所在部门的用户的共享文件,系统会根据用户的部门信息判断该用户是否拥有访问的权限。
(3)我的私人文件:用于个人的文件箱,该文件类型下的访问权限只能是上传的用户所有。其他用户没有权限访问。
4.4.2上传文件
“上传文件”功能模块是用于上传文件到服务器,并将文件的附加信息增加到数据库中。系统会根据文件的类型、大小等等信息进行判断上传的文件是否符合要求。如符合则上传,否则不上传并返回错误信息。
4.5 快捷消息
“快捷消息”功能块OA系统内部的用户的短信消息的传递。向用户提供快速短信息的功能,包括快捷消息的发送、查看、回复、删除等等处理操作。如图4.5所示。
(1)发送快捷消息:通过选择用户,向该用户发送消息。
(2)查看快捷消息:查看别的用户向自己发送的消息,并同时修改数据库,将该消息设置为已读。
(3)回复快捷消息:在查看消息时可以快速回复该消息。
(4)删除快捷消息:对于用户接收到的消息,用户可以进行删除操作。删除后用户将不能再查看到该消息。
4.6 工作便笺设计
“工作便笺”是为用户提供方便记录各种工作便笺信息功能模块,可以为用户在工作中方便记录下各种信息,方便以后查看。它的四个部分如图4.6所示。
(1)新增便笺:新增新的工作便笺。
(2)修改便笺:对于已有的工作便笺进行修改。
(3)删除便笺:可以对已经没有用的工作便笺进行删除操作。删除后用户将不能再查看到该删除。
(4)查看便笺:查看自己的工作便笺。同时为安全,要防止非法访问不属于自己的工作便笺。
4.7 讨论组模块
“讨论组”功能块主要是实现用户的即时聊天的功能。向全体用户提供一个在线交流平台并且显示在线名单,登录前聊天信息记录以及通过文件的形式以天为单位记录讨论组里的全部聊天记录。
4.8 联系人模块
该功能模块主要是提供通信录的功能,方便用户记录客户及好友的各种联系方式。主要提供的操作为新增、删除、修改、查看等。
4.9 通知模块
该功能模块主要是用户查看全体用户的通知及部门通知。可能查看到通知的各种信息内容,如发布人、发布日期、通知的内容等信息。
4.10 管理部门模块
“管理部门”是为管理用户提供管理部门信息的功能模块管理用户可以通过该模块方便进行部门的增加、删除、修改、查看操作。它的四个部分如图4.7所示。
(1)新增部门:新增新的部门。
(2)修改便笺:修改已有的部门信息,包括部门的电话、部门的所属部门等等信息。
(3)删除部门:删除部门,在删除部门之前要对该部门的全体员工进行部门更新。
(4)查看部门:查看已有的部门信息
4.11 管理人员模块
该功能模块为管理用户访问页面,主要是管理用户查看全体用户的信息,同时也可以为用户进行某些内容的修改,如真实姓名、用户的密码等等。
4.12 添加用户
该功能模块只能管理用户可以访问页面,为管理用户增加新的用户使用。在增加用户时有些内容是必填内容。
4.13 发布通知模块
该功能模块为管理用户及部门主管可以访问页面,管理用户可以选择发布通知类型为全体或者某个部门的通知。部门主管则只能发布该部门的部门通知,没有权限发布全体通知。
4.14 上传文件模块
该功能模块为管理用户及部门主管可以访问页面,管理用户可以选择发布通知类型为全体或者某个部门的共享文件。部门主管则只能发布该部门的部门共享文件,没有权限发布全体共享文件。
4.15 系统参数设置
该功能模块只能为管理用户可以访问页面,可以对没有分页显示、存在分页显示、上传文件大小、聊天前记录数、聊天总记录数系统参数进行设置。
4.16 用户信息模块
该功能模块可以被所用户进行访问,主要功能是为用户提供修改个人信息的功能。
4.17 系统日志模块
该功能模块主要是保证系统的良好动作。该模块主要是提供给系统管理人员查看系统的操作日志,方便其了解系统的运行状态。
5.系统的数据库设计
数据库设计是整个数据库应用系统开发过程中的一个重要环节。而数据库是系统的后台部分的基础。在OA管理系统中,数据库的设计工作主要包括建立管理系统的数据库,创建所需要的表与字段。本系统的数据库建立与维护等相关操作是用SQL Server2000来实现的。
5.1 E-R图
E-R图,即实体-联系图,它描述现实世界的概念模型,提供了表示实体集、属性和联系的方法。而OA管理系统中的概念模型也比较多。以下列出了本系统中的主要E-R模型如图5.1至图5.4所示。
5.2数据库的设计
本系统所用到的数据库是用Microsoft SQL Server2000中的“企业管理器”直接建立数据库和数据表的,当然也可能用“查询分析器”来实现。
5.2.1创建数据库
(1)进入SQL Server2000中的“企业管理器”。启动数据库的管理界面。
(2)创建数据库。进入Microsoft SQL Server|local|“数据库”后,右键单击“数据库”按钮,在弹出的菜单中选择“新建数据库”,则弹出“数据库属性”窗口,并在名称(N)栏中输入“OA”字样。然后再分别选中[数据文件]和[事务日志]选项卡,设置数据库文件、事务日志文件的名称和位置。设置完成后,单击“确定”按钮即完成数据库的创建。
5.2.2创建数据表和视图
在该系统的数据表创建中,根据系统的需要在整个系统数据库中,共需要创建11个表。数据表分别是:Worker、address_list、class_list、work_text、work_text_class、worker_file、quickmeg、notbook、inform、systemset、logbook
以上数据表的详细内容和字段名(列名、数据类型、长度、允许空)等相关信息,在此给出相应的表格示意图,并详细说明各表的字段的意义及各个值下的特殊含义。详见以下各图表。
(1)Worker人员列表:
该表主要是记录用户的各种信息,包括用户的登录名、用户的真实姓名、密码、部门、权限等等信息,用于登录时认证用户的合法法及向系统提供该用户的各种信息。该表的设计如表5.1.
Login_id | bogInt(8) | PK | 用户的ID |
login_name | varchar(100) | not NULL | 用户的登录用户名 |
login_pass | varchar(200) | not NULL | 用户登录密码 |
worker_name | varchar(100) | not NULL | 用户的姓名 |
worker_class_id | Int(6) | default NULL | 所在部门的部门ID |
login_last_time | smalldatetime | not NULL | 上次登录时间 |
worker_job | varchar(50) | default NULL | 工作的内容简介 |
worker_email | varchar(200) | default NULL | 用户的EMAIL |
handphone | varchar(11) | default NULL | 用户的手机号码 |
homephone | varchar(11) | default NULL | 用户的家庭电话 |
home_add | varchar(250) | default NULL | 家庭地址 |
other_conn | varchar(300) | default NULL | 其它信息 |
juri | int | Not NULL | 用户权限1开始,数值越小权限越小 0-4为管理人员,5为部门经理级,6为一般用户,7为游客 |
(2)address_list好友地址表
该表为好友表,主要是用于OA系统中的联系人模块,记录用户的好友联系人的通信方式。该表的设计如表5.2
address_list_id | Bigint(8) | PK | ID |
worker_login_id | Bigint(8) | default NULL | 信息属于那个ID的用户的 |
name | varchar(100) | default NULL | 好友名称 |
phone | varchar(11) | default NULL | 好友电话 |
worker_email | varchar(200) | default NULL | 好友的电子邮箱 |
other_connect | varchar(200) | default NULL | 其它信息 |
(3)class_list部门列表
该表是部门表,记录各个部门的基本信息,在通过worker表中的worker_class_id及这个表中的class_id可以查出各个用户的所在部门的基本信息。该表的设计如表5.3
class_id | bigInt | PK | 部门ID |
class_name | varchar(50) | not NULL | 部门的名称 |
Class_phone | varchar(30) | default NULL | 部门的电话 |
Class_parent | bigInt | default NULL | 部门的上属部门 |
class_info | varchar(200) | default NULL | 部门信息 |
(4)work_text工作文档列表
该表为工作文档表,该表通过work_text_done的不同值表示文档的不同处理状态,同时通过work_login_id与work_text_to_id分别表示该文档的发布及处理人。该表的设计如表5.4
work_text_id | bigInt | PK | 工作文档的ID |
work_login_id | Int(6) | not NULL | 录入文档的用户ID |
work_text_class_id | bigInt(8) | not NULL | 文档类型ID |
work_text_title | varchar(200) | not NULL | 文档的题目 |
work_text | Varchar(3000) | default NULL | 文档内容 |
work_text_mod | varchar(1) | default NULL | 传送模式。0为暂不发送,1为下发,2为上交,3为同等级 |
work_text_time | smalldatetime | default NULL | 发布文档的时间 |
work_text_done | varchar(2) | default '0' | 文档处理结果,0为未处理,1为处理中,2为处理完成 |
work_text_done_res | varchar(500) | default NULL | 处理结果 |
work_text_done_time | smalldatetime | default NULL | 处理文档时间 |
work_text_to_id | Int(6) | default NULL | 可以看到文档的用户 |
(5)work_text_class工作文档类型
该表是结合work_text表使用的,表示工作文档的类型。在使用work_text表时要使用到该表该表的设计如表5.5
class_id | bigInt(8) | PK | 文档类型ID |
work_text_class_name | varchar(50) | not NULL | 文档类型名称 |
work_text_class_other | varchar(100) | default NULL | 其它信息 |
(6)worker_file文件列表
该表为文件表,记录各种文件上传后的信息,如上传后完整的文件地址,提供给下载使用。同时表中利用worker_file_to_typ与worker_file_to_id字段的结合使用进行文件共享的标识。该表的设计如表5.6
worker_file_id | varchar (12) | PK | 文件的ID |
worker_file_title | varchar(200) | not NULL | 文件文档的题目 |
worker_login_id | bigint | not NULL | 上传的用户的ID |
worker_file_to_type | bigint | default 0 | 文档类型,0为全体共享文档,1为部门共享文档,2为个人私有文档。 |
worker_file_to_id | bigint | default NULL | 可看见的ID,结合worker_file_to_type字段使用,可为部门ID或者用户ID |
worker_file_type | varchar(6) | not NULL | 文件的类型 |
worker_file_size | float(11,0) | not NULL | 文件的大小 |
worker_file_time | smalldatetime | not NULL | 上传的时间 |
worker_file_info | Varchar(3000) | default NULL | 文件的信息 |
worker_file_dir | Varchar(250) | not NULL | 文件存放目录 |
(7)quickmeg消息列表
该表用于记录聊天短消息。meg_from和meg_to表示消息的发送者及接收者。用meg_is_new字段表示是否为已读消息。该表的设计如表5.7
meg_id | Int (10) | PK | 消息的ID |
meg_title | varchar(200) | default NULL | 消息的题目 |
meg_text | varchar(3000) | default NULL | 消息的内容 |
meg_time | smalldatetime | not NULL | 消息的发布时间 |
meg_is_new | varchar(10) | default '0' | 消息是否被接收者阅读 |
meg_read_time | smalldatetime | default NULL | 接收者的阅读时间 |
meg_from | bigInt | not NUL | 消息的发布者的ID |
meg_to | bigInt | not NUL | 消息的接收者的ID |
meg_recall | varchar(1) | default '0' | 消息是否回收,1为否,0为是 |
(8)notbook个人工作便笺
该表用于保存个人工作便笺,note_recall 表示为是否回收删除该工作便笺。该表的设计如表5.8所示
Note_id | Int(10) | PK | 便笺的ID |
Worker_id | Int (6) | not NULL | 便笺属于用户的ID |
note_title | varchar(200) | not NULL | 便笺的题目 |
note_text | varchar(3000) | not NULL | 便笺的内容 |
note_time | smalldatetime | not NULL | 便笺的发布时间 |
note_recall | Varchar(1) | not NULL | 便笺是否回收,1为否,0为是 |
(9)inform通知
该表为通知表,用于记录通知的基本信息,inf_to_class 字段中利用不同的值表示不同的接收部门。该表的设计如表5.9所示
Inf_id | Int(10) | PK | 通知的ID |
Inf_title | varchar(200) | not NULL | 通知的题目 |
Inf_text | varchar(2000) | not NULL | 通知的内容 |
Inf_from_worker_id | Int(6) | not NULL | 发布通知的用户ID |
Inf_from_class_id | Int(6) | not NULL | 发布通知的部门ID |
Inf_time | Int(11) | not NULL | 发布通知的时间 |
Inf_to_class | Int(6) | not NULL | 接收通知的部门,为0时表示全体部门 |
(10)systemset系统设置
该表是为保存记录用于系统的基本设置参数。该表里只有一条记录。该表的设计如表5.10所示
topm | int | not NULL | 查询前几项记录 |
pm | int | not NULL | 分页时,每页的显示记录数 |
filesize | bigint | not NULL | 上传文件的最值KB单位 |
chatm | int | not NULL | 新登陆时显示最近内容的条数 |
chatn | int | not NULL | 客户端最大显示内容条数 |
(11)logbook系统日志
该表为系统日志表,在用户操作系统时,当进行某些特定的操作时,系统会自动将某操作员的ID及操作进行记录到该表上。该表的设计如表5.11所示
ID | bigint | PK | 编号 |
workerid | bigint | not NULL | 操作人ID |
meg | Varchar(600) | not NULL | 信息 |
logtime | smalldatetime | not NULL | 时间 |
5.2.3数据库关系图
(1)涉及“worker”的数据库关系图
该关系图中涉及了部分关系到worker表的操作。包括功能模块有联系人、部门、工作便笺、通知等等。详细情况见图5.1所示。
图5.1 涉及“worker”的数据库关系图
(2)涉及“工作文档”和“文件共享”功能模块的数据库关系,如图5.2所示。
图5.2 涉及“工作文档”和“文件共享”的数据库关系图
(3)涉及“系统日志”及“快捷消息”功能模块的数据库关系图,如图5.3所示。
图5.3 涉及“系统日志”及“快捷消息”的数据库关系图
6.界面设计与部分代码
本系统是以EclipsePHP Studio 2008加PHP的smarty插件作为开发环境,运用PHP语言进行编程设计。EclipsePHP Studio 2008 是一个大型项目开发编译器,给予Eclipse修改而来,并且集成了JDK,免除处了安装配置的麻烦,一次安装即可使用无需配置。此编译器为PHP编译器,辅助PHP代码的开发和调试,集成了代码高亮,函数跟踪,时时纠错等功能。同时还增加了协作开发版本服务器功能: SVN , CVS 。 内嵌浏览器可以在调试简单代码时时时浏览。这也是我之所以选择EclipsePHP Studio 2008作为本系统开发语言工具的原因之一。
7.1界面设计
在原始的PHP语言中并没有完美的MVC三层开发的概念,所以在开发本系统时,加入了PHP和smarty框架插件。以smartyr 提供的开发模式,将PHP的数据层、模型层及视图层进行分离。本系统共设计了16个功能模块。部分功能模块也设计了下级功能模块,对上级模块进行合理的分解。其中,前台的功能是所有用户正常登录后都可以进行访问的,而后台的界面中,系统会自动根据用户的权限进行选择用户界面进行显示。而各个功能界面的详细设计示图详见如下图6.1至图6.19所示。
(1)登录主界面
登录页面实现了所有用户只有持正确的用户名和密码才可以进入相应的功能页面。当用户正常登录后,系统会自动将用户的信息记录在服务上,方便以后使用。
图6.1 登录主页面
(2)用户信息页面
用户信息页面是显示登录用户的基本信息。同时也向用户提供进入后台管理的连接。
图6.2用户信息页面
(3)办公文档界面
此界面提供两种类型的界面,如图7.3中同时显示三种处理状态的办公文档和图7.4中只显示一种处理状态的办公文档。
图6.3 办公文档界面(1)
图6.4 办公文档界面(2)
提交文档的页面如下图7.5所示,有此页面中可以通过下拉菜单选择收件人及所发送的文档类型。
图6.5 提交办公文档界面
(4)工作文件页面
该页面中,向用户提供三种类型共享的文件查看连接。同时通过分页显示各个文件的基本信息。如文件上传的日期,文件的主题、文件的大小。如图7.6所示。同时在些页面中提供了查看文件的连接,进入查看后的页面如图7.7所示。
图6.6 个人文件页面
图6.7 查看文件页面
(5)快捷消息
快捷消息的列表显示,如图7.8所示。其中标识为N“new”的表示为未读消息。
图6.8 快捷消息列表
快捷消息的发送及回复页面,如下图7.9所示:
图6.9 发送消息
(6)工作便笺页面
图6.10工作便笺页面
(7)讨论组页面
图6.11 讨论组
(8)联系人页面
图6.12 联系人页面
(9)通知页面
图6.13 通知
(10)后面管理页面
图6.14后台管理页面
(11)部门管理页面
图6.15 部门信息列表及部门信息修改页面
(12)新增用户页面
图6.16新增加用户
(13)发布通知
图6.17发布通知
(14)用户信息管理页面
图6.18 用户信息管理页面
(15)系统参数设置
图6.19 系统参数设置
6.2 部分代码
该图书馆管理系统是运用PHP5.0 语言进行开发。由于考虑到本系统是基于WEB运行环境,所以在登录时,系统会利用SESSION将用户信息保存有服务器上,而没有通过COOKIE保存在客户端。下面是系统的登录代码的。
include"session.php";
include"smarty/config.php";
include"function/function.php";
include"sys_db_conf.php";
$tpl->assign("title","欢迎使用OA自动化办公系统");
if($_POST['name'])
{
$name=$_POST['name'];
if($_POST['pass'])
{
$pass=MD5($_POST['pass']);//md5摘要
$name = ltrim($name);
$name=rtrim($name);
$sql="select * from worker where login_name='$name'";
$res=mssql_query($sql,$link);
$row=mssql_fetch_array($res);
if($pass==$row['login_pass'])
{
//注册session保存各种用户信息
session_register("login_id");//保存用户ID
$_SESSION["login_id"]=$row['login_id'];
session_register("worker_class_id");//保存用户所在部门ID
$_SESSION["worker_class_id"]=$row['worker_class_id'];
$juri=$row['juri'];//保存用户的权限
session_register("juri");
$_SESSION["juri"]=$juri;
//更新用户登录时间信息
date_default_timezone_set('Asia/Shanghai');//重新设置时区
$newtime=date("Y-m-d H:i:s");
$sql="update worker set login_last_time='$newtime' where login_name='$name'";
mssql_query($sql,$link);
$logid=$row['login_id'];//保存用户ID
//获得系统的设置
$sql="select * from systemset";
$res=mssql_query($sql,$link);
$row=mssql_fetch_array($res);
session_register("topm");
$_SESSION["topm"]=$row['topm'];
session_register("pm");
$_SESSION["pm"]=$row['pm'];
session_register("filesize");
$_SESSION["filesize"]=$row['filesize'];
session_register("chatm");
$_SESSION["chatm"]=$row['chatm'];
session_register("chatn");
$_SESSION["chatn"]=$row['chatn'];
//写入系统日志
$logmeg=$name."登录成功";
logbook($logid,$logmeg,$link);
$tpl->assign('login','1');//登录成功
$tpl->assign("meg","欢迎 ".$name." !,登录成功.现在跳转页面...");
}
else{
//写入系统日志
$logmeg=$name."登录失败";
logbook(-1,$logmeg,$link);
$tpl->assign('login','0');//用户或密码错误
$tpl->assign("meg","用户或密码错误.请重新登录,现在跳转页面...");
}
}
else{
//写入系统日志
$logmeg=$name."登录失败";
logbook($row['login_id'],$logmeg,$link);
$tpl->assign('login','0');//用户或密码错误
$tpl->assign("meg","用户或密码错误.请重新登录,现在跳转页面...");
}
}
else
{
if ($_GET[exi]==1) //注销
{
//写入系统日志
$logid=$_SESSION[login_id];
$logmeg="ID:".$logid."进行注销操作";
logbook($logid,$logmeg,$link);
session_unregister("login_id");
session_unregister("worker_class_id");
session_unregister("juri");
session_unregister("topm");
session_unregister("pm");
session_unregister("filesize");
session_unregister("chatm");
session_unregister("chatn");
}
$tpl->assign('login','-1');//没有登录
}
$tpl->display("index.html");
?>
因为本系统是利用SMARTY进行MVC模式开发的,以上代码是登录页面的数据层的代码,而通过 $tpl->display("index.html");进行指定该数据层的视图层的地址。
由于该系统实现的功能比较全面,从而其程序代码也相应比较多,所以不可能在此一一地介绍所有的代码,下面只是选取文件列表功能的部分代码以作点评之用。若读者想浏览所有的原代码,详见该系统程序。
文件列表功能部分原代码:
/*
* Created on 2009-5-10
*
* 显示文件
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
?>
include"session.php";
require "smarty/config.php";
include "sys_db_conf.php";
include "function/function.php";
$login_id=$_SESSION[login_id];
$class_name=$_SESSION[worker_class_id];
//分页设置
$pno=$_SESSION[pm];//每页显示记录数
$p=1;//显示第几页
$count=0;//一共有多少记录。
$pm=0;//一共有多少页记录
//生成URL
$url="showworkerfile.php";
if(!empty($_GET[p]))
{
$p=$_GET[p];//如果获得P,则传给$P,否则显示默认的第1页
}
$mod=1;//
if(!empty($_GET[mod]))
{
$mod=$_GET[mod];
}
$url.="?mod=$mod";
switch ($mod) {
case 1://显示全体共享文档
$sql="select worker_file_time,worker_file_title,worker_file_size,worker_file_id " .
"from worker_file " .
"where worker_file_to_type='0' ORDER BY worker_file_id DESC";
$sqlcount="select count(*) " .
"from worker_file " .
"where worker_file_to_type='0'";
break;
case 2://显示部门共享文档
$sql="select worker_file_time,worker_file_title,worker_file_size,worker_file_id " .
"from worker_file " .
"where worker_file_to_type='1' and worker_file_to_id=$class_name ORDER BY worker_file_id DESC";
$sqlcount="select count(*) " .
"from worker_file " .
"where worker_file_to_type='1' and worker_file_to_id=$class_name";
break;
case 3://显示个人文档
$sql="select worker_file_time,worker_file_title,worker_file_size,worker_file_id " .
"from worker_file " .
"where worker_file_to_type='2' and worker_file_to_id=$login_id ORDER BY worker_file_id DESC";
$sqlcount="select count(*) " .
"from worker_file " .
"where worker_file_to_type='2' and worker_file_to_id=$login_id";
break;
};
//查询记录总数
//查询总记录数
// echo $sqlcount;
$res=mssql_query($sqlcount,$link);
$row=mssql_fetch_row($res);
// echo $count;
$count=$row[0];//将记录总数放到Pcount中
$pm=$count/$pno;//计算一共有多少页
if($count%$pno!==0)
{
$pm++;
}
//$count=5;
$sql=sqlLimit($sql,($p-1)*$pno,$pno,$count);
$res=mssql_query($sql,$link);
$i=0;
while($test=mssql_fetch_row($res))
{
$work_file[$i]=$test;
$i++;
}
$tpl->assign("mod",$mod);
$tpl->assign("type",$type);
$foor=showp($pm,$p,$url,1);
$tpl->assign("foor",$foor);
$tpl->assign("work_file",$work_file);
$tpl->display("showworkerfile.html");
?>
7.系统测试报告
系统测试的方法和技术是多种多样的,从是否需要执行被测软件的角度来看,可分为静态测试和动态测试;从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试。
7.1 测试方案
本系统采用动态测试方法,但是由于条件的有限,本系统并没有穷举输入数据来进行黑盒或白盒测试,而是采用输入大量数据(包括合法或非法)和运用等价类技划分与边界值分析而进行测试。
7.2 测试目的
测试系统能否按设计的流程或目的运行,同时防止一些非法性操作和不必要错误的发生,以达到增强系统的可行性、有效性、广泛性的目的。
7.3 测试流程
一、登录页面的测试
当输入用户名不存在时,或者用户的密码不正确系统也给出了提示。并重新跳转回登录界面。如图7.1所示。
4、当用户的所有信息都正确的时候,用户将进入相应的OA系统的前台页面。对于前后及后台各个功能块的测试将在以下内容时进一步测试。
二、OA管理系统前台功能块的测试
1.工作文档测试
在测试过程中,对于读者资料写入、修改、删除等相关操作都能简便地、成功地运行。详细见下面测试。
(1)工作文档写入发送
当用户在文档发送中没有填写主题内容,系统会给出相应的提示。准确地输入数据并保存时,会进行自动跳转页面,并在工作文档列表中显示出刚才发送成功的数据的信息。如图7.2所示。
(2)工作文档处理
在测试资料数据的过程,系统也要给出应有的提示和帮助,操作也成功通过。
图7.3 工作文件处理
2.文件测试
当文件上传时,当主题或者说明为空时,系统会给出相应的提示。同时当上传文件格式不支持时,也会给出提示。见图7.4所示。
图7.4 上传时主题为空的提示
在文件下载的页面中,通过点击下载可以正常下载文件。见图7.5
图7.5 下载文件
3.快捷消息测试
与工作文档的测试类似,当没有输入消息主题或者内容时,系统会弹出提示。正常输入后,系统能通过测试。
4.工作便笺测试
工作便笺测试包括了工作便笺的增加、删除、修改测试。在这三者测试过程中,系统都能通过测试。
5.讨论组测试
在测试中,通过两不同的用户登录到系统后,在讨论组中的聊天进行测试,系统通过测试。如图7.6所示。
图7.6 讨论组示意图
6. 联系人测试
联系人测试包括了工作便笺的增加、删除、修改测试。在这三者测试过程中,当输入的格式不正确时,系统会弹出错误提示。正常输入后系统都能通过测试。见图7.7
图7.7 输入电子邮箱不正确时提示
7.通知功能测试。
该测试中主要是测试通知能否正常查看,系统测试正常。
三、OA管理系统后台功能块的测试
1.部门信息设置测试
部门信息测试,当点击查看部门信息时正常,当修改或者增加部门信息时,如果部门的名称没有填则会弹出提示。如图7.8所示。
图7.8 增加部门信息
2.管理人员测试
管理人员测试包括了用户、删除、修改测试。在这三者测试过程中,当输入的格式不正确时,系统会弹出错误提示。正常输入后系统都能通过测试。见图7.9
图7.9 删除用户时的提示
3.增加新用户测试
当用户信息正常输入时系统正常增加用户,当输入格式不正确时,系统会弹出相应提示。
4.发布通知测试
测试类似发布工作文档,当不正确输入时系统会提示,正确输入后系统通过测试。
5.上传共享测试
测试与上传个人文件相似,只要在接收人选择正确的接收人信息。上传后相关的人就可以看到正确的共享文件。系统通过测试。
6.系统参数设置测试。
在测试中,当修改参数时,系统的显示出会作出相应的改动。见图7.10
图 7.10 系统参数设置
7.个人信息测试
该处的测试主要是修改自己的个人信息及密码,当正确输入会能成功地通过,并达到预期的效果。
8.系统日志测试
该处的测试主要是通过进行一些操作后,查看系统日志没有记录下来,通过测试,达到预期的效果。见图7.11.
图7.11 系统日志示意图
四、普通读者功能块的测试
由于普通读者功能块的界面只过不是“受限”的管理用户功能块的界面。所以对它的测试,类似管理用户功能块的测试。在处不用详细的说明。
7.4 测试总结
从以上大量的数据测试过程来看,本系统具有较强的可行性,它能通过各种测试的用例和它能及时地提示或警告用户的非法操作。同时,它实现的功能也较全,具有现实化的一面,同时,该系统在使用过程中也处处体现到人性化的一面。
所以,通过测试,可以确定该系统的可行性、健壮性较好,实现的功能也较全。
8.系统总结
该图书馆管理系统以EclipsePHP Studio2008作为开发环境,而EclipsePHP Studio2008能够提供便捷的文本编辑器以及对PHP的函数提示功能,使得在开发过程中方便编写程序,提高程序效率,减少程序出错率。同时利用SMARTY的PHP插件进行开发的MVC分离。使得系统在开发及维护中提高可读性及可维护性。而系统的后台数据库则采用功能强大的Microsoft SQL Server 2000,它能够很好地创建与维护数据库,而且访问数据的速度快速,从而从整体上提高系统的性能。 还有,该系统根据详细的需求分析与现实性进行开发,它充分考虑到可行性与非可行性、合法性与非法性、现实性与非现实性等各种因素。
可以说,该系统是一个功能较全,运行速度快的信息管理系统。当然,该系统在一定程度上也存在着不足性,对系统的功能模块设计不够完善、美工不够等等。以下分别对该系统的优点与不足之处进行详细的分析。
(1)优点
该系统的设计界面较好,功能也较全。而且在设计开发过程中,也充分地考虑到现实的因素。在系统的运行速度上,利用SMARTY的页面缓存技术,通过预先进行编译,使得对于相同内容的页面,系统自动对编译进行显示,提高系统的运行速度。同时也对出现大量数据的页面进行分页显示处理,减少对数据的大量读取。在系统安全性方面,对某些特殊页面进行了权限管理。不够权限的用户不能够访问。同时对也资源的非法访问也作了一定的处理,防止用户通过URL进行资源的非法访问。在用户密码的保存上使用了MD5对密码进行摘要处理。所以,总体来说,该系统的开发性较好。
(2)不足之处
该系统也有一定的局限性和可扩展性。如系统功能模块还有不完善的地方,有些办公的功能模块没有增加到系统中。系统的美工还没有进行比较完善的美工。使得用户处理时感觉不太友好。系统在编写过程中没有利用到OOP技术进行编程,使得系统的代码重用性不高。
参考文献
[1] 信达工作室 译.PHP开发人员手册[M].北京:人民邮电出版社.2001.6
[2] 徐锋 陈绍继 译.AJAX与PHP基础教程[M].北京:人民邮电出版社.2007.9
[3] 王俊杰 编著.精通JavaScript动态网页编程[M].北京:人民邮电出版社.2007.2
[4] 王石 杨英娜 编著.精通PHP+MYSQL 应用开发[M].北京:人民邮电出版社.2006.7
[5] 苗雪兰 刘瑞新 宋歌 编著.数据库系统原理及应用教程[M].北京:机械工业出版社.2007.10
[6] 飞思科技产品研发中心 编著. PHP & MySQL网站设计与实现[M]. 北京:电子工业出版社.2001.4
[7] (加) Lee Babin [等] 著;林琪, 荆涛等译. PHP 5范例代码查询辞典[M].北北京:人民邮电出版社.2007.2
[8] 编著. PHP+MySQL经典案例剖析[M]. 北京:清华大学出版社.2008
[9] 清源计算机工作室编著. PHP动态网站设计与制作[M]. 北京:机械工业出版社.2001.1