2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論