VFp办公用品管理系统论文_第1页
VFp办公用品管理系统论文_第2页
VFp办公用品管理系统论文_第3页
VFp办公用品管理系统论文_第4页
VFp办公用品管理系统论文_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

办公用品管理系统毕业论文题

目:

年级专业:

_____________学生姓名:

____________________学号:

_________________________指导教师:

____________________职称:

_________________________导师单位:

大学计算机学院

论文完成时间:

日前言

二十世纪是个科技飞速发展的时代,计算机的发明和使用推动了他的进步,这个世界的进步从不停歇,电脑的确是一项值得兴奋的好工具,这个跨世纪的产品将满足大众的需求,对大环境来说,加速了人与人的沟通,使生活更加便利,对个人而言,可以由电脑科技带来的好处提升自己对社会的贡献,协助你开创前途,对公司而言,则由科技所带来的便利来增加公司的竞争力,科技不断地创新,不断地满足你我,也不断产生需求。数据库是一门研究数据管理的技术,始于60年代,经过几十年的发展,已自成体系,成为计算机软件的一个重要的分支。数据库技术体现了当代先进的数据管理方法,赢得了社会的广泛承认,并使计算机应用真正渗透到国民经济各个部门,在数据处理领域中正在发挥越来越大的作用。本论文是对办公用品使用的管理,使其提高管理办公用品的工作效率,我选择了MicrosoftVisualfoxpro6.0中文版来编译这个程序,因为它是非常优秀的编程软件,在可视化和简单化方面都是非常优秀的,我的论文第一章简单介绍了MicrosoftVisualfoxpro6.0中文版的发展和特点等,第二章阐述了管理信息系统的概念特点及开发方法,通过前两章的介绍第三章介绍了办公用品管理系统的设计目标、设计思想、和系统功能分析,第四章介绍了数据库结构设计和结构的实现,第五章介绍了系统的各个功能模块的创建,第六章介绍了办公用品管理系统的进行和编译,第三到第六章主要介绍了系统开发的全部过程,除了原文部分,原代码统一记在附录中。通过对办公用品管理的开发,使我感受到了作为劳动者,体会到辛苦耕耘的成果做成后的那份喜悦,虽然做的有很多的不足,但是只有在不足中进步,才能做出更好的成果。在做这个程序中得到学校和老师的帮助,表示感谢,还要敬请指正不足之处。摘要办公用品管理系统是办公自动化管理系统的重要组成部分,它可以对办公用品的入库和领用进行规范化管理,进而提高工作效率,避免资源的浪费。此系统根据单位的办公用品的购买,入库,领用流程而设计的,特别适用于分批次购买,各部门领用的模式,具有完善的输入,统计,查询功能。这样就更可以合理规范对企业办公用品的管理.本论文将介绍办公用品管理系统的设计和开发过程,本系统采用VISUALBASIC作为开发工具,ACCESS作为后台数据库,这是经典的单机版数据库管理信息系统开发组合。通过参与此系统的开发,可以了解信息管理系统的需求分析、设计和实现的完整过程,掌握ACCESS数据库的基本管理方法、常用SQL语言的使用方法以及VISUALBASIC数据库开发技术,积累有效的数据库应用系统实战经验。目

摘要前言

第一章

引言

1.1

开发背景

1.2开发目标

1.3项目提出的意义

1.4

系统开发所用的技术准备

第二章系统分析

2.1系统需求分析

2.1.1系统调查

2.1.2组织机构设置

2.1.3用户需求

2.1.4系统业务流程图

2.1.5系统设计思想

2.1.6系统设计分析

2.1.7系统功能分析

2.2新系统逻辑方案

2.2.1数据流图(简称为DFD)

2.2.2数据字典

2.2.3新系统逻辑模型的提出

2.2.4系统边界

第三章系统设计

3.1查询系统功能需求简介

3.2功能需求描述

3.3系统目标要求

3.4系统平台选择

3.5数据库设计

3.5.1数据库需求分析

3.5.2数据库概念结构设计

3.5.3、逻辑结构设计(E-R图向关系模型的转换)

第四章系统实施

4.1各子系统模块程序设计举例

4.2软件测试的目的和原则

4.3子系统测试

4.4软件运行与转换

第五章结论

参考文献引言1.1项目开发背景

自1946年人类第一台计算机(ENIAC)问世以来,50多年过去了,计算机的软硬件发展日新月异,突飞猛进。以个人电脑为例,硬件方面,以CPU、内存、硬盘为代表,CPU已发展到当今的P42.8GHZ,PⅢ和PⅡ已淡出历史舞台,成为昨日黄花;512MDDR内存,120G以上的7200转硬盘已成为标准配置。如此高性能的配置,就是和5年之前相比,也不知高出了多少倍。软件方面,已经从当初晦涩难懂的机器语言、汇编语言过渡到今天的第四代语言甚至第五代语言,第四代语言(4GL)是完全非过程化的语言,这种语言只要求用户指明将要干什么,而无需指明怎么干,如何做这一工作,则完全交给软件模块来自动处理,大大提高了软件的开发效率和软件质量,使软件开发人员从繁重的脑力、体力劳动中解脱出来。伴随着计算机软硬件技术的发展,计算机的技术和应用获得了突飞猛进的发展,计算机已经在大致如下的领域得到广泛的应用:1、科学计算:如在天文学、生物学、空气动力学、核物理学、地质勘探、新材料的研制和天气预报等领域中。2、数据处理:与科学计算不同,数据处理涉及的数据量大,但计算方法较简单。3、过程控制:实现自动化,智能化!随着计算机的普及和发展,人们开始利用计算机解决越来越多的实际问题,虽然现在软件的数量如雨后春笋,但依然不能满足用户的各种需要,尤其是用于特定教学管理方面的软件。系学生成绩管理系统是一个现代高校管理不可缺少的一部分,它的内容对高校实行高效化、智能化的管理非常重要,所以系学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,其中有些是冗余的或者针对同一目的的数据不相吻合,这对于查找、更新和维护文件等管理工作带来了不少的困难。随着信息科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已渗入人类社会的各个领域并影响这些领域的发展,在现代社会中发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机系统对学生成绩进行管理,具有手工管理所无法比拟的优点,例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低,数据冗余量小等。这些优点能够极大地提高学生成绩管理的效率,也是高校的科学化、正规化管理,与世界接轨的重要条件。因此,开发一套符合本校具体情况的系学生成绩管理软件成为很有必要的事情。论文对系统进行了较为全面的业务需求分析,并进行有针对性的系统设计,包括开发平台和工具选型、功能模块设计、数据库设计等,最后选用VisualBasic6.0和Access数据库进行了系统实现,并进行了相应的系统测试和调试。1.2项目开发的目标

