




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第4章企業(yè)設(shè)備管理系統(tǒng)公司經(jīng)常需要采購(gòu)一些設(shè)備,用以滿(mǎn)足公司正常運(yùn)營(yíng)的需要,采購(gòu)回來(lái)的設(shè)備不能堆放在庫(kù)房里就不管了,誰(shuí)想用的時(shí)候就去拿,誰(shuí)想換的時(shí)候就去換。這樣,公司的設(shè)備恐怕會(huì)越來(lái)越少,公司正常的運(yùn)營(yíng)就會(huì)受到影響。因此,需要對(duì)公司的設(shè)備進(jìn)行庫(kù)存管理,保證設(shè)備借出和歸還有序,還要能查到設(shè)備的借出情況。企業(yè)設(shè)備管理系統(tǒng)正好能滿(mǎn)足這個(gè)需求,它提供了對(duì)設(shè)備庫(kù)存、設(shè)備借出、設(shè)備歸還和設(shè)備統(tǒng)計(jì)信息的管理。4.1 系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì)是系統(tǒng)開(kāi)發(fā)最為關(guān)鍵的一環(huán),良好的系統(tǒng)設(shè)計(jì)需要把握系統(tǒng)的需求,并合理地劃分功能模塊。企業(yè)設(shè)備管理系統(tǒng)的系統(tǒng)設(shè)計(jì)還需要把握一個(gè)關(guān)鍵點(diǎn),就是明確設(shè)備的惟一性,盡管設(shè)備可能一模一樣,但是
2、也應(yīng)該區(qū)別開(kāi)來(lái),因?yàn)槲覀兊慕璩觥w還以及借出歷史的統(tǒng)計(jì)都是要具體到某一個(gè)設(shè)備的,需要對(duì)每一個(gè)設(shè)備賦予不同的設(shè)備編號(hào),通常會(huì)制作標(biāo)簽貼在設(shè)備上,這恐怕是庫(kù)房管理員常做的工作,設(shè)備編號(hào)的方式可以根據(jù)公司具體決定。4.1.1 功能描述企業(yè)設(shè)備管理系統(tǒng)包括設(shè)備庫(kù)存管理、設(shè)備借出歸還管理和設(shè)備統(tǒng)計(jì)信息管理,詳細(xì)的功能描述如下。1. 設(shè)備庫(kù)存管理設(shè)備庫(kù)存管理包括新設(shè)備入庫(kù)、修改設(shè)備信息和陳舊設(shè)備的庫(kù)存清理。新設(shè)備入庫(kù)是對(duì)新采購(gòu)的設(shè)備進(jìn)行入庫(kù)的操作。修改設(shè)備信息是對(duì)入庫(kù)設(shè)備的名稱(chēng)、購(gòu)買(mǎi)人、入庫(kù)時(shí)間、設(shè)備說(shuō)明等信息的修改。庫(kù)存清理,是清理庫(kù)存中不能再用的設(shè)備。2. 設(shè)備借出歸還管理設(shè)備借出歸還管理包括設(shè)備借出
3、管理和設(shè)備歸還管理。對(duì)于設(shè)備借出管理,如果設(shè)備已經(jīng)借出,要提示用戶(hù)誰(shuí)借走了設(shè)備。當(dāng)借出成功的時(shí)候,需要在列表中顯示借出人、借出時(shí)間和借出設(shè)備信息,如果歸還成功,還需要顯示設(shè)備歸還時(shí)間。3. 設(shè)備統(tǒng)計(jì)信息管理設(shè)備統(tǒng)計(jì)信息管理包括對(duì)設(shè)備借出歷史信息、設(shè)備使用頻率信息和未歸還設(shè)備列表信息的管理。設(shè)備借出歷史統(tǒng)計(jì)顯示了一個(gè)設(shè)備所有的借出歷史,便于跟蹤設(shè)備的使用情況如果設(shè)備出現(xiàn)問(wèn)題,還可以順藤摸瓜,查到誰(shuí)有可能把設(shè)備弄壞了,從而找到設(shè)備損壞的原因,便于及時(shí)修理。設(shè)備使用頻率統(tǒng)計(jì)提供了設(shè)備借出次數(shù)的統(tǒng)計(jì)信息,如果一個(gè)設(shè)備借出的非常頻繁,那么企業(yè)可以考慮多購(gòu)買(mǎi)這種設(shè)備,從而提高公司的效率。未歸還設(shè)備列表提供
4、了尚未歸還的設(shè)備信息,企業(yè)可以知道借出設(shè)備的使用情況。4.1.2 功能模塊設(shè)計(jì)從上面的功能描述中,可以把企業(yè)設(shè)備管理系統(tǒng)分為3個(gè)模塊:設(shè)備庫(kù)存管理、設(shè)備借出歸還管理和設(shè)備統(tǒng)計(jì)信息管理。在每一個(gè)模塊下又提供了更為具體的功能。詳細(xì)的企業(yè)設(shè)備管理系統(tǒng)的功能模塊圖,如圖4-1所示。圖4-1系統(tǒng)功能模塊圖4.2 數(shù)據(jù)庫(kù)設(shè)計(jì)與實(shí)現(xiàn)數(shù)據(jù)庫(kù)設(shè)計(jì)的一個(gè)巧妙之處就是表的數(shù)量不能太多,邏輯層次也不能太多;否則統(tǒng)的升級(jí)和維護(hù)將會(huì)非常困難。4.2.1 數(shù)據(jù)庫(kù)需求設(shè)計(jì)通過(guò)對(duì)系統(tǒng)功能的分析,企業(yè)設(shè)備管理系統(tǒng)需要包含以下數(shù)據(jù)庫(kù)信息。1 .設(shè)備信息包括設(shè)備編號(hào)、設(shè)備名稱(chēng)、設(shè)備描述、設(shè)備入庫(kù)時(shí)間、設(shè)備購(gòu)買(mǎi)人、設(shè)備借出狀設(shè)備借出I
5、D。2 .設(shè)備借出信息包括設(shè)備借出ID、設(shè)備編號(hào)、借出人、借出時(shí)間和歸還時(shí)間。3 .2.2數(shù)據(jù)庫(kù)表的設(shè)計(jì)通過(guò)數(shù)據(jù)庫(kù)的需求,可以創(chuàng)建以下數(shù)據(jù)表。1 .設(shè)備信息表(device_info_tab)設(shè)備信息表包含了設(shè)備的一些基本信息,還包括設(shè)備的借出信息,設(shè)備的庫(kù)存管理和表4-1設(shè)備信息表字段名稱(chēng)數(shù)據(jù)類(lèi)型可否為空device_codeVARCHAR2(24)device_nameVARCHAR2(24)descriptionVARCHAR2(1000)oper_dateDATENOTNULLbuyerVARCHAR2(24)NULLLend_statusINTEGERNULLlend_idINTEG
6、ERNULL無(wú)設(shè)備的借出歸還管理都需要操作這個(gè)數(shù)據(jù)表,表的結(jié)構(gòu)見(jiàn)表4-1。約束條件說(shuō)明NOTNULL主鍵設(shè)備編號(hào),要惟一NOTNULL無(wú)設(shè)備名稱(chēng)NULL無(wú)設(shè)備描述無(wú)設(shè)備入庫(kù)時(shí)間無(wú)設(shè)備購(gòu)買(mǎi)人無(wú)設(shè)備借出狀態(tài)設(shè)備借出ID,借出ID是惟一的但可以為空2 .設(shè)備借出信息表(device_lend_info_tab)設(shè)備借出信息表包含了設(shè)備的借出和歸還信息,設(shè)備借出、設(shè)備歸還,以及統(tǒng)計(jì)信息的管理都需要用到這個(gè)數(shù)據(jù)表,表的結(jié)構(gòu)見(jiàn)表4-2。表4-2設(shè)備借出信息表字段名稱(chēng)數(shù)據(jù)類(lèi)型可否為空約束條件說(shuō)明lend_idINTEGERNOTNULL主鍵借出ID,ID值從系列中獲取)device_codeVARCHAR2
7、(24)NOTNULL外鍵(device_info_tab)設(shè)備編號(hào)borrowerVARCHAR2(24)NOTNULL無(wú)借出人borrow_dateDATENULL無(wú)設(shè)備借出時(shí)間return_dateDATENULL無(wú)設(shè)備歸還時(shí)間4.2.3數(shù)據(jù)庫(kù)表的創(chuàng)建利用第3章中講述的方法創(chuàng)建表空間dbdevice和數(shù)據(jù)庫(kù)用戶(hù)dbdevice,其中數(shù)據(jù)庫(kù)用戶(hù)的密碼為dbdevice,選擇的默認(rèn)表空間為dbdevice。創(chuàng)建企業(yè)設(shè)備管理系統(tǒng)的所有數(shù)據(jù)表的SQL語(yǔ)句如下:-創(chuàng)建設(shè)備信息表CREATETABLEdevice_info_tab(device_codeVARCHAR2(24)NOTNULL,dev
8、ice_nameVARCHAR(24)NOTNULL,descriptionVARCHAR(1000)NULL,oper_dateDATENOTNULL,buyerVARCHAR2(24)NULL,lend_statusINTEGERNULLCHECK(lend_statusIN(0,1),lend_idINTEGERNULL);-添加設(shè)備編號(hào)主鍵ALTERTABLEdevice_info_tabADD(PRIMARYKEY(device_code);-創(chuàng)建設(shè)備借出信息表CREATETABLEdevice_lend_info_tab(lend_idINTEGERNOTNULL,device_c
9、odeVARCHAR2(24)NOTNULL,borrowerVARCHAR(24)NOTNULL,borrow_dateDATENULL,return_dateDATENULL);- -添加借出ID主鍵ALTERTABLEdevice_lend_info_tabADD(PRIMARYKEY(lend_id);- -添加設(shè)備編號(hào)外鍵ALTERTABLEdevice_lend_info_tabADD(FOREIGNKEY(device_code)REFERENCESdevice_info_tab);- -創(chuàng)建可以遞增的系列號(hào)供lend_id使用CREATESEQUENCEseq_lend_idI
10、NCREMENTBY1STARTWITH1NOMAXVALUENOMINVALUENOCYCLE;利用OracleSQLPlusWorkSheet工具執(zhí)行上述的SQL語(yǔ)句從而創(chuàng)建數(shù)據(jù)庫(kù)表。需要說(shuō)明的是,在打開(kāi)OracleSQLPlusWorksheet的"OracleEnterpriseManager登錄“窗口的時(shí)候,需要在“用戶(hù)名”文本框中輸入企業(yè)設(shè)備管理系統(tǒng)的用戶(hù)名dbdevice,在“口令”文本框中輸入用戶(hù)密碼dbdevice,在“服務(wù)”文本框中輸入數(shù)據(jù)庫(kù)的本地服務(wù)名ORADB,選擇連接方式Normal,登錄成功后,再運(yùn)行上述的SQL語(yǔ)句。4.3系統(tǒng)的實(shí)現(xiàn)完成了系統(tǒng)功能模塊的設(shè)
11、計(jì)和數(shù)據(jù)庫(kù)表的創(chuàng)建后,就可以創(chuàng)建一個(gè)企業(yè)設(shè)備管理系統(tǒng)。4.3.1 創(chuàng)建應(yīng)用程序運(yùn)行VisualC+,選擇File|New命令,彈出New對(duì)話框。從Projects列表中選擇MFCAppWizard(exe)向?qū)?,在Location文本框中選擇項(xiàng)目工程的目錄"",在Projectname文本框中輸入工程文件的名稱(chēng)DeviceDBS,單擊OK按鈕,進(jìn)入MFCAppWizard-Step1頁(yè)面,從應(yīng)用程序的類(lèi)型中選擇Dialogbased選項(xiàng),從語(yǔ)言列表中選“中文(中國(guó))(APPWZCHS.DLL)",單擊Finish按鈕,DeviceDBS對(duì)話框的應(yīng)用程序創(chuàng)建畢。4.
12、3.2 創(chuàng)建主對(duì)話框的界面主對(duì)話框的布局如圖4-2所示。其中包括設(shè)備庫(kù)存管理、設(shè)備借出歸還管理和設(shè)備統(tǒng)計(jì)信息管理3個(gè)部分。圖$2”企爾設(shè)備管理務(wù)統(tǒng)”對(duì)話序3. 設(shè)備庫(kù)存管理控件類(lèi)型、ID及說(shuō)明見(jiàn)表4-3。表4-3設(shè)備庫(kù)存管理控件列表控件類(lèi)型ID屬性變量或函數(shù)GroupBoxIDC_STATIC設(shè)備庫(kù)存管理無(wú)LabelIDC_STATIC設(shè)備編號(hào)無(wú)無(wú)CString類(lèi)型變量m_strDeviceCode無(wú)CString類(lèi)型變量m_strDeviceNameCString類(lèi)型變量m_strBorrowerEditBoxIDC_EDIT_DEVICECODELabelIDC_STATIC設(shè)備名稱(chēng)無(wú)Ed
13、itBoxIDC_EDIT_DEVICENAMELabelIDC_STATIC購(gòu)買(mǎi)人無(wú)EditBoxIDC_EDIT_BUYER無(wú)LabelIDC_STATIC入庫(kù)時(shí)間無(wú)DateTimePickerIDC_DT_DATEShortDateCOleDateTime類(lèi)型變量m_oleOperDateDateTimePickerIDC_DT_TIMETimeCOleDateTime類(lèi)型變量m_oleOperTimeLabelIDC_STATIC設(shè)備說(shuō)明無(wú)EditBoxIDC_EDIT_DESCRIPTION無(wú)CString類(lèi)型變量m_strDescriptionButtonIDC_BTN_DEVIC
14、E_ADD新設(shè)備入庫(kù)函數(shù)OnBtnDeviceAdd()處理新設(shè)備的入庫(kù)管理ButtonIDC_BTN_DEVICE_MOD修改設(shè)備信息函數(shù)OnBtnDeviceMod()修改設(shè)備信息ButtonIDC_BTN_DEVICE_DEL庫(kù)存清理函數(shù)OnBtnDeviceDel()處理庫(kù)存設(shè)備的清理管理GroupBoxIDC_STATIC設(shè)備信息無(wú)ListControlIDC_LIST_DEVICE無(wú)列表框控件類(lèi)型變量m_listDevice4. 設(shè)備借出歸還管理控件類(lèi)型、ID及說(shuō)明見(jiàn)表4-4。表4-4設(shè)備借出歸還管理控件列表控件類(lèi)型ID屬性變量或函數(shù)GroupBoxIDC_STATIC設(shè)備借出歸還
15、管理無(wú)LabelIDC_STATIC請(qǐng)輸入借書(shū)人無(wú)EditBoxIDC_EDIT_BORROWER無(wú)CString類(lèi)型變量m_strBorrowerLabelIDC_STATIC請(qǐng)選擇設(shè)備名稱(chēng)無(wú)ComboBoxIDC_COMBO_NAME無(wú)列表框控件變量m_comboName,CString類(lèi)型變量m_strSelectedNameLabelIDC_STATIC請(qǐng)選擇設(shè)備編號(hào)無(wú)ComboBoxIDC_COMBO_CODE無(wú)列表框控件變量m_comboCode,CString類(lèi)型變量m_strSelectedCodeButtonIDC_BTN_LEND借出函數(shù)OnBtnLend()處理設(shè)備借出管
16、理ButtonIDC_BTN_RETURN歸還函數(shù)OnBtnReturn()處理設(shè)備歸還管理GroupBoxIDC_STATIC借出信息無(wú)ListControlIDC_LIST_LEND無(wú)列表框控件類(lèi)型變量m_listLend5. 設(shè)備統(tǒng)計(jì)信息管理控件類(lèi)型、ID及說(shuō)明見(jiàn)表4-5。表4-5設(shè)備統(tǒng)計(jì)信息管理控件列表控件類(lèi)型ID屬性變量或函數(shù)GroupBoxIDC_STATIC設(shè)備統(tǒng)計(jì)信息管理無(wú)ButtonIDC_BTN_LEND_LIST設(shè)備借出歷史統(tǒng)計(jì)函數(shù)OnBtnLendList()處理設(shè)備借出歷史統(tǒng)計(jì)ButtonIDC_BTN_FREQUENCY_LIST設(shè)備使用頻率統(tǒng)計(jì)函數(shù)OnBtnFre
17、quencyList()處理設(shè)備使用頻率統(tǒng)計(jì)ButtonIDC_BTN_LENT_DEVICE未歸還設(shè)備列表函數(shù)OnBtnLentDevice()處理未歸還設(shè)備統(tǒng)計(jì)ButtonIDC_SYS_EXIT退出函數(shù)OnSysExit()處理系統(tǒng)退出代碼主對(duì)話框類(lèi)名稱(chēng)為CDeviceDBSDlg,資源ID為IDD_DEVICEDBS_DIALOG,對(duì)話框名稱(chēng)為“企業(yè)設(shè)備管理系統(tǒng)”。主界面用到了兩個(gè)列表框控件分別顯示設(shè)備信息和借出信息。需要為這兩個(gè)列表框控件添加顯示的列,從而顯示相應(yīng)的數(shù)據(jù)信息。為了代碼設(shè)計(jì)的清晰,在CDeviceDBSDlg類(lèi)中定義了一個(gè)InitControl私有函數(shù)負(fù)責(zé)添加控件的顯示
18、列,InitControl函數(shù)的代碼如下:voidCDeviceDBSDlg:InitControl()/設(shè)置列表框控件擴(kuò)展風(fēng)格DWORDdwExStyle=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVSEXONECLICKACTIVATELVS_EX_HEADERDRAGDROPLVS_EX_UNDERLINEHOT;m_listDevice.SetExtendedStyle(dwExStyle);m_listLend.SetExtendedStyle(dwExStyle);/初始化設(shè)備信息列表框控件m_listDevice.InsertColumn(0,
19、"設(shè)備編號(hào)",LVCFMT_CENTER,80);m_listDevice.InsertColumn(1,"設(shè)備名稱(chēng)",LVCFMT_CENTER,80);m_listDevice.InsertColumn(2,"設(shè)備入庫(kù)時(shí)間",LVCFMT_CENTER,140);m_listDevice.InsertColumn(3,"設(shè)備購(gòu)買(mǎi)人",LVCFMT_CENTER,80);/初始化議題列表框控件m_listLend.InsertColumn(0,"m_listLend.InsertColumn(1,&qu
20、ot;m_listLend.InsertColumn(2,"m_listLend.InsertColumn(3,"m_listLend.InsertColumn(4,"m_listLend.InsertColumn(5,"m_listDevice.InsertColumn(4,"設(shè)備描述",LVCFMT_CENTER,200);借出ID",LVCFMT_CENTER,80);設(shè)備編號(hào)",LVCFMT_CENTER,80);設(shè)備名稱(chēng)",LVCFMT_CENTER,80);借出人",LVCFMT_C
21、ENTER,80);設(shè)備借出時(shí)間",LVCFMT_CENTER,140);設(shè)備歸還時(shí)間",LVCFMT_CENTER,140);在OnInitDialog函數(shù)末尾處添加InitControl函數(shù)的調(diào)用,這樣系統(tǒng)在啟動(dòng)的時(shí)候,就可以看到已添加顯示列的列表框控件。4.3.3顯示數(shù)據(jù)到界面上當(dāng)系統(tǒng)啟動(dòng)之后,可以將數(shù)據(jù)庫(kù)中的數(shù)據(jù)顯示到界面上,需要處理數(shù)據(jù)庫(kù)的連接和顯示數(shù)據(jù)到界面上的兩個(gè)過(guò)程。1. 數(shù)據(jù)庫(kù)的連接數(shù)據(jù)庫(kù)的連接需要3個(gè)參數(shù):ODBC數(shù)據(jù)源名稱(chēng)、數(shù)據(jù)庫(kù)用戶(hù)名稱(chēng)和數(shù)據(jù)庫(kù)用戶(hù)密碼。其中數(shù)據(jù)源名稱(chēng)為ORADB,數(shù)據(jù)庫(kù)用戶(hù)的名稱(chēng)和密碼均為dbdevice??紤]到讀者配置的數(shù)據(jù)源和用
22、戶(hù)名可能不一樣,可以從配置文件中獲取這些參數(shù)信息,配置文件的格式如下:General數(shù)據(jù)庫(kù)數(shù)據(jù)源=oradb數(shù)據(jù)庫(kù)用戶(hù)=dbdevice數(shù)據(jù)庫(kù)密碼=dbdevice把這段文字保存為DeviceDBS.ini文件,可以根據(jù)讀者自己配置的數(shù)據(jù)源、數(shù)據(jù)用戶(hù)和密碼修改文件中的相應(yīng)設(shè)置,并把DeviceDBS.ini文件放在DeviceDBS.exe運(yùn)行程序的同一目錄下。在CDeviceDBSDlg類(lèi)中定義了一個(gè)私有類(lèi)型的ConnectDB函數(shù),處理數(shù)據(jù)庫(kù)的連接,代碼如下:voidCDeviceDBSDlg:ConnectDB()charszPath255;/獲取應(yīng)用程序完全路徑:GetModuleFi
23、leName(NULL,szPath,255);CStringstrFileName=szPath;/獲取所在的目錄名稱(chēng)strFileName.Delete(strFileName.ReverseFind()+1,strFileName.GetLength()-strFileName.ReverseFind()-1);/構(gòu)造配置文件的完全路徑strFileName+="DeviceDBS.ini"TCHARsz101;memset(sz,0,sizeof(TCHAR)*101);/獲取配置文件中數(shù)據(jù)庫(kù)數(shù)據(jù)源的值,如果沒(méi)有,默認(rèn)值為oradbGetPrivateProfile
24、String(_T("General"),_T("數(shù)據(jù)庫(kù)數(shù)據(jù)源"),_T("oradb"),sz,100,strFileName);CStringstrSource(sz);GetPrivateProfileString(_T("General"),_T("數(shù)據(jù)庫(kù)用戶(hù)"),_T("dbdevice"),sz,100,strFileName);CStringstrUser(sz);GetPrivateProfileString(_T("General"),_
25、T("數(shù)據(jù)庫(kù)密碼"),_T("dbdevice"),sz,100,strFileName);CStringstrPwd(sz);/創(chuàng)建連接字符串.CStringstrConnect;strConnect.Format("DSN=%s;UID=%s;PWD=%s",strSource,strUser,strPwd);/打開(kāi)數(shù)據(jù)庫(kù)的連接,并且捕獲異常TRYm_db.OpenEx(strConnect,CDatabase:noOdbcDialog);CATCH(CDBException,ex)AfxMessageBox(ex->m_s
26、trError);AfxMessageBox(ex->m_strStateNativeOrigin);AND_CATCH(CMemoryException,pEx)pEx->ReportError();AfxMessageBox("memoryexception");AND_CATCH(CException,e)TCHARszError100;e->GetErrorMessage(szError,100);AfxMessageBox(szError);END_CATCHInitCtrlData();函數(shù)ConnectDB利用系統(tǒng)的GetPrivatePro
27、fileString函數(shù)從文件中獲取數(shù)據(jù)庫(kù)的配置參數(shù),GetPrivateProfileString函數(shù)的原型如下:DWORDGetPrivateProfileString(LPCTSTRlpAppName,LPCTSTRlpKeyName,LPCTSTRlpDefault,LPTSTRlpReturnedString,DWORDnSize,LPCTSTRlpFileName);其中第1個(gè)參數(shù)是Section的名稱(chēng),對(duì)應(yīng)DeviceDBS.ini文件中的General,即中括號(hào)所包含的內(nèi)容General;第2個(gè)參數(shù)是鍵的名稱(chēng),如DeviceDBS.ini文件中的“數(shù)據(jù)庫(kù)數(shù)據(jù)源”、“數(shù)據(jù)庫(kù)用戶(hù)”
28、和“數(shù)據(jù)庫(kù)密碼”;第3個(gè)參數(shù)是默認(rèn)值,如果沒(méi)用成功獲得鍵值,那么就取lpDefault代表的數(shù)據(jù);第4個(gè)參數(shù)是保存鍵值的緩沖區(qū);第5個(gè)參數(shù)是緩沖區(qū)的大?。坏?個(gè)參數(shù)是文件的完全路徑。由于第6個(gè)參數(shù)需要獲取文件DeviceDBS.ini的完全路徑,因而需要利用系統(tǒng)的GetModuleFileName函數(shù)先獲取應(yīng)用程序DeviceDBS.exe所在的路徑(因?yàn)镈eviceDBS.ini文件和應(yīng)用程序DeviceDBS.exe在同一目錄下),然后構(gòu)造配置文件DeviceDBS.ini的完全路徑。當(dāng)從文件中獲取到數(shù)據(jù)庫(kù)配置參數(shù)之后,就可以創(chuàng)建數(shù)據(jù)庫(kù)連接字符串,利用CDatabase的OpenEx方法打
29、開(kāi)數(shù)據(jù)庫(kù)的連接,并處理數(shù)據(jù)庫(kù)的異常。2. 顯示數(shù)據(jù)到界面上連接數(shù)據(jù)庫(kù)之后,需要把數(shù)據(jù)庫(kù)中的設(shè)備信息顯示到設(shè)備信息列表框控件中,并刷新借出歸還管理中的設(shè)備名稱(chēng)和設(shè)備編號(hào)兩個(gè)列表框中的顯示數(shù)據(jù)。因而在CDeviceDBSDlg類(lèi)中定義了一個(gè)InitCtrlData私有函數(shù),負(fù)責(zé)顯示這些數(shù)據(jù)。同時(shí)還定義一個(gè)RefreshComboNameData函數(shù),根據(jù)數(shù)據(jù)庫(kù)的最新數(shù)據(jù)刷新借出歸還管理中的兩個(gè)列表框的數(shù)據(jù)。在對(duì)設(shè)備信息添加、修改和刪除之后都需要調(diào)用RefreshComboNameData函數(shù)來(lái)更新列表框中的顯示數(shù)據(jù)。同時(shí)還需要定義兩個(gè)分別把數(shù)據(jù)插入到列表框控件中的函數(shù),分別為:InsertDevi
30、ceInfoItem和InsertLendInfoItem。在連接數(shù)據(jù)庫(kù)成功之后,不需要顯示借出信息,因?yàn)楸容^多,也不是很重要,只需在借出和歸還成功之后顯示借出信息。在DeviceDBSDlg.h文件中添加這4個(gè)私有函數(shù)的定義,代碼如下:/從數(shù)據(jù)庫(kù)獲取設(shè)備信息并更新到控件中voidInitCtrlData();/更新設(shè)備名稱(chēng)和設(shè)備編號(hào)列表框的信息voidRefreshComboNameData();/向設(shè)備信息控件中添加信息voidInsertDeviceInfoItem(CStringcode,CStringname,CStringdate,CStringbuyer,CStringdescr
31、iption);/向借出信息控件中添加借出信息voidInsertLendInfoItem(intid,CStringcode,CStringname,CStringborrower,CStringlendDate,CStringreturnDate);向設(shè)備信息列表框控件中添加設(shè)備信息的函數(shù)是InsertDeviceInfoItem,代碼如下:voidCDeviceDBSDlg:InsertDeviceInfoItem(CStringcode,CStringname,CStringdate,CStringbuyer,CStringdescription)/獲取當(dāng)前的記錄條數(shù).intnInde
32、x=m_listDevice.GetItemCount();LV_ITEMlvItem;lvItem.mask=LVIF_TEXT;lvItem.iItem=nIndex;/行數(shù)lvItem.iSubItem=0;lvItem.pszText=(char*)(LPCTSTR)code;/第一列/在最后一行插入記錄值.m_listDevice.InsertItem(&lvItem);/設(shè)置該行的其他列的值.m_listDevice.SetItemText(nIndex,1,name);m_listDevice.SetItemText(nIndex,2,date);m_listDevice
33、.SetItemText(nIndex,3,buyer);m_listDevice.SetItemText(nIndex,4,description);向借出信息列表框控件中添加借出信息的函數(shù)是InsertLendInfoItem,代碼如下:voidCDeviceDBSDlg:InsertLendInfoItem(intid,CStringcode,CStname,CStringborrower,CStringlendDate,CStringreturnDate)/獲取當(dāng)前的記錄條數(shù).intnIndex=m_listLend.GetItemCount();LV_ITEMlvItem;lvIte
34、m.mask=LVIF_TEXT;lvItem.iItem=nIndex;/行數(shù)lvItem.iSubItem=0;CStringtemp;temp.Format("%d",id);lvItem.pszText=(char*)(LPCTSTR)temp;/第一列/在最后一行插入記錄值.m_listLend.InsertItem(&lvItem);/設(shè)置該行的其他列的值.m_listLend.SetItemText(nIndex,1,code);m_listLend.SetItemText(nIndex,2,name);m_listLend.SetItemText(nIndex,3,borrower);m_listLend.SetItemText(nIndex,4,lendDate);m_listLend.SetItemText(nIndex,5,returnDate);把數(shù)據(jù)庫(kù)中的數(shù)據(jù)顯示到界面上的函
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 展臺(tái)搭建合同范本
- 稅務(wù)系統(tǒng)納稅信用管理政策解讀
- 重型柴油車(chē)遠(yuǎn)程在線監(jiān)控系統(tǒng)項(xiàng)目 投標(biāo)方案(技術(shù)方案)
- 三農(nóng)村創(chuàng)業(yè)投資手冊(cè)
- 企業(yè)供應(yīng)鏈管理的數(shù)字化轉(zhuǎn)型及優(yōu)化策略研究
- 三農(nóng)產(chǎn)品質(zhì)量安全追溯系統(tǒng)建設(shè)手冊(cè)
- 新零售技術(shù)應(yīng)用與發(fā)展趨勢(shì)分析報(bào)告
- 停車(chē)場(chǎng)車(chē)輛出入智能管理系統(tǒng)
- 做可行性研究情況報(bào)告
- 生態(tài)農(nóng)業(yè)觀光園區(qū)采購(gòu)
- 《防波堤施工》課件
- 2025河南中煙安陽(yáng)卷煙廠一線崗位招聘14人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 四川省2024年高等職業(yè)教育單獨(dú)招生考試中職類(lèi)語(yǔ)文試題及答案
- 眼科手術(shù)學(xué)基礎(chǔ)
- 多晶硅大型還原爐裝備項(xiàng)目可行性研究報(bào)告建議書(shū)
- 2025年高考作文備考之模擬試題:“自塑”與“他塑”
- (完整版)高考英語(yǔ)詞匯3500詞(精校版)
- 2024年常州機(jī)電職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 2025年鎮(zhèn)履職事項(xiàng)清單工作培訓(xùn)會(huì)會(huì)議記錄
- 湘教版七年級(jí)數(shù)學(xué)下冊(cè)第二章實(shí)數(shù)教學(xué)課件
- 電工基礎(chǔ)知識(shí)培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論