c程序設(shè)計語言課程設(shè)計收銀臺結(jié)算程序1_第1頁
c程序設(shè)計語言課程設(shè)計收銀臺結(jié)算程序1_第2頁
c程序設(shè)計語言課程設(shè)計收銀臺結(jié)算程序1_第3頁
c程序設(shè)計語言課程設(shè)計收銀臺結(jié)算程序1_第4頁
c程序設(shè)計語言課程設(shè)計收銀臺結(jié)算程序1_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、合肥學(xué)院計算機(jī)科學(xué)與技術(shù)系課程設(shè)計報告20092010學(xué)年第二學(xué)期課程程序設(shè)計語言u課程設(shè)計課程設(shè)計名稱收銀臺結(jié)算程序?qū)W生姓名學(xué)號0904032024專業(yè)班級網(wǎng)絡(luò)工程(2)班2010年7月(一)需求分析現(xiàn)在某大型超市由于購物人員太多需要一個收銀臺結(jié)算程序,以方便消費 者能夠快速付賬。該程序中能夠各種商品的全部信息,包括商品的編號、名稱、 數(shù)量、進(jìn)價、售價等。程序主要是用來方便消費者付賬,當(dāng)消費者選定商品時收 銀臺的工作人員只要把消費者買的商品的數(shù)量輸進(jìn)去就可以了,該程序會自動的計算其總額并告知消費者要交多少金額。因此該程序的主要功能就是幫助收銀臺 的工作人員實現(xiàn)收款的目的。所以在制作該軟件時首

2、先要有一系列的子函數(shù):當(dāng)輸入商品的編號時就可以知道它的數(shù)量、進(jìn)價、售價等。當(dāng)工作人員收銀時只要輸入商品的編號,并輸入其數(shù)量就可以知道消費者要付金多少,然后系統(tǒng)就會根據(jù)消費者給的金額會打印出相應(yīng)的購物小票。 小票上會顯示消費者所購商品的編 號、數(shù)量、以及消費者所給的金額和應(yīng)該找零多少。當(dāng)消費者不能提供所購商品的編號時,系統(tǒng)則無法進(jìn)行其各項的操作。在 收銀的過程中如果遇到了消費者所給的金額不夠則系統(tǒng)會自動出現(xiàn)提示:所交金額不足。每當(dāng)消費者買走一件商品時系統(tǒng)在顯示時變回顯示其數(shù)量減少一個,在開始設(shè)計時為了能夠滿足要求因此要定義空間足夠大的id,name count.分別各為100.在計算時輸入商品的

3、數(shù)量然后系統(tǒng)就會用該商品的單價乘以數(shù)量就得 到了消費者應(yīng)付的金額。(二)設(shè)計根據(jù)上訴需求應(yīng)該定義一個 DATA類,該類中定義了產(chǎn)品的編號id,產(chǎn)品 名稱n ame商品的已售數(shù)量salecou nt,還有商品的進(jìn)價buy,和商品的售價sale。 在public中有成員函數(shù)getid,用于得到商品的編號;get name,用于得到商品 的名稱;getsale,用于得到商品的售價;getbuy,用于得到商品的進(jìn)價。在此 基礎(chǔ)上又派生出另一個類 WAY在WAY類中有成員函數(shù)newfile,用于新建各種商品的信息,在 newfile 中會分別要求輸入商品的編號、名稱、數(shù)量、進(jìn)價、售價。在一次輸入各種商品

4、 的各種信息后可以調(diào)用另一個成員函數(shù)save,將輸入的商品的各種信息儲存起來。要進(jìn)行收銀工作時選擇sale子函數(shù)進(jìn)行收銀工作,在輸入商品的各種信息 后可以調(diào)用函數(shù)showdata把商品的編號、名稱、數(shù)量以及進(jìn)價和售價都顯示出 來以方便查看。在 WAY中open函數(shù)主要是用來打開已經(jīng)保存好的各種商品的各種基本信息。在程序運行時將開始準(zhǔn)備好的數(shù)據(jù)輸入這樣就變的更加方便了。 在有很多商品的情況下要臨時找到一個商品的基本信息一般比較困難, 因此還要 用到 binsearch 來查找商品。當(dāng)要想找到摸個商品時只要將其編號輸入系統(tǒng)就可 以根據(jù)編號進(jìn)行查找, 從而找到所要的商品。 在商品已經(jīng)銷售了一部分時可