建立办公用品管理系统,采用计算机对公司用品进行管理,进一步提高办学效益和现代化水平.帮助广大职员提高工作效率,实现办公用品信息管理工作流程的系统化、规范化和自动化.

1.3项目提出的意义

办公用品管理系统是为各个企、事业单位做铺设计服务的,是企、事业不可或缺的一个软件。本系统具有界面清晰、操作简易、存储数据安全性高等特点,考虑到人们的一些操作习惯,提高了其的可操作性,完全能够满足你的需求。这是一款针对中小企业设计的程序。有了它,您可以轻松管理您的数据库,方便的进行用品管理,灵活的搜索和查询功能使您完全摆脱传统管理模式下经营者面对庞大的办公用品,不知道有哪些用品,缺哪些物品,数量有多少。随着科学技术的不断提高,计算机科学的日渐成熟,计算机的强大功能已被人们深刻地认识,它已经和现代社会的发展隔离不开了。越来越多的人用计算机来处理日常事务,使计算机的应用得到普及,这样就创造出以计算机为基础的一系列生活方式。不仅如此,计算机还被广泛的应用到商业上,越来越多的人们意识到计算机给自己带来的方便以及他所创造的巨大财富。人们开始把计算机应用到现代的各个领域中,可以不客气地说,现代社会是一个计算机时代,如果没有计算机的应用,我们的发展就不会如此之快!现如今,每个企业经营者,都在利用规范的管理流程来提高企业的效益。可这一切仅靠人是很难及时准确地完成包括统计在内的工作。针对这些企业办公用品管理存在的缺陷,我开发了这个办公用品管理系统,目的是要做到科学化、自动化、系统化、规范化,用电脑管理来替代原来以手工、简单、繁琐的办公用品管理,为广大企、事业单位提高管理效益助一臂之力。办公用品管理系统将成为每个企、事业的小当家,在理清家务的同时,减少浪费,花出该花的,省下可省的。弥补企业管理上的漏洞,提高管理员的工作效率,为公司带来经济效益。1.4系统开发所用的技术准备

1.4.1数据库技术的现状与发展

数据库是60年代末出现的一门计算机软件技术,到现在虽然只有三十多年的历史,但在理论和时间上都得到了和很大的发展。现在,数据库是数据处理的主要工具,是管理信息系统(MIS)的核心部分。数据库系统是当今计算机信息系统的核心,是计算机技术和应用发展的关键。传统的数据库系统旨在处理永久、稳定的数据,强调维护数据的完整性、一致性。数据库理论与技术的发展极其迅速,其应用日益广泛,在当今的信息社会中,它几乎无所不在。以关系型为代表的三大经典(层次、网状、关系)型数据库在传统的(商务和管理的事务型)应用领域获得了极大成功。计算机世界报社与IBM公司联合举办了"21世纪数据库技术发展专家研讨会"。IBMDB2的创始人DonaldHaderle先生与国内著名数据库专家,就下世纪数据库发展的趋势、数据库领域革命性的突破、IBMDB2的应用、数据仓库的实施、我国数据库技术和应用的现状及趋势、我国数据库用户的需求等问题,进行了广泛而深入的讨论。1.4.2数据库系统的选择原则

(1)数据库系统采用易于集成的,开放的技术。

(2)产品质量优异,可靠性高,适于长期运行,能支持关键应用。

(3)数据安全,保安型高。

(4)能提供分布式数据库功能。

(5)支持多种开发环境,软件开发容易。

(6)扩充性和升级能力强。第二章管理信息系统综述2.1信息系统的发展历程

信息系统的发展经历了从电子数据处理系统到管理信息系统的发展过程。

1.电子数据处理系统(1953~1960年)

数据处理的人工系统在计算机问世以前就已存在,因此,计算机一出现,首先就用到数据处理上。当时主要用计算机代替手工劳动,如统计产量、工资计算等。1960年以后出现的数据更新系统也属于这方面的内容。例如,美国share航空预约订票系统可掌握1008个预约点,76000个座位和27000个飞行记录。由于这种系统不能报告当前的售票速度、何时才能将票售完,即没有预测和控制功能,所以还不能说是管理信息系统。

2.信息报告系统(1961~1970年)

信息报告系统是管理信息系统的雏形,其特点是按事先规定的要求提供管理报告,用来支持决策制订。通常包括生产状态报告系统、服务状态报告系统、研究状态报告系统。

以下内容略:

2.2管理信息系统概述

