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

下載本文檔

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

文檔簡介

1、<p><b>  數(shù)學(xué)與計算機學(xué)院</b></p><p><b>  課程設(shè)計說明書</b></p><p>  課 程 名 稱: 數(shù)據(jù)庫-課程設(shè)計 </p><p>  課 程 代 碼: </p><p>  題 目

2、: 網(wǎng)上圖書銷售系統(tǒng)-實現(xiàn)前臺 </p><p><b>  年級/專業(yè)/班:</b></p><p>  學(xué) 生 姓 名: </p><p>  學(xué)   號: </p><p>  開 始 時 間: 2013

3、年 6 月 9 日</p><p>  完 成 時 間: 2013 年 6 月 21 日</p><p><b>  課程設(shè)計成績:</b></p><p>  指導(dǎo)教師簽名: 年 月 日</p><p><b>  目 錄</b

4、></p><p><b>  摘 要2</b></p><p><b>  1 引言1</b></p><p><b>  2 需求分析2</b></p><p>  2.1 國內(nèi)外研究的現(xiàn)狀2</p><p>  2.2 功能需求

5、2</p><p>  2.3 數(shù)據(jù)描述4</p><p>  2.4 數(shù)據(jù)庫描述5</p><p><b>  3 概要設(shè)計6</b></p><p>  3.1 系統(tǒng)運行環(huán)境6</p><p>  3.2 系統(tǒng)功能模塊設(shè)計6</p><p>  3.3 系統(tǒng)處

6、理流程7</p><p>  3.4 接口設(shè)計7</p><p><b>  4 詳細設(shè)計9</b></p><p>  4.1 登錄模塊及主界面9</p><p>  4.2 圖書錄入模塊11</p><p>  4.3 圖書銷售模塊16</p><p>  

7、4.4 銷售統(tǒng)計模塊21</p><p>  4.5 查詢庫存模塊24</p><p><b>  5 系統(tǒng)測試27</b></p><p><b>  6 操作手冊32</b></p><p><b>  7 結(jié)論33</b></p><p>

8、;  7.1 系統(tǒng)功能33</p><p>  7.2 系統(tǒng)不足和改進33</p><p><b>  7.3 總結(jié)33</b></p><p><b>  致 謝34</b></p><p><b>  參考文獻35</b></p><p>

9、;<b>  摘 要</b></p><p>  隨著計算機的普及書店規(guī)模的不斷擴大,使圖書銷售管理成為書店管理中的一個重要課題。通過圖書銷售管理系統(tǒng)可以解決書店管理中遇到的各種問題。本系統(tǒng)分析了市場需求和實際需要,利用VC++連接SQL數(shù)據(jù)庫的方式,主要實現(xiàn)了書店的網(wǎng)上圖書銷售管理,該系統(tǒng)具有處理圖書錄入、圖書銷售、銷售統(tǒng)計、查詢庫存等功能。</p><p> 

10、 關(guān)鍵詞:圖書;銷售;庫存</p><p><b>  1 引言 </b></p><p>  傳統(tǒng)的圖書銷售管理方法,都是通過人工統(tǒng)計和計算的管理方式進行的。這樣的管理方法不但費時費力,也容易產(chǎn)生計算上的錯誤和疏漏;計算機技術(shù)的全面普及,打破了書店管理的傳統(tǒng)管理方法,提高了管理效率的同時,克服了傳統(tǒng)管理方法中易產(chǎn)生的問題,使管理員能夠有序的、全面的對圖書銷售和庫存進

11、行管理。</p><p>  網(wǎng)上圖書銷售系統(tǒng)可以完成書店的日常管理,如圖書錄入、圖書銷售、銷售統(tǒng)計、查詢庫存等功能,迅速準(zhǔn)確地對已售圖書和剩余庫存進行統(tǒng)計和匯總工作,大大提高了書店的管理效率和準(zhǔn)確性。</p><p><b>  2 需求分析</b></p><p>  2.1 國內(nèi)外研究的現(xiàn)狀</p><p>  在

12、現(xiàn)代化的書店中,對圖書銷售工作運用現(xiàn)代化技術(shù)進行管理,是提高工作效率的有效手段。圖書銷售管理是書店日常工作中非常重要的一個方面,越來越受到書店經(jīng)營者的重視。通過計算機管理系統(tǒng)對圖書銷售進行全面的統(tǒng)計與管理,全面解決了書店經(jīng)營過程中所遇到的各種問題,并且克服了傳統(tǒng)管理方式中的易出錯等問題。圖書銷售管理系統(tǒng)成為書店管理的首選管理工具。</p><p><b>  2.2 功能需求</b><

