網(wǎng)上圖書銷售系統(tǒng)數(shù)據(jù)庫課程設(shè)計(jì)_第1頁
網(wǎng)上圖書銷售系統(tǒng)數(shù)據(jù)庫課程設(shè)計(jì)_第2頁
網(wǎng)上圖書銷售系統(tǒng)數(shù)據(jù)庫課程設(shè)計(jì)_第3頁
網(wǎng)上圖書銷售系統(tǒng)數(shù)據(jù)庫課程設(shè)計(jì)_第4頁
網(wǎng)上圖書銷售系統(tǒng)數(shù)據(jù)庫課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1 數(shù)據(jù)庫系統(tǒng)原理及其應(yīng)用教程數(shù)據(jù)庫系統(tǒng)原理及其應(yīng)用教程 課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)報(bào)告 題目名稱題目名稱: :網(wǎng)上圖書銷售系統(tǒng)網(wǎng)上圖書銷售系統(tǒng) 任課教師:任課教師: 姓姓 名:名: 學(xué)學(xué) 號(hào):號(hào): 2010 年年 12 月月 30 日日 2 目 錄 摘摘 要要.3 1 1 引言引言.3 2 2 需求分析需求分析.3 2.1 功能需求 .3 2.2 數(shù)據(jù)描述 .5 2.3 數(shù)據(jù)庫描述 .6 3 3 概要設(shè)計(jì)概要設(shè)計(jì).6 3.1 系統(tǒng)運(yùn)行環(huán)境 .6 3.2 系統(tǒng)功能模塊設(shè)計(jì) .7 3.3 系統(tǒng)處理流程 .7 3.4 接口設(shè)計(jì) .8 4 4 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì).8 4.1 登錄模塊及主界面 .9 4.2

2、圖書錄入模塊 .10 4.3 圖書銷售模塊 .15 4.4 銷售統(tǒng)計(jì)模塊 .20 4.5 查詢庫存模塊 .22 5 5 系統(tǒng)測(cè)試系統(tǒng)測(cè)試.25 6 6 操作手冊(cè)操作手冊(cè).29 7 7 結(jié)論結(jié)論.29 7.1 系統(tǒng)功能 .29 7.2 系統(tǒng)不足和改進(jìn) .29 7.3 總結(jié) .30 參考文獻(xiàn)參考文獻(xiàn).30 評(píng)評(píng) 語語 3131 3 摘 要 隨著計(jì)算機(jī)的普及書店規(guī)模的不斷擴(kuò)大,使圖書銷售管理成為書店管 理中的一個(gè)重要課題。通過圖書銷售管理系統(tǒng)可以解決書店管理中遇到的 各種問題。本系統(tǒng)分析了市場(chǎng)需求和實(shí)際需要,利用 vc+連接 sql 數(shù)據(jù) 庫的方式,主要實(shí)現(xiàn)了書店的網(wǎng)上圖書銷售管理,該系統(tǒng)具有處理圖

3、書錄 入、圖書銷售、銷售統(tǒng)計(jì)、查詢庫存等功能。 關(guān)鍵詞:關(guān)鍵詞:圖書;銷售;庫存 1 1 引言引言 傳統(tǒng)的圖書銷售管理方法,都是通過人工統(tǒng)計(jì)和計(jì)算的管理方式進(jìn)行的。 這樣的管理方法不但費(fèi)時(shí)費(fèi)力,也容易產(chǎn)生計(jì)算上的錯(cuò)誤和疏漏;計(jì)算機(jī)技術(shù) 的全面普及,打破了書店管理的傳統(tǒng)管理方法,提高了管理效率的同時(shí),克服 了傳統(tǒng)管理方法中易產(chǎn)生的問題,使管理員能夠有序的、全面的對(duì)圖書銷售和 庫存進(jìn)行管理。 網(wǎng)上圖書銷售系統(tǒng)可以完成書店的日常管理,如圖書錄入、圖書銷售、銷 售統(tǒng)計(jì)、查詢庫存等功能,迅速準(zhǔn)確地對(duì)已售圖書和剩余庫存進(jìn)行統(tǒng)計(jì)和匯總 工作,大大提高了書店的管理效率和準(zhǔn)確性。 2 2 需求分析需求分析 2.

