當前位置:首頁 » 編程語言 » c語言車位標准
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言車位標准

發布時間: 2022-09-10 21:42:08

① 用c語言編寫「停車場管理系統」

程序太大 不讓發 我是分幾次發過去的 打三個出現亂碼了 我在重新發一次

/*初始化停車場信息,初始狀態為第一層已經停有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].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, "GF8888"); /*我自己初始化的車牌號,你可以自己改一下*/
gar[0][0].time = 20;
strcpy(gar[0][1].carnum, "GF6666");
gar[0][1].time = 15;
strcpy(gar[0][2].carnum, "GF9999");
gar[0][2].time = 10;
strcpy(gar[0][3].carnum, "GF5858");
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;
}
}
}
}

/*停車*/
void 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*/
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);
AddTime(gar); /*在此之前停車的所有汽車時間加5*/
gar[1][i].isempty = 0; /*表示該車為已經停車*/
gar[1][i].time = 5; /*將時間設為5*/

return;
}
}

printf("對不起,1 2層都沒有空車位,您現在不能在此停車\n");
}

/*查看所有車輛信息*/
void Information(struct Garage gar[][6])
{
int i, j;

printf(" 車牌號 層號 車位號 停車時間\n");

for (i=0; i<2; i++)
{
for(j=0; j<6; 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", num);

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;
}
}
}

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':
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;
}

② 用C語言編一個停車場管理系統

/*初始化停車場信息,初始狀態為第一層已經停有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].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, "GF8888"); /*我自己初始化的車牌號,你可以自己改一下*/
gar[0][0].time = 20;
strcpy(gar[0][1].carnum, "GF6666");
gar[0][1].time = 15;
strcpy(gar[0][2].carnum, "GF9999");
gar[0][2].time = 10;
strcpy(gar[0][3].carnum, "GF5858");
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;
}
}
}
}

/*停車*/
void 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*/
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);
AddTime(gar); /*在此之前停車的所有汽車時間加5*/
gar[1][i].isempty = 0; /*表示該車為已經停車*/
gar[1][i].time = 5; /*將時間設為5*/

return;
}
}

printf("對不起,1 2層都沒有空車位,您現在不能在此停車\n");
}

/*查看所有車輛信息*/
void Information(struct Garage gar[][6])
{
int i, j;

printf(" 車牌號 層號 車位號 停車時間\n");

for (i=0; i<2; i++)
{
for(j=0; j<6; 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", num);

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;
}
}
}

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':
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;
}

③ 7、某停車場有20個車位(1-20號),設計一個停車場管理系統,實現停車管理系統。 c語言程序設計 。

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
typedef struct{
int num;
char id[50];
time_t in;
time_t out;
float mon;
}P;
P p[21];
void in();
void out();
void look();
void init();
int vacant();

int main()
{
int i,flag=0;
init();
while(1)
{ printf(" \n");
printf(" 1: 進入 \n");
printf(" 2 離開 \n");
printf(" 3: 查看車位情況 \n");
printf(" 4: 退出 \n");
printf(" \n");
puts("請輸入選項:");
scanf("%d",&i);
switch(i)
{
case 1: in();break;
case 2: out();break;
case 3: look();fflush(stdin);
puts("按任意鍵繼續。。。。。。。");
getchar();break;
case 4: flag=1;break;
}
if(flag==1) break;
system("CLS");
}
return 0;
}