13、/p><p>  2.2.1待開發(fā)軟件的功能需求</p><p>  本系統(tǒng)是根據(jù)書店的實際需求而開發(fā)的,要求穩(wěn)定、可靠的實現(xiàn)圖書銷售的自動化管理,通過本系統(tǒng)可以達到以下目標(biāo):</p><p>  圖書錄入,包括圖書的基本信息,如分類、進價、售價、作者等。</p><p>  圖書銷售,包括圖書的售價、折扣、銷售日期,并實現(xiàn)對庫存量的修改。<

14、;/p><p>  銷售統(tǒng)計,包括按圖書類型、書名、作者、出版社等進行統(tǒng)計。</p><p>  查詢庫存,對指定的某本圖書剩余庫存量進行查詢。</p><p>  售完圖書查詢,對已售完圖書進行查詢。</p><p>  2.2.2待開發(fā)軟件的功能</p><p>  按照用戶需求,要滿足以上功能,我設(shè)計出了圖書銷售管理

15、系統(tǒng)的系統(tǒng)功能圖,如圖2.1所示。</p><p>  圖2.1 圖書銷售管理系統(tǒng)的系統(tǒng)功能圖</p><p>  綜合系統(tǒng)要求,對圖2.1所示的系統(tǒng)功能解釋如下:</p><p>  圖書錄入,包括圖書的基本信息,如分類、進價、售價、作者等。</p><p>  圖書銷售,包括圖書的售價、折扣、銷售日期,并實現(xiàn)對庫存量的修改。</p&

16、gt;<p>  銷售統(tǒng)計,包括按圖書類型、書名、作者、出版社等進行統(tǒng)計。</p><p>  查詢庫存,對指定的某本圖書剩余庫存量進行查詢。</p><p>  售完圖書查詢,對已售完圖書進行查詢。</p><p>  通過以上分析,可以得到倉庫管理系統(tǒng)的數(shù)據(jù)流圖,如圖2.2所示。</p><p>  圖2.2 圖書管理系統(tǒng)的

17、數(shù)據(jù)流圖</p><p><b>  2.3 數(shù)據(jù)描述</b></p><p>  2.3.1數(shù)據(jù)庫概要說明</p><p>  數(shù)據(jù)庫中包括管理員信息表、圖書基本信息表、圖書類型表、圖書銷售記錄表等4個數(shù)據(jù)表。</p><p>  圖2.3所示的即為本系統(tǒng)中數(shù)據(jù)庫中的數(shù)據(jù)表結(jié)構(gòu)圖,該數(shù)據(jù)表結(jié)構(gòu)圖包含系統(tǒng)所有數(shù)據(jù)表??梢?/p>

18、清晰地反應(yīng)數(shù)據(jù)庫信息。</p><p>  圖2.3 數(shù)據(jù)表結(jié)構(gòu)圖</p><p>  2.3.2主要數(shù)據(jù)表的結(jié)構(gòu)</p><p>  表2.1 Pwd(管理員信息表)</p><p>  表2.2 BookInfo(圖書基本信息表)</p><p>  表2.3 BookCategory(圖書類型表)</p&g

19、t;<p>  表2.4 BookSale(圖書銷售記錄表)</p><p><b>  2.4 數(shù)據(jù)庫描述</b></p><p>  本軟件采用SQL數(shù)據(jù)庫。</p><p><b>  3 概要設(shè)計</b></p><p>  本系統(tǒng)是根據(jù)書店的實際需求而開發(fā)的,完全能夠幫助書店

20、實現(xiàn)高效、準(zhǔn)確的圖書銷售自動化管理。在分析階段,我們已經(jīng)提出了系統(tǒng)的結(jié)構(gòu)和數(shù)據(jù)字典。本節(jié)我們將對系統(tǒng)的使用環(huán)境作簡要介紹,并對該系統(tǒng)作概要設(shè)計。</p><p>  3.1 系統(tǒng)運行環(huán)境</p><p><b>  P4機</b></p><p>  Windows操作系統(tǒng)</p><p>  Visual C++6.0

21、</p><p>  3.2 系統(tǒng)功能模塊設(shè)計</p><p>  在前面系統(tǒng)功能分析的基礎(chǔ)上,結(jié)合Visual C++程序編制的特點,得到如圖3.1所示的系統(tǒng)功能模塊圖。</p><p>  圖3.1圖書銷售管理系統(tǒng)功能模塊圖</p><p>  各模塊功能分配如下:</p><p> ?。?)用戶登陸功能:管理員登

22、陸模塊(M1)。</p><p> ?。?)圖書錄入功能:圖書錄入模塊(M2)。</p><p> ?。?)圖書銷售功能:圖書銷售模塊(M3)。</p><p> ?。?)銷售統(tǒng)計功能:銷售統(tǒng)計模塊(M4)。</p><p> ?。?)查詢圖書庫存功能:查詢庫存模塊(M5)。</p><p> ?。?)售完圖書查詢功能

