c++課程設(shè)計(jì)報告-- 酒店點(diǎn)菜管理系統(tǒng)設(shè)計(jì)_第1頁
已閱讀1頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  C++面向?qū)ο笳n程設(shè)計(jì)報告</p><p>  院(系): </p><p>  專業(yè): </p><p>  學(xué)生姓名: </p><p>  班級

2、 學(xué)號: </p><p>  題目: 酒店點(diǎn)菜管理系統(tǒng)設(shè)計(jì)_______ </p><p>  起迄日期: _ </p><p>  設(shè)計(jì)地點(diǎn): </p><p>  指 導(dǎo) 教 師:

3、 </p><p><b>  完成日期: </b></p><p><b>  課程設(shè)計(jì)報告內(nèi)容</b></p><p><b>  一、需求分析</b></p><p>  1.選做此課題或項(xiàng)目的目的</p><p&g

4、t;  當(dāng)今社會人們越來越注重飲食的重要性,許多餐館酒店也變得越來越多,酒店越做越大,生意越來越紅火,但是酒店會越來越忙,要招聘的服務(wù)員也會越來越多,可能會造成服務(wù)不周到,服務(wù)不到位等現(xiàn)象。本軟件目的主要想幫助酒店餐館更加便捷的完成點(diǎn)菜、結(jié)賬、生成訂單,修改訂單等功能,簡單易用,用戶僅需幾步操作就能點(diǎn)餐,為酒店餐館節(jié)省了人力財力。同時顧客可以更加便捷的選擇自己喜愛的菜肴、對吃的菜肴進(jìn)行評分,還可以看自己的消費(fèi)記錄等信息。</p&g

5、t;<p>  2.程序所實(shí)現(xiàn)的功能</p><p>  本程序?qū)崿F(xiàn)了用戶注冊、登錄、點(diǎn)餐、買單功能,點(diǎn)餐完成之后會自動生成訂單,用戶可以查看自己的訂單信息,并對它進(jìn)行修改再次提交。同時程序會記錄用戶的消費(fèi)記錄,用戶信息等,用戶可以方便的修改自己的密碼,修改自己的信息,還可以方便的對各種菜肴進(jìn)行評分。</p><p><b>  二、內(nèi)容設(shè)計(jì)</b>&l

6、t;/p><p>  1.根據(jù)所選題目,給出模塊圖</p><p>  圖2.1 酒店管理系統(tǒng)模塊圖</p><p>  2.畫出主程序及其主要模塊的流程圖</p><p>  圖2.2 酒店管理系統(tǒng)程序流程圖(1)</p><p>  圖2.2 酒店管理系統(tǒng)程序流程圖(2)</p><p>  圖

