c++程序設(shè)計(jì)語言課程設(shè)計(jì)-收銀臺(tái)結(jié)算程序_第1頁
已閱讀1頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  計(jì)算機(jī)科學(xué)與技術(shù)系</b></p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  2009~2010學(xué)年第二學(xué)期</p><p><b>  2010年7月</b></p><p><b> ?。ㄒ唬?需求分析</b

2、></p><p>  現(xiàn)在某大型超市由于購物人員太多需要一個(gè)收銀臺(tái)結(jié)算程序,以方便消費(fèi)者能夠快速付賬。該程序中能夠各種商品的全部信息,包括商品的編號(hào)、名稱、數(shù)量、進(jìn)價(jià)、售價(jià)等。程序主要是用來方便消費(fèi)者付賬,當(dāng)消費(fèi)者選定商品時(shí)收銀臺(tái)的工作人員只要把消費(fèi)者買的商品的數(shù)量輸進(jìn)去就可以了,該程序會(huì)自動(dòng)的計(jì)算其總額并告知消費(fèi)者要交多少金額。因此該程序的主要功能就是幫助收銀臺(tái)的工作人員實(shí)現(xiàn)收款的目的。所以在制作該軟件

3、時(shí)首先要有一系列的子函數(shù):當(dāng)輸入商品的編號(hào)時(shí)就可以知道它的數(shù)量、進(jìn)價(jià)、售價(jià)等。當(dāng)工作人員收銀時(shí)只要輸入商品的編號(hào),并輸入其數(shù)量就可以知道消費(fèi)者要付金多少,然后系統(tǒng)就會(huì)根據(jù)消費(fèi)者給的金額會(huì)打印出相應(yīng)的購物小票。小票上會(huì)顯示消費(fèi)者所購商品的編號(hào)、數(shù)量、以及消費(fèi)者所給的金額和應(yīng)該找零多少。</p><p>  當(dāng)消費(fèi)者不能提供所購商品的編號(hào)時(shí),系統(tǒng)則無法進(jìn)行其各項(xiàng)的操作。在收銀的過程中如果遇到了消費(fèi)者所給的金額不夠則系

4、統(tǒng)會(huì)自動(dòng)出現(xiàn)提示:所交金額不足。每當(dāng)消費(fèi)者買走一件商品時(shí)系統(tǒng)在顯示時(shí)變回顯示其數(shù)量減少一個(gè),在開始設(shè)計(jì)時(shí)為了能夠滿足要求因此要定義空間足夠大的id,name,count.分別各為100.在計(jì)算時(shí)輸入商品的數(shù)量然后系統(tǒng)就會(huì)用該商品的單價(jià)乘以數(shù)量就得到了消費(fèi)者應(yīng)付的金額。</p><p><b> ?。ǘ┰O(shè)計(jì)</b></p><p>  根據(jù)上訴需求應(yīng)該定義一個(gè)DATA

5、類,該類中定義了產(chǎn)品的編號(hào)id,產(chǎn)品名稱name,商品的已售數(shù)量salecount,還有商品的進(jìn)價(jià)buy,和商品的售價(jià)sale。在public中有成員函數(shù)getid,用于得到商品的編號(hào);getname,用于得到商品的名稱;getsale,用于得到商品的售價(jià);getbuy,用于得到商品的進(jìn)價(jià)。在此基礎(chǔ)上又派生出另一個(gè)類WAY。</p><p>  在WAY類中有成員函數(shù)newfile,用于新建各種商品的信息,在ne

6、wfile中會(huì)分別要求輸入商品的編號(hào)、名稱、數(shù)量、進(jìn)價(jià)、售價(jià)。在一次輸入各種商品的各種信息后可以調(diào)用另一個(gè)成員函數(shù)save,將輸入的商品的各種信息儲(chǔ)存起來。要進(jìn)行收銀工作時(shí)選擇sale子函數(shù)進(jìn)行收銀工作,在輸入商品的各種信息后可以調(diào)用函數(shù)showdata把商品的編號(hào)、名稱、數(shù)量以及進(jìn)價(jià)和售價(jià)都顯示出來以方便查看。在WAY類中open函數(shù)主要是用來打開已經(jīng)保存好的各種商品的各種基本信息。在程序運(yùn)行時(shí)將開始準(zhǔn)備好的數(shù)據(jù)輸入這樣就變的更加方便