5、以計 算一下這些商品的總的進(jìn)價因而 sumsale 函數(shù)就是來計算已經(jīng)銷售出去的商品 的總的進(jìn)價, 同樣,當(dāng)想知道已經(jīng)售出的這些商品所得到的利潤時就可以用函數(shù) sumgain, 這些函數(shù)都是主函數(shù) countmenu中的子函數(shù),在 countmenu函數(shù)中包 括已售總額、已售總進(jìn)價、已得純利潤、預(yù)銷售總額。在商場進(jìn)行交易時便會用 到函數(shù) sale 來進(jìn)行收銀工作,開始時輸入商品的編號如果沒有改編號則說明倉 庫中沒有該商品, 此時便會輸出“此產(chǎn)品已缺”,有該商品的則會提示你輸入 “輸 入數(shù)量”,在有提示:“輸入收到金額”,此時如果輸入的是負(fù)數(shù)或者超出該產(chǎn)品 的庫存量則系統(tǒng)會提示:“數(shù)量輸入不真確

6、”,等到一切都正確后系統(tǒng)便會輸出一 個購物小票:上面有商品的名稱、數(shù)量、單價、應(yīng)收、找零。在該系統(tǒng)實現(xiàn)其收銀功能后,我們可以對這一段時間所銷售的商品做一個統(tǒng) 計,包括對他的數(shù)量、售出量、進(jìn)價、售價、盈利多少等,當(dāng)選擇計算的子函數(shù) 時便可以對這些已經(jīng)售出的商品做一個系統(tǒng)的統(tǒng)計,在統(tǒng)計之后會輸入一個清 單。上面寫著這段時間所有售出的商品的各種信息, 已列表的形式把商品的編號、 名稱、已售出量、售價、進(jìn)價等。在類的設(shè)計中主要是數(shù)據(jù)成員以及成員函數(shù), 在WAY類中我們首先要把商品 的基本信息能用數(shù)據(jù)成員表示,于是便要定義編號、名稱、數(shù)量、進(jìn)價、售價。 在主函數(shù)menu中有1.輸入產(chǎn)品信息2.顯示3.保

7、存4.打開5.菜單6.收銀7. 計算 0. 返回這幾項功能。在設(shè)計該程序時要考慮到開始時可以對商品的信息進(jìn) 行輸入,于是在子函數(shù) newfile 中便是將商品的信息輸入其中。 但考慮到由于商 品要是太多的話臨時輸入這些商品的信息太麻煩并且耽誤時間, 所以我們考慮到 用磁盤文件來處理, 在磁盤文件中我們先把各種商品的基本信息保存在里面, 等 到要用的時候就可以直接打開,因此我們用open函數(shù)來實現(xiàn)這個功能。(三)用戶手冊當(dāng)我們把收銀臺結(jié)算程序編寫好用于商場之后, 在消費者來付賬時, 我們首 先運行該程序, 這是主頁面會顯示 1.輸入產(chǎn)品信息 2. 顯示 3. 保存 4. 打開 5. 菜單 6.

8、收銀 7. 計算 0. 返回,“選擇菜單”的字樣。這是選擇 1 系統(tǒng)就會顯示 id 、name、count、buy、sale 。這是我們依次輸入商品的編號、名稱、數(shù)量、進(jìn) 價、售價后, 系統(tǒng)又會顯示 sn 這是再選擇所要操作的, 當(dāng)選擇 6 時進(jìn)入收銀狀 態(tài)。這時系統(tǒng)會提示你輸入產(chǎn)品編號、輸入數(shù)量、輸入收到金額、等全部輸入完 成后系統(tǒng)便會打印一個購物小票出來:購物小票 名稱:奶粉 數(shù)量:2 單價:140元 應(yīng)收:280元 找零:12元當(dāng)輸入的編號無法找到時系統(tǒng)便會顯示:not find 。當(dāng)選擇7時系統(tǒng)便會輸出:1.已售總額2.已售總進(jìn)價3.已得純利潤4.預(yù) 銷售總額5.進(jìn)價成本總額0.返回。

