加油站管理系統(tǒng)_第1頁
加油站管理系統(tǒng)_第2頁
加油站管理系統(tǒng)_第3頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、目錄目錄 I一課程設(shè)計(jì)簡(jiǎn)介 11.1課程設(shè)計(jì)的目的11.2課程設(shè)計(jì)的內(nèi)容 12系統(tǒng)分析 32.1用戶工作流程32.2用戶業(yè)務(wù)需求33系統(tǒng)設(shè)計(jì) 43.1設(shè)計(jì)思想43.2系統(tǒng)功能結(jié)構(gòu)圖43.3模塊功能設(shè)計(jì)54系統(tǒng)數(shù)據(jù)庫設(shè)計(jì) 64.1系統(tǒng)數(shù)據(jù)庫的建立 64.2系統(tǒng)E-R圖64.3存儲(chǔ)過程設(shè)計(jì)84.4觸發(fā)器的設(shè)計(jì)94.5數(shù)據(jù)庫的連接105系統(tǒng)實(shí)現(xiàn) 115.1系統(tǒng)實(shí)現(xiàn)工具與支持平臺(tái) 115.2系統(tǒng)主要的功能界面與實(shí)現(xiàn)代碼 115.3系統(tǒng)主要功能實(shí)現(xiàn) 216總結(jié)與展望 226.1收獲與體會(huì)226.2未來的展望 227源代碼附錄 237.1系統(tǒng)與數(shù)據(jù)庫交互代碼 23參考文獻(xiàn) 34致謝 35課程設(shè)計(jì)檢查表 3

2、64 課程設(shè)計(jì)簡(jiǎn)介1.1課程設(shè)計(jì)的目的隨著人類社會(huì)的進(jìn)步和科學(xué)技術(shù)的發(fā)展, 人們生活水平也在不斷的提高,擁 有車的人越來越多,這又影響著油的耗量急劇增大,加油站也也來越多?,F(xiàn)在人們進(jìn)行信息交流的深度與廣度不斷增加,信息量急劇增長(zhǎng),傳統(tǒng)的信息處理與決 策的手段已不能適應(yīng)社會(huì)的需要,信息的重要性和信息處理問題的緊迫性空前提 高了,面對(duì)著日益復(fù)雜和不斷發(fā)展, 變化的社會(huì)環(huán)境,人們已經(jīng)習(xí)慣快速的獲得 信息以及完成各種事情,加油站的反戰(zhàn)中當(dāng)然也要考慮這些因素。本次設(shè)計(jì)的加 油站管理系統(tǒng)就是為滿足人們的需求而設(shè)計(jì)的, 此加油占管理系統(tǒng)是為了解決人 們生活中加油的快捷、方便以及減輕加油站管理人員和其他工作人

3、員工作的負(fù) 擔(dān),幫助他們很好的管理和工作的順利進(jìn)行。1.2課程設(shè)計(jì)的內(nèi)容本系統(tǒng)采用的是微軟公司的 Microsoft Visual C+ 6.0開發(fā)工具做為開發(fā)系統(tǒng) 程序。在連接數(shù)據(jù)庫上,利用 ADO對(duì)象模型,創(chuàng)建幾個(gè)簡(jiǎn)單的對(duì)象和數(shù)據(jù)來源 進(jìn)行連接,然后從中取得所需要的數(shù)據(jù),進(jìn)行數(shù)據(jù)訪問操作后保存。DAO或在連接數(shù)據(jù)庫上,以往在數(shù)據(jù)訪問應(yīng)用程序開發(fā)中,不管是使用RDO對(duì)象來訪問數(shù)據(jù)來源,都會(huì)對(duì)這些對(duì)象模型眾多而且復(fù)雜的組成結(jié)構(gòu)印象 深刻。但利用ADO對(duì)象模型,就可以只創(chuàng)建幾個(gè)簡(jiǎn)單的對(duì)象和數(shù)據(jù)來源進(jìn)行連 接,然后從中取得所需要的數(shù)據(jù),進(jìn)行數(shù)據(jù)訪問操作后保存。ADO (ActiveX Data O

4、bjects)對(duì)象模型主要由三個(gè)對(duì)象成員:Connection、Comma nd 與 Record set 對(duì)象; 以及三個(gè)集合對(duì)象: Errors、Parameters 與 Fields 對(duì)象所組成。ADO對(duì)象模型與DAO、RDO另一個(gè)較大的差異,在于某些ADO對(duì)象可以 直接創(chuàng)建而不需依據(jù)上下層按順序產(chǎn)生,比如我們可以直接創(chuàng)建一個(gè)Comma nd對(duì)象而不需要先行創(chuàng)建該對(duì)象的上層Connection對(duì)象,ADO會(huì)在該Comman對(duì)象產(chǎn)生時(shí)自動(dòng)創(chuàng)建上層Conn ection對(duì)象。此加油站要完成以下任務(wù):實(shí)現(xiàn)用戶的登陸,以很好管理工作人員的分工。實(shí)現(xiàn)系統(tǒng)的管理,包括管理工作人員信息,油庫信息,會(huì)員

