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