23、:售完圖書查詢模塊(M6)。</p><p>  3.3 系統(tǒng)處理流程</p><p> ?。?)系統(tǒng)啟動,進入身份驗證。</p><p>  (2)初始化系統(tǒng),導(dǎo)入數(shù)據(jù)庫。</p><p>  (3)錄入圖書信息。</p><p><b> ?。?)圖書銷售。</b></p>&l

24、t;p> ?。?)統(tǒng)計圖書銷售信息。</p><p>  (6)查詢圖書庫存信息。</p><p>  (7)查詢已售完圖書信息。</p><p><b> ?。?)退出系統(tǒng)。</b></p><p><b>  3.4 接口設(shè)計</b></p><p>  3.4.1

25、 外部接口</p><p><b>  (1) 用戶界面</b></p><p>  采用圖形用戶界面,包含菜單、按鈕、對話框等元素。</p><p><b>  (2) 軟件接口</b></p><p>  軟件運行于Visual C++6.0平臺上。</p><p>&l

26、t;b>  (3) 硬件接口</b></p><p><b>  運行于PC機上。</b></p><p>  3.4.2 內(nèi)部接口</p><p> ?。?)用戶登陸模塊(M1):由相應(yīng)事件驅(qū)動消息激活,完成用戶登陸功能,之后進入消息循環(huán)狀態(tài)。</p><p> ?。?)圖書銷售模塊(M3):由相應(yīng)事

27、件驅(qū)動消息激活,完成圖書銷售功能,之后進入消息循環(huán)狀態(tài)。</p><p> ?。?)銷售統(tǒng)計模塊(M4):由相應(yīng)事件驅(qū)動消息激活,完成銷售統(tǒng)計功能,之后進入消息循環(huán)狀態(tài)。</p><p>  (4)查詢庫存模塊(M5):由相應(yīng)事件驅(qū)動消息激活,完成查詢庫存功能,之后進入消息循環(huán)狀態(tài)。</p><p>  (5)售完圖書查詢模塊(M6):由相應(yīng)事件驅(qū)動消息激活,完成售

28、完圖書查詢功能,之后進入消息循環(huán)狀態(tài)。</p><p><b>  4 詳細設(shè)計</b></p><p>  該系統(tǒng)采用VC++6.0中的MFC連接SQL數(shù)據(jù)庫的方式,使用圖形用戶界面,主要實現(xiàn)圖書錄入、圖書銷售等功能。下面具體對各模塊進行介紹。</p><p>  4.1 登錄模塊及主界面</p><p>  在登錄界

29、面(如圖4.1所示)中輸入用戶名和密碼,登錄成功后進入主界面。登陸框流程圖如圖4.2所示,系統(tǒng)主界面如圖4.3所示,單擊某個按鈕就能彈出某個功能的界面。</p><p>  圖4.1 系統(tǒng)登錄界面</p><p>  圖4.2登錄模塊流程圖</p><p>  圖4.3 系統(tǒng)主界面</p><p>  4.2 圖書錄入模塊</p>

30、<p>  4.2.1 實現(xiàn)目標(biāo)</p><p>  添加圖書信息,圖書錄入對話框的設(shè)計如圖4.4所示?!氨4妗卑粹o對應(yīng)的方法為RAddBookDlg::OnSave(),流程圖如圖4.5所示。</p><p>  圖4.4 圖書錄入對話框</p><p>  圖4.5 RAddBookDlg::OnSave()方法的流程圖</p>&l

31、t;p>  4.2.2 設(shè)計步驟</p><p>  (1)向項目中添加一個新Dialog資源,資源ID為IDD_ADDBOOK。在IDD_YGTJK對話框資源中單擊鼠標(biāo)右鍵,執(zhí)行彈出快捷菜單的“Properties”菜單命令,打開“Dialog Properties”對話框。在“Dialog Properties”對話框中選擇General選項卡,更改其“Caption”文本框內(nèi)容為“圖書信息錄入”。&l

32、t;/p><p> ?。?)從Controls面板上向Dialog資源中添加所需控件,更改資源的屬性,并為資源設(shè)置相對應(yīng)的變量,如表4.1所示。</p><p>  表4.1 圖書錄入Dialog資源屬性設(shè)置</p><p>  4.2.3 代碼分析</p><p> ?。?)打開ClassWizard窗口,添加在OnInitDialog成員函數(shù)