4、1 功能需求 2.1.1 待開發(fā)軟件的功能需求 本系統(tǒng)是根據(jù)書店的實(shí)際需求而開發(fā)的,要求穩(wěn)定、可靠的實(shí)現(xiàn)圖書銷售 的自動(dòng)化管理,通過本系統(tǒng)可以達(dá)到以下目標(biāo): 4 1. 圖書錄入,包括圖書的基本信息,如分類、進(jìn)價(jià)、售價(jià)、作者等。 2. 圖書銷售,包括圖書的售價(jià)、折扣、銷售日期,并實(shí)現(xiàn)對(duì)庫存量的修改。 3. 銷售統(tǒng)計(jì),包括按圖書類型、書名、作者、出版社等進(jìn)行統(tǒng)計(jì)。 4. 查詢庫存,對(duì)指定的某本圖書剩余庫存量進(jìn)行查詢。 5. 售完圖書查詢,對(duì)已售完圖書進(jìn)行查詢。 2.1.2 待開發(fā)軟件的功能 按照用戶需求,要滿足以上功能,我設(shè)計(jì)出了圖書銷售管理系統(tǒng)的系統(tǒng)功能圖, 如圖 2.1 所示。 圖書銷售管理系

5、統(tǒng) 圖書 錄入 查詢 庫存 圖書 銷售 銷售 統(tǒng)計(jì) 售完 圖書 查詢 圖 2.1 圖書銷售管理系統(tǒng)的系統(tǒng)功能圖 綜合系統(tǒng)要求,對(duì)圖 2.1 所示的系統(tǒng)功能解釋如下: 圖書錄入,包括圖書的基本信息,如分類、進(jìn)價(jià)、售價(jià)、作者等。 圖書銷售,包括圖書的售價(jià)、折扣、銷售日期,并實(shí)現(xiàn)對(duì)庫存量的修改。 銷售統(tǒng)計(jì),包括按圖書類型、書名、作者、出版社等進(jìn)行統(tǒng)計(jì)。 查詢庫存,對(duì)指定的某本圖書剩余庫存量進(jìn)行查詢。 售完圖書查詢,對(duì)已售完圖書進(jìn)行查詢。 通過以上分析,可以得到倉庫管理系統(tǒng)的數(shù)據(jù)流圖,如圖 2.2 所示。 5 管理員 圖書信息 處理 圖書管理 反饋信息 圖書信息 反饋信息 記錄數(shù)據(jù) 數(shù)據(jù)庫 圖 2.2

6、 圖書管理系統(tǒng)的數(shù)據(jù)流圖 2.2 數(shù)據(jù)描述 2.2.1 數(shù)據(jù)庫概要說明 數(shù)據(jù)庫中包括管理員信息表、圖書基本信息表、圖書類型表、圖書銷售記 錄表等 4 個(gè)數(shù)據(jù)表。 圖 2.3 所示的即為本系統(tǒng)中數(shù)據(jù)庫中的數(shù)據(jù)表結(jié)構(gòu)圖,該數(shù)據(jù)表結(jié)構(gòu)圖包 含系統(tǒng)所有數(shù)據(jù)表??梢郧逦胤磻?yīng)數(shù)據(jù)庫信息。 圖 2.3 數(shù)據(jù)表結(jié)構(gòu)圖 2.2.22.2.2 主要數(shù)據(jù)表的結(jié)構(gòu) 表 2.1 pwd(管理員信息表) 字段名數(shù)據(jù)類型字段大小描述 idint4管理員帳號(hào) passwordnvarchar50r密碼 表 2.2 bookinfo(圖書基本信息表) 字段名數(shù)據(jù)類型字段大小描述 bookidint4圖書編號(hào) bookname

