已閱讀5頁(yè),還剩91頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 本文配套程序下載地址 : 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ()-大學(xué)生畢業(yè)設(shè)計(jì)站 ,免費(fèi)畢業(yè)設(shè)計(jì)論文 ,無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) 大學(xué)生畢業(yè)設(shè)計(jì) ,出售各類(lèi)畢業(yè)設(shè)計(jì)源碼 ,論文 ,程序源碼 ,網(wǎng)站源碼 ,免費(fèi)視頻教程 ,我們將竭誠(chéng)為您服務(wù)! 商 品 交 易 管 理 系 統(tǒng) 【 摘要 】 本文簡(jiǎn)要介紹了 本商品管理系統(tǒng) 的開(kāi)發(fā)情況 ,基本設(shè)計(jì)思想、系統(tǒng)開(kāi)發(fā)環(huán)境及目前的應(yīng)用情況。 關(guān)鍵詞 訂單 代理商 銷(xiāo)售查詢(xún) 備份 目 錄 : 第一章 引言 第二章 數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開(kāi)發(fā)簡(jiǎn)介 2.1 數(shù)據(jù)庫(kù) 2.2 數(shù)據(jù)庫(kù)管理系統(tǒng) 2.3 創(chuàng)建數(shù)據(jù)庫(kù) 第三章 應(yīng)用系 統(tǒng)開(kāi)發(fā)工具 3.1 DELPHI簡(jiǎn)介 3.2 DELPHI數(shù)據(jù)庫(kù)訪問(wèn)方法與數(shù)據(jù)庫(kù)組件介紹 第四章 商品銷(xiāo)售管理系統(tǒng)目標(biāo)分析 4.1 任務(wù)分析 4.2 系統(tǒng)目標(biāo) 第五章 商品銷(xiāo)售管理系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì) 5.1 常見(jiàn)應(yīng)用程序數(shù)據(jù)表 5.2 DELPHI中的數(shù)據(jù)文件路徑管理 第六章 試題庫(kù)系統(tǒng)應(yīng)用程序界面設(shè)計(jì) 6.1 用戶(hù)登錄窗體 6.2 主窗體 6.3 系統(tǒng)設(shè)置窗體 6.4 權(quán)限管理窗體 6.5 操作員信息設(shè)置窗體 6.6 代理商進(jìn) /退貨錄入窗口 6.7 訂單進(jìn)貨數(shù)據(jù)錄入窗口 6.8 代理商銷(xiāo)售數(shù)據(jù)查詢(xún)窗口 6.9 商品分布查詢(xún)窗口 第七章 結(jié)束語(yǔ) 致謝 主要參考文獻(xiàn) 附錄程序清單及注釋 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 一 引 言 隨著大學(xué)教學(xué)改革進(jìn)一步的深入和大學(xué)本科課程建設(shè)的逐步完善,對(duì)學(xué)生掌握每一課程內(nèi)容程度的考試必須規(guī)范化,系統(tǒng)化,科學(xué)化,現(xiàn)代化;教學(xué)管理必須現(xiàn)代化、規(guī)范化。我們知道,傳統(tǒng)的出試卷方法是由教師個(gè)人組卷,這樣往往造成試題難度和知識(shí)覆蓋面難以把握,不能達(dá) 到對(duì)學(xué)生的科學(xué)而又全面的考核。針對(duì)這一情況,我們研制了計(jì)算機(jī)類(lèi)學(xué)科試題庫(kù)與自動(dòng)組卷系統(tǒng)。一方面,自動(dòng)組卷系統(tǒng)避免了手工出試卷造成的試卷不規(guī)范,不易集中管理;另一方面,避免教師每次考試時(shí)手工組卷及平時(shí)為學(xué)生組織練習(xí)時(shí)的重復(fù)勞動(dòng),將教師從簡(jiǎn)單、重復(fù)的環(huán)節(jié)中解脫出來(lái),以更多的精力投入到教學(xué)與科研中去。 高校教務(wù)管理工作中一項(xiàng)非常重要的工作就是考試管理工作,每學(xué)期各專(zhuān)業(yè)考試,從組織出卷到試卷的印制及試卷的管理等工作非常繁瑣且工作量很大,這種組織管理方式不僅工作任務(wù)繁重而且試卷的標(biāo)準(zhǔn)化程度、難易程度、題量大小等各方面 難以控制,難以形成有效的試題庫(kù),不利于充分發(fā)揮歷年來(lái)的優(yōu)秀試題及試卷的作用,給試題和試卷的管理帶來(lái)很多問(wèn)題和困難。鑒于這種情況,利用計(jì)算機(jī)進(jìn)行試卷的自動(dòng)生成并逐步積累形成有效的試題庫(kù),對(duì)試題和試卷的管理將變的高效而便捷,對(duì)提高工作效率,使試卷管理逐步走向正規(guī)化自動(dòng)化將起到十分重要的作用。 在試題庫(kù)的制作方面,通過(guò)自動(dòng)組卷系統(tǒng)對(duì)每次考試的實(shí)現(xiàn),可以不斷地對(duì)試題庫(kù)的內(nèi)容進(jìn)行完善。在每一次組卷時(shí),可以進(jìn)一步對(duì)每題的內(nèi)容進(jìn)行分析,發(fā)現(xiàn)細(xì)微的問(wèn)題,對(duì)試題庫(kù)的內(nèi)容作進(jìn)一步地修改。這樣避免了傳統(tǒng)出試卷時(shí),考試一次結(jié)束一次 的缺點(diǎn)。由于試題庫(kù)的建設(shè)具有繼承性,規(guī)范性,可以不斷積累考試經(jīng)驗(yàn),豐富試題庫(kù)的內(nèi)容。 二 數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開(kāi)發(fā)簡(jiǎn)介 在數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開(kāi)發(fā)之前,對(duì)開(kāi)發(fā)數(shù)據(jù)庫(kù)的基本概念應(yīng)當(dāng)了解,對(duì)數(shù)據(jù)庫(kù)的結(jié)構(gòu)、開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序的步驟、開(kāi)發(fā)體系及方法都應(yīng)當(dāng)有相當(dāng)清晰的了解和認(rèn)識(shí)。 數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開(kāi)發(fā)的目標(biāo)是建立一個(gè)滿(mǎn)足用戶(hù)長(zhǎng)期需求的產(chǎn)品。開(kāi)發(fā)的主要過(guò)程為:理解用戶(hù)的需求,然后,把它們轉(zhuǎn)變?yōu)橛行У臄?shù)據(jù)庫(kù)設(shè)計(jì)。把設(shè)計(jì)轉(zhuǎn)變?yōu)閷?shí)際的數(shù)據(jù)庫(kù),并且這些數(shù)據(jù)庫(kù)帶有功能完備、高效能的應(yīng)用。 數(shù)據(jù)庫(kù)技術(shù)在計(jì)算機(jī)軟件鄰域研究中一直是 非常重要的主題,產(chǎn)生于 60 年代, 30 多年來(lái)數(shù)據(jù)庫(kù)技術(shù)得到了迅速發(fā)展,并已形成較為完整的理論體系和一大批實(shí)用系統(tǒng)。并且,近年來(lái),隨著 World Wide Web(WWW)的猛增及 Internet 技術(shù)的迅速發(fā)展,使得數(shù)據(jù)庫(kù)技術(shù)之時(shí)成為最熱門(mén)技術(shù)之一。 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 2.1 數(shù)據(jù)庫(kù) 數(shù)據(jù)庫(kù)由 DBMS(數(shù)據(jù)庫(kù)管理系統(tǒng))處理, DBMS 則由開(kāi)發(fā)人員和用戶(hù)通過(guò)應(yīng)用程序直接或間接地使用。它主要包括四個(gè)要素:用戶(hù)數(shù)據(jù)、元數(shù)據(jù)、索引和應(yīng)用元數(shù)據(jù)。 用戶(hù)數(shù)據(jù): 目前,大多數(shù)主流數(shù)據(jù)庫(kù)管理系統(tǒng)把用戶(hù)數(shù)據(jù)表示為關(guān)系?,F(xiàn)在把關(guān)系看作數(shù)據(jù)表。表的 列包含域或?qū)傩?,表的行包含?duì)應(yīng)業(yè)務(wù)環(huán)境中的實(shí)體的記錄。并非所有的關(guān)系都同樣符合要求,有些關(guān)系比其它關(guān)系更結(jié)構(gòu)化一些。 元數(shù)據(jù): 數(shù)據(jù)庫(kù)是自描述的,這就意味著它自身包含了它的結(jié)構(gòu)的描述,這種結(jié)構(gòu)的描述稱(chēng)作元數(shù)據(jù)。因?yàn)?DBMS產(chǎn)品是用來(lái)存儲(chǔ)和操縱表的,所以大多數(shù)產(chǎn)品把元數(shù)據(jù)以表的形式存儲(chǔ),有時(shí)稱(chēng)作系統(tǒng)表。這些系統(tǒng)表存儲(chǔ)了數(shù)據(jù)庫(kù)中表的情況,指出每一個(gè)表中有多少列,那一列是主關(guān)鍵字,每一列的數(shù)據(jù)類(lèi)型的描述,它也存儲(chǔ)索引、關(guān)鍵字、規(guī)則和數(shù)據(jù)庫(kù)結(jié)構(gòu)的其他部分。在表中存儲(chǔ)元數(shù)據(jù)不僅對(duì) DBMS是有效的,對(duì)用戶(hù)也是方便的,因 為他們可以使用與查詢(xún)用戶(hù)數(shù)據(jù)同樣的查詢(xún)工具來(lái)查詢(xún)?cè)獢?shù)據(jù)。本文介紹的 SQL 語(yǔ)言可以同時(shí)用于元數(shù)據(jù)和用戶(hù)數(shù)據(jù)。 應(yīng)用元數(shù)據(jù):存儲(chǔ)在數(shù)據(jù)庫(kù)中的第四種數(shù)據(jù)是應(yīng)用元數(shù)據(jù),它用來(lái)存儲(chǔ)用戶(hù)窗體、報(bào)表、查索引:第三種類(lèi)型的數(shù)據(jù)改進(jìn)了數(shù)據(jù)庫(kù)的性能和可訪問(wèn)性,這種數(shù)據(jù)經(jīng)常稱(chēng)作開(kāi)銷(xiāo)數(shù)據(jù),盡管有時(shí)也采用其他類(lèi)型的數(shù)據(jù)結(jié)構(gòu),如鏈表,但它主要還是索引。索引可以用來(lái)排序和快速訪問(wèn)數(shù)據(jù)。 查詢(xún)和其他形式的查詢(xún)組件。并非所有的 DBMS 都支持應(yīng)用組件,支持組件的 DBMS 也不一定把全部組件的結(jié)構(gòu)作為應(yīng)用元數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中。然而,大多數(shù)現(xiàn)代的 DBMS產(chǎn)品存儲(chǔ)這種數(shù)據(jù)作為數(shù)據(jù)庫(kù)的一部分。一般來(lái)說(shuō),數(shù)據(jù)庫(kù)開(kāi)發(fā)人員和用戶(hù)都不直接訪問(wèn)應(yīng)用元數(shù)據(jù),想反,他們通過(guò) DBMS 中的工具來(lái)處理這些數(shù)據(jù)。 2.2 數(shù)據(jù)庫(kù)管理系統(tǒng) 數(shù)據(jù)庫(kù)管理系統(tǒng)( DBMS)是指數(shù)據(jù)庫(kù)系統(tǒng)中管理數(shù)據(jù)的軟件系統(tǒng)。 DBMS 是數(shù)據(jù)庫(kù)系統(tǒng)的核心組成部分。對(duì)數(shù)據(jù)庫(kù)的一切操作,包括定義、更新及各種控制 ,都是通過(guò) DBMS 進(jìn)行的。DBMS總是基于某種數(shù)據(jù)模型,可以把 DBMS看成是某種數(shù)據(jù)模型在計(jì)算機(jī)系統(tǒng)上的具體實(shí)現(xiàn)。根據(jù)數(shù)據(jù)模型的不同, DBMS可以分成層次型、網(wǎng)狀型、關(guān)系型、面向?qū)ο笮偷取?Access 2000就是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。 DBMS的特點(diǎn)和功能可以分為三個(gè)子系統(tǒng):設(shè)計(jì)工具子系統(tǒng)、運(yùn)行子系統(tǒng)和 DBMS引擎。 設(shè)計(jì)子系統(tǒng)有一個(gè)方便數(shù)據(jù)庫(kù)及其應(yīng)用創(chuàng)建的工具集。它典型地包含產(chǎn)生表、窗體、查詢(xún)和報(bào)表的工具。 DBMS產(chǎn)品還提供編程語(yǔ)言和對(duì)編程語(yǔ)言的接口 ;運(yùn)行子系統(tǒng)處理用設(shè)計(jì)子系統(tǒng)開(kāi)發(fā)的應(yīng)用組件。它所包含的運(yùn)行處理器用來(lái)處理窗體和數(shù)據(jù)庫(kù)的數(shù)據(jù)交互,以及回答查詢(xún)和打印報(bào)表等 ;DBMS引擎從其他兩個(gè)組件接受請(qǐng)求,并把它們翻譯成對(duì)操作系統(tǒng)的命令,以便讀寫(xiě)物理介質(zhì)上的數(shù)據(jù)。 DBMS引擎還涉及事務(wù) 管理、鎖、備份和恢復(fù)。 2.3 創(chuàng)建數(shù)據(jù)庫(kù) 數(shù)據(jù)庫(kù)模式 : 數(shù)據(jù)庫(kù)模式定義了數(shù)據(jù)庫(kù)的結(jié)構(gòu)、表、關(guān)系、域和業(yè)務(wù)規(guī)則。數(shù)據(jù)庫(kù)模式是一種設(shè)計(jì),數(shù)據(jù)庫(kù)和應(yīng)用正是建立在此基礎(chǔ)上的。 數(shù)據(jù)庫(kù)設(shè)計(jì)主要是進(jìn)行數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì),即將數(shù)據(jù)按一定的分類(lèi)、分組系統(tǒng)和邏輯層次組織起來(lái),是面向用戶(hù)的。數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)需要綜合企業(yè)各個(gè)部門(mén)的存檔數(shù)據(jù)和數(shù)據(jù)需求,分析各個(gè)數(shù)據(jù)之間的關(guān)系,按照 DBMS提供的功能和描述工具,設(shè)計(jì)出規(guī)模適當(dāng)、正確反映數(shù)據(jù)關(guān)系、數(shù)據(jù)冗余少、存取效率高、能滿(mǎn)足多種查詢(xún)要求的數(shù)據(jù)模型。 數(shù)據(jù)庫(kù)中的關(guān)系表是二維的,它有如下 四個(gè)性質(zhì): 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: l 在表中的任意一列上,數(shù)據(jù)項(xiàng)應(yīng)屬于同一個(gè)屬性 (如圖中每一列都存放著不同記錄的同一屬性數(shù)據(jù) )。 2 表中所有行都是不相同的,不允許有重復(fù)組項(xiàng)出現(xiàn) (如圖中每一行都是一個(gè)不同的記錄 )。 3 在表中,行的順序無(wú)關(guān)緊要 (如圖中每行存的都是記錄,至于先放哪一個(gè)都沒(méi)關(guān)系 )。 4 在表中,列的順序無(wú)關(guān)緊要,但不能重復(fù) 為防止數(shù)據(jù)庫(kù)出現(xiàn)更新異常、插入異常、刪除異常、數(shù)據(jù)冗余太大等現(xiàn)象,關(guān)系型數(shù)據(jù)庫(kù)要盡量按關(guān)系規(guī)范化要求進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)。 三 應(yīng)用系統(tǒng)開(kāi)發(fā)工具 3.1 Delphi 簡(jiǎn)介 Delphi 是一個(gè)極有代表性的面向?qū)ο箝_(kāi)發(fā)工具;它將面向?qū)ο蟮某绦蛟O(shè)計(jì)方法與數(shù)據(jù)庫(kù)技術(shù);網(wǎng)絡(luò)技術(shù)以及可視化;事件驅(qū)動(dòng),代碼自動(dòng)生成等先進(jìn)技術(shù)完美的結(jié)合在一起,使用它可以直觀的,快速地開(kāi)發(fā),高質(zhì)量的 windows 應(yīng)用程序。 Delphi 強(qiáng)大的易用的特點(diǎn)得到程序員的青睞。 Delphi7.0除了保留以前版本的強(qiáng)大功能之處,更在數(shù)據(jù)庫(kù)程序開(kāi)發(fā)方面提供了強(qiáng)有力的支持,使程序員完全可能輕松開(kāi)發(fā)出復(fù)雜且功能強(qiáng)大的數(shù)據(jù)庫(kù)程序。 Delphi 類(lèi)可以粗略地分成兩部分:一部分是組件類(lèi),這些組件類(lèi)通常以某種方式出現(xiàn)在組件面板上,當(dāng)用戶(hù)從組 件面板上點(diǎn)取一個(gè)類(lèi)的圖標(biāo)后,在程序中就自動(dòng)生成了該類(lèi)的對(duì)象(非可視組件除外);另一部分是功能類(lèi),這此功能類(lèi)的對(duì)象通常出現(xiàn)在程序代碼中,起著不可代替的作用,但是這些功能類(lèi)在組件面板上是找不到的。在 Delphi中,每一個(gè)類(lèi)的祖先都是 Tobject類(lèi) ,整個(gè)類(lèi)的層次結(jié)構(gòu)就像一棵倒掛的樹(shù),在最頂層的樹(shù)根即為 Tobject 類(lèi)。這樣,按照面向?qū)ο缶幊痰幕舅枷耄褪沟糜脩?hù)可用 Tobject 類(lèi)這個(gè)類(lèi)型代替任何其它類(lèi)的數(shù)據(jù)類(lèi)型。 3.2 Delphi 數(shù)據(jù)庫(kù)訪問(wèn)方法與數(shù)據(jù)庫(kù)組件介紹 3.2.1數(shù)據(jù)庫(kù)訪問(wèn)方法 1. BDE 方法:它提 供了存取各種文型和客戶(hù) /服務(wù)器型數(shù)據(jù)庫(kù)的驅(qū)動(dòng)器程序。該方法直接訪問(wèn) Paradox 和 Dbase 等數(shù)據(jù)庫(kù)或通過(guò) DOBC( Open DataBase connecivity,開(kāi)放數(shù)據(jù)庫(kù))來(lái)訪問(wèn) Access 和 PoxPro 等數(shù)據(jù)庫(kù),還可通過(guò)內(nèi)嵌方式訪問(wèn) SQL Servr、 Oracle 和 DB2 等大型數(shù)據(jù)庫(kù)。 2. ADO 方法: ADO 方法是微軟提供的一種數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)。通過(guò) ADO 技術(shù)可方便的訪問(wèn)各種類(lèi)型的數(shù)據(jù)庫(kù),尤其對(duì)于 OLEDB 類(lèi)型的數(shù)據(jù)庫(kù), ADO 更是訪問(wèn)數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)接口。Delphi 通過(guò) ADO 技術(shù)可讓開(kāi)發(fā)者快速訪問(wèn)關(guān)系或非 關(guān)系型數(shù)據(jù)庫(kù),但使用時(shí)需安裝 ADO 的數(shù)據(jù)庫(kù)引擎。 3. MIDAS 方法: MIDAS 方法是 Delphi 用于開(kāi)發(fā)多層應(yīng)用系統(tǒng)的中間透明引擎。通過(guò)MIDAS,開(kāi)發(fā)者可使用相同的組件來(lái)存取不同的后臺(tái)應(yīng)用程序服務(wù)器。這些后臺(tái)應(yīng)用服務(wù)器程序包括 COM+/DCOM 應(yīng)用程序服務(wù)器、 MTS中間件或 CORBA應(yīng)用程序服務(wù)器。 MIDAS方法實(shí)現(xiàn)了真正意義上的客戶(hù)端程序與后臺(tái)數(shù)據(jù)庫(kù)的分離,但 MIDAS的靈活性很差,與數(shù)據(jù)感應(yīng)控件關(guān)聯(lián)過(guò)于密切,限制了程序員的創(chuàng)造性。 4. dbExpress 方法: Delphi 6.0提供了新一代的跨平臺(tái)數(shù)據(jù)訪 問(wèn)引擎 dbExpress方法,它由一組新控件、技術(shù)和驅(qū)動(dòng)程序組成,并通過(guò)這些組成部分和各種數(shù)據(jù)源連鏈接。如配合無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 不同的數(shù)據(jù)庫(kù)動(dòng)態(tài)鏈接庫(kù)文件,還可處理后臺(tái)數(shù)據(jù)庫(kù)數(shù)據(jù)。因此也是 Delphi 和 Kylix 的核心數(shù)據(jù)訪問(wèn)。 綜上所述,雖然 Delphi 的各個(gè)版本提供多種數(shù)據(jù)庫(kù)的連接和訪問(wèn)方法,但在同一個(gè)應(yīng)用程序中,開(kāi)發(fā)者幾乎不可能同時(shí)選用多種連接方法,因而選擇合適方法是一個(gè)必須在開(kāi)發(fā)前仔細(xì)考慮的問(wèn)題。 3.2.2數(shù)據(jù)庫(kù)組件 用 Delphi6.0開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用,重點(diǎn)是和各種數(shù)據(jù)庫(kù)組件打交道,控件組有: BDE控件組、 ADO 控件組、 Date Controls 控件組和 dbExpress 控件組。 1ADO 是 Micrsoft 公司關(guān)于各種類(lèi)型數(shù)據(jù)的高等界面,后來(lái)逐漸演變成滿(mǎn)足所有數(shù)據(jù)訪問(wèn)需要的完整解決辦法。 ADO的對(duì)象模型是所有數(shù)據(jù)訪問(wèn)接口對(duì)象模型中最簡(jiǎn)單的一種。它主要控件有: TTADOConnection控件, TADOCommand控件, ADODateSet控件, TADOTable 控件, TADOQuery控件, TADOStoeProc控件。 Delphi 的 ADO 組件無(wú)需依靠 BDE 而是使用 ADO 技術(shù),提供了可以通過(guò)數(shù)據(jù)控制組件訪問(wèn)數(shù)據(jù)的新 方法。唯一的要求是在使用 ADO組件時(shí)必須運(yùn)行 ADO/OLE DB。 ADO組件的使用使得 DELPHI在訪問(wèn)數(shù)據(jù)的類(lèi)型和采用的技術(shù)方面都有了很大的突破 四 商品銷(xiāo)售管理系統(tǒng)目標(biāo)分析 4.1:任務(wù)分析 : 由于商品銷(xiāo)售管理系統(tǒng)是一個(gè)用來(lái)幫助使用者管理商品銷(xiāo)售流程的軟件。使用者通過(guò)對(duì)銷(xiāo)售過(guò)程中所涉及到的商品,訂單,銷(xiāo)售商等資料的錄入,便可以輕松實(shí)現(xiàn)商品銷(xiāo)售流程的管理。所以,此系統(tǒng)必須向使用者提供一下一些具體功能:。 1:軟件必須向使用者提供商品基本的錄入,刪除,編輯等基本功能 2:鑒于商品的不 同銷(xiāo)售方式(分為訂單銷(xiāo)售和代理商銷(xiāo)售兩種形式),軟件必須向使用者提供商品銷(xiāo)售環(huán)節(jié)中的基本管理功能,因此必須有訂單分銷(xiāo)模塊和代理商分銷(xiāo)模塊。 3:軟件必須向使用者提供基本的查詢(xún)功。 4:由于是銷(xiāo)售管理軟件,所以系統(tǒng)安全性必須是要考慮的問(wèn)題。因此,必須實(shí)現(xiàn)以下兩點(diǎn): a:系統(tǒng)操作員機(jī)制。對(duì)系統(tǒng)的使用者,按等級(jí)開(kāi)放管理權(quán)限,這樣可以在一定程度上保證數(shù)據(jù)庫(kù)系統(tǒng)的安全性,避免數(shù)據(jù)被泄漏,非法更改等。 B:銷(xiāo)售數(shù)據(jù)直接反映了一個(gè)銷(xiāo)售單位的盈虧狀況,鑒于銷(xiāo)售數(shù)據(jù)的重要性,所以必須對(duì)這些數(shù)據(jù)加以保護(hù),在系統(tǒng)崩潰時(shí)或者誤操作 等情況下,可以對(duì)數(shù)據(jù)進(jìn)行恢復(fù)。這就需要系統(tǒng)提供備份功能。 5 :對(duì)于銷(xiāo)售數(shù)據(jù)不能只存儲(chǔ)在計(jì)算機(jī)中,而是需要導(dǎo)出步驟,最后以印刷品的形式出現(xiàn)在使用者面前,該軟件設(shè)計(jì)的最終目的才能得以具體的實(shí)現(xiàn)。所以,打印功能是必不可少的系統(tǒng)功能之一。 經(jīng)過(guò)系統(tǒng)分析階段,得下圖: 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 4.2:系統(tǒng)目標(biāo) 本系統(tǒng)的目標(biāo)是 :使用者通過(guò)對(duì)基本銷(xiāo)售信息的錄入,即可方便直觀的實(shí)現(xiàn)對(duì)商品交易流程的管理,查詢(xún),以及對(duì)已有信息的打印輸出等功能。本銷(xiāo)售系統(tǒng)定義 了兩種銷(xiāo)售模式: 1:訂單銷(xiāo)售。即銷(xiāo)售方通過(guò)訂單方式銷(xiāo)售的商品。 2:代理商銷(xiāo)售方式。(此功能略復(fù)雜,所以在實(shí)現(xiàn)的是時(shí)候必須對(duì)其提供錄入修改查詢(xún)等基本功能)。 除了上述基本功能外,系統(tǒng)還必須提供必要的附加功能: 1:數(shù)據(jù)備份功能。 2:密碼登陸功能。 3:操作員及相應(yīng)的權(quán)限管理功能。 訂單銷(xiāo)售 數(shù)據(jù)備份 密碼登陸 數(shù)據(jù)恢復(fù) 權(quán)限管理 訂單銷(xiāo)售錄入 訂單銷(xiāo)后查詢(xún) 代理商進(jìn) 貨數(shù)據(jù)錄入 代理商銷(xiāo)售查詢(xún) 代理商進(jìn)貨明細(xì) 代理商銷(xiāo)售 操 作 員信 息 管理 代 理 商信 息 管理 商品交易管理系統(tǒng) 銷(xiāo)售子系統(tǒng) 安全子系統(tǒng) 人員管理子系統(tǒng) 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 綜上所述,為實(shí)現(xiàn)上述系統(tǒng)目標(biāo),必須定義相應(yīng)功能的單元模塊,所以本系統(tǒng)的層次結(jié)構(gòu)如下圖所示: 五 商品銷(xiāo)售管理系統(tǒng)數(shù) 據(jù)庫(kù) 設(shè)計(jì) 5.1創(chuàng)建應(yīng)用程序數(shù)據(jù)表 在這個(gè) 商品銷(xiāo)售管理系統(tǒng)中我們?cè)O(shè)計(jì)了若干個(gè) paradox類(lèi)型的 table 表(代理商信息表 商品信息表 操作員信息表代理商銷(xiāo)售記錄訂單銷(xiāo)售記錄,系統(tǒng)信息表 ),每個(gè)表的具體字段內(nèi)容如下 : 1: depot(代理商信息表) 字段名 類(lèi)型 長(zhǎng)度 關(guān)鍵字 備注 NO + 是 排序用 ID A 20 代理商編號(hào) NAME A 20 代理商姓名 TYPE A 20 代理商地址 MEMO A 200 代理商備注 2: Goods(商品信息表) 字段名 類(lèi)型 長(zhǎng)度 關(guān)鍵字 備注 文件 基本信息 業(yè)務(wù)查詢(xún) 數(shù)據(jù)備份 系統(tǒng)設(shè)置 數(shù)據(jù)恢復(fù) 權(quán)限管理 退出 操作員信息 代理商信息 商品信息 代理商進(jìn)貨數(shù)據(jù)錄入 代理商退貨數(shù)據(jù)錄入 訂單銷(xiāo)售數(shù)據(jù)錄入 銷(xiāo)售管理 訂單進(jìn)貨統(tǒng)計(jì) 代理商進(jìn)貨查詢(xún) 代理商進(jìn)貨明細(xì) 商品分布統(tǒng)計(jì) 商品交易管理系統(tǒng) 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: NO + 是 排序用 ID A 20 是 商品編號(hào) NAME A 40 是 商品名稱(chēng) TYPE A 20 商品型號(hào) UNIT A 6 單位 MEMO A 200 備注 3: sysuser(操作員信息表) 字段名 類(lèi)型 長(zhǎng)度 關(guān)鍵字 備注 NO + 是 排序用 ID A 20 操作員編號(hào) NAME A 20 操作員姓名 SEX A 2 操作員性別 PASS A 20 操作員密碼 RIGHTS A 50 操作員權(quán)限 MEMO A 200 操作員備注 4: SysUserRights(權(quán)限表 ) 字段名 類(lèi)型 長(zhǎng)度 關(guān)鍵字 備注 NO + 是 排序用 ID A 20 權(quán)限編號(hào) NAME A 20 權(quán)限名稱(chēng) RIGHTS A 20 權(quán)限開(kāi)放程度 5: YWYData(訂單信息) 字段名 類(lèi)型 長(zhǎng)度 關(guān)鍵字 備注 No + 是 排序用 ID A 20 訂單編號(hào) NAME A 20 所訂商品名稱(chēng) XH A 20 商品型號(hào) SL A 200 訂貨數(shù)量 JFRQ A 20 交付日期 Memo A 200 訂單備注 6: stockrecord(代理商進(jìn)貨表) 字段名 類(lèi)型 長(zhǎng)度 關(guān)鍵字 備注 No + 是 排序用 MYDATE A 10 購(gòu)買(mǎi)日期 DEPOTID A 20 代理商編號(hào) 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: GOODSID A 20 商品編號(hào) NUMBER S 進(jìn)貨數(shù)量 ID A 20 進(jìn)貨代號(hào) PRICE N 價(jià)格 Memo A 200 備注 7: threcord(代理商退貨表) 字段名 類(lèi)型 長(zhǎng)度 關(guān)鍵字 備注 No + 是 排序用 MYDATE A 10 退貨日期 DEPOTID A 20 退貨代理商編號(hào) GOODSID A 20 退貨商品編號(hào) NUMBER S 退貨數(shù)量 ID A 20 退貨代號(hào) PRICE N 退貨數(shù)額 Memo A 200 備注 8: JXCrecord(進(jìn)銷(xiāo)存明細(xì)表) 字段名 類(lèi)型 長(zhǎng)度 關(guān)鍵字 備注 No + 是 排序用 JXC A 20 進(jìn)銷(xiāo)存狀態(tài) MYDATE A 10 進(jìn)銷(xiāo)存日期 GOODSID A 20 商品編號(hào) NUMBER S 進(jìn)貨數(shù)量 PRICE A 20 價(jià)格 Memo A 200 備注 5.1.1定義數(shù)據(jù)庫(kù)別名 為了方便對(duì)數(shù)據(jù)庫(kù)中文件進(jìn)行管理,在創(chuàng)建數(shù)據(jù)庫(kù)之前,一般先要建立一個(gè)存放數(shù)據(jù)庫(kù)的文件夾。然后使用 DBD和 BDE,按照下列方法定義數(shù)據(jù)庫(kù)別名。 建立數(shù)據(jù)庫(kù)別名是在 Delphi 7提供的數(shù)據(jù)庫(kù)驅(qū)動(dòng)器( BDE, Borland Database Engine)中進(jìn)行的。 數(shù)據(jù)庫(kù)驅(qū)動(dòng)器( BDE, Borland Database Engine)又稱(chēng)集成化數(shù)據(jù)庫(kù)應(yīng)用程序編程接口( IDAPI),它是數(shù)據(jù)庫(kù)工具中的核心部件,是運(yùn)行數(shù)據(jù)庫(kù)應(yīng)用程序時(shí)所必須的支撐系統(tǒng)。 BDE Administrator是設(shè)置和管理 BDE的工具,可以用來(lái)管理 BDE中的別名和驅(qū)動(dòng)程序。 建立數(shù)據(jù)庫(kù)別名具體操作步驟如下: 步驟 1:打開(kāi) Windows 的資源管理器,在 H盤(pán)(或其他盤(pán)符,但是設(shè)置別名路徑時(shí)應(yīng)作相應(yīng)的修改)創(chuàng)建“畢業(yè)設(shè)計(jì)”文件夾,并在該文件夾下在創(chuàng)建一個(gè)“數(shù)據(jù)庫(kù)”的子文件夾。用于存放本系統(tǒng)的 8個(gè)數(shù)據(jù)表,名稱(chēng)分別為:“ depot” “ Goods” “ sysuser” “ SysUserRights” “ YWYData” “ stockrecord” 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: “ threcord” “ JXCrecord”。 步驟 2:?jiǎn)螕?Windows桌面的“開(kāi)始”菜單,選擇“程序”“ Borland Delphi 7” “ BDE Administrator”。(要進(jìn)入 BDE Administrator 進(jìn)行操作,必須先關(guān)閉全部正在使用的 BDE應(yīng)用程序,為的是保證再進(jìn)入編程環(huán)境時(shí)所設(shè)置的參數(shù)生效。) 步驟 3:右鍵單擊 Database 頁(yè)卡,在彈出菜單中選擇 new 菜單項(xiàng)來(lái)增設(shè)一個(gè)數(shù)據(jù)庫(kù)別名。在彈出的 Database Driver Name 選擇窗口中選擇 STANDARD,單擊 OK 按鈕。輸入“ CPXSGL”作為數(shù)據(jù)庫(kù)別名。把 CPXSGL數(shù)據(jù)庫(kù)的路徑填入 Definition頁(yè)卡的 PATH 項(xiàng),本例填入“ H:畢業(yè)設(shè)計(jì) 數(shù)據(jù)庫(kù) ”。單擊 Configuration 頁(yè)卡,在 Drivers 選項(xiàng)中選擇 Native 類(lèi)驅(qū)動(dòng)程序,在展開(kāi)的樹(shù)狀結(jié)構(gòu)中選擇PARADOX 驅(qū)動(dòng)程序項(xiàng)。設(shè)置完畢后選擇 Object 菜單,單擊 save as 菜單項(xiàng)。重復(fù)步驟 3,直到需要的數(shù)據(jù)庫(kù)別名設(shè)計(jì)完畢。 5.1.2 定義數(shù)據(jù)表設(shè)計(jì) DBD(Database Desktop)是 Delphi中提供的簡(jiǎn)單實(shí)用的數(shù)據(jù)庫(kù)桌面工具,它的功能是創(chuàng)建 維護(hù)以及查詢(xún)數(shù)據(jù)庫(kù)。 1. 表結(jié)構(gòu)設(shè)計(jì) 依據(jù) 表一給出的字段設(shè)計(jì)表的字段名稱(chēng),字段類(lèi)型,初始長(zhǎng)度,初始值。創(chuàng)建數(shù)據(jù)庫(kù)表結(jié)構(gòu)具體操作步驟如下: 步驟 1:?jiǎn)螕?Windows桌面的“開(kāi)始”菜單,選擇“程序”“ Borland Delphi 7”“ Database Desktop”。 步驟 2:選擇“ File” “ New” “ Table”,在彈出的 Create Table 對(duì)話(huà)框中選擇 Table Type 為 Paradox7.在表結(jié)構(gòu)設(shè)計(jì)窗體中填寫(xiě)字段名,類(lèi)型,長(zhǎng)度,默認(rèn)值。 步驟 3:設(shè)計(jì)好表結(jié)構(gòu)后要對(duì)表結(jié)構(gòu)進(jìn)行保存。單擊 save as按鈕,在彈出的保存對(duì)話(huà)框 中選擇 Alias為“ CPXSGL” (設(shè)計(jì)其他數(shù)據(jù)庫(kù)時(shí)要做相應(yīng)更改 ),填寫(xiě)表名后單擊“保存”按鈕。重復(fù)步驟 2和步驟 3直到設(shè)計(jì)完所有表結(jié)構(gòu)。 2. 數(shù)據(jù)錄入 表結(jié)構(gòu)設(shè)計(jì)好后,就須對(duì)每個(gè)數(shù)據(jù)庫(kù)中的表的內(nèi)容進(jìn)行錄入。 輸入表字段內(nèi)容具體操作步驟如下: 步驟 1:?jiǎn)螕?Windows桌面的“開(kāi)始”菜單,選擇“程序”“ Borland Delphi 7”“ Database Desktop”。 步驟 2:選擇“ File” “ Open” “ Table”,在彈出的 Select Table 對(duì)話(huà)框中選擇 Alias為 CPXSGL(對(duì)其他 數(shù)據(jù)庫(kù)表進(jìn)行輸入時(shí)該別名應(yīng)作相應(yīng)變化 ). 步驟 3:使用“ Table” “ Edit”菜單項(xiàng),則即可進(jìn)入編輯狀態(tài)對(duì)數(shù)據(jù)直接進(jìn)行修改。在編輯狀態(tài)下按 Insert 鍵,可以插入一條新的記錄行;按 Delete下鍵,可以刪除當(dāng)前的記錄。若再次選擇“ Table” “ Edit”菜單項(xiàng),則 DBD將保存所進(jìn)行的修改。重復(fù)步驟 2和步驟 3直到所有表內(nèi)容輸入完畢。 5.2: DELPHI中數(shù)據(jù)文件路徑的管理 Delphi中的 Table控件 ( Component) 和 query控件都需要有一個(gè) DatabaseName屬性??梢杂?DatabaseName 屬性來(lái)指定該控件所引用的數(shù)據(jù)表路徑。有兩種方法可以為屬性DatabaseName 設(shè)置路徑:第一種方法是直接輸入數(shù)據(jù)表所在路徑,另一種方法是使用數(shù)據(jù)無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 庫(kù)別名( Alias)。在 Delphi 中數(shù)據(jù)庫(kù)別名是在數(shù)據(jù)庫(kù)引擎( BDE)中設(shè)定的, 5.2 的方法在設(shè)計(jì)時(shí)是可行的,然而需要對(duì)程序進(jìn)行移植時(shí)卻會(huì)導(dǎo)致程序運(yùn)行出現(xiàn)異常。 數(shù)據(jù)庫(kù)應(yīng)用程序的移植是一個(gè)重要的問(wèn)題。因?yàn)樵跀?shù)據(jù)庫(kù)應(yīng)用程序中要訪問(wèn)數(shù)據(jù)庫(kù)或數(shù)據(jù)表,就要涉及到數(shù)據(jù)文件的路徑。一般來(lái)說(shuō),數(shù)據(jù)庫(kù)應(yīng)用程序開(kāi)發(fā)完成后要移植到其他的機(jī)器上使用,因此數(shù)據(jù)庫(kù)應(yīng)用程 序運(yùn)行時(shí)的數(shù)據(jù)文件路徑很可能和開(kāi)發(fā)時(shí)的不同。所以必須對(duì)數(shù)據(jù)文件的路徑進(jìn)行有效的管理,以便用于系統(tǒng)的移植。管理數(shù)據(jù)文件路徑的方法有三種:把數(shù)據(jù)文件建立在應(yīng)用程序所在目錄的子目錄下利用配置文件存放數(shù)據(jù)路徑 利用數(shù)據(jù)庫(kù)別名存放數(shù)據(jù)庫(kù)路徑。 本試題庫(kù)系統(tǒng)采用的是第三種方法,且具有更強(qiáng)的移植性,每次啟動(dòng)時(shí)都會(huì)對(duì)別名進(jìn)行檢查并進(jìn)行重設(shè),以防異常情況的出現(xiàn),但是損失了一定的運(yùn)行時(shí)間。下面代碼說(shuō)明如何建立名字為“ CPXSGL”的別名,它的數(shù)據(jù)庫(kù)路徑為“ H:畢業(yè)設(shè)計(jì) 數(shù)據(jù)庫(kù)”,數(shù)據(jù)庫(kù)類(lèi)型為PARADOX。 Session.ConfigMode:=cmall; Session.AddStandardAlias(CPXSGL, E:畢業(yè)設(shè)計(jì) 數(shù)據(jù)庫(kù) ,PARADOX); Session.SaveConfigFile; /保存新建立的別名 如須對(duì)別名進(jìn)行刪除,則先要檢查別名是否存在,如果對(duì)不存在的別名做刪除操作則會(huì)引起異常。下面代碼說(shuō)明如何檢查數(shù)據(jù)庫(kù)別名“ CPXSGL”是否存在,如果存在則進(jìn)行刪除。 定義變量: var strAlias:TStringList; /用于保存 BDE數(shù)據(jù)庫(kù)別名表 代碼: strAlias:=TStringList.Create;/生成 TstringList類(lèi)的實(shí)例 Session.GetAliasNames(strAlias);/獲取數(shù)據(jù)庫(kù)別名 if (strAlias.IndexOf(CPXSGL) -1) then begin session.DeleteAlias(CPXSGL); session.SaveConfigFile; end; 六 試題庫(kù)系統(tǒng)應(yīng) 用程序 界面 設(shè)計(jì) 本系統(tǒng)采用圖形化界面并且提供幫助,界面友好,操作方便,可以大大降低了本軟件的使用難度和維護(hù)難度,為軟件的使用者帶來(lái)方便。 系統(tǒng)在進(jìn)行設(shè)計(jì)時(shí),主要使用的是 delphi中的一部分的控件,最長(zhǎng)使用的是 Label控件、 Button控件、 Radiogroup 控件, Memo控件。數(shù)據(jù)庫(kù)方面常用 Datasource控件、 ADOQuery控件、 ADOConnection控件、 DBNavingation控件、 ADOTable控件、 DBEdit控件、 DBGrid控件。 6.1 用戶(hù)登錄窗體 本窗體 的任務(wù)是通過(guò)用戶(hù)輸入密碼判斷用戶(hù)是否是合法的用戶(hù) .它用于管理員按照用戶(hù)名和密碼進(jìn)行登錄。以免不相關(guān)得人進(jìn)入系統(tǒng)進(jìn)行不良的操作,而對(duì)系統(tǒng)進(jìn)行破壞,導(dǎo)致整個(gè)系統(tǒng)進(jìn)行癱瘓。 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 6.2 主窗體 該窗體是本系統(tǒng)的統(tǒng)籌界面。它是系統(tǒng)的結(jié)構(gòu)匡架,便于對(duì)整個(gè)系統(tǒng)的觀摩、管理 .主要使用 Label 和 panl 以及 manu 等控件實(shí)現(xiàn)的。 Image 控件使得界面得以美化。 由于每次操作不一定會(huì)用到所有的數(shù)據(jù)庫(kù),所以沒(méi)有必要在每次運(yùn)行時(shí)生成所有的數(shù)據(jù)庫(kù)別名。Session控件提供了動(dòng)態(tài)生成數(shù)據(jù)庫(kù)別名的方法,使通過(guò)操作選擇窗體進(jìn)行優(yōu) 選擇的別名生成成為可能。 6.3 系統(tǒng)設(shè)置窗體 本窗體由 Lable 和 Edit 控件組成,可以實(shí)現(xiàn)系統(tǒng)基本信息的設(shè)置。在第一次運(yùn)行本系統(tǒng)時(shí), 本窗口自動(dòng)運(yùn)行,要求使用者輸入系統(tǒng)的基本信息, 以及指定數(shù)據(jù)庫(kù)所在路徑。 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 6.4 權(quán)限管理窗體 該窗體是向用戶(hù)提供權(quán)限管理功能,通過(guò)對(duì)用戶(hù)級(jí)別的選擇再組合相應(yīng)的權(quán)限,即可方便得以對(duì)統(tǒng)一數(shù)據(jù)庫(kù)的相同或不同的數(shù)據(jù)表進(jìn)行操作。界面簡(jiǎn)捷是本窗體的一個(gè)有點(diǎn),這使對(duì)權(quán)限的管理十分方便。 6.5 操作員信息設(shè)置窗體 這里是設(shè)置操作員信息的窗體單元。用戶(hù) 可以通過(guò)增加按鈕任意增加一個(gè)操作員,同樣也可以通過(guò)修改或者刪除按鈕實(shí)現(xiàn)相應(yīng)的操作。另外,為了方便用戶(hù),雙擊 dbgrid 也會(huì)出現(xiàn)編輯對(duì)話(huà)框。 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 此外,還有類(lèi)似的窗體,如代理商信息設(shè)置,商品信息設(shè)置等等,由于這些窗體在結(jié)構(gòu)上具有相似性,在此就不一一贅述了。 6.6 代理商進(jìn) /退貨錄入窗口 如上圖所示,在錄入進(jìn)貨數(shù)據(jù)時(shí),必須先選擇代理商的姓名,然后雙擊 dbgrid 就可以實(shí)現(xiàn)對(duì)出售商品的選擇。為了保證數(shù)據(jù)表的參照完整性,在點(diǎn)擊保存按鈕的時(shí)候,系統(tǒng)會(huì)檢查錄入的數(shù)據(jù)是否完整,如缺少項(xiàng)目,系統(tǒng)會(huì)給出正確的 提示。 退貨數(shù)據(jù)錄入窗口和進(jìn)貨數(shù)據(jù)錄入敞口大體相當(dāng),唯一不同的是在保存時(shí)候會(huì)檢查代理商是否有過(guò)相應(yīng)的進(jìn)貨數(shù)據(jù),如在沒(méi)有進(jìn)貨紀(jì)錄的同時(shí)退貨,系統(tǒng)會(huì)給出相應(yīng)的提示。 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 6.7 定單進(jìn)貨數(shù)據(jù)錄入窗口以及查詢(xún)窗口 該窗體是供使用者輸入訂貨單信息時(shí)候使用的,使用者可以對(duì)訂單進(jìn)行增加修改刪除等具體操作。訂單查詢(xún)窗口與之類(lèi)似,但是不提供增加和修改功能。 6. 8 代理商銷(xiāo)售數(shù)據(jù)查詢(xún) 該 功 能 分 為 兩 個(gè) 窗 體 實(shí) 現(xiàn) , 分 別 是 一 般 數(shù) 據(jù) 查 詢(xún) 和 明 細(xì) 數(shù) 據(jù) 查 詢(xún) 。 上圖是一般查詢(xún),使用者通過(guò)對(duì)代理商,商品名稱(chēng)以及商品型號(hào)的選擇, 可以很快地查到該代理商的進(jìn)貨情況,并且可以通過(guò)報(bào)表打印輸出。 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 上圖是代理商進(jìn)貨明細(xì)查詢(xún),藍(lán)色的字體標(biāo)出的是該代理商的進(jìn)貨記錄,紅色的字體標(biāo)出的是該代理商的退貨記錄,同時(shí),使用者還可以使用對(duì)代理商姓名,商品名稱(chēng)及型號(hào)的輸入,輕松實(shí)現(xiàn)對(duì)個(gè)別代理商銷(xiāo)售的查詢(xún)。必不可少的,該窗體同樣向用戶(hù)提供打印輸出功能。 6. 9 商品分布查詢(xún) 該窗體以圖形化的界面,簡(jiǎn)單直觀的向使用者提供商品的查詢(xún)功能,使用者可以通過(guò)已知商品信息迅速查詢(xún)到與此種商品相關(guān)的代理商信息,同時(shí),也可用過(guò)代理商的信息反查處其代理的商品狀況 。 此外,為了實(shí)現(xiàn)系統(tǒng)的界面風(fēng)格和報(bào)表輸出功能,用到了兩個(gè)控件,分別是 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: XpMenu3.1 修改版 和 QRMaker 。具體的安裝和使用方法就不在這里詳細(xì)說(shuō)明。 本系統(tǒng)主要分為四個(gè)主要功能,即訂單系統(tǒng),代理商系統(tǒng),備份系統(tǒng),何管理員系統(tǒng)。其中,訂單系統(tǒng)和代理商系統(tǒng)是為商品銷(xiāo)售服務(wù)的,而管理員登陸系統(tǒng)是為數(shù)據(jù)安全考慮的, 最后的備份系統(tǒng)有助于提高系統(tǒng)的健壯性,在系統(tǒng)崩潰后可以把損失降到最低限度。同時(shí),本系統(tǒng)也提供了豐富的打印功能,使得計(jì)算機(jī)里的數(shù)據(jù)可以以書(shū)面的形式印刷并且傳播,不會(huì)出現(xiàn)信息孤島的現(xiàn)象。 七 結(jié)束語(yǔ) 經(jīng)過(guò)幾個(gè)月的設(shè)計(jì)和開(kāi)發(fā),商品銷(xiāo)售管理系統(tǒng)基本開(kāi)發(fā)完畢。其功能基本符合用戶(hù)需求,能夠完成商品流通過(guò)程中所涉及到的基本信息的、輸入、修改,查詢(xún)等動(dòng)能。并提供部分系統(tǒng)維護(hù)功能 ,使用戶(hù)方便進(jìn)行用戶(hù)名稱(chēng)和密碼的更改, 提高了軟件的安全性和健壯性 。此外,本軟件對(duì)于數(shù)據(jù)的一致性的問(wèn)題也通過(guò)程序進(jìn)行了有效的解決。 但現(xiàn)實(shí)中的商品交易形式是多種多樣的,是由于畢業(yè)設(shè)計(jì)時(shí)間較短,需求分析做 得不夠完善,個(gè)人能力以及精力等因素的限制,所以該系統(tǒng)只假設(shè)了兩種形式銷(xiāo)售方式,即訂單銷(xiāo)售和代理商銷(xiāo)售, 并且假設(shè)這兩種銷(xiāo)售方式在商品的流通過(guò)程中不存在互相干擾的現(xiàn)象。另外,該系統(tǒng)還有許多不盡如人意的地方。比如功能不是很完善、用戶(hù)界面不夠美觀,出錯(cuò)處理不夠等多方面問(wèn)題。這些都有待進(jìn)一步改善。 致謝 在本次畢業(yè)設(shè)計(jì)中,我從指導(dǎo)老師張韋偉老師身上學(xué)到了很多東西。張韋偉老師認(rèn)真負(fù)責(zé)的工作態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神和深厚的理論水平都使我收益匪淺。她無(wú)論在理論上還是在實(shí)踐中,都給與我很大的幫助,使我得到不少的提高這對(duì)于我以后 的工作和學(xué)習(xí)都有一種巨大的幫助,感謝她耐心的輔導(dǎo)。另外,系統(tǒng)能及時(shí)開(kāi)發(fā)完成也得益于同組同學(xué)之間的密切協(xié)作,這里一并表示感謝! 主要參考文獻(xiàn) : 1 Delphi企業(yè)經(jīng)營(yíng)管理系統(tǒng)開(kāi)發(fā)實(shí)例導(dǎo)航 作者:求是科技 王志偉 黃超 出版社:人民郵電出版社 2 Delphi 面向?qū)ο蟪绦蛟O(shè)計(jì)及應(yīng)用開(kāi)發(fā) 作者:朱振元,朱承 出版社:西安電子科技大學(xué)出版社 3 Delphi 6程序設(shè)計(jì)導(dǎo)學(xué) 作者:張春林 出版社:清華大學(xué)出版社 4 最新 Delphi 7數(shù)據(jù)庫(kù)開(kāi)發(fā)指南 作者: 只飛 等 出版社:北京希 望電子出版社 5 Delphi 實(shí)用程序 100例 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 作者:段興 出版社:人民郵電大學(xué) 6 網(wǎng)上資料查詢(xún) 附錄程序清單及注釋 程序清單 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, 商品銷(xiāo)售管理系統(tǒng) -); / 查找窗口 if Foundwin 0 then begin 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: / 調(diào)用 Delphi 自帶的查詢(xún)窗口函數(shù),查找特定標(biāo)題的窗體 / 若找到則激活已運(yùn)行的程序,同時(shí)結(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 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 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 = 未知用戶(hù) ) then /用戶(hù)名為空 begin messagedlg(用戶(hù)錯(cuò)誤 , mterror, mbok, 0); E_id.SetFocus; canclose := false; exit; end /end if else /用戶(hù)名非空 begin with query_pass do begin first; while not eof do /檢查用戶(hù)名與密碼 begin if (USERNAME = fieldbyname(USERname).asstring) and 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: (S_tempPass = fieldbyname(Psd).asstring) then begin USERRIGHTSNAME := fieldbyname(rightsname).AsString; USERRIGHTS := fieldbyname(rights).AsString; break; end; next; end; /end while if eof then /用戶(hù)名與密碼不符 begin inc(I_logo); if I_logo = 3 then begin messagedlg(您已嘗試超過(guò) 3 次,系統(tǒng)將停止運(yùn)行! , mterror, mbok, 0); query_pass.Close; query_pass.Free; application.Terminate; end else begin messagedlg(用戶(hù)名與密碼不符,請(qǐng)檢查后重新輸入。 + #13 + #13 + 你還有 + inttostr(3 - I_logo) + 次機(jī)會(huì)! , 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); 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 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 := 未知用戶(hù) ; 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); 移動(dòng)到下一個(gè)控件 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 + 用戶(hù)登錄 ; 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 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ù) 庫(kù)打開(kāi)錯(cuò)誤,可能指定的系統(tǒng)數(shù)據(jù)庫(kù)文件不存在! + #13 + #13 + 系統(tǒng)將終止運(yùn)行,請(qǐng)重新嘗試打開(kāi)本程序。 + #13 + #13 + 如果依然出現(xiàn)本信息,請(qǐng)與程序供應(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 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 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 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 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 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 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(公司名稱(chēng)不能為空,請(qǐng)檢查后重新輸入。 , mtwarning, mbok, 0); e_allname.SetFocus; exit; end; if trim(e_name.Text) = then begin messagedlg(負(fù)責(zé)人姓名不能為空,請(qǐng)檢查后重新輸入。 , 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ù)庫(kù)目錄不存在,請(qǐng)檢查后重新輸入。 , mtwarning, mbok, 0); LE_datapath.SetFocus; exit; end; reg := TRegistry.Create; try Reg.RootKey := HKEY_CURRENT_USER; 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: if (Reg.OpenKey(S_RegTree, False) = False then begin Reg.CreateKey(S_RegTree); end; Reg.OpenKey(S_RegTree, True); /讀取窗體控件中的公司基本信息到注冊(cè)表中 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 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 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); 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 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); 移動(dòng)到下一個(gè)控件 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; 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 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); 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: / 設(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); / 檢測(cè)源路徑是否存在 if (not DirectoryExists(SFilePath) then begin if B_showmessage then begin MesString := 源數(shù)據(jù)庫(kù)目錄 + SFilePath + 已被破壞,系統(tǒng)不能進(jìn)行備份。 ; MessageBox(Handle, PChar(MesString), 錯(cuò)誤 , MB_OK + MB_ICONERROR); end; exit; end; if uppercase(SFilePath) = uppercase(DFilePath) then begin if B_showmessage then begin MesString := 源數(shù)據(jù)庫(kù)目錄與目標(biāo)數(shù)據(jù)庫(kù)目錄相同,系統(tǒng)不能進(jìn)行備份。 ; MessageBox(Handle, PChar(MesString), 錯(cuò)誤 , MB_OK + MB_ICONERROR); end; exit; end; / 檢測(cè)目的路徑是否存在 ShouldCopy := True; if (DirectoryExists(DFilePath) then 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: begin if B_showmessage then begin MesString := 目的路徑 + DFilePath + 已經(jīng)存在,繼續(xù)備份會(huì)刪除該文件夾下的所有文件。 + 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 + 的過(guò)程中出現(xiàn)錯(cuò)誤。 ; MessageBox(Handle, PChar(MesString), 錯(cuò)誤 , 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; 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 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); 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 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; 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 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 := 一級(jí) ; P_rights0, 2 := 二級(jí) ; P_rights0, 3 := 三級(jí) ; 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: P_rights0, 4 := 四級(jí) ; P_rights0, 5 := 限制級(jí) ; 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ù)不對(duì),則重置權(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 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 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 := ; 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 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; 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 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; 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 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 = 一級(jí) then EditUserForm.C_rights.ItemIndex := 1 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: else if fieldbyname(rights).asstring = 二級(jí) then EditUserForm.C_rights.ItemIndex := 2 else if fieldbyname(rights).asstring = 三級(jí) then EditUserForm.C_rights.ItemIndex := 3 else if fieldbyname(rights).asstring = 四級(jí) 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)重?cái)?shù)據(jù)丟失現(xiàn)象,請(qǐng)不要在此刪除操作員信息數(shù)據(jù) + chr(13) + chr(13) + 刪 除數(shù)據(jù)操作將不可恢復(fù),確定要?jiǎng)h除本記錄嗎? , mtWarning, mbyes, mbno, 0) = mryes then if messagedlg(再次警告:為了保證數(shù)據(jù)庫(kù)內(nèi)數(shù)據(jù)信息的完整性,請(qǐng)不要在此刪除操作員信息數(shù)據(jù) + chr(13) + chr(13) + 刪除數(shù)據(jù)操作將不可恢復(fù),確定要?jiǎng)h除本記錄嗎? , 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 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 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 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 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 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 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); 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: exit; end; if messagedlg(警告:刪除代理商信息數(shù)據(jù) 可能產(chǎn)生嚴(yán)重?cái)?shù)據(jù)丟失現(xiàn)象,請(qǐng)不要在此刪除代理商信息數(shù)據(jù) + chr(13) + chr(13) + 刪除數(shù)據(jù)操作將不可恢復(fù),確定要?jiǎng)h除本記錄嗎? , mtWarning, mbyes, mbno, 0) = mryes then if messagedlg(再次警告:為了保證數(shù)據(jù)庫(kù)內(nèi)數(shù)據(jù)信息的完整性,請(qǐng)不要在此刪除代理商信息數(shù)據(jù) + chr(13) + chr(13) + 刪除數(shù)據(jù)操作將不可恢復(fù),確定要?jiǎng)h除本記錄嗎? , 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 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 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; 無(wú)憂(yōu)無(wú)慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度社交媒體營(yíng)銷(xiāo)效果分析與改進(jìn)合同3篇
- 二零二五版施工現(xiàn)場(chǎng)安全生產(chǎn)標(biāo)準(zhǔn)化建設(shè)及驗(yàn)收合同3篇
- 餐飲店長(zhǎng)聘用合同
- 租賃演出場(chǎng)地合同范本
- 二零二五版投資人入股協(xié)議書(shū)-體育產(chǎn)業(yè)開(kāi)發(fā)3篇
- 二零二五版?zhèn)€人反擔(dān)保保證合同范本(適用于新能源開(kāi)發(fā))4篇
- 二零二五版大型游樂(lè)設(shè)施維保與安全評(píng)估協(xié)議3篇
- 員工分紅合同
- 室內(nèi)裝修工程設(shè)計(jì)合同
- 合法抵押借款合同范本
- 倉(cāng)庫(kù)搬遷及改進(jìn)方案課件
- 營(yíng)銷(xiāo)專(zhuān)員績(jī)效考核指標(biāo)
- 畢業(yè)論文-山東省農(nóng)產(chǎn)品出口貿(mào)易的現(xiàn)狀及對(duì)策研究
- 音樂(lè)思政課特色課程設(shè)計(jì)
- 2023年四川省樂(lè)山市中考數(shù)學(xué)試卷
- 【可行性報(bào)告】2023年電動(dòng)自行車(chē)行業(yè)項(xiàng)目可行性分析報(bào)告
- 臨床見(jiàn)習(xí)教案COPD地診療教案
- 中考數(shù)學(xué)復(fù)習(xí)《平行四邊形》專(zhuān)項(xiàng)練習(xí)題-附帶有答案
- 豬的信號(hào):母豬奶課件
- 紅色喜慶公司年會(huì)客戶(hù)答謝模板
- 2024學(xué)年浙江省杭州市杭州二中數(shù)學(xué)高二上期末聯(lián)考試題含解析
評(píng)論
0/150
提交評(píng)論