void init()
{ int i=0;
while(i<21){ p[i].num=i;p[i].id[0]='\0';p[i].in=0;p[i].out=0;p[i].mon=0.;i++;}
}
int vacant()
{
int i=1,num=0;
while(i<21){ if(p[i].id[0]=='\0') num++;i++;}
return num;
}
void in()
{ int i=0,a[21];
while(i<21){ a[i]=0; i++;}
i=1;
if(vacant()!=0){ puts("有車位 空車位為:");
while(i<21){ if(p[i].id[0]=='\0') {a[i]=i; printf("%-4d",i);}i++;}
puts("");
puts("請輸入所要停入車位號:");
while(1){
scanf("%d",&i);
int j=0,flag=0;
while(j<21) { if(a[j]==0){ j++;continue;} if(a[j]==i){ flag=1;break;}j++;}
if(flag==0) puts("輸入錯誤,請再次輸入所要停入車位號:");
else break;
}

puts("請輸入所要停入的車牌號:");
scanf("%s",p[i].id);
time(&(p[i].in));
}
else puts("車位已滿!");
fflush(stdin);
puts("按任意鍵繼續。。。。。。。");
getchar();
}
void out()
{
int i,j=0,a[21],flag=0;
while(j<21){ a[j]=0; j++;}
j=0;
look();
while(j<21){ if(p[j].id[0]!='\0') a[j]=j;j++; }
puts("請輸入離開車的車位號:");
while(1)
{
j=0;
scanf("%d",&i);
while(j<21) { if(a[j]==0){ j++;continue;} if(a[j]==i){ flag=1;break;}j++;}

if(flag==1) break;
else puts("輸入錯誤,請再次請輸入離開車的車位號:");
}
time(&(p[i].out));
struct tm *tm1,*tm2;
tm1=gmtime(&(p[i].in));
tm2=gmtime(&(p[i].out));
int num1,num2;
if(tm1->tm_hour+8>23) num1=tm1->tm_hour+8-24;
else num1=tm1->tm_hour+8;
if(tm2->tm_hour+8>23) num2=tm2->tm_hour+8-24;
else num2=tm2->tm_hour+8;
printf("該車位號為: %d 車牌號為:%s \n%d:%d 停入 %d:%d 離開 \n應付金額為 %0.2f元\n",i,p[i].id,num1,tm1->tm_min,num2,tm2->tm_min,(p[i].out-p[i].in)/3600.0*10);
p[i].id[0]='\0';
fflush(stdin);
puts("按任意鍵繼續。。。。。。。");
getchar();
}
void look()
{ int i=1,k=0;
struct tm *tm1;

if(vacant()!=0)
{ puts("空車位為:");
while(i<21){ if(p[i].id[0]=='\0'){ printf("%-4d",i);k++;}i++; }
i=1;
puts("");
puts("已佔車位為:");
if(k==20) puts(" 沒有停車輛!");
while(i<21)
{ if(p[i].id[0]!='\0')
{ tm1=gmtime(&(p[i].in));int num1;
if(tm1->tm_hour+8>23) num1=tm1->tm_hour+8-24;else num1=tm1->tm_hour+8;
printf("車位號:%-4d 車牌號:%s 進入時間:%d:%d\n",i,p[i].id,num1,tm1->tm_min);
}
i++;

}

}
else puts("車位已滿!");

}

④ 39、停車場管理C語言編程

程序太大 不讓發 我是分幾次發過去的 打三個出現亂碼了 我在重新發一次

/*初始化停車場信息,初始狀態為第一層已經停有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].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, "GF8888"); /*我自己初始化的車牌號,你可以自己改一下*/
gar[0][0].time = 20;
strcpy(gar[0][1].carnum, "GF6666");
gar[0][1].time = 15;
strcpy(gar[0][2].carnum, "GF9999");
gar[0][2].time = 10;
strcpy(gar[0][3].carnum, "GF5858");
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;
}
}
}
}

/*停車*/
void 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*/
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);
AddTime(gar); /*在此之前停車的所有汽車時間加5*/
gar[1][i].isempty = 0; /*表示該車為已經停車*/
gar[1][i].time = 5; /*將時間設為5*/

return;
}
}

printf("對不起,1 2層都沒有空車位,您現在不能在此停車\n");
}

/*查看所有車輛信息*/
void Information(struct Garage gar[][6])
{
int i, j;

printf(" 車牌號 層號 車位號 停車時間\n");

for (i=0; i<2; i++)
{
for(j=0; j<6; 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", num);

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;
}
}
}

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':
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;
}

⑤ 哪位高手能幫我用C語言(不是C++哦)和數據結構做個停車場管理系統包括實驗報告!拜託啦!!!!!!

把擴展名改成CPP,然後編譯連接
///////////////////////////////
下面這個程序是我大二上數據結構課時交的作業,現在正好電腦裡面放著,所以就給你,應該滿足你老師的要求了.編譯環境是 VC++ 6.0
如果不會用的話就在問題補充里說,那個"例"是我臨時給你打上去的,隨便寫了點,你要看不懂例子不會輸命令就問我.
/*****************************************************************/

#include <conio.h>
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

// 清空當前屏幕
#define ClearScreen() system( "cls" )

// 顯示字元串 szPrompt 並等待用戶按下任意鍵
#define Pause( szPrompt ) printf( "%s", szPrompt ),getch()

typedef struct carinformation // 車輛信息
{
char szRegistrationMark[64]; // 車牌號
char szArrivalTime[16]; // 到達時間
char szEntranceTime[16]; // 進入停車場(開始計費)時間
char szDepartureTime[16]; // 離開時間
} TCARINFORMATION, *LPTCARINFORMATION;

typedef struct carstack
{
LPTCARINFORMATION lpCarInformation; // 車輛信息
int nTop; // 棧頂元素下標
int nStackSize; // 棧容量
} TCARSTACK, *LPTCARSTACK;

// 初始化棧 lpCarStack, 將其容量設置為 nSize
void InitStack( LPTCARSTACK &lpCarStack, int nSize )
{
lpCarStack = ( LPTCARSTACK ) malloc( sizeof ( TCARSTACK ) );
lpCarStack->lpCarInformation = ( LPTCARINFORMATION ) malloc(
nSize * sizeof ( TCARINFORMATION )
);
lpCarStack->nTop = -1;
lpCarStack->nStackSize = nSize;
}