5、信息,會(huì)員 等級(jí)信息等。能夠記錄油品購進(jìn)和銷售情況,剩余量等信息。工作人員能夠直接查詢庫存情況,會(huì)計(jì)人員能夠?qū)~目進(jìn)行管理。此系統(tǒng)還要能夠?qū)崿F(xiàn)數(shù)據(jù)庫對(duì)個(gè)功能模塊的訪問。其實(shí)現(xiàn)的具體任務(wù)還包括:在連接數(shù)據(jù)庫后先要有登陸界面,在確認(rèn)用用戶 身份后,符合身份的工作人員便可登陸,進(jìn)入系統(tǒng)主界面,可以在主界面上訪問 個(gè)功能模塊。各功能鍵包括:工作人員管理、油品信息管理、油品類型信息管理、 會(huì)員信息管理、添加進(jìn)貨記錄、添加銷售記錄、庫存查詢、賬目管理;通過工作 人員信息管理模塊查詢各工作人員信息;通過對(duì)油品的管理模塊查詢油品的單 價(jià),銷售儲(chǔ)量,存儲(chǔ)地等,通過對(duì)會(huì)員的管理模塊能查詢顧客等級(jí)、花費(fèi)等。2系統(tǒng)分

6、析2.1用戶工作流程下面是對(duì)本企業(yè)的業(yè)務(wù)流程的描述:工件人員信息錄入一?工作人員官理一生成 _ 工作人員信息數(shù)據(jù)庫讀収 讀 取圖2.1系統(tǒng)業(yè)務(wù)流程圖2.2用戶業(yè)務(wù)需求此系統(tǒng)要滿足用戶的如下需求:(1) 對(duì)不同工作類型的員工要能辨別其身份,根據(jù)身份限制其權(quán)限,設(shè)置完 成其工作任務(wù)。當(dāng)購進(jìn)油時(shí)要記錄油的相關(guān)信息,對(duì)不同的油放入相應(yīng)的油庫,同時(shí)記 錄其價(jià)格,儲(chǔ)量等。(3) 要記錄銷售信息,同時(shí)根據(jù)銷售情況對(duì)油庫燈做相應(yīng)的修改(4) 對(duì)不同的顧客根據(jù)其購買油量,消費(fèi)金額等給其設(shè)置相應(yīng)的會(huì)員等級(jí), 根據(jù)等級(jí)的不同給予不同的優(yōu)惠政策(5) 對(duì)油庫進(jìn)行編號(hào),不同的油庫存放不同的油,可根據(jù)用戶需要快速在相 應(yīng)

7、油庫找到所需的油3系統(tǒng)設(shè)計(jì)3.1設(shè)計(jì)思想(1) 系統(tǒng)分成前臺(tái)和后臺(tái)幾個(gè)相對(duì)進(jìn)程,這些進(jìn)程都進(jìn)行集中式管理。(2) 整個(gè)系統(tǒng)采用模塊化結(jié)構(gòu)設(shè)計(jì),并且有較強(qiáng)的可操作性和擴(kuò)展性。(3) 采用合理的數(shù)據(jù)流設(shè)計(jì)思想,在應(yīng)用系統(tǒng)設(shè)計(jì)中,相對(duì)獨(dú)立的模塊間以 數(shù)據(jù)流相互連接,使各模塊間的耦合性較低,方便系統(tǒng)運(yùn)行,提高系統(tǒng)安全性。3.2系統(tǒng)功能結(jié)構(gòu)圖根據(jù)對(duì)管理系統(tǒng)進(jìn)行可行性分析和結(jié)構(gòu)化程序設(shè)計(jì)的要求,可得到系統(tǒng)的總體結(jié)構(gòu)如圖3-1所示:圖3.1力啪站總功能模塊圖加油站管理系統(tǒng)的分功能模塊如圖3.2所示:加油站菅理系統(tǒng)圖3.2加油站分功能模塊圖3.3模塊功能設(shè)計(jì)系統(tǒng)功能設(shè)計(jì)是設(shè)計(jì)一個(gè)加油站管理系統(tǒng),要求滿足油品管

8、理的基本要求、 油品銷售管理的基本要求、工作人員管理的基本要求、油庫管理的基本要求、銷售管理的基本要求以及系統(tǒng)管理的基本要求。并且能夠?qū)崿F(xiàn)方便的擴(kuò)張,滿足加 油站發(fā)展的需求,能夠保障加油站管理數(shù)據(jù)的安全,準(zhǔn)確對(duì)于工作人員有不同的 職位,不同職位人員所擁有的工作權(quán)限也不一樣,對(duì)于油有購油信息、出售情況、 有的類別以及油量的多少等情況,能設(shè)置一些優(yōu)惠政策,比如會(huì)員可以優(yōu)惠。本系統(tǒng)共包括五大模塊,分別是用戶登錄模塊、系統(tǒng)管理模塊、經(jīng)銷操作模 塊、查詢操作模塊、數(shù)據(jù)庫防護(hù)問模塊。每個(gè)模塊的功能如下:(1)用戶登陸,根據(jù)不同用戶身份啟用不同的職務(wù)系統(tǒng)管理,包括工作人員信息管理、油庫信息管理、油品信息管理