管理信息系统是一个由人和计算机等组成的,能进行管理信息的收集、传递、加工、保存、维护和使用的系统,它能实测国民经济和企业的各种运行情况;利用历史数据预测未来;从全局出发辅助管理决策;利用信息控制企业的行为、帮助实现其规划目标。也就是说,管理信息系统不仅是一个能对管理者提供帮助的基于计算机的人机系统,而且是一个社会技术系统。应当将管理信息系统放到社会这个大背景去考察,在解决技术问题的同时,充分考虑使用信息技术的组织与人,重视系统与组织、环境的交互作用。这一阶段对MIS系统的成败,对整个组织信息化的进展具有重要意义,以计算机为主要手段的管理信息系统是使用单位的管理系统的一个组成部分。它的建立应该服从使用单位的整体目标和管理决策活动的需要。为此,这个阶段的主要任务是了解使用单位的战略目标以及内外现实环境,确定系统的总目标和主要功能,拟定总体方案,并从技术、经济、社会条件等方面论证技术方案的可行性,制定投资规划和开发计划,编写可行性论证报告。第三章开发方法3.1系统开发方法概述建立一个管理信息系统,是一项复杂的软件工程的实施。近30多年来,软件工程发展成为新科学,至今已经成为IT产业的重要支柱。一开始,人们往往使用手工作坊式的软件开发方法,靠个人的力量编写各种小型程序;但是随着计算机硬件技术的飞速发展,计算机软件在各个领域中的作用日益突出,那种多年来被人们沿用的手工作坊式的开发方法,已经在软件产品的质量、成本及开发时间等方面无法满足需求。3.2结构化生命周期法简介结构化生命周期法是一种传统的管理信息系统开发方法,其基本思想是把整个系统开发过程分成若干个阶段,每个阶段进行若干活动,每项活动应用一系列标准、规范、方法和技术,完成一个或多个任务,形成符合给定规范的产品。采用结构化生命周期法开发管理信息系统时,应遵循的主要原则:(一)用户参与的原则(二)“先逻辑后物理”的原则(三)“自顶向下”的原则(四)工作成果描述(主要指文档)标准化的原则其具体开发步骤可分为以下四步:(一)系统规划(二)系统开发1、系统分析.系统初步调查.系统可行性研究.现行系统的详细调查.新系统逻辑方案的提出2、系统设计.系统总体结构设计.系统总体功能设计.系统总体物理结构设计.系统详细设计.数据库设计.代码设计.输入输出设计3、系统实施.程序设计.系统测试(三)系统的运行及维护(四)系统评价3.3快速原型法简介快速原型法是80年代发展起来的,旨在缩短开发周期,提高开发效率和用户对系统的满意程度。其基本思想是在系统开发的初期,尽快构造出系统的原型,使用户能及早地运行这个系统原型,通过使用它、熟悉它,受到启发并取得经验,然后对系统的目标和功能提出更精确、具体的要求,研制人员据此逐渐修改和完善原型,使它满足用户的需求,最后完成系统的开发。该方法大大提高了系统开发效率,弥补了结构化生命周期法开发时间长的缺陷。通常采用原型法需以下四个阶段:(一)明确用户的基本要求(二)研制系统的原型(三)使用、评价系统原型(四)修改和完善原型3.4本系统开发方法的选择基于以上开发方法的优劣和本系统的实际情况,本系统总体上采用结构化生命周期法进行系统规则、系统分析和系统设计,但在系统实施阶段采用原型法。第四章开发平台和工具4.1开发平台的选择考虑到本系统的性能要求,和现有的条件,我们选择了WINDOWS2000中文版作为开发、测试和运行的平台。因为WINDOWS操作系统是目前应用最广的操作系统,它以全新的图形界面,简单快捷的操作方式,支持多媒体功能等特点而成为软件发展的流行趋势,选用它作为开发平台,易于功能的扩展和软件升级。4.2开发工具的选择针对目前世界上流行的大量软件和开发工具,经过认真分析其优缺点,结合计量器具管理系统的需要和目前的硬件环境,我们选用微软WINDOWS平台下的VisualB asic6.0(简写为VF6.0)作为软件开发工具。4.2.1开发语言介绍现在,市场上可以选购的应用开发产品很多,流行的也有数十种。目前在我国市场上最为流行、使用最多、最为先进的可用作做作企业级开发工具的产品有:Microsoft公司的VisualBasicMicrosoft公司的VisualCBorland公司的DelphiPowersoft公司的PowerBuliderJava等等在目前市场上这些众多的程序开发工具中,有些强调程语言的弹性与执行效率;有些则偏重于可视化程序开发工具所带来的便利性与效率的得高,各有各的优点和特色,也满足了不同用户的需求。然而,语言的弹性和工具的便利性是密不可分的,只有便利的工具,却没有弹性的语言作支持,许多特殊化的处理动作必需要耗费数倍的工夫来处理,使得原来所标榜的效率提高的优点失去了作用;相反,如果只强调程语言的弹性,却没有便利的工具作配合,会使一些即使非常简单的界面处理动作,也会严重地浪费程序设计师的宝贵时间。作为数据库系统的开发,VisualBasic是一个非常理想选择。数据库是MIS中的重要支持技术,在MIS开发过程中,如何选择数据库管理是一个重要的问题,目前,数据库产品较多,每种产品都具有各自的特点和适用范围,因此,在选择数据库时,应考虑数据库应用的特点及适用范围,本系统选用的数据库语言VisualBasic语言,该开发工具具有很多长处:VisualBasic是一种可视化的、面对对象和条用事件驱动方式的结构化高级程序设计,可用于开发Windows环境下的种类应用程序。它简单易学、效率高,且功能强大,可以与Windows的专业开发工具SDK相媲美,而且程序开发人员不必具有C/C++编程基础。在VisualBasic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的应用程序接口(API)函数,以及动态链接库(DLL)、动态数据交换(DDE)、对象的链接与嵌入(OLE)、开放式数据访问(ODBC)等技术,可以高效、快速地开发出Windows环境下功能强大、图形界面丰富的应用软件系统。总的来说,VisualBasic具有以下特点:可视化编程:用传统程序设计语言设计程序时,都是通过编写程序代码来设计用户界面,在设计过程中看不到界面的实际显示效果,必须编译后运行程序才能观察。如果对界面的效果不满意,还要回到程序中修改。有时候,这种编程-编译-修改的操作可能要反复多次,大大影响了软件开发效率。VisualBasic提供了可视化设计工具,把Windows界面设计的复杂性“封装”起来,开发人员不必为界面设计而编写大量程序代码。只需要按设计要求的屏幕布局,用系统提供的工具,在屏幕上画出各种“部件”,即图形对象,并设置这些图形对象的属性。VisualBasic自动产生界面设计代码,程序设计人员只需要编写实现程序功能的那部分代码,从而可以大大提高程序设计的效率。面向对象的程序设计4.0版以后的VisualBasic支持面向对象的程序设计,但它与一般的面向对象的程序设计语言(C++)不完全相同。在一般的面向对象程序设计语言中,对象由程序代码和数据组成,是抽象的概念;而VisualBasic则是应用面向对象的程序设计方法(OOP),把程序和数据封装起来作为一个对象,并为每个对象赋予应有的属性,使对象成为实在的东西。在设计对象时,不必编写建立和描述每个对象的程序代码,而是用工具画在界面上,VisualBasic自动生成对象的程序代码并封装起来。每个对象以图形方式显示在界面上,都是可视的。结构化程序设计语言VisualBasic是在BASIC语言的基础上发展起来的,具有高级程序设计语言的语句结构,接近于自然语言和人类的逻辑思维方式。VisualBasic语句简单易懂,其编辑器支持彩色代码,可自动进行语法错误检查,同时具有功能强大且使用灵活的调试器和编译器。VisualBasic是解释型语言,在输入代码的同时,解释系统将高级语言分解翻译成计算机可以识别的机器指令,并判断每个语句的语法错误。在设计VisualBasic程序的过程中,随时可以运行程序,而在整个程序设计好之后,可以编译生成可执行文件(.EXE),脱离VisualBasic环境,直接在Windows环境下运行。事件驱动编程机制VisualBasic通过事件来执行对象的操作。一个对象可能会产生多个事件,每个事件都可以通过一段程序来响应。例如,命令按钮是一个对象,当用户单击该按钮时,将产生一个“单击”(CLICK)事件,而在产生该事件时将执行一段程序,用来实现指定的操作。在用VisualBasic设计大型应用软件时,不必建立具有明显开始和结束的程序,而是编写若干个微小的子程序,即过程。这些过程分别面向不同的对象,由用户操作引发某个事件来驱动完成某种特定的功能,或者由事件驱动程序调用通用过程来执行指定的操作,这样可以方便编程人员,提高效率。访问数据库VisualBasic具有强大的数据库管理功能,利用数据控件和数据库管理窗口,可以直接建立或处理MicrosoftAccess格式的数据库,并提供了强大的数据存储和检索功能。同时,VisualBasic还能直接编辑和访问其他外部数据库,如dBASE,FoxPro,Paradox等,这些数据库格式都可以用VisualBasic编辑和处理。VisualBasic提供开放式数据连接,即ODBC功能,可通过直接访问或建立连接的方式使用并操作后台大型网络数据库,如SQLServer,Oracle等。在应用程序中,可以使用结构化查询语言SQL数据标准,直接访问服务器上的数据库,并提供了简单的面向对象的库操作指令和多用户数据库访问的加锁机制和网络数据库的SQL的编程技术,为单机上运行的数据库提供了SQL网络接口,以便在分布式环境中快速而有效地实现客户/服务器(client/server)方案。动态数据交换(DDE)利用动态数据交换(DynamicDataExchange)技术,可以把一种应用程序中的数据动态地链接到另一种应用程序中,使两种完全不同的应用程序建立起一条动态数据链路。当原始数据变化时,可以自动更新链接的数据。VisualBasic提供了动态数据交换的编程技术,可以在应用程序中与其他Windows应用程序建立动态数据交换,在不同的应用程序之间进行通信。对象的链接与嵌入(OLE)对象的链接与嵌入(OLE)将每个应用程序都看作是一个对象(object),将不同的对象链接(link)起来,再嵌入(embed)某个应用程序中,从而可以得到具有声音、影像、图像、动画、文字等各种信息的集合式的文件。OLE技术是Microsoft公司对象技术的战略,它把多个应用程序合为一体,将每个应用程序看作是一个对象进行链接和嵌入,是一种应用程序一体化的技术。利用OLE技术,可以方便地建立复合式文档(compounddocument),这种文档由来自多个不同应用程序的对象组成,文档中的每个对象都与原来的应用程序相联系,并可执行与原来应用程序完全相同的操作。动态链接库(DLL)VisualBasic是一种高级程序设计语言,不具备低级语言的功能,对访问机器硬件的操作不太容易实现。但它可以通过动态链接库技术将C/C++或汇编语言编写的程序加入到VisualBasic应用程序中,可以像调用内部函数一样调用其他语言编写的函数。此外,通过动态链接库,还可以调用Windows应用程序接口(API)函数,实现SDK所具有的功能第五章系统分析系统规划,应根据组织的目标和发展战略以及管理信息系统建设的客观规律,并考虑到组织面临的内外部环境,科学地制定管理信息系统的发展战略和总体方案,合理安排系统建设的进程;它是管理信息系统(MIS)生命周期的第一个阶段,是MIS的概念形成时期,这一阶段的主要目标,就是制定出MIS的长期发展方案,决定MIS在整个生命周期内的发展方向、规模和发展进程。它的主要任务是:制定MIS的发展战略、确定组织的主要信息需求,形成MIS的总体方案、制定系统建设的资源分配计划。以计算机为主要手段的管理信息系统是企业的管理系统的一个组成部分。它的建立应该服从企业的整体目标和管理决策活动的需要。为此,这个阶段的主要任务是了解企业的战略目标和内外部环境,确定系统的总目标和主要功能,拟定总体方案,并从技术、经济、社会条件等方面论证技术方案的可行性,制定投资规划和开发计划,编写可行性报告。系统分析,就是在管理信息系统开发的生命周期中系统分析阶段的各项活动和方法。它的主要目标是在系统规划所定的某个开发项目范围内明确系统开发的目标和用户的信息需求,提出系统的逻辑方案。系统分析在整个系统开发过程中,是要解决“做什么”的问题,把要解决哪些问题、要满足用户哪些具体的信息需求调查、分析清楚,从逻辑上或从功能需求上提出系统的方案,即“逻辑模型”。可行性分析可行性分析是系统分析阶段的第二项活动,可行性分析能使新系统达到以最小的开发成本取得最佳的经济效益。可行性分析的目的,是根据开发管理信息系统的请求,通过初步调查,对要开发的管理信息系统从技术上、经济上、资源上和管理上进行是否可行的研究分析。这是一项保证资源合理使用、避免失误和浪费的重要工作。1、经济上的可行性。2、技术上的可行性。3、资源上的可行性。4、管理上的可行性。通过调查当前企事业单位办公用品管理理现况是采用人工登记的方式来进行办公用品的管理,所有的办公用品档案资料都是以纸张为介质进行存储的,办公用品学生成绩本节根据需求分析中总结的用户需求设计系统的体系结构。系统的功能模块图如下图所示:在功能模块示意图的树状结构中,每一个叶结点都是一个最小的功能模块。每一个功能模块都需要针对不同的表完成相同的数据库操作,即添加记录、修改记录、删除记录以及查询显示记录信息。办公用品管理系统办公用品管理系统领用统计入库统计库存短缺统计库存管理入库管理领用管理供应商管理部门管理分类管理数据统计管理系统用户管理基本信息管理办公用品管理领用统计入库统计库存短缺统计库存管理入库管理领用管理供应商管理部门管理分类管理数据统计管理系统用户管理基本信息管理办公用品管理用户信息管理修改自身密码 用户信息管理修改自身密码 办公用品管理系统功能模块示意图在本系统中,用户管理模块的功能比较简单,在系统初始化时,有两个默认的用户。系统管理员用户为Admin,普通用户为Users,由程序设计人员手动地添加到数据库中,它们的默认密码均为111111。Admin用户可以创建用户、修改用户信息以及删除用户:普通用户则只能修改自己的用户名和密码。用户管理模块的关系图如下所示:创建、修改和删除普通用户信息修改Admin用户的密码修改自身的用户名和密码系统用户信息创建、修改和删除普通用户信息修改Admin用户的密码修改自身的用户名和密码系统用户信息管理 Admin用户 普通用户下面进行系统流程分析,所谓系统流程就是用户在使用系统时的工作过程。运行系统后,首先会看到登录窗体,对用户身份进行验证。身份认证可以分为以下两个过程:确认用户是否是有效的系统用户确定用户的类型第1个过程决定用户是否能进入系统,第2个过程根据用户的类型决定用户的操作权限。如果需要对普通用户进行管理,则使用Admin用户登录:否则建议使用Users用户登录。如果还要创建其他用户,可以在用户管理模块中创建和管理。在创建用户时,需要输入要创建的用户名和密码。Admin用户还可以修改和删除其他普通用户数据。在本系统中,应该首先增加基本信息,之后才能增加办公用品信息。基本信息包括分类信息、部门信息和供应商信息等。分类信息包括办公用品的分类名称和上级分类,部门信息只包括部门名称;供应商信息包括名称、电话、地址和联系人等。添加基本信息后,就可以添加办公用品信息了。在办公用品信息管理模块中可以对领用信息、入库信息和库存信息进行添加、修改、删除和查看操作。领用信息包括领用日期、领用部门、领用的办公用品和领用数量等信息。在添加领用信息时,需要选择部门信息和办公用品信息。入库信息包括入库的办公用品、入库日期、供应商、入库数量、总金额等信息。在添加入库信息时,需要选择办公用品和供应商信息。库存信息包括办公用品名称、型号、当前库存数量、最小库存数量等信息。在添加库存信息时,需要选择办公用品分类信息。在数据统计管理模块中,可以对库存短缺、入库和领用等信息进行统计。库存短缺统计信息包括办公用品、分类信息、库存数量、最小数量等信息,只有库存数量小于最小数量的办公用品才会被统计:入库统计信息包括供应商名称、办公用品分类、库存总数量和库存总金额等信息,领用统计信息包括部门、办公用品分类信息、办公用品名称和领用数量等信息。在数据统计管理模块中,各统计表显示的数据可能根据查询条件的不同变化。本系统的流程分析如图所示:否重试Admin用户普通用户数据统计管理办公用品管理基本信息管理办公用品管理模块用户管理模块失败管理自己的用户信息管理普通用户的用户信息退出程序是失败超过3次成功读取用户类型开始用户登录管理自己的用户信息否重试Admin用户普通用户数据统计管理办公用品管理基本信息管理办公用品管理模块用户管理模块失败管理自己的用户信息管理普通用户的用户信息退出程序是失败超过3次成功读取用户类型开始用户登录管理自己的用户信息系统流程分析图在系统流程分析图中可以看到,每个用户有3次机会进行身份验证,如果3次输入的用户名和密码都无法与数据库中的数据匹配,则强制退出系统。数据库结构设计数据库结构设计是总体设计阶段非常重要的环节,好的数据库结构可以简化开发过程,使系统功能更加清晰明确。因为数据库结构的变化会造成编码的改动,所以必须认真设计数据结构后再进行编码,从而避免无谓的重复工作。本系统数据库文件为“Office.mdb”,数据库中包含8个表,部门信息表Department、分类信息表Types、供应商信息表Supplier、库存信息表Store、入库信息表StoreIn、领用信息表Draw、领用信息明细表DrawList、用户信息表Users部门信息表Department表Department用来保存部门信息信息,结构如下:DepartmentDepIdDepName1技术中心2销售中心3办公室4人力资源部分类信息表Types表Types用来保存办公用品分类信息TypesTypeIdTypeNameUpperId1公文包02签字笔03打印纸04A4纸35A3纸36帕克签字笔27软牛皮包18计算器09胶水010大胶水911剪刀012日历014小规格1215中规格1216普通签字笔2供应商信息表Supplier表Supplier用来保存办公用品的供应商信息,结构:SupplierSIdSNameTelAddressContactMemos1北京七七贸易公司3333亮马河往昔2宁夏网和技术公司55555宁夏王明库存信息表Store表Store用来保存办公用品的库存信息,结构:StoreOIdONameOStyleTypeIdOAmountOMinMemos1999kkk799202帕克签字笔B16953dayinzhiA443010入库信息表StoreIn表StoreIn用来保存办公用品的入库信息StoreInInIdOIdInDateSIdInAmountInSumMemosFlag112005-3-41102001222005-4-41830301322006-3-21202001412006-3-72809001512006-3-92660df1622006-3-721216.领用信息表Draw表Draw用来保存办公用品的领用信息,结构DrawIdCreateDateDepIdFlag12005-12-271132006-2-32142006-3-7317.领用信息明细表DrawList表DrawList用来保存家庭成员信息,结构DrawListIdDIdOIdOAmount211131215322641273138.用户信息表Users表Users用来保存系统用户信息,结构UsersUserNameUsePwdAdmin111111Users111111登录窗体和系统主界面设计当系统运行时,首先打开登录窗体,只有有权限的用户才能进入系统。登录成功后,将显示系统主界面。登录窗体的名称为Frmlogin,它的界面布局如图所示登录窗体的界面布局部分代码变量声明登录窗体变量声明如下:PublicPasswordKeyAsStringPublicNameKeyAsStringPublicTry_timesAsIntegerNameKey用于保存用户名,PasswordKey用于保存密码,Try_times用于记录尝试登录的次数2.cmd_ok_click过程当用户单击“确定”按钮时触发CMD_Ok_click事件,进行身份验证,代码如下:PrivateSubCmd_OK_Click()DimjAsSingle'数据有效性检查IftxtUser=""ThenMsgBox"请输入用户名"txtUser.SetFocusExitSubEndIfIftxtPwd=""ThenMsgBox"请输入密码"txtPwd.SetFocusExitSubEndIf'将用户输入赋值到变量中NameKey=MakeStr(txtUser)PasswordKey=MakeStr(txtPwd)'判断用户是否存在IfMyUser.In_DB(NameKey)=FalseThenMsgBox"用户名不存在"Try_times=Try_times+1IfTry_times>=3ThenMsgBox"您已经三次尝试进入本系统,均不成功,系统将关闭"DBapi_DisconnectEndElseExitSubEndIfEndIf'判断密码是否正确MyUser.GetInfo(NameKey)IfMyUser.UserPwd<>PasswordKeyThenMsgBox"密码错误"Try_times=Try_times+1IfTry_times>=3ThenMsgBox"您已经三次尝试进入本系统,均不成功,系统将关闭"DBapi_DisconnectEndElseExitSubEndIfEndIf'登录成功,将当前用户的信息保存在CurUser中CurUser.GetInfo(MyUser.UserName)'关闭登录对话框UnloadMeEndSub程序的运行过程如下:判断是否输入了用户名和密码,如果没有输入,则返回,要求用户输入。将输入的用户名和密码赋值到变量Namekey和Passwordkey中,便于处理。调用Myuser.in_Db()函数,判断当前用户名是否存在。如果不存在,则返回,要求用户重新输入,同时将计数变量Try_times加1如果用户名存在,则调用MyUsers.Getinfo()函数,读取此用户的数据,并将用户密码与输入的密码进行比较。如果密码不同,则返回,要求用户重新输入,同时将计数变量加1如果Try_times大于或等于3,则退出系统如果通过密码验证,则将当前用户的信息保存到curUser对象中,以便在后面的操作中使用关闭登录窗体设计主界面主窗体是工程的启动对象,可以在系统菜单中选择“工程/属性”打开窗口设置启动对象。本实列中主窗体名为FrmMain打开主窗体的设计窗口,选择“工具”菜单项中的“菜单编辑器”对菜单内容进行编辑菜单编辑器如图所示菜单编辑器主界面如图所示系统主界面在主窗体中添加如下代码:PrivateSubForm_Load()FrmLogin.Show1EndSub当主窗体启动时,首先设置连接字符串,然后打开“登录”对话框。如果不能通过身份验证,则不能进入系统PrivateSubmn_Exit_Click()DBapi_DisconnectEndEndSub基本信息管理模块设计基本信息管理模块包括分类信息管理、部门信息管理和供应商信息管理设计分类信息管理窗体分类信息管理窗体的名称为Frmtypeman,窗体布局如图所示可以看到,分类信息可以分为一级分类和二级分类两种,每个二级分类必须有对应的一级分类作为其上级分类。窗体主要代码如下:PublicOriT1NameAsStringPublicOriT2NameAsStringPrivateSubCmd_Add_Click()IfLen(Trim(txtName))=0ThenMsgBox"请输入分类名称"txtName.SetFocusExitSubEndIf'判断当前选择按钮值IfOption1.Item(0).Value=TrueThen'选择一级分类'判断一级分类名称是否已存在IfMyType.In_DB(Trim(txtName))ThenMsgBox"分类名称已存在"ExitSubElseMyType.TypeName=Trim(txtName)MyType.UpperId=0MyType.InsertMsgBox"添加成功"LoadTypestxtName=""EndIfElse'选择二级分类'首先判断是否选择了一级分类名称IfDataList1.SelectedItem>0Then'判断二级分类名称是否已存在IfMyType.In_DB(Trim(txtName))ThenMsgBox"分类名称已存在"ExitSubElseMyType.TypeName=Trim(txtName)MyType.UpperId=DataList1.BoundText()MyType.InsertMsgBox"添加成功"LoadTypesSetDataList2.RowSource=NothingDataList1.Enabled=TrueDataList2.Enabled=FalsetxtName=""Option1.Item(0).Value=TrueOption1.Item(1).Value=FalseEndIfElseMsgBox"请选择上级分类"ExitSubEndIfEndIfEndSubPrivateSubCmd_Back_Click()UnloadMeEndSubPrivateSubCmd_Del_Click()'判断当前选择按钮值IfOption1.Item(0).Value=TrueThen'选择一级分类'判断是否选择了一级分类IfDataList1.SelectedItem>0Then'如果此一级分类存在下级分类,则不允许删除IfMyType.HaveSon(DataList1.BoundText())ThenMsgBox"存在二级分类,不能删除"ExitSubElseMyType.Delete(DataList1.BoundText())MsgBox"删除成功"LoadTypestxtName=""EndIfElseMsgBox"请选择一级分类"ExitSubEndIfElse'判断是否选择了二级分类IfDataList2.SelectedItem>0Then'判断办公用品表中是否已经使用了此分类编号IfMyStore.HaveTId(DataList2.BoundText())ThenMsgBox"办公用品表中存在此分类,不能删除"ExitSubElseMyType.Delete(DataList2.BoundText())MsgBox"删除成功"LoadTypesSetDataList2.RowSource=NothingDataList1.Enabled=TrueDataList2.Enabled=FalsetxtName=""Option1.Item(0).Value=TrueOption1.Item(1).Value=FalseEndIfElseMsgBox"请选择二级分类"ExitSubEndIfEndIfEndSubPrivateSubCmd_Modi_Click()IfLen(Trim(txtName))=0ThenMsgBox"请输入分类名称"txtName.SetFocusExitSubEndIf'判断当前选择按钮值IfOption1.Item(0).Value=TrueThen'选择一级分类'判断是否选择了一级分类IfDataList1.SelectedItem<1ThenMsgBox"请选择一级分类"ExitSubEndIf'判断是否修改了一级分类名称IfTrim(txtName)<>Trim(OriT1Name)Then'判断新的一级分类名称是否存在IfMyType.In_DB(Trim(txtName))ThenMsgBox"分类名称已存在"ExitSubElseMyType.TypeName=Trim(txtName)MyType.Update(DataList1.BoundText())MsgBox"修改成功"LoadTypestxtName=""EndIfEndIfElse'选择二级分类'首先判断是否选择了二级分类名称IfDataList2.SelectedItem>0Then'判断是否修改了一级分类名称IfTrim(txtName)=Trim(OriT2Name)ThenExitSubEndIf'判断新的二级分类名称是否存在IfMyType.In_DB(Trim(txtName))ThenMsgBox"分类名称已存在"ExitSubElseMyType.TypeName=Trim(txtName)MyType.Update(DataList2.BoundText())MsgBox"修改成功"LoadTypesSetDataList2.RowSource=NothingDataList1.Enabled=TrueDataList2.Enabled=FalsetxtName=""Option1.Item(0).Value=TrueOption1.Item(1).Value=FalseEndIfElseMsgBox"请选择二级分类"ExitSubEndIfEndIfEndSubPrivateSubDataList1_Click()'当选择一级分类名称时,将分类编号和名称赋给变量,同时将二级分类变量置为空,并装入二级分类名称IfDataList1.SelectedItem>0ThenOriT1Name=Trim(DataList1.Text)txtName=OriT1NameLoadTypes2EndIfEndSubPrivateSubDataList2_Click()IfDataList2.SelectedItem>0ThenOriT2Name=Trim(DataList2.Text)txtName=OriT2NameEndIfEndSubPrivateSubForm_Load()LoadTypesDataList2.Enabled=FalseEndSub'装入一级分类名称PrivateSubLoadTypes()Adodc1.ConnectionString=ConnAdodc1.RecordSource="Select*FromTypesWhereUpperId=0OrderByTypeId"Adodc1.RefreshSetDataList1.RowSource=Adodc1DataList1.ListField="TypeName"DataList1.BoundColumn="TypeId"EndSub'根据一级分类编号装入二级分类名称PrivateSubLoadTypes2()Adodc2.ConnectionString=ConnAdodc2.RecordSource="Select*FromTypesWhereUpperId="+Trim(DataList1.BoundText())+"OrderByTypeId"Adodc2.RefreshSetDataList2.RowSource=Adodc2DataList2.ListField="TypeName"DataList2.BoundColumn="TypeId"EndSub'修改选项时,数据列表状态更改PrivateSubOption1_Click(IndexAsInteger)IfIndex=0ThenDataList1.Enabled=TrueDataList2.Enabled=FalseElseDataList1.Enabled=FalseDataList2.Enabled=TrueEndIfEndSub设计部门管理窗体部门管理窗体名称为Frmdepman,窗体的布局如图所示:窗体中使用datalist控件显示所有部门信息,使用ADOData控件作为其提供数据源。Datarefresh过程的功能就是设置AdoData控件和Datalist的属性,在列表中显示部门信息,代码如下:PrivateSubDataRefresh()'设置连接字符串Adodc1.ConnectionString=ConnAdodc1.RecordSource="Select*FromDepartmentOrderByDepId"Adodc1.RefreshSetDataList1.RowSource=Adodc1DataList1.ListField="DepName"DataList1.BoundColumn="DepId"DataList1.RefreshEndSub程序使用SELECT语句从表Department中读取部门数据,然后将SELECT语句作为Adodc1控件的记录源。Datalist1.rowsource属性可以设置DataList1控件的数据来源。设计供应商信息管理窗体供应商信息管理窗体的名称为FRMsupplierMan。在窗体FRMsupplierMan中,使用DataGrid和Adodc控件来显示供应商信息数据。窗体布局如图:供应商信息管理窗体布局主要代码:PrivateSubCmd_Add_Click()FrmSupplierEdit.Modify=FalseFrmSupplierEdit.Show1DataRefreshEndSubPrivateSubCmd_Back_Click()UnloadMeEndSubPrivateSubDataRefresh()DimStrSearchAsStringStrSearch=""IfLen(Trim(txtName))>0Then'设置查询条件StrSearch="WhereSNameLike'%"+Trim(txtName)+"%'"EndIfAdodc1.ConnectionString=ConnAdodc1.RecordSource="SelectSId,SNameAS供货商名称,TelAS联系电话,"_+"AddressAS地址,ContactAS联系人,MemosAS备注"_+"FromSupplier"+StrSearch+"OrderBySId"Adodc1.RefreshSetDataGrid1.DataSource=Adodc1DataGrid1.Columns(0).Width=0DataGrid1.Columns(1).Width=1600DataGrid1.Columns(2).Width=1400DataGrid1.Columns(3).Width=1800DataGrid1.Columns(4).Width=1400DataGrid1.Columns(5).Width=1600EndSubPrivateSubCmd_Del_Click()IfAdodc1.Recordset.EOFThenMsgBox"请选择记录"ExitSubEndIf'判断入库信息表中是否存在此供应商信息IfMyIn.GetSupplier(Adodc1.Recordset.Fields(0))ThenMsgBox"不允许删除此供应商"ExitSubEndIfMySupplier.Delete(Adodc1.Recordset.Fields(0))MsgBox"删除成功"DataRefreshEndSubPrivateSubCmd_Modi_Click()IfAdodc1.Recordset.EOFThenMsgBox"请选择记录"ExitSubEndIfFrmSupplierEdit.Modify=TrueFrmSupplierEdit.OriSId=Adodc1.Recordset.Fields(0)FrmSupplierEdit.txtName=Trim(Adodc1.Recordset.Fields(1))FrmSupplierEdit.txtTel=Trim(Adodc1.Recordset.Fields(2))FrmSupplierEdit.txtAddress=Trim(Adodc1.Recordset.Fields(3))FrmSupplierEdit.txtContact=Trim(Adodc1.Recordset.Fields(4))FrmSupplierEdit.txtMemo=Trim(Adodc1.Recordset.Fields(5))FrmSupplierEdit.Show1DataRefreshEndSubPrivateSubCmd_Search_Click()DataRefreshEndSubPrivateSubForm_Load()DataRefreshEndSub办公用品信息管理模块设计办公用品信息管理模块包括入库管理、库存管理和领用管理功能。设计入库信息编辑窗体入库信息编辑窗体的名称为FrmstoreInedit,窗体布局如图所示主要代码如下:PublicOriInIdAsLongPublicModifyAsBooleanPrivateSubCmd_Cancel_Click()UnloadMeEndSubPrivateSubCmd_OK_Click()IfLen(Trim(dco_UType.Text))=0ThenMsgBox"请选择一级分类名称"dco_UType.SetFocusExitSubEndIfIfLen(Trim(dco_Type.Text))=0ThenMsgBox"请选择二级分类名称"dco_Type.SetFocusExitSubEndIfIfLen(Trim(dco_Store.Text))=0ThenMsgBox"请选择办公用品名称"dco_Store.SetFocusExitSubEndIfIfLen(Trim(dco_Supplier.Text))=0ThenMsgBox"请选择供货商名称"dco_Supplier.SetFocusExitSubEndIfIfLen(Trim(txtDate))=0ThenMsgBox"请输入入库日期"txtDate.SetFocusExitSubEndIfIfLen(Trim(txtAmount))=0OrVal(txtAmount)=0ThenMsgBox"请输入入库数量"txtAmount.SetFocusExitSubEndIfWithMyIn.OId=dco_Store.BoundText().InDate=Trim(txtDate).SId=dco_Supplier.BoundText().InAmount=Val(txtAmount).InSum=Val(txtSum).Memos=Trim(txtMemo)IfModify=FalseThen.InsertMsgBox"添加成功"Else.Update(OriInId)MsgBox"保存成功"EndIfEndWithUnloadMeEndSubPrivateSubdco_Type_Click(AreaAsInteger)IfLen(Trim(dco_Type.Text))>0ThenAdo_Store.ConnectionString=ConnAdo_Store.RecordSource="Select*FromStoreWhereTypeId="+Trim(dco_Type.BoundText())+"OrderByOId"Ado_Store.RefreshSetdco_Store.RowSource=Ado_Storedco_Store.ListField="OName"dco_Store.BoundColumn="OId"dco_Store.Text=""EndIfEndSubPrivateSubdco_UType_Click(AreaAsInteger)IfLen(Trim(dco_UType.Text))>0ThenAdo_Type.ConnectionString=ConnAdo_Type.RecordSource="Select*FromTypesWhereUpperId="+Trim(dco_UType.BoundText())+"OrderByTypeId"Ado_Type.RefreshSetdco_Type.RowSource=Ado_Typedco_Type.ListField="TypeName"dco_Type.BoundColumn="TypeId"dco_Type.Text=""EndIfEndSubPrivateSubForm_Load()'装入分类信息Ado_UType.ConnectionString=ConnAdo_UType.RecordSource="Select*FromTypesWhereUpperId=0OrderByTypeId"Ado_UType.RefreshSetdco_UType.RowSource=Ado_UTypedco_UType.ListField="TypeName"dco_UType.BoundColumn="TypeId"'装入二级分类信息Ado_Type.ConnectionString=ConnAdo_Type.RecordSource="Select*FromTypesWhereUpperId>0OrderByTypeId"Ado_Type.RefreshSetdco_Type.RowSource=Ado_Typedco_Type.ListField="TypeName"dco_Type.BoundColumn="TypeId"'装入办公用品信息Ado_Store.ConnectionString=ConnAdo_Store.RecordSource="Select*FromStoreOrderByOId"Ado_Store.RefreshSetdco_Store.RowSource=Ado_Storedco_Store.ListField="OName"dco_Store.BoundColumn="OId"'装入供应商信息Ado_Supplier.ConnectionString=ConnAdo_Supplier.RecordSource="Select*FromSupplierOrderBySId"Ado_Supplier.RefreshSetdco_Supplier.RowSource=Ado_Supplierdco_Supplier.ListField="SName"dco_Supplier.BoundColumn="SId"EndSub设计库存信息编辑窗体库存信息编辑窗体用于编辑办公用品的基本信息,窗体名称为FrmStoreEdit,窗体的布局如图:设计库存信息管理窗体库存信息管理窗体的名称为FrmStoreMan,窗体布局如图所示:DataRefresh过程的功能是根据查询条件设置SELECT语句,从表Store中读取办公用品库存信息,并显示在表格中,代码如下:PrivateSubCheck1_Click()IfCheck1.Value=1Thendco_UType.Enabled=Falsedco_Type.Enabled=Falsedco_UType.Text=""dco_Type.Text=""Elsedco_UType.Enabled=Truedco_Type.Enabled=TrueEndIfDataRefreshEndSubPrivateSubCmd_Add_Click()FrmStoreEdit.Modify=FalseFrmStoreEdit.Show1DataRefreshEndSubPrivateSubCmd_Back_Click()UnloadMeEndSubPrivateSubDataRefresh()DimStrSearchAsStringStrSearch=""IfCheck1.Value<>1ThenIfLen(Trim(dco_UType.Text))>0Then'设置一级分类StrSearch="Andt.UpperId="+Trim(dco_UType.BoundText)EndIfIfLen(Trim(dco_Type.Text))>0Then'设置二级分类StrSearch="Ands.TypeId="+Trim(dco_Type.BoundText)EndIfEndIfAdodc1.ConnectionString=ConnAdodc1.RecordSource="Selects.OId,s.ONameAS办公用品名称,t1.TypeNameAS一级分类名称,"_+"t.TypeNameAS二级分类名称,s.OStyleAS型号,s.OAmountAS库存数量,s.OMinAS库存下限,s.MemosAS备注"_+"FromStores,Typest,Typest1Wheres.TypeId=t.TypeId"_+"Andt.UpperId=t1.TypeId"+StrSearch+"OrderBys.TypeId"Adodc1.RefreshSetDataGrid1.DataSource=Adodc1DataGrid1.Columns(0).Width=0DataGrid1.Columns(1).Width=1600DataGrid1.Columns(2).Width=1200DataGrid1.Columns(3).Width=1200DataGrid1.Columns(4).Width=1200DataGrid1.Columns(5).Width=1200DataGrid1.Columns(6).Width=1200DataGrid1.Columns(7).Width=1600EndSubPrivateSubCmd_Del_Click()IfAdodc1.Recordset.EOFThenMsgBox"请选择记录"

温馨提示

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

评论

0/150

提交评论