




已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課程設(shè)計(jì)報(bào)告課程程序設(shè)計(jì)語(yǔ)言課程設(shè)計(jì)課程設(shè)計(jì)名稱商品銷售統(tǒng)計(jì)程序?qū)W生姓名 項(xiàng)正武學(xué)號(hào)11041111專業(yè)班級(jí)110411指導(dǎo)教師2014年2月一、課程設(shè)計(jì)題目:商品銷售統(tǒng)計(jì)主要內(nèi)容和要求:編寫商品銷售統(tǒng)計(jì)程序,商品的信息有:商品的名稱,計(jì)量單位(重量或件),單價(jià)。所有商品的信息事先已存入計(jì)算機(jī),屏幕上顯示所有商品的名稱,選擇商品名,輸入商品計(jì)量單位(如重量,件數(shù)等),根據(jù)單價(jià)算出總價(jià)??蛻粢淮钨?gòu)物可能購(gòu)買多種商品,程序應(yīng)計(jì)算出客戶應(yīng)付的錢款數(shù)。程序分為兩個(gè)部分:第一部分用于輸入商品的信息并允許修改和刪除;第二部分實(shí)現(xiàn)銷售統(tǒng)計(jì)。程序運(yùn)行時(shí)由用戶選擇進(jìn)入哪一部分功能,并能在運(yùn)行時(shí)在兩部分之間切換。第二部分運(yùn)行時(shí),首先顯示所有商品名稱及代碼(商品數(shù)目較多時(shí),應(yīng)考慮分屏顯示),用戶輸入商品代碼及商品重量或件數(shù),用戶一次操作可輸入若干商品的購(gòu)買信息,然后輸入一個(gè)特殊的代碼(如-1)表示本次購(gòu)物結(jié)束。此時(shí)。程序計(jì)算出應(yīng)付錢款數(shù)并顯示。測(cè)試數(shù)據(jù)程序應(yīng)輸入不少于10種商品的信息,并進(jìn)行模擬運(yùn)行。實(shí)現(xiàn)提示本程序的商品信息管理可采用與課程設(shè)計(jì)題目二類似的數(shù)據(jù)結(jié)構(gòu),既定義一個(gè)商品類,每種商品作為商品類的實(shí)例(對(duì)象)存儲(chǔ)在鏈表節(jié)點(diǎn)中。選做內(nèi)容程序在營(yíng)業(yè)結(jié)束時(shí)統(tǒng)計(jì)每種商品的銷售量,銷售金額及總營(yíng)業(yè)額。因此第二部分應(yīng)有營(yíng)業(yè)結(jié)束的選擇,當(dāng)用戶選擇此項(xiàng)時(shí)屏幕上顯示當(dāng)天營(yíng)業(yè)的每種商品的銷售量,銷售金額及總營(yíng)業(yè)額。注意,商品類的數(shù)據(jù)成員應(yīng)增加有商品的銷售量和銷售金額??偁I(yíng)業(yè)額是所有商品的營(yíng)業(yè)額之和,可用靜態(tài)數(shù)據(jù)成員實(shí)現(xiàn)。或可由原商品類派生出一個(gè)特殊的類,增加上面的數(shù)據(jù)成員及相應(yīng)的成員函數(shù)。二、問(wèn)題分析:由設(shè)計(jì)題目的要求,我們需要對(duì)設(shè)計(jì)一個(gè)能夠統(tǒng)計(jì)所銷售商品的代碼、名稱、價(jià)格、數(shù)量等信息,并且能夠通過(guò)輸入選擇鍵調(diào)出倉(cāng)庫(kù)中所有商品的所有信息;實(shí)現(xiàn)通過(guò)代碼來(lái)查詢某個(gè)商品,并且輸出該商品的所有信息;能夠在用戶購(gòu)買商品時(shí),根據(jù)情況給予用戶反饋信息,其中包括購(gòu)買商品名稱、代碼、單價(jià)、所買數(shù)量,并對(duì)該商品進(jìn)行一次小結(jié),告知用戶消費(fèi)情況;購(gòu)買結(jié)束后,統(tǒng)計(jì)用戶所消費(fèi)的總金額,記錄其所付金額以及找零金額。實(shí)現(xiàn)這些功能,需要聲明構(gòu)造函數(shù)Sale(),包含數(shù)據(jù)成員商品代碼、名字、價(jià)格、數(shù)量。另外,創(chuàng)建鏈表,用于儲(chǔ)存商品錄入信息,購(gòu)買情況,以及所有商品的信息。利用switch語(yǔ)句來(lái)實(shí)現(xiàn)根據(jù)需要選擇不同的功能。創(chuàng)建鏈表,對(duì)頭結(jié)點(diǎn)進(jìn)行初始化,對(duì)數(shù)據(jù)域分配內(nèi)存大小,通過(guò)指針域訪問(wèn)結(jié)點(diǎn),來(lái)實(shí)現(xiàn)元素的儲(chǔ)存調(diào)用等。定義子函數(shù),來(lái)實(shí)現(xiàn)商品的錄入、查詢、顯示、購(gòu)買等功能。錄入功能需要包含商品的一些信息,如:代碼、名稱、價(jià)格等;查詢功能則是為了方便用戶獲得所需購(gòu)買物品的一些信息;顯示功能可以使用戶對(duì)倉(cāng)庫(kù)的儲(chǔ)存情況一目了然;購(gòu)買功能主要是進(jìn)行商品的結(jié)算。編寫過(guò)程中,代碼和名字需應(yīng)用字符串,數(shù)量以整型輸出,考慮到上平的數(shù)量可能會(huì)很多,故定義為unsigned int quality,價(jià)格以浮點(diǎn)型輸出。三、算法設(shè)計(jì):1、需要定義一個(gè)構(gòu)造函數(shù)Sale.包含數(shù)據(jù)成員:代碼、名稱、價(jià)格、數(shù)量。2、定義主函數(shù),編寫菜單程序,通過(guò)判斷輸入的格式是否正確,選擇是否在屏幕上顯示菜單,利用switch語(yǔ)句來(lái)選擇不同的功能。4、創(chuàng)建鏈表,它包括數(shù)據(jù)域和指針域,數(shù)據(jù)域用于群體中元素的內(nèi)容,通過(guò)指針來(lái)訪問(wèn)結(jié)點(diǎn)。并對(duì)頭結(jié)點(diǎn)進(jìn)行初始化。對(duì)結(jié)點(diǎn)動(dòng)態(tài)分配內(nèi)存,存儲(chǔ)錄入商品的全部信息,并可以在需需要的時(shí)候?qū)⑾鄳?yīng)的信息調(diào)出來(lái)。5、定義子函數(shù),通過(guò)調(diào)用來(lái)實(shí)現(xiàn)所選功能。6、運(yùn)用switch語(yǔ)句選擇鍵入0、1、2、3或4 ,選擇所需進(jìn)入功能。選擇1,調(diào)用1號(hào)子函數(shù),進(jìn)行商品錄入,錄入商品的代碼、名字、價(jià)格和數(shù)量;選擇2,調(diào)用2號(hào)子函數(shù),進(jìn)入商品查詢系統(tǒng),輸入所要查詢商品的代碼,如果存在此商品,便會(huì)輸出該商品的一切信息。選擇3,可以檢錄到所有庫(kù)存商品的信息,方便用戶選擇;選擇4,根據(jù)錄入信息鍵入所要購(gòu)買商品的代碼和數(shù)量,并在購(gòu)買一件商品結(jié)束后,輸出用戶的購(gòu)買信息;選擇0,表示運(yùn)行結(jié)束,退出系統(tǒng)。6、應(yīng)用一個(gè)功能完成后,都會(huì)有提示供用戶選擇,方便用戶,也能使程序運(yùn)行通暢。四、用戶手冊(cè):程序運(yùn)行時(shí),首先根據(jù)系統(tǒng)提示來(lái)選擇需要進(jìn)入的功能1、由于該程序編輯過(guò)程中并沒(méi)有儲(chǔ)存上平信息,因此需要錄入商品信息,輸入1即可。系統(tǒng)會(huì)提示輸入代碼、名稱、價(jià)格和數(shù)量。錄入一個(gè)后提示是否繼續(xù)輸入,選擇Y/N。2、商品查詢功能選擇三,根據(jù)所輸入的商品代碼,判斷是否存在所查商品,倉(cāng)庫(kù)中有,輸出該商品的全部信息,供消費(fèi)者參考;如果沒(méi)有則提示:“無(wú)此商品”。3、輸入3,則會(huì)顯示當(dāng)時(shí)情況下所有商品的庫(kù)存信息。4、輸入4,2表示購(gòu)買商品,輸入2后會(huì)提示是否繼續(xù)購(gòu)買,如果我們要繼續(xù),只需輸入任意鍵(空格、Enter鍵除外)。必須注意的是,如果輸入數(shù)字,則只能是一位數(shù),兩位或多位,則會(huì)導(dǎo)致程序無(wú)法正常運(yùn)行。購(gòu)買時(shí)會(huì)提示輸入所買商品的代碼以及數(shù)量。每一次購(gòu)買結(jié)束屏幕上都會(huì)顯示所買商品的信息:代碼=名稱=價(jià)格=數(shù)量=小計(jì)(元)。如果所買商品代碼未曾錄入,會(huì)提示沒(méi)有該商品。5、鍵入0,退出系統(tǒng)。五、調(diào)試過(guò)程:錯(cuò)誤之處;1、代碼和名字分別定義為整型和字符型。2、未對(duì)鏈表頭結(jié)點(diǎn)進(jìn)行初始化。3、數(shù)據(jù)域中沒(méi)有分配內(nèi)存。 4、在do-while語(yǔ)句結(jié)束時(shí)沒(méi)有返回頭結(jié)點(diǎn)。 5、顯示程序不能實(shí)現(xiàn),賣出商品后沒(méi)有辦法在原有的數(shù)據(jù)上減去賣出的部分,顯示的仍舊是錄入商品的全部數(shù)量。導(dǎo)致的后果:第一個(gè)錯(cuò)誤導(dǎo)致在訪問(wèn)結(jié)點(diǎn)無(wú)法進(jìn)行;與后面的不匹配。第二個(gè)錯(cuò)誤,在運(yùn)行程序時(shí),無(wú)論時(shí)錄入商品信息還是購(gòu)買商品均不能進(jìn)行第二步操作;第三個(gè)錯(cuò)誤引發(fā)的后果與錯(cuò)誤2一樣;錯(cuò)誤4則導(dǎo)致函數(shù)creat沒(méi)有返回值。最后的一個(gè)錯(cuò)誤不符合任務(wù)書上的要求改正方法: 1、定義代碼和名字改用string;2、對(duì)頭結(jié)點(diǎn)進(jìn)行初始化并動(dòng)態(tài)分配一個(gè)內(nèi)存大?。?Head=(Link)new Node;/每次動(dòng)態(tài)分配一個(gè)Node內(nèi)存大小。 Head-num=; Head-name=; Head-jiage=0.0; Head-shuliang=0; Head-next=NULL;3、返回頭結(jié)點(diǎn):return Head;。收獲:在編寫次程序時(shí),由于對(duì)來(lái)鏈表不是相當(dāng)了解,以至于定義變量num、name時(shí)沒(méi)有注意其類型,無(wú)法與后面Head-num=;Head-name=;if(p-num=num)相匹配,程序出現(xiàn)錯(cuò)誤。而后通過(guò)問(wèn)同學(xué)才有了一定的了解。同時(shí)還了解到應(yīng)用量表的時(shí)候需哎喲注意對(duì)頭結(jié)點(diǎn)進(jìn)行初始化以及分配空間,用以儲(chǔ)存更多的元素內(nèi)容,否則的話在運(yùn)行的過(guò)程中,錄入一鐘商品的信息完成后,程序會(huì)自動(dòng)結(jié)束。最后一個(gè)錯(cuò)誤是由于自己大一造成的。其次,第一次調(diào)試發(fā)現(xiàn),程序無(wú)法進(jìn)行商品查詢功能,這表示,該程序尚不完整,經(jīng)過(guò)思考以及同學(xué)的幫助,對(duì)其進(jìn)行了完善:首先定義一個(gè)子函數(shù):Link Search(Link Head,string& num)Link p;p=Head; while(p!=NULL)if(p-num=num)return p;elsep=p-next;cout無(wú)此商品!endl;return p;。通過(guò)輸入商品代碼,來(lái)查詢倉(cāng)庫(kù)中是否有該商品。另外在運(yùn)行程序是發(fā)現(xiàn),當(dāng)選擇查看所有商品信息時(shí)輸出結(jié)果太亂信息無(wú)法與提示對(duì)齊,我們可以在頭文件中加入#include ,后面的輸出程序可以改成:coutsetw(15)leftm_codesetw(15)leftm_namesetw(15)leftm_pricesetw(15)leftm_quantityendl;但是由于本人對(duì)齊不太了解,故選擇輸出空格,盡量使其對(duì)齊。 改進(jìn)設(shè)想:本程序最大的缺點(diǎn)就是沒(méi)有在程序中預(yù)先儲(chǔ)存商品信息,因此在運(yùn)行程序過(guò)程中需要首先錄入一部分商品。為了方便方便,我們可以針對(duì)此問(wèn)題來(lái)進(jìn)行修改,在容器中儲(chǔ)存一些比較常用的商品(不少于二十種)。 運(yùn)行程序過(guò)程中,如果我們選擇了2,購(gòu)買商品,首先會(huì)顯示:結(jié)束買入請(qǐng)按N,其他任意鍵表示繼續(xù)買入!這里的任意鍵不為空格和輸入鍵,并且輸入數(shù)字的情況下只能為一位,否則無(wú)法輸入代碼,程序無(wú)法繼續(xù)進(jìn)行。六、測(cè)試結(jié)果: 運(yùn)行程序后,屏幕顯示內(nèi)容為: -歡迎光臨,選擇進(jìn)入系統(tǒng)- * 1.錄入信息 2.查詢商品 3.顯示數(shù)據(jù) 4、購(gòu)買商品 0.退出系統(tǒng) *首先錄入商品,鍵入1:商品入庫(kù)信息代碼:001名稱:a價(jià)格:8數(shù)量:100信息錄入成功!繼續(xù)?(Y/N)如果繼續(xù)錄入則鍵入Y,重復(fù)上面的操作。如果鍵入N,再次進(jìn)行功能選擇:鍵入2,進(jìn)行商品查詢: 鍵入3,顯示所有的商品信息,屏幕顯示:根據(jù)提示繼續(xù)進(jìn)行選擇,鍵入4,進(jìn)行商品購(gòu)買,每次購(gòu)買結(jié)束后均有提示,如圖:選擇Y則繼續(xù)進(jìn)行上述操作,反之則為:選擇0,屏幕顯示“已退出系統(tǒng)!”通過(guò)對(duì)該程序的簡(jiǎn)單測(cè)試,可以知道它的總工作流程可概括為下圖所示:菜單選項(xiàng)錄入成功輸出所查商品信息所買商品信息以及需要付的金額。1錄入商品代碼:名稱:價(jià)格:數(shù)量:2、商品查詢代碼:3、顯示數(shù)據(jù)所有商品信息4、購(gòu)買商品代碼:數(shù)量:0、退出系統(tǒng)七、課后總結(jié):通過(guò)此次課程設(shè)計(jì),我學(xué)到了好多東西。由于之前對(duì)C+的知識(shí)積累不夠,使得本次課程設(shè)計(jì)遇到了不少的困難。通過(guò)咨詢老師同學(xué)和查看參考資料,困難逐個(gè)兒解決了,隨著困難的解決,我學(xué)到了不少的知識(shí),使我明確了以后的努力方向。本次課程設(shè)計(jì)讓我有機(jī)會(huì)能把之前學(xué)的C+知識(shí)系統(tǒng)的串聯(lián)起來(lái)。尤其使對(duì)鏈表方面的知識(shí),有了更深入的了解。在此過(guò)程中,通過(guò)不斷的調(diào)試修改調(diào)試循環(huán),對(duì)程序進(jìn)行一步步的完善,最后進(jìn)行測(cè)試,對(duì)一些功能進(jìn)行應(yīng)用,檢查是否能夠?qū)崿F(xiàn)任務(wù)書上的要求到的所有功能,能否完美的實(shí)現(xiàn)這些功能,這不僅僅使對(duì)我們知識(shí)方面的考驗(yàn),也是在考驗(yàn)我們的細(xì)心程度以及檢查問(wèn)題并改正問(wèn)題的能力,更是對(duì)我們耐心的考驗(yàn)。通過(guò)這次課程設(shè)計(jì),培養(yǎng)了我分析實(shí)際應(yīng)用系統(tǒng)和設(shè)計(jì)設(shè)計(jì)實(shí)際應(yīng)用系統(tǒng)的能力,提高了應(yīng)用面向?qū)ο蟪绦蛟O(shè)計(jì)工具進(jìn)行實(shí)際系統(tǒng)的設(shè)計(jì)的能力。八、參考文獻(xiàn)1 鄭莉,董淵,張瑞豐. C+語(yǔ)言程序設(shè)計(jì).北京:清華大學(xué)出版社,2004年1月第三版。九、附錄:/商品銷售統(tǒng)計(jì)程序#include #include using namespace std;struct Sale string num; string name; float jiage; unsigned int shuliang; struct Sale* next;typedef struct Sale Node;typedef Node* Link;/創(chuàng)建鏈表。Link Create(Link Head) Head=(Link)new Node; Head-num=; Head-name=; Head-jiage=0.0; Head-shuliang=0; Head-next=NULL; /- Link p;/定義一個(gè)用來(lái)運(yùn)算的指針 ptr。 p=Head; Link DNode; char GoOn; do cout商品入庫(kù)信息! endl; string num,name; float jiage; unsigned int shuliang; cout代碼:num; cout名稱:name; cout價(jià)格:jiage; while(cin.fail() cout出現(xiàn)錯(cuò)誤,請(qǐng)重新輸入:jiage; cout數(shù)量:shuliang; while(cin.fail() cout出現(xiàn)錯(cuò)誤,請(qǐng)重新輸入:shuliang; DNode=(Link)new Node; DNode-num=num; DNode-name=name; DNode-jiage=jiage; DNode-shuliang=shuliang; DNode-next=NULL; p-next=DNode; p=DNode; coutGoOn; while(GoOn=Y|GoOn=y); return Head;/釋放鏈表。void Release(Link Head) Link p; while(Head!=NULL) p=Head; Head=Head-next; delete p; /查詢。Link Search(Link Head,string& num) Link p; p=Head; while(p!=NULL) if(p-num=num) return p; else p=p-next; cout無(wú)此商品!next; cout所有商品信息endl; cout代碼=名稱=價(jià)格=數(shù)量endl; while(p!=NULL) coutnum name jiage shuliangnext; void Display_One(Link Head,string& num,unsigned shuliang) Link p; p=Search(Head,num); cout代碼=名稱=價(jià)格=數(shù)量=小計(jì)(元)endl; coutnum name jiage shuliang jiagejiage*shuliang); return sum;void xg(Link Head,string& num,unsigned shuliang)Link p;p= Search(Head,num); p-shuliang=p-shuliang-shuliang; /總結(jié)帳。void Total(Link Head) Link p; p=Head; float sum(0); float fukuan; char GoOn; while(1) cout結(jié)束買入請(qǐng)按N,其它任意鍵表示繼續(xù)買入! GoOn; if(GoOn=N|GoOn=n) break; else string num; unsigned int shuliang; cout代碼:num;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《幼兒園教育基礎(chǔ)》電子教案-第1單元
- 宏志助航計(jì)劃就業(yè)能力培訓(xùn)體系
- 美團(tuán)招聘文員培訓(xùn)
- 《托育服務(wù)政策法規(guī)與職業(yè)倫理》課件-第五章
- 《論甲午海戰(zhàn)談》課件
- 獨(dú)立結(jié)算協(xié)議書
- 達(dá)人經(jīng)濟(jì)代理合同協(xié)議
- 校園環(huán)保協(xié)議書
- 車位廠房轉(zhuǎn)讓合同協(xié)議
- 河壩合同協(xié)議書
- 2025網(wǎng)絡(luò)安全協(xié)議合同
- 混凝土考試試題及答案
- 廣東2025年廣東省生物制品與藥物研究所招聘12人筆試歷年參考題庫(kù)附帶答案詳解
- 2024北京西城區(qū)五年級(jí)(下)期末英語(yǔ)試題及答案
- 《古埃及文明》課件
- 歷屆全國(guó)初中應(yīng)用物理知識(shí)競(jìng)賽匯編
- 國(guó)企筆試招聘題目
- 醫(yī)院培訓(xùn)課件:《西門子Syngo.via工作站的臨床應(yīng)用》
- 企業(yè)刑事合規(guī)培訓(xùn)課件
- 訂做門合同協(xié)議范本
- 2025年新版《保障中小企業(yè)款項(xiàng)支付條例》解讀學(xué)習(xí)課件
評(píng)論
0/150
提交評(píng)論