信息是管理上的一項極為重要的資源,管理工作的成敗取決于能否做出有效的決策,而決策的正確程度則在很大程度上取決于信息得質量。所以能否有效的管理信息成為企業的首要問題,管理信息系統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
星夢情緣 閱讀(23002)
評論(76) 編輯 收藏 引用