// 車輛信息 carinfo 入棧 lpCarStack
void Push( LPTCARSTACK &lpCarStack, TCARINFORMATION carinfo )
{
lpCarStack->nTop++;
lpCarStack->lpCarInformation[lpCarStack->nTop] = carinfo;
}

// 車輛信息從棧 lpCarStack 中彈出並存入 carinfo
void Pop( LPTCARSTACK &lpCarStack, TCARINFORMATION &carinfo )
{
carinfo = lpCarStack->lpCarInformation[lpCarStack->nTop];
lpCarStack->nTop--;
}

// 若棧 lpCarstack 空,返回 TRUE;否則,返回 FALSE
BOOL IsStackEmpty( LPTCARSTACK lpCarStack )
{
return lpCarStack->nTop == -1;
}

// 若棧 lpStackFull 滿,返回 TRUE;否則,返回 FALSE
BOOL IsStackFull( LPTCARSTACK lpCarStack )
{
return lpCarStack->nTop == ( lpCarStack->nStackSize - 1 );
}

// 銷毀棧 lpCarStack,將指針 lpCarStack 置為 NULL
void DestroyStack( LPTCARSTACK &lpCarStack )
{
free( lpCarStack->lpCarInformation );
free( lpCarStack );
lpCarStack = NULL;
}

typedef struct carnode // 鏈隊結點信息
{
TCARINFORMATION carinfo; // 車輛信息
struct carnode *lpNext; // 指向下一個元素的指針
} TCARNODE, *LPTCARNODE;

typedef struct carqueue // 鏈隊
{
LPTCARNODE lpHead; // 頭結點
LPTCARNODE lpRear; // 指向當前隊尾的指針
int nEffectiveSize; // 當前隊中元素個數
} TCARQUEUE, *LPTCARQUEUE;

// 初始化鏈隊 lpCarQueue
void InitQueue( LPTCARQUEUE &lpCarQueue )
{
lpCarQueue = ( LPTCARQUEUE ) malloc( sizeof( TCARQUEUE ) );
lpCarQueue->lpHead = ( LPTCARNODE) malloc( sizeof( TCARNODE ) );
lpCarQueue->lpHead->lpNext = NULL;
lpCarQueue->lpRear = lpCarQueue->lpHead;
lpCarQueue->nEffectiveSize = 0;
}

// 車輛信息 carinfo 入隊 lpCarQueue
void EnQueue( LPTCARQUEUE &lpCarQueue, TCARINFORMATION carinfo )
{
LPTCARNODE lpCarNode = ( LPTCARNODE ) malloc( sizeof( carnode ) );
lpCarNode->carinfo = carinfo;
lpCarNode->lpNext = NULL;
lpCarQueue->lpRear->lpNext = lpCarNode;
lpCarQueue->lpRear = lpCarQueue->lpRear->lpNext;
lpCarQueue->nEffectiveSize++;
}

// 隊頭元素從鏈隊 lpCarQueue 中出隊並存入 carinfo
void DeQueue( LPTCARQUEUE &lpCarQueue, TCARINFORMATION &carinfo )
{
LPTCARNODE lpTemp = lpCarQueue->lpHead->lpNext;
carinfo = lpTemp->carinfo;
lpCarQueue->lpHead->lpNext = lpTemp->lpNext;
free( lpTemp );
lpCarQueue->nEffectiveSize--;
}

// 若鏈隊 lpCarQueue 為空,返回 TRUE;否則,返回 FALSE
BOOL IsQueueEmpty( LPTCARQUEUE lpCarQueue )
{
return lpCarQueue->nEffectiveSize == 0;
}

// 銷毀鏈隊 lpCarQueue
void DestroyQueue( LPTCARQUEUE &lpCarQueue )
{
LPTCARNODE lpNextCarNode = NULL;
for ( LPTCARNODE lpCarNode = lpCarQueue->lpHead; lpCarNode != NULL; lpCarNode = lpNextCarNode )
{
lpNextCarNode = lpCarNode->lpNext;
free( lpCarNode );
}
free( lpCarQueue );
lpCarQueue = NULL;
}

// 將字元串時間格式轉換為數字(分鍾)格式,例如 12:36 將被轉換為 756 ( 12 * 60 + 36 )
int ConvertTimeFormat( char *lpTime )
{
int nHour = 0;
int nMinute = 0;

sscanf( lpTime, "%d:%d", &nHour, &nMinute );

return nHour * 60 + nMinute;
}

// 根據在停車場內的停留時間 nContinuanceMinutes (分鍾)計算費用
double CalculateExpense( int nContinuanceMinutes )
{
return nContinuanceMinutes * ( 5.0 / 60 );
}