7、了。在有很多商品的情況下要臨時(shí)找到一個(gè)商品的基本信息一般比較困難,因此還要用到binsearch來查找商品。當(dāng)要想找到摸個(gè)商品時(shí)只要將其編號(hào)輸入系統(tǒng)就可以根據(jù)編號(hào)進(jìn)行查找,從而找到所要的商品。在商品已經(jīng)銷售了一部分時(shí)可以計(jì)算一下這些商品的總的進(jìn)價(jià)因而sumsale函數(shù)就是來計(jì)算已經(jīng)銷售出去的商品的總的進(jìn)價(jià),同樣,當(dāng)想知道已經(jīng)售出的這些商品所得到的利潤時(shí)就可以用函數(shù)sumgain,這些函數(shù)都是主函數(shù)countmenu中的子函數(shù),在coun

8、tmenu函數(shù)中包括已售總額、已售總進(jìn)價(jià)、已得純利潤</p><p>  在該系統(tǒng)實(shí)現(xiàn)其收銀功能后,我們可以對這一段時(shí)間所銷售的商品做一個(gè)統(tǒng)計(jì),包括對他的數(shù)量、售出量、進(jìn)價(jià)、售價(jià)、盈利多少等,當(dāng)選擇計(jì)算的子函數(shù)時(shí)便可以對這些已經(jīng)售出的商品做一個(gè)系統(tǒng)的統(tǒng)計(jì),在統(tǒng)計(jì)之后會(huì)輸入一個(gè)清單。上面寫著這段時(shí)間所有售出的商品的各種信息,已列表的形式把商品的編號(hào)、名稱、已售出量、售價(jià)、進(jìn)價(jià)等。</p><p&

9、gt;  在類的設(shè)計(jì)中主要是數(shù)據(jù)成員以及成員函數(shù),在WAY類中我們首先要把商品的基本信息能用數(shù)據(jù)成員表示,于是便要定義編號(hào)、名稱、數(shù)量、進(jìn)價(jià)、售價(jià)。在主函數(shù)menu中有1.輸入產(chǎn)品信息 2.顯示 3.保存 4.打開 5.菜單 6.收銀 7.計(jì)算 0.返回"這幾項(xiàng)功能。在設(shè)計(jì)該程序時(shí)要考慮到開始時(shí)可以對商品的信息進(jìn)行輸入,于是在子函數(shù)newfile中便是將商品的信息輸入其中。但考慮到由于商品要是太多的話臨時(shí)輸入這些商品的信息太

10、麻煩并且耽誤時(shí)間,所以我們考慮到用磁盤文件來處理,在磁盤文件中我們先把各種商品的基本信息保存在里面,等到要用的時(shí)候就可以直接打開,因此我們用open函數(shù)來實(shí)現(xiàn)這個(gè)功能。</p><p><b> ?。ㄈ┯脩羰謨?lt;/b></p><p>  當(dāng)我們把收銀臺(tái)結(jié)算程序編寫好用于商場之后,在消費(fèi)者來付賬時(shí),我們首先運(yùn)行該程序,這是主頁面會(huì)顯示1.輸入產(chǎn)品信息 2.顯示 3.

