




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、超市管理系統(tǒng)的設(shè)計和實現(xiàn) 目 錄摘 要abstract第1章 概 論11.1現(xiàn)狀概述31.2 發(fā)展前景31.3可行性分析4第2章 系統(tǒng)需求分析52.1 系統(tǒng)功能需求描述52.1.1基本信息管理功能52.1.2商品信息管理功能52.1.3銷售操作管理功能52.1.4統(tǒng)計查詢管理功能6第3章 總體設(shè)計73.1 功能模塊劃分73.2 系統(tǒng)流程分析8第4章 系統(tǒng)詳細(xì)設(shè)計及實現(xiàn)94.1 數(shù)據(jù)庫設(shè)計94.1.1創(chuàng)建數(shù)據(jù)庫94.1.2 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計104.2 功能模塊設(shè)計及實現(xiàn)144.2.1設(shè)計工程框架144.2.2系統(tǒng)主界面設(shè)計214.2.3登錄模塊設(shè)計224.2.4供應(yīng)商管理模塊設(shè)計234.2.5
2、 用戶管理模塊設(shè)計264.2.6 商品管理模塊設(shè)計304.2.7銷售操作管理模塊324.2.8統(tǒng)計查詢管理模塊設(shè)計35第5章 系統(tǒng)性能測試385.1軟件測試概述385.2測試本系統(tǒng)385.2.1 通過單元測試本系統(tǒng):385.3 測試結(jié)果39結(jié)束語40致 謝41參考文獻42第1章 概 論1.1現(xiàn)狀概述隨著人們的生活水平和消費水平的提高,超市已成為我們生活中不可缺少的一部分。隨著經(jīng)濟文化水平的顯著提高,人們對生活質(zhì)量及工作環(huán)境的要求也越來越高。隨著社會經(jīng)濟的迅速發(fā)展和科學(xué)技術(shù)的全面進步,計算機事業(yè)的飛速發(fā)展,以計算機與通信技術(shù)為基礎(chǔ)的信息系統(tǒng)正處于蓬勃發(fā)展的時期。將計算機這一信息處理利器應(yīng)用于超市
3、的日常管理已是勢必所然,與此同時,為了管理大量的超市商品,超市商品超市也大量的出現(xiàn),超市的管理問題也就提上了日程。隨著超市商品的大量增加,其管理難度也越來越大,如何優(yōu)化超市的日常管理也就成為了一個大眾化的課題。在計算機飛速發(fā)展的今天,將計算機這一信息處理利器應(yīng)用于超市的日常管理已是勢必所然,而且這也將為超市管理帶來前所未有的改變,它可以帶來意想不到的效益,同時也會為企業(yè)的飛速發(fā)展提供無限潛力。采用計算機管理信息系統(tǒng)已成為超市管理科學(xué)化和現(xiàn)代化的重要標(biāo)志,它給企業(yè)管理來了明顯的經(jīng)濟效益和社會效益。主要體現(xiàn)在:極大提高了超市工作人員的工作效率,大大減少了以往入出存流程繁瑣,雜亂,周期長的弊端2?;?/p>
4、于超市管理的全面自動化,可以減少入庫管理、出庫管理及庫存管理中的漏洞,可以節(jié)約不少管理開支,增加企業(yè)收入。超市的管理的操作自動化和信息的電子化,全面提高了超市的管理水平。隨著我國改革開放的不斷深入,經(jīng)濟飛速的發(fā)展,企業(yè)要想生存、發(fā)展,要想在激烈的市場競爭中立于不敗之地,沒有現(xiàn)代化的管理是萬萬不行的,超市管理的全面自動化、信息化則是其中極其重要的部分。為了加快超市管理自動化的步伐,提高超市的管理業(yè)務(wù)處理效率,建立超市管理系統(tǒng)已變得十分心要。入庫、庫存、出庫還是現(xiàn)在企業(yè)超市管理的常規(guī)基本模式,雖然,最近又出現(xiàn)了很多新的管理模式,如:基于零庫存思想的沃爾瑪特管理方式,但這些新的思想在中國大部分企業(yè)的
5、管理中還是難以實現(xiàn)的。所以如何設(shè)計好超市管理系統(tǒng),盡可能地減少超市管理的重復(fù)性和低效性就成為當(dāng)前最為重要的問題。超市供銷管理的核心是入庫、庫存和出庫之間的聯(lián)系,如何處理好三者之間的關(guān)系是系統(tǒng)最為關(guān)鍵的部分。另外,經(jīng)辦人信息和廠家信息管理也是超市管理中一個必不可少的部分,它提供著與入庫和出庫相關(guān)的地一些信息,使得整個系統(tǒng)更加完整,更加實用。通過對超市管理日常工作的詳細(xì)調(diào)查,搜集了大量的資料,從系統(tǒng)結(jié)構(gòu)的組織,功能的實現(xiàn),技術(shù)的要求以及可行性等多方面進行考慮,認(rèn)為本課題是一個適應(yīng)現(xiàn)今超市管理需求的計算機信息管理系統(tǒng),具有一定的實際開發(fā)價值和使用價值。1.2 發(fā)展前景明天,我們怎樣在超市購物?當(dāng)然,
6、未來的超市還會有小推車、還會有一排排擺滿商品的貨架,但你購物的體驗將完全不同。ibm零售業(yè)解決方案部全球總經(jīng)理湯姆彼得森近日在上海為記者展示了一段未來超市購物的“現(xiàn)場版”在美國馬薩諸塞州,已經(jīng)有人這樣在超市購物了。走進一家名為“停車購買”的大賣場,購物者得到的小手推車的把手上裝著一臺平板電腦,同時,你會拿到一張會員卡和一個類似于無線紅外掃描儀之類的東西。掃描一下你的卡,手推車上平板電腦的屏幕上就會出現(xiàn)你在這家店購物的“歷史記錄”,電腦甚至提醒你,該買雞蛋或者餐巾紙了,或者告訴你,你每次都購買的某某品牌的商品現(xiàn)在有優(yōu)惠。在屏幕上觸摸一下,整個超市的貨架平面圖躍然屏上,屏幕上同時顯示你當(dāng)前的位置,
7、想去買什么,按圖索驥就行了。如果你是個連左右都不分的路盲,還是有辦法在面積巨大的超市里順利找到你想要的商品。來到貨架前,這個貨架的最上面一層并沒堆放貨物,而是幾塊電腦觸摸屏,在上面查詢到你想要的商品后,從你的頭頂會有一束光打到腳下,例如你想買奶粉,就會投下三個光柱:脫脂奶粉、無糖奶粉和標(biāo)準(zhǔn)奶粉。踩上“脫脂奶粉”的那個圓點,奇跡發(fā)生了:以這個小圓點為起點,出現(xiàn)了一串光束投影在地上的腳印,只要踩著這些腳印走,你就能走到自己所需要的商品面前!感覺像是科幻小說,但在全球17個地方,ibm已經(jīng)開始實驗這樣的信息化零售系統(tǒng),據(jù)悉,到明年年底前,在美國將有170家“停車購買”的門店應(yīng)用上面提到的那套系統(tǒng)。據(jù)
8、透露,ibm正在上海興建其亞太區(qū)零售業(yè)解決方案展示中心,集中展示全球最先進的零售業(yè)信息技術(shù)以及針對中國的市場解決方案。此外,ibm明年還將與復(fù)旦大學(xué)合作建立一個“零售體驗創(chuàng)新中心”,到那時,我們可以在上海親身體驗不可思議的購物經(jīng)歷。1.3可行性分析為了提高超市管理自動化進程,降低員工的勞動強度,縮短勞動時間,使超市管理更科學(xué),更快捷,我們開發(fā)了這個小型超市管理系統(tǒng)。1.整個系統(tǒng)能在586以上的通用微機上運行;2.操作系統(tǒng)環(huán)境為windows95/98或windows nt 3.51以上的版本;3.系統(tǒng)工作模式采用c/s;4.數(shù)據(jù)庫采用sql server 2000,用microsoft公司的v
9、isual basic 6.0版作為軟件開發(fā)工具;從可維護性分析:1.采用“所見即所得”得windows視窗界面,便于操作;2.系統(tǒng)具有良好得安全保護措施及高可靠性與穩(wěn)定性。從社會效應(yīng)和經(jīng)濟效應(yīng)分析:1、 超市的管理的操作自動化和信息的電子化,全面提高了超市的管理水平和經(jīng)營效益。即方便了超市的管理者又方便了消費者。2、 由于小型超市的經(jīng)濟實力有限,著重考慮了經(jīng)濟問題。盡量降低成本、節(jié)約開支、提高效率。因此,綜合上述超市管理系統(tǒng)的方案是可行的。第2章 系統(tǒng)需求分析2.1 系統(tǒng)功能需求描述本系統(tǒng)所描述的超市管理系統(tǒng)的主要功能包括:基本信息管理功能商品信息管理功能銷售操作管理功能統(tǒng)計查詢管理功能2.
10、1.1基本信息管理功能基本信息包括供應(yīng)商信息、會員信息、用戶信息。a. 供應(yīng)商信息包括供應(yīng)商單位名稱、商品和聯(lián)系人等信息,在入庫時需要提供供應(yīng)商的信息。b. 會員信息包括會員編號、會員名字、積分等信息,在購買商品時會員享受折扣時需要用到。c. 用戶信息包括用戶名、密碼、用戶類型等信息。在登錄窗口中,根據(jù)用戶名,判斷用戶的類型后,根據(jù)用戶的權(quán)限打開相應(yīng)得用戶信息窗口。基本信息模塊可以實現(xiàn)以下的功能:1. 供應(yīng)商信息的錄入、修改和刪除;2. 會員信息的錄入、修改和刪除;3. 用戶信息的錄入、修改和刪除。2.1.2商品信息管理功能系統(tǒng)需要對庫存商品進行分類管理,用戶可以創(chuàng)建和編輯商品類目。本系統(tǒng)采用
11、二級商品類目的方法,一級類目描述商品所屬的大致類別,例如日用品、電器、食品等;二級類目則在以及類目的基礎(chǔ)上,對商品進行細(xì)致的劃分,例如食品又可劃分為素菜類、葷菜類、水果類、熟食類、南食類等。商品信息管理可以實現(xiàn)以下功能:1. 商品類目的錄入(包括商品類目編號、類目名稱和類目級別等信息),修改和刪除;2. 商品信息的錄入(包括商品編號、所屬類目、商品名稱和商品價格等信息),修改和刪除。2.1.3銷售操作管理功能銷售操作包括入庫和銷售兩個部分。其中入庫操作由經(jīng)理執(zhí)行,銷售由收銀員執(zhí)行。1. 入庫操作入庫操作需記錄相關(guān)商品信息、供應(yīng)商信息、經(jīng)辦人、涉及金額和入庫時間等信息。2. 銷售操作銷售操作需記
12、錄相關(guān)商品的信息、庫存信息、經(jīng)辦人、涉及金額和銷售時間、折扣等信息2.1.4統(tǒng)計查詢管理功能統(tǒng)計查詢管理模塊可以對庫存商品進行各種類型的統(tǒng)計和查詢,從而使用戶能全面地了解庫存情況。本模塊可以實現(xiàn)以下的功能:1. 商品入庫統(tǒng)計報表2. 商品銷售報表3. 庫存商品統(tǒng)計報表第3章 總體設(shè)計3.1 功能模塊劃分從功能描述的內(nèi)容可以看到,本系統(tǒng)可以實現(xiàn)4個完整的功能。根據(jù)這些功能,設(shè)計出的系統(tǒng)功能模塊如圖3-1所示?;拘畔⒐芾頃T信息管理用戶信息管理商品信息管理生成商品入庫統(tǒng)計報表生成庫存商品統(tǒng)計報表銷售操作管理超市管理系統(tǒng)入庫操作管理供應(yīng)商信息管理商品類目管理生成商品銷售統(tǒng)計報表商品信息管理銷售操作
13、管理理統(tǒng)計查詢管理圖3-1 超市管理系統(tǒng)功能模塊示意圖在功能模塊示意圖的樹狀結(jié)構(gòu)圖中,每一個葉結(jié)點都是一個最小的功能模塊。每一個功能模塊都需要針對不同的表完成相同的數(shù)據(jù)庫操作,即添加記錄、修改記錄、刪除記錄、以及查詢顯示記錄。3.2 系統(tǒng)流程分析所謂的系統(tǒng)流程就是用戶在使用系統(tǒng)時的工作過程。多用戶系統(tǒng)的工作流程是從用戶登錄開始的,對用戶身份進行認(rèn)證。身份認(rèn)證可以分為以下兩個過程:1 確認(rèn)用戶是否為有效的系統(tǒng)用戶2 確定用戶類型第一個過程決定用戶能否進入系統(tǒng)。第二個過程決定用戶的操作權(quán)限,從而決定用戶的工作界面。本系統(tǒng)的流程分析如圖3-2 所示 圖3-2 系統(tǒng)流程分析圖在系統(tǒng)流程分析圖中可以看到
14、,每個用戶有3次機會進行身份認(rèn)證。如果3次輸入的用戶名和密碼都無法與數(shù)據(jù)庫中的數(shù)據(jù)匹配,則強制退出系統(tǒng)。第4章 系統(tǒng)詳細(xì)設(shè)計及實現(xiàn)4.1 數(shù)據(jù)庫設(shè)計4.1.1創(chuàng)建數(shù)據(jù)庫在設(shè)計數(shù)據(jù)庫表結(jié)構(gòu)前,首先需創(chuàng)建一個數(shù)據(jù)庫。本系統(tǒng)的數(shù)據(jù)庫為supermarket??梢栽谄髽I(yè)管理器中創(chuàng)建,也可以在查詢分析器中執(zhí)行以下transact-sql語句:use mastergocreate database supermarketonprimary ( name = supermarket1, filename = e:study畢業(yè)設(shè)計超市datasupermarketdata1.mdf, size = 10mb
15、, maxsize = 200, filegrowth = 2),( name = supermarket2, filename = e:study畢業(yè)設(shè)計超市datasupermarketdata2.ndf, size = 10mb, maxsize = 200, filegrowth = 2),( name = supermarket3, filename = e:study畢業(yè)設(shè)計超市datasupermarketdata3.ndf, size = 10mb, maxsize = 200, filegrowth = 2)log on ( name = supermarketlog1, f
16、ilename = e:study畢業(yè)設(shè)計超市datasupermarketlog1.ldf, size = 1mb, maxsize = 20, filegrowth = 1),( name = supermarketlog2, filename = e:study畢業(yè)設(shè)計超市datasupermarketlog2.ldf, size = 1mb, maxsize = 2, filegrowth = 1)go其中e:study畢業(yè)設(shè)計超市data是創(chuàng)建數(shù)據(jù)庫的地址。4.1.2 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計數(shù)據(jù)庫supermarket包含以下8個表:供應(yīng)商信息表client、會員信息表member、用戶
17、信息表users 、商品類目表protype、商品信息表product 、 銷售操作信息表 sale、 庫存商品信息表 stock、 入庫操作信息表 storein。下面分別介紹這些表的結(jié)構(gòu)。并且由于要產(chǎn)生報表,還包含了4個視圖:v_storein、v_sale、v_stock、report3。1. 供應(yīng)商信息表client供應(yīng)商信息表client用來保存供應(yīng)商信息,結(jié)構(gòu)如表4-1所示:表4-1 供應(yīng)商信息表其中clientid是供應(yīng)商編號,clientname是供應(yīng)商名稱,clienttype 是供應(yīng)商類型,contact是聯(lián)系人,address是地址,postcode 是郵政編碼,phon
18、e 是聯(lián)系電話,fax 是傳真。2. 會員信息表member會員信息表member用來保存會員顧客信息,結(jié)構(gòu)如表4-2所示:表4-2 會員信息表其中memberid 是會員編號,membername 是會員姓名,address是地址,phone 是聯(lián)系電話,score 是會員積分。3. 用戶信息表users用戶信息表users用來保存用戶信息,結(jié)構(gòu)如表4-3所示:表4-3 用戶信息表username 是用戶名,pwd 是密碼,usertype 是用戶類型,empname 是員工姓名。4. 商品類目表protype商品類目表protype用來保存商品類目信息,結(jié)構(gòu)如表4-4所示:表4-4 商品類
19、目表其中typeid 是類型編號,typename 是類型名,upperid 是上級類型編號。5. 商品信息表product商品信息表product用來保存商品基本信息,結(jié)構(gòu)如表4-5所示:表4-5 商品信息表 其中proid 是商品編號, proname 是商品名稱,typeid 是商品類型編號,prostyle 是商品規(guī)格,prounit 是計量單位,prolow 是商品數(shù)量下限,prohigh 是商品數(shù)量上限,proprice是價格(總計15個字節(jié),小數(shù)部分2個字節(jié))。6. 銷售操作信息表 sale銷售操作信息表 sale用來保存銷售操作信息,結(jié)構(gòu)如表4-6所示:表4-6銷售操作信息表其
20、中saleid是銷售編號,optdate是銷售日期,empname是經(jīng)手人名,proid是商品編號,proname是商品名稱,typeid是商品類型編號,proprice是商品單價,pronum是單件商品數(shù)量,sumnum是商品總數(shù)量,memberid是會員編號,sumprices是商品總價,discount 是會員折扣,remark是備注。7. 庫存商品信息表 stock庫存商品信息表 stock用來保存庫存商品信息,結(jié)構(gòu)如表4-7所示:表4-7庫存商品信息表其中storeproid是產(chǎn)品存儲編號(自動編號),proid是商品編號,proname是商品名稱,proprice是商品入庫單價,p
21、ronum是單件商品數(shù)量,typeid是商品類型編號,sumnum是商品總數(shù)量,describe 是簡單描述。8. 入庫操作信息表 storein入庫操作信息表 storein用來保存入庫信息,結(jié)構(gòu)如表4-8所示:表4-8入庫操作信息表其中storeinid是入庫編號,proid是入庫產(chǎn)品編號,createdate char是生產(chǎn)日期,proprice是入庫產(chǎn)品單價,pronum是入庫產(chǎn)品數(shù)量,clientid是供應(yīng)商編號,empname是經(jīng)辦人,optdate 是入庫日期。9. 視圖v_storeinv_storein的作用是對每種商品統(tǒng)計入庫的總數(shù)量。結(jié)構(gòu)如圖4-1:圖4-1 入庫視圖10
22、. 視圖v_salev_sale的作用是對每種商品統(tǒng)計銷售的總數(shù)量和總金額。結(jié)構(gòu)如圖4-2:圖4-2 銷售視圖11. 視圖v_stockv_stock的作用是對每種商品統(tǒng)計庫存總數(shù)。結(jié)構(gòu)如圖4-3所示:圖 4-3 庫存視圖12. 視圖 report3report3的作用是統(tǒng)計商品入庫和銷售的流水記錄。代碼如下:select storeinid, proid, proprice, pronum, clientid, empnamefrom storeinunionselect saleid, proid, proprice, pronum, (proprice * pronum) as sump
23、rices, empnamefrom sale4.2 功能模塊設(shè)計及實現(xiàn)4.2.1設(shè)計工程框架首先創(chuàng)建一個名為supermarket的新工程,并保存生成supermarket.vbp文件。設(shè)主窗體為formmain.frx。1. 添加模塊根據(jù)分析創(chuàng)建以下幾個模塊:1) const 用來管理工程中的常量;2) dbfunc 用來管理工程中與數(shù)據(jù)庫操作相關(guān)的聲明、變量和函數(shù);3) generalfunc 用來管理工程中一些通用的自定義函數(shù);4) variable 用來管理工程中的全局變量。(1) const 模塊代碼:數(shù)據(jù)庫訪問常量public const sql_c_char as long =
24、 1public const sql_column_label as long = 18public const sql_drop as long = 1public const sql_drror as long = -1public const sql_no_data_found as long = 100public const sql_success as long = 0public const sql_success_with_info as long = 1public const sql_attr_max_length as long = 100數(shù)據(jù)源信息常量public co
25、nst database as string = supermarketpublic const dsn as string = supermarket一次執(zhí)行connect操作可以訪問數(shù)據(jù)庫的次數(shù)public const connect_loop_max = 10(2) variable 模塊代碼:保存執(zhí)行sql語句的字符串public sqlstmt as string服務(wù)器名稱public school as string讀取表中列值的變量public colval as string客戶名稱數(shù)組public arr_client() as string商品類目數(shù)組public arr_
26、protype() as string商品名稱數(shù)組public arr_product() as string倉庫名稱數(shù)組public arr_stock() as string庫存商品編號和商品數(shù)量數(shù)組public arr_supermarketproid() as longpublic arr_supermarketpronum() as integer類模塊對象public myuser as new user 用戶對象public curuser as new user 當(dāng)前用戶對象public mymember as new member 會員對象public mypro as ne
27、w product 商品對象public myprotype as new protype 商品類別對象public mystorein as new storein 入庫對象public mysale as new sale 銷售對象public mystock as new stock 庫存商品對象public myclt as new client 供應(yīng)商對象2. 添加類模塊根據(jù)vb功能模塊的劃分原則,將為每一個表創(chuàng)建一個類模塊,將對此表的所有數(shù)據(jù)庫操作封裝在類中。1. client 類(如表4-9所示)表4-9 client類的成員函數(shù)函數(shù)名具體說明init初始化成員變量delete刪
28、除指定客戶記錄。參數(shù)tmpid表示要刪除的供應(yīng)商編號getid根據(jù)指定的客戶名稱,返回供應(yīng)商的編號。參數(shù)tmpname表示指定的供應(yīng)商名稱。getinfo讀取指定的供應(yīng)商記錄。參數(shù)tmpid表示要讀取的供應(yīng)商編號。getname 根據(jù)指定的供應(yīng)商編號讀取供應(yīng)商名稱。參數(shù)tmpid表示指定的供應(yīng)商編號。in_db判斷指定的供應(yīng)商是否已經(jīng)在數(shù)據(jù)庫中。參數(shù)tmpclientname表示指定的供應(yīng)商名稱。insert插入新的供應(yīng)商記錄update修改指定的供應(yīng)商記錄。參數(shù)tmpid表示要修改的供應(yīng)商編號。其中init函數(shù)的代碼如下:public sub init() clientid = -1 cli
29、entname = clienttype = -1 contact = address = postcode = phone = fax = describe = end sub2. member類(如表4-10所示)表4-10 member類的成員函數(shù)函數(shù)名具體說明init初始化成員變量delete刪除指定會員記錄。參數(shù)tmpid表示要刪除的會員編號getid根據(jù)指定的會員名字,返回會員的編號。參數(shù)tmpname表示指定的會員名字。getinfo讀取指定的會員記錄。參數(shù)tmpid表示要讀取的會員編號。getname 根據(jù)指定的會員編號讀取會員名稱。參數(shù)tmpid表示指定的會員編號。inser
30、t插入新的會員記錄update修改指定的會員記錄。參數(shù)tmpid表示要修改的會員編號。3. product類(如表4-11所示)表4-11 product類的成員函數(shù)函數(shù)名具體說明init初始化成員變量delete刪除指定商品記錄。參數(shù)tmpid表示要刪除的商品編號getid根據(jù)指定的商品,返回商品的編號。參數(shù)tmpname表示指定的商品名稱。getinfo讀取指定的商品記錄。參數(shù)tmpid表示要讀取的商品編號。getname 根據(jù)指定的商品編號讀取商品名稱。in_db判斷指定的商品名稱是否已經(jīng)在數(shù)據(jù)庫中。參數(shù)tmpclientname表示指定的商品名稱。insert插入新的商品記錄load_
31、by_upper根據(jù)指定的商品類目,讀取所屬的商品名稱。參數(shù)tmptypeid表示指定商品類目的編號。havetype判斷指定的商品類目中是否包含商品。參數(shù)tmptypeid表示指定的商品類目編號。如果返回true,則表示指定的商品類目下存在商品;否則表示不存在商品。此函數(shù)將在刪除商品類目數(shù)據(jù)之前調(diào)用,如果返回true,則不能刪除指定的數(shù)據(jù)。update修改指定的商品記錄。參數(shù)tmpid表示要修改的商品編號。其中insert過程的代碼如下:public sub insert() 連接數(shù)據(jù)庫 db_connect 設(shè)置insert語句 sqlstmt = insert into product
32、(proname, prostyle, _ + typeid, prounit, proprice, prolow, prohigh) _ + values( + trim(proname) + , + trim(prostyle) _ + , + trim(str(typeid) + , + trim(prounit) + , _ + trim(proprice) + , + trim(prolow) + , + trim(prohigh) + ) 執(zhí)行sql語句 odbcext (sqlstmt) rc = sqlfreestmt(hstmt, sql_drop) 斷開與數(shù)據(jù)庫的連接 db
33、_disconnectend sub 4. protype類(如表4-12所示)表4-12 protype類的成員函數(shù)函數(shù)名具體說明init初始化成員變量delete刪除指定商品類目記錄。參數(shù)tmpid表示記錄編號getid根據(jù)指定的商品類目名稱,返回商品類目編號。參數(shù)tmpname表示指定的商品類目名稱。getinfo讀取指定的商品類目記錄。參數(shù)tmpid表示要讀取的商品類目編號。getname 根據(jù)指定的商品類目編號讀取商品類目名稱。參數(shù)tmpid表示指定的商品類目編號。haveson判斷指定的商品類目中是否存在下級商品類目。參數(shù)tmpupperid表示指定的商品類目編號。如果返回true
34、,則表示存在下級目錄;否則表示沒有下級目錄。此函數(shù)在刪除商品類目前調(diào)用,如果返回true,則不能刪除指定數(shù)據(jù)。in_db判斷指定的商品類目名稱是否已經(jīng)在數(shù)據(jù)庫中。參數(shù)typename表示指定的商品類目名稱。insert插入新的商品類目記錄load_by_upper根據(jù)指定的商品類目,讀取下一級商品類目。參數(shù)upperid表示指定商品類目的編號。update修改指定的商品類目記錄。參數(shù)tmpid表示要修改的商品類目編號。其中haveson函數(shù)的代碼如下:public function haveson(byval tmpupperid as long) as boolean 連接數(shù)據(jù)庫 db_co
35、nnect 設(shè)置sql語句,讀取指定的產(chǎn)品類目編號 sqlstmt = select typeid from protype where upperid= _ + trim(str(tmpupperid) 執(zhí)行sql語句 odbcext (sqlstmt) 如果結(jié)果集中有數(shù)據(jù),則返回true;否則返回false if sqlfetch(hstmt) = sql_no_data_found then haveson = false else haveson = true end if rc = sqlfreestmt(hstmt, sql_drop) 斷開與數(shù)據(jù)庫的連接 db_disconnec
36、tend function5. sale類(如表4-13所示)表4-13 sale類的成員函數(shù)函數(shù)名具體說明init初始化成員變量havememberid讀取指定的會員記錄。參數(shù)memberid表示要讀取的會員編號。havepro判斷指定的商品數(shù)據(jù)是否出現(xiàn)在銷售記錄中。參數(shù)tmpproid表示指定的商品編號getnewid生成新的銷售記錄編號。insert插入新的銷售記錄其中g(shù)etnewid過程的代碼如下:public function getnewid() as long dim tmpid as long 連接數(shù)據(jù)庫 db_connect 設(shè)置要執(zhí)行的sql語句 sqlstmt = sel
37、ect saleid from sale order by saleid 執(zhí)行sql語句 odbcext (sqlstmt) 讀取select語句返回的查詢結(jié)果 i = 1 do while sqlfetch(hstmt) sql_no_data_found colval = string(40, 0) rc = sqlgetdata(hstmt, 1, 1, colval, len(colval), pcblen) tmpid = val(colval) 把讀取的編號與自然數(shù)序列比較 if tmpid = i then i = i + 1 else 如果編號是不連續(xù)的,則用新編號來填充 ge
38、tnewid = i rc = sqlfreestmt(hstmt, sql_drop) db_disconnect exit function end if loop rc = sqlfreestmt(hstmt, sql_drop) 斷開與數(shù)據(jù)庫的連接 db_disconnect 將得到的新編號作為函數(shù)的返回值 getnewid = iend function此函數(shù)的功能是生成新的銷售編號,在insert()過程中將調(diào)用此函數(shù)。生成新的銷售編號的算法是:把讀取的銷售編號與自然數(shù)序列比較,如果銷售編號是不連續(xù)的,則用新的編號來填充;如果銷售編號是連續(xù)的,則用最大的銷售編號加1作為新的編號。6
39、. stock類(如表4-14所示)表4-14 stock類的成員函數(shù)函數(shù)名具體說明init初始化成員變量deletezero刪除數(shù)量為0的商品庫存記錄。getid根據(jù)指定的商品庫存信息,返回商品庫存編號。參數(shù)tmpproid表示指定的商品編號,tmpproprice表示商品的價格。getinfo讀取指定的記錄。參數(shù)tmpid表示要讀取的商品庫存編號。getsumpro 計算庫存商品的總數(shù)量。參數(shù)tmpproid表示商品編號。havepro判斷指定的商品數(shù)據(jù)是否出現(xiàn)在庫存記錄中。參數(shù)tmpproid表示指定的商品編號in_db判斷指定的商品庫存信息是否已經(jīng)在數(shù)據(jù)庫中。參數(shù)tmpproid表示商
40、品編號參數(shù),tmpproprice表示商品的價格。insert插入新的商品庫存記錄loadpro將指定的商品信息讀取到數(shù)組arr_storepronum()中。參數(shù)tmpproid表示商品編號。update修改指定的商品庫存記錄。參數(shù)oriid表示要修改的商品庫存記錄。updatediff修改指定的商品庫存數(shù)量,把當(dāng)前的商品數(shù)量增加pronum,pronum可以為負(fù)。7. storein類(如表4-15所示)表4-15 storein類的成員函數(shù)函數(shù)名具體說明init初始化成員變量haveclt判斷指定的供應(yīng)商數(shù)據(jù)是否出現(xiàn)在入庫記錄中。參數(shù)tmpcltid表示指定的供應(yīng)商編號havepro判斷
41、指定的商品數(shù)據(jù)是否出現(xiàn)在入庫記錄中。參數(shù)tmpproid表示指定的商品編號getnewid生成新的入庫編號。insert插入新的入庫記錄8. user類(如表4-16所示)表4-16 user類的成員函數(shù)函數(shù)名具體說明init初始化成員變量delete刪除指定用戶記錄。參數(shù)tmpuser表示指定的用戶名。getinfo讀取指定的用戶記錄。參數(shù)tmpuser表示指定的用戶名。in_db判斷指定的用戶名是否已經(jīng)在數(shù)據(jù)庫中。參數(shù)tmpuser表示指定的用戶名insert插入新的記錄update修改指定的記錄。參數(shù)tmpuser表示要修改的用戶名。其中in_db過程的代碼如下:public funct
42、ion in_db(byval tmpuser as string) as boolean 連接數(shù)據(jù)庫 db_connect 設(shè)置sql語句,讀取指定的用戶名 sqlstmt = select * from users where username= _ + trim(tmpuser) + 執(zhí)行sql語句 odbcext (sqlstmt) 如果結(jié)果集中有數(shù)據(jù),則返回true;否則返回false if sqlfetch(hstmt) = sql_no_data_found then in_db = false else in_db = true end if rc = sqlfreestmt(
43、hstmt, sql_drop) 斷開與數(shù)據(jù)庫的連接 db_disconnectend function3. 創(chuàng)建數(shù)據(jù)源為了能夠在程序中訪問到數(shù)據(jù)庫supermarket,需要在odbc中創(chuàng)建一個名為supermarket的數(shù)據(jù)源。具體步驟省略。4.2.2系統(tǒng)主界面設(shè)計1. 按表4-17設(shè)計主窗體的屬性:表4-17 主窗體屬性表窗體屬性設(shè)置值具體說明名稱frmmain設(shè)置窗體名稱broderstyle1- fixed single設(shè)置窗體的邊框?qū)傩詂aption超市管理系統(tǒng)窗體的標(biāo)題條文本maxbuttonfalse取消最大化按鈕minbuttontrue激活最小化按鈕pictrueimage
44、main.gif 設(shè)置窗體背景startupposition2- 屏幕中心設(shè)置窗體彈出時,位置在屏幕中心。2. 按表4-18設(shè)置菜單項設(shè)置:表4-18 主窗體菜單項設(shè)置表 標(biāo)題名稱標(biāo)題名稱系統(tǒng)設(shè)置mn_sys銷售mn_sale戶管理mn_user入庫mn_storeinpro供應(yīng)商管理mn_client銷售商品mn_salepro會員管理mn_member統(tǒng)計查詢mn_static退出系統(tǒng)mn_exit商品銷售統(tǒng)計表mn_report1商品管理mn_product商品入庫統(tǒng)計表mn_report2商品類目mn_protype庫存產(chǎn)品統(tǒng)計表mn_report3商品信息mn_proinfo由此得到
45、本系統(tǒng)的主界面,如圖4-3所示:圖4-3超市管理系統(tǒng)主界面3. 添加退出系統(tǒng)的代碼。當(dāng)用戶單擊mn_exit按鈕時,將執(zhí)行mn_exit_click()過程,退出系統(tǒng)。代碼如下:private sub mn_exit_click() dbapi_disconnect endend sub4.2.3登錄模塊設(shè)計用戶要使用本系統(tǒng),首先要通過系統(tǒng)的身份驗證,即登錄。登錄過程需完成以下任務(wù):1. 根據(jù)用戶名和密碼判斷是否可以進入系統(tǒng);2. 根據(jù)用戶類型決定用戶擁有的權(quán)限。設(shè)計得到如圖4-4的登錄窗體:圖4-4 登錄窗體布置4.2.4供應(yīng)商管理模塊設(shè)計供應(yīng)商管理模塊可以實現(xiàn)以下的功能:1. 添加供應(yīng)商;
46、2. 修改供應(yīng)商信息;3. 刪除供應(yīng)商;4. 查看供應(yīng)商信息。1) 設(shè)計客戶信息編輯窗體編輯供應(yīng)商信息的窗體可以用來添加和修改供應(yīng)商信息。創(chuàng)建一個名為frmcltedit,設(shè)置好窗體屬性,得到如圖4-5的布局。圖4-5 窗體frmcltedit的界面 下面分析窗體frmcltedit中的公共變量:窗體frmcltedit中有3個公共變量。變量modify用來標(biāo)記當(dāng)前的數(shù)據(jù)庫訪問狀態(tài)。當(dāng)modify=true時,表示修改已有的數(shù)據(jù);當(dāng)modify=false時,表示插入新的數(shù)據(jù);變量oriid表示當(dāng)前編輯的供應(yīng)商編號;變量oriname表示當(dāng)前編輯的供應(yīng)商名稱。2) 設(shè)計供應(yīng)商信息管理窗體創(chuàng)建一
47、個名為frmcltman的新窗體,設(shè)置好控件屬性,得如圖4-6和4-7的布局:圖4-6供應(yīng)商信息管理窗體(一)圖4-7 供應(yīng)商信息管理窗體(二)下面分析窗體frmcltman中幾個過程的代碼。a) refresh_clt過程refresh_clt()過程的功能是為adodc 1控件設(shè)置數(shù)據(jù)源,從而決定在dategrid1控件中顯示的數(shù)據(jù)內(nèi)容,代碼如下:private sub refresh_clt() 設(shè)置數(shù)據(jù)源,顯示客戶數(shù)據(jù) adodc1.recordsource = select clientid as 客戶編號, clientname as 單位名稱, _ + contact as 聯(lián)系
48、人, address as 通信地址, postcode as 郵政編碼, _ + phone as 聯(lián)系電話, fax as 傳真電話, describe as 描述信息 _ + from client where clienttype= + trim(str(combotype.listindex + 1) 刷新數(shù)據(jù)源,把新的內(nèi)容反映到界面上 adodc1.refreshend subb) cmb_del_click過程private sub cmd_del_click() dim tmpid as long 判斷是否已經(jīng)選擇了記錄 if adodc1.recordset.bof = tr
49、ue then msgbox 請選擇記錄 exit sub end if 記錄當(dāng)前的位置 p = adodc1.recordset.absoluteposition 讀取當(dāng)前記錄的客戶單位信息 tmpid = adodc1.recordset.fields(0) 判斷入庫單中是否包含此客戶的信息 if mystorein.haveclt(tmpid) = true then msgbox 客戶出現(xiàn)在入庫單中,不能刪除 exit sub end if 判斷庫存產(chǎn)品信息中是否包含此客戶的信息 if mystock.haveclt(tmpid) = true then msgbox 客戶出現(xiàn)在庫存產(chǎn)
50、品信息中,不能刪除 exit sub end if 確認(rèn)刪除 if msgbox(是否刪除當(dāng)前行?, vbyesno, 確認(rèn)) = vbyes then myclt.delete (tmpid) msgbox 刪除成功 refresh_clt if p - 1 0 then adodc1.recordset.move p - 1 end if end ifend sub4.2.5 用戶管理模塊設(shè)計 根據(jù)用戶類型的不同,用戶管理模塊的功能也不相同。可以包含以下情形:1. admin用戶可以創(chuàng)建普通用戶,對普通用戶的用戶名和密碼進行修改,刪除普通用戶;2. admin用戶也可以修改自身的密碼;3.
51、 普通用戶只能修改自身的用戶名和密碼。1) 設(shè)計編輯用戶信息的窗體編輯用戶信息的窗體可以用來添加和修改用戶信息。創(chuàng)建一個名為frmuseredit的窗體,設(shè)置好屬性后,得到如圖4-8所示的布局。圖4-8編輯用戶信息窗體當(dāng)用戶單擊“確定”按鈕時,將觸發(fā)cmd_ok_click事件,對應(yīng)代碼如下:private sub cmd_ok_click() if trim(txtusername) = then msgbox 請輸入用戶名 txtusername.setfocus exit sub end if if len(txtpass) 6 then msgbox 密碼長度不能小于6 txtpass.setfocus txtpass.selstart = 0 txtpass.sellength = len(txtpass2) exit sub end if if txtpass txtpass2 then msgbox 密碼和確認(rèn)密碼不相同,請重新確認(rèn) txtpass2.setfocus txtpass2.selstart = 0 txtpass2.sellength = len(txtpass2) exit s
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專項9 語言表達(解析版)
- 人教版六年級語文上冊教學(xué)計劃(含進度表)
- 3.4升華和凝華 說課稿2025年初中人教版物理八年級上冊
- 《舞蹈解剖學(xué)》全套教學(xué)課件
- 檢察院和銀行合作協(xié)議
- 正畸助手應(yīng)聘簡歷
- 文化設(shè)施土地轉(zhuǎn)讓居間合同
- 保齡球館裝修解除協(xié)議
- 企業(yè)信息化建設(shè)規(guī)章制度草案
- 特色農(nóng)業(yè)產(chǎn)業(yè)規(guī)劃
- 鼻飼技術(shù)(最新)ppt課件(PPT 31頁)
- 亞馬遜品牌授權(quán)書(英文模板)
- 光伏項目工程清單報價(最新)
- 火箭發(fā)動機課件-
- 《唐詩三百首》全集
- 國家工業(yè)管道標(biāo)識規(guī)范及顏色
- 最新CN系列磁力泵安裝使用說明書DEC
- 動火作業(yè)標(biāo)準(zhǔn)手冊
- 高速鐵路沉降變形觀測及評估方案
- 度帶和度帶代及中央子午線對照表
- 青島版五年級科學(xué)下冊-斜面
評論
0/150
提交評論