7、2.2 酒店管理系統(tǒng)程序流程圖(2)</p><p>  3.編寫程序關(guān)鍵代碼</p><p> ?。?)System::String轉(zhuǎn)化為std::string函數(shù)</p><p>  void MarshalString ( String ^ s, string& os ) {</p><p>  using namespace

8、Runtime::InteropServices;</p><p>  const char* chars = </p><p>  (const char*)(Marshal::StringToHGlobalAnsi(s)).ToPointer();</p><p>  os = chars;</p><p>  Marshal::Free

9、HGlobal(IntPtr((void*)chars));</p><p><b>  }</b></p><p> ?。?)判斷用戶名跟密碼是否符合函數(shù)</p><p>  private: bool judge(string s_use,string s_pass){</p><p>  string acount

10、; </p><p>  string password; </p><p>  ifstream input;</p><p>  input.open("USERS.txt");</p><p>  if(!input){</p><p>  ofstream output("US

11、ERS.txt");</p><p>  output<<"";</p><p>  output.close();</p><p><b>  }</b></p><p>  int cnt = 1;</p><p>  while(input>&

12、gt;acount)</p><p><b>  {</b></p><p>  if(cnt%2==1)</p><p><b>  {</b></p><p>  if(acount == s_use)</p><p><b>  {</b><

13、/p><p>  input>>password;</p><p>  if(password != s_pass)</p><p><b>  {</b></p><p>  input.close();</p><p><b>  return 0;</b><

14、;/p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p>  input.close();</p><p><b>  return 1;</b>&l

15、t;/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  cnt++;</b></p><p><b>  }</b&g

16、t;</p><p>  input.close();</p><p>  return 0; //not found user</p><p><b>  }</b></p><p> ?。?)將用戶點(diǎn)的菜寫入文件</p><p>  ifstream input("now_use

17、.txt");</p><p>  string name2;</p><p>  input>>name2;</p><p>  input.close();</p><p>  ofstream output(name2,ios::app);</p><p>  for(int i=1;i&l

18、t;11;i++){</p><p>  if(num2[i]){</p><p>  output<<dish_names[i]<<"ר¢"<<num2[i]<<endl;</p><p><b>  }</b></p><

19、p><b>  }</b></p><p>  output<<"總Á¨¹計(jì)?: "<<sum_price<<endl;</p><p>  output.close();</p><p>  (4)訂單管理顯示用戶之前已經(jīng)選定的菜肴</p>

20、<p>  ifstream input2(name);</p><p>  string tmp,tmp2;</p><p>  while(input2>>tmp)</p><p><b>  {</b></p><p>  input2>>tmp2;</p>&l

21、t;p>  if(tmp == "總Á¨¹計(jì)?:")continue;</p><p>  int val,j;</p><p>  j = tmp2.find('ר¢');</p><p>  val = tmp2[j+1]-'0';

22、</p><p>  mp[tmp] = val; </p><p><b>  }</b></p><p>  input2.close();</p><p>  (4)將用戶的評分寫入文件</p><p>  const string dish_names[]={"&qu

23、ot;,"西¡Â紅¨¬柿º¨¢炒¡ä雞|蛋Ì¡ã","酸¨¢辣¤¡À土ª¨¢豆1絲?","大䨮醬¡ä湯¬¨¤

24、;","蒸?排?骨?","糖¬?醋ä¡Á鯉¤e魚®?",</p><p>  "糖¬?醋ä¡Á排?骨?","白ã¡Á芍¦?蝦o","雞|湯¬¨¤餛

25、?飩?","一°?品¡¤豆1腐¡¥","雞|蛋Ì¡ã布?丁?"};</p><p>  String^ t1 = comboBox1->Text;</p><p>  String^ t2 = comboBox2->Text;</p>

26、<p>  String^ t3 = comboBox3->Text;</p><p>  String^ t4 = comboBox4->Text;</p><p>  String^ t5 = comboBox5->Text;</p><p>  String^ t6 = comboBox6->Text;</p>

27、<p>  String^ t7 = comboBox7->Text;</p><p>  String^ t8 = comboBox8->Text;</p><p>  String^ t9 = comboBox9->Text;</p><p>  String^ t10 = comboBox10->Text;</p>

28、<p>  int num2[11]; //表À¨ª示º?每?份¤Y菜?有®D多¨¤少¦¨´份¤Y的Ì?數(shù)ºy組Á¨¦</p><p>  //下?面?是º?System::Strin

29、g^ 與®? std::string的Ì?轉(zhuǎn)Áa換?</p><p>  if(t1=="")num2[1]=-1; //判D斷?是º?不?是º?為a空?,ê?防¤¨¤止1出?現(xiàn)?異°¨¬常¡ê</p>

30、;<p>  else num2[1]=int::Parse(t1);</p><p>  if(t2=="")num2[2]=-1;</p><p>  else num2[2]=int::Parse(t2);</p><p>  if(t3=="")num2[3]=-1;</p><p&g

31、t;  else num2[3]=int::Parse(t3);</p><p>  if(t4=="")num2[4]=-1;</p><p>  else num2[4]=int::Parse(t4);</p><p>  if(t5=="")num2[5]=-1;</p><p>  else n

32、um2[5]=int::Parse(t5);</p><p>  if(t6=="")num2[6]=-1;</p><p>  else num2[6]=int::Parse(t6);</p><p>  if(t7=="")num2[7]=-1;</p><p>  else num2[7]=int

33、::Parse(t7);</p><p>  if(t8=="")num2[8]=-1; </p><p>  else num2[8]=int::Parse(t8);</p><p>  if(t9=="")num2[9]=-1;</p><p>  else num2[9]=int::Parse(t

34、9);</p><p>  if(t10=="")num2[10]=-1;</p><p>  else num2[10]=int::Parse(t10);</p><p>  ofstream output("judge.txt");</p><p>  for(int i=1;i<11;i++

35、){</p><p>  if(num2[i]!=-1){</p><p>  output<<dish_names[i]<<" "<<num2[i]<<"分¤?"<<endl;</p><p><b>  }</b></p>

36、;<p><b>  }</b></p><p>  output.close();</p><p><b>  三、調(diào)試分析</b></p><p>  1.實(shí)際完成的情況說明(完成的功能,支持的數(shù)據(jù)類型等)。</p><p>  本程序完成了用戶權(quán)限管理功能,包括用戶登錄、注冊、修

37、改密碼、保存用戶信息等,完成了訂單管理功能,包括點(diǎn)菜,買單,修改訂單,查看歷史消費(fèi)等,用戶還可以對菜譜中的才進(jìn)行評分,評分可以傳遞給酒店,使酒店按照評分進(jìn)行相關(guān)菜肴的改進(jìn)。本程序支持string數(shù)據(jù)類型,因?yàn)橛脩裘艽a都是string類型的。用戶輸入用戶名跟密碼之后,程序會將用戶名跟密碼轉(zhuǎn)化成string類型,接著會在文件中尋找相應(yīng)的用戶名跟密碼,然后判斷是否正確,注冊的時候會尋找是否存在該用戶名,不存在才能注冊。另外菜名用的也是st

38、ring類型,每份菜的數(shù)量用的是int類型的數(shù)組。</p><p>  2.程序的性能分析。</p><p>  程序時間復(fù)雜度的瓶頸主要是文件的操作太過于頻繁,導(dǎo)致程序的執(zhí)行效率變低。另外在驗(yàn)證用戶名跟密碼的過程中,會代開文件并且進(jìn)行搜索,復(fù)雜度取決于文件中用戶的數(shù)目,由于運(yùn)用的是暴力搜索,最壞的時間復(fù)雜度是O(2*n),n是文件中存儲的用戶的數(shù)目,用戶注冊的時候也會打開文件進(jìn)行暴力搜索

39、,最壞的時間復(fù)雜度也是O(2*n)。在點(diǎn)菜的過程中會把菜名跟其對應(yīng)的數(shù)量一一寫入文件,其復(fù)雜度也是O(n),此時n是用戶點(diǎn)的菜的數(shù)目。在用戶進(jìn)行修改訂單操作的時候,運(yùn)用了map數(shù)據(jù)結(jié)構(gòu),將用戶所點(diǎn)的菜都加入到map中,復(fù)雜度為O(n*logn),n為用戶點(diǎn)的菜的數(shù)目,顯示的時候找每樣菜所對應(yīng)的菜的數(shù)目,,涉及到map的查詢操作,復(fù)雜度也是O(n*logn)??臻g復(fù)雜度在尋找用戶名與密碼的時候用了一個字符串,因此這里的空間復(fù)雜度最多為最長

40、用戶名的大小,在管理訂單的時候用map存儲了用戶點(diǎn)的菜和每份菜對應(yīng)的份數(shù),因此這里的時間復(fù)雜度與用戶點(diǎn)的菜的數(shù)目有關(guān).用戶名與密碼都是存放在文件中的,每次程序需要就從文件中讀取。</p><p>  3.上機(jī)過程中出現(xiàn)的問題及其解決方案。</p><p>  上機(jī)過程中出現(xiàn)的主要問題就是我創(chuàng)建的是C++窗體應(yīng)用程序,跟MFC有一定的區(qū)別,其中的控件中的內(nèi)容本以為都是std中string類型

41、的,結(jié)果卻是System::String^類型的,內(nèi)容全是String的引用,對于String^一點(diǎn)都不了解,上網(wǎng)查網(wǎng)頁上也沒多少內(nèi)容,然后想著把String^轉(zhuǎn)化為常用的std::string來進(jìn)行各項(xiàng)操作,去網(wǎng)上搜索試了各種方法也都不行,被困擾了一下午,后來偶然間看了微軟官網(wǎng)中標(biāo)準(zhǔn)的System::String轉(zhuǎn)化為std::string的函數(shù),因此問題解決。另一個問題是設(shè)計(jì)了兩個不同的界面,設(shè)計(jì)從一個界面點(diǎn)擊按鈕跳到另一個界面中去

42、,也是去網(wǎng)上搜索了好長時間,試過了各種方法才把它搞定。解決方法是把此界面類中引入要彈出的界面的類所在的文件,并且在按鈕響應(yīng)函數(shù)中實(shí)例化要彈出界面的類,在調(diào)用該對象的ShowDialog()函數(shù)。再就是要注意在每次打開文件的時候要先把文件關(guān)閉的語句寫上,免得以后忘記關(guān)閉文件導(dǎo)致出錯。在操作中另一個文件中要用到另一個文件中的變量(用戶名),不會定義全局變量,因此我把用戶名存放在文件中,要用的地方就去訪問該文件。</p><

43、;p>  4.程序中可以改進(jìn)的地方說明。</p><p>  程序中的文件感覺特別混亂,一個用戶有三個文件,分別是當(dāng)前未支付的訂單內(nèi)容,歷史消費(fèi)記錄,用戶的信息存儲。登錄后在別的類中會用到用戶名,我把它保存在文件中,要用到用戶名的類就打開這個文件,然后讀取用戶名,可能導(dǎo)致效率變低,可以把用戶名設(shè)置為全局變量,哪個類用到就直接訪問他,不用再去執(zhí)行打開文件這一步操作,這樣會提高效率。另外界面也是可以改進(jìn)的,軟件

44、應(yīng)該盡量使用暖色調(diào),這樣會給用戶一種溫暖的感覺,會增加用戶的食欲,同時用戶會感到服務(wù)非常的周到,增加用戶對服務(wù)的滿意度。</p><p>  5.程序中可以擴(kuò)充的功能及設(shè)計(jì)實(shí)現(xiàn)構(gòu)想。</p><p>  可以擴(kuò)充的功能就是將用戶名與密碼存放在文件中改為存放在數(shù)據(jù)庫中,然后進(jìn)行排序,查找用戶名與密碼的時候可以用二分查找,這樣在用戶數(shù)量比較大的時候也可以非??焖俚倪M(jìn)行查找。另外支付功能可以實(shí)現(xiàn)

45、聯(lián)網(wǎng)進(jìn)行網(wǎng)上支付操作,通過與網(wǎng)上銀行、支付寶等網(wǎng)站鏈接實(shí)現(xiàn)支付功能。用戶對菜譜的評分也可以反饋給酒店的經(jīng)理,讓酒店進(jìn)行相應(yīng)的調(diào)整。另外可以設(shè)計(jì)用戶VIP功能,擁有VIP的用戶可以享受打折服務(wù),用戶擁有VIP的條件可以是用戶的歷史消費(fèi)超過一定的價錢,然后升級VIP,在計(jì)算總價錢的時候系統(tǒng)會自動提供打折服務(wù),另外還可以設(shè)計(jì)送外賣功能,為提供送外賣服務(wù)的酒店提供方便。</p><p>  四、用戶手冊(說明程序的運(yùn)行環(huán)

46、境,程序執(zhí)行結(jié)果,詳細(xì)列出每一步的操作步驟??梢圆鍒D)</p><p>  本程序的運(yùn)行環(huán)境是Windows系統(tǒng)。</p><p>  運(yùn)行程序首先會出現(xiàn)登錄界面</p><p>  輸入用戶名與密碼之后便可以進(jìn)入功能界面,如果沒有帳號,那么可以點(diǎn)擊注冊按鈕注冊一個帳號。</p><p>  注冊成功之后便可以進(jìn)入功能頁面</p>

47、<p>  功能頁面有六個功能選項(xiàng)可供選擇,點(diǎn)擊點(diǎn)餐按鈕后顯示如下界面</p><p>  頁面顯示的菜譜都可供用戶選擇,每份菜都有對應(yīng)的價格,下拉菜單可以選擇菜的份數(shù)。選擇好之后便可以點(diǎn)擊提交按鈕,此時自動生成訂單。</p><p>  點(diǎn)餐成功便顯示如下界面</p><p>  如果菜肴點(diǎn)好之后還想進(jìn)行修改,如增加或者減少菜的份數(shù),此時可以點(diǎn)擊功能

48、界面的訂單管理,如下所示</p><p>  他會顯示用戶初次選菜時候?qū)γ繕硬怂x擇的情況,如果想更改,就可以像點(diǎn)菜那樣進(jìn)行操作,修改之后點(diǎn)擊提交就行了。</p><p>  點(diǎn)擊買單按鈕會顯示當(dāng)前用戶未支付的訂單,如下所示</p><p>  點(diǎn)擊支付按鈕可以進(jìn)行支付。</p><p>  支付成功便會顯示點(diǎn)餐成功界面</p>

49、<p>  歷史消費(fèi)可以查看自己以前所消費(fèi)的情況</p><p>  點(diǎn)擊菜譜評分可以對菜譜中的菜肴進(jìn)行評分,</p><p>  對相應(yīng)的菜肴進(jìn)行評分之后點(diǎn)擊提交按鈕便提交成功。</p><p>  提交評分之后可以查看自己的評分</p><p>  另外用戶可以管理自己的信息,點(diǎn)擊管理我的信息按鈕便可以進(jìn)入如下頁面</p

50、><p>  在這個頁面中用戶可以修改自己的密碼以及各種信息。</p><p>  五、設(shè)計(jì)總結(jié)(可談一談本次課程設(shè)計(jì)的經(jīng)驗(yàn)和體會)</p><p>  通過本次課程設(shè)計(jì),我掌握了如何給自己的程序設(shè)計(jì)上漂亮的界面,以及如何把不同的界面通過按鈕連接起來,在這個界面中點(diǎn)擊按鈕,另一個界面會彈出來,并且實(shí)現(xiàn)相應(yīng)的功能。實(shí)驗(yàn)過程中碰到許多問題,有個問題卡住了整整一下午,通過不斷

51、在網(wǎng)上查資料、問同學(xué)、查書籍,把所有的問題都解決了,走了不少彎路。但這些都成為了我的經(jīng)驗(yàn),因?yàn)樽邚澛窌o人更多思考的機(jī)會,使我更加周全的考慮事情。把課程設(shè)計(jì)做完之后感覺自己又進(jìn)步了許多,許多以前學(xué)不到的東西以及不熟悉的東西,甚至是一些以為自己明白了但實(shí)際上確實(shí)錯誤的東西都重新學(xué)習(xí)了一遍,加深了一遍。</p><p>  至今我感慨頗多的應(yīng)當(dāng)是一些難以查出的錯誤,編譯時查不出的錯誤,其被發(fā)現(xiàn)時很可能只是位置的錯誤,

52、僅隔數(shù)行,這些微小的信息卻極大地影響了整體的效果。這不僅存在于一個程序之中,因而我對于生活中的細(xì)節(jié)也有了改觀,對于整體和局部的觀念也有了更多的見解.</p><p><b>  六、參考文獻(xiàn)</b></p><p>  [1] 李蘭, 任鳳華. C++面向?qū)ο蟪绦蛟O(shè)計(jì). 西安: 西安電子科技大學(xué)出版社, 2010</p><p>  [2] 李

53、蘭, 任鳳華. 《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》實(shí)驗(yàn)指導(dǎo)及習(xí)題解析. 西安: 西安電子科技大學(xué)出版社, 2010</p><p>  [3] 鄭莉, 董淵. C++程序設(shè)計(jì)基礎(chǔ)教程. 北京: 清華大學(xué)出版社, 2010</p><p>  [4] 鄭莉. C++程序設(shè)計(jì)基礎(chǔ)教程學(xué)生用書. 北京: 清華大學(xué)出版社, 2010</p><p>  七、附錄(要加上注釋。) &

54、lt;/p><p>  以下是非系統(tǒng)生成的、自己寫的代碼,系統(tǒng)自動生成的代碼比較多,沒有附上。</p><p>  private: System::Void button_login_Click(System::Object^ sender, System::EventArgs^ e) {</p><p>  String^ userName;</p>

55、<p>  String^ password;</p><p>  userName=textBox_userName->Text;</p><p>  password=textBox_password->Text;</p><p>  string s_use ,s_pass;</p><p>  Marshal

56、String(userName,s_use); //System::String^ -> std::string</p><p>  MarshalString(password,s_pass);</p><p>  if(!judge(s_use,s_pass))</p><p><b>  {</b></p><

57、;p>  label2->Text = "用®?戶¡ì名?或¨°密¨¹碼?錯䨪誤¨®!ê?";</p><p><b>  return;</b></p><p><b>  }</b&g

58、t;</p><p>  string name = "";</p><p>  name += s_use;</p><p>  name += ".txt";</p><p>  ofstream output("now_use.txt");</p><p&g

59、t;  output<<name<<endl;</p><p>  output.close();</p><p>  // 驗(yàn)¨¦證¡è通ª¡§過y 顯?示º?功|能¨¹菜?單Ì£¤</p><p>  thi

60、s->Hide();</p><p><b>  功|能¨¹ p;</b></p><p>  p.ShowDialog();</p><p>  this->Close();</p><p><b>  }</b></p><p>  pri