9、、會(huì) 員信息、會(huì)員等級(jí)信息管理。(3) 進(jìn)銷操作,包括進(jìn)貨信息和銷售信息。(4) 查詢操作,包括庫存查詢和賬目管理。(5) 數(shù)據(jù)庫訪問模塊,提供各模塊數(shù)據(jù)庫操作接口4系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)4.1系統(tǒng)數(shù)據(jù)庫的建立數(shù)據(jù)庫的設(shè)計(jì)盡量的實(shí)現(xiàn)與應(yīng)用程序做到最低等級(jí)的耦合,按照三層模式兩級(jí)聯(lián)系的方式設(shè)計(jì)數(shù)據(jù)庫,把數(shù)據(jù)庫設(shè)計(jì)成層次清晰的,高效的實(shí)用數(shù)據(jù)庫。在該系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)方面,把數(shù)據(jù)庫的設(shè)計(jì)分為四層:基本表、存儲(chǔ)過程、觸發(fā) 器。其中觸發(fā)器的作用是這個(gè)表修改后, 自動(dòng)觸發(fā)到另外一個(gè)表,這樣可以減少 代碼的編寫。因?yàn)樵撓到y(tǒng)是采用三層架構(gòu)設(shè)計(jì)的,可通過應(yīng)用服務(wù)器的擴(kuò)展來實(shí)現(xiàn)新功能 的添加。而在該課程設(shè)計(jì)的內(nèi)容定義方面

10、,保證了數(shù)據(jù)的獨(dú)立性,該系統(tǒng)對(duì)數(shù)據(jù) 記錄的操作也因?yàn)槠湔n程設(shè)計(jì)中定義的數(shù)據(jù)操作方式和操作內(nèi)容而注定不會(huì)產(chǎn) 生臟數(shù)據(jù)及數(shù)據(jù)讀寫的不一致性,故在數(shù)據(jù)庫設(shè)計(jì)方面采用觸發(fā)器。4.2系統(tǒng)E-R圖1. 數(shù)據(jù)流圖根據(jù)系統(tǒng)的功能,得到該系統(tǒng)的數(shù)據(jù)流圖,其中第一層數(shù)據(jù)流圖如圖4-1收 賬 費(fèi) 用應(yīng)收賬款報(bào)表圖4.1加油站管理系統(tǒng)一層數(shù)據(jù)流圖第二層數(shù)據(jù)流圖如圖4.24.4所示:圖4.2送進(jìn)購買情況圖4.3處理顧客購油圖4.4處理賬款2. E-R模型根據(jù)數(shù)據(jù)流圖設(shè)計(jì)E-R模型,如圖4.5所示:3、將產(chǎn)生的E-R模型轉(zhuǎn)化為關(guān)系模型如下:工作人員(工作號(hào),姓名,身份證號(hào),員工類型,密碼)油庫管理(油庫編號(hào),工作號(hào))油庫