11、保存 4.打開 5.菜單 6.收銀 7.計(jì)算 0.返回",“選擇菜單”的字樣。這是選擇1系統(tǒng)就會(huì)顯示id、name、count、buy、sale。這是我們依次輸入商品的編號(hào)、名稱、數(shù)量、進(jìn)價(jià)、售價(jià)后,系統(tǒng)又會(huì)顯示sn 這是再選擇所要操作的,當(dāng)選擇6 時(shí)進(jìn)入收銀狀態(tài)。這時(shí)系統(tǒng)會(huì)提示你輸入產(chǎn)品編號(hào)、輸入數(shù)量、輸入收到金額、等全部輸入完成后系統(tǒng)便會(huì)打印一個(gè)購物小票出來:</p><p>  當(dāng)輸入的編號(hào)無法

12、找到時(shí)系統(tǒng)便會(huì)顯示:not find。</p><p>  當(dāng)選擇7時(shí)系統(tǒng)便會(huì)輸出:1.已售總額 2.已售總進(jìn)價(jià) 3.已得純利潤 4.預(yù)銷售總額 5.進(jìn)價(jià)成本總額 0.返回"。這時(shí)還要進(jìn)行子函數(shù)的選擇,選擇1時(shí)這是時(shí)在計(jì)算已經(jīng)售出商品的總額,系統(tǒng)會(huì)顯示280。選擇2時(shí)這是在計(jì)算已經(jīng)售出商品的總進(jìn)價(jià),系統(tǒng)會(huì)顯示200,當(dāng)選擇3時(shí)這是在計(jì)算已經(jīng)售出商品所得的總利潤,系統(tǒng)會(huì)顯示80,當(dāng)選擇4時(shí)這是在計(jì)算預(yù)銷

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

14、,當(dāng)我們選擇2時(shí)系統(tǒng)就會(huì)把商品現(xiàn)在信息顯示出來。</p><p>  編號(hào) 名稱 當(dāng)前量 已售量 進(jìn)價(jià) 售價(jià) </p><p>  12 奶粉 100 2 100 140</p><p>  13 洗衣機(jī) 200 10 500 2000</p>&

