《大學(xué) C語言 停車場管理系統(tǒng) 設(shè)計(jì)c語言課程設(shè)計(jì) (含調(diào)試圖)》由會員分享,可在線閱讀,更多相關(guān)《大學(xué) C語言 停車場管理系統(tǒng) 設(shè)計(jì)c語言課程設(shè)計(jì) (含調(diào)試圖)(15頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、 真誠為您提供優(yōu)質(zhì)參考資料,若有不當(dāng)之處,請指正。
Xxxxx大學(xué)
xxxxxxxxxxx系
20xx-20xx學(xué)年第一學(xué)期
《C程序設(shè)計(jì)》課程設(shè)計(jì)
題目名稱: 停車場管理系統(tǒng)設(shè)計(jì)
姓 名 :
學(xué) 號 :
班 級 :
指導(dǎo)教師 :
2、
編寫日期 : 20 年1月5日—20 年1月31日
成績:
1 / 15
目錄
(一)需求分析 3
1-1停車 3
1-2取車 3
1-3功能的選擇 3
(二)總體設(shè)計(jì)(程序設(shè)計(jì)組成框圖) 3
2-1停車模塊 3
2-2取車模塊 3
2-3車輛信息瀏覽模塊 4
2-4程序設(shè)計(jì)組成框圖 4
(三)詳細(xì)設(shè)計(jì) 4
3-1停車場分析 4
3-2停車操作 4
3-3收費(fèi)管理(取車) 5
3-4車輛信息 5
3-5退出系統(tǒng) 5
(四)程序運(yùn)行結(jié)果測試與分析 5
(五)結(jié)論與心得 7
(六)參考文獻(xiàn) 7
(七
3、)致謝 8
附錄: 8
(一)需求分析
1-1停車
車輛信息要用文件存儲,因而要提供文件的輸入輸出操作。
1-2取車
當(dāng)車離開時(shí),要?jiǎng)h除文件中 該車的信息, 因而要提供文件的刪除操作。
1-3功能的選擇
提供現(xiàn)實(shí)操作和用鍵盤式菜單實(shí)現(xiàn)功能選擇。
(二)總體設(shè)計(jì)(程序設(shè)計(jì)組成框圖)
2-1停車模塊
對車輛信息賦值,分配前檢查車位使用情況(按行查找 park 數(shù)組,元素為 0 表示車位 為空,則允許分配) 。把新添加的車輛信息以追加的方式寫入汽車信息文件,并更改汽車信 息文件中其他汽車信息的停車時(shí)間(停車時(shí)間加 5) 。
2-2取車模塊
計(jì)算費(fèi)用(停車費(fèi)用=停車時(shí)
4、間*0.2 元) ,從文件中刪除該車信息。并將該車位對應(yīng)的 二位數(shù)組變量設(shè)為 0,表示該車位可用。輸出提示信息:是否輸出停車費(fèi)用總計(jì)?(Y/N) 如果選擇 Y,則輸出停車費(fèi)用,否則回到上級菜單。
2-3車輛信息瀏覽模塊
輸出車輛信息文件中的記錄。
另外,用戶按 Esc 鍵退出系統(tǒng)。
2-4程序設(shè)計(jì)組成框圖
停車場管理系統(tǒng)
取車
查看全部車輛信息
停車
退出
(三)詳細(xì)設(shè)計(jì)
3-1停車場分析
有一個(gè)兩層的停車場, 每層有6個(gè)車位, 當(dāng)?shù)谝粚榆囃M后才允許使用第二層。 ( 停車場可用一個(gè)二維數(shù)組實(shí)現(xiàn), 每個(gè)數(shù)組元素存放一個(gè)車牌號 )
假設(shè)停車場初始狀態(tài)為第
5、一層已經(jīng)停有4輛車, 其車位號依次為1—4 , 停車時(shí)間依次為20, 15, 10 , 5 . 即先將這四輛車的信息存入文件”car.dat”中。( 數(shù)組的對應(yīng)元素也要進(jìn)行賦值 )
3-2停車操作
當(dāng)一輛車進(jìn)入停車場時(shí), 先輸入其車牌號, 再為它分配一個(gè)層號和一個(gè)車位號(分配前先查詢車位的使用情況, 如果第一層有空則必須停在第一層), 停車時(shí)間設(shè)為5 , 最后將新停入的汽車的信息添加文件
”car.dat”中, 并將在此之前的所有車的停車時(shí)間加5。
3-3收費(fèi)管理(取車)
當(dāng)有車離開時(shí), 輸入其車牌號, 先按其停車時(shí)間計(jì)算費(fèi)用, 每5分鐘0.2元. (停車費(fèi)用可設(shè)置一個(gè)變量進(jìn)行保
6、存), 同時(shí)從文件”car.dat”中刪除該車的信息, 并將該車對應(yīng)的車位設(shè)置為可使用狀態(tài)(即二維數(shù)組對應(yīng)元素清零). 按用戶的選擇來判斷是否要輸出停車收費(fèi)的總計(jì)。
3-4車輛信息
輸出停車場中全部車輛的信息。
3-5退出系統(tǒng)
退出系統(tǒng)。
(四)程序運(yùn)行結(jié)果測試與分析
系統(tǒng)初始運(yùn)行時(shí),會顯示如圖4-1所示的輸入界面,用戶可以根據(jù)提示,進(jìn)行相應(yīng)的選擇,來完成系統(tǒng)提供的各種功能。根據(jù)系統(tǒng)提示提示用戶選擇相應(yīng)的數(shù)字鍵,按ENTER鍵后進(jìn)入相應(yīng)的功能菜單。如下圖4-2是輸入1,顯示停車以及所需用戶的車牌號輸入后按ENTER鍵進(jìn)入所要放車的停車位菜單,其中包含了系統(tǒng)分配的層號和一個(gè)車位號
7、即圖4-3
下面即為此程序執(zhí)行此功能時(shí)的截圖:
圖4-1輸入界面
圖4-2輸入1和車牌號界面
圖4-3詳細(xì)信息界面
(五)結(jié)論與心得
通過這次實(shí)習(xí),讓我初步有了編寫小系統(tǒng)的能力,我對很多的函數(shù)有了新的認(rèn)識,也學(xué)會了運(yùn)用多種函數(shù),也明白了編寫軟件的基本過程和基本方法。編寫軟件的過程中我又學(xué)到了曾經(jīng)自己不知道的函數(shù)或是自己不會的函數(shù)的用法。這次課程設(shè)計(jì)課總的來說讓我受益匪淺。
在軟件的設(shè)計(jì)過程中遇到了很多的困難。在軟件一次一次的調(diào)試失敗下,曾經(jīng)想過要放棄。我最后還是堅(jiān)持了下來,毫不畏懼困難,在一起討論論證到底是用什么函數(shù)
8、,什么樣的循環(huán)來最簡單的實(shí)現(xiàn)程序的功能,經(jīng)過幾個(gè)日夜的努力我總算是順利的完成了軟件的設(shè)計(jì)。
在程序的編寫過程中我發(fā)現(xiàn)有很多的知識漏洞和缺陷,需要進(jìn)一步努力學(xué)習(xí)來鞏固完善自己的知識面。在這幾天的編寫過程中我對c語言有了更進(jìn)一步的認(rèn)識和了解。此次編程過程的經(jīng)驗(yàn)和知識肯定能促進(jìn)我以后的學(xué)習(xí),更是對我今后參加電子設(shè)計(jì)類軟件編程大賽有較大的幫助
(六)參考文獻(xiàn)
[1]譚浩強(qiáng),《C程序設(shè)計(jì)(第四版)》,北京:清華大學(xué)出版社,2010.6
[2]
(七)致謝
能夠完成這次課程設(shè)計(jì)要感謝c語言課程的老師,感謝老師的悉心教導(dǎo),幫助改錯(cuò),還要感謝各位同學(xué)的幫助,我會繼續(xù)努力的。
9、
附錄:
程序源代碼:
#include
#include
#include
struct Garage
{
char carnum[8]; /*車牌號*/
int lay; //層號
int garagenum; /*車位號*/
int time; /*停車時(shí)間*/
int isempty; /*該車位是否為空,1表示空,0表示有車*/
};/*打印使用說明*/
void Instruction()
{ printf(" 停車場管理系統(tǒng)使用說明\n");
printf(" 停車請輸入 1
10、取車請輸入 2 \n");
printf(" 查看全部車輛的信息請輸入 3 退出請輸入 0 \n");
}/*初始化停車場信息,初始狀態(tài)為第一層已經(jīng)停有4輛車, * 其車位號依次為1-4 , 停車時(shí)間依次為20, 15, 10 , 5 */
void Init(struct Garage gar[][6])
{
int i, j; /*給所有的車位的層號,車位號初始化,停車時(shí)間初始化為0,停車位全都初始化為空*/
for (i=0; i<2; i++)
{ for (j=0; j<6; j++)
{ gar[i][j].lay = i+1;
gar[i][j
11、].garagenum = j+1;
gar[i][j].time = 0;
gar[i][j].isempty = 1;
}
}
/*第一層的1-4號車位停車*/
for (i=0; i<4; i++)
{ gar[0][i].isempty =0; }
strcpy(gar[0][0].carnum, "0000"); /*初始化的車牌號*/
gar[0][0].time = 20;
strcpy(gar[0][1].carnum,
"1111"); gar[0][1].time = 15;
strcpy(gar[0][2].carnum, "
12、2222");
gar[0][2].time = 10;
strcpy(gar[0][3].carnum, "3333");
gar[0][3].time = 5;}
/*新停入的汽車后,將在此之前的所有車的停車時(shí)間加5*/
void AddTime(struct Garage gar[][6])
{ int i, j; for (i=0; i<2; i++)
{ for (j=0; j<6; j++)
{ if (gar[i][j].isempty == 0)
{ gar[i][j].time += 5;
}
}
}
}
/*停車*/
vo
13、id Park(struct Garage gar[][6])
{ int i; char num[8];
printf("請輸入車牌號:");
scanf("%s", num);
for (i=0; i<6; i++)
{ if (gar[0][i].isempty == 1)
{ printf("第一層第%d號車位空著,請?jiān)诖颂幫\嘰n", i+1);
strcpy(gar[0][i].carnum, num);
printf("車牌號:%s 層號:1 車位號: %d \n", num, i+1);
AddTime(gar); /*在此之前停車的所有汽車時(shí)間加5
14、*/
gar[0][i].isempty = 0; /*表示該車為已經(jīng)停車*/
gar[0][i].time = 5; /*將時(shí)間設(shè)為5*/
return;
}
}
printf("第一層已經(jīng)沒有空車位\n");
for (i=0; i<6; i++)
{
if (gar[1][i].isempty == 1)
{ printf("第二層第%d號車位空著,請?jiān)诖颂幫\嘰n", i+1);
strcpy(gar[1][i].carnum, num);
printf("車牌號:%s 層號:2 車位號: %d \n", num ,i+1);
AddTi
15、me(gar); /*在此之前停車的所有汽車時(shí)間加5*/
gar[1][i].isempty = 0; /*表示該車位已經(jīng)停車*/
gar[1][i].time = 5; /*將時(shí)間設(shè)為5*/
return;
}
}
printf("對不起,1 2層都沒有空車位,您現(xiàn)在不能在此停車\n");
}
/*查看所有車輛信息*/
void Information(struct Garage gar[][6])
{ int i, j;
printf(" 車牌號 層號 車位號 停車時(shí)間\n");
for (i=0; i<2; i++) { for(j=0; j<6
16、; j++)
{ if (gar[i][j].isempty == 0)
printf(" %s%8d%8d%8d\n", gar[i][j].carnum, gar[i][j].lay, gar[i][j].garagenum, gar[i][j].time);
}
}
printf("\n");
}
/*取車*/
double Leave(struct Garage gar[2][6])
{
int i, j; char num[8];
double charge = 0;
printf("請輸入要取的車牌號:");
scanf("%s", nu
17、m);
for (i=0; i<2; i++)
{ for (j=0; j<6; j++)
{ if (!strcmp(gar[i][j].carnum, num))
{ printf("您在%d層%d車位停車%d分鐘\n", gar[i][j].lay, gar[i][j].garagenum, gar[i][j].time);
charge = gar[i][j].time/5*0.2;
printf("停車費(fèi)用為每5分鐘0.2元,您需交%.2lf元\n", charge);
gar[i][j].isempty = 1;
return charge;
}
18、
}
}
printf("沒有您輸入的車號。\n\n");
return charge;
}
/*是否查看總收入*/
void IsPrintTotal(double total)
{
char ch;
printf("是否查看停車收費(fèi)總計(jì)?Y/N");
scanf("%c", &ch);
while (ch!=y && ch!=Y && ch!=n && ch!=N)
{ printf("請輸入Y或N ");
scanf("%c", &ch);
printf("\n");
}
switch (ch)
{
case Y:
19、case y:
printf("停車收費(fèi)總計(jì)為%.2lf元\n", total);
break;
case N:
case n:
break;
}
}
main()
{ int choice;
double total = 0;
struct Garage gar[2][6];
Init(gar); //初始化第一層已經(jīng)停有的4輛車
while (1) { Instruction();
printf("請輸入要進(jìn)行的操作:");
scanf("%d", &choice);
while (choice<0 || choice>3)
{
printf("輸入的不合法,請輸入0-3選擇:");
scanf("%d", &choice);
}
switch (choice)
{
case 1:
Park(gar);
break;
case 2:
total += Leave(gar);
IsPrintTotal(total);
break;
case 3:
Information(gar);
break;
case 0:
exit(0);
}
}
return 0;
}
溫馨提示:最好仔細(xì)閱讀后才下載使用,萬分感謝!