信息是管理上的一项极为重要的资源,管理工作的成败取决于能否做出有效的决策,而决策的正确程度则在很大程度上取决于信息得质量。所以能否有效的管理信息成为企业的首要问题,管理信息系统MIS在强调管理、强调信息的现代社会中越来越得到普及。
企业信息管理通常是比较复杂,由于各类信息繁多难归集,利用计算机支持企业高效率完成企业信息管理,是适应现代企业制度要求,推动企业信息管理走向科学化、社会化、规范化和自动化,从而提高企业信息管理效率。
本系统选用PowerBuilder软件开发工具,PowerBuilder是一种高效的客户/服务器模式以及分布式数据库应用程序的前端开发工具。利用此软件完成了企业信息管理系统的物品管理功能、节目管理功能、客户信息管理功能,完成了多种查询模块、增添模块、删除模块、修改模块等等。本系统的开发基本满足企业信息管理的要求,用户界面交友好,提供的信息丰富准确,使管理工作的各环节能够顺利而有效的进行,具有良好的实用价值和可观的发展前景,极大的提高了企业信息管理的效率,是企业的科学化、规范化管理、自动化的重要前提条件。
关键词:管理信息系统MIS , 企业信息管理系统 , PowerBuilder
数据库
ABSTRACT
The information is an extremely important resources of the management,the success or failure that manages the work is decided by and can do a valid decision,but the right degree of the decision then to a large extent be decided by the information get quantity. So can effectively of management information become initial problem of the business enterprise, the management information system MIS get the universality more and more in emphasize manage, emphasize modern society of information.
The business enterprise information the management is usually more complicated, because each kind of information is numerous difficult return to gather, make use of the calculator support business enterprise high-efficiency complete the business enterprise information management, is to adapt the modern business enterprise system request, push the business enterprise information management alignment scientific, acculturate, the norm turns and automates, thus raising the business enterprise information management efficiency.
This system chooses to use the PowerBuilder software development tool, the PowerBuilder is a kind of efficiently of C/ S's mode and the distribute type database apply the head of the procedure development tool.Make use of this software completed the product management function, program management function, customer information management function of the business enterprise information management system, completing various search mold pieces, increasing the mold piece, deleting the mold piece and modifying an etc. of mold.This system develop basic satisfy the request of the business enterprise information management, the customer interface make friends good, the information for provide is abundant accurate, make each link of manage the work can carry on effectively smoothly, having the good practical worth and considerable development foreground, raising the efficiency of the business enterprise information management biggest, is business enterprise of scientific, the norm turn management, automation of important prior condition.
Keyword: MIS, TheBusinessEnterpriseInformationManagementSystem , PowerBuilder, Database
前 言
管理信息系统就是MIS(Management Information System),在强调管理,强调信息的现代社会中它变得越来越普及。MIS是一门新的学科,它跨越了若干个领域,比如管理科学、系统科学,运筹学、统计学以及计算机科学。在这些学科的基础上,形成信息收集和加工的方法,从而形成一个纵横交织的系统。
企业信息管理系统是一种典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。
全文共分4章节,第1章“绪论”介绍了管理信息系统的发展与应用,管理信息系统的特点及管理信息系统的开发方法与开发过程。并且简单介绍了软件开发工具Powerbuilder功能和优势。第2章“需求分析”通过对系统的详细调查,针对系统的现状以及系统现存的问题提出了系统的设计目标及设计原则。通过对系统组织机构的分析,业务流程和数据流程的分析,相应画出了组织机构图,系统业务流程图和数据流程图。第3章“系统设计”论述了概要设计的方法。按照此方法,在需求分析的基础上,先设计出满足用户需求的各种实体,画出各实体的E-R图,然后绘制出实体之间的关系并对其优化,以及做出界面设计。第4章“系统的运行”是本文的重点展示了系统的运行效果。它包括数据库结构的设计实现;登录窗口的设计实现;主界面的设计实现;设备代码管理模块等各功能模块的设计。
本系统的开发基本满足企业信息管理的要求,用户界面交友好,提供的信息丰富准确,使管理工作的各环节能够顺利而有效的进行,具有良好的实用价值和可观的发展前景,极大的提高了企业信息管理的效率。
第一章 绪 论
1.1 管理信息系统概述
20世纪,随着全球经济的蓬勃发展,众多经济学家纷纷提出了新的管理理论。20世纪50年代,西蒙提出管理依赖于信息和决策的思想。同时期的维纳发表了控制论,他认为管理是一个控制过程。1958年,盖尔写道:“管理将以较低的成本得到及时准确的信息,做到较好的控制。”这个时期,计算机开始用于会计工作,出现数据处理一词。1970年,Walter T.Kennevan给刚刚出现的管理信息系统一词下了一个定义:“以口头或书面的形式,在合适的时间向经理、职员以及外界人员提供过去的、现在的、预测未来的有关企业内部及其环境的信息,以帮助他们进行决策。”在这个定义里强调了用信息支持决策,但并没有强调用模型,没有提到计算机的应用。
1985年,管理信息系统的创始人,明尼苏达大学的管理学教授Gordon Bedevils给了管理信息系统一个较完整的定义,即“管理信息系统是一个利用计算机软硬件资源,手工作业,分析、计划、控制和决策模型以及数据库的人-机系统。它能提供信息支持企业或组织的运行、管理和决策功能。”这个定义全面地说明了管理系统的目标、功能和组成,而且反映了管理信息系统在当时达到的水平。
1.1.1管理系统的发展历史
管理信息系统在最初级阶段是统计系统,所研究的内容是数量数据间表面的规律,它可以把数据分成较相关和较不相关的组,然后把数据转换为信息。
第二阶段是数据更新系统,其典型代表是美国航空公司于20世纪50年代建成的SABRE预约订票系统。它设有1008个订票点,可以存取600000个旅客记录和27000个飞行段记录。它的操作比较复杂,在任何一“点”都可以查到某一航班是否有空座位。但从概念上来讲,它只是一个数据更新系统,比如它不能告诉你以现在的售票速度何时票将售完,从而采取补救措施。因而它也是管理信息系统的低级阶段。
第三阶段是状态报告系统,它可以分为生产状态报告、服务状态报告和研究状态报告等系统。比如生产状态报告系统,它的典型代表是IBM公司的生产管理系统。众所周知,IBM公司是世界上最大的计算机公司,1964年它生产出中型计算机IBM360,使计算机的水平提高了一个台阶,但同时组织生产的管理工作却大大复杂化了。一台计算机有超过15000个不同的部件,每一个部件又有若干个元件,加之IBM的工厂遍及美国各地,不同的定货有不同的部件和不同的元件,必须指出什么工厂什么设备生产什么元件,因此不仅生产复杂,装配、安装和运输都十分复杂。为了保证生产以及其他环节的顺利进行,必须要有一个以计算机为基础的生产状态报告系统。因此同年IBM建立了先进管理系统AAS,它能进行450个业务的操作。1968年,公司又建立了公用制造信息系统CMIS,运行很成功,过去需要15周的工作,该系统只用3周就可以完成。
状态报告系统还有一种形式是数据处理系统,它用来处理日常业务和生产报告,重点在于将手工作业自动化,提高效率和节省人力。数据处理系统一般不能提供决策信息。
最后的阶段是决策支持系统,它是用来辅助决策的信息系统。该系统可以计划、分析方案,审查解答和求解的误差。它应有较好的人机对话方式,可以和不怎么熟悉计算机的管理人员通话。它一般包括一些模型用以产生决策信息,但不强调全面的管理功能。
1.1.2管理信息系统的应用
管理信息系统起初应用于最基础的工作,如打印报表、计算工资、人事管理等,进而发展到企业财务管理、库存管理等单项业务管理,这属于电子数据处理(EDP,Electronic Data Processing)系统。当建立了企业数据库,有了计算机网络从而达到数据共享后,从系统观点出发,实施全局规划和设计信息系统时,就达到管理信息系统的阶段。随着计算机技术的进步和人们对系统的需求进一步提高,人们更加强调管理信息系统能否支持企业高层领导的决策这一功能,更侧重于企业外部信息的收集、综合数据库、模型库、方法库和其他人工智能工具能否直接面向决策者,这是决策支持系统(DSS,Decision Support System)的任务。
我国20世纪70年代末有少数企业开始MIS的局部应用。“六五”期间,选择一些大型企业进行MIS的开发试点,其中首都钢铁公司、北京第一棉纺厂、湖北第二汽车制造厂、宁江机床厂等取得了经验。20世纪80年代中后期,在全国性的计算机应用热潮中,许多企业纷纷从财务管理、人事管理等单项应用入手,尝试建立MIS。许多企业,如北京内燃机厂、北京电视机厂、沈阳鼓风机厂、天津渤海无线电厂的MIS初具规模,建立了覆盖全厂的计算机网络。“八五”期间,企业逐步走向市场,MIS建设的目标和需求日益明确。一些企业的系统,如北京第一机床厂、山西经纬纺织机械厂、成都飞机制造公司等都达到了很高水平,与企业中其他系统集成,形成了CIMS。目前,我国MIS已经有了相当的普及率,几乎覆盖了各个行业及各个部门。
1.1.3管理信息系统的发展方向
相应的MIS开发技术在20世纪90年代也有了新的发展。
1.信息系统的集成
MIS在计算机网络和分布式数据库管理系统的支持下,与企业其他的系统,如OA、CAD、CAM、CAPP、在线数据采集系统集成,形成制造业的计算机集成制造系统,或者一般企事业单位的综合信息系统(CIIS,Computer Integrated Information System),实现办公、管理、计算、设计、控制、监测,以及决策等多功能综合。
2.Internet/Intranet
因特网(Internet)已经被广大用户所熟悉,而以因特网技术为基础的企业内部信息系统——Intranet既可以通过接入的方式成为因特网的一部分,也可以自成体系,实现企业内部的管理。它可以克服传统MIS存在的系统封闭、用户界面形式不统一、多种软件版本并存、维护移植困难等问题,为新一代企业MIS的开发注入了强劲的活力。
3.先进的软件开发工具
为了缩短软件开发的周期,提高软件的质量和标准化水平以及软件的可维护性,越来越多的软件开发公司使用先进的软件开发工具或计算机辅助软件工程工具(CASE,Computer-Aided Software Engineering),如各种可视化建模工具、系统分析和设计工具、软件质量测试工具、软件文档建立和管理工具等。还有各种MIS开发平台和代码生成工具,这些工具极大地方便了MIS的开发。
4. 多媒体技术
随着计算机性能的提高,MIS采用越来越多的多媒体技术,用图形、图像、声音替代原来单调的字符形式,给用户提供了一个更加生动真实的应用环境。
1.2管理信息系统的特点
1.2.1 管理信息系统的组成
管理信息系统在企业中的应用存在三个要素,这就是人、计算机和数据。
人是指企业领导者、管理人员、技术人员,以及MIS建设的领导机构和实施机构,他们在系统中起主导作用。MIS是一项系统工程,不是只靠一些计算机开发人员就可以完成的,必须有企业管理人员,尤其是企业领导的积极参与。
计算机技术是MIS得以实施的主要技术。在这些技术中,软件开发是MIS开发的重点。
第三个因素也不能忽视。企业的管理数据是MIS正常运行的基础。广义地说,各项管理制度是MIS建设成功的基础。试想要计算一台机床的成本,需要按时输入每个部件、每个零件以及每个螺钉螺帽的费用,涉及企业的生产车间、采购、库房、工艺设计和财务等多个部门,必须有一整套管理制度做保证。
1.3管理信息系统的开发
1.3.1 系统开发的一般方法
管理信息系统的开发是一个复杂的系统工程,它涉及到计算机处理技术、系统理论、组织结构、管理功能、管理知识等各方面的问题,至今没有一种统一完备的开发方法。但是,每一种开发方法都要遵循相应的开发策略。任何一种开发策略都要明确以下问题:
l 系统要解决的问题:如采取何种方式解决组织管理和信息处理方面的问题,对企业提出的新的管理需求该如何满足等。
l 系统可行性研究:确定系统所要实现的目标。通过对企业状况的初步调研得出现状分析的结果,然后提出可行性方案并进行论证。系统可行性的研究包括目标和方案可行性、技术的可行性、经济方面的可行性和社会影响方面的考虑。
l 系统开发的原则:在系统开发过程中,要遵循领导参与、优化创新、实用高效、处理规范化的原则。
l 系统开发前的准备工作:作好开发人员的组织准备和企业基础准备工作。
l 系统开发方法的选择和开发计划的制定:针对己经确定的开发策略选定相应的开发方法,是结构化系统分析和设计方法,还是选择原型法或面向对象的方法。开发计划的制定是要明确系统开发的工作计划、投资计划、工程进度计划和资源利用计划。
管理信息系统开发方法主要有:结构化生命周期开发方法、原型法、面向对象的开发方法等。
1.结构化生命周期开发方法
目前较为流行的MIS开发方法是结构化生命周期开发方法,其基本思想是:用系统的思想和系统工程的方法,按用户至上的原则,结构化、模块化地自上而下对生命周期进行分析与设计。
用结构化生命周期开发方法开发一个系统,将整个开发过程划分为5个依次连接的阶段:
l 系统规划阶段:主要任务是明确系统开发的请求,并进行初步的调查,通过可行性研究确定下一阶段的实施。系统规划方法有战略目标集转化法(SST,Strategy Set Transformation)、关键成功因素法(CSF,Critical Success Factors)和企业规划法(BSP,Business System Planning)。
l 系统分析阶段:主要任务是对组织结构与功能进行分析,理清企业业务流程和数据流程的处理,并且将企业业务流程与数据流程抽象化,通过对功能数据的分析,提出新系统的逻辑方案。
l 系统设计阶段:主要任务是确定系统的总体设计方案、划分子系统功能、确定共享数据的组织,然后进行详细设计,如处理模块的设计、数据库系统的设计、输入输出界面的设计和编码的设计等。
l 系统实施阶段:主要任务是讨论确定设计方案、对系统模块进行调试、进行系统运行所需数据的准备、对相关人员进行培训等。
l 系统运行阶段:主要任务是进行系统的日常运行管理,评价系统的运行效率,对运行费用和效果进行监理审计,如出现问题则对系统进行修改、调整。
这五个阶段共同构成了系统开发的生命周期。结构化生命周期开发方法严格区分了开发阶段,非常重视文档工作,对于开发过程中出现的问题可以得到及时的纠正,避免了出现混乱状态。但是,该方法不可避免地出现开发周期过长、系统预算超支的情况,而且在开发过程中用户的需求一旦发生变化,系统将很难作出调整。
2. 原型法
原型法在系统开发过程中也得到不少应用。原型法的基本思想是系统开发人员凭借自己对用户需求的理解,通过强有力的软件环境支持,构造出一个实在的系统原型,然后与用户协商,反复修改原型直至用户满意。 原型法的应用使人们对需求有了渐进的认识,从而使系统开发更有针对性。另外,原型法的应用充分利用了最新的软件工具,使系统开发效率大为提高。
3.面向对象系统开发方法
面向对象(OO,Object Oriented)的系统开发方法,是近年来受到关注的一种系统开发方法。面向对象的系统开发方法的基本思想是将客观世界抽象地看成是若干相互联系的对象,然后根据对象和方法的特性研制出一套软件工具,使之能够映射为计算机软件系统结构模型和进程,从而实现信息系统的开发。
1.3.2 管理信息系统的开发过程
管理信息系统的开发过程一般包括系统开发准备、系统调查、系统分析、系统设计、系统实现、系统转换、系统运行与维护、系统评价等步骤。根据开发系统的大小、复杂、投入、方式、方法等因素的不同,各步骤的要求和内容也不同,用户需要根据实际情况进行取舍和计划。
1.4 PowerBuilder软件开发工具
本系统选用Powerbuilder软件开发工具,PowerBuilder是一种高效的客户/服务器模式以及分布式数据库应用程序的前端开发工具。
PowerBuilder是著名的数据库应用开发工具生产厂商Sybase Inc.的子公司PowerSoft于1991年6月推出的数据应用开发工具,历经了多次升级换代。PowerBuilder除了能够设计传统的高性能、基于客户/服务器体系结构的应用系统外,也能够方便的构建和实现分布式系统,还可以开发基于Internet的应用系统。
数据库的开发平台有很多种,可以说,PowerBuilder是其中比较优秀的一种,其主要特点归纳如下:专业的客户/服务器开发工具、面向对象的编程、支持多种关系数据库管理系统、支持多种平台的开发环境.功能强大、使用方便的数据窗口对象、丰富的数据表现风格等等。
第二章 企业信息管理系统分析
2.1总体调查
新系统的系统分析与系统设计工作都要建立在对现行系统调查的基础上,即必须调查现行系统的运行情况、问题等,明确用户的需求,特别是合作开发和委托开发方式。
调查的主要内容有:
(1)现行系统概况:该组织的发展历史、目前组织的规模、工作状况、管理水平、与外界的主要联系等。调查该项内容的目的主要是为了划分系统界限、系统与外界的输入输出接口等。
(2)组织机构:画出组织的组织结构图,弄清组织的行政关系、人员编制、工作范围、地理位置等,发现不合理问题及新系统启动后可能对现有组织的影响。
(3)业务流程:按照业务种类的不同和处理时间的先后不同,深入了解现行系统的业务流程,画出现行系统业务流程图,并与业务人员反复讨论,得到认可。调查中要注意定性与定量相结合,注意人、财、物、信息的流向、规格、频率、要求以及需要解决的问题等。
(4)报表、数据处理:了解各种统计报表、数据的格式、内容、处理时间及上报时间、频率、规律,存在的问题,对新系统的要求、希望等并收集各种报表。
(5)问题:现行系统中存在的主要问题和薄弱环节,可以按照严重程度分成不同的等级。新系统的建立应能解决大部分问题,并改善薄弱环节。
(6)新系统的功能和目标:了解各级领导和各类业务工作人员对新系统功能的要求,为进一步完善新系统的目标做准备。
(7)其他:如对新系统的各种约束条件,需要说明的其他问题等。
2.1.1 本系统的调查
文化广告公司,是一种兴起时间不久的广告行业,它主要的营业项目是作户外庆典广告,向客户提供展览展示用品舞台框架、演员节目、飘空气球、拱门等等。
企业的信息管理系统提现的一个企业总体的信息归集,往往非常的复杂繁琐,系统通常也恨的庞大,它涉及到企业的客户信息管理、物品信息管理
和演员节目信息管理等等。本系统制作主要用于企业各类信息资源的管理。
最常用的客户信息管理系统,需要记录客户的基本信息联系方式地址等,要求方便查询、添加和删除,客户订购信息管理要求查询到公司向客户提供了哪些服务,如提供了哪些物品和节目。物品信息管理和节目信息管理需要查询到公司有哪些物品可以向客户提供哪些表演节目,并且加强它们之间的联系,以便公司规范管理客户档案、合理安排现有资源。
2.2系统的可行性分析
系统分析(又称逻辑设计)是管理信息系统开发的关键环节,要求在系统调查的基础上,对新系统的功能进行细致的分析,并建立一个新系统的逻辑模型。
新系统的逻辑模型由系统数据流程图、概况表、数据字典、吃理逻辑表达式及有关说明组成。最后要完成系统分析报告(也称为系统逻辑设计说明书)。系统逻辑模型就像在根据需要建设一座学校前,按照学校教育的层次(初等、中等、高等)、规模、投资、地理环境、技术水平等条件的要求和约束,先由建筑设计院进行设计,保证学校建成后的各种功能得以实现,之后才能进行工程设计和施工一样。在系统设计阶段要做认真、细致的分析、研究工作,避免新系统在功能上存在先天不足或缺陷。
因为新系统模型是建立在对现行系统的分析及要求的基础上的,所以系统调查工作要进行得深入、细致、全面。用户可以对新系统的逻辑模型提出意见,双方经过讨论、修改,最后达成共识,并完成系统分析报告(系统逻辑设计说明书),经有关领导审批通过之后,转入系统设计(又称系统物理设计)阶段。
企业信息管理系统要完成的功能主要有:
1. 物品管理主要完成物品的查询、增加、修改或删除。
2. 节目管理主要完成节目的查询、增加、修改或删除。
3. 客户一般信息查询需要完成客户一般信息浏览、客户订购信息浏览、客户信息查询。
4. 客户订购信息查询要求完成按客户查询出提供服务的物品和节目、按物品查询出需要本物品的客户名称、按节目查询出需要本节目的客户名称。
经调查按照公司的现状,本公司非常需要这样的一个系统。
2.3详细调查
新系统是在现有系统的基础上发展起来的。为了使新系统比现有系统工作的更加经济有效,必须首先做好对现有系统的详细调查。
1.详细调查的目标和内容
在可行性研究的基础上进一步对现行全面、深入的调查和分析,弄清楚现行系统运行状况,发现其薄弱环节,找出要解决的问题实质,确保新系统更有效。
详细调查的主要内容包括对现行系统的目标、主要功能、数据流程的调查和分析。
2.详细调查的方法
为了确保调查工作顺利进行,系统分析人员要注意工作方法和工作手段。切实与用户建立良好的关系,让用户充分地、积极地参与调查工作。
具体方法有直接面谈或专门访问,发调查表征求意见,召开讨论会,阅读历史资料和参加业务实践,其中参加业务实践,与具体工作人员一起完成最基本的工作程序是最有效的方法。
2.4管理业务的调查
2.4.1 组织机构和职责的调查
了解清楚对象系统内部各种组织机构可以向系统分析人员进一步明确调查对象和方向。调查结果可以用组织结构图表示:
图2-1
2.4.2管理业务流程分析
业务流程图体现了信息的流动过程,顾客和业务员签订合同书后,由业务员交于外联主管统一管理,外联主管做好合同档案,让财务部作费用预算,如发现无利润时向外联主管发放不合格预算单,再由外联主管向客户发出取消合同通知书,如项目有一定利润则有外联主管向策划人员发放编写策划书通知单,向演艺人员发出节目通知单如演员在这个时间段可以演出则向公司发出节目执行单,再将编写好的策划书交由该项目负责人,在向工程部发放施工单,项目扶责任和工程部一起监督项目的实施过程。
系统的业务流程图如下:(图2-2)
-2
图2-2
2.5数据流程的分析
数据流程图描述系统的逻辑模型,图中没有任何具体的物理元素,只是描述信息在系统中流动和处理的情况。设计数据流程图只需考虑系统必须完成的基本逻辑功能,而不需考虑如何具体的实现这些功能。
1. 确定系统界面。
2. 自顶向下、逐层分解。
3. 合理布局。
4. 数据流程图只反映数据流向、数据加工和逻辑意义上的数据存储。
5. 数据流程图绘制过程就是系统的逻辑模型的形成过程,必须始终和用户密切接触。
在仔细调查企业信息管理过程的基础上,得到本系统所处理的数据流程图如下图所示:
第三章 系统设计
系统设计又称系统物理设计。系统设计要根据系统分析报告中的系统逻辑模型综合考虑各种约束,利用一切可用的技术手段和方法进行各种具体设计,确定新系统的实施方案,解决“系统怎么做”的问题。
结构化系统设计是指利用一组标准的图表工具和准则,确定系统有哪些模块,用什么方法连接,如何构成良好的系统结构,并进行系统输入、输出、数据处理、数据存储等环节的详细设计。这一阶段的重点是设计好系统的总体结构,选择最经济合理的技术手段。系统设计阶段的文件是系统设计报告(又称系统物理设计说明书)。
管理信息系统的开发是一项系统工程,为了保证系统的质量,设计人员必须遵守共同的设计原则,尽可能地提高系统的各项指标(系统可变性、可靠性、工作质量、工作效率、经济性等)。
系统设计的任务是在系统分析的基础上,按照逻辑模型的要求,科学的进行总体设计和具体的物理设计,系统要求:系统性、灵活性、可靠性、经济性。
3.1 概要设计的必要性
在概念设计阶段中,从用户的角度看待数据及处理要求和约束,产生一个反应用户观点的概念模式。然后再把概念模式转换成逻辑模式。将概念设计从设计过程中独立开来,有以下几个好处。
1. 各阶段的任务相对单一化,设计复杂程度大大降低,便于组织管理。
2. 不受特定的DBMS的限制,也独立于存储安排和效率方面的考虑,因而比逻辑模型更为稳定。
3. 概念模式不含具体的DBMS所附加的技术细节,更容易为用户所理解,因而才有可能准确地反应用户的信息需求
。
3.2 系统设计目标
系统开发的总体任务是实现企业信息管理的系统化,规范化和自动化,从而达到提高信息管理效率的目的。在本系统的设计过程中,为了满足计算机管理的需要采取了以下原则:
1. 统一各种原始单据的格式,统一帐目和报表的格式。
2. 删除不必要的管理冗余,实现管理规范化,科学化。
3. 程序代码标准化,软件统一化,确保软件的可维护性和实用性。
4. 界面尽量简单化,做到实用,方便,尽量满足企业中不同层次员工的需要。
5. 建立操作日志,系统自动记录所进行的各种操作。
3.3 概要设计的方法
3.3.1 E-R 法
概要设计采用的方法:E-R 法
采用E-R 法的步骤:
1. 设计局部E-R模式。
2. 设计全局E-R模式。
3. 全局E-R模式的优化。
3.3.2 E-R图
图3-1 物品实体E-R图
图3-2节目实体E-R图
图3-3客户物品E-R图
图3-4客户节目E-R图
图3-5客户实体E-R图
图3-6实体之间的关系
3.4系统总体结构设计
系统的功能结构图如下:
图3-1
3.5管理信息系统的界面特点
在计算机软件技术中,人机界面已经发展成为一个重要的分支。
MIS人机界面设计一般遵循以下一些基本原则:
1. 以通信功能作为界面设计的核心
人机界面设计的关键是使人与计算机之间能够准确地交流信息。一方面,人向计算机输入信息时应当尽量采取自然的方式;另一方面,计算机向人传递的信息必须准确,不致引起误解或混乱。另外,不要把内部的处理、加工与人机界面混在一起(人机界面程序只是通信),以免互相干扰,影响速度。
设计MIS时,针对每一个功能,都要按照“I-P-O”的模块化思想,使输入、处理与输出“泾渭分明”,充分体现人机界面的通信功能。这样设计出来的程序不易出错,而且易于维护。
报表打印是MIS必备的功能之一,而且打印之前常常需要计算。计算与打印分开设计,虽然消耗时间,但易于整个MIS系统的维护。
2. 界面必须始终一致
统一的人机界面不致于会增加用户的负担,让用户始终用同一种方式思考与操作。最忌讳的是每换一个屏幕用户就要换一套操作命令与操作方法。
例如在整个系统可以以问号图标表示帮助,以磁盘图标表示存盘,以打印机图标表示打印等。
3. 界面必须使用户随时掌握任务的进展情况
人机界面应该能够告诉用户软件运行的进度。特别是在需要较长时间的等待时,必须让用户了解工作进展情况,如可以设计已经完成了百分之几的任务进度条等。目前,Windows下的应用软件无论大小,其安装程序几乎均做到了这一点。开发MIS软件时,这一点很值得借鉴。
4. 界面必须能够提供帮助
一个优秀的MIS软件应该提供在线求助功能,甚至提供使用向导,这将给用户带来极大的方便。在多媒体环境下,以语音提示作为操作向导,不会干扰屏幕信息,是一个极佳的选择。
5. 界面友好、使用方便
多数MIS软件的数据输入量较大。对于一些相对固定的数据,不应让用户频频输入(特别是汉字),而应让用户用鼠标轻松选择。例如,人事管理系统中的“文化程度”是相对固定的数据,其值一般取“小学”、“初中”、“高中”、“大专”、“大本”、“硕研”、“博研”等。录入这类数据之前,MIS软件应在相应位置弹出一个列表框,待用户以鼠标点击,而不应让用户每次都输入这些汉字。
另外,开发者应编写一个错误实时记录程序,自动记录何日、何时、何程序出了何种错误。
总之,所开发的MIS在使用过程中,应使用户的数据输入量降至最低限度,同时也要减少用户的干预量。实践证明,用户干预愈少,MIS系统的满意程度愈高。
6.输入画面尽可能接近实际
如果某个电算会计软件的凭证录入画面是表格式的,一屏可录入多条记录,而且与实际凭证一模一样,甚至连颜色都无异,用户在终端上录入凭证,仿佛用笔在纸上填写凭证,以增加人机亲和力。
7. 具有较强的容错功能
误操作、按键连击等均有可能导致数据误录。巧妙地进行程序设计,可以避免此类因素造成的错误。例如,录入学生成绩时,我们可以对其范围进行限定,使用户无法输入0~100以外的数据;录入学生年龄时,不妨根据实际情况将范围限制在15~20之间。
3.6界面设计
1.登录窗口的设计
在应用程序对象Open事件的程序代码中有下面一条语句:
Open(w_login)
该语句就是打开登录窗口的语句。登录窗口如图所示。
图3-2登陆窗口设计
该窗口放置了2个静态文本框Static Text控件,2个单行编辑框Single line Edit控件,2个按钮,2个GroupBox控件,各个控件的属性设置如表所示:
表3-1登录窗口中各个控件的属性设置表
控件
|
属性
|
属性取值
|
St_1
|
text
|
用户:
|
St_2
|
text
|
密码:
|
St_3
|
text
|
企业信息管理系统登录
|
ddlb_1
|
AllowEdit
|
选中
|
Sle_2
|
password
|
选中
|
Cb_1
|
text
|
登录
|
Cb_2
|
text
|
退出
|
Gb_1
|
text
|
空
|
在Cb_1控件的Click事件中输入如下的程序代码:
if sle_1.text<>'ztt' then
messagebox("提示","请输入正确用户名!")
return
end if
if sle_2.text<>'12345' then
messagebox("提示","请输入正确口令!")
return
end if
open(w_main)
close(parent)
在Cb_2控件的Click事件输入如下的程序代码:
//终止程序
halt
用于结束应用程序的运行。
2.主窗口的设计
图3-3主界面窗口设计
表3-2主界面窗口中各个控件的属性设置表
控件名称
|
属性
|
属性值
|
|
Title
|
企业管理信息系统
|
MeumName
|
m_meum
|
P_1
|
Picturename
|
Main.jpg
|
Cb_1
|
text
|
退出
|
从该窗口的菜单或工具栏可以进入,物品管理、节目管理、客户信息管理、客户订购信息管理、客户信息查询各窗口。
3.物品窗口的设计
图3-4物品管理窗口设计
表3-3 物品管理窗口各个控件的属性设置表
控件
|
属性
|
属性取值
|
St_1
|
text
|
物品管理
|
Tabpage_1
|
text
|
浏览
|
Tabpage_2
|
text
|
查询
|
Tabpage_3
|
text
|
添加
|
Tabpage_4
|
text
|
修改与删除
|
Cb_1
|
text
|
退出
|
表3-4 查询页窗口各个控件的属性设置表
控件
|
属性
|
属性取值
|
St_1
|
text
|
请输入物品名称:
|
Sle_2
|
text
|
空
|
Cb_1
|
text
|
查询
|
dw_1
|
Dataobject
|
d_thing1
|
Gb_1
|
text
|
空
|
表3-5 添加页窗口各个控件的属性设置表
控件
|
属性
|
属性取值
|
St_1
|
text
|
请输入信息,按确定……
|
Cb_1
|
text
|
确定
|
Cb_2
|
text
|
重置
|
dw_1
|
Dataobject
|
d_thing2
|
Gb_1
|
text
|
空
|
表3-6 修改与删除页窗口各个控件的属性设置表
控件
|
属性
|
属性取值
|
St_1
|
text
|
请输入需处理物品名称:
|
Sle_2
|
text
|
空
|
Cb_1
|
text
|
查询
|
Cb_2
|
text
|
确定
|
Cb_3
|
text
|
删除
|
Cb_4
|
text
|
重置
|
dw_1
|
Dataobject
|
d_thing1
|
Gb_1
|
text
|
空
|
4.客户数据窗口录入设计
图3-5客户数据录入窗口设计
在“浏览”分页中,实现在数据窗口中显示该企业的各种各样的物品。
代码见附录。
在“查询”分页中,可以模糊查询该企业的各种各样的物品。
代码见附录。
在“添加”分页中,实现向该企业物品表中添加各种各样的物品。
代码见附录。
在“修改与删除”分页中,实现该企业的各种各样的物品修改与删除。
代码见附录。
表3-7 客户数据录入窗口各个控件属性设置表
控件
|
属性
|
属性取值
|
St_1
|
text
|
客户数据录入
|
Tabpage_1
|
text
|
客户信息录入
|
Tabpage_2
|
text
|
客户物品录入
|
Tabpage_3
|
text
|
客户节目录入
|
Cb_1
|
text
|
退出
|
在“客户信息录入”分页中,实现添加客户的的信息。
代码见附录。
在“客户物品录入”分页中,实现添加客户订购的物品的信息。
代码见附录。
在“客户节目录入”分页中,实现添加客户订购的节目的信息。
代码见附录。
5.客户订购信息查询窗口设计
图3-6客户订购信息查询设计
表3-8 客户订购信息查询窗口各个控件的属性设置表
控件
|
属性
|
属性取值
|
St_1
|
text
|
客户订购信息查询
|
Tabpage_1
|
text
|
按客户查询
|
Tabpage_2
|
text
|
按物品查询
|
Tabpage_3
|
text
|
按节目查询
|
Cb_1
|
text
|
退出
|
表3-9 按客户查询页窗口各个控件的属性设置表
控件
|
属性
|
属性取值
|
St_1
|
text
|
请输入客户名称:
|
ddlb_1
|
text
|
空
|
Cb_1
|
text
|
查询
|
Gb_2
|
text
|
物品信息
|
Gb_3
|
text
|
节目信息
|
|
Dataobject
|
d_query1
|
HScrollBar
|
选中
|
VScrollBar
|
选中
|
|
Dataobject
|
d_query2
|
HScrollBar
|
选中
|
VScrollBar
|
选中
|
Gb_1
|
text
|
空
|
在“按客户信息查询”分页中,可以查到该客户订购的物品、节目的信息。
代码见附录。
在“按物品查询”分页中,可以查到订购的该物品的客户信息。
代码见附录。
在“按节目查询”分页中,实现添加客户订购的物品的信息。
代码见附录。
3.7 菜单设计
在菜单画面中设计应用程序主窗口所连接的菜单m_meum.该菜单的结构如下:
图3-7菜单设计
1.“物品节目管理”菜单下“物品管理”子菜单的clicked事件程序代码:
Open(w_thing)
其功能打开物品窗口。
2.“物品节目管理”菜单下“节目管理”子菜单的clicked事件程序代码:
Open(w_program)
其功能打开节目窗口。
3.“物品节目管理”菜单下“退出”子菜单的clicked事件程序代码:
Close(w_main)
其功能关闭主窗口。
4.“客户管理”菜单下“客户订购信息管理”下菜单“客户订购信息查询”的clicked事件程序代码:
Open(w_client)
其功能打开物品窗口。
5.“客户管理”菜单下“物品管理”子菜单的clicked事件程序代码:
Open(w_query)
其功能打开客户信息窗口。
6.“客户管理”菜单下“客户数据录入”的clicked事件程序代码:
Open(w_input)
其功能打开客户数据录入窗口。
3.8 数据窗口的设计
数据窗口对象是PowerBuilder编程的精华所在,建立数据窗口对象是程序设计中极为重要的一个部分。针对不同的情况选择不同类型的数据窗口对象,会使程序的实用性和直观性大为增强。在本应用程序中,完全采用数据窗口来实现读取数据库中的数据、修改数据库中的数据、排序等功能。
下面详细讲述本系统中典型的一个数据窗口对象。其他的数据窗口对象由于方法相似,在这里不作详细讲述。
1.d_client数据窗口的创建
打开“new”对话框,然后在DataWindow标签页选择数据窗口对象的显示风格,在这里选择Grid(网格)显示方式。
单击“ok”按钮启动数据窗口对象向导。选择SQLSelect数据源,然后打单击“next”按钮,出现SQL Select窗口。在左上方的表格列表中双击要连接的表。
选中该表格后,在列表框中列出了选中表客户信息表的各个列。单击要选中的多个列,单击“ok”按钮,出现“Select Color and Border setting”对话框。
在其中选择数据窗口的背景颜色、文字颜色和边框外观。单击“next”按钮,“Ready to Create Grid Datawindow”对话框。
在其中显示当前数据窗口对象的属性。单击其上的“Finish”按钮。在其中设置页眉区和细节区的属性。在数据库表中各个列的列名使用英文表示的在列标题显示的时候我们将它们设置为中文。:
通过上面的操作步骤,一个完整“Grid”风格的数据窗口对象就创建完毕。应用程序中窗口上的数据窗口控件可以连接和使用这个创建好的数据窗口对象。
第四章 系统操作简介及运行
系统维护与评价阶段是系统生命周期中的最后一个阶段,也是时间最长的一个重要阶段,就像汽车的维护工作好可以延长汽车的使用寿命和提高其使用效率一样,经一段时间的运行后,要对系统目标与功能的实现情况进行检查,并与系统开发中设立的系统预期目标进行对比,及时写出系统评价报告,系统维护工作的好坏可以决定系统的生命周期的长短和使用效果。
4.1系统的运行
至此已经完成企业管理系统程序的编制。运行该程序,出现用户登录对话框,如图所示。
图4-1系统登录窗口
输入正确的用户名和口令,按“确定”按钮后进入程序的主界面,在菜单或在工具栏中选中“物品管理”进入 物品管理窗口。
在本窗口中,tab_1控件中不同的页中实现了浏览、查询、添加、修改与删除功能。选中“查询”
页,在文本框中输入物品名称,单击“查询”按钮,相关的信息显示在数据窗口中。如图
图4-2物品管理窗口
在物品窗口中,单击“修改与删除”分页,我们输入物品先查到我们所要处理的物品,然后在数据窗口可以进行修改,按“确定”按钮用来保存
按“删除”按钮可对数据窗口信息直接删除。如图所示:
图4-3物品管理主窗口
在主窗口中,选中“节目管理”进入节目管理窗口,选择“添加”分页,在数据窗口中按要求输入信息后,按“确定”按钮用来保存。如图所示:
图4-4节目管理窗口
在主窗口中,选中“客户信息管理”进入客户信息管理窗口,选择“客户订购信息浏览”分页后,在数据窗口中显示客户物品、节目信息。如图所示:
图4-5客户信息管理窗口
在主窗口中,选中“客户订购信息查询”进入客户订购信息查询窗口,按不同的要求进行查询,选择“按物品查询”分页,输入物品,单击“查询”按钮,定购本物品的客户显示在数据窗口中。
如图所示:
图4-6客户订购信息查询
在主窗口中,选中“客户数据录入”进入客户数据录入窗口,选择“客户信息录入”,按要求输入客户信息,点击“确定”按钮保存。如图所示:
图4-7客户数据录入窗口
4.2系统的编译
完成了企业管理信息系统的编程和调试工作,最后一步就是该系统的编译和发行。这涉及到工程项目属性的设置、可执行应用程序的生成。
这涉及到工程对象的创建、可执行应用程序的生成以及发布环境的配置等多方面的问题。一个系统是否开发成功,归根结底是要看用户对系统的使用是否满意。本系统是一个数据库应用系统,需要涉及到涉及数据库环境配置等问题。因此,需要将系统应用程序编译成可执行的文件,将应用所需要的环境发布出去,这样既可以减少应用程序的大小,又可以提高应用程序的运行速度。
1.创建工程对象
单击工具条的“new”图标,打开“new”对话框。在该对话框中选择“project”标签页。选择“ApplicationWizard”图标。
单击“ok”按钮,出现一个向导说明窗口。单击其上的“next”按钮,在对话框中,指定库文件名。在后面出现的对话框中分别指定生成的工程应用的名称、可执行文件名和资源文件名。
在指定完毕,单击“Finish”按钮,生成一个工程对象。
2.编译生成和测试
编译的步骤如下:1.PowerBuilder的环境下,打开该工程对象。
2.单击工程画笔工具栏上的Build图标进行工程的编译。PowerBuilder将会弹出一个窗口,显示编译的工程信息。单击该窗口上的“Stop”按钮终止编译过程。编译完成后,即生成了相应的可执行文件和动态文件。
编译通过后,生成可执行文件Enterprise.exe。在发布前还要对生成的可执行文件进行测试,测试的步骤如下:
1. 离开PowerBuilder开发环境,返回到操作系统环境下。
2. 将编译好的文件拷贝到PowerBuilder库文件放置的路径下。
3. 运行可执行文件。
通过上面测试的可执行文件,就可以进行发布了。考虑到最终用户使用机器的复杂性,还需要发布PowerBuilder的环境文件以及数据库运行的客户端软件。
致 谢
在本次毕业设计中,我的导师是××老师,我从××老师身上学到了很多东西。××老师认真负责的工作态度,严谨的治学精神都使我受益非浅。××老师无论在理论上还是在实践中都给了我很大的帮助,使我的综合技能有了很大的提高。××老师耐心细致的辅导,不仅仅教给了我所学习的专业技术方面的知识,更多的教会了我独立思考,分析问题解决问题的方法,拓宽了我的思维方式。这对于我以后的工作和学习都是一种莫大的帮助,非常感谢××老师。
限于作者能力有限,在系统开发及论文的撰写过程中错误也在所难免,还请各位读者,指导老师提出宝贵的意见,作者将万分感谢!
参考文献
【1】 郑阿奇,《PowerBuilder》,电子工业出版社,2001年。
【2】 薛华诚,《 管理信息系统》,清华大学出版社,1993年。
【3】 黄梯云,《管理信息系统导论》,机械工业出版社,1995年。
【4】 王珊、萨师煊,《数据库系统概论》,高等教育出版社,1990年。
【5】 刘鲁,《信息系统设计原理与引用》,北京航空航天大学出版社,1995。
毕业设计小结
经过半年的设计和开发,一个完整的企业信息管理系统已创建完毕了。此系统的功能基本符合用户的需求,完成了物品管理的浏览、查询、增加、修改与删除,节目管理的浏览、查询、增加、修改与删除。客户信息管理的一般信息查询、订购信息浏览,客户订购查询按物品查询、按节目查询客户的信息以及客户数据的录入,但由于设计经验较少,所以该系统还有许多不尽人意之处,如:用户界面不够美观,功能设计不够完善,人机交互不够便敏等,这些都有待进一步改善。
下面是对本文内容的简要回顾,以及通过对该系统的开发,本人的一些心得体会。
第一章“绪论”介绍了管理信息系统的发展与应用,管理信息系统的特点及管理信息系统的开发方法与开发过程。并且简单介绍了软件开发工具Powerbuilder功能和优势。
MIS 之所以能够得到广泛的应用,主要是由于其对复杂信息强大的管理功能,能够辅助用户管理实时数据或历史数据,甚至可以产生新数据,或从大量的数据中做出统计,也可以根据用户的需求做各种类型的查询,大大方便了用户的管理工作。但是,正是这些 MIS 所应具备的功能,造成了 MIS 设计开发的困难。MIS 的管理对象往往是某一领域中大量的信息,这就要求开发人员首先必须充分调研,仔细了解用户工作的方方面面,熟悉用户的工作领域,并通过与用户的交流,分析用户提出的各种要求,结合系统开发的可行性,剔除掉用户的不可实现的需求,最后确定系统应向用户提供的功能,并以这些需求为约束来规划应用程序的开发。
第二章“需求分析”通过对系统的详细调查,针对系统的现状以及系统现存的问题提出了系统的设计目标及设计原则。通过对系统组织机构的分析,业务流程和数据流程的分析,相应画出了组织机构图,系统业务流程图和数据流程图。
需求分析是 MIS 设计的第一步,也是 MIS 设计过程中最关键、最困难的一步,需求做得不好,会使后继工作大量返工,甚至造成整个系统的不可用。可见需求分析的重要性。因此,要投入充足的时间来做需求分析。
第三章“系统设计”论述了概要设计的方法。按照此方法,在需求分析的基础上,先设计出满足用户需求的各种实体,画出各实体的E-R图,然后绘制出实体之间的关系并对其优化,以及做出界面设计。
第四章“系统的编辑与发行”是本文的重点展示了系统的运行效果。它包括数据库结构的设计实现;登录窗口的设计实现;主界面的设计实现;设备代码管理模块等各功能模块的设计。
附 录
1.物品窗口的代码。
//浏览选项页初始化
tab_thing.tabpage_browse.dw_browse.setTransObject(SQLCA)
tab_thing.tabpage_browse.dw_browse.retrieve()
//查询选项页初始化
tab_thing.tabpage_query.dw_query.reset()
tab_thing.tabpage_query.sle_query.text=""
tab_thing.tabpage_query.sle_query.setfocus()
//添加选项页初始化
tab_thing.tabpage_append.dw_append.setTransObject(SQLCA)
tab_thing.tabpage_append.dw_append.reset()
tab_thing.tabpage_append.dw_append.insertrow(0)
tab_thing.tabpage_append.dw_append.setfocus()
//修改与删除选项页初始化
tab_thing.tabpage_updatedelete.dw_updatedelete.setTransObject(SQLCA)
tab_thing.tabpage_updatedelete.dw_updatedelete.reset()
tab_thing.tabpage_updatedelete.sle_updatedelete.text=""
tab_thing.tabpage_updatedelete.sle_updatedelete.setfocus()
tab_thing.tabpage_updatedelete.cb_update.enabled=false
tab_thing.tabpage_updatedelete.cb_delete.enabled=false
tab_thing.tabpage_updatedelete.cb_reset1.enabled=false
选择选项页进行初始化
//浏览选项页初始化
tab_thing.tabpage_browse.dw_browse.setTransObject(SQLCA)
tab_thing.tabpage_browse.dw_browse.retrieve()
//查询选项页初始化
tab_thing.tabpage_query.dw_query.reset()
tab_thing.tabpage_query.sle_query.text=""
tab_thing.tabpage_query.sle_query.setfocus()
//添加选项页初始化
tab_thing.tabpage_append.dw_append.setTransObject(SQLCA)
tab_thing.tabpage_append.dw_append.reset()
tab_thing.tabpage_append.dw_append.insertrow(0)
tab_thing.tabpage_append.dw_append.setfocus()
//修改与删除选项页初始化
tab_thing.tabpage_updatedelete.dw_updatedelete.setTransObject(SQLCA)
tab_thing.tabpage_updatedelete.dw_updatedelete.reset()
tab_thing.tabpage_updatedelete.st_label2.text=""
tab_thing.tabpage_updatedelete.sle_updatedelete.text=""
tab_thing.tabpage_updatedelete.sle_updatedelete.setfocus()
tab_thing.tabpage_updatedelete.cb_update.enabled=false
tab_thing.tabpage_updatedelete.cb_delete.enabled=false
tab_thing.tabpage_updatedelete.cb_reset1.enabled=false
//
“查询 ”按钮click事件代码 :
string str_query //接受去空格后字符串
int int_retrieve //接受数据检索返回值
//去空格
str_query=trim(tab_thing.tabpage_query.sle_query.text)
//进行模糊查询
str_query="%"+str_query+"%"
if str_query=""or isnull(str_query) then//判断是否为空
messagebox("提示","请输入数据!")
tab_thing.tabpage_query.sle_query.text=""
tab_thing.tabpage_query.sle_query.setfocus()
return
end if
tab_thing.tabpage_query.dw_query.setTransObject(SQLCA)
int_retrieve=tab_thing.tabpage_query.dw_query.retrieve(str_query)
if int_retrieve=0 then//判断是否检索到数据
messagebox("提示","本库没有该数据!")
tab_thing.tabpage_query.sle_query.text=""
tab_thing.tabpage_query.sle_query.setfocus()
return
end if
添加页 “确定”按钮click事件代码:
string str_thing //接受编辑控件的文本变量
str_thing=tab_thing.tabpage_append.dw_append.gettext() //接受文本
if str_thing=""or isnull(str_thing) then//判断是否为空
messagebox("提示","请输入客户名!")
return
end if
if tab_thing.tabpage_append.dw_append.update()=1 then//判断添加是否符合要求
commit using sqlca;
Messagebox("提示","添加成功!")
tab_thing.tabpage_append.dw_append.reset()
tab_thing.tabpage_append.dw_append.insertrow(0)//添加
tab_thing.tabpage_append.dw_append.setfocus()
else
rollback using sqlca;
end if
修改页“确定”按钮click事件代码:
if tab_thing.tabpage_updatedelete.dw_updatedelete.update()=1 then
commit using sqlca;
Messagebox("修改","修改成功!")
tab_thing.tabpage_updatedelete.sle_updatedelete.text=""
tab_thing.tabpage_updatedelete.sle_updatedelete.setfocus()
else
rollback using sqlca;
end if
“修改 ”按钮click事件代码 :
int ret
tab_thing.tabpage_updatedelete.dw_updatedelete.deleterow(0)
ret=messagebox("提示","确定删除吗?",question!,yesno!,2)
if ret=1 then
tab_thing.tabpage_updatedelete.dw_updatedelete.update()
commit using sqlca;
Messagebox("删除","删除成功!")
tab_thing.tabpage_updatedelete.st_label2.text=""
tab_thing.tabpage_updatedelete.dw_updatedelete.reset()
tab_thing.tabpage_updatedelete.sle_updatedelete.text=""
tab_thing.tabpage_updatedelete.sle_updatedelete.setfocus()
tab_thing.tabpage_updatedelete.cb_update.enabled=false
tab_thing.tabpage_updatedelete.cb_delete.enabled=false
tab_thing.tabpage_updatedelete.cb_reset1.enabled=false
else
if ret=2 then
return
end if
end if
客户订购信息查询代码:
//声请变量
string ls_client
string str_client
//声明游标
declare thing_cursor cursor for
SELECT 客户表.client FROM 客户表;
tab_1.tabpage_1.ddlb_name_1.reset()
//打开游标
open thing_cursor;
//赋值给下拉列表框
fetch thing_cursor into :ls_client;
do while sqlca.sqlcode=0
tab_1.tabpage_1.ddlb_name_1.additem(ls_client)
fetch thing_cursor into :ls_client;
loop
//关闭游标
close thing_cursor;
2.客户信息查询窗口的代码:
//按客户名查询
string str_client
int ret
str_client=trim(tab_1.tabpage_1.ddlb_name_1.text)
if str_client="" then
messagebox("提示","请输入数据!")
return
end if
tab_1.tabpage_1.dw_1.setTransObject(SQLCA)
ret=tab_1.tabpage_1.dw_1.retrieve(str_client)
tab_1.tabpage_1.dw_4.setTransObject(SQLCA)
ret=tab_1.tabpage_1.dw_4.retrieve(str_client)
按物品名查询代码:
string str_client
int ret
str_client=trim(tab_1.tabpage_2.sle_2.text)
if str_client="" then
messagebox("提示","请输入数据!")
tab_1.tabpage_2.sle_2.setfocus()
return
end if
tab_1.tabpage_2.dw_2.setTransObject(SQLCA)
ret=tab_1.tabpage_2.dw_2.retrieve(str_client)
if ret=0 then
messagebox("提示","本库没有该数据!")
tab_1.tabpage_2.sle_2.text=""
tab_1.tabpage_2.sle_2.setfocus()
end if
//按节目名查询代码:
string str_client
int ret
str_client=trim(tab_1.tabpage_3.sle_3.text)
if str_client="" then
messagebox("提示","请输入数据!")
tab_1.tabpage_3.sle_3.setfocus()
return
end if
tab_1.tabpage_3.dw_3.setTransObject(SQLCA)
ret=tab_1.tabpage_3.dw_3.retrieve(str_client)
if ret=0 then
messagebox("提示","本库没有该数据!")
tab_1.tabpage_3.sle_3.text=""
tab_1.tabpage_3.sle_3.setfocus()
end if
//添加客户信息代码:
string client_name,client_telephone1,client_telephone2
string client_connector,client_address,client_memo,str_name
date client_date
//检验
if tab_input.tabpage_client.sle_name.text=""or isnull(tab_input.tabpage_client.sle_name.text)then
messagebox("提示","请输入客户名!")
tab_input.tabpage_client.sle_name.setfocus()
return
end if
client_name=trim(tab_input.tabpage_client.sle_name.text)
if tab_input.tabpage_client.sle_date.text<>" "ornot isnull(tab_input.tabpage_client.sle_date.text)then
if isDate(trim(tab_input.tabpage_client.sle_date.text)) then
client_date=date(tab_input.tabpage_client.sle_date.text)
else
messagebox("提示","请使用“年/月/日”的日期格式")
tab_input.tabpage_client.sle_name.setfocus()
return
end if
end if
//检查客户有没有重复
select 客户表.client into :str_name from 客户表 where 客户表.client=:client_name;
if str_name<>"" then
messagebox("提示","重名,请重新输入!")
tab_input.tabpage_client.sle_name.setfocus()
return
end if
client_telephone1=trim(tab_input.tabpage_client.sle_telephone1.text)
client_telephone2=trim(tab_input.tabpage_client.sle_telephone2.text)
client_connector=trim(tab_input.tabpage_client.sle_connector.text)
client_address=trim(tab_input.tabpage_client.sle_address.text)
client_memo=trim(tab_input.tabpage_client.sle_memo.text)
//向数据库写入数据
insert into "客户表"("client","telephone1","telephone2","connector","address","date1","memo")
values(:client_name,:client_telephone1,:client_telephone2,:client_connector,:client_address,:client_date,:client_memo);
messagebox("提示","保存成功!")
tab_input.tabpage_client.sle_name.text=""
tab_input.tabpage_client.sle_telephone1.text=""
tab_input.tabpage_client.sle_telephone2.text=""
tab_input.tabpage_client.sle_connector.text=""
tab_input.tabpage_client.sle_address.text=""
tab_input.tabpage_client.sle_date.text=""
tab_input.tabpage_client.sle_memo.text=""
3.客户数据录入窗口的代码
//添加客户物品信息
//声请变量
string ls_client
string str_client
//声明游标
// str_client=trim(w_input.tab_input.tabpage_thing.ddlb_name_1.text)
declare thing_cursor cursor for
SELECT 客户表.client FROM 客户表;
w_input.tab_input.tabpage_thing.ddlb_name_1.reset()
w_input.tab_input.tabpage_program.ddlb_name_2.reset()
//打开游标
open thing_cursor;
//赋值给下拉列表框
fetch thing_cursor into :ls_client;
do while sqlca.sqlcode=0
w_input.tab_input.tabpage_thing.ddlb_name_1.additem(ls_client)
w_input.tab_input.tabpage_program.ddlb_name_2.additem(ls_client)
fetch thing_cursor into :ls_client;
loop
//关闭游标
close thing_cursor;
//添加客户节目信息
string client_program,client_name_2,client_grade,ls_program,ls_name
int ret,client_count
if tab_input.tabpage_program.sle_program.text=""or isnull(tab_input.tabpage_program.sle_program.text)then
messagebox("提示","请输入节目名!")
tab_input.tabpage_program.sle_program.setfocus()
return
end if
client_program=trim(tab_input.tabpage_program.sle_program.text)
client_name_2=trim(tab_input.tabpage_program.ddlb_name_2.text)
client_count=integer(trim(tab_input.tabpage_program.sle_count.text))
client_grade=trim(tab_input.tabpage_program.ddlb_grade.text)
//检验有没有重复
select 客户节目表.program
into :ls_name,:ls_program
from 客户节目表
where 客户节目表.client=:client_name_2 and 客户节目表.program=:client_program;
if ls_program<>"" then
messagebox("提示","重复,请重新输入!")
return
end if
insert into "客户节目表"
("client","program","count1","grade")
values (:client_name_2,:client_program,:client_count,:client_grade);
ret=messagebox("提示","确定保存吗?",question!,yesno!,2)
if ret=1 then
Messagebox("保存","保存成功!")
else
if ret=2 then
return
end if
end if
tab_input.tabpage_program.sle_program.text=""
tab_input.tabpage_program.sle_count.text=""
posted on 2007-06-24 22:45
星梦情缘 阅读(22978)
评论(76) 编辑 收藏 引用