版權(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> (1)用戶登陸功能:管理員登陸模塊(M1)。</p><p> (2)圖書錄入功能:圖書錄入模塊(M2)。</p><p> ?。?)圖書銷售功能:圖書銷售模塊(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; ?。?)初始化系統(tǒng),導(dǎo)入數(shù)據(jù)庫。</p><p> (3)錄入圖書信息。</p><p><b> (4)圖書銷售。</b></p><p> (5)統(tǒng)計圖書銷售信息。</p><p> ?。?)查詢圖書庫存信息。</p><p> ?。?)查詢已售完圖書信息。</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> (1)用戶登陸模塊(M1):由相應(yīng)事件驅(qū)動消息激活,完成用戶登陸功能,之后進入消息循環(huán)狀態(tài)。</p><p> ?。?)圖書銷售模塊(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> (5)售完圖書查詢模塊(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> (1)打開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> (2)從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> ?。?)判斷銷售是否能夠成功的函數(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> ?。?)從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> (1)向項目中添加一個新Dialog資源,資源ID為IDD_QUERY。在IDD_QUERY對話框資源中單擊鼠標右鍵,執(zhí)行彈出快捷菜單的“Properties”菜單命令,打開“Dialog Properties”對話框。在“Dialog Properties”對話框中選擇General選項卡,更改其“Caption”文本框內(nèi)容為“查詢”。</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> ?。?)“確定”按鈕的函數(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> ?。?)組合框根據(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> ?。?)在功能菜單下進入銷售統(tǒng)計對話框,查詢?nèi)夸N售清單,并給出已售出圖書總本數(shù),如圖5.6。</p><p> 圖5.6 查詢所有圖書銷售清單</p><p> ?。?)在功能菜單下進入查詢庫存對話框,查詢《魅力何來》這本書的庫存信息,如圖5.7。</p><p> 圖5.7 查詢圖書庫存信息</p><p> ?。?/p>
104、8)再售出《魅力何來》2本后,在功能菜單下進入售完圖書列表功能,查詢已售完的圖書的信息如圖5.8。</p><p> 圖5.8 查詢售完圖書列表</p><p> (9)在出售圖書時,若無對應(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è)計。可以說這很大程度上歸功于老師的幫助,這也給了我很大的鼓勵,使我有信心完成該題目。</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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(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
提交評論