int main( void )
{
int nParkCapability = 0; // 停車場容量

putchar( '\n' );
printf( "請輸入停車場容量:" );
scanf( "%d", &nParkCapability );

LPTCARSTACK lpCarStack = NULL; // 停車場,用棧模擬
InitStack( lpCarStack, nParkCapability );

LPTCARQUEUE lpCarQueue = NULL; // 便道,用鏈隊模擬
InitQueue( lpCarQueue );

char cCommandType = NULL; // 命令類型
char szUserInput[128] = { NULL }; // 用戶輸入
do
{
ClearScreen();
putchar( '\n' );
puts( "--------------------" );
puts( "[命令類型]" );
puts( "A - 車輛到達" );
puts( "D - 車輛離開" );
puts( "E - 停止輸入" );
puts( "O - 顯示當前停車場和便道使用情況" );
putchar( '\n' );
puts( "例:" );
puts( "A,冀A1234,14:26" );
puts( "D,冀A1234,16:51" );
puts( "E" );
puts( "O" );
putchar( '\n' );
printf( "請輸入命令:" );
scanf( "%s", szUserInput );
puts( "--------------------" );

char szCarInformation[128] = { NULL };
sscanf( szUserInput, // 將命令類型與車輛信息分開存放
"%c,%s",
&cCommandType, // 用戶輸入的前半部分,即命令類型
szCarInformation // 用戶輸入的後半部分,即車輛信息
);

char *lpCommaLocation = NULL; // 車輛信息字元串中的逗號位置

for ( lpCommaLocation = szCarInformation; *lpCommaLocation != '\0'; lpCommaLocation++ )
{
if ( *lpCommaLocation == ',' )
{
break;
}
}
*lpCommaLocation = '\0';

TCARINFORMATION carinfo = { NULL }; // 存儲本次用戶輸入的車輛信息

strcpy( carinfo.szRegistrationMark, szCarInformation );

if ( cCommandType == 'A' )
{
strcpy( carinfo.szArrivalTime, lpCommaLocation + 1 );

if ( FALSE == IsStackFull( lpCarStack ) )
{
strcpy( carinfo.szEntranceTime, carinfo.szArrivalTime );
Push( lpCarStack, carinfo );
printf( "已進入停車場第 %d 個車位\n",
lpCarStack->nTop + 1
);
printf( "車牌號:\t\t%s\n", carinfo.szRegistrationMark );
printf( "進入時間:\t%s\n", carinfo.szEntranceTime );
puts( "是否收費:\t是" );
}
else
{
EnQueue( lpCarQueue, carinfo );
printf( "停車場已滿,已停放在便道的第 %d 個車位\n",
lpCarQueue->nEffectiveSize
);
printf( "車牌號:\t\t%s\n", carinfo.szRegistrationMark );
printf( "停放時間:\t%s\n", carinfo.szArrivalTime );
puts( "是否收費:\t否" );
}
}
else if ( cCommandType == 'D' )
{
strcpy( carinfo.szDepartureTime, lpCommaLocation + 1 );

LPTCARSTACK lpTempCarStack = NULL;
InitStack( lpTempCarStack, nParkCapability );

TCARINFORMATION carinfoOut = { NULL };

BOOL bIsCarFound = FALSE;
while ( FALSE == IsStackEmpty( lpCarStack ) )
{
Pop( lpCarStack, carinfoOut );
if ( 0 != strcmp( carinfoOut.szRegistrationMark, carinfo.szRegistrationMark ) )
{
Push( lpTempCarStack, carinfoOut );
}
else
{
bIsCarFound = TRUE;
break;
}
}

while ( FALSE == IsStackEmpty( lpTempCarStack ) )
{
TCARINFORMATION tempcarinfo = { NULL };
Pop( lpTempCarStack, tempcarinfo );
Push( lpCarStack, tempcarinfo );
}

if ( FALSE == bIsCarFound )
{
printf( "車牌號為 %s 的車未進入停車場.\n", carinfo.szRegistrationMark );
Pause( "--------------------\n按任意鍵輸入下一條信息...\n" );
continue;
}

strcpy( carinfoOut.szDepartureTime, carinfo.szDepartureTime );
int nEntranceTime = ConvertTimeFormat( carinfoOut.szEntranceTime );
int nDepartureTime = ConvertTimeFormat( carinfoOut.szDepartureTime );
int nContinuanceMinutes = nDepartureTime - nEntranceTime;
printf( "計費時段:\t%s - %s (共 %d 分鍾)\n",
carinfoOut.szEntranceTime,
carinfoOut.szDepartureTime,
nContinuanceMinutes
);
double rExpense = CalculateExpense( nContinuanceMinutes );
printf( "應交納的費用:\t%.1lf 元\n", rExpense );

if ( FALSE == IsQueueEmpty( lpCarQueue ) )
{
TCARINFORMATION tempcarinfo = { NULL };
DeQueue( lpCarQueue, tempcarinfo );
strcpy( tempcarinfo.szEntranceTime, carinfoOut.szDepartureTime );
Push( lpCarStack, tempcarinfo );
puts( "--------------------" );
printf( "停放在便道的第 1 個車位,車牌號為 %s 的車已進入停車場\n",
tempcarinfo.szRegistrationMark
);
}
}
else if ( cCommandType == 'E' )
{
puts( "********************" );
puts( "陳賽 - Build20090507\n" );
puts( "********************" );
break;
}
else if ( cCommandType == 'O' )
{
ClearScreen();
putchar( '\n' );
puts( "[停車場使用情況]\n" );
puts( "[車位]\t[車牌號]\t[到達時間]\t[進入(開始計費)時間]\n");
for ( int i = 0; i <= lpCarStack->nTop; i++ )
{
printf( "%d\t%s\t\t%s\t\t%s\n",
i + 1,
lpCarStack->lpCarInformation[i].szRegistrationMark,
lpCarStack->lpCarInformation[i].szArrivalTime,
lpCarStack->lpCarInformation[i].szEntranceTime
);
}
putchar( '\n' );
putchar( '\n' );
putchar( '\n' );
puts( "[便道使用情況]\n" );
puts( "[車位]\t[車牌號]\t[到達時間]\t[進入(開始計費)時間]\n");
int nNum = 0;
for ( LPTCARNODE lpCarNode = lpCarQueue->lpHead->lpNext;
lpCarNode != NULL; lpCarNode = lpCarNode->lpNext )
{
nNum++;
printf( "%d\t%s\t\t%s\t\t%s\n",
nNum,
lpCarNode->carinfo.szRegistrationMark,
lpCarNode->carinfo.szArrivalTime,
lpCarNode->carinfo.szEntranceTime
);
}
putchar( '\n' );
}
else
{
puts( "輸入信息有誤.第一個字元只能為 'A' 或 'D' 或 'E' 或 'O' (區分大小寫)." );
}
Pause( "--------------------\n按任意鍵輸入下一條信息.\n" );
} while ( TRUE );

DestroyStack( lpCarStack );
DestroyQueue( lpCarQueue );

Pause( "\n按任意鍵退出程序...\n" );

return 0;
}

