




已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
無憂無慮畢設網 ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 本文配套程序下載地址 : 無憂無慮畢設網 ()-大學生畢業(yè)設計站 ,免費畢業(yè)設計論文 ,無憂無慮畢設網 大學生畢業(yè)設計 ,出售各類畢業(yè)設計源碼 ,論文 ,程序源碼 ,網站源碼 ,免費視頻教程 ,我們將竭誠為您服務! 分類號: TP315 U D C: D10621-408-(2007)5882-0 密 級:公 開 編 號: 2003212033 成 都 信 息 工 程 學 院 學 位 論 文 基于 Delphi 的小型超市進存銷管理系統 論 文 作 者 姓 名 : 王 橋 申 請 學 位 專 業(yè) : 計算機科學與技術 申 請 學 位 類 別 : 工學學士 指導教師姓名(職稱): 李梅(高級工程師) 論 文 提 交 日 期 : 2007 年 06 月 10 日 無憂無慮畢設網 ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 基于 Delphi 的小型超市進存銷管理系統 摘 要 在市場經濟中,銷售是企業(yè)運作的重要環(huán)節(jié),為了更好地推動銷售,不少企業(yè)建立分公司代理,通過分公司或代理把產品推向最終用戶。這些分公司或代理商大多分布 在全國各地,甚至是在國外,遠距離頻繁的業(yè)務信息交流構成了這些企業(yè)業(yè)務活動的主要特點。在傳統方式上,公司之間通常采用電傳、電報、電話等方式傳遞發(fā)貨、到貨、壓貨、換貨、退貨等信息,并且對進貨、銷售、庫存等信息進行手工存檔,工作效率極其低下。 本畢業(yè)設計針對傳統的進存銷系統的一些弊端 ,根據進存銷系統的基本流程,實現了一個小型超市的進存銷管理系統。本系統主要包含有資料管理、進貨管理、銷售管理、庫存查詢、系統管理、歷史查詢、賬目查詢等進存銷管理的基本功能。其中,資料管理包括有商品資料、供貨商資料、客戶資料的添加、刪除 、修改、查詢等操作。本系統采用 C/S模式,由 Delphi 7.0 開發(fā),數據庫設計使用 MS SQL Server2000。 關鍵詞 : C/S 模式; Delphi; SQL Server 2000;進存銷管理系統 無憂無慮畢設網 ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: The Stocking Selling and Storing Management System of Small Supermarket Based on Delphi Abstract Salesmanship is an important part of operation of enterprises in the market economy. In order to promote the sales of the produces, many enterprises establish the agencies of branch, push products to the terminal customers through these agencies. Many agencies or branches are distributed all over the country, even abroad, so that the main feature of these business activities is remote frequent exchange of operational information. In the traditional way, the company usually exchange messages about the transmission, arrival, storage, change, return of goods by telex, telegraph, telephone and store the data of Purchase, Sale, Storage by manual. The working efficiency is extremely low. According to the basic process of the Stocking Selling and Storing Management , the author realized a Stocking Selling and Storing Management System of small supermarket. The basic functions of this system include data management, inventory management, sales management, storage inquiry, system management, history inquiry, account inquiry. The data management which include add, delete, modify and inquire the data about goods, data about supplier and data about customer. The system uses C/S model and has been developed by Delphi 7.0. Database design use SQL Server 2000. Key words: C/S model; Delphi; SQL Server 2000; Stocking Selling and Storing 無憂無慮畢設網 ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 目 錄 論文總頁數: 24頁 1引言 . 1 1.1 課題背景與開發(fā)目的 . 1 1.2 開發(fā)環(huán)境 . 1 1.3 硬件需求 . 1 系統總體設計 . 2 2.1 功能概述 . 2 2.2 數據庫設計 . 3 2.2.1 數據庫概念模型 . 3 2.2.2 數據庫各表設計 . 4 2.2.3 進貨單與銷售單存儲過程 . 7 3 超市進存銷系統的實現 . 8 3.1 用戶登錄 . 8 3.2進存銷系統主界面 . 9 3.3 資料管理 . 9 3.4 進貨管理 . 10 3.5 銷售管理 . 13 3.6 庫存管理 . 14 3.7 系統管理 . 15 3.8 歷史查詢 . 18 3.9 帳目查詢 . 19 結 論 . 22 參考文獻 . 22 致 謝 . 23 聲 明 . 24 無憂無慮畢設網 ():畢業(yè)設計源碼下載 第 1 頁 共 24 頁 1 引言 1.1 課題背景與開發(fā)目的 電子商務的發(fā)展和市場競爭的加劇將企業(yè)推上了風口浪尖,中小企業(yè)除了積極迎接挑戰(zhàn)之外,別無選擇,網絡的興起與電子商務的發(fā)展帶來了時空界限的突破、貿易方式的變革和經濟活動的革命,從某種意義上講,這些變化為中小企業(yè)創(chuàng)造了與大型企業(yè)、國外企業(yè)平等競爭的有利條件。然而,管理水平的差異會弱化這種平等的實際意義。具體而言,中小企業(yè)在進、存、銷等環(huán)節(jié)的管理上都存在著 一定程度的不足,而這些不足無疑將使其在市場競爭中陷入被動的境地。在網絡經濟的時代背景下,進行有效的進存銷管理已經成為中小企業(yè)存身立業(yè)的頭等要事。然而對于一貫疏于管理的中小企業(yè)而言,實現有效的進存銷管理必然存在著一定的難度,因此必須借助現代化的管理方法和管理技術 計算機進存銷管理系統。 超市最主要的任務是商品進貨存貨及銷售管理,即商品進存銷管理,由于商品種類繁多且數據量大,傳統手工操作任務繁重、工作效率低下,不適應現代化信息社會發(fā)展需要,所以急需使用商品進存銷管理軟件進行現代化管理:超市運作中批發(fā)及零售企業(yè) 基本上都屬于中小型規(guī)模、而且單位數量特別多,因此商品進銷存管理軟件有很大的需求市場。本文作者選擇 Delphi 來開發(fā)一個小型超市的進存銷管理系統,得到快速完美的開發(fā)效果。本文對商業(yè)進銷存管理系統進行系統分析,給出了管理系統用到的數據結構及開發(fā)過程中的關鍵技術。 本系統采用 C/S 模式設計,把超市工作人員從繁雜的數據管理以及處理中解放出來,避免了手工數據統計的種種弊端 ,大大地提高了工作效率。將超市進存銷的各種信息存儲于數據庫中,再通過前臺友好的用戶界面來對數據庫中的數據進行插入、刪除、修改與更新等操作,由于本系統 設計的界面友好,操作方便,用戶能輕而易舉地學會使用,有利于企業(yè)創(chuàng)造更大的經濟效益。 1.2 開發(fā)環(huán)境 Delphi 是 Inprise 公司的可視化軟件開發(fā)工具,是目前創(chuàng)建 Windows 應用程序最強大的開發(fā)工具之一,它具有 C+的強大功能和 Visual Basic 的易用性,Delphi 具有友好的開發(fā)環(huán)境、真正面向對象的程序設置、組件化的編程方式、快速 Pascal編譯器,是軟件開發(fā)人員不可多得的好工具。 本系統是在 windows XP 操作系統下,使用 Borland Delphi 7.0 作為開發(fā)工具,數據庫使用的是 SQL SERVER 2000開發(fā)。 1.3 硬件需求 在運行本系統前,請檢查一下計算機是否滿足以下要求: 無憂無慮畢設網 ():畢業(yè)設計源碼下載 第 2 頁 共 24 頁 1.服務器要求的配置為: (1) CPU: Intel 賽揚 以上,建議 Intel Pentium 以上 (2) 內存 : 128M 以上,建議 256M以上 (3) 硬盤 : 1G 以上的可用硬盤安裝空間 (4) Microsoft SQL Server 7.0 以上 2.客戶機硬件配置要求為: (1) CPU: Intel 賽揚 以上,建議 Intel Pentium 以上 (2) 內存 : 128M以上,建議 256M以上 系統總體設計 2.1 功能概述 根據進存銷管理系統的邏輯劃分,本系統一共分為七個功能,分別是資料維護、進貨管理、銷售管理、庫存查詢、系統管理、歷史查詢、帳目查詢。其功能結構圖如圖 2-1所示。 圖 2-1 系統功能結構圖 (1) 資料管理 主要包括商品資料、供貨商資料和客戶資料的維護,可以進行添加、刪除、修改與查詢等一系列操作。商品資料、供貨商資料、客戶資料是進銷存管理系統基本資料。 超市進 存銷管理系統 資料維護 進貨管理 銷售管理 庫存查詢 系統管理 帳目查詢 歷史查詢 權限設置 用戶管理 無憂無慮畢設網 ():畢業(yè)設計源碼下載 第 3 頁 共 24 頁 (2) 進貨管理 主要功能是進貨的過程中,對數據庫數據進行實時更新 ,入庫的時候,將供貨商、商品等基本信息讀入數據庫的表格中,主要是讀入進貨單歷史和進貨單明細歷史中;對庫存庫中對應的商品信息,諸如,庫存數量、倉庫、庫存金額等數據進行更新操作;對應于進貨單中供貨商,產生應付款金額;同時打印進貨單。 (3) 銷售管理 主要功能是銷售的過程中,對數據庫中的數據進行實時更新,出庫的時候,將客戶、商品等基本信息讀入數據庫表格中,主要是讀入銷售單歷史和銷售單明細歷史中;對庫存庫中對應的商品信息進行修改,主要是減去銷售的商品數量;對應于銷售單中的客戶,產生應收款金額;同時打印銷售單。 (4) 庫存查詢 主要功能是對庫存庫中的商品信息進行查詢,輸入貨號、商品拼音或是倉庫,便可以方便快捷地查詢到庫存庫中對應的商品信息。 (5) 系統管理 系統管理中包含系統用戶的權限修改功能,同時還包含有只有管理員 admin才擁有的用戶管理功能,包括對用戶信息的添加、刪除、修改等操作,同時考慮到安全問題,本系統對用戶對應的密碼進行了 MD5加密處理。 (6) 歷史查詢 主要功能是對進貨單歷史、進貨單明細歷史、銷售單歷史、銷售單明細歷中的數據進行查詢操作。 (7) 帳目查詢 主要功能是對進貨過程中產生的應付款及銷售 過程中產生的應收款進行操作,輸入對應的供貨商號或客戶編號就能查詢到對應的應付款或應收款金額匯總,結算后,將對應的記錄從應付款或應收款表中刪除,同時對已付款或已收款中的數據進行更新。 2.2 數據庫設計 2.2.1 數據庫概念模型 數據庫主要涉及到三個實體:商品、供貨商、客戶。進貨時,一張進貨單對應一個供貨商,可以向供貨商進多種貨物。銷售時,一張銷售單對應一個客戶,可以向客戶銷售多種商品。因此,一個商品可以向多個供貨商進貨,也可以銷售給多個客戶,只是對應著不同的進貨單或銷售單。 E-R( Eneity-Relationship Approach)圖是最常用的概念模型表示方法,也是數據庫的核心和基礎,它是按用戶的觀點來對數據和信息建模,依據概念模型設計應具的特點:真實性、易理解性、易修改性、易轉換性。下面畫出商品、無憂無慮畢設網 ():畢業(yè)設計源碼下載 第 4 頁 共 24 頁 供貨商、客戶三個之間的實體關系圖 (E-R圖 ): 2.2.2 數據庫各表設計 對于本超市進存銷系統所用到的數據庫表有: 供貨商清單:保存關于供貨商的資料信息,如供貨商號、名稱等。 商品清單:保存超市所 經營商品的資料信息,如貨號、品名、進貨價和銷售價等。 客戶清單:保存超市客戶的資料信息。 庫存庫:保存超市商品庫存的數量、金額等信息。 應付款:保存進貨過程中產生的應付款信息。 應收款:保存銷售過程中產生的應收款信息。 權限清單:保存本系統所有使用者的權限信息。 用戶清單:保存本系統所有 使用 者的信息。 進貨單:進貨單主表 ,保存一次進貨中的所有商品的概括信息。 進貨單歷史:保存進貨單歷史。 進貨單明細:進貨單從表,保存每一商品的進貨信息,如進價、稅額和倉庫等。 商 品 貨號 條碼 拼音編碼 銷售 進貨 供貨商 客戶 客戶編號 名 稱 名 稱 拼音編碼 拼音編碼 供貨商號 N M P Q 圖 2-2 商品、供貨商和客戶 E-R圖 無憂無慮畢設網 ():畢業(yè)設計源碼下載 第 5 頁 共 24 頁 進貨單明細歷史:保存進貨單明細歷史。 銷售單:銷 售單主表,保存一次銷售中的所有商品的概括信息。 銷售單歷史:保存銷售單歷史。 銷售單明細:銷售單從表,保存每一商品的銷售信息,如銷售數量和銷售價等。 銷售單明細歷史:保存銷售單明細歷史。 倉庫清單:保存超市的倉庫信息,可以用于生成數據字典。 已收款:保存超市結算“應收款”的情況。 已付款:保存超市結算“應付款”的情況。 下面給出幾個主要表的具體信息: 表 2-1 供貨商清單 字段名 數據類型 長度 是否允許為空 字段描述 供貨商號 Char 10 否 主鍵 拼音編碼 Char 40 否 以便查詢 名稱 Varchar 80 是 地址 Varchar 80 是 郵編 Char 6 是 傳真 Varchar 20 是 電話 Varchar 20 是 電報 Varchar 20 是 銀行帳號 Varchar 20 是 庫房地址 Varchar 40 是 庫房電話 Varchar 20 是 表 2-2 庫存庫 字段名 數據類型 長度 是否允許為空 字段描述 貨號 Char 14 否 商品貨號 倉庫 Varchar 20 否 庫存數量 Decimal (28,6) 否 庫存金額 Decimal (28,6) 否 庫存單價 Decimal (28,6) 否 最新進價 Decimal (28,6) 是 無憂無慮畢設網 ():畢業(yè)設計源碼下載 第 6 頁 共 24 頁 表 2-3 應付款 字段名 數據類型 長度 是否允許為空 字段描述 編號 Char 14 否 主鍵 進貨單號 Char 14 是 外鍵 貨號 Char 14 否 外鍵 供貨商號 Char 10 否 外鍵 數量 Decimal (28,6) 否 進貨單價 Decimal (28,6) 是 金額 Decimal (28,6) 是 進貨日期 Datetime 8 是 狀態(tài) Char 6 是 應付 表 2-4 權限清單 字段名 數據類型 長度 是否允許為空 字段描述 權限序號 Int 4 否 自增字段 用戶編號 Char 6 是 外鍵 部門 Char 20 是 權限名稱 Char 30 否 表 2-5 用戶清單 字段名 數據類型 長度 是否允許為空 字段描述 用戶編號 Char 20 否 主鍵 部門 Char 20 是 姓名 Char 10 否 性別 Char 2 是 密碼 Varchar 32 否 MD5 加密 表 2-6 進貨單 字段名 數據類型 長度 是否允許為空 字段描述 編號 Char 14 否 主鍵 供貨商號 Char 10 否 外鍵 進貨日期 Datetime 8 是 業(yè)務員 Char 10 是 制單人 Char 10 是 稅價合計 Decimal (28,6) 是 無憂無慮畢設網 ():畢業(yè)設計源碼下載 第 7 頁 共 24 頁 不含稅價 Decimal (28,6) 是 稅額 Decimal (28,6) 是 表 2-7 進貨單明細 字段名 數據類型 長度 是否允許為空 字段描述 編號 Char 14 否 主鍵 進貨單號 Char 14 否 外鍵 貨號 Char 14 否 外鍵 進貨數量 Decimal (28,6) 否 進價 Decimal (28,6) 是 稅價合計 Decimal (28,6) 是 稅率 Decimal (28,6) 是 不含稅價 Decimal (28,6) 是 稅額 Decimal (28,6) 是 倉庫 Char 20 是 表 2-8 已付款 字段名 數據類型 長度 是否允許為空 字段描述 供貨商號 Char 10 否 主鍵 供貨商名稱 Varchar 80 是 已 付金額 Decimal (28,6) 否 最近結算 Datetime 8 是 最近的結算日期 以上便是數據庫中的主要表單,商品清單、客戶清單與表 2-1(供貨商清單 )類似,應收款與表 2-3(應付款)類似,銷售單與進貨單的對應表單類似,已收款與表 2-10(已付款)類似。 2.2.3 進貨單與銷售單存儲過程 數據庫中還設計了兩個存儲過程,分別是 sf_進貨單和 sf_銷售單,分別用于進貨和銷售時,對數據庫中各表的數據更新操作。 進貨的時候,庫存庫中的倉庫和貨號要與進貨單明細中的倉庫和貨號相匹配,若不匹配,證明 是新的記錄,進貨單明細中所對應的貨號與倉庫記錄添加到庫存庫中,若匹配,證明同一商品入的是同一倉庫,便將庫存庫中的庫存數量累加新入庫的數量;將進貨單明細中所對應的供貨商號、稅價合計、進貨數量、貨號等信息插入到應付款中,以產生應付款金額;將進貨單和進貨單明細中的記錄添加到對應的歷史表格中;清除進貨單和進貨單明細表格。 無憂無慮畢設網 ():畢業(yè)設計源碼下載 第 8 頁 共 24 頁 銷售的時候,將銷售單明細中銷售的對應貨號數量從庫存庫對應的記錄中減去;將銷售單明細中對應的客戶編號、銷售價、金額等信息插入到應收款中,以產生應收款金額;將銷售單和銷售單明細中的記錄添加于應的歷史表 格中;清除銷售單和銷售單明細表格中的記錄。 3 超市進存銷系統的實現 3.1 用戶登錄 用戶登錄是一個系統安全性能的重要體現,本系統用到的所有密碼均通過MD5 加 密 。 登 錄 界 面 上 放 置 了 一 個 ADOQuery1 控 件 , 并 設 置 它 的ConnetionString 屬性指向的數據庫 my_jxc,用以完成數據庫的連接。登錄過程是:首先在用戶清單中查找輸入的用戶名和密碼所對應的用戶編號。若沒有找到,說明輸入的用戶名或密碼有誤,并給出提示。若找到這樣的用戶編號,說明是合法用戶,再在權限清單中,查找對應的權限,找到什么權限,便將對應的功能按鈕所對應的 Enabled 值置為 True。特別指出,在用戶清單中查找用戶名和密碼所對應的用戶編號的時候,由于界面上輸入的是明文,而用戶清單中的密碼字段是 32 位的密文,且 MD5 是單向加密的密碼算法,所以在查找之前,先引用 md5 單元,再調用 MD5String( )函數對密碼框中的明文進行加密,再用MD5Print( )函數將加密后的密文顯示出來,賦值給 encrypt_num 變量,實際在用戶清單中找查密碼是以密文為準,而非輸入的明文,其查找用戶編號主要代碼如下: /保存用戶輸入的帳號和密碼 user:=edit1.Text; pass:=Edit2.Text; encrypt_num:=md5.MD5Print(MD5String(pass);/加密明文 /將原來的 SQL 語句清除后再添加新的 SQL語句 ADOQuery1.SQL.Text:=select 用戶編號 from 用戶清單 where 姓名 = +user+and 密碼 =+encrypt_num+; temp:=adoquery1.FieldByName(用戶編號 ).AsString; 之后便以用戶編號 和權限名稱在權限清單中查找對應的權限序號,若找到對應的權限序號,說明該用戶擁有該權限,若沒有找到權限序號,說明該用戶沒有該權限,找到什么權限,便將 manage和 info窗體上對應的按鈕 Enabled值置為 True。 無憂無慮畢設網 ():畢業(yè)設計源碼下載 第 9 頁 共 24 頁 3.2進存銷系統主界面 超市進銷存系統主界面上放置七個按鈕,分別對應七個功能模塊:資料管理、進貨管理、銷售管理、庫存管理、系統管理、歷史查詢、帳目查詢。點擊對應的按鈕,便跳轉到對應的功能窗體上。 圖 3-1 系統主界面 在主界面的左下方會顯示當前登錄的用戶名字。因為當前登錄的用戶為系統管理員 admin,所以圖 3-1中顯示的登錄用戶名為 ad。 3.3 資料管理 資料管理窗體上放置的幾個主要控件是 DBNavigator1控件、 DBGrid1 控件、ADOQuery1 控件和 DataSource1 控件。首先是設置 ADOQuery1 的 Connection String 屬性指向 my_jxc,再設置 DataSource1 的 DataSet 屬性為 ADOQuery1,設置 DBNavigator1 和 DBGrid1的 DataSource 屬性為 DataSource1,資料管理分為商品資料維護、供貨商資料維護和客戶資料維護, 以 DBNavigator1 來控制刪除、插入或修改等功能。分別點擊 MainMenu 菜單上不同的菜單項,來更新數據集,以顯示不同表格中的數據。例如,點擊了商品資料維護,便在 ADOQuery1 的SQL中添加這樣的語句: adoquery1.SQL.Text:=select * from 商品清單 ; 使 DBGrid1 顯示出由數據集返回的結果,同時 DBNavigator1 控制的商品清單中的數據。同理,點擊了供貨商資料維護或是客戶資料維護菜單時,便向ADOQuery1的 SQL中添加新的 SQL語句,以使控制不同的數 據集。 無憂無慮畢設網 ():畢業(yè)設計源碼下載 第 10 頁 共 24 頁 同時,窗體上還能對商品資料、供貨商資料、客戶資料進行查詢,輸入對應的拼音編碼部分或全部便能進行查詢。查詢按鈕所響應的事件 :首先是根據label1 的 caption 內容來判斷是對那一張表格進行操作的,而 label1.caption是由點擊 MainMenu 上不同的菜單項而改變的。例如,點擊了 MainMenu 上的商品資料維護, label1.caption 便為“商品拼音”,點擊了“查詢”按鈕時,先判斷l(xiāng)abel1.caption=商品拼音 ,于是對商品清單進行查詢。 同時, DBGrid1還有一個鼠標雙擊的響 應事件,因為在進貨管理或銷售管理時,選擇供貨商、商品或是客戶信息時,需要跳轉到資料管理窗體上,雙擊DBGrid1上的記錄,以把數據傳遞到進貨單或銷售單窗體上。這樣也大大地提高了系統使用的方便性,簡單易用的圖形化操作界面,使用戶能更方便快捷學會使用。這部分代碼將在進貨管理和銷售管是部分詳細闡述。 3.4 進貨管理 這部分實現對進貨單的管理,主要提供保存進貨單、顯示進貨單報表和打印進貨單并記帳的功能。進貨單 input窗體上,放置 ADOQuery1和 ADOCommand1控件,并且設置它們的 ConnectionString屬性指向 my_jxc,以完成數據庫的連接。 進貨日期默認為當前系統日期,制單人為前當登錄用戶,在下拉菜單中選擇業(yè)務員,這幾項都可以為空,但為了使數據更加詳盡,最好不要為空。 進貨單窗體如圖所示: 圖 3-2 進貨單窗體 首先選擇供貨商,鼠標點擊 Combobox2 時,對應的 DropDown 事件響應,跳轉到資料管理中去,同時將 input窗體置為不可用。 然后在 info窗體中, DBGrid1的雙擊事件響應,判斷 input.Enabled=false無憂無慮畢設網 ():畢業(yè)設計源碼下載 第 11 頁 共 24 頁 且 label1.caption=供貨商拼音 ,于是執(zhí)行相 應代碼,設置了兩個 string類型的變量: num,name,分別接收 DBGrid1.Fields0和 DBGrid1.Fields2中的內容,傳遞給 input 窗體上的 ComboBox2.Text 和 Edit3.Text。將供貨商號和供貨商名稱返回到進貨單窗體上,以此完成了供 貨商的選擇。其代碼如下: if (input.Enabled=false)and(label1.Caption=供貨商拼音 ) then begin /將供貨商的標號和名稱傳回進貨單窗體 num:=dbgrid1.Fields0.AsString; name:=dbgrid1.Fields2.AsString; input.ComboBox2.Text:=num; input.Edit3.Text:=name; /成功后返回進貨單 input.Enabled:=true; info.Close; manage.Hide; end; 接著,選擇需要進貨的商品。在 StringGrid1 中雙擊單元格,以跳轉到資料管理的窗體上。在 DBGrid1的雙擊事件里響應,判斷 input.enabled屬性為 false且 label1.caption=商品拼音 ,雙擊對應紀錄,將商品清單中的貨號、品名和銷售價 1的信息傳遞到進貨單窗體中,代碼如下: if (input.Enabled=false)and(label1.Caption=商品拼音 ) then begin /將貨號和商品名稱傳回進貨單窗體 num:=dbgrid1.Fields0.AsString; name:=dbgrid1.Fields3.AsString; price:=dbgrid1.Fields7.AsString; if input.currentRow=0 then input.currentRow:=1; input.StringGrid1.Cells1,input.currentRow:=num; input.StringGrid1.Cells2,input.currentRow:=name; input.StringGrid1.Cells6,input.currentRow:=price; /成功后返回進貨單 input.Enabled:=true; info.Close; 無憂無慮畢設網 ():畢業(yè)設計源碼下載 第 12 頁 共 24 頁 manage.Hide; end; 特別指出, num,name,price 分別對應著貨號、品名和價格。 Cells 1,input.currentRow指的是 StringGrid1 中當前行第 1列所對應的單元格。 在Forminput單元文件中的接口部分的 public處 聲 明了 currentRow和 currentCol兩個整型變量, 在 implementation部分中,由 StringGrid1 SelectCell 事件激發(fā),以 currentRow 和 currentCol來接收 Arow 和 Acol兩個變量。這樣便達到了 ,在 input窗體上激發(fā)的變量,被兩個 public 變量接收,可以被 info 窗體引用的目的。 在商品入庫之前,要對所進商品進貨到哪個倉庫進行選擇。添加倉庫的下拉菜單與添加業(yè)務員的過程相似,只有當選擇了商品信息且點擊了“倉庫”所對應的列,才能進行倉庫選擇。另外,當點擊某條記錄的“金額”單元格時,自動算出對應進貨記錄的金額、稅價與稅價合計。 點擊“保存進貨單”按鈕時,將把進貨信息插入到進貨單和進貨單明細兩個表格中去,進貨單中的一條記錄保存的是一次進貨中向某個供貨商所有進貨商品的總稅價合計、總不含稅額和總 稅額;進貨單明細則保存的是向某個供貨商進貨的每一商品所對應的稅價合計,不含稅價和稅額等信息。首先是編號的插入,如果是插入的第一條記錄,編號為 00000,如果不是插入第一條記錄,則分別是從進貨單歷史和進貨單明細歷史中查找出最大編號,將其加 1,再插入到進貨單和進貨單明細表格中。例如進貨單記錄的插入過程: 獲取最大編號: adoquery1.SQL.Add(select max(編號 ) 最大編號 from 進貨單歷史 ); maxnum:=adoquery1.FieldByName(最大編號 ).asstring; 如果是第一條記錄,插入編號 00000: if (maxnum=)or(maxnum= ) then temp:=00000 向進貨單中插入對應記錄: adocommand1.CommandText:=insert into 進貨單 (編號 ,供貨商號 , 進貨日期 ,業(yè)務員 ,制單人 ,稅價合計 ,不含稅價 ,稅額 ) values (+inputnum+,+combobox2.Text+,+edit1.Text+,+combobox1.Text+,+edit2.Text+,+edit4.Text+,+edit5.Text+,+edit6.Text+); adocommand1.Execute; 然后點擊“顯示進貨單報表”,是對進貨單報表進行預覽。點擊“打印進貨無憂無慮畢設網 ():畢業(yè)設計源碼下載 第 13 頁 共 24 頁 單并記帳”,便可將進貨單報表打印成 (.mdi)格式的文檔,同時執(zhí)行了 “ sf_進貨單”存儲過程,以對數據庫中數據進行實時地更新。 下面介紹一下,報表的制作: 本畢業(yè)設計所使用到的報表是用 QuickReport 控件制作的,由于 Delphi 7.0默認情況下沒有安裝此控件,因此需要手動添加。在 Delphi的 Packages 里,點擊“ Add” 按鈕,找到安裝目錄下 BorlandDelphi7Bindclqrt70.bpl 添加QuickReport控件組。 進貨單報表 report上,放置 QuickRep1控件、 ADOQuery1控件、若干 QRLabel控件以標簽文字說明,若干 QRDBText 控件,設置其 DataSet 屬性為ADOQuery1,DataField 屬性為欲讀取的字段名。 QucikRep1 的 DataSet 屬性為ADOQuery1。 ADOQuery1 控件的 ConnectionString 指向 my_jxc 數據庫,以完成數據庫的連接。其 SQL屬性中添加查詢語句,以對數據庫中數據進行查詢返回數據集以供報表上顯示。 3.5 銷售管理 銷售過程與進貨過程類似,這部分實現對銷售的管理,提供的主要功能有“保存銷售單”、“打印銷售單報表”和“記帳銷售單” 三個功能。其界 面如圖所示: 圖 3-3 銷售單窗體 首先需要向 Combobox1 的下拉菜單上添加項目,其代碼與在進貨管理中添加業(yè)務員菜單項目是一樣的。 鼠標點擊客戶下 拉框,跳轉到資料管理窗體上,以選擇客戶。同時將 output無憂無慮畢設網 ():畢業(yè)設計源碼下載 第 14 頁 共 24 頁 的 enabled值置為 false。 然后在 info 窗體上,雙擊相應的記錄,由 DBGrid1 的雙擊事件響應,通過判斷,執(zhí)行相關代碼,將客戶編號和客戶名稱傳遞至 output 窗體上。此過程代碼與進貨管理中選擇供貨商過程的代碼類似。 至此,完成了客戶選擇操作。然后雙擊 output 中 StringGrid1 的單元格,跳轉到庫存庫 store 窗體上。雙擊庫存庫 store 窗體上的 StringGrid1 單元,便將貨號、倉庫、銷售價等信息傳遞至 store 窗體上。 StringGrid1的雙擊事件中,首先由 adoquery2 在商品清單里查得銷售價 1字段,由 price變量接收。貨號、品名等信息與進貨單中執(zhí)行的過程類似,在此不再贅述。 當點擊保存銷售單后,第一條記錄編號為 00000,如果不是第一條記錄,從銷售單歷史和銷售單明細歷史表格中把最大編號讀取出來 ,將其加 1,再插入到銷售單和銷售單明細表格中去。這個過程與進貨管理中插入到進貨單歷史和進貨單明細歷史中相類似。點擊“打印銷售報表”按鈕,以打印出銷售單對應報表。點擊“記帳銷售單”按鈕,執(zhí)行“ sf_銷售單 ” 存儲過程,以更新數據庫中 數據。銷售報表與進貨報表的制作大同小異,只是對應的數據集不同,執(zhí)行的 SQL語句當然也不同。 3.6 庫存管理 這部分主要是提供對庫存商品信息的查詢,輸入貨號、商品拼音和倉庫中的任意一項便可對庫存中商品的信息進行查詢。設置 ADOQuery1 控件、 ADOQuery2控件的 ConnectionString 指向 my_jxc,以完成數據庫的連接。 然后向“查詢”按鈕里添加事件,以使輸入“貨號” 、“商品拼音” 和“倉庫”中的任意一項,便可進行查詢。由于可以對商品拼音模糊查詢,如果不輸入商品拼音的話,系統會將商品拼音看 成一個空字符串,便得不到查詢的真實結果。所以先對其進行判斷,如果為空,便不追加對應查詢語句。其對應的代碼如下: adoquery1.SQL.Add(select 庫存庫 .貨號 ,商品清單 .品名 ,商品清單 .單位 ,庫存庫 .倉庫 ,庫存庫 .庫存數量 ,庫存庫 .庫存單價 ,庫存庫 .庫存金額 from 庫存庫 ,商品清單 ); adoquery1.SQL.Add(where 庫存庫 .貨號 =商品清單 .貨號 and ); adoquery1.SQL.Add(商品清單 .貨號 =+edit1.Text+)or); if edit2.Text then begin adoquery1.SQL.Add(商品清單 .拼音編碼 like %+ edit2.Text +%)or); end; 無憂無慮畢設網 ():畢業(yè)設計源碼下載 第 15 頁 共 24 頁 adoquery1.SQL.Add(庫存庫 .倉庫 =+combobox1.text+); adoquery1.Open; 到此,便完成了庫存查詢的操作。 3.7 系統管理 系統管理功能中分為“用戶管理”和“權限設置”兩項功能。在用戶管理功能中,可以對用戶信息進行添加、刪除或修 改等操作。“用戶管理”功能只有管理員擁有,而“權限管理”功能,只有被授予了該權限的用戶才擁有。作為系統管理員,所有權限均為其開放,并且系統管理員的權限是不能修改的。管現員可以對本系統的其它普通用戶的資料進行修改,或給其它普通用戶授予權限。 系統管理窗體 rights 上放置 ADOQuery1、 ADOQuery2、 ADOQuery3 和ADOCommand1控件,它們的 ConnectionString 均指向 my_jxc,用以連接數據庫。最左邊下拉列表框是對用戶的選擇,選擇了對應的用戶,此時在右邊的列表框中顯示它所具 有的所有權限的名稱,且在最下面的組合復選框中,將其所具有的權限名稱前面顯示有 ” ”,可以修改復選組合框中的內容, 再點擊“確認修改” ,即可完成對 所對應用戶的權限的權限。點擊“用戶管理”按鈕,進入到用戶管理的窗體上。系統管理的主要界面如下圖所示: 圖 3-4 權限管理窗體 在系統管理窗體中,只有當前用戶為管理員,“用戶管理”按鈕才可見 ,權限功能的修改實現過程是這樣的:首先在 ComboBox1Change 事件中,當選擇了對應的用戶后,執(zhí)行相關代碼 ,在 listbox 中用以更新顯示出當前用戶名所對應的權限名稱。先以 用戶名在用戶清單里查詢得到對應的用戶編號,再以用戶編號在權限清單里查詢所對應的用權限名稱,將查找到的權限名稱添加到 listbox1 的項無憂無慮畢設網 ():畢業(yè)設計源碼下載 第 16 頁 共 24 頁 目中去,查詢權限的對應代碼如下: adoquery2.SQL.Text:=select 權限名稱 from 權限清單 where 用戶編號=(select 用戶編號 from 用戶清單 where 姓名 =+ combobox1.Text + +); 向列表框中添加查詢到的權限項目: while not adoquery2.Eof do begin temp:=adoquery2.fieldbyname(權限名稱 ).AsString; listbox1.Items.Add(temp); adoquery2.Next; end; 在 ComboBox1Change 事件中同時也對下方的 checkbox 的 checked 屬性進行修改。以對應的用戶編號和權限名稱對權限清單進行查找,如果查找到的用戶編號不為空,說明該用戶存在這樣的權限,便將對應 checkbox 的 checked 屬性設為 true;否則 checked 屬性為 false。例如:判斷用戶是否具有商 品資料維護的權限,其代碼如下: adoquery2.SQL.Add(select 用戶編號 from 權限清單 where (用戶編號=(select 用戶編號 from 用戶清單 where 姓名 =+combobox1.Text+ ) and(權限名稱 =+checkbox2.Caption+); adoquery2.Open; if adoquery2.FieldByName(用戶編號 ).AsString then checkbox2.Checked:=true else checkbox2.Checked:=false; 另外,對于“確認修改”按鈕響應的事件,首先獲取用戶編號,以用戶姓名在用戶清單里查找對應的用戶編號賦值給臨時變量 UserName;在權限清單里查找到最大的權限序號賦值給 MaxNumber;刪除該用戶在權限清單里擁有的所有權限。判斷下方的 checkbox 的 checked屬性是否為 true,同時將先前查找到的最大權限序號增加,以新的權限序號插入到權限清單里 ,以免跟以前的權限序號沖突。例如對“商品資料維護”權限的修改,對應代碼如下: if checkbox1.Checked then begin order:=strtoint(MaxNumber)+1; str:=inttostr(order); 無憂無慮畢設網 ():畢業(yè)設計源碼下載 第 17 頁 共 24 頁 adocommand1.CommandText:=insert into 權限清單 (權限序號 ,用戶編號 ,權限名稱 ) values(+str+,+UserNumber+,+ checkbox1.Caption+); adocommand1.Execute; end; 如果當前用戶 為管理員的話,會看到系統管理窗體上出現一個“用戶管理”按鈕,點擊它會跳轉到用戶管理 users的窗體,如圖所示: 圖 3-5 用戶管理窗體 在用戶管理窗體上,可以完成對用戶資料的修改,刪除和添加用戶的功能。雙擊上方的 DBGrid 中的記錄,便把對應的字段讀取出來 (密碼字段除外 ),顯示在下方的若干 edit 文本框里,修改對應的記錄后,點擊“確認修改”按鈕便完成了用戶資料的修改。特別指出,由于本系統所有用戶的密碼字段,均使用了MD5加密。當提交時,如果提交的密碼字段為空,默認情況下不修改密碼;如果提交的密碼字段不為 空,便調用 md5單元中的 MD5String()函數將密碼加密成為32 位的密文,以 MD5Print()函數將加密的字段顯示出來。這樣很好的避免了當提交空密碼的時候,對空字符串也進行加密。 如果提交的密碼字段不為空,將該字段加密后更新記錄: encrypt_num:=md5.MD5Print(MD5String(edit5.Text); adocommand1.CommandText:=update 用戶清單 set 用戶編號 =+ edit1. Text+,部門 =+edit2.Text+,姓名 =+edit3.Text+,性別 = + edit4.Text+,密碼 =+encrypt_num+ where 用戶編號 =+ edit1. Text+; 無憂無慮畢設網 ():畢業(yè)設計源碼下載 第 18 頁 共 24 頁 鼠標點擊 DBGrid 里的某一條記錄后,再點擊“刪除”按鈕,即可將該用戶刪除。 在下方的 edit 方本框中輸入新添加的用戶信息后,點擊添加按鈕,將新用戶的記錄插入到用戶清單里。插入之前,先做判斷,如果用戶清單里已經有相同的用戶編號,給出提示。同時插入新用戶記錄前,也對輸入的密碼 (明文 )調用MD5加密算法 加密成為 32位密文再插入 : encrypt_num:=md5.MD5Print(MD5String(edit5.Text); adocommand1.CommandText:=insert 用戶清單 values(+edit1.Text +,+edit2.Text+,+edit3.Text+,+edit4.Text+,+encrypt_num+); 以上便是“系統管理”中的全部功能的實現過程。 3.8 歷史查詢 歷史查詢主要是對以往進貨記錄和 銷售紀錄進行查詢。主要是對進貨單歷史、進貨單明細歷史、銷售單歷史或銷售單明細歷史進行查詢。輸入對應的記錄編號或拼音編碼便可進行查詢。歷史查詢窗體 history 上的 ADOQuery1 控件的ConnectionString 指向 my_jxc,以此做為數據集返回結果。通過點擊主菜單上的按鈕來動態(tài)的改變 ADOQuery1所指向的數據集。 圖 3-6 歷史查詢窗體 例如,點擊了“進出貨歷史”主菜單中的“進貨單歷史” ,便把 ADOQuery1中的 SQL查詢語句指向進貨單歷史中,同時改變 label1和 label2的 Caption值以提示用戶輸入進貨單編號或供貨商拼音進行查詢。 點擊“查詢”按鈕,首先判斷 label1 的 caption 值,來決定當前是對哪一個表進行操作 ,輸入“進貨單編號”或是“供貨商拼音”中的任何一項,便可進行查詢,同時“供貨商拼音”可以進行模糊查詢,所以在查詢之前,應該先判斷,無憂無慮畢設網 ():畢業(yè)設計源碼下載 第 19 頁 共 24 頁 如果拼音編碼輸入框不為空時才追加對應的 SQL語句。 if edit2.Text then adoquery1.SQL.add( or 供貨商號 in (select 供貨商號 from 供貨商清單 where 拼音編碼 like %+edit2.Text+%); 以上便是點擊了“進貨單歷史” ,程序所執(zhí)行的過程。點擊“銷售單歷史” ,其執(zhí)行過程與此類似。 另外,當點擊了“進出貨明細歷史”中的“進貨單明細歷史”時,也是動態(tài)的改變 ADOQuery1 中所對應的 SQL查詢語句,同時改變 label1和 label2 的標簽內容。 點擊了“查詢”按鈕,執(zhí)行過程也是先由 label1 的 caption 來判斷,當前操作的是哪一個表,再對相應的表進行查詢。又由于可以進行模糊查詢,所以在查詢之前也應該判斷如果拼音輸入框不為空時,便追加 SQL查詢 語句: if edit2.Text then adoquery1.SQL.Add( or 進貨單號 in (select 編號 from 進貨單歷史 where 供貨商號 in (select 供貨商號 from 供貨商清單 where 拼音編碼 like %+edit2.Text+%); 點擊“銷售單明細歷史” ,所執(zhí)行的過程與之類似。 3.9 帳目查詢 帳目查詢功能中,可以對應收款和應付款進行匯總,匯總結算后,首先將該記錄從應收款或應付款中刪除,再將結算的信息添加到已付款或已收 款中去。帳目查詢窗體 account 上, ADOQuery1、 ADOQuery2、 ADOCommand控件的 Connection String屬性設置為指向 my_jxc,用以連接數據庫。 圖 3-7 帳目查詢窗體 點擊上面的“未結算”主菜單中的“應付款”或“應收款” ,動態(tài)的改變窗體上 label的 caption 值,同時將更新數據集 ADOQuery1返回不同的查詢結果。例如點擊了“應收款” ,響應對應的執(zhí)行代碼 : adoquery1.SQL.Text:=select * from 應收款 ; /提示用戶輸入客 戶拼音編碼 無憂無慮畢設網 ():畢業(yè)設計源碼下載 第 20 頁 共 24 頁 label1.Caption:=客戶編號 ; label5.Caption:=應收款查詢 ; 然后,輸入客戶編號進行查詢,將查詢出來該客戶未結算的帳目匯總以顯示在窗體上。如果不存在這樣的客戶編號,系統給出提示信息。 圖 3-8 匯總結果 由 label5.Caption=應收款查詢 判斷是對應收款進行操作,在 adoquey1的 SQL屬性中添加: adoquery1.SQL.Text:=select * from 應收款 where 客戶編號 = + edit1.Text+; 以數據集 adoquery1 返回查詢所得結果,顯示在窗體上。在 adoquery2 的SQL屬性中添加語句以匯總該用戶編號所對應的應收款總金額: adoquery2.SQL.Text:=select total=sum(金額 ) from 應收款 where 客戶編號 =+edit1.Text+; edit2.Text:=adoquery2.fieldbyname(total).AsString; 匯總結束后,再點擊“結算”按鈕,便將匯總的帳目結算,先將帳目從應收款中刪除記錄,然后對已收款 中的數據進行更新,更新過程是這樣的:判斷新添加的應收款記錄所對應的客戶編號是否在已收款中已經存在記錄,如果存在,便將對應的已收金額累加進去,并將最近結算日期更新為當前的日期。如果不存在,說明是新的記錄,直接將新的結算記錄插入到已收款表格中去。 圖 3-9 結算成功 無憂無慮畢設網 ():畢業(yè)設計源碼下載 第 21 頁 共 24 頁 刪除結算記錄: adocommand1.CommandText:=delete from 應收款 where 客戶編號 = + edit1.Text+; adocommand1.Execute; 以輸入的客戶編號在客戶清單中查找到 對應的客戶名稱 ,于是在數據集的SQL屬性中添加如下查詢語句,以獲取客戶名稱: adoquery2.SQL.Text:=select 名稱 from 客戶清單 where 客戶編號 = +edit1.Text+; adoquery2.Open; name:=adoquery2.fieldbyname(名稱 ).AsString; 獲取到“客戶名稱”后,再以客戶名稱查找已收款記錄: adoquery2.SQL.Text:=selec
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學生電競營銷活動方案
- 工會退休人員活動方案
- 干洗店充值活動方案
- 山羊比賽活動方案
- 小班感知游戲活動方案
- 工會聯建活動方案
- 小班幼兒自主活動方案
- 居家小班親子活動方案
- 少先隊誠信活動方案
- 小鵬體驗中心活動方案
- 08歲兒童的腦、認知發(fā)展與教育
- 《麥肯錫金字塔原理》課件
- 堡坎安全施工方案
- 《內部控制》ppt課件完整版
- 社區(qū)團購具體操作流程怎么寫好
- 文化產業(yè)賦能鄉(xiāng)村振興
- (更新版)國家開放大學電大專科《計算機平面設計(2)》網絡課形考任務01-05作業(yè)答案
- 城市排水管網風險評估
- 大數據平臺部署與運維高職全套教學課件
- 源彩數碼印花技改項目環(huán)境影響報告表
評論
0/150
提交評論