33、,向OnInitDialog添加代碼如下:</p><p>  BOOL RAddBookDlg::OnInitDialog() </p><p><b>  {</b></p><p>  CDialog::OnInitDialog();</p><p>  // TODO: Add extra initializa

34、tion here</p><p>  GetBookGategory();</p><p>  return TRUE; // return TRUE unless you set the focus to a control</p><p>  // EXCEPTION: OCX Property Pages should return FALSE</p

35、><p><b>  }</b></p><p> ?。?)當(dāng)用戶單擊“保存“按鈕時,實現(xiàn)添加圖書功能,其響應(yīng)代碼如下:</p><p>  void RAddBookDlg::OnSave() </p><p><b>  {</b></p><p>  // TODO: Ad

36、d your control notification handler code here</p><p>  UpdateData(TRUE);</p><p>  if(!IsValidInput())</p><p><b>  return ;</b></p><p>  if(IDYES != AfxMessa

37、geBox("確定要保存嗎?",MB_YESNO)) //放棄保存</p><p><b>  return ;</b></p><p>  if(SaveData())</p><p><b>  {</b></p><p>  AfxMessageBox("保存成功

38、!");</p><p><b>  //保存后重置數(shù)據(jù)</b></p><p>  m_bHasNewBook = true;</p><p>  OnReset();</p><p>  GetDlgItem(IDC_BK_CATEGORY)->SetFocus();</p><p

39、><b>  }</b></p><p><b>  else</b></p><p>  AfxMessageBox("保存失敗!");</p><p><b>  }</b></p><p> ?。?)判斷輸入信息是否正確的函數(shù)是IsValidIn

40、put(),其響應(yīng)代碼如下:</p><p>  bool RAddBookDlg::IsValidInput()</p><p><b>  {</b></p><p>  CString str = "0123456789";</p><p>  if(m_strBookCategory.IsEm

41、pty() || m_strBookCategory.FindOneOf(str) != -1)</p><p><b>  {</b></p><p>  AfxMessageBox("輸入有誤!圖書類型不能為空或包含數(shù)字。");</p><p>  GetDlgItem(IDC_BK_CATEGORY)->SetF

42、ocus();</p><p>  return false;</p><p><b>  }</b></p><p>  if(m_strBookName.IsEmpty())</p><p><b>  {</b></p><p>  AfxMessageBox(&quo

43、t;輸入有誤!書名不能為空。");</p><p>  GetDlgItem(IDC_BK_NAME)->SetFocus();</p><p>  return false;</p><p><b>  }</b></p><p>  if(m_strAuthor.IsEmpty() || m_strA

44、uthor.FindOneOf(str) != -1)</p><p><b>  {</b></p><p>  AfxMessageBox("輸入有誤!作者名稱不能為空或包含數(shù)字。");</p><p>  GetDlgItem(IDC_BK_AUTHOR)->SetFocus();</p><

45、p>  return false;</p><p><b>  }</b></p><p>  if(m_strPublisher.IsEmpty()|| m_strPublisher.FindOneOf(str) != -1)</p><p><b>  {</b></p><p>  Af

46、xMessageBox("輸入有誤!出版社名稱不能為空或包含數(shù)字。");</p><p>  GetDlgItem(IDC_BK_PUBLISHER)->SetFocus();</p><p>  return false;</p><p><b>  }</b></p><p>  if(m_

47、dPurchase <= 0)</p><p><b>  {</b></p><p>  AfxMessageBox("圖書進價應(yīng)為正值!");</p><p>  GetDlgItem(IDC_BK_PURCHASE)->SetFocus();</p><p>  return fal

48、se;</p><p><b>  }</b></p><p>  if(m_dPrice <= 0 )</p><p><b>  {</b></p><p>  AfxMessageBox("圖書售價應(yīng)為正值!");</p><p>  GetD

49、lgItem(IDC_BK_PRICE)->SetFocus();</p><p>  return false;</p><p><b>  }</b></p><p>  if( m_lDiscount < 0 || m_lDiscount > 100)</p><p><b>  {&l

50、t;/b></p><p>  AfxMessageBox("圖書折扣應(yīng)為0-100之間正值!");</p><p>  GetDlgItem(IDC_BK_DISCOUNT)->SetFocus();</p><p>  return false;</p><p><b>  }</b>

51、</p><p>  if(m_lStock <1)</p><p><b>  {</b></p><p>  AfxMessageBox("圖書數(shù)量應(yīng)為正值!");</p><p>  GetDlgItem(IDC_BK_STOCK)->SetFocus();</p>&

52、lt;p>  return false;</p><p><b>  }</b></p><p>  if(m_strBarcode.IsEmpty() || m_strBarcode.GetLength() > 15)</p><p><b>  {</b></p><p>  Afx

53、MessageBox("條形碼應(yīng)為15位整數(shù)!");</p><p>  GetDlgItem(IDC_BK_BARCODE)->SetFocus();</p><p>  return false;</p><p><b>  }</b></p><p>  //AfxMessageBox(

54、m_strBookName + "\r\n" +</p><p>  //m_strBookCategory + "\r\n" +</p><p>  //m_strAuthor + "\r\n" +</p><p>  //m_strPublisher + "\r\n" +

55、</p><p>  //m_strBarcode );</p><p>  return true;</p><p><b>  }</b></p><p>  4.3 圖書銷售模塊</p><p>  4.3.1 實現(xiàn)目標(biāo)</p><p>  實現(xiàn)圖書銷售功能,圖書

56、銷售對話框設(shè)計如圖4.6所示。“銷售”按鈕對應(yīng)的方法為RSaleBookDlg::OnOK(),流程圖如圖4.7所示。</p><p>  圖4.6 圖書銷售對話框</p><p>  圖4.7 RSaleBookDlg::OnOK()方法的流程圖</p><p>  4.3.2 實現(xiàn)步驟</p><p> ?。?)向項目中添加一個新Dial

57、og資源,資源ID為IDD_SALEBOOK。在IDD_YGGONGZITJ對話框資源中單擊鼠標(biāo)右鍵,執(zhí)行彈出快捷菜單的 “Properties”菜單命令,打開“Dialog Properties”對話框。在“Dialog Properties”對話框中選擇General選項卡,更改其“Caption”文本框內(nèi)容為“圖書銷售?!?lt;/p><p> ?。?)從Controls面板上向Dialog資源中添加相關(guān)控件,

