版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)上圖書銷售系統(tǒng)數(shù)據(jù)庫課程設(shè)計
- 網(wǎng)上圖書銷售系統(tǒng)數(shù)據(jù)庫課程設(shè)計
- 課程設(shè)計報告----網(wǎng)上圖書銷售系統(tǒng)
- 網(wǎng)上圖書銷售系統(tǒng)課程設(shè)計報告
- 網(wǎng)上圖書銷售系統(tǒng)課程設(shè)計
- 數(shù)據(jù)庫課程設(shè)計報告---圖書銷售系統(tǒng)
- uml課程設(shè)計--網(wǎng)上圖書銷售系統(tǒng)
- 軟件工程課程設(shè)計報告---網(wǎng)上圖書銷售系統(tǒng)
- 圖書銷售管理系統(tǒng)--數(shù)據(jù)庫課程設(shè)計
- 圖書銷售管理系統(tǒng)(數(shù)據(jù)庫課程設(shè)計)
- 數(shù)據(jù)庫課程設(shè)計--圖書銷售管理系統(tǒng)
- 圖書銷售管理系統(tǒng)--數(shù)據(jù)庫課程設(shè)計
- 數(shù)據(jù)庫課程設(shè)計--網(wǎng)上禮品銷售系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--圖書銷售管理系統(tǒng)報告書
- 課程設(shè)計報告---網(wǎng)上圖書管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計報告網(wǎng)上購物系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計 ---圖書銷售管理系統(tǒng)的設(shè)計
- 數(shù)據(jù)庫課程設(shè)計--在線圖書銷售管理系統(tǒng)
- 數(shù)據(jù)庫圖書銷售管理課程設(shè)計
- 數(shù)據(jù)庫課程設(shè)計報告---圖書館管理系統(tǒng)數(shù)據(jù)庫
評論
0/150
提交評論