61、vate: System::Void button_register_Click(System::Object^ sender, System::EventArgs^ e) {</p><p>  this->Hide();</p><p>  userRegister p1 ;</p><p>  p1.ShowDialog();</p>

62、<p>  this->Close();</p><p><b>  }</b></p><p>  private: bool judge(string s_use,string s_pass){</p><p>  string acount; </p><p>  string password;

63、 </p><p>  ifstream input;</p><p>  input.open("USERS.txt");</p><p>  if(!input){</p><p>  ofstream output("USERS.txt");</p><p>  outp

64、ut<<"";</p><p>  output.close();</p><p><b>  }</b></p><p>  int cnt = 1;</p><p>  while(input>>acount)</p><p><b>  

65、{</b></p><p>  if(cnt%2==1)</p><p><b>  {</b></p><p>  if(acount == s_use)</p><p><b>  {</b></p><p>  input>>password;&

66、lt;/p><p>  if(password != s_pass)</p><p><b>  {</b></p><p>  input.close();</p><p><b>  return 0;</b></p><p><b>  }</b>&l

67、t;/p><p><b>  else </b></p><p><b>  {</b></p><p>  input.close();</p><p><b>  return 1;</b></p><p><b>  }</b>&

68、lt;/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  cnt++;</b></p><p><b>  }</b></p><p>  input.close();<

69、;/p><p>  return 0; //not found user</p><p><b>  }</b></p><p>  void MarshalString ( String ^ s, string& os ) {</p><p>  using namespace Runtime::Interop

70、Services;</p><p>  const char* chars = </p><p>  (const char*)(Marshal::StringToHGlobalAnsi(s)).ToPointer();</p><p>  os = chars;</p><p>  Marshal::FreeHGlobal(IntPtr((

71、void*)chars));</p><p><b>  }</b></p><p>  private: System::Void button_registerOk_Click(System::Object^ sender, System::EventArgs^ e) {</p><p>  String^ acount = textB

72、ox1->Text;</p><p>  string s_user;</p><p>  MarshalString(acount,s_user);</p><p>  if(s_user=="")return;</p><p>  if(!judge(s_user)) //判D斷?用®?戶¡&

73、#236;名?是º?不?是º?已°?經(jīng)-存ä?在¨²</p><p><b>  {</b></p><p>  label1->Text="用®?戶¡ì名?已°?經(jīng)-存ä?在¨²!ê?";</p&

74、gt;<p><b>  return;</b></p><p><b>  }</b></p><p>  String^ p1 = textBox_password->Text;</p><p>  String^ p2 = textBox_surePassword->Text;</p&

75、gt;<p>  if(p1=="" && p2=="")return;</p><p>  if(p1!=p2) //判D斷?兩¢?次ä?輸º?入¨?的Ì?密¨¹碼?一°?致?性? </p>

76、;<p><b>  {</b></p><p>  label2->Text = "兩¢?次ä?輸º?入¨?的Ì?密¨¹碼?不?一°?致?!ê?";</p><p><b>  return;</b></p&g

77、t;<p><b>  }</b></p><p>  //能¨¹注Á¡é冊¨¢&&密¨¹碼?合?適º¨º</p><p>  string s_pass;</p><p>  MarshalSt

78、ring(p1,s_pass);</p><p>  ofstream output("USERS.txt",ios::app);</p><p>  output<<s_user<<" "<<s_pass<<endl; //寫¡ä入¨?文?件t</p>

79、<p>  output.close();</p><p>  string name = "";</p><p>  name += s_user;</p><p>  name += ".txt";</p><p>  ofstream output2("now_use.tx

80、t");</p><p>  output2<<name<<endl;</p><p>  output2.close();</p><p>  //注Á¡é冊¨¢成¨¦功|直¡À接¨®顯?示º?功|能¨

81、¹菜?單Ì£¤</p><p>  this->Hide();</p><p><b>  功|能¨¹ p;</b></p><p>  p.ShowDialog();</p><p><b>  }</b></p>&

82、lt;p>  void MarshalString ( String ^ s, string& os ) {</p><p>  using namespace Runtime::InteropServices;</p><p>  const char* chars = </p><p>  (const char*)(Marshal::String

83、ToHGlobalAnsi(s)).ToPointer();</p><p>  os = chars;</p><p>  Marshal::FreeHGlobal(IntPtr((void*)chars));</p><p><b>  }</b></p><p>  bool judge(string input_

84、name)</p><p><b>  {</b></p><p>  string cur_name;</p><p>  ifstream input("USERS.txt");</p><p>  int cnt = 1;</p><p>  while(!input.

85、eof()) //讀¨¢到Ì?文?件t尾2</p><p><b>  {</b></p><p>  input>>cur_name;</p><p>  if(cnt%2==1)</p><p><b>  {</b></p><p

86、>  if(cur_name == input_name){</p><p>  input.close();</p><p><b>  return 0;</b></p><p><b>  }</b></p><p><b>  }</b></p>&

87、lt;p><b>  cnt++;</b></p><p><b>  }</b></p><p>  input.close();</p><p><b>  return 1;</b></p><p><b>  }</b></p>