7、nvarchar50圖書名稱 categoryidint4圖書類型編號(hào) authornvarchar50作者 6 publishernvarchar50出版社 publishdatesmalldatetime4出版日期 purchasefloat8進(jìn)價(jià) pricefloat8售價(jià) stockint4庫存本數(shù) discountint4折扣 barcodenvarchar50條形碼 表 2.3 bookcategory(圖書類型表) 字段名數(shù)據(jù)類型長(zhǎng)度描述 categoryidint4圖書類型編號(hào) categorynamenvarchar8圖書類型名稱 表 2.4 booksale(圖書銷售記錄表

8、) 字段名數(shù)據(jù)類型長(zhǎng)度描述 idint4銷售記錄編號(hào) bookidint4圖書編號(hào) salepricefloat8實(shí)際售價(jià) saledatesmalldatetime4銷售日期 2.3 數(shù)據(jù)庫描述 本軟件采用sql數(shù)據(jù)庫。 3 概要設(shè)計(jì) 本系統(tǒng)是根據(jù)書店的實(shí)際需求而開發(fā)的,完全能夠幫助書店實(shí)現(xiàn)高效、準(zhǔn) 確的圖書銷售自動(dòng)化管理。在分析階段,我們已經(jīng)提出了系統(tǒng)的結(jié)構(gòu)和數(shù)據(jù)字 典。本節(jié)我們將對(duì)系統(tǒng)的使用環(huán)境作簡(jiǎn)要介紹,并對(duì)該系統(tǒng)作概要設(shè)計(jì)。 3.1 系統(tǒng)運(yùn)行環(huán)境 pc 機(jī) windows 操作系統(tǒng) visual c+6.0 7 3.2 系統(tǒng)功能模塊設(shè)計(jì) 在前面系統(tǒng)功能分析的基礎(chǔ)上,結(jié)合 visual

9、 c+程序編制的特點(diǎn),得到如 圖 3.1 所示的系統(tǒng)功能模塊圖。 圖書銷售管理系統(tǒng) 圖書錄入模塊(m2) 查詢庫存模塊(m5) 圖書銷售模塊(m3) 銷售統(tǒng)計(jì)模塊(m4) 售完圖書查詢模塊(m6) 管理員登錄模塊(m1) 圖 3.1 圖書銷售管理系統(tǒng)功能模塊圖 各模塊功能分配如下: (1)用戶登陸功能:管理員登陸模塊(m1) 。 (2)圖書錄入功能:圖書錄入模塊(m2) 。 (3)圖書銷售功能:圖書銷售模塊(m3) 。 (4)銷售統(tǒng)計(jì)功能:銷售統(tǒng)計(jì)模塊(m4) 。 (5)查詢圖書庫存功能:查詢庫存模塊(m5) 。 (6)售完圖書查詢功能:售完圖書查詢模塊(m6) 。 3.3 系統(tǒng)處理流程 (1

10、)系統(tǒng)啟動(dòng),進(jìn)入身份驗(yàn)證。 (2)初始化系統(tǒng),導(dǎo)入數(shù)據(jù)庫。 (3)錄入圖書信息。 (4)圖書銷售。 (5)統(tǒng)計(jì)圖書銷售信息。 8 (6)查詢圖書庫存信息。 (7)查詢已售完圖書信息。 (8)退出系統(tǒng)。 3.4 接口設(shè)計(jì) 3.4.1 外部接口 (1) 用戶界面 采用圖形用戶界面,包含菜單、按鈕、對(duì)話框等元素。 (2) 軟件接口 軟件運(yùn)行于visual c+6.0平臺(tái)上。 (3) 硬件接口 運(yùn)行于pc機(jī)上。 3.4.2 內(nèi)部接口 (1)用戶登陸模塊(m1):由相應(yīng)事件驅(qū)動(dòng)消息激活,完成用戶登陸功能, 之后進(jìn)入消息循環(huán)狀態(tài)。 (2)圖書銷售模塊(m3):由相應(yīng)事件驅(qū)動(dòng)消息激活,完成圖書銷售功能, 之