58、更改資源的屬性,并為資源設(shè)置相對應(yīng)的變量,如表3.2所示:</p><p>  表4.2 圖書銷售添加Dialog資源屬性設(shè)置</p><p>  4.3.3 代碼分析</p><p> ?。?)為“銷售”按鈕添加代碼,實現(xiàn)圖書銷售功能,代碼如下:</p><p>  void RSaleBookDlg::OnOK() </p>

59、<p><b>  {</b></p><p>  // TODO: Add extra validation here</p><p>  if(!m_bReadySale)</p><p>  m_bReadySale = FindBook();</p><p><b>  else</b

60、></p><p><b>  {</b></p><p>  UpdateData(TRUE);</p><p>  CString strMsg;</p><p>  strMsg.Format("是否出售?\n 書名:%s\n 價格:%.2f”,m_strBookName</p>&l

61、t;p>  ,m_dSalePrice);</p><p>  if(IDYES == AfxMessageBox(strMsg,MB_YESNO))</p><p><b>  {</b></p><p>  ModifyStock();//修改圖書庫存</p><p>  SaveSaleRecord();

62、//記錄銷售記錄</p><p><b>  }</b></p><p><b>  Init();</b></p><p>  UpdateData(FALSE);</p><p>  GetDlgItem(IDC_SBK_NAME)->SetFocus();</p><

63、;p>  m_editDiscount.EnableWindow(FALSE);</p><p><b>  }</b></p><p>  //CDialog::OnOK();</p><p><b>  }</b></p><p> ?。?)判斷銷售是否能夠成功的函數(shù)是RSaleBookD

64、lg::FindBook(),其代碼如下:</p><p>  bool RSaleBookDlg::FindBook() </p><p><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p>  U

65、pdateData(TRUE);</p><p>  CString strSql ;</p><p>  _variant_t var;</p><p>  double dPurchase;</p><p>  if(!m_strBookName.IsEmpty())</p><p>  strSql.Forma

66、t("SELECT * FROM BookInfo WHERE BookName = \"%s\" and Stock >0", m_strBookName);</p><p>  else if(!m_strBarCode.IsEmpty())</p><p>  strSql.Format("SELECT * FROM BookI

67、nfo WHERE BarCode = \"%s\" and Stock >0", m_strBarCode);</p><p><b>  else</b></p><p><b>  {</b></p><p>  AfxMessageBox("請輸入書名或條碼!"

68、;);</p><p>  GetDlgItem(IDC_SBK_NAME)->SetFocus();</p><p>  return false;</p><p><b>  }</b></p><p>  CRBookSaleApp* pApp = (CRBookSaleApp*)AfxGetApp();&l

69、t;/p><p><b>  try</b></p><p><b>  {</b></p><p>  pApp->m_pRecordset->Open(strSql.AllocSysString(),</p><p>  pApp->m_pConnection.GetInterfa

70、cePtr(),</p><p>  adOpenDynamic,</p><p>  adLockOptimistic,</p><p>  adCmdText);</p><p>  if(pApp->m_pRecordset->adoEOF)</p><p><b>  {</b>

71、;</p><p>  AfxMessageBox("查無此書!請輸入書名或條碼無誤。");</p><p>  pApp->m_pRecordset->Close();</p><p>  return false;</p><p><b>  }</b></p><

72、p>  var = pApp->m_pRecordset->GetCollect("BookID");</p><p>  if(var.vt != NULL)</p><p>  m_lBookID = var.lVal;</p><p>  var = pApp->m_pRecordset->GetCollect

73、("Discount");</p><p>  if(var.vt != NULL)</p><p>  m_lDiscount = var.lVal;</p><p>  var = pApp->m_pRecordset->GetCollect("Price");</p><p>  if

74、(var.vt != NULL)</p><p>  m_dPrice = var.dblVal;</p><p>  var = pApp->m_pRecordset->GetCollect("Purchase");</p><p>  if(var.vt != NULL)</p><p>  dPurcha

75、se = var.dblVal;</p><p>  var = pApp->m_pRecordset->GetCollect("CategoryID");</p><p>  if(var.vt != NULL)</p><p>  m_lCategory = var.lVal;</p><p>  pAp

76、p->m_pRecordset->Close();</p><p><b>  }</b></p><p>  catch(_com_error * e)</p><p><b>  {</b></p><p>  AfxMessageBox(e->ErrorMessage());

77、</p><p><b>  }</b></p><p>  m_editDiscount.EnableWindow(m_dPrice >= dPurchase);</p><p>  m_lDiscount = (m_dPrice >= dPurchase) ? m_lDiscount :100;//售價小于進價時,不允許打折&

78、lt;/p><p>  m_dSalePrice = m_dPrice * (double(m_lDiscount)/100); //計算折后價</p><p>  UpdateData(FALSE);</p><p>  return true;</p><p><b>  } </b></p>&l

79、t;p>  4.4 銷售統(tǒng)計模塊</p><p>  4.4.1 實現(xiàn)目標(biāo)</p><p>  實現(xiàn)對已銷售的圖書進行統(tǒng)計的功能,銷售統(tǒng)計對話框如圖4.8所示。</p><p>  圖4.8 銷售統(tǒng)計對話框</p><p>  4.4.2 設(shè)計步驟</p><p> ?。?)向項目中添加一個新Dialog資源,資

80、源ID為IDD_REPORT。在IDD_REPORT對話框資源中單擊鼠標(biāo)右鍵,執(zhí)行彈出快捷菜單的“Properties”菜單命令,打開“Dialog Properties”對話框。在“Dialog Properties”對話框中選擇General選項卡,更改其“Caption”文本框內(nèi)容為“銷售統(tǒng)計”。</p><p> ?。?)從Controls面板上向Dialog資源中添加相應(yīng)控件,更改資源的屬性,并為資源設(shè)