9、這時還要進(jìn)行子函數(shù)的選擇,選擇1時這是時在計算已經(jīng)售出商品的總額,系統(tǒng)會顯示280。選擇2時這是在計算已經(jīng)售出商品的總進(jìn)價,系統(tǒng)會顯示200,當(dāng)選擇3時這是在計算已經(jīng)售出商品所得的 總利潤,系統(tǒng)會顯示80,當(dāng)選擇4時這是在計算預(yù)銷售總額,系統(tǒng)會顯示310,當(dāng)選擇5時這是在計算進(jìn)價成本總額,系統(tǒng)會顯示 230。當(dāng)我們想結(jié)束計算著子 函數(shù)的調(diào)用時選擇0這是系統(tǒng)會自動跳出該子函數(shù)的運行然后顯示:輸入“選擇菜單”作為提示。當(dāng)我們已經(jīng)輸入很多商品的信息并都已成功售出時由于看不見主菜單的內(nèi)容了 這時就可以選擇5系統(tǒng)便會把住菜單顯示出來:1.輸入產(chǎn)品信息2.顯示3保存 4.打開5.菜單6.收銀7.計算0.返

10、回,當(dāng)我們選擇2時系統(tǒng)就會把商品現(xiàn)在 信息顯示出來。編號名稱當(dāng)前量已售量進(jìn)價 售價12奶粉100210014013洗衣機(jī)20010500 2000等各種商品的信息。只要按照系統(tǒng)的提示操作就會很順利的完成。(四)調(diào)試及測試由于該程序要包含各種商品的信息因此在運行該系統(tǒng)時首先要把各種商品的基本信息放在磁盤文件中,在應(yīng)用時直接就可以讀出這些商品的信息。在開始編寫該程序時沒有考慮到商品數(shù)量、價格的容量大小導(dǎo)致了在輸入商品的信 息時系統(tǒng)出現(xiàn)了錯誤,后來打開書本時看到書上的例子時想起來的從而改正了錯 誤,在編寫showdata,函數(shù)時我們要把商品的各種信息都顯示出來由于商品的 基本信息比較多,要考慮到輸出

11、時的整齊所以要要運用到setw函數(shù)來控制輸出時的界面1選擇菜單已售量進(jìn)價售價刪否編號 名稱當(dāng)前量12w&w3224667013tet選擇菜單gn:.5?B68800開始時由于沒有注意到所輸出來的空格數(shù)進(jìn)而導(dǎo)致了輸出來的界面有有點亂,之后又調(diào)整了輸出時的空格數(shù)才使得輸出來的界面變得相對美觀,在編寫sale函數(shù)時開始沒考慮到輸入提示,當(dāng)系統(tǒng)運行時不知道系統(tǒng)要我們做什么,之后意思到后就在開始時輸入了輸入提示,這樣當(dāng)系統(tǒng)運行時就可以按照系統(tǒng)對你的提示 進(jìn)操作了。在有很多商品的情況下要臨時找到一個商品的基本信息一般比較困 難,因此還要用到bin search來查找商品。當(dāng)要想找到摸個商品時只要將其編號輸

12、入系統(tǒng)就可以根據(jù)編號進(jìn)行查找從而找到所要的商品。在商品已經(jīng)銷售了一部分時可以計算一下這些商品的總的 進(jìn)價因而sumsale函數(shù)就是來計算已經(jīng)銷售出去的商品的總的進(jìn)價,同樣,當(dāng)想知道已經(jīng)售出的這些商品所得到的利潤時就可以用函數(shù)sumgain該系統(tǒng)中為了使得能夠把商品的各種信息都能輸出來并能夠顯示出來因此就運用了 cou ntme nu函數(shù)來把已經(jīng)售出商品和未售的出商品的各種信息輸入。系統(tǒng)會顯示1.已售總額2.已售總進(jìn)價3.已得純利潤4.預(yù)銷售總額5.進(jìn)價成本總額。這樣 就可以知道未售出商品和已售出商品的數(shù)量和已經(jīng)所得的盈利。當(dāng)選擇菜單1時系統(tǒng)就會讓你輸入各種商品的信息,這時按照要求輸入時然后選擇