11、后進(jìn)入消息循環(huán)狀態(tài)。 (3)銷售統(tǒng)計(jì)模塊(m4):由相應(yīng)事件驅(qū)動(dòng)消息激活,完成銷售統(tǒng)計(jì)功能, 之后進(jìn)入消息循環(huán)狀態(tài)。 (4)查詢庫存模塊(m5):由相應(yīng)事件驅(qū)動(dòng)消息激活,完成查詢庫存功能, 之后進(jìn)入消息循環(huán)狀態(tài)。 (5)售完圖書查詢模塊(m6):由相應(yīng)事件驅(qū)動(dòng)消息激活,完成售完圖書 查詢功能,之后進(jìn)入消息循環(huán)狀態(tài)。 4 詳細(xì)設(shè)計(jì) 該系統(tǒng)采用 vc+6.0 中的 mfc 連接 sql 數(shù)據(jù)庫的方式,使用圖形用戶界面, 主要實(shí)現(xiàn)圖書錄入、圖書銷售等功能。下面具體對(duì)各模塊進(jìn)行介紹。 9 4.1 登錄模塊及主界面 在登錄界面(如圖 4.1 所示)中輸入用戶名和密碼,登錄成功后進(jìn)入主界 面。登陸框流程圖

12、如圖 4.2 所示,系統(tǒng)主界面如圖 4.3 所示,單擊某個(gè)按鈕就 能彈出某個(gè)功能的界面。 圖 4.1 系統(tǒng)登錄界面 輸入用戶名 開始 驗(yàn)證密碼是否正確 輸入密碼 登錄成功進(jìn)入主界面 結(jié)束 是 否 選擇帳號(hào)類型 圖 4.2 登錄模塊流程圖 10 4.2 圖書錄入模塊 4.2.1 實(shí)現(xiàn)目標(biāo) 添加圖書信息,圖書錄入對(duì)話框的設(shè)計(jì)如圖 4.4 所示。 “保存”按鈕對(duì)應(yīng)的 方法為 raddbookdlg:onsave(),流程圖如圖 4.5 所示。 圖 4.4 圖書錄入對(duì)話框 11 開始 結(jié)束 輸入圖書基本信息 判斷輸入是否正 確且完整 添加該信息到關(guān)聯(lián)表并寫 入數(shù)據(jù)庫 是 否 圖 4.5 raddboo

13、kdlg:onsave()方法的流程圖 4.2.2 設(shè)計(jì)步驟 (1)向項(xiàng)目中添加一個(gè)新 dialog 資源,資源 id 為 idd_addbook。在 idd_ygtjk 對(duì)話框資源中單擊鼠標(biāo)右鍵,執(zhí)行彈出快捷菜單的“properties” 菜單命令,打開“dialog properties”對(duì)話框。在“dialog properties”對(duì)話框中 選擇 general 選項(xiàng)卡,更改其“caption”文本框內(nèi)容為“圖書信息錄入” 。 (2)從 controls 面板上向 dialog 資源中添加所需控件,更改資源的屬性, 并為資源設(shè)置相對(duì)應(yīng)的變量,如表 4.1 所示。 表 4.1 圖書錄入

14、dialog 資源屬性設(shè)置 member variables idproperties typemember idc_bk_category默認(rèn)文本categoryname idc_bk_name默認(rèn)文本bookname idc_bk_author默認(rèn)文本author idc_bk_publisher默認(rèn)文本publisher idc_bk_date默認(rèn)日期/時(shí)間publishdate 12 idc_bk_purchase默認(rèn)數(shù)字purchase idc_bk_price默認(rèn)數(shù)字price idc_bk_payoff默認(rèn)數(shù)字price idc_bk_stock默認(rèn)數(shù)字stock idc_bk_