⑥ C語言棧和隊列問題:停車場停車問題

#ifndef__PLOT_H__#define__PLOT_H__#defineFALSE0#defineTRUE1#defineMONEY1//單價可以自己定義#defineMAX_STOP10#defineMAX_PAVE100//存放汽車牌號typedefstruct{

inttime1;//進入停車場時間
inttime2;//離開停車場時間
charplate[10];
//汽車牌照號碼,定義一個字元指針類型}Car;//停放棧typedefstruct{
CarStop[MAX_STOP-1];//各汽車信息的存儲空間
inttop;//用來指示棧頂位置的靜態指針}Stopping;//等候隊列typedefstruct{intcount;//用來指示隊中的數據個數
CarPave[MAX_PAVE-1];//各汽車信息的存儲空間
intfront,rear;//用來指示隊頭和隊尾位置的靜態指針}Pavement;//讓路棧typedefstruct{
CarHelp[MAX_STOP-1];//各汽車信息的存儲空間
inttop;//用來指示棧頂位置的靜態指針}Buffer;

Stoppings;
Pavementp;
Bufferb;
Carc;charC[10];voidstop_pave();//車停入便道voidcar_come();//車停入停車位voidstop_to_buff();//車進入讓路棧voidcar_leave();//車離開voidwelcome();//主界面函數voidDisplay();//顯示車輛信息#
源文件PLot.c
#include"PLot.h"#include<stdio.h>#include<time.h>//包含時間函數的頭文件#include<string.h>#include<stdlib.h>voidstop_to_pave()//車停入便道{//判斷隊滿
if(p.count>0&&(p.front==(p.rear+1)%MAX_PAVE))
{printf("便道已滿,請下次再來 ");
}else
{strcpy(p.Pave[p.rear].plate,C);
p.rear=(p.rear+1)%MAX_PAVE;//隊尾指示器加1
p.count++;//計數器加1
printf("牌照為%s的汽車停入便道上的%d的位置 ",C,p.rear);
}
}voidcar_come()//車停入停車位{printf("請輸入即將停車的車牌號:");//輸入車牌號
scanf("%s",&C);if(s.top>=MAX_STOP-1)//如果停車位已滿,停入便道
{
stop_to_pave();//停車位->便道函數
}else
{
s.top++;//停車位棧頂指針加1
time_tt1;longintt=time(&t1);//標記進入停車場的時間
char*t2;
t2=ctime(&t1);//獲取當前時間
c.time1=t;strcpy(s.Stop[s.top].plate,C);//將車牌號登記
printf("牌照為%s的汽車停入停車位的%d車位,當前時間:%s ",C,s.top+1,t2);
}return;
}voidstop_to_buff()//車進入讓路棧{//停車位棧壓入臨時棧,為需要出棧的車輛讓出道
while(s.top>=0)
{
if(0==strcmp(s.Stop[s.top--].plate,C))
{break;
}//讓出的車進入讓路棧
strcpy(b.Help[b.top++].plate,s.Stop[s.top+1].plate);printf("牌照為%s的汽車暫時退出停車位 ",s.Stop[s.top+1].plate);
}
b.top--;//如果停車位中的車都讓了道,說明停車位中無車輛需要出行
if(s.top<-1)
{printf("停車位上無此車消息 ");
}else
{printf("牌照為%s的汽車從停車場開走 ",s.Stop[s.top+1].plate);
}//將讓路棧中的車輛信息壓入停車位棧
while(b.top>=0)
{strcpy(s.Stop[++s.top].plate,b.Help[b.top--].plate);printf("牌照為%s的汽車停回停車位%d車位 ",b.Help[b.top+1].plate,s.top+1);
}//從便道中->停車位
while(s.top<MAX_STOP-1)
{if(0==p.count)//判斷隊列是否為空
{break;
}//不為空,將便道中優先順序高的車停入停車位
else
{strcpy(s.Stop[++s.top].plate,p.Pave[p.front].plate);printf("牌照為%s的汽車從便道中進入停車位的%d車位 ",p.Pave[p.front].plate,s.top+1);
p.front=(p.front+1)%MAX_PAVE;
p.count--;
}
}
}voidcar_leave()//車離開{printf("請輸入即將離開的車牌號: ");scanf("%s",&C);if(s.top<0)//判斷停車位是否有車輛信息
{printf("車位已空,無車輛信息! ");
}else
{
stop_to_buff();
}