81、置相應(yīng)的變量,如表4.3所示:</p><p>  表4.3用戶信息管理Dialog資源屬性設(shè)置</p><p>  4.4.3 代碼分析</p><p>  查詢函數(shù)為CRBookSaleView::OnSaleReport(),代碼如下:</p><p>  void CRBookSaleView::OnSaleReport() <

82、/p><p><b>  {</b></p><p>  // TODO: Add your command handler code here</p><p>  RReportDlg dlg;</p><p>  dlg.m_iReportType = m_iReportType ;</p><p&g

83、t;  if(IDOK == dlg.DoModal())</p><p><b>  {</b></p><p>  m_iReportType = dlg.m_iReportType;</p><p>  //設(shè)置銷售報表標(biāo)題</p><p>  //前2個標(biāo)題類型為用戶模式和書店管理模式,故此處加2</p&g

84、t;<p>  int iTitleType = 0;</p><p>  switch(m_iReportType)</p><p><b>  {</b></p><p>  case 0://圖書類型統(tǒng)計</p><p>  iTitleType = CATEGORY_REPORT_TITLE;<

85、;/p><p><b>  break;</b></p><p>  case 1://圖書名稱統(tǒng)計</p><p>  iTitleType = BOOKNAME_REPORT_TITLE;</p><p><b>  break;</b></p><p>  case 2:/

86、/圖書作者統(tǒng)計</p><p>  iTitleType = AUTHOR_REPORT_TITLE;</p><p><b>  break;</b></p><p>  case 3://出版社統(tǒng)計</p><p>  iTitleType = PUBLISHER_REPORT_TITLE;</p>&

87、lt;p><b>  break;</b></p><p>  case 4://全部銷售記錄統(tǒng)計</p><p>  iTitleType = SALE_REPORT_TITLE;</p><p><b>  break;</b></p><p><b>  default:<

88、;/b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  SetTitle(iTitleType);</p><p>  ShowReport();</p><p><b>  }</b>

89、;</p><p><b>  }</b></p><p>  4.5 查詢庫存模塊</p><p>  4.5.1 實現(xiàn)目標(biāo)</p><p>  實現(xiàn)對已銷售的圖書進行統(tǒng)計的功能,銷售統(tǒng)計對話框如圖4.9所示。</p><p>  圖4.9 查詢庫存對話框</p><p>

90、;  4.5.2 設(shè)計步驟</p><p> ?。?)向項目中添加一個新Dialog資源,資源ID為IDD_QUERY。在IDD_QUERY對話框資源中單擊鼠標(biāo)右鍵,執(zhí)行彈出快捷菜單的“Properties”菜單命令,打開“Dialog Properties”對話框。在“Dialog Properties”對話框中選擇General選項卡,更改其“Caption”文本框內(nèi)容為“查詢”。</p>&l

