用C開發(fā)系統(tǒng)的一個實例.ppt_第1頁
用C開發(fā)系統(tǒng)的一個實例.ppt_第2頁
用C開發(fā)系統(tǒng)的一個實例.ppt_第3頁
用C開發(fā)系統(tǒng)的一個實例.ppt_第4頁
用C開發(fā)系統(tǒng)的一個實例.ppt_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費閱讀

VIP免費下載

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

文檔簡介

用C+編程語言開發(fā)系統(tǒng)一個實現(xiàn)例子詳講,學校:廣東藥學院學院:信息工程學院班級:醫(yī)藥軟件08學生:李華鑫日期:2010年10月份制,QQ:764796723手機號:654735,問:C+開發(fā)系統(tǒng)真的很難嗎?真的很高深嗎?,回答是:1.說難不難,說容易不容易!2.“天下是有難易乎?為之,則難者亦易矣;不為,則易者亦難矣。人之為學有難易乎?學之,則難者亦易矣;不學,則易者亦難矣。”,開發(fā)系統(tǒng)所具備的條件,C語言的基本功一定要扎實;有關(guān)數(shù)據(jù)庫的操作要熟悉;(懂SQL語言的最好不過,即使不懂SQL語言也沒關(guān)系,因為創(chuàng)建數(shù)據(jù)庫還可以通過可視化操作來進行,只是效率低一點?。┮3智逍训念^腦;(腦子不要懜?。┮心托模灰幸环N“化整為零”的思想在腦子里。,好了,開場白結(jié)束了,下面進入正題開發(fā)系統(tǒng)的步驟!,第一步:構(gòu)想系統(tǒng)最終的效果藍圖下面是以一個類似于圖書館管理系統(tǒng),學生教師管理系統(tǒng),倉庫管理系統(tǒng)為例子的詳講。,登錄界面:登錄進去的第一個主界面:,一個系統(tǒng)所有的功能,我們要把它“化整為零”,分為幾個部分上主要功能,我們可以用菜單欄的形式來表達出來:,下面是詳講各個主功能的子功能.,(一)基本信息管理,1.客戶信息管理:,當我們單擊“添加”按鈕時,要出現(xiàn)一個添加信息的對話框:,當我們單擊“修改”按鈕時,要出現(xiàn)一個修改信息的對話框:,(一)基本信息管理,2.倉庫信息管理:,當我們單擊“添加”按鈕時,要出現(xiàn)一個添加信息的對話框:,當我們單擊“修改”按鈕時,要出現(xiàn)一個修改信息的對話框:(很清楚,這個對話框和上一個是同一個對話框),(一)基本信息管理,3.用戶信息管理:,當我們單擊“添加”按鈕時,要出現(xiàn)一個添加信息的對話框:(在此要注意,我們給admin用戶類型來一個標記為“1”,其他都是“普通用戶”標記為“2”)其他另外3個按鈕沒必要專門獨立做一個框架,在此我們不搞那幾個框架。,(一)基本信息管理,4.修改用戶密碼:,(一)基本信息管理,5.退出系統(tǒng):在這里,退出系統(tǒng)也沒必要專門獨立搞一個對話框,只需要實現(xiàn)把應(yīng)用程序關(guān)閉就OK了!,(二)產(chǎn)品信息管理,1.產(chǎn)品類別管理:“添加”“修改”左右四個按鈕要彈出一樣對話框:,(二)產(chǎn)品信息管理,2.產(chǎn)品信息管理:,當我們單擊“添加”按鈕時,要出現(xiàn)一個添加信息的對話框:,當我們單擊“修改”按鈕時,要出現(xiàn)一個添加信息的對話框:(與上一個對話框同一個),(三)庫存操作管理,1.入庫操作:,當我們單擊“添加”按鈕時,要出現(xiàn)一個添加信息的對話框:,(三)庫存操作管理,2.出庫操作:,當我們單擊“添加”按鈕時,要出現(xiàn)一個添加信息的對話框:,(三)庫存操作管理,3.庫存清點:(注意:這里只是拿來給用戶看的,為了數(shù)據(jù)庫的安全著想,在此使用視圖view存儲過程,而不是表table),(四)庫存警示管理,1.數(shù)量報警:(注意:這里也是用到存儲過程,為了數(shù)據(jù)庫的安全著想),(四)庫存警示管理,2.失效報警:(注意:這里也是用到存儲過程,為了數(shù)據(jù)庫的安全著想),(五)統(tǒng)計查詢管理,1.產(chǎn)品入庫統(tǒng)計表:(注意:這里也是用到存儲過程,為了數(shù)據(jù)庫的安全著想),(五)統(tǒng)計查詢管理,2.庫存產(chǎn)品統(tǒng)計一覽表:(注意:這里也是用到存儲過程,為了數(shù)據(jù)庫的安全著想),(六)系統(tǒng)數(shù)據(jù)維護,1.備份數(shù)據(jù)庫;2.恢復(fù)數(shù)據(jù)庫。(這2個功能對于開發(fā)者來講沒什么大不了,因為開發(fā)者可以直接在數(shù)據(jù)庫里進行操作;但是對于不懂計算機的用戶來說,數(shù)據(jù)庫的備份和恢復(fù)都非常重要。因此我們要為用戶提供一個簡便易懂的按鈕來實現(xiàn)數(shù)據(jù)庫的維護!),一個系統(tǒng)項目的功能藍圖就這樣我們構(gòu)思好了!(要說明的一點是,你可以用鉛筆在圖紙上自己進行粗略的勾畫,要相信“好記性不如爛筆頭”。在后面的n多個對話框有聯(lián)系的時候,要給各個對話框進行ID標號也即是標明不同的ID號,如果你不用圖紙寫好標記好,你會很容易忘記究竟哪個是哪個,哪里是哪里!小項目是這樣,大項目更需要這樣!),我們數(shù)一下以上的對話框,總共要創(chuàng)建不重復(fù)的總共有23個對話框。對話框之間有很多都是有聯(lián)系的,實踐中發(fā)現(xiàn)很多的對話框的操作都是千篇一律類似的!,為了不占用蔡老師太多的寶貴時間,我決定下面詳細講解“登陸界面”的一個典型例子,其他的都是在此基礎(chǔ)上模仿的?!胺胖暮6詼省薄叭f變不離其宗”!,系統(tǒng)開發(fā)進入第二步,創(chuàng)建數(shù)據(jù)庫建表建視圖,創(chuàng)建數(shù)據(jù)庫,打開SQLSever2005連接登錄,單擊“新建查詢”進入SQL代碼編輯區(qū)敲好代碼,選中CREATEDATABASEStockGO接著按下“Alt+X”或者點菜單欄左上角的“執(zhí)行”!就這樣一個數(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ù)據(jù)庫的創(chuàng)建,我已經(jīng)專門把寫好了數(shù)據(jù)庫創(chuàng)建的代碼放在txt記事本里,需要的同學自己來Ctrl+CCtrl+V。,值得注意點的是,為了兼容市面上的數(shù)據(jù)庫,有2000、2005、2008、2010版本的,要在創(chuàng)建完數(shù)據(jù)庫以后執(zhí)行以下語句:EXECsp_dbcmptlevelStock,80GO或者ALTERDATABASEStockSETCOMPATIBILITY_LEVEL=80GO(注意:“80”意思是兼容到2000版本的),系統(tǒng)開發(fā)進入第三步,打開C+2005,新建一個VisualC+MFC應(yīng)用程序:,MFC(MicrosoftFoundationClasses),是一個微軟公司提供的類庫,以C+類的形式封裝了Windows的API,并且包含一個應(yīng)用程序框架,以減少應(yīng)用程序開發(fā)人員的工作量。其中包含的類包含大量Windows句柄封裝類和很多Windows的內(nèi)建控件和組件的封裝類。,一.先搞好前面的23個對話框架,視圖其他窗口資源視圖在右端的樹形結(jié)構(gòu)目錄看到這樣畫面:右擊對話框“Dialog”添加好前面的23個對話框,登陸界面的框架的創(chuàng)建,點開“工具箱”,在空白對話框上添加編輯框以及靜態(tài)說明和按鈕添加完以后最終效果圖:其中密碼編輯框中出現(xiàn)6個圓點,是可以在編輯框的右擊選擇屬性,在屬性窗口中選擇password類型的,很自然就會出現(xiàn)6個圓點了!同學們,編程是不是超級簡單呢?我是要讓大家知道原來C+編程還可以這樣玩的!因為這是組件“COM”ComponentObjectsModel組件對象模型,簡稱COM,其他22個對話框也相類似這樣創(chuàng)建出來,這一點希望大家找一些C+組件COM的使用方法,這里不做詳細講解,時間有限!再創(chuàng)建2個對話框:我們把“登陸界面”添加一個類“LoginDlg”,“用戶管理”添加一個類“UserManDlg”,“編輯用戶信息”添加一個類“UserEditDlg”,添加問以后會相應(yīng)地出現(xiàn).h頭文件和.cpp文件,頭文件拿來聲明變量、函數(shù).cpp用來實現(xiàn)功能!,完成了以后會出現(xiàn)以下一堆頭文件和實現(xiàn)文件:,好,下面正式進入代碼編輯區(qū)域,注意放長眼鏡,睜大眼睛看好這中心一環(huán)節(jié)?。ù蠹叶贾?h文件一般是拿來聲明、初始化用的,真正實現(xiàn)功能的是在.cpp文件,下面的我講述的就是.cpp文件,在.ccp文件中用到的變量我已經(jīng)在.h文件里聲明過了,所以大家看到了“無中生有”的變量不要驚訝,我都已經(jīng)聲明過了?。?我們回到“登陸界面”那個框架:voidCLoginDlg:OnOK()/將對話框中編輯框的數(shù)據(jù)讀取到成員變量中UpdateData(TRUE);/檢查數(shù)據(jù)有效性if(m_UserName=)MessageBox(請輸入用戶名,否則出錯!);return;if(m_Pwd=)MessageBox(請輸入密碼);return;/定義CUsers對象,用于從表Users中讀取數(shù)據(jù)CUsersuser;user.GetData(m_UserName);/如果讀取的數(shù)據(jù)與用戶輸入數(shù)據(jù)不同,則返回if(user.GetPwd()!=m_Pwd)MessageBox(用戶信息不正確,無法登錄!);return;/關(guān)閉對話框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)是一個用于存取數(shù)據(jù)源的COM組件。它提供了編程語言和統(tǒng)一數(shù)據(jù)訪問方式OLEDB(ObjectLinkingandEmbedding),對象連接與嵌入,簡稱OLE技術(shù)的一個中間層。允許開發(fā)人員編寫訪問數(shù)據(jù)的代碼而不用關(guān)心數(shù)據(jù)庫是如何實現(xiàn)的,而只用關(guān)心到數(shù)據(jù)庫的連接。訪問數(shù)據(jù)庫的時候,關(guān)于SQL的知識不是必要的,但是特定數(shù)據(jù)庫支持的SQL命令仍可以通過ADO中的命令對象來執(zhí)行。,C:ProgramFilesCommonFilesSystemadomsado15.dll,什么是_bstr_t?,_bstr_t類封裝BSTR有趣的地方就是它的封裝方式有點類似于智能指針,又有點像COM管理生存期的方式。_bstr_t將兩者結(jié)合起來并具體體現(xiàn)在構(gòu)造函數(shù)、賦值函數(shù)和析構(gòu)函數(shù)中。_variant_t(變體,不同的)和_bstr_t這兩個類分別封裝并管理VARIANT和BSTR這兩種數(shù)據(jù)類型,VARIANT和BSTR這兩種類型是COM中使用的數(shù)據(jù)類型。為了C+中的變量應(yīng)用到ADO編程中,只能進行數(shù)據(jù)類型的轉(zhuǎn)換。通過_variant_t和_bstr_t這兩個類,就可以方便的把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)/如果存在當前用戶MessageBox(當前用戶已存在,請選擇其他用戶名);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(請選擇用戶);return;if(curUser.GetUserName()!=Admin,(續(xù)上),voidCUserManDlg:OnDelButton()if(m_datalist.GetText()=)MessageBox(請選擇用戶);return;if(curUser.GetUserName()!=Admin,回眸一看,不知不覺地我們就已經(jīng)實現(xiàn)了3個界面的功能;一個是登陸界面的實現(xiàn)功能;一個是用戶編輯界面實現(xiàn)的功能;再一個是用戶管理的實現(xiàn)功能。再一次回問道:C+開發(fā)系統(tǒng)真的有這么難嗎?再一次回答說:很容易!,剩下的20個界面的功能實現(xiàn),剩下的20個界面功能的實現(xiàn)都和上面的三個相類似,都是千篇一律的。懂一個典型的例子,后面的都很容易上手!要把它做出來,注意要有耐心,要用時間來砸出來的,用心血嘔出來的,用智慧總結(jié)出來的!我能,相信大家一定也能,也許更強!能夠熟練地做到這一點,你已經(jīng)是半個軟件設(shè)計師了!還愁以后找工作沒人要嗎?不!,系統(tǒng)開發(fā)第四步,用戶界面美工,其目的之一是能吸引用戶的眼球,最終達到一種良好的人機交互的目的。利用flash和PS這

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論