88、<p>  private: System::Void button_eat_Click(System::Object^ sender, System::EventArgs^ e) {</p><p><b>  點(diǎn)Ì?菜? p1;</b></p><p>  p1.ShowDialog();</p><p><

89、b>  }</b></p><p>  private: System::Void button_pay_Click(System::Object^ sender, System::EventArgs^ e) {</p><p><b>  pay p ;</b></p><p>  p.ShowDialog();<

90、/p><p><b>  }</b></p><p>  private: System::Void button_consumes_Click(System::Object^ sender, System::EventArgs^ e) {</p><p>  consume_record consume;</p><p&g

91、t;  consume.ShowDialog();</p><p><b>  }</b></p><p>  private: System::Void button_judge_Click(System::Object^ sender, System::EventArgs^ e) {</p><p>  judge jud;</p

92、><p>  jud.ShowDialog();</p><p><b>  }</b></p><p>  private: System::Void button_manageMyMessage_Click(System::Object^ sender, System::EventArgs^ e) {</p><p>

93、;  myMessage my;</p><p>  my.ShowDialog();</p><p><b>  }</b></p><p>  private: System::Void button6_Click(System::Object^ sender, System::EventArgs^ e) {</p>&l

94、t;p>  this->Close();</p><p><b>  }</b></p><p>  private: System::Void button_manageOrder_Click(System::Object^ sender, System::EventArgs^ e) {</p><p>  ifstream

95、input("now_use.txt");</p><p>  string name;</p><p>  input>>name;</p><p>  input.close();</p><p><b>  int i=4;</b></p><p>  whi

96、le(i--) //刪¦?除y后¨®四?個?元a素?(ꡧ.txt)ê?</p><p><b>  {</b></p><p>  name.erase((--name.end()));</p><p><b>  }</b></p>

97、<p>  name+="now_consume.txt";</p><p>  ifstream input2(name);</p><p>  string tmp;</p><p>  input2>>tmp;</p><p>  bool have = 1;</p><

98、p>  if(tmp=="")have=0;</p><p>  input2.close();</p><p><b>  if(have)</b></p><p><b>  {</b></p><p>  order_manage o;</p><

99、p>  o.ShowDialog();</p><p><b>  }</b></p><p><b>  else{</b></p><p>  noOrder no;</p><p>  no.ShowDialog();</p><p><b>  }&l

100、t;/b></p><p><b>  }</b></p><p>  private: System::Void button_submit_Click(System::Object^ sender, System::EventArgs^ e) {</p><p>  String^ t1 = comboBox1->Text;

101、</p><p>  String^ t2 = comboBox2->Text;</p><p>  String^ t3 = comboBox3->Text;</p><p>  String^ t4 = comboBox4->Text;</p><p>  String^ t5 = comboBox5->Text;

102、</p><p>  String^ t6 = comboBox6->Text;</p><p>  String^ t7 = comboBox7->Text;</p><p>  String^ t8 = comboBox8->Text;</p><p>  String^ t9 = comboBox9->Text;

103、</p><p>  String^ t10 = comboBox10->Text;</p><p>  int num2[11]; //表À¨ª示º?每?份¤Y菜?有®D多¨¤少¦¨´份¤Y的Ì?數(shù)ºy組&

104、#193;¨¦</p><p>  //下?面?是º?System::String^ 與®? std::string的Ì?轉(zhuǎn)Áa換?</p><p>  if(t1=="")num2[1]=0; //判D斷?是º?不?是º?為a空?,ê?

105、防¤¨¤止1出?現(xiàn)?異°¨¬常¡ê</p><p>  else num2[1]=int::Parse(t1);</p><p>  if(t2=="")num2[2]=0;</p><p>  else num2[2]=int::Parse(t2);</p&g

106、t;<p>  if(t3=="")num2[3]=0;</p><p>  else num2[3]=int::Parse(t3);</p><p>  if(t4=="")num2[4]=0;</p><p>  else num2[4]=int::Parse(t4);</p><p>

107、;  if(t5=="")num2[5]=0;</p><p>  else num2[5]=int::Parse(t5);</p><p>  if(t6=="")num2[6]=0;</p><p>  else num2[6]=int::Parse(t6);</p><p>  if(t7==&q

108、uot;")num2[7]=0;</p><p>  else num2[7]=int::Parse(t7);</p><p>  if(t8=="")num2[8]=0;</p><p>  else num2[8]=int::Parse(t8);</p><p>  if(t9=="")n

109、um2[9]=0;</p><p>  else num2[9]=int::Parse(t9);</p><p>  if(t10=="")num2[10]=0;</p><p>  else num2[10]=int::Parse(t10);</p><p>  double price[]={0,9,5,39,66,7

110、9,99,69,19,39,29};//表À¨ª示º?每?份¤Y菜?多¨¤少¦¨´錢?的Ì?數(shù)ºy組Á¨¦</p><p>  double sum_price = 0;</p><p>  for(int i=1;i<11;i++){

111、</p><p>  sum_price += num2[i]*price[i];</p><p><b>  }</b></p><p>  const string dish_names[]={"","西¡Â紅¨¬柿º¨¢炒¡

112、28;雞|蛋Ì¡ã 9.00","酸¨¢辣¤¡À土ª¨¢豆1絲? 5.00","大䨮醬¡ä湯¬¨¤ 39.00","蒸?排?骨? 66.00","糖¬?醋&

113、#228;¡Á鯉¤e魚®? 79.00",</p><p>  "糖¬?醋ä¡Á排?骨? 99.00","白ã¡Á芍¦?蝦o 69.00","雞|湯¬¨¤餛?飩? 19.00","一&#

114、176;?品¡¤豆1腐¡¥ 39.00","雞|蛋Ì¡ã布?丁? 29.00"};</p><p>  static int cnt = 1;</p><p>  ifstream input1("now_use.txt"); //寫¡ä入

115、8;?信?息¡é</p><p>  string name;</p><p>  input1>>name;</p><p>  input1.close();</p><p><b>  int i=4;</b></p><p>  while(i--) /

116、/刪¦?除y后¨®四?個?元a素?(ꡧ.txt)ê?</p><p><b>  {</b></p><p>  name.erase((--name.end()));</p><p><b>  }</b></p><p>

117、  name+="now_consume.txt";</p><p>  ifstream input2(name);</p><p><b>  string s;</b></p><p>  input2>>s;</p><p>  bool have = 1;</p>

118、<p>  if(s=="")have=0;</p><p>  input2.close();</p><p><b>  if(!have)</b></p><p><b>  {</b></p><p>  ofstream output(name);</p

119、><p>  for(int i=1;i<11;i++){</p><p>  if(num2[i]){</p><p>  output<<dish_names[i]<<"ר¢"<<num2[i]<<endl;</p><p><b&

120、gt;  }</b></p><p><b>  }</b></p><p>  output<<"總Á¨¹計(jì)?: "<<sum_price<<endl;</p><p>  output.close();</p><p>

121、<b>  }</b></p><p><b>  else {</b></p><p>  show_noDish show;</p><p>  show.ShowDialog();</p><p>  this->Close();</p><p><b>

122、;  return;</b></p><p><b>  }</b></p><p><b>  cnt++;</b></p><p>  ifstream input("now_use.txt");</p><p>  string name2;</p>

123、<p>  input>>name2;</p><p>  input.close();</p><p>  ofstream output(name2,ios::app);</p><p>  for(int i=1;i<11;i++){</p><p>  if(num2[i]){</p>&

124、lt;p>  output<<dish_names[i]<<"ר¢"<<num2[i]<<endl;</p><p><b>  }</b></p><p><b>  }</b></p><p>  output&l

125、t;<"總Á¨¹計(jì)?: "<<sum_price<<endl;</p><p>  output.close();</p><p>  success_order ok ;</p><p>  ok.ShowDialog();</p><p>  this->

126、;Close();</p><p><b>  }</b></p><p>  private: System::Void pay_Load(System::Object^ sender, System::EventArgs^ e) {</p><p>  ifstream input("now_use.txt");

127、 //寫¡ä入¨?信?息¡é</p><p>  string name;</p><p>  input>>name;</p><p>  input.close();</p><p><b>  int i=4;</b></p><p&

128、gt;  while(i--) //刪¦?除y后¨®四?個?元a素?(ꡧ.txt)ê?</p><p><b>  {</b></p><p>  name.erase((--name.end()));</p><p><b>  }</b>&l

129、t;/p><p>  name+="now_consume.txt";</p><p>  ifstream input1(name);</p><p>  string temp,temp2;</p><p>  while(input1>>temp){</p><p>  input1&

130、gt;>temp2;</p><p>  string temp3 = temp+temp2;</p><p>  String^ str = gcnew String(temp3.c_str()); //std::string -> System::String^</p><p>  listBox1->Items->Add(str);

131、</p><p><b>  }</b></p><p>  input1.close();</p><p><b>  }</b></p><p>  private: System::Void button1_Click(System::Object^ sender, System::Even

132、tArgs^ e) {</p><p>  ToPay topay ;</p><p>  topay.ShowDialog();</p><p>  ifstream input("now_use.txt"); //寫¡ä入¨?信?息¡é</p><p>  str

133、ing name;</p><p>  input>>name;</p><p>  input.close();</p><p><b>  int i=4;</b></p><p>  while(i--) //刪¦?除y后¨®四?個?元a素?(ê¡&

134、#167;.txt)ê?</p><p><b>  {</b></p><p>  name.erase((--name.end()));</p><p><b>  }</b></p><p>  name+="now_consume.txt";</p>

135、<p>  ofstream output(name);</p><p>  output<<"";</p><p>  output.close();</p><p>  this->Close();</p><p><b>  }</b></p>&l

136、t;p>  private: System::Void order_manage_Load(System::Object^ sender, System::EventArgs^ e) {</p><p>  ifstream input("now_use.txt");</p><p>  string name;</p><p>  i

137、nput>>name;</p><p>  input.close();</p><p><b>  int i=4;</b></p><p>  while(i--) //刪¦?除y后¨®四?個?元a素?(ꡧ.txt)ê?</p><

138、p><b>  {</b></p><p>  name.erase((--name.end()));</p><p><b>  }</b></p><p>  name+="now_consume.txt";</p><p>  const string dish_na

139、mes[]={"","西¡Â紅¨¬柿º¨¢炒¡ä雞|蛋Ì¡ã 9.00","酸¨¢辣¤¡À土ª¨¢豆1絲? 5.00","大䨮醬

140、1;ä湯¬¨¤ 39.00","蒸?排?骨? 66.00","糖¬?醋ä¡Á鯉¤e魚®? 79.00",</p><p>  "糖¬?醋ä¡Á排?骨? 99.00","白ã¡&

141、#193;芍¦?蝦o 69.00","雞|湯¬¨¤餛?飩? 19.00","一°?品¡¤豆1腐¡¥ 39.00","雞|蛋Ì¡ã布?丁? 29.00"};</p><p>  map<string,int> mp;

142、</p><p>  for(int i=1;i<11;i++){</p><p>  mp[dish_names[i]]=0;</p><p><b>  }</b></p><p>  ifstream input2(name);</p><p>  string tmp,tmp2;&l

143、t;/p><p>  while(input2>>tmp)</p><p><b>  {</b></p><p>  input2>>tmp2;</p><p>  if(tmp == "總Á¨¹計(jì)?:")continue;</p>&

144、lt;p>  int val,j;</p><p>  j = tmp2.find('ר¢');</p><p>  val = tmp2[j+1]-'0'; //val表À¨ª示º?菜?的Ì?份¤Y數(shù)ºy</p><p>

145、  mp[tmp] = val; //菜?名?與®?它¨¹的Ì?份¤Y數(shù)ºy對?應(yīng)®|</p><p><b>  }</b></p><p>  input2.close();</p><p>  String^ str = label_dish1->T

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論