13、6就可以進(jìn) 行收銀工作,我們在系統(tǒng)的提示下會輸入商品的編號、名稱、數(shù)量、和進(jìn)價售價??梢赃M(jìn)行操作了。然后就當(dāng)選擇7時系統(tǒng)便會輸出:1.已售總額2.已售總進(jìn)價3.已得純利潤4.預(yù)銷售總額5.進(jìn)價成本總額0.返回。這時還要進(jìn)行子函數(shù)的選 擇,選擇1時這是時在計算已經(jīng)售出商品的總額,系統(tǒng)會顯示134。選擇2時這是在計算已經(jīng)售出商品的總進(jìn)價,系統(tǒng)會顯示92,當(dāng)選擇3時這是在計算已經(jīng)售出商品所得的總利潤,系統(tǒng)會顯示42,當(dāng)選擇4時這是在計算預(yù)銷售總額,系統(tǒng)會顯示6838,當(dāng)選擇5時這是在計算進(jìn)價成本總額,系統(tǒng)會顯示 5440。當(dāng) 我們想結(jié)束計算著子函數(shù)的調(diào)用時選擇0這是系統(tǒng)會自動跳出該子函數(shù)的運行然后顯

14、示:輸入“選擇菜單”作為提示。選擇菜單汐.已售總額罷已售總進(jìn)價皐已得純利潤4.預(yù)銷售總額5.進(jìn)價成本總額0.返回 y:l34y-22y:32y:4838y:5440y:(5)小結(jié)通過一個學(xué)期C+語言的學(xué)習(xí),現(xiàn)在對程序設(shè)計有了一定程度上的了解并 會進(jìn)行簡單的程序設(shè)計,開始學(xué)習(xí)C+語言時可以說是在聽天書,啥都不會,整 天暈頭轉(zhuǎn)向的,加之老師是如此的嚴(yán)格,因此對 C+語言充滿了恐懼感!但由于 認(rèn)識到了 C+語言的重要性,因此又加緊學(xué)習(xí),上課認(rèn)真聽講,課后認(rèn)真看書, 所以才對C+語言有了一定的了解和體會,之后才慢慢的會編寫一些簡單的程 序,隨著學(xué)習(xí)的深入,越來越難,之后又學(xué)習(xí)了數(shù)組和指針使得學(xué)習(xí)變得更

15、難, 數(shù)組的學(xué)習(xí)可以解決很多數(shù)據(jù)類型一樣的數(shù), 然后又學(xué)習(xí)了結(jié)構(gòu)體,結(jié)構(gòu)體的學(xué) 習(xí)使得程序越來越大,越來越復(fù)雜,以前的程序都是一些簡單的小程序, 學(xué)了結(jié) 構(gòu)體后就可以編寫一些相對較大的程序了, 結(jié)構(gòu)體可以吧一些數(shù)據(jù)類型一樣的集 合在一起,在編寫收銀臺結(jié)算系統(tǒng)時,開始不知道怎樣寫,主要是前面學(xué)的不好,還有一些 小的知識不知道,所以在編寫相對較大的程序時會遇到很多困難, 通過一個學(xué)期的學(xué)習(xí),現(xiàn)在對C+語言不再那么的害怕,一些簡單的程序可以自 己獨立的解決,現(xiàn)在也可以吧學(xué)生成績管理系統(tǒng)編寫出來了。 由此可以看出只要 自己努力就可以解決很多問題,C+語言的學(xué)習(xí)主要是以動手為主,不斷的自己 寫程序代碼,

16、然后自己上機(jī)調(diào)試,不斷的寫程序不斷地上機(jī)調(diào)試就可以熟能生巧, 收銀臺結(jié)算系統(tǒng)就是不斷的上機(jī)調(diào)試的結(jié)果, 只有自己認(rèn)真了努力了才能不斷的 進(jìn)步。(六)參考文獻(xiàn)1 劉振安 等編著C+程序設(shè)計課程設(shè)計 機(jī)械工業(yè)出版社2 吳乃陵 等編著C+g序設(shè)計北京:高等教育出版社3 李龍澍C+4程序設(shè)計實訓(xùn)教程北京:清華大學(xué)出版社4 寧正元數(shù)據(jù)結(jié)構(gòu)(C語言)南京:東南大學(xué)出版社。2000年6月5 嚴(yán)蔚敏等 數(shù)據(jù)結(jié)構(gòu)(C語言版)北京:清華大學(xué)出版社,1997年6 胡學(xué)鋼等數(shù)據(jù)結(jié)構(gòu)算法設(shè)計指導(dǎo) 北京:清華大學(xué)出版社,1999年7 明日科技 編著Visual C+g序開發(fā)范例寶典北京:人民郵電出版社附錄#include