15、lt;p>  等各種商品的信息。只要按照系統(tǒng)的提示操作就會(huì)很順利的完成。</p><p><b> ?。ㄋ模┱{(diào)試及測試</b></p><p>  由于該程序要包含各種商品的信息因此在運(yùn)行該系統(tǒng)時(shí)首先要把各種商品的基本信息放在磁盤文件中,在應(yīng)用時(shí)直接就可以讀出這些商品的信息。在開始編寫該程序時(shí)沒有考慮到商品數(shù)量、價(jià)格的容量大小導(dǎo)致了在輸入商品的信息時(shí)系統(tǒng)出現(xiàn)了錯(cuò)

16、誤,后來打開書本時(shí)看到書上的例子時(shí)想起來的從而改正了錯(cuò)誤,在編寫showdata,函數(shù)時(shí)我們要把商品的各種信息都顯示出來由于商品的基本信息比較多,要考慮到輸出時(shí)的整齊所以要要運(yùn)用到setw函數(shù)來控制輸出時(shí)的界面</p><p>  開始時(shí)由于沒有注意到所輸出來的空格數(shù)進(jìn)而導(dǎo)致了輸出來的界面有有點(diǎn)亂,之后又調(diào)整了輸出時(shí)的空格數(shù)才使得輸出來的界面變得相對美觀,在編寫sale函數(shù)時(shí)開始沒考慮到輸入提示,當(dāng)系統(tǒng)運(yùn)行時(shí)不知

17、道系統(tǒng)要我們做什么,之后意思到后就在開始時(shí)輸入了輸入提示,這樣當(dāng)系統(tǒng)運(yùn)行時(shí)就可以按照系統(tǒng)對你的提示進(jìn)操作了。在有很多商品的情況下要臨時(shí)找到一個(gè)商品的基本信息一般比較困難,因此還要用到binsearch來查找商品。當(dāng)要想找到摸個(gè)商品時(shí)只要將其編號(hào)輸入系統(tǒng)就可以根據(jù)編號(hào)進(jìn)行查找,從而找到所要的商品。在商品已經(jīng)銷售了一部分時(shí)可以計(jì)算一下這些商品的總的進(jìn)價(jià)因而sumsale函數(shù)就是來計(jì)算已經(jīng)銷售出去的商品的總的進(jìn)價(jià),同樣,當(dāng)想知道已經(jīng)售出的這些

18、商品所得到的利潤時(shí)就可以用函數(shù)sumgain該系統(tǒng)中為了使得能夠把商品的各種信息都能輸出來并能夠顯示出來因此就運(yùn)用了countmenu函數(shù)來把已經(jīng)售出商品和未售的出商品的各種信息輸入。系統(tǒng)會(huì)顯示1.已售總額 2.已售總進(jìn)價(jià) 3.已得純利潤 4.預(yù)銷售總額 5.進(jìn)價(jià)成本總額。這樣就可以知道未售出商品和已售出商品的數(shù)量和已經(jīng)所得的盈利。當(dāng)選擇菜單1時(shí)系統(tǒng)就會(huì)讓你輸入各種商品的信</p><p>  可以進(jìn)行操作了。然

19、后就當(dāng)選擇7時(shí)系統(tǒng)便會(huì)輸出:1.已售總額 2.已售總進(jìn)價(jià) 3.已得純利潤 4.預(yù)銷售總額 5.進(jìn)價(jià)成本總額 0.返回"。這時(shí)還要進(jìn)行子函數(shù)的選擇,選擇1時(shí)這是時(shí)在計(jì)算已經(jīng)售出商品的總額,系統(tǒng)會(huì)顯示134。選擇2時(shí)這是在計(jì)算已經(jīng)售出商品的總進(jìn)價(jià),系統(tǒng)會(huì)顯示92,當(dāng)選擇3時(shí)這是在計(jì)算已經(jīng)售出商品所得的總利潤,系統(tǒng)會(huì)顯示42,當(dāng)選擇4時(shí)這是在計(jì)算預(yù)銷售總額,系統(tǒng)會(huì)顯示6838,當(dāng)選擇5時(shí)這是在計(jì)算進(jìn)價(jià)成本總額,系統(tǒng)會(huì)顯示5440。當(dāng)

20、我們想結(jié)束計(jì)算著子函數(shù)的調(diào)用時(shí)選擇0這是系統(tǒng)會(huì)自動(dòng)跳出該子函數(shù)的運(yùn)行然后顯示:輸入“選擇菜單”作為提示。</p><p><b>  (5)小結(jié)</b></p><p>  通過一個(gè)學(xué)期C++語言的學(xué)習(xí),現(xiàn)在對程序設(shè)計(jì)有了一定程度上的了解并會(huì)進(jìn)行簡單的程序設(shè)計(jì),開始學(xué)習(xí)C++語言時(shí)可以說是在聽天書,啥都不會(huì),整天暈頭轉(zhuǎn)向的,加之老師是如此的嚴(yán)格,因此對C+ 語言充滿了

21、恐懼感!但由于認(rèn)識(shí)到了C++語言的重要性,因此又加緊學(xué)習(xí),上課認(rèn)真聽講,課后認(rèn)真看書,所以才對C++語言有了一定的了解和體會(huì),之后才慢慢的會(huì)編寫一些簡單的程序,隨著學(xué)習(xí)的深入,越來越難,之后又學(xué)習(xí)了數(shù)組和指針使得學(xué)習(xí)變得更難,數(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ù)類型一樣的集合在

22、一起,</p><p>  在編寫收銀臺(tái)結(jié)算系統(tǒng)時(shí),開始不知道怎樣寫,主要是前面學(xué)的不好,還有一些小的知識(shí)不知道,所以在編寫相對較大的程序時(shí)會(huì)遇到很多困難, </p><p>  通過一個(gè)學(xué)期的學(xué)習(xí),現(xiàn)在對C++語言不再那么的害怕,一些簡單的程序可以自己獨(dú)立的解決,現(xiàn)在也可以吧學(xué)生成績管理系統(tǒng)編寫出來了。由此可以看出只要自己努力就可以解決很多問題,C++語言的學(xué)習(xí)主要是以動(dòng)手為主,不斷的自

23、己寫程序代碼,然后自己上機(jī)調(diào)試,不斷的寫程序不斷地上機(jī)調(diào)試就可以熟能生巧,收銀臺(tái)結(jié)算系統(tǒng)就是不斷的上機(jī)調(diào)試的結(jié)果,只有自己認(rèn)真了努力了才能不斷的進(jìn)步。</p><p><b> ?。﹨⒖嘉墨I(xiàn)</b></p><p>  [1] 劉振安 等編著《C++程序設(shè)計(jì)課程設(shè)計(jì)》 機(jī)械工業(yè)出版社</p><p>  [2] 吳乃陵 等編著《C++程序設(shè)

24、計(jì)》北京:高等教育出版社</p><p>  [3] 李龍澍《C++程序設(shè)計(jì)實(shí)訓(xùn)教程》北京:清華大學(xué)出版社 </p><p>  [4] 寧正元《數(shù)據(jù)結(jié)構(gòu)(C語言)》南京:東南大學(xué)出版社。2000年6月</p><p>  [5] 嚴(yán)蔚敏等 《數(shù)據(jù)結(jié)構(gòu)(C語言版)》 北京:清華大學(xué)出版社,1997年</p><p>  [6] 胡學(xué)鋼等《數(shù)據(jù)

25、結(jié)構(gòu)算法設(shè)計(jì)指導(dǎo)》 北京:清華大學(xué)出版社,1999年 </p><p>  [7] 明日科技 編著《Visual C++程序開發(fā)范例寶典》北京:人民郵電出版社</p><p><b>  附錄</b></p><p>  #include<iostream.h></p><p>  #include<f

26、stream.h></p><p>  #include<string.h></p><p>  #include<iomanip.h></p><p>  #define LENname 100</p><p>  #define LENnode 100</p><p>  #defin

27、e LENfname 100</p><p>  class DATA</p><p><b>  {</b></p><p>  int id;//產(chǎn)品編號(hào)</p><p>  char name[LENname];//產(chǎn)品名稱</p><p>  int count;//庫存數(shù)量</p&

28、gt;<p>  int saleCount;//已售數(shù)量</p><p>  float buy;//進(jìn)價(jià)</p><p>  float sale;//售價(jià)</p><p>  bool delTag;</p><p><b>  public:</b></p><p>  in

29、t getId()</p><p><b>  {</b></p><p>  return id;</p><p><b>  }</b></p><p>  char *getName()</p><p><b>  {</b></p>

30、<p>  return name;</p><p><b>  }</b></p><p>  int getCount()</p><p><b>  {</b></p><p>  return count;</p><p><b>  }<

31、/b></p><p>  int getSaleCount()</p><p><b>  {</b></p><p>  return saleCount;</p><p><b>  }</b></p><p>  float getBuy()</p>

32、<p><b>  {</b></p><p>  return buy;</p><p><b>  }</b></p><p>  float getSale()</p><p><b>  {</b></p><p>  return

33、 sale;</p><p><b>  }</b></p><p>  bool getDelTag()</p><p><b>  {</b></p><p>  return delTag;</p><p><b>  }</b></p>

34、;<p>  //----------------------</p><p>  void setId(int n)</p><p><b>  {</b></p><p><b>  id=n;</b></p><p><b>  }</b></p>

35、;<p>  void setName(char na[])</p><p><b>  {</b></p><p>  strcpy(name,na);</p><p><b>  }</b></p><p>  void setCount(int n)</p><

36、;p><b>  {</b></p><p><b>  count=n;</b></p><p><b>  }</b></p><p>  void setSaleCount(int n)</p><p><b>  {</b></p>

37、;<p>  saleCount=n;</p><p><b>  }</b></p><p>  void setBuy(float n)</p><p><b>  {</b></p><p><b>  buy=n;</b></p><p

38、><b>  }</b></p><p>  void setSale(float n)</p><p><b>  {</b></p><p><b>  sale=n;</b></p><p><b>  }</b></p><

39、;p>  //...................</p><p>  void Del()</p><p><b>  {</b></p><p><b>  delTag=1;</b></p><p><b>  }</b></p><p>

40、  void unDel()</p><p><b>  {</b></p><p><b>  delTag=0;</b></p><p><b>  }</b></p><p><b>  };</b></p><p><

41、b>  class WAY</b></p><p><b>  {</b></p><p>  DATA node[LENnode];</p><p><b>  int LEN;</b></p><p>  int LenWillDel;</p><p>

42、<b>  public:</b></p><p>  void newFile()</p><p><b>  {</b></p><p><b>  int id;</b></p><p>  char name[LENname];</p><p>

43、  int count;</p><p>  float buy;</p><p>  float sale;</p><p><b>  if(LEN<0)</b></p><p><b>  LEN=0;</b></p><p>  LenWillDel=0;<

44、;/p><p><b>  int i;</b></p><p>  DATA temp;</p><p>  for(LEN=1;LEN<3;LEN++)</p><p><b>  {</b></p><p>  cout<<"id:";

45、</p><p><b>  cin>>id;</b></p><p>  if(id==-1)</p><p><b>  break;</b></p><p>  node[LEN].setId(id);</p><p>  cout<<"

46、;name:";</p><p>  cin>>name;</p><p>  node[LEN].setName(name);</p><p>  cout<<"count:";</p><p>  cin>>count;</p><p>  node

47、[LEN].setCount(count);</p><p>  cout<<"buy:";</p><p><b>  cin>>buy;</b></p><p>  node[LEN].setBuy(buy);</p><p>  cout<<"sal

48、e:";</p><p>  cin>>sale;</p><p>  node[LEN].setSale(sale);</p><p>  node[LEN].unDel();</p><p>  node[LEN].setSaleCount(0);//售出此產(chǎn)品0個(gè)</p><p>  for

49、(i=0;i<LEN;i++)</p><p><b>  {</b></p><p>  if(node[i].getId()>node[LEN].getId())</p><p><b>  {</b></p><p>  temp=node[i];</p><p

50、>  node[i]=node[LEN];</p><p>  node[LEN]=temp;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>

51、;  }</b></p><p>  void showData(int i)</p><p><b>  {</b></p><p>  cout<<node[i].getId()</p><p>  <<setw(8)<<node[i].getName()</p&

52、gt;<p>  <<setw(8)<<node[i].getCount()</p><p>  <<setw(8)<<node[i].getSaleCount()</p><p>  <<setw(8)<<node[i].getBuy()</p><p>  <<se

53、tw(8)<<node[i].getSale()</p><p>  <<setw(8)<<node[i].getDelTag()</p><p><b>  <<endl;</b></p><p><b>  }</b></p><p>  void

54、 showData()</p><p><b>  {</b></p><p>  cout<<"編號(hào)"</p><p>  <<setw(8)<<"名稱"</p><p>  <<setw(8)<<"當(dāng)前量&q

55、uot;</p><p>  <<setw(8)<<"已售量"</p><p>  <<setw(8)<<"進(jìn)價(jià)"</p><p>  <<setw(8)<<"售價(jià)"</p><p>  <<setw

56、(8)<<"刪否"<<endl;</p><p>  for(int i=0;i<LEN;i++)</p><p>  if(node[i].getCount()>0 && node[i].getDelTag()==0)</p><p>  showData(i);</p><

57、;p><b>  }</b></p><p>  void save()</p><p><b>  {</b></p><p>  char fname[LENfname];</p><p>  cout<<"fname:";</p><p

58、>  cin>>fname;</p><p>  fstream f(fname,ios::out|ios::binary);</p><p>  for(int i=0;i<LEN;i++)</p><p>  if(node[i].getCount()>0 && node[i].getDelTag()==0)<

59、/p><p>  f.write((char*)&node[i],sizeof(node[i]));</p><p>  f.close();</p><p>  cout<<"save success"<<endl;</p><p><b>  }</b></p&g

60、t;<p>  void open()</p><p><b>  {</b></p><p>  char fname[LENfname];</p><p>  cout<<"fname:";</p><p>  cin>>fname;</p>&

61、lt;p><b>  LEN=-1;</b></p><p>  LenWillDel=0;</p><p>  fstream f(fname,ios::in|ios::binary);</p><p>  for(LEN=1;LEN<3;LEN++)</p><p><b>  {</b&

62、gt;</p><p><b>  if(!f)</b></p><p><b>  break;</b></p><p><b>  LEN++;</b></p><p>  f.seekg(LEN*sizeof(node[LEN]));</p><p&g

63、t;  f.read((char*)&node[LEN],sizeof(node[LEN]));</p><p><b>  }</b></p><p>  f.close();</p><p><b>  }</b></p><p>  int BinSearch()</p>

64、<p><b>  {</b></p><p><b>  int id;</b></p><p>  cout<<"id:";</p><p><b>  cin>>id;</b></p><p>  int low=0

65、,mid,high=LEN-1;</p><p>  while(low<=high)</p><p><b>  {</b></p><p>  mid=(low+high)/2;</p><p>  if(node[mid].getId()==id)</p><p>  return m

66、id;</p><p>  else if(node[mid].getId()>id)</p><p>  high=mid-1;</p><p><b>  else</b></p><p>  low=mid+1;</p><p><b>  }</b></p

67、><p>  return -1;</p><p><b>  }</b></p><p>  float sumSale()//已銷售總額</p><p><b>  {</b></p><p>  float temp=0.0;</p><p>  f

68、or(int i=0;i<LEN;i++)</p><p>  if(node[i].getSaleCount()>0 && node[i].getDelTag()==0)</p><p>  temp+=node[i].getSale()*node[i].getSaleCount();</p><p>  return temp;<

69、;/p><p><b>  }</b></p><p>  float sumBuy()//(已售產(chǎn)品的)進(jìn)價(jià)總額</p><p><b>  {</b></p><p>  float temp=0.0;</p><p>  for(int i=0;i<LEN;i++)&

70、lt;/p><p>  if(node[i].getSaleCount()>0 && node[i].getDelTag()==0)</p><p>  temp+=node[i].getBuy()*node[i].getSaleCount();</p><p>  return temp;</p><p><b>

71、;  } </b></p><p>  float sumGain()//(已得)純利潤總額</p><p><b>  {</b></p><p>  return sumSale()-sumBuy();</p><p><b>  }</b></p><p>

72、  float sumSaleAll()//預(yù)銷售總額(包括已售和未售)</p><p><b>  {</b></p><p>  float temp=0.0;</p><p>  for(int i=0;i<LEN;i++)</p><p>  if(node[i].getDelTag()==0)</p

73、><p>  temp+=node[i].getSale()*(node[i].getSaleCount()+node[i].getCount());</p><p>  return temp;</p><p><b>  }</b></p><p>  float sumBuyAll()//進(jìn)價(jià)成本總額(包括已售和未售)

74、</p><p><b>  {</b></p><p>  float temp=0.0;</p><p>  for(int i=0;i<LEN;i++)</p><p>  if(node[i].getDelTag()==0)</p><p>  temp+=node[i].getBu

75、y()*(node[i].getSaleCount()+node[i].getCount());</p><p>  return temp;</p><p><b>  }</b></p><p>  void countMenu()</p><p><b>  {</b></p>

76、<p>  cout<<"1.已售總額 2.已售總進(jìn)價(jià) 3.已得純利潤 4.預(yù)銷售總額 5.進(jìn)價(jià)成本總額 0.返回"<<endl;</p><p><b>  int yy;</b></p><p><b>  int t;</b></p><p>  for(t=1;

77、t<7;t++)</p><p><b>  {</b></p><p>  cout<<"yy:";</p><p><b>  cin>>yy;</b></p><p>  switch(yy)</p><p><b

78、>  {</b></p><p>  case 1:cout<<sumSale()<<endl;break;</p><p>  case 2:cout<<sumBuy()<<endl;break;</p><p>  case 3:cout<<sumGain()<<endl;

79、break;</p><p>  case 4:cout<<sumSaleAll()<<endl;break;</p><p>  case 5:cout<<sumBuyAll()<<endl;break;</p><p>  case 0:break;</p><p><b>  }

80、</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void sale()</p><p><b>  {</b></p><p>  cout<<"產(chǎn)品編號(hào)&q

81、uot;;</p><p><b>  int temp;</b></p><p>  temp=BinSearch();</p><p>  if(temp==-1)</p><p><b>  {</b></p><p>  cout<<"not f

82、ind"<<endl;</p><p><b>  return;</b></p><p><b>  }</b></p><p>  if(node[temp].getCount()<=0)</p><p><b>  {</b></p>

83、;<p>  cout<<"此產(chǎn)品已缺"<<endl;</p><p><b>  return;</b></p><p><b>  }</b></p><p>  int count;</p><p>  cout<<&quo

84、t;輸入數(shù)量:";</p><p>  cin>>count;</p><p>  float money;</p><p>  cout<<"輸入收到金額(元):";</p><p>  cin>>money;</p><p>  if(count&l

85、t;=0 && count>node[temp].getCount())//輸入的是負(fù)數(shù)或超出該產(chǎn)品庫存量</p><p>  cout<<"數(shù)量輸入不正確"<<endl;</p><p><b>  else</b></p><p><b>  {</b>

86、</p><p>  node[temp].setCount(node[temp].getCount()-count);//當(dāng)前庫存減少count</p><p>  node[temp].setSaleCount(node[temp].getSaleCount()+count);//出售量增加count</p><p>  cout<<"┌┄

87、┄┄┄┄┄┄┐"<<endl</p><p>  <<"┊ 購物小票 ┊"<<endl</p><p>  <<"├┄┄┄┄┄┄┄┤"<<endl</p><p>  <<"┊名稱:"<<node[temp

88、].getName()<<endl</p><p>  <<"┊?dāng)?shù)量:"<<count<<endl</p><p>  <<"┊單價(jià):"<<node[temp].getSale()<<"元"<<endl</p><p

89、>  <<"┊應(yīng)收:"<<count*node[temp].getSale()<<"元"<<endl</p><p>  <<"┊找零:"<<money-count*node[temp].getSale()<<"元"<<endl<

90、;/p><p>  <<"└┄┄┄┄┄┄┄┘"<<endl;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void showSale()</p><p><b>  {&

91、lt;/b></p><p>  for(int i=0;i<LEN;i++)</p><p>  if(node[i].getSaleCount()>0 && node[i].getDelTag()==0)</p><p>  showData(i);</p><p><b>  }</b&

92、gt;</p><p><b>  };</b></p><p>  inline void menu()</p><p><b>  {</b></p><p>  cout<<"1.輸入產(chǎn)品信息 2.顯示 3..打開 4.菜單 5.收銀 6.計(jì)算 0.返回"&

93、lt;<endl;</p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p><b>  menu();</b></p><p><b>  WAY way

94、;</b></p><p><b>  int sn;</b></p><p><b>  for(;;)</b></p><p><b>  {</b></p><p>  cout<<" 選擇菜單sn:";</p>

95、<p><b>  cin>>sn;</b></p><p>  switch(sn)</p><p><b>  {</b></p><p>  case 1:way.newFile();break;</p><p>  case 2:way.showData();break

96、;</p><p>  case 3:way.open();break;</p><p>  case 4:menu();break;</p><p>  case 5:way.sale();break;</p><p>  case 6:way.countMenu();break;</p><p>  case 0:

溫馨提示

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

評(píng)論

0/150

提交評(píng)論