




已閱讀5頁,還剩91頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 本文配套程序下載地址 : 無憂無慮畢設(shè)網(wǎng) ()-大學(xué)生畢業(yè)設(shè)計站 ,免費畢業(yè)設(shè)計論文 ,無憂無慮畢設(shè)網(wǎng) 大學(xué)生畢業(yè)設(shè)計 ,出售各類畢業(yè)設(shè)計源碼 ,論文 ,程序源碼 ,網(wǎng)站源碼 ,免費視頻教程 ,我們將竭誠為您服務(wù)! 商 品 交 易 管 理 系 統(tǒng) 【 摘要 】 本文簡要介紹了 本商品管理系統(tǒng) 的開發(fā)情況 ,基本設(shè)計思想、系統(tǒng)開發(fā)環(huán)境及目前的應(yīng)用情況。 關(guān)鍵詞 訂單 代理商 銷售查詢 備份 目 錄 : 第一章 引言 第二章 數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)簡介 2.1 數(shù)據(jù)庫 2.2 數(shù)據(jù)庫管理系統(tǒng) 2.3 創(chuàng)建數(shù)據(jù)庫 第三章 應(yīng)用系 統(tǒng)開發(fā)工具 3.1 DELPHI簡介 3.2 DELPHI數(shù)據(jù)庫訪問方法與數(shù)據(jù)庫組件介紹 第四章 商品銷售管理系統(tǒng)目標(biāo)分析 4.1 任務(wù)分析 4.2 系統(tǒng)目標(biāo) 第五章 商品銷售管理系統(tǒng)的數(shù)據(jù)庫設(shè)計 5.1 常見應(yīng)用程序數(shù)據(jù)表 5.2 DELPHI中的數(shù)據(jù)文件路徑管理 第六章 試題庫系統(tǒng)應(yīng)用程序界面設(shè)計 6.1 用戶登錄窗體 6.2 主窗體 6.3 系統(tǒng)設(shè)置窗體 6.4 權(quán)限管理窗體 6.5 操作員信息設(shè)置窗體 6.6 代理商進 /退貨錄入窗口 6.7 訂單進貨數(shù)據(jù)錄入窗口 6.8 代理商銷售數(shù)據(jù)查詢窗口 6.9 商品分布查詢窗口 第七章 結(jié)束語 致謝 主要參考文獻 附錄程序清單及注釋 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 一 引 言 隨著大學(xué)教學(xué)改革進一步的深入和大學(xué)本科課程建設(shè)的逐步完善,對學(xué)生掌握每一課程內(nèi)容程度的考試必須規(guī)范化,系統(tǒng)化,科學(xué)化,現(xiàn)代化;教學(xué)管理必須現(xiàn)代化、規(guī)范化。我們知道,傳統(tǒng)的出試卷方法是由教師個人組卷,這樣往往造成試題難度和知識覆蓋面難以把握,不能達(dá) 到對學(xué)生的科學(xué)而又全面的考核。針對這一情況,我們研制了計算機類學(xué)科試題庫與自動組卷系統(tǒng)。一方面,自動組卷系統(tǒng)避免了手工出試卷造成的試卷不規(guī)范,不易集中管理;另一方面,避免教師每次考試時手工組卷及平時為學(xué)生組織練習(xí)時的重復(fù)勞動,將教師從簡單、重復(fù)的環(huán)節(jié)中解脫出來,以更多的精力投入到教學(xué)與科研中去。 高校教務(wù)管理工作中一項非常重要的工作就是考試管理工作,每學(xué)期各專業(yè)考試,從組織出卷到試卷的印制及試卷的管理等工作非常繁瑣且工作量很大,這種組織管理方式不僅工作任務(wù)繁重而且試卷的標(biāo)準(zhǔn)化程度、難易程度、題量大小等各方面 難以控制,難以形成有效的試題庫,不利于充分發(fā)揮歷年來的優(yōu)秀試題及試卷的作用,給試題和試卷的管理帶來很多問題和困難。鑒于這種情況,利用計算機進行試卷的自動生成并逐步積累形成有效的試題庫,對試題和試卷的管理將變的高效而便捷,對提高工作效率,使試卷管理逐步走向正規(guī)化自動化將起到十分重要的作用。 在試題庫的制作方面,通過自動組卷系統(tǒng)對每次考試的實現(xiàn),可以不斷地對試題庫的內(nèi)容進行完善。在每一次組卷時,可以進一步對每題的內(nèi)容進行分析,發(fā)現(xiàn)細(xì)微的問題,對試題庫的內(nèi)容作進一步地修改。這樣避免了傳統(tǒng)出試卷時,考試一次結(jié)束一次 的缺點。由于試題庫的建設(shè)具有繼承性,規(guī)范性,可以不斷積累考試經(jīng)驗,豐富試題庫的內(nèi)容。 二 數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)簡介 在數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)之前,對開發(fā)數(shù)據(jù)庫的基本概念應(yīng)當(dāng)了解,對數(shù)據(jù)庫的結(jié)構(gòu)、開發(fā)數(shù)據(jù)庫應(yīng)用程序的步驟、開發(fā)體系及方法都應(yīng)當(dāng)有相當(dāng)清晰的了解和認(rèn)識。 數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)的目標(biāo)是建立一個滿足用戶長期需求的產(chǎn)品。開發(fā)的主要過程為:理解用戶的需求,然后,把它們轉(zhuǎn)變?yōu)橛行У臄?shù)據(jù)庫設(shè)計。把設(shè)計轉(zhuǎn)變?yōu)閷嶋H的數(shù)據(jù)庫,并且這些數(shù)據(jù)庫帶有功能完備、高效能的應(yīng)用。 數(shù)據(jù)庫技術(shù)在計算機軟件鄰域研究中一直是 非常重要的主題,產(chǎn)生于 60 年代, 30 多年來數(shù)據(jù)庫技術(shù)得到了迅速發(fā)展,并已形成較為完整的理論體系和一大批實用系統(tǒng)。并且,近年來,隨著 World Wide Web(WWW)的猛增及 Internet 技術(shù)的迅速發(fā)展,使得數(shù)據(jù)庫技術(shù)之時成為最熱門技術(shù)之一。 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 2.1 數(shù)據(jù)庫 數(shù)據(jù)庫由 DBMS(數(shù)據(jù)庫管理系統(tǒng))處理, DBMS 則由開發(fā)人員和用戶通過應(yīng)用程序直接或間接地使用。它主要包括四個要素:用戶數(shù)據(jù)、元數(shù)據(jù)、索引和應(yīng)用元數(shù)據(jù)。 用戶數(shù)據(jù): 目前,大多數(shù)主流數(shù)據(jù)庫管理系統(tǒng)把用戶數(shù)據(jù)表示為關(guān)系。現(xiàn)在把關(guān)系看作數(shù)據(jù)表。表的 列包含域或?qū)傩裕淼男邪瑢?yīng)業(yè)務(wù)環(huán)境中的實體的記錄。并非所有的關(guān)系都同樣符合要求,有些關(guān)系比其它關(guān)系更結(jié)構(gòu)化一些。 元數(shù)據(jù): 數(shù)據(jù)庫是自描述的,這就意味著它自身包含了它的結(jié)構(gòu)的描述,這種結(jié)構(gòu)的描述稱作元數(shù)據(jù)。因為 DBMS產(chǎn)品是用來存儲和操縱表的,所以大多數(shù)產(chǎn)品把元數(shù)據(jù)以表的形式存儲,有時稱作系統(tǒng)表。這些系統(tǒng)表存儲了數(shù)據(jù)庫中表的情況,指出每一個表中有多少列,那一列是主關(guān)鍵字,每一列的數(shù)據(jù)類型的描述,它也存儲索引、關(guān)鍵字、規(guī)則和數(shù)據(jù)庫結(jié)構(gòu)的其他部分。在表中存儲元數(shù)據(jù)不僅對 DBMS是有效的,對用戶也是方便的,因 為他們可以使用與查詢用戶數(shù)據(jù)同樣的查詢工具來查詢元數(shù)據(jù)。本文介紹的 SQL 語言可以同時用于元數(shù)據(jù)和用戶數(shù)據(jù)。 應(yīng)用元數(shù)據(jù):存儲在數(shù)據(jù)庫中的第四種數(shù)據(jù)是應(yīng)用元數(shù)據(jù),它用來存儲用戶窗體、報表、查索引:第三種類型的數(shù)據(jù)改進了數(shù)據(jù)庫的性能和可訪問性,這種數(shù)據(jù)經(jīng)常稱作開銷數(shù)據(jù),盡管有時也采用其他類型的數(shù)據(jù)結(jié)構(gòu),如鏈表,但它主要還是索引。索引可以用來排序和快速訪問數(shù)據(jù)。 查詢和其他形式的查詢組件。并非所有的 DBMS 都支持應(yīng)用組件,支持組件的 DBMS 也不一定把全部組件的結(jié)構(gòu)作為應(yīng)用元數(shù)據(jù)存儲在數(shù)據(jù)庫中。然而,大多數(shù)現(xiàn)代的 DBMS產(chǎn)品存儲這種數(shù)據(jù)作為數(shù)據(jù)庫的一部分。一般來說,數(shù)據(jù)庫開發(fā)人員和用戶都不直接訪問應(yīng)用元數(shù)據(jù),想反,他們通過 DBMS 中的工具來處理這些數(shù)據(jù)。 2.2 數(shù)據(jù)庫管理系統(tǒng) 數(shù)據(jù)庫管理系統(tǒng)( DBMS)是指數(shù)據(jù)庫系統(tǒng)中管理數(shù)據(jù)的軟件系統(tǒng)。 DBMS 是數(shù)據(jù)庫系統(tǒng)的核心組成部分。對數(shù)據(jù)庫的一切操作,包括定義、更新及各種控制 ,都是通過 DBMS 進行的。DBMS總是基于某種數(shù)據(jù)模型,可以把 DBMS看成是某種數(shù)據(jù)模型在計算機系統(tǒng)上的具體實現(xiàn)。根據(jù)數(shù)據(jù)模型的不同, DBMS可以分成層次型、網(wǎng)狀型、關(guān)系型、面向?qū)ο笮偷取?Access 2000就是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。 DBMS的特點和功能可以分為三個子系統(tǒng):設(shè)計工具子系統(tǒng)、運行子系統(tǒng)和 DBMS引擎。 設(shè)計子系統(tǒng)有一個方便數(shù)據(jù)庫及其應(yīng)用創(chuàng)建的工具集。它典型地包含產(chǎn)生表、窗體、查詢和報表的工具。 DBMS產(chǎn)品還提供編程語言和對編程語言的接口 ;運行子系統(tǒng)處理用設(shè)計子系統(tǒng)開發(fā)的應(yīng)用組件。它所包含的運行處理器用來處理窗體和數(shù)據(jù)庫的數(shù)據(jù)交互,以及回答查詢和打印報表等 ;DBMS引擎從其他兩個組件接受請求,并把它們翻譯成對操作系統(tǒng)的命令,以便讀寫物理介質(zhì)上的數(shù)據(jù)。 DBMS引擎還涉及事務(wù) 管理、鎖、備份和恢復(fù)。 2.3 創(chuàng)建數(shù)據(jù)庫 數(shù)據(jù)庫模式 : 數(shù)據(jù)庫模式定義了數(shù)據(jù)庫的結(jié)構(gòu)、表、關(guān)系、域和業(yè)務(wù)規(guī)則。數(shù)據(jù)庫模式是一種設(shè)計,數(shù)據(jù)庫和應(yīng)用正是建立在此基礎(chǔ)上的。 數(shù)據(jù)庫設(shè)計主要是進行數(shù)據(jù)庫的邏輯設(shè)計,即將數(shù)據(jù)按一定的分類、分組系統(tǒng)和邏輯層次組織起來,是面向用戶的。數(shù)據(jù)庫設(shè)計時需要綜合企業(yè)各個部門的存檔數(shù)據(jù)和數(shù)據(jù)需求,分析各個數(shù)據(jù)之間的關(guān)系,按照 DBMS提供的功能和描述工具,設(shè)計出規(guī)模適當(dāng)、正確反映數(shù)據(jù)關(guān)系、數(shù)據(jù)冗余少、存取效率高、能滿足多種查詢要求的數(shù)據(jù)模型。 數(shù)據(jù)庫中的關(guān)系表是二維的,它有如下 四個性質(zhì): 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: l 在表中的任意一列上,數(shù)據(jù)項應(yīng)屬于同一個屬性 (如圖中每一列都存放著不同記錄的同一屬性數(shù)據(jù) )。 2 表中所有行都是不相同的,不允許有重復(fù)組項出現(xiàn) (如圖中每一行都是一個不同的記錄 )。 3 在表中,行的順序無關(guān)緊要 (如圖中每行存的都是記錄,至于先放哪一個都沒關(guān)系 )。 4 在表中,列的順序無關(guān)緊要,但不能重復(fù) 為防止數(shù)據(jù)庫出現(xiàn)更新異常、插入異常、刪除異常、數(shù)據(jù)冗余太大等現(xiàn)象,關(guān)系型數(shù)據(jù)庫要盡量按關(guān)系規(guī)范化要求進行數(shù)據(jù)庫設(shè)計。 三 應(yīng)用系統(tǒng)開發(fā)工具 3.1 Delphi 簡介 Delphi 是一個極有代表性的面向?qū)ο箝_發(fā)工具;它將面向?qū)ο蟮某绦蛟O(shè)計方法與數(shù)據(jù)庫技術(shù);網(wǎng)絡(luò)技術(shù)以及可視化;事件驅(qū)動,代碼自動生成等先進技術(shù)完美的結(jié)合在一起,使用它可以直觀的,快速地開發(fā),高質(zhì)量的 windows 應(yīng)用程序。 Delphi 強大的易用的特點得到程序員的青睞。 Delphi7.0除了保留以前版本的強大功能之處,更在數(shù)據(jù)庫程序開發(fā)方面提供了強有力的支持,使程序員完全可能輕松開發(fā)出復(fù)雜且功能強大的數(shù)據(jù)庫程序。 Delphi 類可以粗略地分成兩部分:一部分是組件類,這些組件類通常以某種方式出現(xiàn)在組件面板上,當(dāng)用戶從組 件面板上點取一個類的圖標(biāo)后,在程序中就自動生成了該類的對象(非可視組件除外);另一部分是功能類,這此功能類的對象通常出現(xiàn)在程序代碼中,起著不可代替的作用,但是這些功能類在組件面板上是找不到的。在 Delphi中,每一個類的祖先都是 Tobject類 ,整個類的層次結(jié)構(gòu)就像一棵倒掛的樹,在最頂層的樹根即為 Tobject 類。這樣,按照面向?qū)ο缶幊痰幕舅枷?,就使得用戶可?Tobject 類這個類型代替任何其它類的數(shù)據(jù)類型。 3.2 Delphi 數(shù)據(jù)庫訪問方法與數(shù)據(jù)庫組件介紹 3.2.1數(shù)據(jù)庫訪問方法 1. BDE 方法:它提 供了存取各種文型和客戶 /服務(wù)器型數(shù)據(jù)庫的驅(qū)動器程序。該方法直接訪問 Paradox 和 Dbase 等數(shù)據(jù)庫或通過 DOBC( Open DataBase connecivity,開放數(shù)據(jù)庫)來訪問 Access 和 PoxPro 等數(shù)據(jù)庫,還可通過內(nèi)嵌方式訪問 SQL Servr、 Oracle 和 DB2 等大型數(shù)據(jù)庫。 2. ADO 方法: ADO 方法是微軟提供的一種數(shù)據(jù)庫訪問技術(shù)。通過 ADO 技術(shù)可方便的訪問各種類型的數(shù)據(jù)庫,尤其對于 OLEDB 類型的數(shù)據(jù)庫, ADO 更是訪問數(shù)據(jù)庫的標(biāo)準(zhǔn)接口。Delphi 通過 ADO 技術(shù)可讓開發(fā)者快速訪問關(guān)系或非 關(guān)系型數(shù)據(jù)庫,但使用時需安裝 ADO 的數(shù)據(jù)庫引擎。 3. MIDAS 方法: MIDAS 方法是 Delphi 用于開發(fā)多層應(yīng)用系統(tǒng)的中間透明引擎。通過MIDAS,開發(fā)者可使用相同的組件來存取不同的后臺應(yīng)用程序服務(wù)器。這些后臺應(yīng)用服務(wù)器程序包括 COM+/DCOM 應(yīng)用程序服務(wù)器、 MTS中間件或 CORBA應(yīng)用程序服務(wù)器。 MIDAS方法實現(xiàn)了真正意義上的客戶端程序與后臺數(shù)據(jù)庫的分離,但 MIDAS的靈活性很差,與數(shù)據(jù)感應(yīng)控件關(guān)聯(lián)過于密切,限制了程序員的創(chuàng)造性。 4. dbExpress 方法: Delphi 6.0提供了新一代的跨平臺數(shù)據(jù)訪 問引擎 dbExpress方法,它由一組新控件、技術(shù)和驅(qū)動程序組成,并通過這些組成部分和各種數(shù)據(jù)源連鏈接。如配合無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 不同的數(shù)據(jù)庫動態(tài)鏈接庫文件,還可處理后臺數(shù)據(jù)庫數(shù)據(jù)。因此也是 Delphi 和 Kylix 的核心數(shù)據(jù)訪問。 綜上所述,雖然 Delphi 的各個版本提供多種數(shù)據(jù)庫的連接和訪問方法,但在同一個應(yīng)用程序中,開發(fā)者幾乎不可能同時選用多種連接方法,因而選擇合適方法是一個必須在開發(fā)前仔細(xì)考慮的問題。 3.2.2數(shù)據(jù)庫組件 用 Delphi6.0開發(fā)數(shù)據(jù)庫應(yīng)用,重點是和各種數(shù)據(jù)庫組件打交道,控件組有: BDE控件組、 ADO 控件組、 Date Controls 控件組和 dbExpress 控件組。 1ADO 是 Micrsoft 公司關(guān)于各種類型數(shù)據(jù)的高等界面,后來逐漸演變成滿足所有數(shù)據(jù)訪問需要的完整解決辦法。 ADO的對象模型是所有數(shù)據(jù)訪問接口對象模型中最簡單的一種。它主要控件有: TTADOConnection控件, TADOCommand控件, ADODateSet控件, TADOTable 控件, TADOQuery控件, TADOStoeProc控件。 Delphi 的 ADO 組件無需依靠 BDE 而是使用 ADO 技術(shù),提供了可以通過數(shù)據(jù)控制組件訪問數(shù)據(jù)的新 方法。唯一的要求是在使用 ADO組件時必須運行 ADO/OLE DB。 ADO組件的使用使得 DELPHI在訪問數(shù)據(jù)的類型和采用的技術(shù)方面都有了很大的突破 四 商品銷售管理系統(tǒng)目標(biāo)分析 4.1:任務(wù)分析 : 由于商品銷售管理系統(tǒng)是一個用來幫助使用者管理商品銷售流程的軟件。使用者通過對銷售過程中所涉及到的商品,訂單,銷售商等資料的錄入,便可以輕松實現(xiàn)商品銷售流程的管理。所以,此系統(tǒng)必須向使用者提供一下一些具體功能:。 1:軟件必須向使用者提供商品基本的錄入,刪除,編輯等基本功能 2:鑒于商品的不 同銷售方式(分為訂單銷售和代理商銷售兩種形式),軟件必須向使用者提供商品銷售環(huán)節(jié)中的基本管理功能,因此必須有訂單分銷模塊和代理商分銷模塊。 3:軟件必須向使用者提供基本的查詢功。 4:由于是銷售管理軟件,所以系統(tǒng)安全性必須是要考慮的問題。因此,必須實現(xiàn)以下兩點: a:系統(tǒng)操作員機制。對系統(tǒng)的使用者,按等級開放管理權(quán)限,這樣可以在一定程度上保證數(shù)據(jù)庫系統(tǒng)的安全性,避免數(shù)據(jù)被泄漏,非法更改等。 B:銷售數(shù)據(jù)直接反映了一個銷售單位的盈虧狀況,鑒于銷售數(shù)據(jù)的重要性,所以必須對這些數(shù)據(jù)加以保護,在系統(tǒng)崩潰時或者誤操作 等情況下,可以對數(shù)據(jù)進行恢復(fù)。這就需要系統(tǒng)提供備份功能。 5 :對于銷售數(shù)據(jù)不能只存儲在計算機中,而是需要導(dǎo)出步驟,最后以印刷品的形式出現(xiàn)在使用者面前,該軟件設(shè)計的最終目的才能得以具體的實現(xiàn)。所以,打印功能是必不可少的系統(tǒng)功能之一。 經(jīng)過系統(tǒng)分析階段,得下圖: 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 4.2:系統(tǒng)目標(biāo) 本系統(tǒng)的目標(biāo)是 :使用者通過對基本銷售信息的錄入,即可方便直觀的實現(xiàn)對商品交易流程的管理,查詢,以及對已有信息的打印輸出等功能。本銷售系統(tǒng)定義 了兩種銷售模式: 1:訂單銷售。即銷售方通過訂單方式銷售的商品。 2:代理商銷售方式。(此功能略復(fù)雜,所以在實現(xiàn)的是時候必須對其提供錄入修改查詢等基本功能)。 除了上述基本功能外,系統(tǒng)還必須提供必要的附加功能: 1:數(shù)據(jù)備份功能。 2:密碼登陸功能。 3:操作員及相應(yīng)的權(quán)限管理功能。 訂單銷售 數(shù)據(jù)備份 密碼登陸 數(shù)據(jù)恢復(fù) 權(quán)限管理 訂單銷售錄入 訂單銷后查詢 代理商進 貨數(shù)據(jù)錄入 代理商銷售查詢 代理商進貨明細(xì) 代理商銷售 操 作 員信 息 管理 代 理 商信 息 管理 商品交易管理系統(tǒng) 銷售子系統(tǒng) 安全子系統(tǒng) 人員管理子系統(tǒng) 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 綜上所述,為實現(xiàn)上述系統(tǒng)目標(biāo),必須定義相應(yīng)功能的單元模塊,所以本系統(tǒng)的層次結(jié)構(gòu)如下圖所示: 五 商品銷售管理系統(tǒng)數(shù) 據(jù)庫 設(shè)計 5.1創(chuàng)建應(yīng)用程序數(shù)據(jù)表 在這個 商品銷售管理系統(tǒng)中我們設(shè)計了若干個 paradox類型的 table 表(代理商信息表 商品信息表 操作員信息表代理商銷售記錄訂單銷售記錄,系統(tǒng)信息表 ),每個表的具體字段內(nèi)容如下 : 1: depot(代理商信息表) 字段名 類型 長度 關(guān)鍵字 備注 NO + 是 排序用 ID A 20 代理商編號 NAME A 20 代理商姓名 TYPE A 20 代理商地址 MEMO A 200 代理商備注 2: Goods(商品信息表) 字段名 類型 長度 關(guān)鍵字 備注 文件 基本信息 業(yè)務(wù)查詢 數(shù)據(jù)備份 系統(tǒng)設(shè)置 數(shù)據(jù)恢復(fù) 權(quán)限管理 退出 操作員信息 代理商信息 商品信息 代理商進貨數(shù)據(jù)錄入 代理商退貨數(shù)據(jù)錄入 訂單銷售數(shù)據(jù)錄入 銷售管理 訂單進貨統(tǒng)計 代理商進貨查詢 代理商進貨明細(xì) 商品分布統(tǒng)計 商品交易管理系統(tǒng) 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: NO + 是 排序用 ID A 20 是 商品編號 NAME A 40 是 商品名稱 TYPE A 20 商品型號 UNIT A 6 單位 MEMO A 200 備注 3: sysuser(操作員信息表) 字段名 類型 長度 關(guān)鍵字 備注 NO + 是 排序用 ID A 20 操作員編號 NAME A 20 操作員姓名 SEX A 2 操作員性別 PASS A 20 操作員密碼 RIGHTS A 50 操作員權(quán)限 MEMO A 200 操作員備注 4: SysUserRights(權(quán)限表 ) 字段名 類型 長度 關(guān)鍵字 備注 NO + 是 排序用 ID A 20 權(quán)限編號 NAME A 20 權(quán)限名稱 RIGHTS A 20 權(quán)限開放程度 5: YWYData(訂單信息) 字段名 類型 長度 關(guān)鍵字 備注 No + 是 排序用 ID A 20 訂單編號 NAME A 20 所訂商品名稱 XH A 20 商品型號 SL A 200 訂貨數(shù)量 JFRQ A 20 交付日期 Memo A 200 訂單備注 6: stockrecord(代理商進貨表) 字段名 類型 長度 關(guān)鍵字 備注 No + 是 排序用 MYDATE A 10 購買日期 DEPOTID A 20 代理商編號 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: GOODSID A 20 商品編號 NUMBER S 進貨數(shù)量 ID A 20 進貨代號 PRICE N 價格 Memo A 200 備注 7: threcord(代理商退貨表) 字段名 類型 長度 關(guān)鍵字 備注 No + 是 排序用 MYDATE A 10 退貨日期 DEPOTID A 20 退貨代理商編號 GOODSID A 20 退貨商品編號 NUMBER S 退貨數(shù)量 ID A 20 退貨代號 PRICE N 退貨數(shù)額 Memo A 200 備注 8: JXCrecord(進銷存明細(xì)表) 字段名 類型 長度 關(guān)鍵字 備注 No + 是 排序用 JXC A 20 進銷存狀態(tài) MYDATE A 10 進銷存日期 GOODSID A 20 商品編號 NUMBER S 進貨數(shù)量 PRICE A 20 價格 Memo A 200 備注 5.1.1定義數(shù)據(jù)庫別名 為了方便對數(shù)據(jù)庫中文件進行管理,在創(chuàng)建數(shù)據(jù)庫之前,一般先要建立一個存放數(shù)據(jù)庫的文件夾。然后使用 DBD和 BDE,按照下列方法定義數(shù)據(jù)庫別名。 建立數(shù)據(jù)庫別名是在 Delphi 7提供的數(shù)據(jù)庫驅(qū)動器( BDE, Borland Database Engine)中進行的。 數(shù)據(jù)庫驅(qū)動器( BDE, Borland Database Engine)又稱集成化數(shù)據(jù)庫應(yīng)用程序編程接口( IDAPI),它是數(shù)據(jù)庫工具中的核心部件,是運行數(shù)據(jù)庫應(yīng)用程序時所必須的支撐系統(tǒng)。 BDE Administrator是設(shè)置和管理 BDE的工具,可以用來管理 BDE中的別名和驅(qū)動程序。 建立數(shù)據(jù)庫別名具體操作步驟如下: 步驟 1:打開 Windows 的資源管理器,在 H盤(或其他盤符,但是設(shè)置別名路徑時應(yīng)作相應(yīng)的修改)創(chuàng)建“畢業(yè)設(shè)計”文件夾,并在該文件夾下在創(chuàng)建一個“數(shù)據(jù)庫”的子文件夾。用于存放本系統(tǒng)的 8個數(shù)據(jù)表,名稱分別為:“ depot” “ Goods” “ sysuser” “ SysUserRights” “ YWYData” “ stockrecord” 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: “ threcord” “ JXCrecord”。 步驟 2:單擊 Windows桌面的“開始”菜單,選擇“程序”“ Borland Delphi 7” “ BDE Administrator”。(要進入 BDE Administrator 進行操作,必須先關(guān)閉全部正在使用的 BDE應(yīng)用程序,為的是保證再進入編程環(huán)境時所設(shè)置的參數(shù)生效。) 步驟 3:右鍵單擊 Database 頁卡,在彈出菜單中選擇 new 菜單項來增設(shè)一個數(shù)據(jù)庫別名。在彈出的 Database Driver Name 選擇窗口中選擇 STANDARD,單擊 OK 按鈕。輸入“ CPXSGL”作為數(shù)據(jù)庫別名。把 CPXSGL數(shù)據(jù)庫的路徑填入 Definition頁卡的 PATH 項,本例填入“ H:畢業(yè)設(shè)計 數(shù)據(jù)庫 ”。單擊 Configuration 頁卡,在 Drivers 選項中選擇 Native 類驅(qū)動程序,在展開的樹狀結(jié)構(gòu)中選擇PARADOX 驅(qū)動程序項。設(shè)置完畢后選擇 Object 菜單,單擊 save as 菜單項。重復(fù)步驟 3,直到需要的數(shù)據(jù)庫別名設(shè)計完畢。 5.1.2 定義數(shù)據(jù)表設(shè)計 DBD(Database Desktop)是 Delphi中提供的簡單實用的數(shù)據(jù)庫桌面工具,它的功能是創(chuàng)建 維護以及查詢數(shù)據(jù)庫。 1. 表結(jié)構(gòu)設(shè)計 依據(jù) 表一給出的字段設(shè)計表的字段名稱,字段類型,初始長度,初始值。創(chuàng)建數(shù)據(jù)庫表結(jié)構(gòu)具體操作步驟如下: 步驟 1:單擊 Windows桌面的“開始”菜單,選擇“程序”“ Borland Delphi 7”“ Database Desktop”。 步驟 2:選擇“ File” “ New” “ Table”,在彈出的 Create Table 對話框中選擇 Table Type 為 Paradox7.在表結(jié)構(gòu)設(shè)計窗體中填寫字段名,類型,長度,默認(rèn)值。 步驟 3:設(shè)計好表結(jié)構(gòu)后要對表結(jié)構(gòu)進行保存。單擊 save as按鈕,在彈出的保存對話框 中選擇 Alias為“ CPXSGL” (設(shè)計其他數(shù)據(jù)庫時要做相應(yīng)更改 ),填寫表名后單擊“保存”按鈕。重復(fù)步驟 2和步驟 3直到設(shè)計完所有表結(jié)構(gòu)。 2. 數(shù)據(jù)錄入 表結(jié)構(gòu)設(shè)計好后,就須對每個數(shù)據(jù)庫中的表的內(nèi)容進行錄入。 輸入表字段內(nèi)容具體操作步驟如下: 步驟 1:單擊 Windows桌面的“開始”菜單,選擇“程序”“ Borland Delphi 7”“ Database Desktop”。 步驟 2:選擇“ File” “ Open” “ Table”,在彈出的 Select Table 對話框中選擇 Alias為 CPXSGL(對其他 數(shù)據(jù)庫表進行輸入時該別名應(yīng)作相應(yīng)變化 ). 步驟 3:使用“ Table” “ Edit”菜單項,則即可進入編輯狀態(tài)對數(shù)據(jù)直接進行修改。在編輯狀態(tài)下按 Insert 鍵,可以插入一條新的記錄行;按 Delete下鍵,可以刪除當(dāng)前的記錄。若再次選擇“ Table” “ Edit”菜單項,則 DBD將保存所進行的修改。重復(fù)步驟 2和步驟 3直到所有表內(nèi)容輸入完畢。 5.2: DELPHI中數(shù)據(jù)文件路徑的管理 Delphi中的 Table控件 ( Component) 和 query控件都需要有一個 DatabaseName屬性??梢杂?DatabaseName 屬性來指定該控件所引用的數(shù)據(jù)表路徑。有兩種方法可以為屬性DatabaseName 設(shè)置路徑:第一種方法是直接輸入數(shù)據(jù)表所在路徑,另一種方法是使用數(shù)據(jù)無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 庫別名( Alias)。在 Delphi 中數(shù)據(jù)庫別名是在數(shù)據(jù)庫引擎( BDE)中設(shè)定的, 5.2 的方法在設(shè)計時是可行的,然而需要對程序進行移植時卻會導(dǎo)致程序運行出現(xiàn)異常。 數(shù)據(jù)庫應(yīng)用程序的移植是一個重要的問題。因為在數(shù)據(jù)庫應(yīng)用程序中要訪問數(shù)據(jù)庫或數(shù)據(jù)表,就要涉及到數(shù)據(jù)文件的路徑。一般來說,數(shù)據(jù)庫應(yīng)用程序開發(fā)完成后要移植到其他的機器上使用,因此數(shù)據(jù)庫應(yīng)用程 序運行時的數(shù)據(jù)文件路徑很可能和開發(fā)時的不同。所以必須對數(shù)據(jù)文件的路徑進行有效的管理,以便用于系統(tǒng)的移植。管理數(shù)據(jù)文件路徑的方法有三種:把數(shù)據(jù)文件建立在應(yīng)用程序所在目錄的子目錄下利用配置文件存放數(shù)據(jù)路徑 利用數(shù)據(jù)庫別名存放數(shù)據(jù)庫路徑。 本試題庫系統(tǒng)采用的是第三種方法,且具有更強的移植性,每次啟動時都會對別名進行檢查并進行重設(shè),以防異常情況的出現(xiàn),但是損失了一定的運行時間。下面代碼說明如何建立名字為“ CPXSGL”的別名,它的數(shù)據(jù)庫路徑為“ H:畢業(yè)設(shè)計 數(shù)據(jù)庫”,數(shù)據(jù)庫類型為PARADOX。 Session.ConfigMode:=cmall; Session.AddStandardAlias(CPXSGL, E:畢業(yè)設(shè)計 數(shù)據(jù)庫 ,PARADOX); Session.SaveConfigFile; /保存新建立的別名 如須對別名進行刪除,則先要檢查別名是否存在,如果對不存在的別名做刪除操作則會引起異常。下面代碼說明如何檢查數(shù)據(jù)庫別名“ CPXSGL”是否存在,如果存在則進行刪除。 定義變量: var strAlias:TStringList; /用于保存 BDE數(shù)據(jù)庫別名表 代碼: strAlias:=TStringList.Create;/生成 TstringList類的實例 Session.GetAliasNames(strAlias);/獲取數(shù)據(jù)庫別名 if (strAlias.IndexOf(CPXSGL) -1) then begin session.DeleteAlias(CPXSGL); session.SaveConfigFile; end; 六 試題庫系統(tǒng)應(yīng) 用程序 界面 設(shè)計 本系統(tǒng)采用圖形化界面并且提供幫助,界面友好,操作方便,可以大大降低了本軟件的使用難度和維護難度,為軟件的使用者帶來方便。 系統(tǒng)在進行設(shè)計時,主要使用的是 delphi中的一部分的控件,最長使用的是 Label控件、 Button控件、 Radiogroup 控件, Memo控件。數(shù)據(jù)庫方面常用 Datasource控件、 ADOQuery控件、 ADOConnection控件、 DBNavingation控件、 ADOTable控件、 DBEdit控件、 DBGrid控件。 6.1 用戶登錄窗體 本窗體 的任務(wù)是通過用戶輸入密碼判斷用戶是否是合法的用戶 .它用于管理員按照用戶名和密碼進行登錄。以免不相關(guān)得人進入系統(tǒng)進行不良的操作,而對系統(tǒng)進行破壞,導(dǎo)致整個系統(tǒng)進行癱瘓。 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 6.2 主窗體 該窗體是本系統(tǒng)的統(tǒng)籌界面。它是系統(tǒng)的結(jié)構(gòu)匡架,便于對整個系統(tǒng)的觀摩、管理 .主要使用 Label 和 panl 以及 manu 等控件實現(xiàn)的。 Image 控件使得界面得以美化。 由于每次操作不一定會用到所有的數(shù)據(jù)庫,所以沒有必要在每次運行時生成所有的數(shù)據(jù)庫別名。Session控件提供了動態(tài)生成數(shù)據(jù)庫別名的方法,使通過操作選擇窗體進行優(yōu) 選擇的別名生成成為可能。 6.3 系統(tǒng)設(shè)置窗體 本窗體由 Lable 和 Edit 控件組成,可以實現(xiàn)系統(tǒng)基本信息的設(shè)置。在第一次運行本系統(tǒng)時, 本窗口自動運行,要求使用者輸入系統(tǒng)的基本信息, 以及指定數(shù)據(jù)庫所在路徑。 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 6.4 權(quán)限管理窗體 該窗體是向用戶提供權(quán)限管理功能,通過對用戶級別的選擇再組合相應(yīng)的權(quán)限,即可方便得以對統(tǒng)一數(shù)據(jù)庫的相同或不同的數(shù)據(jù)表進行操作。界面簡捷是本窗體的一個有點,這使對權(quán)限的管理十分方便。 6.5 操作員信息設(shè)置窗體 這里是設(shè)置操作員信息的窗體單元。用戶 可以通過增加按鈕任意增加一個操作員,同樣也可以通過修改或者刪除按鈕實現(xiàn)相應(yīng)的操作。另外,為了方便用戶,雙擊 dbgrid 也會出現(xiàn)編輯對話框。 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 此外,還有類似的窗體,如代理商信息設(shè)置,商品信息設(shè)置等等,由于這些窗體在結(jié)構(gòu)上具有相似性,在此就不一一贅述了。 6.6 代理商進 /退貨錄入窗口 如上圖所示,在錄入進貨數(shù)據(jù)時,必須先選擇代理商的姓名,然后雙擊 dbgrid 就可以實現(xiàn)對出售商品的選擇。為了保證數(shù)據(jù)表的參照完整性,在點擊保存按鈕的時候,系統(tǒng)會檢查錄入的數(shù)據(jù)是否完整,如缺少項目,系統(tǒng)會給出正確的 提示。 退貨數(shù)據(jù)錄入窗口和進貨數(shù)據(jù)錄入敞口大體相當(dāng),唯一不同的是在保存時候會檢查代理商是否有過相應(yīng)的進貨數(shù)據(jù),如在沒有進貨紀(jì)錄的同時退貨,系統(tǒng)會給出相應(yīng)的提示。 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 6.7 定單進貨數(shù)據(jù)錄入窗口以及查詢窗口 該窗體是供使用者輸入訂貨單信息時候使用的,使用者可以對訂單進行增加修改刪除等具體操作。訂單查詢窗口與之類似,但是不提供增加和修改功能。 6. 8 代理商銷售數(shù)據(jù)查詢 該 功 能 分 為 兩 個 窗 體 實 現(xiàn) , 分 別 是 一 般 數(shù) 據(jù) 查 詢 和 明 細(xì) 數(shù) 據(jù) 查 詢 。 上圖是一般查詢,使用者通過對代理商,商品名稱以及商品型號的選擇, 可以很快地查到該代理商的進貨情況,并且可以通過報表打印輸出。 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 上圖是代理商進貨明細(xì)查詢,藍(lán)色的字體標(biāo)出的是該代理商的進貨記錄,紅色的字體標(biāo)出的是該代理商的退貨記錄,同時,使用者還可以使用對代理商姓名,商品名稱及型號的輸入,輕松實現(xiàn)對個別代理商銷售的查詢。必不可少的,該窗體同樣向用戶提供打印輸出功能。 6. 9 商品分布查詢 該窗體以圖形化的界面,簡單直觀的向使用者提供商品的查詢功能,使用者可以通過已知商品信息迅速查詢到與此種商品相關(guān)的代理商信息,同時,也可用過代理商的信息反查處其代理的商品狀況 。 此外,為了實現(xiàn)系統(tǒng)的界面風(fēng)格和報表輸出功能,用到了兩個控件,分別是 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: XpMenu3.1 修改版 和 QRMaker 。具體的安裝和使用方法就不在這里詳細(xì)說明。 本系統(tǒng)主要分為四個主要功能,即訂單系統(tǒng),代理商系統(tǒng),備份系統(tǒng),何管理員系統(tǒng)。其中,訂單系統(tǒng)和代理商系統(tǒng)是為商品銷售服務(wù)的,而管理員登陸系統(tǒng)是為數(shù)據(jù)安全考慮的, 最后的備份系統(tǒng)有助于提高系統(tǒng)的健壯性,在系統(tǒng)崩潰后可以把損失降到最低限度。同時,本系統(tǒng)也提供了豐富的打印功能,使得計算機里的數(shù)據(jù)可以以書面的形式印刷并且傳播,不會出現(xiàn)信息孤島的現(xiàn)象。 七 結(jié)束語 經(jīng)過幾個月的設(shè)計和開發(fā),商品銷售管理系統(tǒng)基本開發(fā)完畢。其功能基本符合用戶需求,能夠完成商品流通過程中所涉及到的基本信息的、輸入、修改,查詢等動能。并提供部分系統(tǒng)維護功能 ,使用戶方便進行用戶名稱和密碼的更改, 提高了軟件的安全性和健壯性 。此外,本軟件對于數(shù)據(jù)的一致性的問題也通過程序進行了有效的解決。 但現(xiàn)實中的商品交易形式是多種多樣的,是由于畢業(yè)設(shè)計時間較短,需求分析做 得不夠完善,個人能力以及精力等因素的限制,所以該系統(tǒng)只假設(shè)了兩種形式銷售方式,即訂單銷售和代理商銷售, 并且假設(shè)這兩種銷售方式在商品的流通過程中不存在互相干擾的現(xiàn)象。另外,該系統(tǒng)還有許多不盡如人意的地方。比如功能不是很完善、用戶界面不夠美觀,出錯處理不夠等多方面問題。這些都有待進一步改善。 致謝 在本次畢業(yè)設(shè)計中,我從指導(dǎo)老師張韋偉老師身上學(xué)到了很多東西。張韋偉老師認(rèn)真負(fù)責(zé)的工作態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神和深厚的理論水平都使我收益匪淺。她無論在理論上還是在實踐中,都給與我很大的幫助,使我得到不少的提高這對于我以后 的工作和學(xué)習(xí)都有一種巨大的幫助,感謝她耐心的輔導(dǎo)。另外,系統(tǒng)能及時開發(fā)完成也得益于同組同學(xué)之間的密切協(xié)作,這里一并表示感謝! 主要參考文獻 : 1 Delphi企業(yè)經(jīng)營管理系統(tǒng)開發(fā)實例導(dǎo)航 作者:求是科技 王志偉 黃超 出版社:人民郵電出版社 2 Delphi 面向?qū)ο蟪绦蛟O(shè)計及應(yīng)用開發(fā) 作者:朱振元,朱承 出版社:西安電子科技大學(xué)出版社 3 Delphi 6程序設(shè)計導(dǎo)學(xué) 作者:張春林 出版社:清華大學(xué)出版社 4 最新 Delphi 7數(shù)據(jù)庫開發(fā)指南 作者: 只飛 等 出版社:北京希 望電子出版社 5 Delphi 實用程序 100例 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: 作者:段興 出版社:人民郵電大學(xué) 6 網(wǎng)上資料查詢 附錄程序清單及注釋 程序清單 unit LogoUnit;/登陸窗口 interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, jpeg, ExtCtrls, ComCtrls, StdCtrls; type TLogoForm = class(TForm) Panel1: TPanel; StatusBar1: TStatusBar; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; procedure FormCreate(Sender: TObject); private Private declarations public Public declarations end; var LogoForm: TLogoForm; implementation uses LoginUnit; $R *.dfm procedure TLogoForm.FormCreate(Sender: TObject); var Foundwin: HWND; begin Foundwin := FindWindow(nil, 商品銷售管理系統(tǒng) -); / 查找窗口 if Foundwin 0 then begin 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: / 調(diào)用 Delphi 自帶的查詢窗口函數(shù),查找特定標(biāo)題的窗體 / 若找到則激活已運行的程序,同時結(jié)束自身 ShowWindow(Foundwin, SW_RESTORE); halt; end; end; end unit LoginUnit; /密碼登陸窗口 interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, DB, DBTables, Registry, DBCtrls; type TLoginForm = class(TForm) PanelBkGnd: TPanel; Label2: TLabel; Label1: TLabel; Label3: TLabel; L_name: TLabel; Panel_button: TPanel; Bevel_button: TBevel; OKBtn: TButton; CancelBtn: TButton; E_ID: TEdit; E_PassWord: TEdit; query_pass: TQuery; procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure OKBtnClick(Sender: TObject); procedure E_IDChange(Sender: TObject); procedure E_IDKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure CancelBtnClick(Sender: TObject); procedure FormCreate(Sender: TObject); private B_halt: bool; I_logo: integer; Private declarations public 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: Public declarations end; var LoginForm: TLoginForm; implementation uses MainUnit, LogoUnit; $R *.dfm procedure TLoginForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean); var S_temppass: string; begin inherited; if b_halt then begin query_pass.Close; query_pass.Free; application.Terminate; exit; end else b_halt := true; S_temppass := E_password.text; USERNAME := L_name.Caption; if (E_id.Text = ) or (L_name.Caption = 未知用戶 ) then /用戶名為空 begin messagedlg(用戶錯誤 , mterror, mbok, 0); E_id.SetFocus; canclose := false; exit; end /end if else /用戶名非空 begin with query_pass do begin first; while not eof do /檢查用戶名與密碼 begin if (USERNAME = fieldbyname(USERname).asstring) and 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: (S_tempPass = fieldbyname(Psd).asstring) then begin USERRIGHTSNAME := fieldbyname(rightsname).AsString; USERRIGHTS := fieldbyname(rights).AsString; break; end; next; end; /end while if eof then /用戶名與密碼不符 begin inc(I_logo); if I_logo = 3 then begin messagedlg(您已嘗試超過 3 次,系統(tǒng)將停止運行! , mterror, mbok, 0); query_pass.Close; query_pass.Free; application.Terminate; end else begin messagedlg(用戶名與密碼不符,請檢查后重新輸入。 + #13 + #13 + 你還有 + inttostr(3 - I_logo) + 次機會! , mterror, mbok, 0); e_password.SetFocus; e_password.SelectAll; canclose := false; exit; end; end; /end if end; /end with end; /end else if; MainForm.StatusBar_main.Panels.Items3.Text := 操作員:【 + USERNAME + 】 權(quán)限: + USERRIGHTSNAME + ; query_pass.Free; canclose := true; end; procedure TLoginForm.OKBtnClick(Sender: TObject); begin b_halt := false; self.Close; end; procedure TLoginForm.E_IDChange(Sender: TObject); 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: begin with query_pass do begin first; while not eof do begin if E_id.Text = fieldbyname(ID).AsString then begin L_name.Caption := fieldbyname(USERName).AsString; exit; end else L_name.Caption := 未知用戶 ; next; end; end; end; procedure TLoginForm.E_IDKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = 27 then begin cancelbtn.Click; exit; end; if (key = 13) or (key = 40) then 判斷是按執(zhí)行鍵 begin key := 0; perform(WM_NEXTDLGCTL, 0, 0); 移動到下一個控件 end; end; procedure TLoginForm.CancelBtnClick(Sender: TObject); begin halt; end; procedure TLoginForm.FormCreate(Sender: TObject); var reg: TRegistry; begin self.Caption := application.Title + - ; self.Caption := self.Caption + 用戶登錄 ; 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: I_logo := 0; query_pass.DatabaseName := CPXSGL; B_halt := true; reg := TRegistry.Create; Reg.RootKey := HKEY_CURRENT_USER; with query_pass do begin sql.text := SELECT Sysuser.ID, Sysuser.NAME USERNAME, Sysuser.PASS Psd, + SysUserRights.NAME RIGHTSNAME, SysUserRights.RIGHTS RIGHTS FROM Sysuser + INNER JOIN SysUserRights ON (Sysuser.RIGHTS = SysUserRights.NAME) + ORDER BY Sysuser.ID; try open; except if LogoForm.Showing then LogoForm.Destroy; messagedlg(數(shù)據(jù) 庫打開錯誤,可能指定的系統(tǒng)數(shù)據(jù)庫文件不存在! + #13 + #13 + 系統(tǒng)將終止運行,請重新嘗試打開本程序。 + #13 + #13 + 如果依然出現(xiàn)本信息,請與程序供應(yīng)商聯(lián)系。 , mtError, mbok, 0); close; try reg.DeleteKey(S_RegTree); finally reg.CloseKey; reg.free; end; application.Terminate; end; end; end; end. unit SetupFormUnit;/基本信息設(shè)置窗口 interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, Registry; type 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: TSetupForm = class(TForm) Panel1: TPanel; GroupBox1: TGroupBox; GroupBox2: TGroupBox; GroupBox3: TGroupBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; SB_selectpath: TSpeedButton; Label9: TLabel; e_allname: TEdit; e_name: TEdit; E_tel: TEdit; E_address: TEdit; LE_datapath: TEdit; SB_about: TSpeedButton; SB_CLOSE: TSpeedButton; SB_save: TSpeedButton; SB_stop: TSpeedButton; Bevel_BUTTON: TBevel; RB_user: TRadioButton; RB_auto: TRadioButton; e_backupdays: TEdit; L_days: TLabel; procedure SB_stopClick(Sender: TObject); procedure SB_CLOSEClick(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FormCreate(Sender: TObject); procedure SB_saveClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure SB_selectpathClick(Sender: TObject); procedure SB_aboutClick(Sender: TObject); procedure e_allnameChange(Sender: TObject); procedure e_allnameKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private B_save: boolean; Private declarations public 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: Public declarations end; var SetupForm: TSetupForm; implementation $R *.dfm uses MainUnit, SelectDirUnit, AboutUnit; procedure TSetupForm.SB_stopClick(Sender: TObject); var reg: TRegistry; begin inherited; reg := TRegistry.Create; try Reg.RootKey := HKEY_CURRENT_USER; reg.DeleteKey(S_RegTree); finally reg.CloseKey; reg.free; end; halt; end; procedure TSetupForm.SB_CLOSEClick(Sender: TObject); begin self.Close; end; procedure TSetupForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin inherited; if sb_save.Enabled then sb_save.Click; if not B_save then canclose := false; end; procedure TSetupForm.FormCreate(Sender: TObject); var TheBitmap: TBitmap; begin 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: inherited; self.Caption := application.Title + - 系統(tǒng)設(shè)置 ; TheBitmap := TBitmap.Create; TheBitmap.Height := application.icon.Height + 2; TheBitmap.Width := application.icon.Width + 2; TheBitmap.Canvas.Draw(0, 0, application.Icon); sb_about.Glyph := thebitmap; B_save := true; end; procedure TSetupForm.SB_saveClick(Sender: TObject); var reg: TRegistry; begin B_save := false; if messagedlg(確定要保存以上所有資料嗎? , mtconfirmation, mbyes, mbno, 0) = mrno then begin B_save := true; exit; end; if trim(e_allname.Text) = then begin messagedlg(公司名稱不能為空,請檢查后重新輸入。 , mtwarning, mbok, 0); e_allname.SetFocus; exit; end; if trim(e_name.Text) = then begin messagedlg(負(fù)責(zé)人姓名不能為空,請檢查后重新輸入。 , mtwarning, mbok, 0); e_name.SetFocus; exit; end; if (not DirectoryExists(trim(LE_datapath.Text) and (trim(LE_datapath.Text) 【系統(tǒng)默認(rèn)】) then begin messagedlg(指定數(shù)據(jù)庫目錄不存在,請檢查后重新輸入。 , mtwarning, mbok, 0); LE_datapath.SetFocus; exit; end; reg := TRegistry.Create; try Reg.RootKey := HKEY_CURRENT_USER; 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: if (Reg.OpenKey(S_RegTree, False) = False then begin Reg.CreateKey(S_RegTree); end; Reg.OpenKey(S_RegTree, True); /讀取窗體控件中的公司基本信息到注冊表中 Reg.WriteString(username, trim(E_name.text); Reg.WriteString(coname, trim(E_allname.text); Reg.WriteString(cotel, trim(E_tel.text); Reg.WriteString(address, trim(E_address.text); Reg.WriteString(DataPath, trim(LE_datapath.text); if rb_auto.Checked then reg.Writestring(autosave, 1) else reg.writestring(autosave, 0); Reg.WriteString(savedays, trim(e_backupdays.text); Reg.CloseKey; sb_save.Enabled := false; with MainForm do begin S_name := trim(E_allname.text); S_username := trim(E_name.text); S_cotel := trim(E_tel.text); S_address := trim(E_address.text); CPXSGL := trim(le_datapath.Text); if CPXSGL = 【系統(tǒng)默認(rèn)】 then begin CPXSGL := ExtractFileDir(Application.ExeName); if (StrLen(PChar(CPXSGL) 3) then CPXSGL := CPXSGL + DATA else CPXSGL := CPXSGL + DATA; end; if rb_auto.Checked then S_autosave := 1 else S_autosave := 0; S_savedays := trim(e_backupdays.text); end; messagedlg(系統(tǒng)設(shè)置數(shù)據(jù)信息保存完畢! , mtwarning, mbok, 0); MainForm.Caption := Application.Title + - + S_name + 【 + CPXSGL + 】 ; B_save := true; finally 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: Reg.CloseKey; Reg.Free; end; self.Close; end; procedure TSetupForm.FormShow(Sender: TObject); var reg: TRegistry; begin inherited; reg := TRegistry.Create; try Reg.RootKey := HKEY_CURRENT_USER; if (Reg.OpenKey(S_RegTree, False) = False then begin Reg.CreateKey(S_RegTree); end; Reg.OpenKey(S_RegTree, True); E_allname.text := reg.ReadString(Coname); e_name.text := reg.ReadString(Username); E_tel.text := reg.ReadString(Cotel); E_address.text := reg.ReadString(Address); LE_datapath.Text := reg.ReadString(DataPath); if LE_datapath.Text = then LE_datapath.Text := 【系統(tǒng)默認(rèn)】 ; if reg.Readstring(autosave) = 1 then rb_auto.Checked := true else rb_user.Checked := true; e_backupdays.text := Reg.readString(savedays); if trim(e_backupdays.text) = then e_backupdays.text := 10; Reg.CloseKey; finally Reg.CloseKey; Reg.Free; end; sb_save.Enabled := false; end; procedure TSetupForm.SB_selectpathClick(Sender: TObject); begin Application.CreateForm(TSelectDir, SelectDir); 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: SelectDir.DriveComboBox1.Text := ExtractFileDrive(LE_datapath.Text); if (FileExists(LE_datapath.Text) then SelectDir.DirectoryListBox1.Directory := LE_datapath.Text; if (SelectDir.ShowModal = mrOK) then LE_datapath.Text := SelectDir.DirectoryListBox1.Directory; /Frm_select_dir.Label2.Caption; SelectDir.free; end; procedure TSetupForm.SB_aboutClick(Sender: TObject); begin Application.CreateForm(TAboutForm, AboutForm); AboutForm.showmodal; AboutForm.free; end; procedure TSetupForm.e_allnameChange(Sender: TObject); begin sb_save.Enabled := true; end; procedure TSetupForm.e_allnameKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (key = 13) or (key = 40) then 判斷是按執(zhí)行鍵 begin key := 0; perform(WM_NEXTDLGCTL, 0, 0); 移動到下一個控件 end; end; end. unit BackUpUnit; /數(shù)據(jù)備份 interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, shellapi; type TBackUpForm = class(TForm) Panel1: TPanel; 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: Edit_path: TEdit; Label3: TLabel; Label4: TLabel; Select: TButton; Panel_button: TPanel; Bevel_button: TBevel; OKBtn: TButton; CancelBtn: TButton; procedure OKBtnClick(Sender: TObject); procedure Edit_pathChange(Sender: TObject); procedure FormCreate(Sender: TObject); procedure SelectClick(Sender: TObject); procedure CancelBtnClick(Sender: TObject); procedure Edit_pathEnter(Sender: TObject); private Private declarations public B_showmessage: boolean; Public declarations end; var BackUpForm: TBackUpForm; implementation uses FunctionUnit, SelectDirUnit; $R *.dfm procedure TBackUpForm.OKBtnClick(Sender: TObject); var SFilePath, DFilePath, SourcePath: string; MesString: string; OpStruc: TSHFileOpStruct; FromBuf, ToBuf: array0.255 of Char; ShouldCopy: Boolean; sr: TSearchRec; FileAttrs: Integer; label COPYAGAIN; begin COPYAGAIN: / 準(zhǔn)備目錄拷貝 FillChar(FromBuf, Sizeof(FromBuf), 0); FillChar(ToBuf, Sizeof(ToBuf), 0); 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: / 設(shè)置 OpStruc with OpStruc do begin Wnd := Handle; wFunc := FO_COPY; pFrom := FromBuf; pTo := ToBuf; fFlags := FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION; fAnyOperationsAborted := False; hNameMappings := nil; lpszProgressTitle := nil; end; SourcePath := ExtractFileDir(Application.ExeName); if (StrLen(PChar(SourcePath) 3) then SourcePath := SourcePath + ; FillChar(FromBuf, Sizeof(FromBuf), 0); FillChar(ToBuf, Sizeof(ToBuf), 0); SFilePath := SourcePath + data; StrPCopy(FromBuf, Pchar(SFilePath); DFilePath := Edit_path.Text; StrPCopy(ToBuf, Pchar(DFilePath); / 檢測源路徑是否存在 if (not DirectoryExists(SFilePath) then begin if B_showmessage then begin MesString := 源數(shù)據(jù)庫目錄 + SFilePath + 已被破壞,系統(tǒng)不能進行備份。 ; MessageBox(Handle, PChar(MesString), 錯誤 , MB_OK + MB_ICONERROR); end; exit; end; if uppercase(SFilePath) = uppercase(DFilePath) then begin if B_showmessage then begin MesString := 源數(shù)據(jù)庫目錄與目標(biāo)數(shù)據(jù)庫目錄相同,系統(tǒng)不能進行備份。 ; MessageBox(Handle, PChar(MesString), 錯誤 , MB_OK + MB_ICONERROR); end; exit; end; / 檢測目的路徑是否存在 ShouldCopy := True; if (DirectoryExists(DFilePath) then 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: begin if B_showmessage then begin MesString := 目的路徑 + DFilePath + 已經(jīng)存在,繼續(xù)備份會刪除該文件夾下的所有文件。 + chr(13) + 是否繼續(xù)備份至該目錄? ; if MessageBox(Handle, PChar(MesString), 信息 , MB_YESNO + MB_ICONINFORMATION) IDYES then ShouldCopy := False else /先刪除該文件夾 begin OpStruc.wFunc := FO_DELETE; StrPCopy(FromBuf, Pchar(DFilePath); ShFileOperation(OpStruc); goto COPYAGAIN; /刪除已存在的目錄文件夾后重新 COPY end; end else begin OpStruc.wFunc := FO_DELETE; StrPCopy(FromBuf, Pchar(DFilePath); ShFileOperation(OpStruc); goto COPYAGAIN; /刪除已存在的目錄文件夾后重新 COPY end; end; if ShouldCopy then begin if ShFileOperation(OpStruc) 0 then begin MesString := 在備份目錄 + SFilePath + 的過程中出現(xiàn)錯誤。 ; MessageBox(Handle, PChar(MesString), 錯誤 , MB_OK + MB_ICONERROR); end else / 將文件的屬性設(shè)置為不是只讀屬性 begin FileAttrs := faAnyFile; if FindFirst(DFilePath + *.*, FileAttrs, sr) = 0 then begin FileSetAttr(DFilePath + + sr.Name, faArchive); end; while FindNext(sr) = 0 do begin FileSetAttr(DFilePath + + sr.Name, faArchive); end; 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: FindClose(sr); if B_showmessage then begin showmessage(所有數(shù)據(jù)已安全備份至“ + dfilepath + ”! ); self.Close; end; end; end; end; procedure TBackUpForm.Edit_pathChange(Sender: TObject); begin if trim(Edit_path.Text) then OKBtn.Enabled := true else OKBtn.Enabled := false; end; procedure TBackUpForm.FormCreate(Sender: TObject); var SourcePath: string; begin inherited; SELF.Caption := application.Title + - 數(shù)據(jù)備份 ; B_showmessage := true; SourcePath := ExtractFileDir(Application.ExeName); if (StrLen(PChar(SourcePath) 3) then SourcePath := SourcePath + ; Edit_path.Text := SourcePath + BACKUPDATA + formatdatetime(yyyymmdd, date); end; procedure TBackUpForm.SelectClick(Sender: TObject); begin Application.CreateForm(TSelectDir, SelectDir); SelectDir.DriveComboBox1.Text := ExtractFileDrive(Edit_path.Text); if (FileExists(Edit_path.Text) then SelectDir.DirectoryListBox1.Directory := Edit_path.Text; if (SelectDir.ShowModal = mrOK) then Edit_path.Text := SelectDir.DirectoryListBox1.Directory; SelectDir.free; OKBtn.SetFocus; end; procedure TBackUpForm.CancelBtnClick(Sender: TObject); 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: begin self.Close; end; procedure TBackUpForm.Edit_pathEnter(Sender: TObject); begin Edit_path.SelectAll; end; end. unit RightManageUnit; /權(quán)限管理窗口 interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, DB, DBTables, CheckLst; type TRightManageForm = class(TForm) LB_name: TListBox; Panel1: TPanel; Panel2: TPanel; CLB_rights: TCheckListBox; OKBtn: TButton; CancelBtn: TButton; query_data: TQuery; procedure LB_nameClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure OKBtnClick(Sender: TObject); procedure CLB_rightsClick(Sender: TObject); procedure FormPaint(Sender: TObject); procedure CancelBtnClick(Sender: TObject); private B_create: boolean; P_rights: array of array of string; Private declarations public Public declarations end; var RightManageForm: TRightManageForm; 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: implementation uses FunctionUnit; $R *.dfm procedure TRightManageForm.LB_nameClick(Sender: TObject); var S_rights: string; I_index: integer; begin inherited; if (LB_name.itemindex 6) then begin CLB_rights.Enabled := false; exit; end else CLB_rights.Enabled := true; S_rights := P_rights1, LB_name.itemindex; if length(S_rights) 10 then S_rights := 0000000000; for I_index := 1 to CLB_rights.Items.Count do begin if S_rightsI_index = 1 then CLB_rights.CheckedI_index - 1 := true else CLB_rights.CheckedI_index - 1 := false; end; end; procedure TRightManageForm.FormCreate(Sender: TObject); var I_index: integer; begin self.Caption := 權(quán)限管理 ; setlength(P_rights, 2); setlength(P_rights0, 6); setlength(P_rights1, 6); P_rights0, 0 := 管理員 ; P_rights0, 1 := 一級 ; P_rights0, 2 := 二級 ; P_rights0, 3 := 三級 ; 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: P_rights0, 4 := 四級 ; P_rights0, 5 := 限制級 ; query_data.DatabaseName := CPXSGL; B_create := false; with query_data do begin close; sql.Clear; sql.Text := select * from SysUserRights; try open; B_create := true; except messagedlg(Errormsg0001 + 0006, mtError, mbok, 0); close; B_create := false; end; /如果數(shù)據(jù)表記錄數(shù)不對,則重置權(quán)限信息 if (RecordCount 6) and (B_create) then begin P_rights1, 0 := 1111111111; P_rights1, 1 := 1111011111; P_rights1, 2 := 1111011011; P_rights1, 3 := 1111001011; P_rights1, 4 := 1111000011; P_rights1, 5 := 0000000011; end else if (RecordCount = 6) and (B_create) then begin first; for I_index := 1 to recordcount do begin P_rights1, I_index - 1 := fieldbyname(rights).AsString; next; end; end; end; end; procedure TRightManageForm.OKBtnClick(Sender: TObject); var I_row: integer; begin 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: with query_data do begin close; sql.Clear; sql.Text := delete from SysUserRights; try execsql; except messagedlg(Errormsg0005 + 0006, mtError, mbok, 0); close; self.Close; end; for I_row := 0 to 5 do begin close; sql.Clear; sql.Text := insert into SysUserRights (id,name,rights) + values( + inttostr(I_row) + , + P_rights0, I_row + , + P_rights1, I_row + ); try execsql; except messagedlg(Errormsg0004 + 0006, mtError, mbok, 0); close; self.Close; end; end; close; self.Close; end; end; procedure TRightManageForm.CLB_rightsClick(Sender: TObject); var I_index, I_name: integer; S_rights: string; begin I_name := lb_name.ItemIndex; if I_name = 0 then /系統(tǒng)管理員 exit; if CLB_rights.Checked5 then CLB_rights.Checked6 := true; S_rights := ; 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: for I_index := 0 to CLB_rights.Items.Count - 1 do begin if CLB_rights.CheckedI_index then S_rights := S_rights + 1 else S_rights := S_rights + 0; end; S_rights := S_rights + 11; P_rights1, I_name := S_rights; end; procedure TRightManageForm.FormPaint(Sender: TObject); begin if not B_create then self.Close; end; procedure TRightManageForm.CancelBtnClick(Sender: TObject); begin Self.Close; end; end. unit OperInfoUnit; /操作員信息錄入窗口 interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, DBTables, ComCtrls, Grids, DBGrids, ToolWin, ExtCtrls; type TOperInfoForm = class(TForm) PanelBkGnd: TPanel; ControlBar1: TControlBar; ToolBar1: TToolBar; TB_add: TToolButton; TB_EDIT: TToolButton; TB_DEL: TToolButton; ToolButton5: TToolButton; TB_refresh: TToolButton; TB_EXIT: TToolButton; DBG_BASSMESS: TDBGrid; 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: StatusBar: TStatusBar; DataSource: TDataSource; Query_data: TQuery; Query_del: TQuery; procedure TB_addClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TB_EDITClick(Sender: TObject); procedure TB_DELClick(Sender: TObject); procedure FormPaint(Sender: TObject); procedure TB_EXITClick(Sender: TObject); procedure TB_refreshClick(Sender: TObject); private B_create: boolean; Private declarations public Public declarations end; var OperInfoForm: TOperInfoForm; implementation uses EditUserUnit, FunctionUnit, MainUnit; $R *.dfm procedure TOperInfoForm.TB_addClick(Sender: TObject); begin if Checkrights(USERRIGHTS, 增加 ) then begin Application.CreateForm(TEditUserForm, EditUserForm); EditUserForm.Caption := 操作員信息(增加) ; EditUserForm.P_state := 0; EditUserForm.C_rights.ItemIndex := 1; EditUserForm.showmodal; EditUserForm.free; tb_refresh.Click; query_data.Last; end else begin messagedlg(Errormsg0006 + 0007, mterror, mbok, 0); exit; 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: end; end; procedure TOperInfoForm.FormCreate(Sender: TObject); begin B_create := false; query_data.DatabaseName := CPXSGL; query_del.DatabaseName := CPXSGL; self.Caption := Application.Title + - 操作員信息設(shè)置 ; with query_data do begin close; sql.Clear; sql.Text := SELECT * from Sysuser; try open; B_create := true; except messagedlg(Errormsg0001 + 0001, mtError, mbok, 0); close; B_create := false; end; end; end; procedure TOperInfoForm.TB_EDITClick(Sender: TObject); begin if (Checkrights(USERRIGHTS, 編輯 ) and (query_data.fieldbyname(name).asstring = USERNAME) or (USERRIGHTSNAME = 管理員 ) then begin Application.CreateForm(TEditUserForm, EditUserForm); EditUserForm.P_state := 1; EditUserForm.Caption := 操作員信息(編輯) ; with query_data do begin EditUserForm.E_name.Text := fieldbyname(name).asstring; EditUserForm.E_id.Text := fieldbyname(id).asstring; EditUserForm.E_sex.Text := fieldbyname(sex).asstring; EditUserForm.E_password.Text := fieldbyname(pass).asstring; if fieldbyname(rights).asstring = 管理員 then EditUserForm.C_rights.ItemIndex := 0 else if fieldbyname(rights).asstring = 一級 then EditUserForm.C_rights.ItemIndex := 1 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: else if fieldbyname(rights).asstring = 二級 then EditUserForm.C_rights.ItemIndex := 2 else if fieldbyname(rights).asstring = 三級 then EditUserForm.C_rights.ItemIndex := 3 else if fieldbyname(rights).asstring = 四級 then EditUserForm.C_rights.ItemIndex := 4 else EditUserForm.C_rights.ItemIndex := 5; EditUserForm.E_memo.Text := fieldbyname(memo).asstring; end; EditUserForm.showmodal; EditUserForm.free; tb_refresh.Click; end else begin messagedlg(Errormsg0006 + 0007, mterror, mbok, 0); exit; end; end; procedure TOperInfoForm.TB_DELClick(Sender: TObject); begin if not Checkrights(USERRIGHTS, 刪除 ) then begin messagedlg(Errormsg0006 + 0007, mterror, mbok, 0); exit; end; if messagedlg(警告:刪除操作員信息數(shù)據(jù)可能產(chǎn)生嚴(yán)重數(shù)據(jù)丟失現(xiàn)象,請不要在此刪除操作員信息數(shù)據(jù) + chr(13) + chr(13) + 刪 除數(shù)據(jù)操作將不可恢復(fù),確定要刪除本記錄嗎? , mtWarning, mbyes, mbno, 0) = mryes then if messagedlg(再次警告:為了保證數(shù)據(jù)庫內(nèi)數(shù)據(jù)信息的完整性,請不要在此刪除操作員信息數(shù)據(jù) + chr(13) + chr(13) + 刪除數(shù)據(jù)操作將不可恢復(fù),確定要刪除本記錄嗎? , mtWarning, mbyes, mbno, 0) = mryes then begin if query_data.FieldByName(rights).AsString = 管理員 then begin messagedlg(Errormsg0007 + 0005, mtError, mbok, 0); exit; end; with query_del do 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: begin close; sql.Clear; sql.Text := delete from Sysuser where id= + query_data.fieldbyname(ID).asstring + ; try execsql; except messagedlg(Errormsg0005 + 0005, mtError, mbok, 0); close; exit; end; messagedlg(Infmsg0002, mtInformation, mbok, 0); close; tb_refresh.Click; end; end; end; procedure TOperInfoForm.FormPaint(Sender: TObject); begin if not B_create then self.Close; end; procedure TOperInfoForm.TB_EXITClick(Sender: TObject); begin Self.Close; end; procedure TOperInfoForm.TB_refreshClick(Sender: TObject); begin OperInfoForm.Query_data.Close; OperInfoForm.Query_data.Open; end; end. unit DepotInfoUnit; /代理商信息錄入窗口 interface uses 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, DBTables, Grids, DBGrids, ComCtrls, ToolWin, ExtCtrls; type TDepotInfoForm = class(TForm) PanelBkGnd: TPanel; ControlBar1: TControlBar; ToolBar1: TToolBar; TB_add: TToolButton; TB_EDIT: TToolButton; TB_DEL: TToolButton; TB_refresh: TToolButton; TB_EXIT: TToolButton; DBG_BASSMESS: TDBGrid; Query_del: TQuery; DataSource: TDataSource; Query_data: TQuery; procedure TB_addClick(Sender: TObject); procedure TB_EDITClick(Sender: TObject); procedure TB_DELClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TB_refreshClick(Sender: TObject); procedure DBG_BASSMESSDblClick(Sender: TObject); procedure TB_EXITClick(Sender: TObject); private B_create: boolean; Private declarations public Public declarations end; var DepotInfoForm: TDepotInfoForm; implementation uses DepotEditUnit, MainUnit, FunctionUnit; $R *.dfm procedure TDepotInfoForm.TB_addClick(Sender: TObject); begin inherited; if not Checkrights(USERRIGHTS, 增加 ) then 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: begin messagedlg(Errormsg0006 + 0007, mterror, mbok, 0); exit; end; Application.CreateForm(TDepotEditForm, DepotEditForm); DepotEditForm.Caption := 代理商信息(增加) ; DepotEditForm.P_state := 0; /DepotEditForm.C_Type.ItemIndex := 1; DepotEditForm.showmodal; DepotEditForm.free; tb_refresh.Click; query_data.Last; end; procedure TDepotInfoForm.TB_EDITClick(Sender: TObject); begin inherited; if not Checkrights(USERRIGHTS, 編輯 ) then begin messagedlg(Errormsg0006 + 0007, mterror, mbok, 0); exit; end; Application.CreateForm(TDepotEditForm, DepotEditForm); DepotEditForm.Caption := 代理商信息(編輯) ; DepotEditForm.P_state := 1; with query_data do begin DepotEditForm.E_name.Text := fieldbyname(name).asstring; DepotEditForm.E_ID.Text := fieldbyname(ID).asstring; DepotEditForm.E_memo.Text := fieldbyname(memo).asstring; end; DepotEditForm.showmodal; DepotEditForm.free; tb_refresh.Click; end; procedure TDepotInfoForm.TB_DELClick(Sender: TObject); begin inherited; if not Checkrights(USERRIGHTS, 刪除 ) then begin messagedlg(Errormsg0006 + 0007, mterror, mbok, 0); 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: exit; end; if messagedlg(警告:刪除代理商信息數(shù)據(jù) 可能產(chǎn)生嚴(yán)重數(shù)據(jù)丟失現(xiàn)象,請不要在此刪除代理商信息數(shù)據(jù) + chr(13) + chr(13) + 刪除數(shù)據(jù)操作將不可恢復(fù),確定要刪除本記錄嗎? , mtWarning, mbyes, mbno, 0) = mryes then if messagedlg(再次警告:為了保證數(shù)據(jù)庫內(nèi)數(shù)據(jù)信息的完整性,請不要在此刪除代理商信息數(shù)據(jù) + chr(13) + chr(13) + 刪除數(shù)據(jù)操作將不可恢復(fù),確定要刪除本記錄嗎? , mtWarning, mbyes, mbno, 0) = mryes then begin with query_del do begin close; sql.Clear; sql.Text := delete from depot where id= + query_data.fieldbyname(ID).asstring + ; try execsql; except messagedlg(Errormsg0005 + 0011, mtError, mbok, 0); close; exit; end; messagedlg(Infmsg0002, mtInformation, mbok, 0); close; tb_refresh.Click; end; end; end; procedure TDepotInfoForm.FormCreate(Sender: TObject); begin inherited; B_create := false; query_data.DatabaseName := CPXSGL; query_del.DatabaseName := CPXSGL; self.Caption := Application.Title + - 代理商信息設(shè)置 ; with query_data do begin close; sql.Clear; sql.Text := SELECT * from depot; try 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: open; B_create := true; except messagedlg(Errormsg0001 + 0008, mtError, mbok, 0); close; B_create := false; end; end; end; procedure TDepotInfoForm.TB_refreshClick(Sender: TObject); var I_index: integer; begin I_index := query_data.RecNo; QUERY_data.Close; QUERY_data.Open; if I_index query_data.RecordCount then query_data.RecNo := I_index else query_data.Last; end; procedure TDepotInfoForm.DBG_BASSMESSDblClick(Sender: TObject); begin TB_edit.Click; end; procedure TDepotInfoForm.TB_EXITClick(Sender: TObject); begin self.Close; end; end. unit GoodsInfoUnit; /商品信息錄入窗口 interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, DBTables, Grids, DBGrids, ComCtrls, ToolWin, ExtCtrls; 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計源碼下載 畢業(yè)設(shè)計源碼下載: type TGoodsInfoForm = class(TForm) PanelBkGnd: TPanel; Splitter1: TSplitter; ControlBar1: TControlBar; ToolBar1: TToolBar; TB_add: TToolButton; TB_EDIT: TToolButton; TB_DEL: TToolButton; ToolButton5: TToolButton; TB_EXIT: TToolButton; DBG_BASSMESS: TDBGrid; DBG
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 九年級下班主任工作總結(jié)(6篇)
- 導(dǎo)視牌安裝與基礎(chǔ)施工綜合協(xié)議3篇
- 對媽媽的承諾保證書3篇
- 建筑預(yù)算員年終工作總結(jié)(8篇)
- 幼兒園國培學(xué)習(xí)總結(jié)(5篇)
- 2024年西安雁塔區(qū)電子城社區(qū)衛(wèi)生服務(wù)中心招聘考試真題
- 2024年四川省成都藝體中學(xué)附屬初級中學(xué)教師招聘考試真題
- 盾構(gòu)機施工中的隧道工程地質(zhì)環(huán)境保護考核試卷
- 紙張加工中的色彩管理考核試卷
- 休養(yǎng)所老年教育發(fā)展現(xiàn)狀與趨勢考核試卷
- MOOC 國情分析與商業(yè)設(shè)計-暨南大學(xué) 中國大學(xué)慕課答案
- MOOC 大學(xué)體育-華中科技大學(xué) 中國大學(xué)慕課答案
- 《光伏發(fā)電工程工程量清單計價規(guī)范》
- 國家衛(wèi)生部《綜合醫(yī)院分級管理標(biāo)準(zhǔn)》
- DB64++1996-2024+燃煤電廠大氣污染物排放標(biāo)準(zhǔn)
- 初中八年級數(shù)學(xué)課件-最短路徑-將軍飲馬問題
- 信息論與編碼期末考試題(全套)
- 醫(yī)院醫(yī)學(xué)倫理審查委員會章程
- 房地產(chǎn)銷售價格優(yōu)惠申請表-
- 綠化自動滴灌系統(tǒng)施工方案
- 處理突發(fā)事件流程圖
評論
0/150
提交評論