time_tt1;
longintt=time(&t1);
c.time2=t;//標記離開停車場的時間
char*t2;
t2=ctime(&t1);//獲取當前時間
printf("離開時間%s 需付%ld元 ",t2,MONEY*(c.time2-c.time1)/10);
}voidDisplay()
{inti=s.top;if(-1==i)
{printf("停車場為空 ");
}
time_tt1;longintt=time(&t1);//標記顯示時的時間
printf(" 車牌號 停放時間 當前所需支付金額 ");while(i!=-1)
{
printf(" %s %d秒 %d元 ",s.Stop[i].plate,t-c.time1,MONEY*(t-c.time1)/10);
i--;
}
}voidwelcome()
{printf(" *******************目前停車場狀況*********************** ");printf(" 停車場共有%d個車位,當前停車場共有%d輛車,等候區共有%d輛車 ",MAX_STOP,s.top+1,(p.rear+MAX_PAVE-p.front)
%MAX_PAVE);printf(" ******************************************************** ");printf(" ---------------WelcometoourCarParking--------------- ");
printf(" *1.Parking* ");
printf(" *2.leaving* ");
printf(" *3.situation* ");
printf(" *4.exit* ");
printf(" -------------------------------------------------------- ");
}


主函數main.c
/**********************************************************
問題描述:停車場是一個能放n輛車的狹長通道,只有一個大門,
汽車按到達的先後次序停放。若車場滿了,車要在門外的便道上等候
,一旦有車走,則便道上第一輛車進入。當停車場中的車離開時,由
於通道窄,在它後面的車要先退出,待它走後依次進入。汽車離開
時按停放時間收費。
基本功能要求:
1)建立三個數據結構分別是:停放隊列,讓路棧,等候隊列
2)輸入數據模擬管理過程,數據(入或出,車號)。
***********************************************************/#include"PLot.h"intmain()
{//初始化
s.top=-1;
b.top=0;
p.rear=0;
p.count=0;
p.front=0;while(1)
{
system("clear");
welcome();inti,cho;
scanf("%d",&i);if(1==i)car_come();
if(2==i)car_leave();if(3==i)Display();if(4==i)break;

printf("返回請輸入1 ");
scanf("%d",&cho);if(1==cho)
{continue;
}else
{
printf("您的輸入有誤,請重新輸入 ");
scanf("%d",&cho);continue;
}
}return0;
}

⑦ c語言程序設計 停車場管理系統 停車場有1-20個車位號,設計一個停車場管理系統,實現停車場管理

你好!程序什麼時間要呢?有關類似的,基本滿足要求,你看看吧

可以按照你的要求修改源程序

⑧ 怎麼用C語言編寫泊車管理程序

