




已閱讀5頁,還剩61頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
用C+編程語言開發(fā)系統(tǒng)一個(gè)實(shí)現(xiàn)例子詳講,學(xué)校:廣東藥學(xué)院學(xué)院:信息工程學(xué)院班級(jí):醫(yī)藥軟件08學(xué)生:李華鑫日期:2010年10月份制,QQ:764796723手機(jī)號(hào):654735,問:C+開發(fā)系統(tǒng)真的很難嗎?真的很高深嗎?,回答是:1.說難不難,說容易不容易!2.“天下是有難易乎?為之,則難者亦易矣;不為,則易者亦難矣。人之為學(xué)有難易乎?學(xué)之,則難者亦易矣;不學(xué),則易者亦難矣。”,開發(fā)系統(tǒng)所具備的條件,C語言的基本功一定要扎實(shí);有關(guān)數(shù)據(jù)庫的操作要熟悉;(懂SQL語言的最好不過,即使不懂SQL語言也沒關(guān)系,因?yàn)閯?chuàng)建數(shù)據(jù)庫還可以通過可視化操作來進(jìn)行,只是效率低一點(diǎn)?。┮3智逍训念^腦;(腦子不要懜?。┮心托模灰幸环N“化整為零”的思想在腦子里。,好了,開場白結(jié)束了,下面進(jìn)入正題開發(fā)系統(tǒng)的步驟!,第一步:構(gòu)想系統(tǒng)最終的效果藍(lán)圖下面是以一個(gè)類似于圖書館管理系統(tǒng),學(xué)生教師管理系統(tǒng),倉庫管理系統(tǒng)為例子的詳講。,登錄界面:登錄進(jìn)去的第一個(gè)主界面:,一個(gè)系統(tǒng)所有的功能,我們要把它“化整為零”,分為幾個(gè)部分上主要功能,我們可以用菜單欄的形式來表達(dá)出來:,下面是詳講各個(gè)主功能的子功能.,(一)基本信息管理,1.客戶信息管理:,當(dāng)我們單擊“添加”按鈕時(shí),要出現(xiàn)一個(gè)添加信息的對(duì)話框:,當(dāng)我們單擊“修改”按鈕時(shí),要出現(xiàn)一個(gè)修改信息的對(duì)話框:,(一)基本信息管理,2.倉庫信息管理:,當(dāng)我們單擊“添加”按鈕時(shí),要出現(xiàn)一個(gè)添加信息的對(duì)話框:,當(dāng)我們單擊“修改”按鈕時(shí),要出現(xiàn)一個(gè)修改信息的對(duì)話框:(很清楚,這個(gè)對(duì)話框和上一個(gè)是同一個(gè)對(duì)話框),(一)基本信息管理,3.用戶信息管理:,當(dāng)我們單擊“添加”按鈕時(shí),要出現(xiàn)一個(gè)添加信息的對(duì)話框:(在此要注意,我們給admin用戶類型來一個(gè)標(biāo)記為“1”,其他都是“普通用戶”標(biāo)記為“2”)其他另外3個(gè)按鈕沒必要專門獨(dú)立做一個(gè)框架,在此我們不搞那幾個(gè)框架。,(一)基本信息管理,4.修改用戶密碼:,(一)基本信息管理,5.退出系統(tǒng):在這里,退出系統(tǒng)也沒必要專門獨(dú)立搞一個(gè)對(duì)話框,只需要實(shí)現(xiàn)把應(yīng)用程序關(guān)閉就OK了!,(二)產(chǎn)品信息管理,1.產(chǎn)品類別管理:“添加”“修改”左右四個(gè)按鈕要彈出一樣對(duì)話框:,(二)產(chǎn)品信息管理,2.產(chǎn)品信息管理:,當(dāng)我們單擊“添加”按鈕時(shí),要出現(xiàn)一個(gè)添加信息的對(duì)話框:,當(dāng)我們單擊“修改”按鈕時(shí),要出現(xiàn)一個(gè)添加信息的對(duì)話框:(與上一個(gè)對(duì)話框同一個(gè)),(三)庫存操作管理,1.入庫操作:,當(dāng)我們單擊“添加”按鈕時(shí),要出現(xiàn)一個(gè)添加信息的對(duì)話框:,(三)庫存操作管理,2.出庫操作:,當(dāng)我們單擊“添加”按鈕時(shí),要出現(xiàn)一個(gè)添加信息的對(duì)話框:,(三)庫存操作管理,3.庫存清點(diǎn):(注意:這里只是拿來給用戶看的,為了數(shù)據(jù)庫的安全著想,在此使用視圖view存儲(chǔ)過程,而不是表table),(四)庫存警示管理,1.數(shù)量報(bào)警:(注意:這里也是用到存儲(chǔ)過程,為了數(shù)據(jù)庫的安全著想),(四)庫存警示管理,2.失效報(bào)警:(注意:這里也是用到存儲(chǔ)過程,為了數(shù)據(jù)庫的安全著想),(五)統(tǒng)計(jì)查詢管理,1.產(chǎn)品入庫統(tǒng)計(jì)表:(注意:這里也是用到存儲(chǔ)過程,為了數(shù)據(jù)庫的安全著想),(五)統(tǒng)計(jì)查詢管理,2.庫存產(chǎn)品統(tǒng)計(jì)一覽表:(注意:這里也是用到存儲(chǔ)過程,為了數(shù)據(jù)庫的安全著想),(六)系統(tǒng)數(shù)據(jù)維護(hù),1.備份數(shù)據(jù)庫;2.恢復(fù)數(shù)據(jù)庫。(這2個(gè)功能對(duì)于開發(fā)者來講沒什么大不了,因?yàn)殚_發(fā)者可以直接在數(shù)據(jù)庫里進(jìn)行操作;但是對(duì)于不懂計(jì)算機(jī)的用戶來說,數(shù)據(jù)庫的備份和恢復(fù)都非常重要。因此我們要為用戶提供一個(gè)簡便易懂的按鈕來實(shí)現(xiàn)數(shù)據(jù)庫的維護(hù)?。?一個(gè)系統(tǒng)項(xiàng)目的功能藍(lán)圖就這樣我們構(gòu)思好了?。ㄒf明的一點(diǎn)是,你可以用鉛筆在圖紙上自己進(jìn)行粗略的勾畫,要相信“好記性不如爛筆頭”。在后面的n多個(gè)對(duì)話框有聯(lián)系的時(shí)候,要給各個(gè)對(duì)話框進(jìn)行ID標(biāo)號(hào)也即是標(biāo)明不同的ID號(hào),如果你不用圖紙寫好標(biāo)記好,你會(huì)很容易忘記究竟哪個(gè)是哪個(gè),哪里是哪里!小項(xiàng)目是這樣,大項(xiàng)目更需要這樣?。?我們數(shù)一下以上的對(duì)話框,總共要?jiǎng)?chuàng)建不重復(fù)的總共有23個(gè)對(duì)話框。對(duì)話框之間有很多都是有聯(lián)系的,實(shí)踐中發(fā)現(xiàn)很多的對(duì)話框的操作都是千篇一律類似的!,為了不占用蔡老師太多的寶貴時(shí)間,我決定下面詳細(xì)講解“登陸界面”的一個(gè)典型例子,其他的都是在此基礎(chǔ)上模仿的?!胺胖暮6詼?zhǔn)”“萬變不離其宗”!,系統(tǒng)開發(fā)進(jìn)入第二步,創(chuàng)建數(shù)據(jù)庫建表建視圖,創(chuàng)建數(shù)據(jù)庫,打開SQLSever2005連接登錄,單擊“新建查詢”進(jìn)入SQL代碼編輯區(qū)敲好代碼,選中CREATEDATABASEStockGO接著按下“Alt+X”或者點(diǎn)菜單欄左上角的“執(zhí)行”!就這樣一個(gè)數(shù)據(jù)庫“Stock”被創(chuàng)建了!創(chuàng)建表:在每次創(chuàng)表或者建立視圖前先用一下已經(jīng)創(chuàng)建的數(shù)據(jù)庫StockUSEStockGOCREATETABLEClient(CidintPRIMARYKEYIDENTITY,Cnamevarchar(50)NOTNULL,Ctypetinyint,Contactvarchar(30),Addressvarchar(50),Postcodevarchar(10),Phonevarchar(30),Faxvarchar(30),Memovarchar(100)GO,為了節(jié)省時(shí)間,方便給大家數(shù)據(jù)庫的創(chuàng)建,我已經(jīng)專門把寫好了數(shù)據(jù)庫創(chuàng)建的代碼放在txt記事本里,需要的同學(xué)自己來Ctrl+CCtrl+V。,值得注意點(diǎn)的是,為了兼容市面上的數(shù)據(jù)庫,有2000、2005、2008、2010版本的,要在創(chuàng)建完數(shù)據(jù)庫以后執(zhí)行以下語句:EXECsp_dbcmptlevelStock,80GO或者ALTERDATABASEStockSETCOMPATIBILITY_LEVEL=80GO(注意:“80”意思是兼容到2000版本的),系統(tǒng)開發(fā)進(jìn)入第三步,打開C+2005,新建一個(gè)VisualC+MFC應(yīng)用程序:,MFC(MicrosoftFoundationClasses),是一個(gè)微軟公司提供的類庫,以C+類的形式封裝了Windows的API,并且包含一個(gè)應(yīng)用程序框架,以減少應(yīng)用程序開發(fā)人員的工作量。其中包含的類包含大量Windows句柄封裝類和很多Windows的內(nèi)建控件和組件的封裝類。,一.先搞好前面的23個(gè)對(duì)話框架,視圖其他窗口資源視圖在右端的樹形結(jié)構(gòu)目錄看到這樣畫面:右擊對(duì)話框“Dialog”添加好前面的23個(gè)對(duì)話框,登陸界面的框架的創(chuàng)建,點(diǎn)開“工具箱”,在空白對(duì)話框上添加編輯框以及靜態(tài)說明和按鈕添加完以后最終效果圖:其中密碼編輯框中出現(xiàn)6個(gè)圓點(diǎn),是可以在編輯框的右擊選擇屬性,在屬性窗口中選擇password類型的,很自然就會(huì)出現(xiàn)6個(gè)圓點(diǎn)了!同學(xué)們,編程是不是超級(jí)簡單呢?我是要讓大家知道原來C+編程還可以這樣玩的!因?yàn)檫@是組件“COM”ComponentObjectsModel組件對(duì)象模型,簡稱COM,其他22個(gè)對(duì)話框也相類似這樣創(chuàng)建出來,這一點(diǎn)希望大家找一些C+組件COM的使用方法,這里不做詳細(xì)講解,時(shí)間有限!再創(chuàng)建2個(gè)對(duì)話框:我們把“登陸界面”添加一個(gè)類“LoginDlg”,“用戶管理”添加一個(gè)類“UserManDlg”,“編輯用戶信息”添加一個(gè)類“UserEditDlg”,添加問以后會(huì)相應(yīng)地出現(xiàn).h頭文件和.cpp文件,頭文件拿來聲明變量、函數(shù).cpp用來實(shí)現(xiàn)功能!,完成了以后會(huì)出現(xiàn)以下一堆頭文件和實(shí)現(xiàn)文件:,好,下面正式進(jìn)入代碼編輯區(qū)域,注意放長眼鏡,睜大眼睛看好這中心一環(huán)節(jié)!(大家都知道.h文件一般是拿來聲明、初始化用的,真正實(shí)現(xiàn)功能的是在.cpp文件,下面的我講述的就是.cpp文件,在.ccp文件中用到的變量我已經(jīng)在.h文件里聲明過了,所以大家看到了“無中生有”的變量不要驚訝,我都已經(jīng)聲明過了?。?我們回到“登陸界面”那個(gè)框架:voidCLoginDlg:OnOK()/將對(duì)話框中編輯框的數(shù)據(jù)讀取到成員變量中UpdateData(TRUE);/檢查數(shù)據(jù)有效性if(m_UserName=)MessageBox(請(qǐng)輸入用戶名,否則出錯(cuò)!);return;if(m_Pwd=)MessageBox(請(qǐng)輸入密碼);return;/定義CUsers對(duì)象,用于從表Users中讀取數(shù)據(jù)CUsersuser;user.GetData(m_UserName);/如果讀取的數(shù)據(jù)與用戶輸入數(shù)據(jù)不同,則返回if(user.GetPwd()!=m_Pwd)MessageBox(用戶信息不正確,無法登錄!);return;/關(guān)閉對(duì)話框CDialog:OnOK();,我們看看一下“登陸界面”所用到的頭文件就知道我們使用到Users里面的一些函數(shù),里面有很多構(gòu)造好的函數(shù)提供別的文件調(diào)用。intCUsers:HaveName(CStringcUserName)/連接數(shù)據(jù)庫ADOConnm_AdoConn;m_AdoConn.OnInitADOConn();/設(shè)置SELECT語句_bstr_tvSQL;vSQL=SELECT*FROMUsersWHEREUserName=+cUserName+;/執(zhí)行SELECT語句_RecordsetPtrm_pRecordset;m_pRecordset=m_AdoConn.GetRecordSet(vSQL);if(m_pRecordset-adoEOF)return-1;elsereturn1;/斷開與數(shù)據(jù)庫的連接m_AdoConn.ExitConnect();,什么叫做ADO?,微軟公司的ADO(ActiveXDataObjects)是一個(gè)用于存取數(shù)據(jù)源的COM組件。它提供了編程語言和統(tǒng)一數(shù)據(jù)訪問方式OLEDB(ObjectLinkingandEmbedding),對(duì)象連接與嵌入,簡稱OLE技術(shù)的一個(gè)中間層。允許開發(fā)人員編寫訪問數(shù)據(jù)的代碼而不用關(guān)心數(shù)據(jù)庫是如何實(shí)現(xiàn)的,而只用關(guān)心到數(shù)據(jù)庫的連接。訪問數(shù)據(jù)庫的時(shí)候,關(guān)于SQL的知識(shí)不是必要的,但是特定數(shù)據(jù)庫支持的SQL命令仍可以通過ADO中的命令對(duì)象來執(zhí)行。,C:ProgramFilesCommonFilesSystemadomsado15.dll,什么是_bstr_t?,_bstr_t類封裝BSTR有趣的地方就是它的封裝方式有點(diǎn)類似于智能指針,又有點(diǎn)像COM管理生存期的方式。_bstr_t將兩者結(jié)合起來并具體體現(xiàn)在構(gòu)造函數(shù)、賦值函數(shù)和析構(gòu)函數(shù)中。_variant_t(變體,不同的)和_bstr_t這兩個(gè)類分別封裝并管理VARIANT和BSTR這兩種數(shù)據(jù)類型,VARIANT和BSTR這兩種類型是COM中使用的數(shù)據(jù)類型。為了C+中的變量應(yīng)用到ADO編程中,只能進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換。通過_variant_t和_bstr_t這兩個(gè)類,就可以方便的把C+類型變量轉(zhuǎn)換成COM中的變量了。其他類型轉(zhuǎn)換成_bstr_t可以直接賦值。,CUsers:CUsers()UserName=;Pwd=;User_type=0;CUsers:CUsers()CStringCUsers:GetUserName()returnUserName;voidCUsers:SetUserName(CStringcUserName)UserName=cUserName;CStringCUsers:GetPwd()returnPwd;voidCUsers:SetPwd(CStringcPwd)Pwd=cPwd;intCUsers:GetUser_type()returnUser_type;voidCUsers:SetUser_type(intiUser_type)User_type=iUser_type;,為數(shù)據(jù)庫插入數(shù)據(jù),voidCUsers:sql_insert()/連接數(shù)據(jù)庫ADOConnm_AdoConn;m_AdoConn.OnInitADOConn();/設(shè)置INSERT語句CStringstrType;strType.Format(%d,User_type);_bstr_tvSQL;vSQL=INSERTINTOUsersVALUES(+UserName+,+Pwd+,+strType+);/執(zhí)行INSERT語句m_AdoConn.ExecuteSQL(vSQL);/斷開與數(shù)據(jù)庫的連接m_AdoConn.ExitConnect();,更新數(shù)據(jù)庫里面的表,voidCUsers:sql_updatePwd(CStringcUserName)/連接數(shù)據(jù)庫ADOConnm_AdoConn;m_AdoConn.OnInitADOConn();/設(shè)置UPDATE語句CStringstrType;strType.Format(%d,User_type);(注意這里,我是設(shè)置了權(quán)限的)_bstr_tvSQL;vSQL=UPDATEUsersSETPwd=+Pwd+WHEREUserName=+cUserName+;/執(zhí)行UPDATE語句m_AdoConn.ExecuteSQL(vSQL);/斷開與數(shù)據(jù)庫的連接m_AdoConn.ExitConnect();,刪除數(shù)據(jù)庫表里的數(shù)據(jù),voidCUsers:sql_delete(CStringcUserName)/連接數(shù)據(jù)庫ADOConnm_AdoConn;m_AdoConn.OnInitADOConn();/設(shè)置DELETE語句_bstr_tvSQL;vSQL=DELETEFROMUsersWHEREUserName=+cUserName+;/執(zhí)行DELETE語句m_AdoConn.ExecuteSQL(vSQL);/斷開與數(shù)據(jù)庫的連接m_AdoConn.ExitConnect();,從數(shù)據(jù)庫表里獲取信息,voidCUsers:GetData(CStringcUserName)/連接數(shù)據(jù)庫ADOConnm_AdoConn;m_AdoConn.OnInitADOConn();/設(shè)置SELECT語句_bstr_tvSQL;vSQL=SELECT*FROMUsersWHEREUserName=+cUserName+;/執(zhí)行SELETE語句_RecordsetPtrm_pRecordset;m_pRecordset=m_AdoConn.GetRecordSet(vSQL);/返回各列的值if(m_pRecordset-adoEOF)CUsers();elseUserName=cUserName;Pwd=(LPCTSTR)(_bstr_t)m_pRecordset-GetCollect(Pwd);User_type=atoi(LPCTSTR)(_bstr_t)m_pRecordset-GetCollect(User_type);/斷開與數(shù)據(jù)庫的連接m_AdoConn.ExitConnect();,看一下“編輯用戶信息”框架,voidCUserEditDlg:OnOK()UpdateData(TRUE);CUsersusr;usr.SetUserName(m_UserName);usr.SetPwd(888888);usr.SetUser_type(m_UserType.GetCurSel()+1);if(usr.HaveName(m_UserName)=1)/如果存在當(dāng)前用戶MessageBox(當(dāng)前用戶已存在,請(qǐng)選擇其他用戶名);return;/插入用戶記錄usr.sql_insert();CDialog:OnOK();BOOLCUserEditDlg:OnInitDialog()CDialog:OnInitDialog();/TODO:Addextrainitializationherem_UserType.SetCurSel(iUserType-1);if(curUser.GetUserName()!=Admin)GetDlgItem(IDC_USERTYPE_COMBO)-EnableWindow(FALSE);returnTRUE;,看一下“用戶管理”框架,voidCUserManDlg:OnAddButton()CUserEditDlgdlg;dlg.iUserType=2;if(dlg.DoModal()=IDOK)m_adodc.Refresh();voidCUserManDlg:OnModiButton()if(m_datalist.GetText()=)MessageBox(請(qǐng)選擇用戶);return;if(curUser.GetUserName()!=Admin,(續(xù)上),voidCUserManDlg:OnDelButton()if(m_datalist.GetText()=)MessageBox(請(qǐng)選擇用戶);return;if(curUser.GetUserName()!=Admin,回眸一看,不知不覺地我們就已經(jīng)實(shí)現(xiàn)了3個(gè)界面的功能;一個(gè)是登陸界面的實(shí)現(xiàn)功能;一個(gè)是用戶編輯界面實(shí)現(xiàn)的功能;再一個(gè)是用戶管理的實(shí)現(xiàn)功能。再一次回問道:C+開發(fā)系統(tǒng)真的有這么難嗎?再一次回答說:很容易!,剩下的20個(gè)界面的功能實(shí)現(xiàn),剩下的20個(gè)界面功能的實(shí)現(xiàn)都和上面的三個(gè)相類似,都是千篇一律的。懂一個(gè)典型的例子,后面的都很容易上手!要把它做出來,注意要有耐心,要用時(shí)間來砸出來的,用心血嘔出來的,用智慧總結(jié)出來的!我能,相信大家一定也能,也許更強(qiáng)!能夠熟練地做到這一點(diǎn),你已經(jīng)是半個(gè)軟件設(shè)計(jì)師了!還愁以后找工作沒人要嗎?不!,系統(tǒng)開發(fā)第四步,用戶界面美工,其目的之一是能吸引用戶的眼球,最終達(dá)到一種良好的人機(jī)交互的目的。利用flash和PS這
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年湖北麻城思源學(xué)校英語七下期末統(tǒng)考模擬試題含答案
- 河南省三門峽市2025年八下英語期末學(xué)業(yè)質(zhì)量監(jiān)測試題含答案
- 數(shù)字化技術(shù)在圖書零售門店的電子書銷售分析報(bào)告
- 2025年醫(yī)藥企業(yè)研發(fā)外包(CRO)模式下的質(zhì)量控制與風(fēng)險(xiǎn)評(píng)估體系構(gòu)建報(bào)告
- 2025年綠色供應(yīng)鏈管理在飲料制造業(yè)的應(yīng)用與推廣研究報(bào)告
- 原子彈相關(guān)話題課件
- 2025年數(shù)字孿生在城市公共安全規(guī)劃與建設(shè)中的應(yīng)急通信保障報(bào)告
- 2025年儲(chǔ)能電池?zé)峁芾硐到y(tǒng)在智慧教育領(lǐng)域的應(yīng)用前景報(bào)告
- 2025年綠色建筑材料市場推廣策略與政策支持下的市場競爭力研究報(bào)告
- 32025年醫(yī)療器械冷鏈物流行業(yè)區(qū)域發(fā)展不平衡問題分析及優(yōu)化策略報(bào)告
- 2025年山東省高考招生統(tǒng)一考試高考真題化學(xué)試卷(真題+答案)
- 事故隱患內(nèi)部報(bào)告獎(jiǎng)勵(lì)制度
- 醫(yī)院培訓(xùn)課件:《緊急情況下口頭醫(yī)囑制度與執(zhí)行流程》
- 2023年山東省夏季普通高中學(xué)業(yè)水平合格考試會(huì)考生物試題及參考答案
- 北京市東城區(qū)名校2024年八年級(jí)物理第二學(xué)期期末質(zhì)量檢測試題及答案解析
- MOOC 中國文化概論-華南師范大學(xué) 中國大學(xué)慕課答案
- 美的審廠資料清單
- 人教版八年級(jí)美術(shù)下冊(cè)紋樣與生活第二課時(shí)設(shè)計(jì)紋樣
- 東北大學(xué)學(xué)報(bào)(自然科學(xué)版)排版模板(共4頁)
- PEP六年級(jí)下冊(cè)英語總復(fù)習(xí)
- 西藥房工作管理制度
評(píng)論
0/150
提交評(píng)論