版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告</b></p><p><b> 需求分析:</b></p><p> 設(shè)計(jì)銀行管理系統(tǒng):該系統(tǒng)有三種用戶登錄類型,分別為:普通客戶,銀行雇員,經(jīng)理。各類用戶各自的權(quán)限也不一樣,具體操作的結(jié)果會體現(xiàn)在對數(shù)據(jù)庫信息的修改。</p><p> 普通客戶:根據(jù)自己的賬號,密
2、碼登錄進(jìn)入界面,可以完成以下業(yè)務(wù):</p><p> 存款,取款,轉(zhuǎn)賬,查詢余額,修改密碼,交易明細(xì),該賬戶信息</p><p> 銀行雇員:輸入雇員ID和密碼登錄進(jìn)入,可完成以下業(yè)務(wù):開戶,銷戶,查看所有賬戶,查看所有貸款信息,管理銀行信息,為客戶受理貸款,辦理客戶還款業(yè)務(wù)。</p><p> 經(jīng)理:經(jīng)理是特殊的雇員,可以作為普通雇員管理客戶,也可以管理其他
3、雇員信息。輸入用戶名密碼登陸后可完成以下功能:添加雇員信息,刪除雇員信息,修改雇員信息,查看所有雇員信息。</p><p><b> 設(shè)計(jì) </b></p><p><b> 設(shè)計(jì)思想:</b></p><p> 該系統(tǒng)采用VC++6.0開發(fā)環(huán)境作為前臺和SQLServer2008數(shù)據(jù)庫存儲數(shù)據(jù)。采用ADO開發(fā)技術(shù),
4、將數(shù)據(jù)庫與VC開發(fā)環(huán)境建立連接,操作數(shù)據(jù)庫,并返回?cái)?shù)據(jù)庫里的數(shù)據(jù)集合。同時(shí)直接對數(shù)據(jù)庫信息的修改也會在前臺顯示出來。</p><p><b> 設(shè)計(jì)表示:</b></p><p><b> 數(shù)據(jù)庫設(shè)計(jì)</b></p><p> A.打開SQLServer2008,建立Bank數(shù)據(jù)庫,打開表,設(shè)計(jì)如下9張表,各表具體結(jié)
5、構(gòu):</p><p> Customer(customer_id,customer_name,customer_tel,customer_street,customer_city);</p><p> Account(account_number,account_pswd,branch_name,balance);</p><p> Branch(branch
6、_name,branch_city,assets);</p><p> Employee(employee_id,employee_name,employee_tel,start_date,employee_pswd);</p><p> Manager(manager_id,manager_pswd,manager_name,start_date,manager_tel);</
7、p><p> Depositor(account_number,customer_id,account_type,access_date,amount);</p><p> Loan(loan_number,customer_id,branch_name,amount,loan_date);</p><p> Payment(payment_number,paym
8、ent_date,payment_amount);</p><p> Workers_for(worker_employee_id,manager_employee_id);</p><p><b> B.表詳細(xì)設(shè)計(jì):</b></p><p><b> Customer:</b></p><p&g
9、t;<b> Account:</b></p><p><b> Branch:</b></p><p><b> Employee:</b></p><p><b> Manager:</b></p><p> Depositor:</p
10、><p><b> Loan:</b></p><p><b> Payment:</b></p><p> Works_for:</p><p><b> C. E_R圖:</b></p><p><b> 系統(tǒng)功能模塊:</b
11、></p><p> 這是系統(tǒng)運(yùn)行時(shí)的主界面</p><p><b> 詳細(xì)設(shè)計(jì):</b></p><p><b> 所使用的對話框:</b></p><p> 下面列出每個(gè)對話框的界面,及相關(guān)控件ID和相關(guān)變量</p><p> IDD_ADDEMPDIAL
12、OG</p><p> IDD_ADDUSERDIALOG:</p><p> IDD_ALLACCOUNT:</p><p> IDD_ALLEMPDIALOG:</p><p> IDD_ALLLOANDIALOG:</p><p> IDD_AMOUNT:</p><p> I
13、DD_BANK_DIALOG:</p><p> IDD_BRANCHDIALOG:</p><p> IDD_CHANGEPSWD:</p><p> IDD_DELEMPDIALOG:</p><p> IDD_DELUSERDIALOG:</p><p> IDD_DETAILDIALOG:</p
14、><p> IDD_EMPLOYEE_DIALOG:</p><p> IDD_LOANDIALOG:</p><p> IDD_LOGIN_DIALOG:</p><p> IDD_MANAGER_DIALOG:</p><p> IDD_MODEMPDLG:</p><p> IDD
15、_PAYMENTDIALOG:</p><p> IDD_REGIST_DIALOG:</p><p> IDD_TAKEDIALOG:</p><p> IDD_TRANSFORDIALOG:</p><p> IDD_USERINFO:</p><p><b> 具體操作:</b>&
16、lt;/p><p><b> 設(shè)計(jì)數(shù)據(jù)庫</b></p><p> 按上述表示的數(shù)據(jù)建立數(shù)據(jù)庫</p><p> 如果要從外部導(dǎo)入別人的數(shù)據(jù)庫,需要打開SQLServer2008數(shù)據(jù)庫,找到要導(dǎo)入的數(shù)據(jù)庫,右擊—任務(wù)—分離,然后打開C盤,找到ProgramFiles/Microsoft SQLServer/MSSQL10.MSSQLSERVE
17、R/MSSQL/DATA/這個(gè)目錄,在該目錄下復(fù)制兩個(gè)文件(.mdf和.fdf)到自己電腦的這個(gè)目錄下面,再打開自己的數(shù)據(jù)庫,右擊—附加—添加,找到.mdf文件,確定,就把別人的數(shù)據(jù)庫導(dǎo)入到自己的電腦上去了。</p><p><b> 建立工程</b></p><p> 打開VC6.0,F(xiàn)ile—new—MFC AppWizard,設(shè)定目錄,在第一個(gè)選項(xiàng)卡下選擇第
18、三項(xiàng),建立一個(gè)基于對話框的程序(我建立的為Bank工程),點(diǎn)finish后就建立完成。然后按照上述的截圖添加22個(gè)對話框,每個(gè)對話框添加控件,設(shè)定相關(guān)變量,并生成與之相關(guān)的對話框類。</p><p> 打開resource選項(xiàng)卡,點(diǎn)擊Dialog,右擊—Insert dialog,修改對話框界面,右擊對話框----properities,修改每個(gè)對話框的ID和Captation(ID號如下表所示。一定要注意修改
19、,否則對話框很多會混淆)。然后添加控件,如果是密碼框,右擊屬性,在style選項(xiàng)卡下勾上password。單擊菜單欄view---calsswizard,會提示您創(chuàng)建對話框資源,輸入下表列出的相關(guān)類名,然后,選擇classwizard的member variables添加相關(guān)變量,注意修改變量類型,具體看下表相關(guān)變量。</p><p> 密碼框勾選Password。</p><p>
20、新建一個(gè)對話框,會提示創(chuàng)建一個(gè)類,點(diǎn)OK,輸入相應(yīng)類名,就建立起與對話框相關(guān)的類了。然后按照上述的截圖添加控件并添加每個(gè)控件的相關(guān)變量。</p><p> 數(shù)據(jù)庫與工程建立連接</p><p><b> ?。幔O(shè)定數(shù)據(jù)源:</b></p><p> 在控制面板下面搜索ODBC,并添加系統(tǒng)DSN。</p><p>&l
21、t;b> ?。猓⑽募?lt;/b></p><p> 找到在(2)中建立的工程的目錄,在該目錄下面建立一個(gè)文本文件,并修改文件類型,取名ADO.udl,注意修改文件后綴名!??!</p><p><b> 打開該文件,如圖</b></p><p> 輸入自己的服務(wù)器名稱,不知道服務(wù)器名稱可以打開SQLServer2008查
22、看,然后確認(rèn)自己的登錄信息,安裝數(shù)據(jù)庫的時(shí)候如果選擇的默認(rèn)安裝,點(diǎn)第一個(gè),選擇Windows?。危约砂踩O(shè)置,如果是設(shè)置了用戶名密碼,就選第二個(gè)。再在3中選擇自己要連接的數(shù)據(jù)庫名稱。測試一下如果連接成功就OK了。</p><p><b> ?。悖砑哟a:</b></p><p> 打開剛才建立的工程,找到StdAfx.h文件,并添加如下代碼:</p>
23、<p> #import"c:\Program Files\common files\system\ado\msado15.dll"\</p><p> no_namespace rename("EOF","adoEOF") 用于導(dǎo)入ADO庫</p><p><b> 建立新類:</b>&
24、lt;/p><p> 把對數(shù)據(jù)庫操作的方法封裝在一個(gè)類里面。</p><p> 點(diǎn)擊菜單欄—insert—new class,選擇第二個(gè),并輸入類名ADOConn,就添加了一個(gè)新類。</p><p> 找到該類,在頭文件(CADOConn.h)中添加如下代碼:</p><p> class CADOConn </p>&l
25、t;p><b> {</b></p><p><b> //添加成員變量</b></p><p><b> public:</b></p><p> _RecordsetPtr m_pRecordset;//記錄集指針</p><p> _ConnectionP
26、tr m_pConnection;//數(shù)據(jù)庫連接指針</p><p><b> public:</b></p><p> CADOConn();</p><p> virtual ~CADOConn();</p><p> void OnInitADOConn();//連接數(shù)據(jù)源</p><p
27、> _RecordsetPtr& GetRecordset(_bstr_t bstrSQL);//獲取打開的記錄集指針</p><p> BOOL ExecuteSQL(_bstr_t bstrSQL);//執(zhí)行sql語句</p><p> void ExitConnect();//斷開連接</p><p><b> };</b
28、></p><p> 然后再源文件(ADOConn.cpp)中添加如下代碼:</p><p> void CADOConn::OnInitADOConn()</p><p><b> {</b></p><p> ::CoInitialize(NULL);//初始化com環(huán)境</p><
29、p><b> try</b></p><p><b> {</b></p><p> m_pConnection.CreateInstance("ADODB.Connection");</p><p> _bstr_t strConnect;</p><p> s
30、trConnect="File Name=ADO.udl";</p><p> m_pConnection->Open(strConnect,"","",adModeUnknown);</p><p><b> }</b></p><p> catch(_com_error
31、 e)</p><p><b> {</b></p><p> AfxMessageBox("打開數(shù)據(jù)庫失敗");</p><p> AfxMessageBox(e.ErrorMessage());</p><p><b> }</b></p><p&
32、gt;<b> }</b></p><p> void CADOConn::ExitConnect()</p><p><b> {</b></p><p> if(m_pRecordset!=NULL)//關(guān)閉記錄集和斷開數(shù)據(jù)源</p><p> m_pRecordset->Clo
33、se();</p><p> m_pConnection->Close();</p><p> ::CoUninitialize();//釋放com環(huán)境</p><p><b> }</b></p><p> _RecordsetPtr& CADOConn::GetRecordset(_bstr_t
34、 bstrSQL)</p><p><b> {</b></p><p> //打開記錄集,返回記錄指針</p><p><b> try</b></p><p><b> {</b></p><p> if(m_pConnection==NU
35、LL)</p><p> OnInitADOConn();</p><p> m_pRecordset.CreateInstance(__uuidof(Recordset));</p><p> m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),</p><p>
36、 adOpenDynamic,adLockOptimistic,adCmdText);</p><p><b> }</b></p><p> catch(_com_error e)</p><p><b> {</b></p><p> AfxMessageBox("打開記錄集
37、失敗");</p><p> AfxMessageBox(e.ErrorMessage());</p><p><b> }</b></p><p> return m_pRecordset;</p><p><b> }</b></p><p> BOO
38、L CADOConn::ExecuteSQL(_bstr_t bstrSQL)</p><p><b> {</b></p><p><b> try</b></p><p><b> {</b></p><p> if(m_pConnection==NULL)<
39、/p><p> OnInitADOConn();</p><p> m_pConnection->Execute(bstrSQL,NULL,adCmdText);</p><p> return true;</p><p><b> }</b></p><p> catch(_com_
40、error e)</p><p><b> {</b></p><p> CString str;</p><p> str.Format("不能打開記錄集!%s",e.ErrorMessage());</p><p> AfxMessageBox(str);</p><p
41、> return false;</p><p><b> }</b></p><p><b> }</b></p><p> 用該工程操作數(shù)據(jù)庫主要代碼:</p><p><b> a.添加全局變量</b></p><p> 在Bank
42、.cpp文件下CBankApp theApp后面接著添加全局變量,如下圖: </p><p> 并將InitInstance函數(shù)中#endif后面的函數(shù)全部注釋起來(除了return語句),然后添加一句代碼:dlgLogin.DoModal();</p><p> ?。ㄗⅲ喝绻砑恿四硞€(gè)全局變量,編譯器報(bào)錯(cuò),則需要在該文件的最前面再次申明已經(jīng)定義的變量,在前面添加extern,如下:)&
43、lt;/p><p> b.加載背景圖片:(所有加載背景圖片的對話框均按此方法)</p><p> 選擇要操作的對話框類,右擊選擇Add Windows Message Handle,選擇WM_PAINT,添加消息。注釋掉該函數(shù)的else條件下面的CDialog::OnPaint();并添加如下代碼:</p><p><b> C.操作數(shù)據(jù)</b&g
44、t;</p><p> 所有的操作數(shù)據(jù)庫都用到前面添加的CADOConn這個(gè)類,方法大同小異,現(xiàn)取出一個(gè)作為例子:</p><p> 為控件添加消息響應(yīng)的代碼是,如果要操作數(shù)據(jù)庫,如下代碼是必需的。</p><p> CADOConn m_ADOConn; //申明操作數(shù)據(jù)庫的對象</p><p> m_ADOConn.OnIni
45、tADOConn(); //打開數(shù)據(jù)庫連接</p><p> _RecordsetPtr m_pRecordset;//定義記錄集指針</p><p> _variant_t theValue; //定義變量保存相關(guān)屬性值</p><p> _bstr_t vSQL=”select * from customer”;//定義SQL查詢語句</p>
46、<p> m_pRecordset=m_ADOConn.GetRecordset(vSQL);//獲取數(shù)據(jù)</p><p> theValue=m_pRecordset->GetCollect("employee_pswd");</p><p> //取得該屬性的數(shù)據(jù)值</p><p> if(theValue.vt!
47、=VT_NULL)</p><p> strPswd=(char *)_bstr_t(theValue);</p><p> //將該屬性值轉(zhuǎn)換為具體的數(shù)據(jù)類型</p><p> _bstr_t vSQL=”update,delete……”;//定義SQL更新語句</p><p> m_ADOConn.ExecuteSQL(vSQL)
48、;//執(zhí)行更新語句</p><p> m_ADOConn.ExitConnect();//關(guān)閉連接</p><p> 出現(xiàn)的問題及注意事項(xiàng):</p><p> 使用到別的文件的類,注意添加頭文件。</p><p> 每次要獲取控件的值,要添加UpdateData()函數(shù),并且要判斷控件的值是否為空,涉及金錢的還要判斷輸入的是否為負(fù)數(shù),
49、否則修改數(shù)據(jù)庫中不為空的值會出錯(cuò)。</p><p> 插入float型的值和插入字符型的值不同,需要將取出的字符用atof(str)函數(shù)轉(zhuǎn)換為float型,將這個(gè)float型操作之后的結(jié)構(gòu)還要用Format函數(shù)轉(zhuǎn)換回字符才能插入數(shù)據(jù)庫。</p><p><b> 如:</b></p><p> double balance;//定義dou
50、ble型數(shù)據(jù)</p><p> theValue=m_pRecordset->GetCollect("balance");</p><p> if(theValue.vt!=VT_NULL)//獲取數(shù)據(jù)庫中的double數(shù)據(jù)</p><p> strBalance=(char *)_bstr_t(theValue);</p>
51、;<p> balance=atof(strBalance);//得到的是字符,轉(zhuǎn)換為double</p><p> balance-=m_Amount;//操作數(shù)據(jù)</p><p> //要將數(shù)據(jù)再返回?cái)?shù)據(jù)庫,要格式化為字符</p><p> CString strA;</p><p> strA.Format(&q
52、uot;%f",balance);</p><p> 插入數(shù)據(jù),需要先插入主鍵表,再插入外鍵表,否則由于外鍵約束而無法操作,所有凡是涉及到外鍵的插入都要先執(zhí)行主鍵表的檢查。同理,要?jiǎng)h除數(shù)據(jù),需要先操作外鍵表,再操作主鍵表。</p><p> 用到的涉及時(shí)間的函數(shù),調(diào)用系統(tǒng)函數(shù)varchar,getdate(),120)。</p><p> 每次獲取數(shù)
53、據(jù)要先判斷是否為空,否則直接去結(jié)果集中某個(gè)屬性值可能因?yàn)椴淮嬖趶?qiáng)制獲取而出現(xiàn)bug。</p><p> 測試數(shù)據(jù)及測試結(jié)果:</p><p><b> 新用戶注冊:</b></p><p> 數(shù)據(jù)庫里添加到的信息:</p><p> 經(jīng)理登錄并添加雇員信息:</p><p> 數(shù)據(jù)庫里添
54、加的記錄:</p><p><b> 查看所有雇員信息:</b></p><p> 修改和刪除雇員信息比較簡單,在此不截圖了。</p><p> 雇員登錄并管理銀行信息:</p><p> 添加后的數(shù)據(jù)庫信息:</p><p> 添加,查找銀行信息的功能省略截圖。</p>
55、<p> 雇員登錄并為新注冊的客戶開戶:</p><p> 雇員分配賬號,客戶輸入密碼和初始存款額。由于經(jīng)理有最高權(quán)限,所以經(jīng)理也可以作為雇員登錄,執(zhí)行雇員的操作</p><p> 添加后的數(shù)據(jù)庫信息:</p><p> 雇員登錄并為新注冊的客戶受理貸款:</p><p> 新注冊成功的客戶登陸:</p>&
56、lt;p> Depositor表中添加的記錄:</p><p><b> 修改密碼:</b></p><p><b> 四.總結(jié):</b></p><p> 首先,通過一個(gè)學(xué)期的數(shù)據(jù)庫課程的學(xué)習(xí),在掌握了基本的數(shù)據(jù)庫原理之后,這次的課程設(shè)計(jì)不僅鞏固了基礎(chǔ)知識,同時(shí)鍛煉了我的動手能力。特別是對于VC++編程,S
57、QLServer數(shù)據(jù)庫操作的基本知識有了更深的了解。</p><p> 其次,連接數(shù)據(jù)庫是件很頭疼的事情,真的是很考驗(yàn)?zāi)托模踔磷詈笾荒苤匮b系統(tǒng),然后重新安裝數(shù)據(jù)庫。連接數(shù)據(jù)庫的時(shí)候,直接輸入主機(jī)名,數(shù)據(jù)庫名,用戶名和密碼連接,還要添加一句Integrated security=SSPI,這個(gè)加上才連上數(shù)據(jù)庫。后來又在網(wǎng)上找的一個(gè)簡單的方法是在根目錄下建立一個(gè).udl文件,直接設(shè)置連接,再加上文件目錄和文件名。
58、</p><p> 數(shù)據(jù)庫中表的結(jié)構(gòu)在課程設(shè)計(jì)的過程中由于之前考慮不足也修改了部分屬性,像交易記錄等信息還要添加時(shí)間作為主鍵,否則重復(fù)賬號無法添加記錄。然后是更新數(shù)據(jù)庫中的貨幣,要轉(zhuǎn)換成字符,才能插入,而取出數(shù)據(jù)時(shí)也要轉(zhuǎn)換為浮點(diǎn)型。</p><p> 為按鈕添加圖片,以及為對話框添加背景都是參考網(wǎng)上的代碼,把此次課程設(shè)計(jì)的界面弄得看著比較舒服了點(diǎn)。</p><p&g
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫課程設(shè)計(jì)--銀行管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)--銀行管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告銀行管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告--銀行管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告-銀行管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)--銀行儲蓄管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)--數(shù)據(jù)庫設(shè)計(jì)—公司管理系統(tǒng)
- 數(shù)據(jù)庫系統(tǒng)原理課程設(shè)計(jì)--銀行儲蓄系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)---機(jī)房管理系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)--個(gè)人銀行賬戶管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)---圖書管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)--工資管理系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)-酒店管理系統(tǒng)課程設(shè)計(jì)
- 數(shù)據(jù)庫原理課程設(shè)計(jì)---教室管理系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)--bbs系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)論文---汽車銷售管理系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)--超市會員管理系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)
- 數(shù)據(jù)庫原理課程設(shè)計(jì)---圖書管理系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)-學(xué)生管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)-薪資管理系統(tǒng)
評論
0/150
提交評論