11、(油庫編號(hào),名稱,地點(diǎn),容量)油品(油品編號(hào),名稱,價(jià)格,儲(chǔ)量,油庫編號(hào))._會(huì)員(會(huì)員編號(hào),姓名,身份證號(hào),等級(jí)名稱,車牌號(hào),總消費(fèi)額)會(huì)員等級(jí)(等級(jí)名稱,折扣,最低消費(fèi)額)進(jìn)貨油品(油品編號(hào),工作號(hào),進(jìn)貨時(shí)間,油庫編號(hào),.一進(jìn)貨量,單價(jià)) 銷售油品(油品編號(hào),工作號(hào),銷售時(shí)間,油庫編號(hào),單價(jià),客戶,折扣, 銷售量)4.3存儲(chǔ)過程設(shè)計(jì)1、創(chuàng)建用于油品入庫的存儲(chǔ)過程:CREAT OR REPLACE ROCEDURE GAS_I nfoAdd(pgas_type IN nu mber(8),pdepot IN varchar(50),pamou nt IN varchar(30),pprice

12、 IN float ,pget_date IN date,pworker IN varchar(30)ASBEGINInsert into Gas _lnfo values(pgas_type,pdepot,pam oun t,pprice,pprice,pget_date,pworker);END GAS_I nfoAdd;2、創(chuàng)建添加工作人員的存儲(chǔ)過程:CREATE OR REPLACE PROCEDURE worker_I nfoAdd(pnu mber IN nu mber(8),pn ame IN varchar(25),pid IN numberr(18),ptype IN var

13、char(20),ppassword IN varchar(12)ASBEGINInsert into worker_I nfo values(p nu mber,pn ame,pid,ptype,ppassword)END worker_I nfoAdd;4.4觸發(fā)器的設(shè)計(jì)1、倉U建一個(gè)觸發(fā)器,實(shí)現(xiàn)當(dāng)一個(gè)油庫撤銷時(shí),修改相應(yīng)的油品信息的觸發(fā)器:CREATE OR REPLACE TRRIGER UP_GAS(BEFORE DELETE ON DEPOT FOR EACH ROWBEGINUpdate Gastype where depot. nu mber=Gastype .nu mberA

14、nd nu mber=:old nu mber;End UP_GAS;4.5數(shù)據(jù)庫的連接應(yīng)用程序與OraclelOg數(shù)據(jù)庫的連接是通過創(chuàng)建 ADO數(shù)據(jù)源,然后在程序中 利用代碼與數(shù)據(jù)庫建立連接來實(shí)現(xiàn)的。具體實(shí)現(xiàn)方法是:在模塊中聲明調(diào)用ADO連接控件,這樣便能在任何時(shí)間連接數(shù)據(jù)庫了。使用ADOConnection對(duì)象連接到OraclelOg。在查詢等按鈕的單擊事件中訪問數(shù)據(jù)庫??梢允褂脩?yīng)用程序配置文件建立一條到數(shù)據(jù)庫服務(wù)器的連接,返回一個(gè)關(guān)鍵字ConnectionString ,在實(shí)體數(shù)據(jù)鏈路層定義一個(gè)用于存儲(chǔ)過程的一個(gè)基類 DBdata.cs在這個(gè)基類中接受該關(guān)鍵字 ConnectionStr

15、ing ,使用SqlConnection 連接數(shù)據(jù)庫。配置文件連接數(shù)據(jù)庫的代碼:<addkey="C onnection Stri ng"value="server=(local); database=Supermarket;uid=sa; pwd="/>。存儲(chǔ)過程基類接受該關(guān)鍵字的代碼:System.C on figurati on.Con figurati on Sett in gs.AppSett in gs" Connection String ".ToString();5系統(tǒng)實(shí)現(xiàn)5.1系統(tǒng)實(shí)現(xiàn)工具與支持平臺(tái)(1)

16、 用戶界面:本系統(tǒng)采用 Microsoft Visual C+ 6.0設(shè)計(jì),用戶交互界面采用的是基于 Windows的窗口界面。(2) 硬件要求:運(yùn)行本系統(tǒng)的硬件基本要求如下:CPU: Intel P4及以上;內(nèi)存:1024MB及以上;硬盤:40GB及以上。(3) 軟件要求:數(shù)據(jù)庫服務(wù)器:Oracle10g。5.2系統(tǒng)主要的功能界面與實(shí)現(xiàn)代碼下面為運(yùn)行后的界面圖:1、系統(tǒng)的登錄界面與代碼:圖5.1系統(tǒng)登錄界面實(shí)現(xiàn)代碼如下:void CgasStati on Dlg:O nLogi n() Cstri ng strBt nText;m_bt nLogi n.GetWi ndowText(strB

17、t nText);if ( strBtnText= 登陸 ” CloginDlg loginDlg;if (logi nDlg.DoModal() != IDOK) retur n ; if(!ADOSQLServer.lsValidWorkerPassword(logi nDlg.m_ nNu mber,log in Dlg.m_strPassword) MB_ERROR(密碼錯(cuò)誤,登陸失??! ”;return ;oooooooooooelse if (MB_QUERY(確定要注銷當(dāng)前用戶么?”= IDNO)return ;m_btnLogin.SetWindowText(登陸”;m_bt

18、nWorkerMgr.E nableWi ndow(FALSE);ooooooooooom_bt nLogi n.E nableWi ndow(FALSE);2、加油站管理系統(tǒng)主窗口界面如下:圖5.2加油站管理系統(tǒng)主窗口3、工作人員信息管理模塊的界面與代碼:圖5.3工作人員信息管理界面實(shí)現(xiàn)代碼如下:BOOL CWorkerMgrDlg:O nlni tDialog() CDialog:O nln itDialog();const char *list_colu mn=II厶白戶、II編號(hào),"姓名","身份證號(hào)","類型",1111;i

19、nt i=0;while (*list_columni != 0x00) mistWorker.l nsertColu mn (i, list_colu mn i+, LVCFMT_LEFT, 100); mistWorker.SetExte ndedStyle(LVS_EX_FULLROWSELECT);return TRUE; void CWorkerMgrDlg:O nAdd() int nNu mber = -1;if (!ADOSQLServer.AutoAssig nNu mber("Worker", nNu mber) MB_ERROR("無法添加工

20、作人員信息,可能是數(shù)據(jù)庫已滿!”);return ;CWorkerI nfoDlg workerI nfoDlg;workerI nfoDIg.m _nNu mber = nNu mber;if (workerI nfoDlg.DoModal() = IDOK) if (!ADOSQLServer.AddNewWorker(workerI nfoDIg.m _nNu mber,workerI nfoDlg.m_strName,workerI nfoDlg.m_strlD,workerI nfoDIg.m _n WorkerType,workerI nfoDlg.m_strPassword)MB

21、_ERROR添加工作人員信息失敗!”);RefreshList();void CWorkerMgrDlg:O nM odify() int nItem = mistWorker.GetSelectio nM ark();if (nI tem = -1)return ;CWorkerI nfoDlg workerI nfoDlg;CStri ng strNumber = mistWorker.GetltemText( nltem, 0);GET_INT(workerI nfoDlg.m_ nNu mber, strNumber);ADOSQLServer.GetWorker(workerI nf

22、oDIg.m _nNu mber,workerI nfoDlg.m_strName,workerI nfoDlg.m_strlD,workerI nfoDIg.m _n WorkerType,workerI nfoDlg.m_strPassword);if (workerI nfoDlg.DoModal() = IDOK) if (!ADOSQLServer.ModifyWorker(workerl nfoDIg.m _nNu mber,workerl nfoDlg.m_strName,workerI nfoDlg.m_strlD,workerI nfoDIg.m _n WorkerType,

23、workerI nfoDlg.m_strPassword)MB_ERROR修改工作人員信息失??!”);RefreshList();void CWorkerMgrDlg:O nRemove()int nItem = mistWorker.GetSelectio nM ark();if (nI tem = -1)return ;int nNu mber;CStri ng strNumber = mistWorker.GetltemText( nltem, 0);GET_INT( nNu mber, strNumber);if (MB_QUERY(” 確定要?jiǎng)h除此項(xiàng)么?") = IDYES

24、) if (!ADOSQLServer.RemoveWorker(nNu mber)MB_ERROR刪除工作人員信息失敗!”);RefreshList();void CWorkerMgrDlg:RefreshList()mistWorker.DeleteAllltems();strPassword);CStri ngArray strNumber, strName, strlD, strType, strPassword;ADOSQLServer.GetWorkers(strNumber, strName, strlD, strType, for (int i=O;i<strNumber

25、.GetSize();i +) mistWorker.l nsertltem(i, strNumber.GetAt(i);mistWorker.SetltemText(i, 1, strName.GetAt(i);mistWorker.SetltemText(i, 2, strlD.GetAt(i);int n Type;GET_INT (n Type, strType.GetAt(i);switch (n Type) case 0:mistWorker.SetltemText(i, 3,"銷售員");break;case 1:mistWorker.SetltemText(

26、i, 3,"進(jìn)貨員");break;case 2:mistWorker.SetltemText(i, 3,"會(huì)計(jì)");break;case 3:mistWorker.SetltemText(i, 3,"經(jīng)理");break;default:mistWorker.SetltemText(i, 3,"未知類型");break; void CWorkerMgrDlg:O nShowWi ndow(BOOL bShow, UlNT n Status)CDialog:O nShowWi ndow(bShow, nStatus

27、);/ TODO: Add your message han dler code hereRefreshList();void CWorkerMgrDlg:O nDblclkListWorker(NMHDR* pNMHDR, LRESULT* pResult)OnM odify();*pResult = 0;void CWorkerMgrDlg:O nSearch()mistWorker.DeleteAllltems();UpdateData();int n Type;CStri ng strNumber, strName, strlD, strPassword;nType,if(!ADOSQ

28、LServer.GetWorker(m_ nNu mber,strName, strID,strPassword) MB_INFO ("沒有找到此編號(hào)的工作人員!”);RefreshList();return ;strNumber.Format("%d", m_n Number);mistWorker.l nsertltem(O, strNumber);mistWorker.SetltemText(0, 1, strName);mistWorker.SetltemText(0, 2, strID);switch (n Type) case 0:mistWorker

29、.SetltemText(0, 3,"銷售員");break;case 1:mistWorker.SetltemText(0, 3,"進(jìn)貨員");break;case 2:mistWorker.SetltemText(0, 3,"會(huì)計(jì)");break;case 3:mistWorker.SetltemText(0, 3,"經(jīng)理");break;default:mistWorker.SetltemText(0, 3,"未知類型");break;void CWorkerMgrDlg:O nSearc

30、hAII()RefreshList();4、油庫信息管理界面與實(shí)現(xiàn)代碼:圖5.4油庫信息管理界面實(shí)現(xiàn)代碼如下:BOOL CDepotMgrDlg:OnlnitDialog()CDialog:O nlni tDialog();const char *list_colu mn=II厶白戶、II編號(hào),"名稱","位置","容量",1111;int i=0;while (*list_columni != 0x00) mistDepot.l nsertColu mn (i, list_colu mn i+, LVCFMT_LEFT, 100);

31、mistDepot.SetExte ndedStyle(LVS_EX_FULLROWSELECT);return TRUE; / return TRUE uni ess you set the focus to a con trol/ EXCEPTION: OCX Property Pages should return FALSEvoid CDepotMgrDlg:O nAdd() int nNu mber = -1;if (!ADOSQLServer.AutoAssig nNu mber("Depot", nNu mber) MB_ERROR(”無法添加油庫信息,可能是

32、數(shù)據(jù)庫已滿!”);return ;CDepotl nfoDIg depot In foDIg;depotl nfoDlg.m_ nNu mber = nNu mber;if (depotI nfoDlg.DoModal() = IDOK) if (!ADOSQLServer.AddNewDepot(depotI nfoDIg.m _nNu mber,depotI nfoDlg.m_strName,depotI nfoDlg.m_strLocati on,depot In foDlg.m_fCapacity )MB_ERROR("添加油庫信息失??!”);RefreshList();vo

33、id CDepotMgrDlg:O nM odify() int nItem = mistDepot.GetSelectio nM ark();if (nI tem = -1)return ;CDepotI nfoDIg depot In foDlg;CStri ng strNumber = mistDepot.GetltemText( nltem, 0);GET_INT(depotI nfoDlg.m_nNumber, strNumber);ADOSQLServer.GetDepot(depot In foDlg.m_ nNu mber,depotI nfoDlg.m_strName,dep

34、otI nfoDlg.m_strLocati on,depotI nfoDlg.m_fCapacity );if (depotI nfoDlg.DoModal() = IDOK) if (!ADOSQLServer.ModifyDepot(depotI nfoDIg.m _nNu mber,depotI nfoDlg.m_strName,depotI nfoDlg.m_strLocati on,depot In foDlg.m_fCapacity )MB_ERROR(”修改油庫信息失?。 ?;RefreshList();void CDepotMgrDlg:O nRemove() int nIt

35、em = mistDepot.GetSelectio nM ark();if (nI tem = -1)return ;int nNu mber;CStri ng strNumber = mistDepot.GetltemText( nltem, 0);GET_INT( nNu mber, strNumber);if (MB_QUERY(” 確定要?jiǎng)h除此項(xiàng)么?") = IDYES) if (!ADOSQLServer.RemoveDepot(nNu mber)MB_ERROR(”刪除油庫信息失??!”);RefreshList();void CDepotMgrDlg:RefreshLi

36、st() mistDepot.DeleteAllltems();CStri ngArray strNumber, strName, strLocatio n, strCapacity;ADOSQLServer.GetDepots(strNumber, strName, strLocatio n, strCapacity); for (int i=O;i<strNumber.GetSize();i +) mistDepot.l nsertltem(i, strNumber.GetAt(i);mistDepot.SetltemText(i, 1, strName.GetAt(i);mistD

37、epot.SetltemText(i, 2, strLocatio n.GetAt(i);mistDepot.SetltemText(i, 3, strC apacity.GetAt(i);void CDepotMgrDlg:O nShowWi ndow(BOOL bShow, UINT n Status)CDialog:O nShowWi ndow(bShow, nStatus);RefreshList();void CDepotMgrDlg:O nDblclkListDepot(NMHDR* pNMHDR, LRESULT* pResult)OnM odify();*pResult = 0

38、;5、會(huì)員信息管理界面:其實(shí)現(xiàn)類似工作人員信息管理模塊,界面如圖22,同時(shí)還要?jiǎng)?chuàng)建能查詢會(huì)員等級(jí)的會(huì)員等級(jí)模塊,以及添加會(huì)員信息的模塊圖5.5會(huì)員信息管理界面5.3系統(tǒng)主要功能實(shí)現(xiàn)1.前臺(tái)前臺(tái)僅包括工作人員查詢等必須且僅需的功能,盡可能地做到簡(jiǎn)化操作程 序,利于管理員快捷、準(zhǔn)確地進(jìn)行操作。2. 后臺(tái)充分利用數(shù)據(jù)庫的大容量、高效率等特點(diǎn),為用戶提供強(qiáng)大的功能支持,對(duì) 油品入庫業(yè)務(wù)、客戶管理業(yè)務(wù)進(jìn)行管理以及其他相關(guān)的管理6總結(jié)與展望6.1收獲與體會(huì)此加油站管理系統(tǒng)既能對(duì)工作人員進(jìn)行管理,對(duì)不同的工作人員根據(jù)職位的 不同執(zhí)行不同的職能,還能管理油品的購進(jìn)與銷售以及對(duì)賬目進(jìn)行管理,同時(shí)該系統(tǒng)還能對(duì)某段

39、時(shí)間內(nèi)的進(jìn)貨和銷售油品的情況做記錄,方便管理員的查找。此加油站管理系統(tǒng)是一個(gè)組織比較好,功能較完善的系統(tǒng),它使復(fù)雜工作簡(jiǎn)單化, 其最大特點(diǎn)就是能根據(jù)顧客的消費(fèi)情況設(shè)置不同的等級(jí),使顧客能享受不同的優(yōu) 惠。通過這次課程設(shè)計(jì),我更加熟練的掌握了使用 ORACLE和VC+6.0進(jìn)行數(shù) 據(jù)庫軟件開發(fā)的方法,加深了對(duì)數(shù)據(jù)庫課程知識(shí)的理解,同時(shí)也鞏固了所學(xué)的 VC+知識(shí),最重要的是還學(xué)會(huì)了如何在 VC中編寫好程序后與數(shù)據(jù)庫進(jìn)行連接, 知道了 ADO的一些相關(guān)知識(shí),指導(dǎo)如何通過 ADO對(duì)數(shù)據(jù)庫進(jìn)行連接。由于時(shí) 間倉促,軟件還有很多不足之處,如:查詢部分不夠完善,不能及時(shí)查詢某種油 品某段時(shí)間內(nèi)總獲利等,同時(shí)

40、數(shù)據(jù)庫還沒有油品購進(jìn)廠商。由于知識(shí)不夠全面, 對(duì)有些功能未能實(shí)現(xiàn)。在平時(shí)學(xué)習(xí)中很少有這樣的實(shí)踐, 課程設(shè)計(jì)中發(fā)現(xiàn)自己懂得還甚少, 課堂上 所學(xué)知識(shí)不能很好的應(yīng)用于實(shí)際中,在今后的學(xué)習(xí)中我要盡量加強(qiáng)理論與實(shí)踐的 結(jié)合,通過不斷的摸索來彌補(bǔ)自己在軟件制作方面的差距。在這次課程設(shè)計(jì)中,讓我發(fā)現(xiàn)在系統(tǒng)設(shè)計(jì)時(shí),大方向的設(shè)計(jì)才是主要的,只 有在系統(tǒng)開發(fā)之前的對(duì)系統(tǒng)所表述的問題有充分的認(rèn)識(shí)的情況下開始系統(tǒng)的設(shè) 計(jì)和實(shí)現(xiàn)才能做出預(yù)期的系統(tǒng)。而系統(tǒng)實(shí)現(xiàn)階段遇到的技術(shù)問題是可以通過各種 渠道來解決的,它比實(shí)現(xiàn)階段遇到的系統(tǒng)結(jié)構(gòu)問題要容易解決的多。在實(shí)現(xiàn)階段,對(duì)數(shù)據(jù)的認(rèn)識(shí)又是非常重要的,因?yàn)樗鼪Q定了系統(tǒng)的耦合和內(nèi)聚

41、的成度, 這點(diǎn)在 應(yīng)用程序的設(shè)計(jì)階段能夠充分的表現(xiàn)出來。應(yīng)用程序作為最后實(shí)現(xiàn)的部分,它的是面向最終用戶的,所以需要一定的圖形界面和適用性, 但我在這一點(diǎn)上做的還 遠(yuǎn)遠(yuǎn)不夠,在今后的系統(tǒng)設(shè)計(jì)中要努力改善。 最后,我們還要感謝學(xué)校的支持和 老師的有益幫助,尤其是指導(dǎo)我的滿君豐滿老師,對(duì)我的幫助是非常大的,這 樣才能讓我更加順利和完善地完成了圖書信息管理系統(tǒng)的設(shè)計(jì)和開發(fā)工作。6.2未來的展望在這次的系統(tǒng)設(shè)計(jì)和開發(fā),讓我認(rèn)識(shí)了三層體系結(jié)構(gòu)設(shè)計(jì)的系統(tǒng)開發(fā)經(jīng)歷和經(jīng)驗(yàn),這對(duì)我以后進(jìn)行的系統(tǒng)開發(fā)有很大的幫助。 中間件作為時(shí)下最流行的應(yīng)用 開發(fā)方向之一,它所表現(xiàn)出來的功能和技術(shù), 對(duì)我們產(chǎn)生了很大的吸引力,這也

42、 是我們之所以選擇層次的方式來實(shí)現(xiàn)此次的系統(tǒng)設(shè)計(jì)的原因,同時(shí)也為我們?cè)诮窈髮W(xué)習(xí)方向提供了很高的參考價(jià)值。嚴(yán)格按照軟件工程和軟件開發(fā)標(biāo)準(zhǔn)來開發(fā)系統(tǒng)是很有必要的,數(shù)據(jù)庫的開發(fā)要避免產(chǎn)生讀寫數(shù)據(jù)時(shí)的沖突,應(yīng)用程序開發(fā)遇到的問題要多參考網(wǎng)絡(luò)上的資 料,這是很有必要,在今后的系統(tǒng)開發(fā)中我們會(huì)把它們作為實(shí)施的重要參考。源代碼附錄7.1系統(tǒng)與數(shù)據(jù)庫交互代碼#i nclude "StdAfx.h"#i nclude "ADODataBase_SQLServer.h"HRESULT CADODataBase_SQLServer:l nit()if(FAILED(CADOD

43、ataBase:I nit()return E_UNEXPECTED;SetProvider("sqloledb");return S_OK;_RecordsetPtr CADODataBase_SQLServer:ExecuteQuery(CStri ng strQuery)memset( mpQuery, 0, 1024);strcpy(mpQuery, strQuery.GetBuffer(1024);strQuery.ReleaseBuffer();return CADODataBase:ExecuteQuery( mpQuery);int CADODataBase

44、_SQLServer:GetWorkers(CStri ngArray &strNumber,CStri ngArray& strName, CStri ngArray &strID, CStri ngArray & strType, CStri ngArray &strPassword)CStri ng strQuery;strQuery.Format("select * from Worker");if (!Query(strQuery) return 0;int nCount = 0;while (!lsE ndOfFile()

45、 GetO neRow(5);strNumber.Add(STRING(m_varO);strName.Add(STRING(m_var1);strlD.Add(STRING(m_var2);strType.Add(STRING(m_var3);strPassword.Add(STRING(m_var4);m_pRS->MoveNext();nCount +;retur n nCount;BOOL CADODataBase_SQLServer:AddNewDepot(i nt nNu mber, CStri ng strName, CStri ng strLocati on, float

46、 &fCapacity)CStri ng strQuery;strQuery.Format("i nsert into Depot values(%d,'%s','%s',%.2f)",nNu mber,strName,strLocati on,fCapacity);try Query(strQuery);catch(.) return FALSE;return TRUE;BOOL CADODataBase_SQLServer:ModifyDepot(intnNumber, CString strName, CStringstrLoc

47、ati on, float &fCapacity)CStri ng strQuery;strQuery.Format("update Depot set n ame = '%s', locati on = '%s', capacity = %.2f wherenu mber = %d",strName,strLocati on,fCapacity,nNu mber);try Query(strQuery);catch(.) return FALSE;return TRUE;BOOLCADODataBase_SQLServer:GetC

48、urre ntCo nte nt(i ntn DepotNumber,intn GasTypeNumber, float &fCurCo ntent)CStri ng strQuery;if (n GasTypeNumber <= 0)strQuery.Format("select count(amount) from Storage where depot = %d", n DepotNumber);elsestrQuery.Format("select count(amount) from Storage where depot = %d and

49、 gas_type = %d", n DepotNumber, n GasTypeNumber);if (!Query(strQuery) return FALSE;if (IsE ndOfFile()return FALSE;GetO neRow(1);if (lo ng)(m_var0) = 0) fCurCo ntent = 0;return TRUE;if (n GasTypeNumber <= 0)strQuery.Format("select sum(amount) from Storage where depot = %d", n DepotN

50、umber);elsestrQuery.Format("select sum(amount) from Storage where depot = %d and gas_type = %d", n DepotNumber, n GasTypeNumber);if (!Query(strQuery) return FALSE;if (IsE ndOfFile()return FALSE;GetO neRow(1);fCurCo ntent = (float)m_var0;return TRUE;BOOL CADODataBase_SQLServer:GetDepot(int

51、nNumber, CString &strName, CString &strLocatio n, float &fCapacity)CStri ng strQuery;strQuery.Format("select * from Depot where nu mber = %d", nNu mber);if (!Query(strQuery) return FALSE;if (IsE ndOfFile()return FALSE;GetO neRow(4);strName = STRING(m_var1);strLocatio n = STRING

52、(m_var2);fCap acity = (float)(m_var3);return TRUE;BOOL CADODataBase_SQLServer:GetDepotByName(CStringstrName, int &nNumber,CStri ng &strLocatio n, float &fCapacity)CStri ng strQuery;strQuery.Format("select * from Depot where n ame = '%s'", strName);if (!Query(strQuery) r

53、eturn FALSE;if (IsE ndOfFile()return FALSE;GetO neRow(4);nNu mber = (Ion g)(m_var0);strLocatio n = STRING(m_var2);fCap acity = (float)(m_var3);return TRUE;BOOL CADODataBase_SQLServer:RemoveDepot(i nt nNumber)CStri ng strQuery;strQuery.Format("delete from Depot where nu mber = %d", nNu mber

54、);Query(strQuery);return TRUE;int CADODataBase_SQLServer:GetDepots(CStri ngArray &strNumber,CStri ngArray& strName, CStri ngArray &strLocatio n, CStri ngArray &strCapacity)CStri ng strQuery;strQuery.Format("select * from Depot");if (!Query(strQuery) return 0;int nCount = 0;

55、while (!lsE ndOfFile() GetO neRow(4);strNumber.Add(STRING(m_varO); strName.Add(STRING(m_var1);strLocati on .Add(STRING(m_var2);strCapacity.Add(STRING(m_var3);m_pRS->MoveNext();nCount +;retur n nCount;BOOL CADODataBase_SQLServer:GetMember(int nNumber, CString &strName, CString &strlD, CStri ng & strCarNumber, float &fExp)CStri ng strQuery;strQuery.Format("select * from Member where nu mber = %d", nNu mber);if (!Query(strQuery) return FALSE;if (IsE ndOfFile()return FALSE;GetO neRow(5)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論