版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店管理系統(tǒng)_c++課程設(shè)計(jì)報告
- c++課程設(shè)計(jì)報告--酒店管理系統(tǒng)
- c++酒店管理系統(tǒng)課程設(shè)計(jì)
- c++酒店管理系統(tǒng)課程設(shè)計(jì)
- c++課程設(shè)計(jì)--酒店管理系統(tǒng)
- c++課程設(shè)計(jì)·酒店管理系統(tǒng)
- c++課程設(shè)計(jì)報告-- 學(xué)籍管理系統(tǒng)
- c++課程設(shè)計(jì)—教師管理系統(tǒng)報告
- c++課程設(shè)計(jì)報告--成績管理系統(tǒng)
- c++課程設(shè)計(jì)——學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)報告
- c++課程設(shè)計(jì)報告-商品管理系統(tǒng)
- c++課程設(shè)計(jì)報告飛機(jī)訂票管理系統(tǒng)
- c++課程設(shè)計(jì)報告--高校人員管理系統(tǒng)
- c++課程設(shè)計(jì)報告---銀行管理系統(tǒng)
- visual c++超市管理系統(tǒng)課程設(shè)計(jì)報告
- c++語言課程設(shè)計(jì)報告--影像管理系統(tǒng)
- c++課程設(shè)計(jì)--酒店客房管理系統(tǒng)
- c++課程設(shè)計(jì)報告(學(xué)生學(xué)籍管理系統(tǒng))
- c++課程設(shè)計(jì)報告(學(xué)生學(xué)籍管理系統(tǒng))
- c++課程設(shè)計(jì)報告-圖書管理系統(tǒng)
評論
0/150
提交評論