91、t;p> ?。?)從Controls面板上向Dialog資源中添加相應(yīng)控件,更改資源的屬性,并為資源設(shè)置相應(yīng)的變量,如表4.4所示:</p><p>  表4.4庫存查詢Dialog資源屬性設(shè)置</p><p>  4.5.3 代碼分析</p><p> ?。?)“確定”按鈕的函數(shù)為RQueryDlg::OnOK(),代碼如下:</p><

92、p>  void RQueryDlg::OnOK() </p><p><b>  {</b></p><p>  // TODO: Add extra validation here</p><p>  UpdateData(TRUE);</p><p>  //單獨處理類型為全部的情況,0表示選擇類型為全部&l

93、t;/p><p>  m_ctrlCategory.GetLBText(m_ctrlCategory.GetCurSel(),m_strCategory);</p><p>  if(m_strCategory == _T("全部"))</p><p>  m_strCategory = _T("");</p>&l

94、t;p>  CDialog::OnOK();</p><p><b>  }</b></p><p> ?。?)組合框根據(jù)圖書類型查詢的函數(shù)為RQueryDlg::GetBookGategory(),代碼如下:</p><p>  void RQueryDlg::GetBookGategory()</p><p>

95、<b>  {</b></p><p>  int num = 0;</p><p>  CString strSql;</p><p>  _variant_t var;</p><p>  m_ctrlCategory.ResetContent();//清空組合框中原有數(shù)據(jù)</p><p>

96、  //生成SQL查詢語句,在數(shù)據(jù)苦中查找圖書類型</p><p>  strSql.Format(SQL_SELECT_CATEGORYNAME);</p><p>  CRBookSaleApp* pApp = (CRBookSaleApp*)AfxGetApp();</p><p><b>  try</b></p><

97、;p><b>  {</b></p><p>  pApp->m_pRecordset->Open(strSql.AllocSysString(),</p><p>  pApp->m_pConnection.GetInterfacePtr(),</p><p>  adOpenDynamic,</p>&

98、lt;p>  adLockOptimistic,</p><p>  adCmdText);</p><p>  //遍歷數(shù)據(jù)庫中BookCategory表,獲取全部圖書類型</p><p>  while(!(pApp->m_pRecordset->adoEOF))</p><p><b>  {</b&g

99、t;</p><p>  var = pApp->m_pRecordset->GetCollect("CategoryName");</p><p>  if(var.vt != NULL)</p><p>  m_ctrlCategory.AddString((LPCSTR)_bstr_t(var));</p><

100、;p>  pApp->m_pRecordset->MoveNext();</p><p><b>  num++;</b></p><p><b>  }</b></p><p>  m_ctrlCategory.AddString("全部");</p><p>

101、;  pApp->m_pRecordset->Close();</p><p><b>  }</b></p><p>  catch(_com_error * e)</p><p><b>  {</b></p><p>  AfxMessageBox(e->ErrorMessa

102、ge());</p><p><b>  }</b></p><p>  //設(shè)置當(dāng)前選擇類型為全部</p><p>  m_ctrlCategory.SetCurSel(num);</p><p><b>  }</b></p><p><b>  5 系統(tǒng)測試&

103、lt;/b></p><p>  進入VC++6.0,打開工程RBookSale.dsw,然后進入源程序,接著編譯和運行即可運行。下面將給出系統(tǒng)運行的過程。</p><p> ?。?)打開程序后,選擇“使用書店身份登錄”,輸入密碼“111”,進入主對話框,如圖5.1。</p><p><b>  圖5.1 主對話框</b></p&g

104、t;<p> ?。?)在功能菜單下選擇圖書錄入功能,添加一本新的圖書信息,如圖5.2。</p><p>  圖5.2 添加圖書信息</p><p> ?。?)點擊“返回”按鈕后,系統(tǒng)會自動顯示現(xiàn)有圖書信息,如圖5.3。</p><p>  圖5.3 系統(tǒng)自動顯示現(xiàn)有圖書信息</p><p> ?。?)在功能菜單下進入圖書銷售對話

105、框,賣出一本《C++教程》,如圖5.4。點擊返回按鈕后,系統(tǒng)會顯示當(dāng)前所有圖書剩余庫存信息,如圖5.4。</p><p><b>  圖5.4 圖書銷售</b></p><p> ?。?)點擊結(jié)束銷售后,系統(tǒng)會自動顯示當(dāng)前所有圖書的庫存信息,《C++教程》的庫存量已減少一本,如圖5.5。</p><p>  圖5.5 完成銷售后的庫存信息 &l

106、t;/p><p> ?。?)在功能菜單下進入銷售統(tǒng)計對話框,查詢?nèi)夸N售清單,并給出已售出圖書總本數(shù),如圖5.6。</p><p>  圖5.6 查詢所有圖書銷售清單</p><p>  (7)在功能菜單下進入查詢庫存對話框,查詢《魅力何來》這本書的庫存信息,如圖5.7。</p><p>  圖5.7 查詢圖書庫存信息</p>&l

