版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、( 2014 / 2015 學(xué)年 第 1學(xué)期)題 目:停車(chē)場(chǎng)管理系統(tǒng)專(zhuān) 業(yè) 組長(zhǎng) 學(xué)號(hào)姓名 組員 學(xué)號(hào)姓名 指 導(dǎo) 教 師 指 導(dǎo) 單 位 日 期 成員分工組長(zhǎng)()代碼部分:取車(chē)、查詢(xún)信息、修改停車(chē)費(fèi)費(fèi)率模塊實(shí)驗(yàn)報(bào)告:測(cè)試數(shù)據(jù)和結(jié)果分析、調(diào)試過(guò)程中的問(wèn) 題組員()代碼部分:管理員登陸模塊實(shí)驗(yàn)報(bào)告:概要設(shè)計(jì)和課程小結(jié)組員()代碼部分:停車(chē)模塊的實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告:課程內(nèi)容和要求、需求分析評(píng)分細(xì)則評(píng)分項(xiàng)優(yōu)秀良好中等差遵守機(jī)房規(guī)章制度上機(jī)時(shí)的表現(xiàn)學(xué)習(xí)態(tài)度程序準(zhǔn)備情況程序設(shè)計(jì)能力團(tuán)隊(duì)合作精神課題功能實(shí)現(xiàn)情況算法設(shè)計(jì)合理性用戶(hù)界面設(shè)計(jì)報(bào)告書(shū)寫(xiě)認(rèn)真程度內(nèi)容詳實(shí)程度文字表達(dá)熟練程度回答問(wèn)題準(zhǔn)確度簡(jiǎn)短評(píng)語(yǔ) 教師簽名
2、:年月日評(píng)分等級(jí)備注評(píng)分等級(jí)共五種:優(yōu)秀、良好、中等、及格、不及格停車(chē)場(chǎng)管理系統(tǒng)一、 課題內(nèi)容和要求 停車(chē)場(chǎng)管理是一個(gè)計(jì)時(shí)收費(fèi)系統(tǒng),同時(shí)也是一個(gè)能對(duì)車(chē)位進(jìn)行管理的系統(tǒng),最基本的功能是實(shí)現(xiàn)停車(chē)、取車(chē)、查詢(xún)以及修改停車(chē)費(fèi)費(fèi)率等功能。同時(shí),為了使用的方便和安全的考慮設(shè)計(jì)了管理員能對(duì)密碼進(jìn)行修改的功能。在停車(chē)的功能中采用了文件流的形式,對(duì)車(chē)位、車(chē)牌號(hào)、車(chē)型都進(jìn)行了保存,以便于查詢(xún)功能的實(shí)現(xiàn),除此之外,也是為了能夠?qū)崿F(xiàn)在取車(chē)模塊中利用輸入的車(chē)牌號(hào)自動(dòng)計(jì)算出停車(chē)的費(fèi)用。停車(chē)位第一個(gè)為空的位置,由程序查詢(xún)自動(dòng)給出車(chē)位號(hào),如果車(chē)位已滿(mǎn)要給出提示。 取車(chē)時(shí),需要根據(jù)車(chē)輛停泊時(shí)間自動(dòng)計(jì)算費(fèi)用(半小時(shí)內(nèi)以半價(jià)計(jì)算,
3、超出半小時(shí)不足一小時(shí)按一小時(shí)計(jì)算)并顯示在屏幕上,可以隨時(shí)根據(jù)車(chē)牌查詢(xún)是否入庫(kù)。可以隨時(shí)根據(jù)車(chē)位查詢(xún)?cè)撐恢蒙系南嚓P(guān)信息。本系統(tǒng)對(duì)不同車(chē)型的費(fèi)率給出了默認(rèn)值,管理員可以根據(jù)實(shí)際需要對(duì)費(fèi)率進(jìn)行修改。功能要求:用C/C+設(shè)計(jì)一個(gè)程序?qū)崿F(xiàn)停車(chē)場(chǎng)管理系統(tǒng),要求如下:(1) 管理人員根據(jù)口令進(jìn)入系統(tǒng);(2) 管理人員有權(quán)限對(duì)登陸賬號(hào)和密碼進(jìn)行修改;(3) 管理車(chē)位信息(車(chē)位編號(hào),狀態(tài))和每小時(shí)的收費(fèi)費(fèi)率;(4) 停車(chē)時(shí)錄入汽車(chē)停泊信息(車(chē)牌號(hào),車(chē)型,停泊位置,停泊開(kāi)始時(shí)間);如果車(chē)位已滿(mǎn)要給出提示;(5) 取車(chē)時(shí),根據(jù)車(chē)牌取,如果沒(méi)有給出提示;需要根據(jù)車(chē)輛停泊時(shí)間自動(dòng)計(jì)算費(fèi)用并顯示在屏幕上。(6) 管理人
4、員可以根據(jù)需要隨時(shí)更改每小時(shí)的收費(fèi)費(fèi)率。二、 需求分析停車(chē)場(chǎng)管理系統(tǒng)的功能框架圖如圖1所示。圖1 功能框架圖(1)系統(tǒng)主要包括了管理員登陸、停車(chē)操作、取車(chē)操作、信息查詢(xún)、費(fèi)率修改這五大模塊,每個(gè)模塊都用用相應(yīng)的函數(shù)來(lái)實(shí)現(xiàn)這些功能。(2)在管理員登陸模塊中,設(shè)置了三次輸入機(jī)會(huì),用戶(hù)名和密碼事先用文檔存儲(chǔ),供使用者進(jìn)入系統(tǒng);若管理員連續(xù)輸入密碼錯(cuò)誤超過(guò)提示,則系統(tǒng)給出修改密碼或者退出系統(tǒng)的提示,這些功能在函數(shù)名為loadin()的函數(shù)中實(shí)現(xiàn)。(3)管理員登陸模塊結(jié)束之后便到了系統(tǒng)的主要界面,選擇操作1是停車(chē)模塊。在選擇停車(chē)操作之后,系統(tǒng)能夠?qū)崿F(xiàn)“將第一個(gè)為空的位置,由程序查詢(xún)自動(dòng)給出車(chē)位號(hào),如果車(chē)
5、位已滿(mǎn)要給出提示”這一功能用函數(shù)compare()和jugement()共同實(shí)現(xiàn)的。進(jìn)入停車(chē)模塊后,還應(yīng)選擇不同的車(chē)型進(jìn)行停車(chē),這一過(guò)程會(huì)調(diào)用putcar()和gettime()函數(shù),用來(lái)給出不同車(chē)型的費(fèi)率和調(diào)用停車(chē)時(shí)的系統(tǒng)時(shí)間。(4)通常選擇了停車(chē)操作之后取車(chē)和查詢(xún)功能才會(huì)有意義,所以取車(chē)和查詢(xún)公共主要是使用了campare()函數(shù),調(diào)用strcmp()字符串比較函數(shù)對(duì)輸入的車(chē)牌號(hào)和停車(chē)時(shí)的車(chē)牌號(hào)進(jìn)行比較,若相同,則返回該車(chē)位,達(dá)到取車(chē)和查詢(xún)的作用。(5)不同的停車(chē)場(chǎng)可以根據(jù)需要修改每種車(chē)型的車(chē)輛對(duì)應(yīng)的費(fèi)率。這個(gè)功能在修改費(fèi)率的模塊中實(shí)現(xiàn)。(6)根據(jù)不同的車(chē)型以及其停泊時(shí)間收費(fèi),間差乘以單價(jià)
6、就是最后收費(fèi),其中取車(chē)時(shí),需要根據(jù)車(chē)輛停泊時(shí)間自動(dòng)計(jì)算費(fèi)用(半小時(shí)內(nèi)以半價(jià)計(jì)算,超出半小時(shí)不足一小時(shí)按一小時(shí)計(jì)算)并顯示在屏幕上。這個(gè)功能需要調(diào)用系統(tǒng)時(shí)間,因此在整個(gè)程序中包含了頭文件后(#include<time.h>)利用結(jié)構(gòu)這種數(shù)據(jù)類(lèi)型來(lái)實(shí)現(xiàn)。三、概要設(shè)計(jì)1. 主要結(jié)構(gòu)體為了實(shí)現(xiàn)停車(chē)場(chǎng)管理系統(tǒng)的停車(chē)、取車(chē)、查詢(xún)、修改功能,主要用一個(gè)while循環(huán),通過(guò)輸入的數(shù)字選擇相應(yīng)的操作。同時(shí)為了實(shí)現(xiàn)每個(gè)模塊的功能,引用一些相應(yīng)的子函數(shù)。下面是主要結(jié)構(gòu)體的流程圖: 圖2 主要結(jié)構(gòu)體流程圖2. 主要函數(shù)流程圖(1) 管理員登陸模塊管理員登陸模塊是用函數(shù)loadin()來(lái)實(shí)現(xiàn)的,在loadi
7、n()函數(shù)中對(duì)賬號(hào)和密碼都有三次的輸入機(jī)會(huì),用變量ai來(lái)記錄輸入的次數(shù),當(dāng)ai>=3時(shí),進(jìn)入修改密碼的界面。在修改密碼模塊了,用strcpy()函數(shù)將輸入的字符串a(chǎn)dpassword1賦值給密碼adpassword(adpassword為全局變量,所以才能起到修改的作用)。修改完成密碼后,在loadin()函數(shù)中再次調(diào)用loadin()函數(shù),這樣在修改密碼后就能重新回到登陸界面進(jìn)行登陸,大體程序流程圖如下:圖3 管理員登陸模塊流程圖(2) 比較函數(shù)compare()在停車(chē)場(chǎng)管理系統(tǒng)的取車(chē)、查詢(xún)模塊中都需要用到輸入“車(chē)牌號(hào)判斷停車(chē)場(chǎng)中是否有該車(chē)”這個(gè)功能,而compare()函數(shù)就是用來(lái)實(shí)
8、現(xiàn)這個(gè)功能的。其大概思路是,通過(guò)輸入的字符串與系統(tǒng)儲(chǔ)存有的字符串進(jìn)行比較,如果字符串相等就返回一個(gè)0,如果不相等就返回非0,而通過(guò)0和非0的控制,便能實(shí)現(xiàn)判斷的功能,其流程圖如下所示:圖4 字符串比較函數(shù)流程圖(3) 搜索空車(chē)位函數(shù)jugement() 對(duì)于停車(chē)操作來(lái)說(shuō),需要在所有停車(chē)位中找到第一個(gè)空車(chē)位,并返回這個(gè)車(chē)位。在該系統(tǒng)中,這個(gè)功能由函數(shù)jugement()來(lái)實(shí)現(xiàn)。設(shè)int型變量j為車(chē)位編號(hào),利用數(shù)字positionj的值是否為1,來(lái)判斷是車(chē)位是否為空(這里是將1視為有車(chē),0為無(wú)車(chē))。圖5 搜索空車(chē)位函數(shù)流程圖在這個(gè)函數(shù)中還要注意:在用while循環(huán)對(duì)每個(gè)車(chē)位進(jìn)行逐個(gè)判斷的時(shí)候,j一
9、定要小于停車(chē)場(chǎng)的總車(chē)位。除此之外,返回第一個(gè)空車(chē)位表示將要在這個(gè)車(chē)位進(jìn)行停車(chē),因此要重新將positionj的值置為1。四、源程序代碼#include <iostream>#include <string>#include <time.h> #include<fstream>using namespace std; class car public: char no10; int pos; double fee; void putcar(); void takecar(); void changefee(); ; class Time publi
10、c: int hour; int min; void getime(); ; char adpassword10="123456"char adname10="wcx"int i,poi; int position50=0;/全局變量 car carin50; Time catime50; double Fee1=6.0, Fee2=5.0, Fee3=4.0 , Fee4=3.0 ;int jugement(); int compare(); void search_no(); void search_position(); void loadin()
11、;void main()/-管理員登陸模塊-loadin();/-登陸模塊結(jié)束-int k=0;cout<<""<<endl; cout<<"請(qǐng)選擇:" <<"nnt-" <<"nnt1.停車(chē)操作 " <<"nnt2.取車(chē)操作 " <<"nnt3.查詢(xún)信息 " <<"nnt4.修改車(chē)費(fèi)" <<"nnt5.退 出" <<
12、"nnt-nn" ofstream outfile("車(chē)輛信息.txt",ios:app);if(! outfile)cerr<<"open error!"<<endl;exit(1);while(cin>>k) if(k=1) i=jugement();/-通過(guò)jugement()函數(shù)返回第一個(gè)空的車(chē)位icout<<"-" <<endl; cout<<"t請(qǐng)輸入車(chē)牌號(hào):" cin>>carini.no; /用戶(hù)
13、輸入停在第i個(gè)車(chē)位的車(chē)牌號(hào)carini.putcar(); cout<<"請(qǐng)選擇:" <<"nnt-" <<"nnt 1.停車(chē)操作 " <<"nnt 2.取車(chē)操作 " <<"nnt 3.查詢(xún)信息 " <<"nnt 4.修改車(chē)費(fèi) " <<"nnt 5.退 出" <<"nnt -nn"string time1;time_t t; time(&am
14、p;t); time1=ctime(&t); cout<<time1;/-導(dǎo)入系統(tǒng)時(shí)間outfile<<carini.no<<" "<<time1<<endl;continue; if(k=2) poi=compare(); carinpoi.takecar();cout<<"請(qǐng)選擇:" <<"nnt-" <<"nnt 1.停車(chē)操作 " <<"nnt 2.取車(chē)操作 " <&l
15、t;"nnt 3.查詢(xún)信息 " <<"nnt 4.修改車(chē)費(fèi) " <<"nnt 5.退 出" <<"nnt -nn"continue; if(k=3) int x; while(1) cout<<"請(qǐng)輸入數(shù)字選擇需要的操作:"<<endl; cout<<""<<endl; cout<<"nnt-" <<"nnt1.查詢(xún)車(chē)牌號(hào)" &l
16、t;<"nnt2.查詢(xún)車(chē)位" <<"nnt3.退出查詢(xún)" <<"nnt-nn" cin>>x; if(x=1) search_no(); break; else if(x=2) search_position(); break; else if(x=3) break; else cout<<"t選擇錯(cuò)誤,請(qǐng)重新選擇:" cout<<"請(qǐng)選擇:" <<"nnt-" <<"nnt
17、1.停車(chē)操作 " <<"nnt 2.取車(chē)操作 " <<"nnt 3.查詢(xún)信息 " <<"nnt 4.修改車(chē)費(fèi) "<<"nnt 5.退 出" <<"nnt -nn" /outfile.close();if(k=4) carini.changefee();continue;if(k=5)exit(0);/-loadin()-void loadin()char an10,ap10; int ai=0; cout<<&qu
18、ot; -歡迎使用XX停車(chē)場(chǎng)管理系統(tǒng)-"<<endl; while(1) cout<<""<<endl;cout<<"請(qǐng)輸入管理員用戶(hù)名:" cin>>an; if(strcmp(adname,an) cout<<"此用戶(hù)名不存在!n" ai+;if(ai=3)exit(0);continue; else cout<<"請(qǐng)輸入密碼:" cin>>ap; if(!strcmp(adpassword,ap) bre
19、ak;else cout<<"密碼錯(cuò)誤!n" ai+; if(ai=3)cout<<""<<endl;cout<<"密碼連續(xù)輸入錯(cuò)誤3次,請(qǐng)重新選擇操作:"<<endl;cout<<"-"<<endl;cout<<"1.修改密碼"<<endl;cout<<"2.退出系統(tǒng)"<<endl;cout<<"-"<&l
20、t;endl;int k;while(cin>>k)if(k=1)cout<<"請(qǐng)輸入新的密碼,密碼不超過(guò)10位數(shù):"<<endl;char adpassword110; cin>>adpassword1;strcpy(adpassword,adpassword1);cout<<"你的新密碼是:"<<endl;cout<<adpassword<<endl;loadin();break;if(k=2)exit(0);if(k!=1&&k!=2)c
21、out<<"輸入錯(cuò)誤,請(qǐng)重新輸入:"return;continue; cout<<"登陸成功!" <<endl;/- jugement() -int jugement() /-判斷出第一個(gè)空的車(chē)位 int j=0; while(positionj=1&&j<50) j+; cout<<" 共有50個(gè)停車(chē)位,當(dāng)前可使用停車(chē)位 :"<<50-j<<endl;cout<<""<<endl;cout<
22、<" 本停車(chē)場(chǎng)收費(fèi)標(biāo)準(zhǔn)如下:"<<endl;cout<<""<<endl;cout<<" 貨車(chē)每小時(shí)"<<Fee1<<"元,客車(chē)每小時(shí)"<<Fee2<<"元,轎車(chē)每小時(shí)"<<Fee3<<"元,其它車(chē)輛每小時(shí)"<<Fee4<<"元。"<<endl;cout<<" 注:停車(chē)時(shí)間小
23、于30分鐘的按0.5個(gè)小時(shí)計(jì)算,超過(guò)30分鐘但不足1小時(shí)的按1個(gè)小時(shí)收費(fèi)"<<endl;if(j<50) positionj=1; /當(dāng)找到第一個(gè)空車(chē)位時(shí)(即position=0時(shí),并且滿(mǎn)足車(chē)位號(hào)j<100的情況下) ,然后選擇該車(chē)位停車(chē), /停車(chē)后將position重新置為1,表示該車(chē)位現(xiàn)在已經(jīng)停車(chē)了。(在這種情況下表示找到空車(chē)位后就必須停在這個(gè)車(chē)位上)return j; /-compare()- int compare() char ch10; cout<<"t請(qǐng)輸入車(chē)牌號(hào):" cin>>ch; for(int
24、k=0;k<50;k+) if(!strcmp(ch,carink.no) / -將輸入的車(chē)牌號(hào)與停車(chē)場(chǎng)上的每個(gè)位子的車(chē)輛進(jìn)行比較(包括那些沒(méi)停車(chē)的車(chē)位) if(positioncarink.pos-1=1) / 在car:putcar()函數(shù)中因?yàn)橐敵鲕?chē)位號(hào),所以將對(duì)象數(shù)組carink.pos變?yōu)榱薱arink.pos+1, / 于是用數(shù)組position找已經(jīng)停車(chē)的車(chē)位時(shí)要將其處理為carink.pos-1 return (carink.pos-1); break; if(k=50) return k; /- car:putcar()-void car:putcar() int t
25、; /車(chē)輛類(lèi)型的變量 while(1) cout<<"請(qǐng)選擇車(chē)型:"<<endl;cout<<""<<endl;cout<<"nnt-" <<"nnt貨車(chē)請(qǐng)輸入1"<<"nnt客車(chē)請(qǐng)輸入2"<<"nnt轎車(chē)請(qǐng)輸入3"<<"nnt其他車(chē)輛請(qǐng)輸入4" <<"nnt-nn"cin>>t; if(t=1) cari
26、ni.fee=Fee1;break; else if(t=2) carini.fee=Fee2;break; else if(t=3)carini.fee=Fee3;break; else if(t=4)carini.fee=Fee4;break;cout<<"輸入錯(cuò)誤!請(qǐng)重新輸入:n" if(i=50) cout<<"對(duì)不起,車(chē)位已滿(mǎn)!n"carini.pos=i+1; /-自動(dòng)輸出車(chē)位號(hào),數(shù)組里0表示第一位,而車(chē)位的第一位是1,所以carini.pos=i+1;cout<<"nnt-"cout&
27、lt;<"nnt已成功選擇車(chē)位!車(chē)位號(hào)是:"<<carini.pos<<endl; catimei.getime(); cout<<"nnt現(xiàn)在時(shí)間是:"<<catimei.hour<<":"<<catimei.min<<endl; cout<<"nnt-"<<endl; /- car:takecar()-void car:takecar() int hour1,min1; double charge;
28、 if(poi<50) positionpoi=0; /-通過(guò)取車(chē)操作后,重新將該車(chē)位設(shè)定為空車(chē)位hour1=catimepoi.hour; min1=catimepoi.min; catimepoi.getime(); hour1=catimepoi.hour-hour1; min1=catimepoi.min-min1; if(min1<30)/計(jì)算出停車(chē)時(shí)間,不足30分鐘的按30分鐘計(jì)算 charge=carinpoi.fee*hour1+carinpoi.fee*0.5; else charge=carinpoi.fee*hour1+carinpoi.fee; cout&l
29、t;<"t車(chē)費(fèi)為:"<<charge<<"元.n" /計(jì)算出車(chē)費(fèi)輸出 else cout<<"t無(wú)此車(chē)!n" /- Time:getime()-void Time:getime() struct tm *newtime; time_t long_time; /time_t用來(lái)定義長(zhǎng)整型數(shù) long_timetime( &long_time ); newtime = localtime( &long_time ); hour=newtime->tm_hour; min=ne
30、wtime->tm_min; /- search_no()- void search_no() int poi=compare(); if(poi<50) cout<<"t此車(chē)已入庫(kù),車(chē)位為:"<<poi+1<<endl; else cout<<"t此車(chē)沒(méi)有入庫(kù)。n" /根據(jù)車(chē)牌號(hào)查詢(xún)是否入庫(kù) /- search_positon()-void search_position() int loc;cout<<" " <<endl; cout<<
31、;"t車(chē)位號(hào)是:" /-根據(jù)車(chē)位查詢(xún)車(chē)位狀態(tài)cin>>loc; if(positionloc-1=1) cout<<"t車(chē)牌號(hào):"<<carinloc-1.no<<endl; cout<<"t停車(chē)時(shí)間:"<<catimeloc-1.hour<<":"<<catimeloc-1.min<<endl;/停車(chē)直到現(xiàn)在的時(shí)間 else cout<<"t此車(chē)位無(wú)車(chē)!" /-void ca
32、r:changefee()cout<<"請(qǐng)選擇修改的車(chē)型:"cout<<"nnt-" <<"nnt 修改 貨車(chē)費(fèi)用 請(qǐng)輸入1 "<<"nnt 修改 客車(chē)費(fèi)用 請(qǐng)輸入2 "<<"nnt 修改 轎車(chē)費(fèi)用 請(qǐng)輸入3 "<<"nnt 修改 其他費(fèi)用 請(qǐng)輸入4 " <<"nnt 退 出 修 改 請(qǐng)輸入5 " <<"nnt -nn"int type;ci
33、n>>type;while(1)if(type=1)double fee1;cout<<"每小時(shí)貨車(chē)費(fèi)用:"cin>>fee1;Fee1=fee1;cout<<"車(chē)費(fèi)修改成功!"<<endl;break;else if(type=2)double fee2; cout<<"每小時(shí)客車(chē)費(fèi)用:"cin>>fee2; Fee2=fee2;cout<<"車(chē)費(fèi)修改成功!"<<endl;break; else if(ty
34、pe=3)double fee3; cout<<"每小時(shí)轎車(chē)費(fèi)用:"cin>>fee3; Fee3=fee3; cout<<"車(chē)費(fèi)修改成功!"<<endl; break; else if(type=4)double fee4; cout<<"每小時(shí)轎車(chē)費(fèi)用:"cin>>fee4;Fee4=fee4; cout<<"車(chē)費(fèi)修改成功!"<<endl;break;else if(type=5)break;cout<<
35、"請(qǐng)選擇:" <<"nnt-" <<"nnt 1.停車(chē)操作 " <<"nnt 2.取車(chē)操作 " <<"nnt 3.查詢(xún)信息 " <<"nnt 4.修改車(chē)費(fèi) " <<"nnt 5.退 出" <<"nnt -nn" /-程序結(jié)束-。5、 測(cè)試數(shù)據(jù)及其結(jié)果分析(1)修改密碼時(shí)密碼長(zhǎng)度超過(guò)限制引起的錯(cuò)誤圖6 修改密碼時(shí)密碼長(zhǎng)度超過(guò)限制的錯(cuò)誤登陸界面因?yàn)樾薷拿艽a的
36、時(shí)候字符串長(zhǎng)度設(shè)置為10個(gè)字符,當(dāng)密碼長(zhǎng)度超過(guò)10位就會(huì)引起內(nèi)部錯(cuò)誤(字符wcx為正確的登陸賬號(hào))。如果設(shè)置一個(gè)密碼的字符長(zhǎng)度判斷功能的函數(shù),能讓輸入超過(guò)十位后重新輸入,就可以解決這個(gè)問(wèn)題。(2)賬號(hào)輸入錯(cuò)誤引起的不能正常退出圖7 賬號(hào)輸入錯(cuò)誤引起的不能正常退出的界面圖賬號(hào)連續(xù)輸入錯(cuò)誤后卻進(jìn)入了系統(tǒng),之所以出現(xiàn)這個(gè)原因是因?yàn)樵谂袛噘~號(hào)的錯(cuò)誤次數(shù)的循環(huán)中沒(méi)有正常退出,代碼如下:if(strcmp(adname,an) cout<<"此用戶(hù)名不存在!n" ai+;if(ai=3)return; / 在這里只要把return改為exit(0)后就能得到正確結(jié)果cont
37、inue; 修改得到的正確結(jié)果如下圖所示:圖8 賬號(hào)輸入錯(cuò)誤正常退出系統(tǒng)的界面圖(3) 選擇停車(chē)操作后顯示的停車(chē)費(fèi)率圖9 修改停車(chē)費(fèi)率前信息顯示圖剛進(jìn)入系統(tǒng)是若沒(méi)有選擇修改車(chē)費(fèi)的操作,此時(shí)顯示的費(fèi)率則是系統(tǒng)默認(rèn)的,這是由于程序里將代表四種車(chē)型的費(fèi)率的變量Fee1、Fee2、Fee3、Fee4的設(shè)為了全局并且賦了初值。修改了車(chē)費(fèi)費(fèi)率的圖如下: 圖10 修改停車(chē)費(fèi)率后信息顯示圖不足的是必須是選擇了停車(chē)操作之后車(chē)位的信息和費(fèi)率才能顯示出來(lái),實(shí)用性差了一些。六、調(diào)試過(guò)程中的問(wèn)題(1).字符串比較函數(shù)strcmp()的使用在C/C+語(yǔ)言中,常用strcmp()函數(shù)來(lái)比較兩個(gè)字符串,一般形式為strcmp
38、(字 符串S1,字符串S2)。當(dāng)S1=S2時(shí),返回值為0,否則為非零。在管理員用戶(hù)登錄 模塊處理輸入的賬號(hào)和密碼時(shí)就使用了該功能: if(strcmp(adname,an) / an為用戶(hù)輸入的賬號(hào) cout<<"此用戶(hù)名不存在!n" 這里在設(shè)計(jì)的時(shí)候比較容易出錯(cuò),因?yàn)槿魞蓚€(gè)字符串不相等,則strcmp()返回 的值是非零,在if條件下為真,所以才會(huì)輸出用戶(hù)名不存在,在看程序的時(shí)候很 容易會(huì)看成是兩個(gè)字符串相等后輸出用戶(hù)名不存在。在運(yùn)用string類(lèi)提供的strcmp(s1,s2)的函數(shù)時(shí)還需要參數(shù)s1和s2的類(lèi)型, 若s1和s2的類(lèi)型都char的時(shí)候,則編譯器
39、不會(huì)報(bào)錯(cuò),若s1和s2的類(lèi)型都為 string的時(shí)候編譯器便會(huì)提示類(lèi)型錯(cuò)誤,這時(shí)候應(yīng)修改為 strcmp(s1.c_strc ,s2.c_strc); 這樣才能對(duì)strcmp()函數(shù)的正確使用。 (2)continue和break的使用 在while和for的循環(huán)中,continue和break是非常常見(jiàn)的用來(lái)控制循環(huán)的語(yǔ) 句,continue和break的使用不相同而且還很容易出錯(cuò)。有一種最常見(jiàn)的錯(cuò)誤 便是非法使用,比如在一些非while、for、if 這些循環(huán)或者判斷的語(yǔ)句下使用, 編譯器在編譯的時(shí)候就會(huì)給出“illegal break”或者“illegal continue”這 樣的報(bào)錯(cuò)
40、,這是比較容易修改的錯(cuò)誤的;還有一種是比較難發(fā)現(xiàn)的錯(cuò)誤,就是 在很多循環(huán)嵌套的時(shí)候經(jīng)常會(huì)發(fā)現(xiàn)不知道程序跳到哪一步了。比如在“管理員 登陸”模塊的時(shí)候就出現(xiàn)過(guò)修改密碼后一直停在輸入賬號(hào)和密碼這個(gè)這里,在 loadin()的后面加入break語(yǔ)句后就能解決問(wèn)題了。而這就需要用visual C+ 自帶的調(diào)試器進(jìn)行調(diào)試,去發(fā)現(xiàn)錯(cuò)誤。 調(diào)試的一般思路是在你覺(jué)得最有可能出錯(cuò)的地方,或者你不確定循環(huán)是不是跳 到的地方按F9設(shè)置斷言,然后按F5進(jìn)行局部調(diào)試,等到程序運(yùn)行到斷言的位 置后再一步一步按F10進(jìn)行判斷,就能發(fā)現(xiàn)哪里出錯(cuò)了,這是比較可靠地判斷 出錯(cuò)誤的方法。(3) Car類(lèi)設(shè)計(jì)的作用在停車(chē)場(chǎng)管理系統(tǒng)中,多次調(diào)用了同一輛車(chē)的車(chē)牌號(hào)、停車(chē)費(fèi)用、車(chē)位,因此 為了編程的方便,將車(chē)牌號(hào)、費(fèi)用和車(chē)位這些變量設(shè)為類(lèi)car的公有成員。同時(shí)還申明了car類(lèi)的對(duì)象數(shù)組carin為全局變量,數(shù)組的大小表示停車(chē)位的多少,每個(gè)停車(chē)位用全局變量i來(lái)表示。這樣做的好處是使函數(shù)書(shū)寫(xiě)方
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 縮放排工班組考核水平考核試卷含答案
- 機(jī)械零部件熱處理工發(fā)展趨勢(shì)競(jìng)賽考核試卷含答案
- 汽車(chē)鍛造生產(chǎn)線操作工誠(chéng)信品質(zhì)競(jìng)賽考核試卷含答案
- 海底管道配重工安全知識(shí)宣貫水平考核試卷含答案
- 衛(wèi)生檢驗(yàn)員改進(jìn)能力考核試卷含答案
- 2026云南玉溪市華寧縣衛(wèi)生健康局招聘事業(yè)單位緊缺急需人才9人備考題庫(kù)及參考答案詳解
- 2026云南昆明市官渡殘疾人聯(lián)合會(huì)招聘1人備考題庫(kù)含答案詳解
- 老年消化性潰瘍患者跌倒風(fēng)險(xiǎn)與藥物相互作用評(píng)估方案
- 老年泌尿系感染后尿頻尿急康復(fù)訓(xùn)練方案
- 智慧城市建設(shè)產(chǎn)業(yè)技術(shù)應(yīng)用展望
- 消防廉潔自律課件大綱
- 統(tǒng)編版九年級(jí)上冊(cè)語(yǔ)文期末復(fù)習(xí):全冊(cè)重點(diǎn)考點(diǎn)手冊(cè)
- 2025年11月15日江西省市直遴選筆試真題及解析(B卷)
- (2025)新課標(biāo)義務(wù)教育數(shù)學(xué)(2022年版)課程標(biāo)準(zhǔn)試題庫(kù)(附含答案)
- 金太陽(yáng)陜西省2028屆高一上學(xué)期10月月考物理(26-55A)(含答案)
- 小學(xué)生科普小知識(shí):靜電
- 2025年安全生產(chǎn)知識(shí)教育培訓(xùn)考試試題及標(biāo)準(zhǔn)答案
- 重慶市康德2025屆高三上學(xué)期第一次診斷檢測(cè)-數(shù)學(xué)試卷(含答案)
- 品牌管理指南的建模指南
- 導(dǎo)樂(lè)用具使用課件
- “師生機(jī)”協(xié)同育人模式的實(shí)踐探索與效果評(píng)估
評(píng)論
0/150
提交評(píng)論