版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 數(shù)據(jù)庫課程設計報告</b></p><p><b> 需求分析:</b></p><p> 設計銀行管理系統(tǒng):該系統(tǒng)有三種用戶登錄類型,分別為:普通客戶,銀行雇員,經理。各類用戶各自的權限也不一樣,具體操作的結果會體現(xiàn)在對數(shù)據(jù)庫信息的修改。</p><p> 普通客戶:根據(jù)自己的賬號,密
2、碼登錄進入界面,可以完成以下業(yè)務:</p><p> 存款,取款,轉賬,查詢余額,修改密碼,交易明細,該賬戶信息</p><p> 銀行雇員:輸入雇員ID和密碼登錄進入,可完成以下業(yè)務:開戶,銷戶,查看所有賬戶,查看所有貸款信息,管理銀行信息,為客戶受理貸款,辦理客戶還款業(yè)務。</p><p> 經理:經理是特殊的雇員,可以作為普通雇員管理客戶,也可以管理其他
3、雇員信息。輸入用戶名密碼登陸后可完成以下功能:添加雇員信息,刪除雇員信息,修改雇員信息,查看所有雇員信息。</p><p><b> 設計 </b></p><p><b> 設計思想:</b></p><p> 該系統(tǒng)采用VC++6.0開發(fā)環(huán)境作為前臺和SQLServer2008數(shù)據(jù)庫存儲數(shù)據(jù)。采用ADO開發(fā)技術,
4、將數(shù)據(jù)庫與VC開發(fā)環(huán)境建立連接,操作數(shù)據(jù)庫,并返回數(shù)據(jù)庫里的數(shù)據(jù)集合。同時直接對數(shù)據(jù)庫信息的修改也會在前臺顯示出來。</p><p><b> 設計表示:</b></p><p><b> 數(shù)據(jù)庫設計</b></p><p> A.打開SQLServer2008,建立Bank數(shù)據(jù)庫,打開表,設計如下9張表,各表具體結
5、構:</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.表詳細設計:</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)運行時的主界面</p><p><b> 詳細設計:</b></p><p><b> 所使用的對話框:</b></p><p> 下面列出每個對話框的界面,及相關控件ID和相關變量</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ù)庫</b></p><p> 按上述表示的數(shù)據(jù)建立數(shù)據(jù)庫</p><p> 如果要從外部導入別人的數(shù)據(jù)庫,需要打開SQLServer2008數(shù)據(jù)庫,找到要導入的數(shù)據(jù)庫,右擊—任務—分離,然后打開C盤,找到ProgramFiles/Microsoft SQLServer/MSSQL10.MSSQLSERVE
17、R/MSSQL/DATA/這個目錄,在該目錄下復制兩個文件(.mdf和.fdf)到自己電腦的這個目錄下面,再打開自己的數(shù)據(jù)庫,右擊—附加—添加,找到.mdf文件,確定,就把別人的數(shù)據(jù)庫導入到自己的電腦上去了。</p><p><b> 建立工程</b></p><p> 打開VC6.0,F(xiàn)ile—new—MFC AppWizard,設定目錄,在第一個選項卡下選擇第
18、三項,建立一個基于對話框的程序(我建立的為Bank工程),點finish后就建立完成。然后按照上述的截圖添加22個對話框,每個對話框添加控件,設定相關變量,并生成與之相關的對話框類。</p><p> 打開resource選項卡,點擊Dialog,右擊—Insert dialog,修改對話框界面,右擊對話框----properities,修改每個對話框的ID和Captation(ID號如下表所示。一定要注意修改
19、,否則對話框很多會混淆)。然后添加控件,如果是密碼框,右擊屬性,在style選項卡下勾上password。單擊菜單欄view---calsswizard,會提示您創(chuàng)建對話框資源,輸入下表列出的相關類名,然后,選擇classwizard的member variables添加相關變量,注意修改變量類型,具體看下表相關變量。</p><p> 密碼框勾選Password。</p><p>
20、新建一個對話框,會提示創(chuàng)建一個類,點OK,輸入相應類名,就建立起與對話框相關的類了。然后按照上述的截圖添加控件并添加每個控件的相關變量。</p><p> 數(shù)據(jù)庫與工程建立連接</p><p><b> ?。幔O定數(shù)據(jù)源:</b></p><p> 在控制面板下面搜索ODBC,并添加系統(tǒng)DSN。</p><p>&l
21、t;b> b.建立文件:</b></p><p> 找到在(2)中建立的工程的目錄,在該目錄下面建立一個文本文件,并修改文件類型,取名ADO.udl,注意修改文件后綴名?。?!</p><p><b> 打開該文件,如圖</b></p><p> 輸入自己的服務器名稱,不知道服務器名稱可以打開SQLServer2008查
22、看,然后確認自己的登錄信息,安裝數(shù)據(jù)庫的時候如果選擇的默認安裝,點第一個,選擇Windows NT集成安全設置,如果是設置了用戶名密碼,就選第二個。再在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") 用于導入ADO庫</p><p><b> 建立新類:</b>&
24、lt;/p><p> 把對數(shù)據(jù)庫操作的方法封裝在一個類里面。</p><p> 點擊菜單欄—insert—new class,選擇第二個,并輸入類名ADOConn,就添加了一個新類。</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)//關閉記錄集和斷開數(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> ?。ㄗⅲ喝绻砑恿四硞€全局變量,編譯器報錯,則需要在該文件的最前面再次申明已經定義的變量,在前面添加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這個類,方法大同小異,現(xiàn)取出一個作為例子:</p><p> 為控件添加消息響應的代碼是,如果要操作數(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; //定義變量保存相關屬性值</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> //將該屬性值轉換為具體的數(shù)據(jù)類型</p><p> _bstr_t vSQL=”update,delete……”;//定義SQL更新語句</p><p> m_ADOConn.ExecuteSQL(vSQL)
48、;//執(zhí)行更新語句</p><p> m_ADOConn.ExitConnect();//關閉連接</p><p> 出現(xiàn)的問題及注意事項:</p><p> 使用到別的文件的類,注意添加頭文件。</p><p> 每次要獲取控件的值,要添加UpdateData()函數(shù),并且要判斷控件的值是否為空,涉及金錢的還要判斷輸入的是否為負數(shù),
49、否則修改數(shù)據(jù)庫中不為空的值會出錯。</p><p> 插入float型的值和插入字符型的值不同,需要將取出的字符用atof(str)函數(shù)轉換為float型,將這個float型操作之后的結構還要用Format函數(shù)轉換回字符才能插入數(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);//得到的是字符,轉換為double</p><p> balance-=m_Amount;//操作數(shù)據(jù)</p><p> //要將數(shù)據(jù)再返回數(shù)據(jù)庫,要格式化為字符</p><p> CString strA;</p><p> strA.Format(&q
52、uot;%f",balance);</p><p> 插入數(shù)據(jù),需要先插入主鍵表,再插入外鍵表,否則由于外鍵約束而無法操作,所有凡是涉及到外鍵的插入都要先執(zhí)行主鍵表的檢查。同理,要刪除數(shù)據(jù),需要先操作外鍵表,再操作主鍵表。</p><p> 用到的涉及時間的函數(shù),調用系統(tǒng)函數(shù)varchar,getdate(),120)。</p><p> 每次獲取數(shù)
53、據(jù)要先判斷是否為空,否則直接去結果集中某個屬性值可能因為不存在強制獲取而出現(xiàn)bug。</p><p> 測試數(shù)據(jù)及測試結果:</p><p><b> 新用戶注冊:</b></p><p> 數(shù)據(jù)庫里添加到的信息:</p><p> 經理登錄并添加雇員信息:</p><p> 數(shù)據(jù)庫里添
54、加的記錄:</p><p><b> 查看所有雇員信息:</b></p><p> 修改和刪除雇員信息比較簡單,在此不截圖了。</p><p> 雇員登錄并管理銀行信息:</p><p> 添加后的數(shù)據(jù)庫信息:</p><p> 添加,查找銀行信息的功能省略截圖。</p>
55、<p> 雇員登錄并為新注冊的客戶開戶:</p><p> 雇員分配賬號,客戶輸入密碼和初始存款額。由于經理有最高權限,所以經理也可以作為雇員登錄,執(zhí)行雇員的操作</p><p> 添加后的數(shù)據(jù)庫信息:</p><p> 雇員登錄并為新注冊的客戶受理貸款:</p><p> 新注冊成功的客戶登陸:</p>&
56、lt;p> Depositor表中添加的記錄:</p><p><b> 修改密碼:</b></p><p><b> 四.總結:</b></p><p> 首先,通過一個學期的數(shù)據(jù)庫課程的學習,在掌握了基本的數(shù)據(jù)庫原理之后,這次的課程設計不僅鞏固了基礎知識,同時鍛煉了我的動手能力。特別是對于VC++編程,S
57、QLServer數(shù)據(jù)庫操作的基本知識有了更深的了解。</p><p> 其次,連接數(shù)據(jù)庫是件很頭疼的事情,真的是很考驗耐心,甚至最后只能重裝系統(tǒng),然后重新安裝數(shù)據(jù)庫。連接數(shù)據(jù)庫的時候,直接輸入主機名,數(shù)據(jù)庫名,用戶名和密碼連接,還要添加一句Integrated security=SSPI,這個加上才連上數(shù)據(jù)庫。后來又在網(wǎng)上找的一個簡單的方法是在根目錄下建立一個.udl文件,直接設置連接,再加上文件目錄和文件名。
58、</p><p> 數(shù)據(jù)庫中表的結構在課程設計的過程中由于之前考慮不足也修改了部分屬性,像交易記錄等信息還要添加時間作為主鍵,否則重復賬號無法添加記錄。然后是更新數(shù)據(jù)庫中的貨幣,要轉換成字符,才能插入,而取出數(shù)據(jù)時也要轉換為浮點型。</p><p> 為按鈕添加圖片,以及為對話框添加背景都是參考網(wǎng)上的代碼,把此次課程設計的界面弄得看著比較舒服了點。</p><p&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫課程設計--銀行管理系統(tǒng)
- 數(shù)據(jù)庫課程設計--銀行管理系統(tǒng)
- 數(shù)據(jù)庫課程設計報告銀行管理系統(tǒng)
- 數(shù)據(jù)庫課程設計報告--銀行管理系統(tǒng)
- 數(shù)據(jù)庫課程設計報告-銀行管理系統(tǒng)
- 數(shù)據(jù)庫課程設計--銀行儲蓄管理系統(tǒng)
- 數(shù)據(jù)庫課程設計--數(shù)據(jù)庫設計—公司管理系統(tǒng)
- 數(shù)據(jù)庫系統(tǒng)原理課程設計--銀行儲蓄系統(tǒng)數(shù)據(jù)庫設計
- 數(shù)據(jù)庫課程設計---機房管理系統(tǒng)數(shù)據(jù)庫設計
- 數(shù)據(jù)庫課程設計--個人銀行賬戶管理系統(tǒng)
- 數(shù)據(jù)庫課程設計---圖書管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)
- 數(shù)據(jù)庫課程設計--工資管理系統(tǒng)數(shù)據(jù)庫設計
- 數(shù)據(jù)庫課程設計-酒店管理系統(tǒng)課程設計
- 數(shù)據(jù)庫原理課程設計---教室管理系統(tǒng)數(shù)據(jù)庫設計
- 數(shù)據(jù)庫課程設計--bbs系統(tǒng)數(shù)據(jù)庫設計
- 數(shù)據(jù)庫課程設計論文---汽車銷售管理系統(tǒng)數(shù)據(jù)庫設計
- 數(shù)據(jù)庫課程設計--超市會員管理系統(tǒng)的數(shù)據(jù)庫設計
- 數(shù)據(jù)庫原理課程設計---圖書管理系統(tǒng)數(shù)據(jù)庫設計
- 數(shù)據(jù)庫課程設計-學生管理系統(tǒng)
- 數(shù)據(jù)庫課程設計-薪資管理系統(tǒng)
評論
0/150
提交評論