107、t;p> ?。?)再售出《魅力何來》2本后,在功能菜單下進入售完圖書列表功能,查詢已售完的圖書的信息如圖5.8。</p><p>  圖5.8 查詢售完圖書列表</p><p> ?。?)在出售圖書時,若無對應(yīng)圖書信息或圖書庫存為零,將出售失敗,并給出提示信息,如圖5.9。</p><p>  圖5.9圖書銷售失敗</p><p>&l

108、t;b>  6 操作手冊</b></p><p>  首先將date文件夾下的兩個數(shù)據(jù)庫文件附加到本地的SQL數(shù)據(jù)庫中,然后進入VC++6.0,打開工程RBookSale.dsw,進入源程序后,接著編譯和運行即可。</p><p><b>  7 結(jié)論</b></p><p><b>  7.1 系統(tǒng)功能</b

109、></p><p>  本系統(tǒng)為圖書銷售管理系統(tǒng),主要實現(xiàn)圖書錄入、圖書銷售、銷售統(tǒng)計、查詢庫存等功能。該系統(tǒng)中采用圖形用戶界面,直觀、清晰,方便用戶操作。圖書銷售管理系統(tǒng)可以完成書店的日常管理,迅速準(zhǔn)確地對已售圖書和剩余庫存進行統(tǒng)計和匯總工作,大大提高了書店的管理效率和準(zhǔn)確性。</p><p>  7.2 系統(tǒng)不足和改進</p><p>  我在同學(xué)的幫助和

110、老師的悉心指導(dǎo)下完成了該圖書銷售管理,但程序還是存在一些不足之處。比如程序沒有直接提供修改密碼的功能,系統(tǒng)管理員密碼保存在數(shù)據(jù)庫的Pwd表中,若要修改密碼,可以到數(shù)據(jù)庫中直接修改。由于時間倉促,沒有優(yōu)化設(shè)計,還存在一些垃圾和重復(fù)代碼,也沒有進行全面的測試,需要進一步的改進。本系統(tǒng)規(guī)模小,實現(xiàn)的功能簡單,但稍加改動和完善,完全可以應(yīng)用到普通書店的銷售管理中。</p><p><b>  7.3 總結(jié)<

111、;/b></p><p>  本次課程設(shè)計完成的是圖書銷售管理系統(tǒng),我基本完成了所要求的幾個功能,包括圖書錄入、圖書銷售、銷售統(tǒng)計、查詢庫存等功能。通過本次課程設(shè)計,自己對Visual C++6.0的基本知識有了一個很好的鞏固和學(xué)習(xí),特別是Visual C++6.0中的MFC,它的功能是非常強大的,使用它制作圖形界面很方便。而且自己還進一步熟悉了SQL數(shù)據(jù)庫的知識,包括建表、查詢、修改等操作,以及學(xué)習(xí)了Vi

112、sual C++6.0怎樣連接數(shù)據(jù)庫。</p><p>  開始做這個課程設(shè)計的時候,感覺到自己只有一些理論知識,無法動手來操作。通過認真的學(xué)習(xí)來解決這一問題,這也提高了實際操作的能力。在編寫程序的過程中,也發(fā)現(xiàn)自己還是存在著很多的缺點,對Visual C++6.0和MFC的知識和使用不是很熟悉,操作數(shù)據(jù)庫也不熟練,還需要自己多加練習(xí)來達到熟練的目的,以后還要努力學(xué)習(xí)鍛煉自己。致 謝</p>&l

113、t;p>  首先要感謝的是本次課程設(shè)計的指導(dǎo)老師對我的耐心指導(dǎo),我才順利地完成了這次課程設(shè)計??梢哉f這很大程度上歸功于老師的幫助,這也給了我很大的鼓勵,使我有信心完成該題目。</p><p>  另外還要感謝的就是我的同學(xué)們,在這次課程設(shè)計中他們給了我很多細心的幫助。 </p><p><b>  參考文獻</b></p><p>  [

114、1] 宋坤,李偉明 編著. Visual C++數(shù)據(jù)庫系統(tǒng)開發(fā)案例精選.人民郵電出版社,2006</p><p>  [2] 鄭莉,董淵 編著.C++語言程序設(shè)計(第三版).清華大學(xué)出版社,2003</p><p>  [3] 胡哲源 編著. Visual C++ MFC程序設(shè)計與剖析.清華大學(xué)出版社,2001</p><p>  [4] 李強,賈云霞 編著. Vi

115、sual C++項目開發(fā)實踐. 北京:中國鐵道出版社,2003 </p><p>  [5]求是科技 編著. Visual C++6.0信息管理系統(tǒng)開發(fā).人民郵電出版社,2001</p><p>  [6]網(wǎng)冠科技 編著. Visual C++6.0 MFC 時尚編程百例.機械工業(yè)出版社,2004</p><p>  [7] 《軟件工程概論》 張海藩 清華大學(xué)

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論