① 用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.管理车位信息(车位编号、状态)和每分钟
你好!
有一个接近的程序,这是截图,你看看吧