15、barcode默認(rèn)文本barcode idc_bk_discount默認(rèn)數(shù)字discount idc_resetcaption 重填 idc_savecaption 添加 idcancelcaption 退出 4.2.3 代碼分析 (1)打開 classwizard 窗口,添加在 oninitdialog 成員函數(shù),向 oninitdialog 添加代碼如下: bool raddbookdlg:oninitdialog() cdialog:oninitdialog(); / todo: add extra initialization here getbookgategory(); retur

16、n true; / return true unless you set the focus to a control / exception: ocx property pages should return false (2)當(dāng)用戶單擊“保存“按鈕時(shí),實(shí)現(xiàn)添加圖書功能,其響應(yīng)代碼如下: void raddbookdlg:onsave() / todo: add your control notification handler code here updatedata(true); if(!isvalidinput() return ; if(idyes != afxmessagebox(

17、確定要保存嗎?,mb_yesno) /放棄保存 return ; 13 if(savedata() afxmessagebox(保存成功!); /保存后重置數(shù)據(jù) m_bhasnewbook = true; onreset(); getdlgitem(idc_bk_category)-setfocus(); else afxmessagebox(保存失敗!); (3)判斷輸入信息是否正確的函數(shù)是 isvalidinput() ,其響應(yīng)代碼如下: bool raddbookdlg:isvalidinput() cstring str = 0123456789; if(m_strbookcatego

18、ry.isempty() | m_strbookcategory.findoneof(str) != -1) afxmessagebox(輸入有誤!圖書類型不能為空或包含數(shù)字。); getdlgitem(idc_bk_category)-setfocus(); return false; if(m_strbookname.isempty() afxmessagebox(輸入有誤!書名不能為空。); getdlgitem(idc_bk_name)-setfocus(); return false; if(m_strauthor.isempty() | m_strauthor.findoneof(

19、str) != -1) 14 afxmessagebox(輸入有誤!作者名稱不能為空或包含數(shù)字。); getdlgitem(idc_bk_author)-setfocus(); return false; if(m_strpublisher.isempty()| m_strpublisher.findoneof(str) != -1) afxmessagebox(輸入有誤!出版社名稱不能為空或包含數(shù)字。); getdlgitem(idc_bk_publisher)-setfocus(); return false; if(m_dpurchase setfocus(); return false

20、; if(m_dprice setfocus(); return false; if( m_ldiscount 100) afxmessagebox(圖書折扣應(yīng)為 0-100 之間正值!); getdlgitem(idc_bk_discount)-setfocus(); return false; if(m_lstock setfocus(); return false; if(m_strbarcode.isempty() | m_strbarcode.getlength() 15) afxmessagebox(條形碼應(yīng)為 15 位整數(shù)!); getdlgitem(idc_bk_barcode

21、)-setfocus(); return false; /afxmessagebox(m_strbookname + rn + /m_strbookcategory + rn + /m_strauthor + rn + /m_strpublisher + rn + /m_strbarcode ); return true; 4.3 圖書銷售模塊 4.3.1 實(shí)現(xiàn)目標(biāo) 實(shí)現(xiàn)圖書銷售功能,圖書銷售對(duì)話框設(shè)計(jì)如圖 4.6 所示。 “銷售”按鈕對(duì)應(yīng) 的方法為 rsalebookdlg:onok(),流程圖如圖 4.7 所示。 16 圖 4.6 圖書銷售對(duì)話框 開始 結(jié)束 輸入書名或條 形碼 判斷輸入是

22、否正確 且 findbook()函數(shù) 返回值為 1 添加該信息到關(guān)聯(lián) 表并寫入數(shù)據(jù)庫 是 否 圖 4.7 rsalebookdlg:onok()方法的流程圖 4.3.2 實(shí)現(xiàn)步驟 (1)向項(xiàng)目中添加一個(gè)新 dialog 資源,資源 id 為 idd_salebook。在 idd_yggongzitj 對(duì)話框資源中單擊鼠標(biāo)右鍵,執(zhí)行彈出快捷菜單的 “properties”菜單命令,打開“dialog properties”對(duì)話框。在“dialog properties”對(duì)話框中選擇 general 選項(xiàng)卡,更改其“caption”文本框內(nèi)容為 “圖書銷售。 ” (2)從 controls 面板上

23、向 dialog 資源中添加相關(guān)控件,更改資源的屬性, 并為資源設(shè)置相對(duì)應(yīng)的變量,如表 3.2 所示: 表 4.2 圖書銷售添加 dialog 資源屬性設(shè)置 member variables idproperties typemember idc_sbk_name默認(rèn)文本bookname 17 idc_sbk_barcode默認(rèn)文本barcode idc_sbk_price默認(rèn)數(shù)字price idc_sbk_saleprice默認(rèn)數(shù)字saleprice idc_sbk_discount默認(rèn)數(shù)字discount idc_sbk_date默認(rèn)日期/時(shí)間saledate idokcaption 銷售

24、 idcancelcaption 退出 4.3.3 代碼分析 (1)為“銷售”按鈕添加代碼,實(shí)現(xiàn)圖書銷售功能,代碼如下: void rsalebookdlg:onok() / todo: add extra validation here if(!m_breadysale) m_breadysale = findbook(); else updatedata(true); cstring strmsg; strmsg.format(是否出售?n 書名:%sn 價(jià)格:%.2f”,m_strbookname ,m_dsaleprice); if(idyes = afxmessagebox(strm

25、sg,mb_yesno) modifystock();/修改圖書庫存 savesalerecord();/記錄銷售記錄 init(); updatedata(false); getdlgitem(idc_sbk_name)-setfocus(); m_editdiscount.enablewindow(false); 18 /cdialog:onok(); (2)判斷銷售是否能夠成功的函數(shù)是 rsalebookdlg:findbook(),其代碼 如下: bool rsalebookdlg:findbook() / todo: add your control notification han

26、dler code here updatedata(true); cstring strsql ; _variant_t var; double dpurchase; if(!m_strbookname.isempty() strsql.format(select * from bookinfo where bookname = %s and stock 0, m_strbookname); else if(!m_strbarcode.isempty() strsql.format(select * from bookinfo where barcode = %s and stock 0, m

27、_strbarcode); else afxmessagebox(請(qǐng)輸入書名或條碼!); getdlgitem(idc_sbk_name)-setfocus(); return false; crbooksaleapp* papp = (crbooksaleapp*)afxgetapp(); try papp-m_precordset-open(strsql.allocsysstring(), papp-m_pconnection.getinterfaceptr() adlockoptimistic, adcmdtext); 19 if(papp-m_precordset-adoeof) af

28、xmessagebox(查無此書!請(qǐng)輸入書名或條碼無誤。); papp-m_precordset-close(); return false; var = papp-m_precordset-getcollect(bookid); if(var.vt != null) m_lbookid = var.lval; var = papp-m_precordset-getcollect(discount); if(var.vt != null) m_ldiscount = var.lval; var = papp-m_precordset-getcollect(price); if(var.vt !

29、= null) m_dprice = var.dblval; var = papp-m_precordset-getcollect(purchase); if(var.vt != null) dpurchase = var.dblval; var = papp-m_precordset-getcollect(categoryid); if(var.vt != null) m_lcategory = var.lval; papp-m_precordset-close(); catch(_com_error * e) afxmessagebox(e-errormessage(); m_editdi

30、scount.enablewindow(m_dprice = dpurchase); m_ldiscount = (m_dprice = dpurchase) ? m_ldiscount :100;/售價(jià)小于 20 進(jìn)價(jià)時(shí),不允許打折 m_dsaleprice = m_dprice * (double(m_ldiscount)/100); /計(jì)算折后價(jià) updatedata(false); return true; 4.4 銷售統(tǒng)計(jì)模塊 4.4.1 實(shí)現(xiàn)目標(biāo) 實(shí)現(xiàn)對(duì)已銷售的圖書進(jìn)行統(tǒng)計(jì)的功能,銷售統(tǒng)計(jì)對(duì)話框如圖 4.8 所示。 圖 4.8 銷售統(tǒng)計(jì)對(duì)話框 4.4.2 設(shè)計(jì)步驟 (1)向項(xiàng)目中添

31、加一個(gè)新 dialog 資源,資源 id 為 idd_report。在 idd_report 對(duì)話框資源中單擊鼠標(biāo)右鍵,執(zhí)行彈出快捷菜單的“properties” 菜單命令,打開“dialog properties”對(duì)話框。在“dialog properties”對(duì)話框中 選擇 general 選項(xiàng)卡,更改其“caption”文本框內(nèi)容為“銷售統(tǒng)計(jì)” 。 (2)從 controls 面板上向 dialog 資源中添加相應(yīng)控件,更改資源的屬性, 并為資源設(shè)置相應(yīng)的變量,如表 4.3 所示: 表 4.3 用戶信息管理 dialog 資源屬性設(shè)置 member variables idpropert

32、ies typemember idc_radio2默認(rèn)單選框 idc_radio3默認(rèn)單選框 idc_radio4默認(rèn)單選框 idc_radio5默認(rèn)單選框 21 idc_radio6默認(rèn)單選框 idc_static默認(rèn)單選框 idokcaption 確定 idcancelcaption 取消 4.4.3 代碼分析 查詢函數(shù)為 crbooksaleview:onsalereport(),代碼如下: void crbooksaleview:onsalereport() / todo: add your command handler code here rreportdlg dlg; dlg.m

33、_ireporttype = m_ireporttype ; if(idok = dlg.domodal() m_ireporttype = dlg.m_ireporttype; /設(shè)置銷售報(bào)表標(biāo)題 /前 2 個(gè)標(biāo)題類型為用戶模式和書店管理模式,故此處加 2 int ititletype = 0; switch(m_ireporttype) case 0:/圖書類型統(tǒng)計(jì) ititletype = category_report_title; break;case 1:/圖書名稱統(tǒng)計(jì) ititletype = bookname_report_title; break; case 2:/圖書作者統(tǒng)

34、計(jì) ititletype = author_report_title; break; case 3:/出版社統(tǒng)計(jì) ititletype = publisher_report_title; 22 break; case 4:/全部銷售記錄統(tǒng)計(jì) ititletype = sale_report_title; break; default: break; settitle(ititletype); showreport(); 4.5 查詢庫存模塊 4.5.1 實(shí)現(xiàn)目標(biāo) 實(shí)現(xiàn)對(duì)已銷售的圖書進(jìn)行統(tǒng)計(jì)的功能,銷售統(tǒng)計(jì)對(duì)話框如圖 4.9 所示。 圖 4.9 查詢庫存對(duì)話框 4.5.2 設(shè)計(jì)步驟 (1)向項(xiàng)目

35、中添加一個(gè)新 dialog 資源,資源 id 為 idd_query。在 idd_query 對(duì)話框資源中單擊鼠標(biāo)右鍵,執(zhí)行彈出快捷菜單的“properties” 菜單命令,打開“dialog properties”對(duì)話框。在“dialog properties”對(duì)話框中 選擇 general 選項(xiàng)卡,更改其“caption”文本框內(nèi)容為“查詢” 。 (2)從 controls 面板上向 dialog 資源中添加相應(yīng)控件,更改資源的屬性, 并為資源設(shè)置相應(yīng)的變量,如表 4.4 所示: 23 表 4.4 庫存查詢 dialog 資源屬性設(shè)置 member variables idproperti

36、es typemember idc_book_category默認(rèn)組合框 idc_book_name默認(rèn)文本bookname idc_book_author默認(rèn)文本author idc_book_publisher默認(rèn)文本publisher idokcaption 確定 idcancelcaption 取消 4.5.3 代碼分析 (1) “確定”按鈕的函數(shù)為 rquerydlg:onok(),代碼如下: void rquerydlg:onok() / todo: add extra validation here updatedata(true); /單獨(dú)處理類型為全部的情況,0 表示選擇類型

37、為全部 m_ctrlcategory.getlbtext(m_ctrlcategory.getcursel(),m_strcategory); if(m_strcategory = _t(全部) m_strcategory = _t(); cdialog:onok(); (2)組合框根據(jù)圖書類型查詢的函數(shù)為 rquerydlg:getbookgategory(), 代碼如下: void rquerydlg:getbookgategory() int num = 0; cstring strsql; _variant_t var; m_ctrlcategory.resetcontent();/清

38、空組合框中原有數(shù)據(jù) /生成 sql 查詢語句,在數(shù)據(jù)苦中查找圖書類型 24 strsql.format(sql_select_categoryname); crbooksaleapp* papp = (crbooksaleapp*)afxgetapp(); try papp-m_precordset-open(strsql.allocsysstring(), papp-m_pconnection.getinterfaceptr(), adopendynamic, adlockoptimistic, adcmdtext); /遍歷數(shù)據(jù)庫中 bookcategory 表,獲取全部圖書類型 whil

39、e(!(papp-m_precordset-adoeof) var = papp-m_precordset-getcollect(categoryname); if(var.vt != null) m_ctrlcategory.addstring(lpcstr)_bstr_t(var); papp-m_precordset-movenext(); num+; m_ctrlcategory.addstring(全部); papp-m_precordset-close(); catch(_com_error * e) afxmessagebox(e-errormessage(); /設(shè)置當(dāng)前選擇類

40、型為全部 m_ctrlcategory.setcursel(num); 25 26 5 5 系統(tǒng)測(cè)試系統(tǒng)測(cè)試 進(jìn)入 vc+6.0,打開工程 rbooksale.dsw,然后進(jìn)入源程序,接著編譯和 運(yùn)行即可運(yùn)行。下面將給出系統(tǒng)運(yùn)行的過程。 (1)打開程序后,選擇“使用書店身份登錄” ,輸入密碼“111” ,進(jìn)入主 對(duì)話框,如圖 5.1。 圖 5.1 主對(duì)話框 (2)在功能菜單下選擇圖書錄入功能,添加一本新的圖書信息,如圖 5.2。 圖 5.2 添加圖書信息 (3)點(diǎn)擊“返回”按鈕后,系統(tǒng)會(huì)自動(dòng)顯示現(xiàn)有圖書信息,如圖 27 5.3。 圖 5.3 系統(tǒng)自動(dòng)顯示現(xiàn)有圖書信息 (4)在功能菜單下進(jìn)入圖書銷售對(duì)話框,賣出一本c+教程 ,如圖 5.4。點(diǎn)擊返回按鈕后,系統(tǒng)會(huì)顯示當(dāng)前所有圖書剩余庫存信息,如圖 5.4。 圖 5.4 圖書銷售 (5)點(diǎn)擊結(jié)束銷售后,系統(tǒng)會(huì)自動(dòng)顯示當(dāng)前所有圖書的庫存信息, c+ 教程的庫存量已減少一本,如圖 5.5。 28 圖 5.5 完成銷售后的庫存信息 (6)在功能菜單下進(jìn)入銷售統(tǒng)計(jì)對(duì)話框,查詢?nèi)夸N售清單,并給出已 售出圖書總本數(shù),如圖 5.6。 圖 5.6 查詢所有圖書銷售清單 (7)在功能菜單下

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論