版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 數(shù)據(jù)庫系統(tǒng)原理及其應(yīng)用教程</p><p><b> 課程設(shè)計報告</b></p><p> 題目名稱:網(wǎng)上圖書銷售系統(tǒng)</p><p><b> 任課教師: </b></p><p><b> 姓 名: </b></p><
2、p><b> 學(xué) 號: </b></p><p> 2010年12月30日</p><p><b> 目 錄</b></p><p><b> 摘 要3</b></p><p><b> 1 引言3</b></p>
3、<p><b> 2 需求分析3</b></p><p> 2.1 功能需求3</p><p> 2.2 數(shù)據(jù)描述5</p><p> 2.3 數(shù)據(jù)庫描述6</p><p><b> 3 概要設(shè)計6</b></p><p> 3.1 系統(tǒng)運
4、行環(huán)境6</p><p> 3.2 系統(tǒng)功能模塊設(shè)計7</p><p> 3.3 系統(tǒng)處理流程7</p><p> 3.4 接口設(shè)計8</p><p><b> 4 詳細設(shè)計8</b></p><p> 4.1 登錄模塊及主界面9</p><p>
5、4.2 圖書錄入模塊10</p><p> 4.3 圖書銷售模塊15</p><p> 4.4 銷售統(tǒng)計模塊20</p><p> 4.5 查詢庫存模塊22</p><p><b> 5 系統(tǒng)測試25</b></p><p><b> 6 操作手冊29</b&
6、gt;</p><p><b> 7 結(jié)論29</b></p><p> 7.1 系統(tǒng)功能29</p><p> 7.2 系統(tǒng)不足和改進29</p><p><b> 7.3 總結(jié)30</b></p><p><b> 參考文獻30</b&
7、gt;</p><p> 評 語 31</p><p><b> 摘 要</b></p><p> 隨著計算機的普及書店規(guī)模的不斷擴大,使圖書銷售管理成為書店管理中的一個重要課題。通過圖書銷售管
8、理系統(tǒng)可以解決書店管理中遇到的各種問題。本系統(tǒng)分析了市場需求和實際需要,利用VC++連接SQL數(shù)據(jù)庫的方式,主要實現(xiàn)了書店的網(wǎng)上圖書銷售管理,該系統(tǒng)具有處理圖書錄入、圖書銷售、銷售統(tǒng)計、查詢庫存等功能。</p><p> 關(guān)鍵詞:圖書;銷售;庫存</p><p><b> 1 引言 </b></p><p> 傳統(tǒng)的圖書銷售管理方法,都是
9、通過人工統(tǒng)計和計算的管理方式進行的。這樣的管理方法不但費時費力,也容易產(chǎn)生計算上的錯誤和疏漏;計算機技術(shù)的全面普及,打破了書店管理的傳統(tǒng)管理方法,提高了管理效率的同時,克服了傳統(tǒng)管理方法中易產(chǎn)生的問題,使管理員能夠有序的、全面的對圖書銷售和庫存進行管理。</p><p> 網(wǎng)上圖書銷售系統(tǒng)可以完成書店的日常管理,如圖書錄入、圖書銷售、銷售統(tǒng)計、查詢庫存等功能,迅速準確地對已售圖書和剩余庫存進行統(tǒng)計和匯總工作,大
10、大提高了書店的管理效率和準確性。</p><p><b> 2 需求分析</b></p><p><b> 2.1 功能需求</b></p><p> 2.1.1待開發(fā)軟件的功能需求</p><p> 本系統(tǒng)是根據(jù)書店的實際需求而開發(fā)的,要求穩(wěn)定、可靠的實現(xiàn)圖書銷售的自動化管理,通過本系統(tǒng)可
11、以達到以下目標:</p><p> 圖書錄入,包括圖書的基本信息,如分類、進價、售價、作者等。</p><p> 圖書銷售,包括圖書的售價、折扣、銷售日期,并實現(xiàn)對庫存量的修改。</p><p> 銷售統(tǒng)計,包括按圖書類型、書名、作者、出版社等進行統(tǒng)計。</p><p> 查詢庫存,對指定的某本圖書剩余庫存量進行查詢。</p&g
12、t;<p> 售完圖書查詢,對已售完圖書進行查詢。</p><p> 2.1.2待開發(fā)軟件的功能</p><p> 按照用戶需求,要滿足以上功能,我設(shè)計出了圖書銷售管理系統(tǒng)的系統(tǒng)功能圖,如圖2.1所示。</p><p> 圖2.1 圖書銷售管理系統(tǒng)的系統(tǒng)功能圖</p><p> 綜合系統(tǒng)要求,對圖2.1所示的系統(tǒng)功能解
13、釋如下:</p><p> 圖書錄入,包括圖書的基本信息,如分類、進價、售價、作者等。</p><p> 圖書銷售,包括圖書的售價、折扣、銷售日期,并實現(xiàn)對庫存量的修改。</p><p> 銷售統(tǒng)計,包括按圖書類型、書名、作者、出版社等進行統(tǒng)計。</p><p> 查詢庫存,對指定的某本圖書剩余庫存量進行查詢。</p>
14、<p> 售完圖書查詢,對已售完圖書進行查詢。</p><p> 通過以上分析,可以得到倉庫管理系統(tǒng)的數(shù)據(jù)流圖,如圖2.2所示。</p><p> 圖2.2圖書管理系統(tǒng)的數(shù)據(jù)流圖</p><p><b> 2.2 數(shù)據(jù)描述</b></p><p> 2.2.1數(shù)據(jù)庫概要說明</p>&l
15、t;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ù)表。可以清晰地反應(yīng)數(shù)據(jù)庫信息。</p><p> 圖2.3 數(shù)據(jù)表結(jié)構(gòu)圖</p><p> 2.2.2主要數(shù)據(jù)表的結(jié)構(gòu)</p><p>
16、 表2.1 Pwd(管理員信息表)</p><p> 表2.2 BookInfo(圖書基本信息表)</p><p> 表2.3 BookCategory(圖書類型表)</p><p> 表2.4 BookSale(圖書銷售記錄表)</p><p><b> 2.3 數(shù)據(jù)庫描述</b></p><
17、;p> 本軟件采用SQL數(shù)據(jù)庫。</p><p><b> 3 概要設(shè)計</b></p><p> 本系統(tǒng)是根據(jù)書店的實際需求而開發(fā)的,完全能夠幫助書店實現(xiàn)高效、準確的圖書銷售自動化管理。在分析階段,我們已經(jīng)提出了系統(tǒng)的結(jié)構(gòu)和數(shù)據(jù)字典。本節(jié)我們將對系統(tǒng)的使用環(huán)境作簡要介紹,并對該系統(tǒng)作概要設(shè)計。</p><p> 3.1 系統(tǒng)運行
18、環(huán)境</p><p><b> PC機</b></p><p> Windows操作系統(tǒng)</p><p> Visual C++6.0</p><p> 3.2 系統(tǒng)功能模塊設(shè)計</p><p> 在前面系統(tǒng)功能分析的基礎(chǔ)上,結(jié)合Visual C++程序編制的特點,得到如圖3.1所示的系
19、統(tǒng)功能模塊圖。</p><p> 圖3.1圖書銷售管理系統(tǒng)功能模塊圖</p><p> 各模塊功能分配如下:</p><p> ?。?)用戶登陸功能:管理員登陸模塊(M1)。</p><p> (2)圖書錄入功能:圖書錄入模塊(M2)。</p><p> (3)圖書銷售功能:圖書銷售模塊(M3)。</p&
20、gt;<p> ?。?)銷售統(tǒng)計功能:銷售統(tǒng)計模塊(M4)。</p><p> (5)查詢圖書庫存功能:查詢庫存模塊(M5)。</p><p> ?。?)售完圖書查詢功能:售完圖書查詢模塊(M6)。</p><p> 3.3 系統(tǒng)處理流程</p><p> ?。?)系統(tǒng)啟動,進入身份驗證。</p><p&
21、gt; (2)初始化系統(tǒng),導(dǎo)入數(shù)據(jù)庫。</p><p> (3)錄入圖書信息。</p><p><b> ?。?)圖書銷售。</b></p><p> ?。?)統(tǒng)計圖書銷售信息。</p><p> (6)查詢圖書庫存信息。</p><p> (7)查詢已售完圖書信息。</p>
22、<p><b> ?。?)退出系統(tǒng)。</b></p><p><b> 3.4 接口設(shè)計</b></p><p> 3.4.1 外部接口</p><p><b> (1) 用戶界面</b></p><p> 采用圖形用戶界面,包含菜單、按鈕、對話框等元素。&
23、lt;/p><p><b> (2) 軟件接口</b></p><p> 軟件運行于Visual C++6.0平臺上。</p><p><b> (3) 硬件接口</b></p><p><b> 運行于PC機上。</b></p><p> 3.4
24、.2 內(nèi)部接口</p><p> ?。?)用戶登陸模塊(M1):由相應(yīng)事件驅(qū)動消息激活,完成用戶登陸功能,之后進入消息循環(huán)狀態(tài)。</p><p> (2)圖書銷售模塊(M3):由相應(yīng)事件驅(qū)動消息激活,完成圖書銷售功能,之后進入消息循環(huán)狀態(tài)。</p><p> (3)銷售統(tǒng)計模塊(M4):由相應(yīng)事件驅(qū)動消息激活,完成銷售統(tǒng)計功能,之后進入消息循環(huán)狀態(tài)。</p
25、><p> ?。?)查詢庫存模塊(M5):由相應(yīng)事件驅(qū)動消息激活,完成查詢庫存功能,之后進入消息循環(huán)狀態(tài)。</p><p> ?。?)售完圖書查詢模塊(M6):由相應(yīng)事件驅(qū)動消息激活,完成售完圖書查詢功能,之后進入消息循環(huán)狀態(tài)。</p><p><b> 4 詳細設(shè)計</b></p><p> 該系統(tǒng)采用VC++6.0中
26、的MFC連接SQL數(shù)據(jù)庫的方式,使用圖形用戶界面,主要實現(xiàn)圖書錄入、圖書銷售等功能。下面具體對各模塊進行介紹。</p><p> 4.1 登錄模塊及主界面</p><p> 在登錄界面(如圖4.1所示)中輸入用戶名和密碼,登錄成功后進入主界面。登陸框流程圖如圖4.2所示,系統(tǒng)主界面如圖4.3所示,單擊某個按鈕就能彈出某個功能的界面。</p><p> 圖4.1
27、 系統(tǒng)登錄界面</p><p> 圖4.2登錄模塊流程圖</p><p> 4.2 圖書錄入模塊</p><p> 4.2.1 實現(xiàn)目標</p><p> 添加圖書信息,圖書錄入對話框的設(shè)計如圖4.4所示?!氨4妗卑粹o對應(yīng)的方法為RAddBookDlg::OnSave(),流程圖如圖4.5所示。</p><p>
28、; 圖4.4 圖書錄入對話框</p><p> 圖4.5 RAddBookDlg::OnSave()方法的流程圖</p><p> 4.2.2 設(shè)計步驟</p><p> ?。?)向項目中添加一個新Dialog資源,資源ID為IDD_ADDBOOK。在IDD_YGTJK對話框資源中單擊鼠標右鍵,執(zhí)行彈出快捷菜單的“Properties”菜單命令,打開“Dial
29、og Properties”對話框。在“Dialog Properties”對話框中選擇General選項卡,更改其“Caption”文本框內(nèi)容為“圖書信息錄入”。</p><p> ?。?)從Controls面板上向Dialog資源中添加所需控件,更改資源的屬性,并為資源設(shè)置相對應(yīng)的變量,如表4.1所示。</p><p> 表4.1 圖書錄入Dialog資源屬性設(shè)置</p>
30、<p> 4.2.3 代碼分析</p><p> ?。?)打開ClassWizard窗口,添加在OnInitDialog成員函數(shù),向OnInitDialog添加代碼如下:</p><p> BOOL RAddBookDlg::OnInitDialog() </p><p><b> {</b></p><
31、p> CDialog::OnInitDialog();</p><p> // TODO: Add extra initialization here</p><p> GetBookGategory();</p><p> return TRUE; // return TRUE unless you set the focus to a cont
32、rol</p><p> // EXCEPTION: OCX Property Pages should return FALSE</p><p><b> }</b></p><p> ?。?)當用戶單擊“保存“按鈕時,實現(xiàn)添加圖書功能,其響應(yīng)代碼如下:</p><p> void RAddBookDlg::On
33、Save() </p><p><b> {</b></p><p> // TODO: Add your control notification handler code here</p><p> UpdateData(TRUE);</p><p> if(!IsValidInput())</p>
34、;<p><b> return ;</b></p><p> if(IDYES != AfxMessageBox("確定要保存嗎?",MB_YESNO)) //放棄保存</p><p><b> return ;</b></p><p> if(SaveData())</p
35、><p><b> {</b></p><p> AfxMessageBox("保存成功!");</p><p><b> //保存后重置數(shù)據(jù)</b></p><p> m_bHasNewBook = true;</p><p> OnReset()
36、;</p><p> GetDlgItem(IDC_BK_CATEGORY)->SetFocus();</p><p><b> }</b></p><p><b> else</b></p><p> AfxMessageBox("保存失敗!");</p&g
37、t;<p><b> }</b></p><p> (3)判斷輸入信息是否正確的函數(shù)是IsValidInput(),其響應(yīng)代碼如下:</p><p> bool RAddBookDlg::IsValidInput()</p><p><b> {</b></p><p> C
38、String str = "0123456789";</p><p> if(m_strBookCategory.IsEmpty() || m_strBookCategory.FindOneOf(str) != -1)</p><p><b> {</b></p><p> AfxMessageBox("輸入
39、有誤!圖書類型不能為空或包含數(shù)字。");</p><p> GetDlgItem(IDC_BK_CATEGORY)->SetFocus();</p><p> return false;</p><p><b> }</b></p><p> if(m_strBookName.IsEmpty())
40、</p><p><b> {</b></p><p> AfxMessageBox("輸入有誤!書名不能為空。");</p><p> GetDlgItem(IDC_BK_NAME)->SetFocus();</p><p> return false;</p><
41、p><b> }</b></p><p> if(m_strAuthor.IsEmpty() || m_strAuthor.FindOneOf(str) != -1)</p><p><b> {</b></p><p> AfxMessageBox("輸入有誤!作者名稱不能為空或包含數(shù)字。&quo
42、t;);</p><p> GetDlgItem(IDC_BK_AUTHOR)->SetFocus();</p><p> return false;</p><p><b> }</b></p><p> if(m_strPublisher.IsEmpty()|| m_strPublisher.FindO
43、neOf(str) != -1)</p><p><b> {</b></p><p> AfxMessageBox("輸入有誤!出版社名稱不能為空或包含數(shù)字。");</p><p> GetDlgItem(IDC_BK_PUBLISHER)->SetFocus();</p><p>
44、return false;</p><p><b> }</b></p><p> if(m_dPurchase <= 0)</p><p><b> {</b></p><p> AfxMessageBox("圖書進價應(yīng)為正值!");</p><
45、;p> GetDlgItem(IDC_BK_PURCHASE)->SetFocus();</p><p> return false;</p><p><b> }</b></p><p> if(m_dPrice <= 0 )</p><p><b> {</b><
46、;/p><p> AfxMessageBox("圖書售價應(yīng)為正值!");</p><p> GetDlgItem(IDC_BK_PRICE)->SetFocus();</p><p> return false;</p><p><b> }</b></p><p>
47、 if( m_lDiscount < 0 || m_lDiscount > 100)</p><p><b> {</b></p><p> AfxMessageBox("圖書折扣應(yīng)為0-100之間正值!");</p><p> GetDlgItem(IDC_BK_DISCOUNT)->SetFoc
48、us();</p><p> return false;</p><p><b> }</b></p><p> if(m_lStock <1)</p><p><b> {</b></p><p> AfxMessageBox("圖書數(shù)量應(yīng)為正值!
49、");</p><p> GetDlgItem(IDC_BK_STOCK)->SetFocus();</p><p> return false;</p><p><b> }</b></p><p> if(m_strBarcode.IsEmpty() || m_strBarcode.GetLe
50、ngth() > 15)</p><p><b> {</b></p><p> AfxMessageBox("條形碼應(yīng)為15位整數(shù)!");</p><p> GetDlgItem(IDC_BK_BARCODE)->SetFocus();</p><p> return false
51、;</p><p><b> }</b></p><p> //AfxMessageBox(m_strBookName + "\r\n" +</p><p> //m_strBookCategory + "\r\n" +</p><p> //m_strAutho
52、r + "\r\n" +</p><p> //m_strPublisher + "\r\n" +</p><p> //m_strBarcode );</p><p> return true;</p><p><b> }</b></p><
53、p> 4.3 圖書銷售模塊</p><p> 4.3.1 實現(xiàn)目標</p><p> 實現(xiàn)圖書銷售功能,圖書銷售對話框設(shè)計如圖4.6所示?!颁N售”按鈕對應(yīng)的方法為RSaleBookDlg::OnOK(),流程圖如圖4.7所示。</p><p> 圖4.6 圖書銷售對話框</p><p> 圖4.7 RSaleBookDlg::
54、OnOK()方法的流程圖</p><p> 4.3.2 實現(xiàn)步驟</p><p> ?。?)向項目中添加一個新Dialog資源,資源ID為IDD_SALEBOOK。在IDD_YGGONGZITJ對話框資源中單擊鼠標右鍵,執(zhí)行彈出快捷菜單的 “Properties”菜單命令,打開“Dialog Properties”對話框。在“Dialog Properties”對話框中選擇General
55、選項卡,更改其“Caption”文本框內(nèi)容為“圖書銷售?!?lt;/p><p> ?。?)從Controls面板上向Dialog資源中添加相關(guān)控件,更改資源的屬性,并為資源設(shè)置相對應(yīng)的變量,如表3.2所示:</p><p> 表4.2 圖書銷售添加Dialog資源屬性設(shè)置</p><p> 4.3.3 代碼分析</p><p> ?。?)為“
56、銷售”按鈕添加代碼,實現(xiàn)圖書銷售功能,代碼如下:</p><p> void RSaleBookDlg::OnOK() </p><p><b> {</b></p><p> // TODO: Add extra validation here</p><p> if(!m_bReadySale)</p&
57、gt;<p> m_bReadySale = FindBook();</p><p><b> else</b></p><p><b> {</b></p><p> UpdateData(TRUE);</p><p> CString strMsg;</p>
58、<p> strMsg.Format("是否出售?\n 書名:%s\n 價格:%.2f”,m_strBookName</p><p> ,m_dSalePrice);</p><p> if(IDYES == AfxMessageBox(strMsg,MB_YESNO))</p><p><b> {</b><
59、;/p><p> ModifyStock();//修改圖書庫存</p><p> SaveSaleRecord();//記錄銷售記錄</p><p><b> }</b></p><p><b> Init();</b></p><p> UpdateData(F
60、ALSE);</p><p> GetDlgItem(IDC_SBK_NAME)->SetFocus();</p><p> m_editDiscount.EnableWindow(FALSE);</p><p><b> }</b></p><p> //CDialog::OnOK();</p>
61、;<p><b> }</b></p><p> (2)判斷銷售是否能夠成功的函數(shù)是RSaleBookDlg::FindBook(),其代碼如下:</p><p> bool RSaleBookDlg::FindBook() </p><p><b> {</b></p><p&g
62、t; // TODO: Add your control notification handler code here</p><p> UpdateData(TRUE);</p><p> CString strSql ;</p><p> _variant_t var;</p><p> double dPurchase;&l
63、t;/p><p> if(!m_strBookName.IsEmpty())</p><p> strSql.Format("SELECT * FROM BookInfo WHERE BookName = \"%s\" and Stock >0", m_strBookName);</p><p> else if(!m
64、_strBarCode.IsEmpty())</p><p> strSql.Format("SELECT * FROM BookInfo WHERE BarCode = \"%s\" and Stock >0", m_strBarCode);</p><p><b> else</b></p><
65、p><b> {</b></p><p> AfxMessageBox("請輸入書名或條碼!");</p><p> GetDlgItem(IDC_SBK_NAME)->SetFocus();</p><p> return false;</p><p><b> }&
66、lt;/b></p><p> CRBookSaleApp* pApp = (CRBookSaleApp*)AfxGetApp();</p><p><b> try</b></p><p><b> {</b></p><p> pApp->m_pRecordset->O
67、pen(strSql.AllocSysString(),</p><p> pApp->m_pConnection.GetInterfacePtr()adLockOptimistic,</p><p> adCmdText);</p><p> if(pApp->m_pRecordset->adoEOF)</p>
68、<p><b> {</b></p><p> AfxMessageBox("查無此書!請輸入書名或條碼無誤。");</p><p> pApp->m_pRecordset->Close();</p><p> return false;</p><p><b&g
69、t; }</b></p><p> var = pApp->m_pRecordset->GetCollect("BookID");</p><p> if(var.vt != NULL)</p><p> m_lBookID = var.lVal;</p><p> var = pApp-
70、>m_pRecordset->GetCollect("Discount");</p><p> if(var.vt != NULL)</p><p> m_lDiscount = var.lVal;</p><p> var = pApp->m_pRecordset->GetCollect("Price&q
71、uot;);</p><p> if(var.vt != NULL)</p><p> m_dPrice = var.dblVal;</p><p> var = pApp->m_pRecordset->GetCollect("Purchase");</p><p> if(var.vt != NULL
72、)</p><p> dPurchase = var.dblVal;</p><p> var = pApp->m_pRecordset->GetCollect("CategoryID");</p><p> if(var.vt != NULL)</p><p> m_lCategory = var.l
73、Val;</p><p> pApp->m_pRecordset->Close();</p><p><b> }</b></p><p> catch(_com_error * e)</p><p><b> {</b></p><p> AfxMe
74、ssageBox(e->ErrorMessage());</p><p><b> }</b></p><p> m_editDiscount.EnableWindow(m_dPrice >= dPurchase);</p><p> m_lDiscount = (m_dPrice >= dPurchase) ? m_l
75、Discount :100;//售價小于進價時,不允許打折</p><p> m_dSalePrice = m_dPrice * (double(m_lDiscount)/100); //計算折后價</p><p> UpdateData(FALSE);</p><p> return true;</p><p><b&
76、gt; } </b></p><p> 4.4 銷售統(tǒng)計模塊</p><p> 4.4.1 實現(xiàn)目標</p><p> 實現(xiàn)對已銷售的圖書進行統(tǒng)計的功能,銷售統(tǒng)計對話框如圖4.8所示。</p><p> 圖4.8 銷售統(tǒng)計對話框</p><p> 4.4.2 設(shè)計步驟</p>&l
77、t;p> (1)向項目中添加一個新Dialog資源,資源ID為IDD_REPORT。在IDD_REPORT對話框資源中單擊鼠標右鍵,執(zhí)行彈出快捷菜單的“Properties”菜單命令,打開“Dialog Properties”對話框。在“Dialog Properties”對話框中選擇General選項卡,更改其“Caption”文本框內(nèi)容為“銷售統(tǒng)計”。</p><p> (2)從Controls面板
78、上向Dialog資源中添加相應(yīng)控件,更改資源的屬性,并為資源設(shè)置相應(yīng)的變量,如表4.3所示:</p><p> 表4.3用戶信息管理Dialog資源屬性設(shè)置</p><p> 4.4.3 代碼分析</p><p> 查詢函數(shù)為CRBookSaleView::OnSaleReport(),代碼如下:</p><p> void CRBo
79、okSaleView::OnSaleReport() </p><p><b> {</b></p><p> // TODO: Add your command handler code here</p><p> RReportDlg dlg;</p><p> dlg.m_iReportType = m_i
80、ReportType ;</p><p> if(IDOK == dlg.DoModal())</p><p><b> {</b></p><p> m_iReportType = dlg.m_iReportType;</p><p> //設(shè)置銷售報表標題</p><p> //前2
81、個標題類型為用戶模式和書店管理模式,故此處加2</p><p> int iTitleType = 0;</p><p> switch(m_iReportType)</p><p><b> {</b></p><p> case 0://圖書類型統(tǒng)計</p><p> iTitleT
82、ype = CATEGORY_REPORT_TITLE;</p><p> break;case 1://圖書名稱統(tǒng)計</p><p> iTitleType = BOOKNAME_REPORT_TITLE;</p><p><b> break;</b></p><p> case 2://圖書作者統(tǒng)計<
83、;/p><p> iTitleType = AUTHOR_REPORT_TITLE;</p><p><b> break;</b></p><p> case 3://出版社統(tǒng)計</p><p> iTitleType = PUBLISHER_REPORT_TITLE;</p><p>&l
84、t;b> break;</b></p><p> case 4://全部銷售記錄統(tǒng)計</p><p> iTitleType = SALE_REPORT_TITLE;</p><p><b> break;</b></p><p><b> default:</b><
85、;/p><p><b> break;</b></p><p><b> }</b></p><p> SetTitle(iTitleType);</p><p> ShowReport();</p><p><b> }</b></p>
86、;<p><b> }</b></p><p> 4.5 查詢庫存模塊</p><p> 4.5.1 實現(xiàn)目標</p><p> 實現(xiàn)對已銷售的圖書進行統(tǒng)計的功能,銷售統(tǒng)計對話框如圖4.9所示。</p><p> 圖4.9 查詢庫存對話框</p><p> 4.5.2 設(shè)
87、計步驟</p><p> ?。?)向項目中添加一個新Dialog資源,資源ID為IDD_QUERY。在IDD_QUERY對話框資源中單擊鼠標右鍵,執(zhí)行彈出快捷菜單的“Properties”菜單命令,打開“Dialog Properties”對話框。在“Dialog Properties”對話框中選擇General選項卡,更改其“Caption”文本框內(nèi)容為“查詢”。</p><p> ?。?/p>
88、2)從Controls面板上向Dialog資源中添加相應(yīng)控件,更改資源的屬性,并為資源設(shè)置相應(yīng)的變量,如表4.4所示:</p><p> 表4.4庫存查詢Dialog資源屬性設(shè)置</p><p> 4.5.3 代碼分析</p><p> (1)“確定”按鈕的函數(shù)為RQueryDlg::OnOK(),代碼如下:</p><p> voi
89、d RQueryDlg::OnOK() </p><p><b> {</b></p><p> // TODO: Add extra validation here</p><p> UpdateData(TRUE);</p><p> //單獨處理類型為全部的情況,0表示選擇類型為全部</p>
90、<p> m_ctrlCategory.GetLBText(m_ctrlCategory.GetCurSel(),m_strCategory);</p><p> if(m_strCategory == _T("全部"))</p><p> m_strCategory = _T("");</p><p> C
91、Dialog::OnOK();</p><p><b> }</b></p><p> (2)組合框根據(jù)圖書類型查詢的函數(shù)為RQueryDlg::GetBookGategory(),代碼如下:</p><p> void RQueryDlg::GetBookGategory()</p><p><b>
92、 {</b></p><p> int num = 0;</p><p> CString strSql;</p><p> _variant_t var;</p><p> m_ctrlCategory.ResetContent();//清空組合框中原有數(shù)據(jù)</p><p> //生成SQL查
93、詢語句,在數(shù)據(jù)苦中查找圖書類型</p><p> strSql.Format(SQL_SELECT_CATEGORYNAME);</p><p> CRBookSaleApp* pApp = (CRBookSaleApp*)AfxGetApp();</p><p><b> try</b></p><p><
94、b> {</b></p><p> pApp->m_pRecordset->Open(strSql.AllocSysString(),</p><p> pApp->m_pConnection.GetInterfacePtr(),</p><p> adOpenDynamic,</p><p>
95、adLockOptimistic,</p><p> adCmdText);</p><p> //遍歷數(shù)據(jù)庫中BookCategory表,獲取全部圖書類型</p><p> while(!(pApp->m_pRecordset->adoEOF))</p><p><b> {</b></p&g
96、t;<p> var = pApp->m_pRecordset->GetCollect("CategoryName");</p><p> if(var.vt != NULL)</p><p> m_ctrlCategory.AddString((LPCSTR)_bstr_t(var));</p><p> pA
97、pp->m_pRecordset->MoveNext();</p><p><b> num++;</b></p><p><b> }</b></p><p> m_ctrlCategory.AddString("全部");</p><p> pApp-&g
98、t;m_pRecordset->Close();</p><p><b> }</b></p><p> catch(_com_error * e)</p><p><b> {</b></p><p> AfxMessageBox(e->ErrorMessage());<
99、/p><p><b> }</b></p><p> //設(shè)置當前選擇類型為全部</p><p> m_ctrlCategory.SetCurSel(num);</p><p><b> }</b></p><p><b> 5 系統(tǒng)測試</b>&
100、lt;/p><p> 進入VC++6.0,打開工程RBookSale.dsw,然后進入源程序,接著編譯和運行即可運行。下面將給出系統(tǒng)運行的過程。</p><p> ?。?)打開程序后,選擇“使用書店身份登錄”,輸入密碼“111”,進入主對話框,如圖5.1。</p><p><b> 圖5.1 主對話框</b></p><p&
101、gt; ?。?)在功能菜單下選擇圖書錄入功能,添加一本新的圖書信息,如圖5.2。</p><p> 圖5.2 添加圖書信息</p><p> ?。?)點擊“返回”按鈕后,系統(tǒng)會自動顯示現(xiàn)有圖書信息,如圖5.3。</p><p> 圖5.3 系統(tǒng)自動顯示現(xiàn)有圖書信息</p><p> ?。?)在功能菜單下進入圖書銷售對話框,賣出一本《C++
102、教程》,如圖5.4。點擊返回按鈕后,系統(tǒng)會顯示當前所有圖書剩余庫存信息,如圖5.4。</p><p><b> 圖5.4 圖書銷售</b></p><p> ?。?)點擊結(jié)束銷售后,系統(tǒng)會自動顯示當前所有圖書的庫存信息,《C++教程》的庫存量已減少一本,如圖5.5。</p><p> 圖5.5 完成銷售后的庫存信息 </p>
103、<p> (6)在功能菜單下進入銷售統(tǒng)計對話框,查詢?nèi)夸N售清單,并給出已售出圖書總本數(shù),如圖5.6。</p><p> 圖5.6 查詢所有圖書銷售清單</p><p> (7)在功能菜單下進入查詢庫存對話框,查詢《魅力何來》這本書的庫存信息,如圖5.7。</p><p> 圖5.7 查詢圖書庫存信息</p><p> ?。?/p>
104、8)再售出《魅力何來》2本后,在功能菜單下進入售完圖書列表功能,查詢已售完的圖書的信息如圖5.8。</p><p> 圖5.8 查詢售完圖書列表</p><p> ?。?)在出售圖書時,若無對應(yīng)圖書信息或圖書庫存為零,將出售失敗,并給出提示信息,如圖5.9。</p><p> 圖5.9圖書銷售失敗</p><p><b> 6
105、 操作手冊</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></p
106、><p> 本系統(tǒng)為圖書銷售管理系統(tǒng),主要實現(xiàn)圖書錄入、圖書銷售、銷售統(tǒng)計、查詢庫存等功能。該系統(tǒng)中采用圖形用戶界面,直觀、清晰,方便用戶操作。圖書銷售管理系統(tǒng)可以完成書店的日常管理,迅速準確地對已售圖書和剩余庫存進行統(tǒng)計和匯總工作,大大提高了書店的管理效率和準確性。</p><p> 7.2 系統(tǒng)不足和改進</p><p> 我在同學(xué)的幫助和老師的悉心指導(dǎo)下完成
107、了該圖書銷售管理,但程序還是存在一些不足之處。比如程序沒有直接提供修改密碼的功能,系統(tǒng)管理員密碼保存在數(shù)據(jù)庫的Pwd表中,若要修改密碼,可以到數(shù)據(jù)庫中直接修改。由于時間倉促,沒有優(yōu)化設(shè)計,還存在一些垃圾和重復(fù)代碼,也沒有進行全面的測試,需要進一步的改進。本系統(tǒng)規(guī)模小,實現(xiàn)的功能簡單,但稍加改動和完善,完全可以應(yīng)用到普通書店的銷售管理中。</p><p><b> 7.3 總結(jié)</b><
108、;/p><p> 本次課程設(shè)計完成的是圖書銷售管理系統(tǒng),我基本完成了所要求的幾個功能,包括圖書錄入、圖書銷售、銷售統(tǒng)計、查詢庫存等功能。通過本次課程設(shè)計,自己對Visual C++6.0的基本知識有了一個很好的鞏固和學(xué)習(xí),特別是Visual C++6.0中的MFC,它的功能是非常強大的,使用它制作圖形界面很方便。而且自己還進一步熟悉了SQL數(shù)據(jù)庫的知識,包括建表、查詢、修改等操作,以及學(xué)習(xí)了Visual C++6.
109、0怎樣連接數(shù)據(jù)庫。</p><p> 開始做這個課程設(shè)計的時候,感覺到自己只有一些理論知識,無法動手來操作。通過認真的學(xué)習(xí)來解決這一問題,這也提高了實際操作的能力。在編寫程序的過程中,也發(fā)現(xiàn)自己還是存在著很多的缺點,對Visual C++6.0和MFC的知識和使用不是很熟悉,操作數(shù)據(jù)庫也不熟練,還需要自己多加練習(xí)來達到熟練的目的,以后還要努力學(xué)習(xí)鍛煉自己。首先要感謝的是本次課程設(shè)計的指導(dǎo)老師對我的耐心指導(dǎo),我才
110、順利地完成了這次課程設(shè)計??梢哉f這很大程度上歸功于老師的幫助,這也給了我很大的鼓勵,使我有信心完成該題目。</p><p> 另外還要感謝的就是我的同學(xué)們,在這次課程設(shè)計中他們給了我很多細心的幫助。 </p><p><b> 參考文獻</b></p><p> [1] 宋坤,李偉明 編著. Visual C++數(shù)據(jù)庫系統(tǒng)開發(fā)案例精選.人
111、民郵電出版社,2006</p><p> [2] 李強,賈云霞 編著. Visual C++項目開發(fā)實踐. 北京:中國鐵道出版社,2003 </p><p> [3]網(wǎng)冠科技 編著. Visual C++6.0 MFC 時尚編程百例.機械工業(yè)出版社,2004</p><p> [4] 《軟件工程概論》 張海藩 清華大學(xué)出版社</p><
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)上圖書銷售系統(tǒng)數(shù)據(jù)庫課程設(shè)計
- 網(wǎng)上圖書銷售系統(tǒng)—數(shù)據(jù)庫課程設(shè)計報告
- 網(wǎng)上圖書銷售系統(tǒng)課程設(shè)計
- uml課程設(shè)計--網(wǎng)上圖書銷售系統(tǒng)
- 網(wǎng)上圖書銷售系統(tǒng)課程設(shè)計報告
- 課程設(shè)計報告----網(wǎng)上圖書銷售系統(tǒng)
- 圖書銷售管理系統(tǒng)--數(shù)據(jù)庫課程設(shè)計
- 圖書銷售管理系統(tǒng)(數(shù)據(jù)庫課程設(shè)計)
- 數(shù)據(jù)庫課程設(shè)計--圖書銷售管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計報告---圖書銷售系統(tǒng)
- 圖書銷售管理系統(tǒng)--數(shù)據(jù)庫課程設(shè)計
- 數(shù)據(jù)庫課程設(shè)計--網(wǎng)上禮品銷售系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計 ---圖書銷售管理系統(tǒng)的設(shè)計
- 軟件工程課程設(shè)計報告---網(wǎng)上圖書銷售系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--在線圖書銷售管理系統(tǒng)
- 數(shù)據(jù)庫圖書銷售管理課程設(shè)計
- 數(shù)據(jù)庫課程設(shè)計-某書店圖書進貨銷售系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--網(wǎng)上購物系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--網(wǎng)上考試系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計---網(wǎng)上拍賣數(shù)據(jù)庫設(shè)計
評論
0/150
提交評論