




已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
課程設(shè)計報告課程程序設(shè)計語言課程設(shè)計課程設(shè)計名稱商品銷售統(tǒng)計程序?qū)W生姓名 項正武學(xué)號11041111專業(yè)班級110411指導(dǎo)教師2014年2月一、課程設(shè)計題目:商品銷售統(tǒng)計主要內(nèi)容和要求:編寫商品銷售統(tǒng)計程序,商品的信息有:商品的名稱,計量單位(重量或件),單價。所有商品的信息事先已存入計算機,屏幕上顯示所有商品的名稱,選擇商品名,輸入商品計量單位(如重量,件數(shù)等),根據(jù)單價算出總價??蛻粢淮钨徫锟赡苜徺I多種商品,程序應(yīng)計算出客戶應(yīng)付的錢款數(shù)。程序分為兩個部分:第一部分用于輸入商品的信息并允許修改和刪除;第二部分實現(xiàn)銷售統(tǒng)計。程序運行時由用戶選擇進入哪一部分功能,并能在運行時在兩部分之間切換。第二部分運行時,首先顯示所有商品名稱及代碼(商品數(shù)目較多時,應(yīng)考慮分屏顯示),用戶輸入商品代碼及商品重量或件數(shù),用戶一次操作可輸入若干商品的購買信息,然后輸入一個特殊的代碼(如-1)表示本次購物結(jié)束。此時。程序計算出應(yīng)付錢款數(shù)并顯示。測試數(shù)據(jù)程序應(yīng)輸入不少于10種商品的信息,并進行模擬運行。實現(xiàn)提示本程序的商品信息管理可采用與課程設(shè)計題目二類似的數(shù)據(jù)結(jié)構(gòu),既定義一個商品類,每種商品作為商品類的實例(對象)存儲在鏈表節(jié)點中。選做內(nèi)容程序在營業(yè)結(jié)束時統(tǒng)計每種商品的銷售量,銷售金額及總營業(yè)額。因此第二部分應(yīng)有營業(yè)結(jié)束的選擇,當(dāng)用戶選擇此項時屏幕上顯示當(dāng)天營業(yè)的每種商品的銷售量,銷售金額及總營業(yè)額。注意,商品類的數(shù)據(jù)成員應(yīng)增加有商品的銷售量和銷售金額??偁I業(yè)額是所有商品的營業(yè)額之和,可用靜態(tài)數(shù)據(jù)成員實現(xiàn)?;蚩捎稍唐奉惻缮鲆粋€特殊的類,增加上面的數(shù)據(jù)成員及相應(yīng)的成員函數(shù)。二、問題分析:由設(shè)計題目的要求,我們需要對設(shè)計一個能夠統(tǒng)計所銷售商品的代碼、名稱、價格、數(shù)量等信息,并且能夠通過輸入選擇鍵調(diào)出倉庫中所有商品的所有信息;實現(xiàn)通過代碼來查詢某個商品,并且輸出該商品的所有信息;能夠在用戶購買商品時,根據(jù)情況給予用戶反饋信息,其中包括購買商品名稱、代碼、單價、所買數(shù)量,并對該商品進行一次小結(jié),告知用戶消費情況;購買結(jié)束后,統(tǒng)計用戶所消費的總金額,記錄其所付金額以及找零金額。實現(xiàn)這些功能,需要聲明構(gòu)造函數(shù)Sale(),包含數(shù)據(jù)成員商品代碼、名字、價格、數(shù)量。另外,創(chuàng)建鏈表,用于儲存商品錄入信息,購買情況,以及所有商品的信息。利用switch語句來實現(xiàn)根據(jù)需要選擇不同的功能。創(chuàng)建鏈表,對頭結(jié)點進行初始化,對數(shù)據(jù)域分配內(nèi)存大小,通過指針域訪問結(jié)點,來實現(xiàn)元素的儲存調(diào)用等。定義子函數(shù),來實現(xiàn)商品的錄入、查詢、顯示、購買等功能。錄入功能需要包含商品的一些信息,如:代碼、名稱、價格等;查詢功能則是為了方便用戶獲得所需購買物品的一些信息;顯示功能可以使用戶對倉庫的儲存情況一目了然;購買功能主要是進行商品的結(jié)算。編寫過程中,代碼和名字需應(yīng)用字符串,數(shù)量以整型輸出,考慮到上平的數(shù)量可能會很多,故定義為unsigned int quality,價格以浮點型輸出。三、算法設(shè)計:1、需要定義一個構(gòu)造函數(shù)Sale.包含數(shù)據(jù)成員:代碼、名稱、價格、數(shù)量。2、定義主函數(shù),編寫菜單程序,通過判斷輸入的格式是否正確,選擇是否在屏幕上顯示菜單,利用switch語句來選擇不同的功能。4、創(chuàng)建鏈表,它包括數(shù)據(jù)域和指針域,數(shù)據(jù)域用于群體中元素的內(nèi)容,通過指針來訪問結(jié)點。并對頭結(jié)點進行初始化。對結(jié)點動態(tài)分配內(nèi)存,存儲錄入商品的全部信息,并可以在需需要的時候?qū)⑾鄳?yīng)的信息調(diào)出來。5、定義子函數(shù),通過調(diào)用來實現(xiàn)所選功能。6、運用switch語句選擇鍵入0、1、2、3或4 ,選擇所需進入功能。選擇1,調(diào)用1號子函數(shù),進行商品錄入,錄入商品的代碼、名字、價格和數(shù)量;選擇2,調(diào)用2號子函數(shù),進入商品查詢系統(tǒng),輸入所要查詢商品的代碼,如果存在此商品,便會輸出該商品的一切信息。選擇3,可以檢錄到所有庫存商品的信息,方便用戶選擇;選擇4,根據(jù)錄入信息鍵入所要購買商品的代碼和數(shù)量,并在購買一件商品結(jié)束后,輸出用戶的購買信息;選擇0,表示運行結(jié)束,退出系統(tǒng)。6、應(yīng)用一個功能完成后,都會有提示供用戶選擇,方便用戶,也能使程序運行通暢。四、用戶手冊:程序運行時,首先根據(jù)系統(tǒng)提示來選擇需要進入的功能1、由于該程序編輯過程中并沒有儲存上平信息,因此需要錄入商品信息,輸入1即可。系統(tǒng)會提示輸入代碼、名稱、價格和數(shù)量。錄入一個后提示是否繼續(xù)輸入,選擇Y/N。2、商品查詢功能選擇三,根據(jù)所輸入的商品代碼,判斷是否存在所查商品,倉庫中有,輸出該商品的全部信息,供消費者參考;如果沒有則提示:“無此商品”。3、輸入3,則會顯示當(dāng)時情況下所有商品的庫存信息。4、輸入4,2表示購買商品,輸入2后會提示是否繼續(xù)購買,如果我們要繼續(xù),只需輸入任意鍵(空格、Enter鍵除外)。必須注意的是,如果輸入數(shù)字,則只能是一位數(shù),兩位或多位,則會導(dǎo)致程序無法正常運行。購買時會提示輸入所買商品的代碼以及數(shù)量。每一次購買結(jié)束屏幕上都會顯示所買商品的信息:代碼=名稱=價格=數(shù)量=小計(元)。如果所買商品代碼未曾錄入,會提示沒有該商品。5、鍵入0,退出系統(tǒng)。五、調(diào)試過程:錯誤之處;1、代碼和名字分別定義為整型和字符型。2、未對鏈表頭結(jié)點進行初始化。3、數(shù)據(jù)域中沒有分配內(nèi)存。 4、在do-while語句結(jié)束時沒有返回頭結(jié)點。 5、顯示程序不能實現(xiàn),賣出商品后沒有辦法在原有的數(shù)據(jù)上減去賣出的部分,顯示的仍舊是錄入商品的全部數(shù)量。導(dǎo)致的后果:第一個錯誤導(dǎo)致在訪問結(jié)點無法進行;與后面的不匹配。第二個錯誤,在運行程序時,無論時錄入商品信息還是購買商品均不能進行第二步操作;第三個錯誤引發(fā)的后果與錯誤2一樣;錯誤4則導(dǎo)致函數(shù)creat沒有返回值。最后的一個錯誤不符合任務(wù)書上的要求改正方法: 1、定義代碼和名字改用string;2、對頭結(jié)點進行初始化并動態(tài)分配一個內(nèi)存大?。?Head=(Link)new Node;/每次動態(tài)分配一個Node內(nèi)存大小。 Head-num=; Head-name=; Head-jiage=0.0; Head-shuliang=0; Head-next=NULL;3、返回頭結(jié)點:return Head;。收獲:在編寫次程序時,由于對來鏈表不是相當(dāng)了解,以至于定義變量num、name時沒有注意其類型,無法與后面Head-num=;Head-name=;if(p-num=num)相匹配,程序出現(xiàn)錯誤。而后通過問同學(xué)才有了一定的了解。同時還了解到應(yīng)用量表的時候需哎喲注意對頭結(jié)點進行初始化以及分配空間,用以儲存更多的元素內(nèi)容,否則的話在運行的過程中,錄入一鐘商品的信息完成后,程序會自動結(jié)束。最后一個錯誤是由于自己大一造成的。其次,第一次調(diào)試發(fā)現(xiàn),程序無法進行商品查詢功能,這表示,該程序尚不完整,經(jīng)過思考以及同學(xué)的幫助,對其進行了完善:首先定義一個子函數(shù):Link Search(Link Head,string& num)Link p;p=Head; while(p!=NULL)if(p-num=num)return p;elsep=p-next;cout無此商品!endl;return p;。通過輸入商品代碼,來查詢倉庫中是否有該商品。另外在運行程序是發(fā)現(xiàn),當(dāng)選擇查看所有商品信息時輸出結(jié)果太亂信息無法與提示對齊,我們可以在頭文件中加入#include ,后面的輸出程序可以改成:coutsetw(15)leftm_codesetw(15)leftm_namesetw(15)leftm_pricesetw(15)leftm_quantityendl;但是由于本人對齊不太了解,故選擇輸出空格,盡量使其對齊。 改進設(shè)想:本程序最大的缺點就是沒有在程序中預(yù)先儲存商品信息,因此在運行程序過程中需要首先錄入一部分商品。為了方便方便,我們可以針對此問題來進行修改,在容器中儲存一些比較常用的商品(不少于二十種)。 運行程序過程中,如果我們選擇了2,購買商品,首先會顯示:結(jié)束買入請按N,其他任意鍵表示繼續(xù)買入!這里的任意鍵不為空格和輸入鍵,并且輸入數(shù)字的情況下只能為一位,否則無法輸入代碼,程序無法繼續(xù)進行。六、測試結(jié)果: 運行程序后,屏幕顯示內(nèi)容為: -歡迎光臨,選擇進入系統(tǒng)- * 1.錄入信息 2.查詢商品 3.顯示數(shù)據(jù) 4、購買商品 0.退出系統(tǒng) *首先錄入商品,鍵入1:商品入庫信息代碼:001名稱:a價格:8數(shù)量:100信息錄入成功!繼續(xù)?(Y/N)如果繼續(xù)錄入則鍵入Y,重復(fù)上面的操作。如果鍵入N,再次進行功能選擇:鍵入2,進行商品查詢: 鍵入3,顯示所有的商品信息,屏幕顯示:根據(jù)提示繼續(xù)進行選擇,鍵入4,進行商品購買,每次購買結(jié)束后均有提示,如圖:選擇Y則繼續(xù)進行上述操作,反之則為:選擇0,屏幕顯示“已退出系統(tǒng)!”通過對該程序的簡單測試,可以知道它的總工作流程可概括為下圖所示:菜單選項錄入成功輸出所查商品信息所買商品信息以及需要付的金額。1錄入商品代碼:名稱:價格:數(shù)量:2、商品查詢代碼:3、顯示數(shù)據(jù)所有商品信息4、購買商品代碼:數(shù)量:0、退出系統(tǒng)七、課后總結(jié):通過此次課程設(shè)計,我學(xué)到了好多東西。由于之前對C+的知識積累不夠,使得本次課程設(shè)計遇到了不少的困難。通過咨詢老師同學(xué)和查看參考資料,困難逐個兒解決了,隨著困難的解決,我學(xué)到了不少的知識,使我明確了以后的努力方向。本次課程設(shè)計讓我有機會能把之前學(xué)的C+知識系統(tǒng)的串聯(lián)起來。尤其使對鏈表方面的知識,有了更深入的了解。在此過程中,通過不斷的調(diào)試修改調(diào)試循環(huán),對程序進行一步步的完善,最后進行測試,對一些功能進行應(yīng)用,檢查是否能夠?qū)崿F(xiàn)任務(wù)書上的要求到的所有功能,能否完美的實現(xiàn)這些功能,這不僅僅使對我們知識方面的考驗,也是在考驗我們的細心程度以及檢查問題并改正問題的能力,更是對我們耐心的考驗。通過這次課程設(shè)計,培養(yǎng)了我分析實際應(yīng)用系統(tǒng)和設(shè)計設(shè)計實際應(yīng)用系統(tǒng)的能力,提高了應(yīng)用面向?qū)ο蟪绦蛟O(shè)計工具進行實際系統(tǒng)的設(shè)計的能力。八、參考文獻1 鄭莉,董淵,張瑞豐. C+語言程序設(shè)計.北京:清華大學(xué)出版社,2004年1月第三版。九、附錄:/商品銷售統(tǒng)計程序#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;/定義一個用來運算的指針 ptr。 p=Head; Link DNode; char GoOn; do cout商品入庫信息! endl; string num,name; float jiage; unsigned int shuliang; cout代碼:num; cout名稱:name; cout價格:jiage; while(cin.fail() cout出現(xiàn)錯誤,請重新輸入:jiage; cout數(shù)量:shuliang; while(cin.fail() cout出現(xiàn)錯誤,請重新輸入: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無此商品!next; cout所有商品信息endl; cout代碼=名稱=價格=數(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代碼=名稱=價格=數(shù)量=小計(元)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é)束買入請按N,其它任意鍵表示繼續(xù)買入! GoOn; if(GoOn=N|GoOn=n) break; else string num; unsigned int shuliang; cout代碼:num;
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公示牌安裝合同協(xié)議書
- 陳列活動方案協(xié)議書
- 拔出指甲治療
- 郵政掛號寄遞協(xié)議書
- 高空吊裝免責(zé)協(xié)議書
- 兒童俱樂部安全協(xié)議書
- 交行信用卡減免協(xié)議書
- csc留學(xué)資助協(xié)議書
- 農(nóng)村搬遷房轉(zhuǎn)讓協(xié)議書
- 飯店著火賠償協(xié)議書
- 肥胖癥診療指南(2024年版)解讀
- 麥收消防安全培訓(xùn)課件
- 《科普技巧常識》課件
- 2025年中國全電腦橫機市場現(xiàn)狀分析及前景預(yù)測報告
- 大型活動場館停車管理方案與技術(shù)措施
- 醫(yī)院基建管理試題及答案
- 2025年全國保密教育線上培訓(xùn)考試試題庫及答案(奪冠)帶答案詳解
- 滬教牛津版(深圳用)英語五年級下冊Unit-11-Chinese-festivals課件
- DBJ50-T-078-2016重慶市城市道路工程施工質(zhì)量驗收規(guī)范
- MOOC 跨文化交際通識通論-揚州大學(xué) 中國大學(xué)慕課答案
- GA 1283-2015住宅物業(yè)消防安全管理
評論
0/150
提交評論