17、#include#include#include#define LENname 100#define LENnode 100#define LENfname 100 class DATAint id;/產(chǎn)品編號char nameLEN name;/產(chǎn)品名稱 int coun t;/庫存數(shù)量 int saleCou nt; 已售數(shù)量float buy;/ 進(jìn)價 float sale;/售 價bool delTag; public:int getId()return id;char *getName()return name;int getCount()return count;int getSa

18、leCount()return saleCount;float getBuy()return buy;float getSale()return sale;bool getDelTag()return delTag;/void setId(int n)id=n;void setName(char na)strcpy(name,na);void setCount(int n)count=n;void setSaleCount(int n)saleCount=n;void setBuy(float n)buy=n;void setSale(float n)sale=n;/void Del() de

19、lTag=1;void unDel()delTag=0;class WAYDATA nodeLENnode; int LEN;int LenWillDel; public:void newFile()int id;char nameLENname; int count; float buy;float sale;if(LEN0) LEN=0;LenWillDel=0;int i;DATA temp;for(LEN=1;LEN3;LEN+)coutid;if(id=-1) break;nodeLEN.setId(id);coutname;nodeLEN.setName(name);coutcou

20、nt;nodeLEN.setCount(count);coutbuy;nodeLEN.setBuy(buy);coutsale;nodeLEN.setSale(sale);nodeLEN.unDel();nodeLEN.setSaleCount(O);/售出此產(chǎn)品 0 個for(i=0;inodeLEN.getId()temp=nodei; nodei=nodeLEN; nodeLEN=temp;void showData(int i)coutnodei.getId()setw(8)nodei.getName()setw(8)nodei.getCount()setw(8)nodei.getSa

21、leCount()setw(8)nodei.getBuy()setw(8)nodei.getSale()setw(8)nodei.getDelTag()endl;void showData()cout編號vvsetw(8)vv名稱vvsetw(8)v當(dāng)前量setw(8)已售量setw(8)進(jìn)價setw(8)售價setw(8)刪否e ndl;for(int i=0;i0 & nodei.getDelTag()=0) showData(i);void save()char fnameLENfname;coutfname;fstream f(fname,ios:out|ios:binary);for

22、(int i=0;i0 & nodei.getDelTag()=0)f.write(char*)&nodei,sizeof(nodei);f.close();coutsave successendl;void open()char fnameLENfname; coutfname;LEN=-1;LenWillDel=0;fstream f(fname,ios:in|ios:binary); for(LEN=1;LEN3;LEN+)if(!f) break;LEN+;f.seekg(LEN*sizeof(nodeLEN); f.read(char*)&nodeLEN,sizeof(nodeLEN

23、);f.close();int BinSearch()int id;coutid;int low=0,mid,high=LEN-1;while(lowid) high=mid-1;elselow=mid+1;return -1;float sumSale()/已銷售總額float temp=0.0;for(int i=0;i0 & nodei.getDelTag()=0)temp+=nodei.getSale()*nodei.getSaleCount();return temp;float sumBuy()(已售產(chǎn)品的)進(jìn)價總額float temp=0.0;for(int i=0;i0 & n

24、odei.getDelTag()=0) temp+=nodei.getBuy()*nodei.getSaleCount();return temp;float sumGain()(已得)純利潤總額return sumSale()-sumBuy();float sumSaleAll()/預(yù)銷售總額(包括已售和未售)float temp=0.0;for(int i=0;iLEN;i+)if(nodei.getDelTag()=0)temp+=nodei.getSale()*(nodei.getSaleCount()+nodei.getCount();return temp;float sumBuy

25、All()/ 進(jìn)價成本總額(包括已售和未售)float temp=0.0;for(int i=0;iLEN;i+) if(nodei.getDelTag()=0)temp+=nodei.getBuy()*(nodei.getSaleCount()+nodei.getCount(); return temp;void countMenu()coutvv1.已售總額2.已售總進(jìn)價3.已得純利潤4預(yù)銷售總額5.進(jìn)價成 本總額0.返回endl;int yy;int t;for(t=1;t7;t+)coutyy;switch(yy)case 1:coutsumSale()endl;break;case 2:coutsumBuy()endl;break;case 3:coutsumGain()endl;break;case 4:coutsumSaleAll()endl;break;case 5:coutsumBuyAll()endl;break;case 0:break;void sale()cout產(chǎn)品編號;int temp;temp=BinSea

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論