-
大小: 11KB文件類型: .c金幣: 1下載: 0 次發(fā)布日期: 2021-05-13
- 語言: 其他
- 標(biāo)簽:
資源簡介
課題二: 停車場管理系統(tǒng) ■問題描述: 設(shè)計一個停車場管理系統(tǒng),模擬停車場的運(yùn)作,此程序具備以下功能: (1)若車輛到達(dá),則顯示汽車在停車場內(nèi)或者便道上的停車位置; (2)若車輛離去,則顯示汽車在停車場內(nèi)停留的時間和應(yīng)繳納的費(fèi)用(在便 道上停留的時間不收費(fèi))
代碼片段和文件信息
//在此程序中,top1始終指向停車場內(nèi)的最后一輛汽車的結(jié)構(gòu)上面?
//top1的next指針指向它的前面汽車的結(jié)構(gòu)?
#include?
#include?
#include?
#include?
#define?max?3
#define?price?1
int?b=1;
typedef?struct?
{
int?day;??????
int?hour;?????
int?min;
}TIME; //時間結(jié)點(diǎn)
typedef?struct
{
char?num[10];???//車牌號
TIME?time;????//進(jìn)入停車場的時間?
int?n;??????//進(jìn)入停車場的位置
}information;
//棧結(jié)構(gòu)體定義
typedef?struct?node
{
information?data;
struct?node?*next;
}stacknode; stacknode?*top1*top2;
//隊(duì)列結(jié)構(gòu)體定義
typedef?struct?
{
information?data;
stacknode?*front*rear;
}LQueue;LQueue?*Q;
//函數(shù)聲明部分/////////////////////////////////////////////////////////
stacknode?*Init(); ???//棧的初始化
stacknode?*into(stacknode?*top1LQueue?*Q);?????????????//初始化車輛進(jìn)入????????????
int?expenses(stacknode?*pint?xint?yint?z);???????????????//停車費(fèi)用計算函數(shù)
stacknode?*leave(stacknode?*top1char?str[]LQueue?*Q);???????//車輛駛出出場函數(shù)
LQueue?*InitLQue();?????????????????????????//初始化隊(duì)列函數(shù)???
LQueue?*wait(LQueue?*qstacknode?*s);????????????????//車輛進(jìn)入候車便道函數(shù)???
int?EmptyLQue(LQueue?*q);??????????????????????//判斷候車便道有無等待車輛函數(shù)
stacknode?*out(LQueue?*q);??????????????????????//候車區(qū)車輛出隊(duì)?????????????????????
stacknode?*LQinto(stacknode?*pstacknode?*top1);???????????//從候車便道進(jìn)入停車場函數(shù)??????????
void?show(stacknode?*top1);?????????????????????//顯示停車場所有信息函數(shù)
void?T_shou(LQueue?*Q); ???//顯示候車區(qū)信息
/*函數(shù)部分*/
//主函數(shù)
int?main()
{
char?str[10];
Q=InitLQue();
top1=Init();//此時的top1和top2都為空指針?
top2=Init();
Q=InitLQue();
int?i;
printf(“\t\t\t*************************************\n“);
printf(“\t\t\t\t??停車場管理系統(tǒng)\n“);
printf(“\t\t\t||???1.?車輛進(jìn)入停車場???????||\n“);
printf(“\t\t\t||???2.?車輛離開停車場???????||\n“);
printf(“\t\t\t||???3.?顯示停車場內(nèi)所有車輛信息??||\n“);
printf(“\t\t\t||???4.?顯示候車區(qū)內(nèi)所有車輛信息??||\n“);
printf(“\t\t\t||???5.?退出????????????||\n“);
printf(“\t\t\t*************************************\n“);
while(i!=5)
{
printf(“\t請輸入選項(xiàng)1-5:“);
scanf(“%d“&i);
switch(i)
{
case?1:
top1=into(top1Q);
break;
case?2:
printf(“請輸入離開車輛的車牌號:“);
scanf(“%s“str);
top1=leave(top1strQ);
break;
case?3:show(top1);break;
case?4:T_shou(Q);break;
case?5:exit(1);
default:printf(“輸入錯誤,請重新輸入1-5:“);
break;
}
}
}
????????????/*子函數(shù)*/
//初始化
stacknode?*Init()//分配內(nèi)存空間,創(chuàng)建了一個stacknode結(jié)構(gòu)?
{
stacknode?*top;
top=(stacknode?*)malloc(sizeof(stacknode));//創(chuàng)建一個stacknode結(jié)構(gòu)
top=NULL;
return?top;//返回空指針?
}
//初始化車輛進(jìn)入
stacknode?*into(stacknode?*top1LQueue?*Q)
{
stacknode?*p*q;
time_t?rawtime;????//定義時間變量值rawtime?
struct?tm?*timeinfo;??//定義tm結(jié)構(gòu)指針?,tm結(jié)構(gòu)定義在中?
time(&rawtime);//取當(dāng)前工作時間值,并把它賦值給rawtime?
timeinfo=localtime(&rawtime);//localtime()將參數(shù)rawtime?所指的time_t?結(jié)構(gòu)中的信息轉(zhuǎn)換成真實(shí)世界所使用的時間日期表示方法然后將結(jié)果由結(jié)構(gòu)timeinfo返回
p=(stacknode?*)malloc(sizeof(stacknode));//創(chuàng)建一個節(jié)點(diǎn)用于存儲進(jìn)入車輛的信息?
if(p==NULL)//如果malloc分配內(nèi)存失敗,這返回null指針,判斷內(nèi)存分配是否失敗?
{
printf(“內(nèi)存分配失敗“);
return?top1;//當(dāng)停車場之內(nèi)沒有車輛的時候,top1返回的值為null,當(dāng)有車輛時,因?yàn)槌霈F(xiàn)錯誤所以駛?cè)氲能囕v的信息
評論
共有 條評論