#include<stdio.h>
#include<stdlib.h>
struct time
{
int day;
int hours;
int mins;
};
struct park
{
char position;
int num;
struct time intime;
struct time outtime;
}car[50];
void carpark(struct park car[50]);
void carout(struct park car[50]);
void figure(struct park car[50],int n);
void main()
{
char commend,ch='y';
while(ch=='y'||ch=='Y')
{
printf("\t請輸入指令:i:有車將要進入停車場;o:有車將要出停車場。\n");
commend=getchar();
fflush(stdin);
if(commend=='i'||commend=='I')
{
carpark(car);
printf("\n\t請問是否繼續?(y/n)\n");
fflush(stdin);
ch=getchar();
fflush(stdin);
}
else if(commend=='o'||commend=='O')
{
carout(car);
printf("\n\t請問是否繼續?(y/n)\n");
fflush(stdin);
ch=getchar();
fflush(stdin);
}
else if(commend!='i'&&commend!='o')
{
printf("\n\t指令錯誤!或者是否繼續\n");
printf("\n\t如果您想繼續或者是放棄,請輸入y/n\n");
ch=getchar();
fflush(stdin);
}

}
}
void carpark(struct park car[50])
{
FILE *fp;
char ch;
struct park car1[50];
int m,n,*p,i=0,q,k=0,s=0;
printf("\n\t請問你有想將車停到指定的位置嗎?請確認(Y/N)\n");
ch=getchar();
fflush(stdin);
if(ch=='y'||ch=='Y')
{
printf("\n\t請輸入你想要停車的位置編號(1~50)謝謝!\n");
scanf("%d",&n);
p=&n;
fflush(stdin);
fp=fopen("停車場記錄.txt","r");
if(fp==NULL)
{
printf("文件打開錯誤!");
exit(0);
}
else
{
while(1)
{
m=fscanf(fp,"%c %d %d %d %d\n",&car1[i].position,&car1[i].num,&car1[i].intime.day,&car1[i].intime.hours,&car1[i].intime.mins);
i++;
if(m==-1)
break;
}
fclose(fp);
for(m=0;m<i;m++)
if(car1[m].num==n)
{
q=1;
break;
}
if(q!=1)
{
printf("\n\t恭喜!該位置目前空閑。\n");
car[n-1].position='f';
while(1)
{
printf("\n\t請輸入這輛車的進入停車場的時間,輸入格式為日期(0~30)\n");
scanf("%d",&car[n-1].intime.day);
if(car[n-1].intime.day<30&&car[n-1].intime.day>0)
break;
}
while(1)
{
printf("\n\t請輸入這輛車進入停車場時的是幾點:(0~24)\n");
scanf("%d",&car[n-1].intime.hours);
if(car[n-1].intime.hours>0&&car[n-1].intime.hours<24)
break;
}
while(1)
{
printf("\n\t請輸入這輛車進入停車場時的分鍾數:(0~60)\n");
scanf("%d",&car[n-1].intime.mins);
if(car[n-1].intime.mins>0&&car[n-1].intime.mins<60)
break;
}
car[n-1].num=n;
printf("\n\t請記住您停車的位置是%d號,取車時憑此號取車\n",n);
fp=fopen("停車場記錄.txt","a");
if(fp==NULL)
{
printf("ERROR1!\n");
exit(0);
}
else
fprintf(fp,"%c %d %d %d %d\n",car[*p-1].position,car[*p-1].num,car[*p-1].intime.day,car[*p-1].intime.hours,car[*p-1].intime.mins);
fclose(fp);
}
else
printf("\n\t抱歉!您所提供的車位已經被佔用。\n");
}

}
else if(ch=='N'||ch=='n')
{
q=0;
printf("\n\t那麼我們將為您隨機分配位置:\n");
fp=fopen("停車場記錄.txt","r");
if(fp==NULL)
{
printf("文件打開錯誤!");
exit(0);
}
else
{
while(1)
{
m=fscanf(fp,"%c %d %d %d %d\n",&car1[i].position,&car1[i].num,&car1[i].intime.day,&car1[i].intime.hours,&car1[i].intime.mins);
i++;
if(m==-1)
break;
}
fclose(fp);
while(k<50)
{
if(car1[s].num!=k+1)
break;
else
{
k++;
s++;
}
}
car[k].position='f';
while(1)
{
printf("\n\t請輸入這輛車的進入停車場的時間,輸入格式為日期(0~30)\n");
scanf("%d",&car[k].intime.day);
if(car[k].intime.day<30&&car[k].intime.day>0)
break;
}
while(1)
{
printf("\n\t請輸入這輛車進入停車場時的是幾點:(0~24)\n");
scanf("%d",&car[k].intime.hours);
if(car[k].intime.hours>0&&car[k].intime.hours<24)
break;
}
while(1)
{
printf("\n\t請輸入這輛車進入停車場時的分鍾數:(0~60)\n");
scanf("%d",&car[k].intime.mins);
if(car[k].intime.mins>0&&car[k].intime.mins<60)
break;
}
car[k].num=k+1;
printf("\n\t請記住您停車的位置是%d號,取車時憑此號取車\n",k+1);
fp=fopen("停車場記錄.txt","a");
if(fp==NULL)
{
printf("ERROR1!\n");
exit(0);
}
else
fprintf(fp,"%c %d %d %d %d\n",car[k].position,car[k].num,car[k].intime.day,car[k].intime.hours,car[k].intime.mins);

}
fclose(fp);
}

}
void carout(struct park car[])
{
FILE *fp;
struct park car2[50];
int i=0,m=3,num1,flag=0,wz;
printf("\n\t請輸入你的車位號,謝謝!\n");
scanf("%d",&num1);
fp=fopen("停車場記錄.txt","r");
if(fp==NULL)
{
printf("ERROR2!");
exit(0);
}
else
{
while(1)
{
m=fscanf(fp,"%c %d %d %d %d\n",&car2[i].position,&car2[i].num,&car2[i].intime.day,&car2[i].intime.hours,&car2[i].intime.mins);
i++;
if(m==-1||car2[m].num==num1)
wz=ftell(fp);
break;
}
}
if(num1>0&&num1<=50)
{
for(m=0;m<i;m++)
if(car2[m].num==num1)
{
flag=1;
printf("\n\t您好!已經查到您的車在我們的車庫,請輸入你出停車場的時間。\n");
while(1)
{
printf("\n\t請輸入這輛車的出停車場的時間,輸入格式為日期:(0~30)\n");
scanf("%d",&car2[m].outtime.day);
if(car2[m].outtime.day<30&&car2[m].outtime.day>0)
break;
}
while(1)
{
printf("\n\t請輸入這輛車出停車場時的是幾點:(0~24)\n");
scanf("%d",&car2[m].outtime.hours);
if(car2[m].outtime.hours>0&&car2[m].outtime.hours<24)
break;
}
while(1)
{
printf("\n\t請輸入這輛車出停車場時的分鍾數:(0~60)\n");
scanf("%d",&car2[m].outtime.mins);
if(car2[m].outtime.mins>0&&car2[i].outtime.mins<60)
break;
}
figure(car2,num1);
}
if(!flag)
printf("\n\t沒有找到您的車!\n");
}
else
printf("\n\t輸入錯誤!\n");
}
void figure(struct park car2[50],int k)
{
int day1,hours1,mins1,payment;
int count1,count2;
printf("\n\t這輛車進入停車場的時間是%d日%d:%d\n",car2[k-1].intime.day,car2[k-1].intime.hours,car2[k-1].intime.mins);
printf("\n\t這輛車出停車場的時間是%d日%d:%d\n",car2[k-1].outtime.day,car2[k-1].outtime.hours,car2[k-1].outtime.mins);
day1=car2[k-1].outtime.day-car2[k-1].intime.day;
hours1=car2[k-1].outtime.hours-car2[k-1].intime.hours;
mins1=car2[k-1].outtime.mins-car2[k-1].intime.mins;
count1=(day1*24+hours1)/12;
count2=(day1*24+hours1)%12;
if(day1==0)
{
if(hours1<=3&&hours1>0)
payment=3*hours1;
else if(hours1>3&&hours1<=12)
payment=10;
printf("\t\n應繳納RMB:%d元\n",payment);
}
else if(day1>=1)
{
if(count2<3)
payment=count1*19+count2*3;
else if(count2>3&&count2<=12)
payment=count1*10+19;
printf("\t\n應繳納RMB:%d元\n",payment);
}
else if(day1<0)
printf("\n\t您輸入的日期錯誤,時空倒轉啦!\n");

}
剛才那個有點問題,改了下可以了!!!!

⑨ C語言停車場管理程序(順序號 int,車牌號 char(8),停車位號int,進入停車場時間cha

for(int i=0;i<=Enter->top;i++)
{if( Enter->stack[i]->num==p->num)
{ cout<<"你的車號與停車場內車號重復"<<endl;
break;
}
}
if(Enter->top<MAX)
{
Enter->top++;
cout<<endl<<"車輛在車場第"<<Enter->top<<"位置.";
cout<<endl<<"車輛到達時間:";
cin>>p->reach.hour>>p->reach.min;
cout<<endl<<"車輛到達登記完畢!"<<endl;
cout<<"--------------------------------------------"<<endl;
Enter->stack[Enter->top]=p;
return 1;
}

⑩ c語言設計泊車系統 要求:1.管理人員根據口令進入系統 2.管理車位信息(車位編號、狀態)和每分鍾

你好!
有一個接近的程序,這是截圖,你看看吧