#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
#include<conio.h>
#include<time.h>
#include <windows.h>
//#include <graphics.h>
#define price 0.05 //每车每分钟费用
typedef struct time //时间结点
{
int hour;
int min;
}Time;
/*----------------------------------*/
/*记录汽车的牌照号码和汽车的当前状态*/
/*----------------------------------*/
typedef struct
{
char license_plate[10]; //汽车牌照号码
Time reach;
Time leave;
char state; //汽车的当前状态,可字符s表示停放在停车位上
//可字符p表示停放在便道上,每辆车的初始状态用字符i表示
}CAR;
/*-----------------------------------*/
/*为每个车位分配-个固定的编号(顺序栈)*/
/*-----------------------------------*/
#define MAX_STOP 5
typedef struct
{
CAR STOP[MAX_STOP]; //各汽车信息的存储空间
int top; //用来指示栈顶位置的静态指针
}STOPPING;
/*------------*/
/*便道(顺序队)*/
/*------------*/
#define MAX_PAVE 100 //便道不限制停放车辆的数目,设为足够大
typedef struct
{
CAR PAVE[MAX_PAVE]; //各汽车信息的存储空间
int front,rear; //用来指示队头和队尾位置的静态指针
}PAVEMENT;
/*----------------------------------*/
/*停车位中让路的车依次"压入"(辅助栈)*/
/*----------------------------------*/
typedef struct
{
CAR BUF[MAX_STOP]; //各汽车信息的存储空间
int top; //用来指示栈顶位置的静态指针
}BUFFER;
void gotoxy(int y , int x)
{
COORD pos = {x,y};
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOut, pos);
}
/*--------*/
/*输入框*/
/*--------*/
void Text()
{
int i,j,k;
for(j=17,k=30,i=1;i<3;i++)
{
gotoxy(i,j);
putchar('|');
gotoxy(i+1,k);
putchar('|');
}
gotoxy(1,17);
putchar('+');
gotoxy(3,17);
putchar('+');
gotoxy(3,30);
putchar('+');
for(j=1,k=3,i=18;i<30;i++)
{
gotoxy(j,i);
putchar('-');
gotoxy(k,i);
putchar('-');
}
gotoxy(1,30);
putchar('+');
gotoxy(2,20);
}
/*--------*/
/*初始化栈*/
/*--------*/
void InitStack(STOPPING *s)
{
s->top=0;
}
void InitStack1(BUFFER *s)
{
s->top=0;
}
/*----------*/
/*初始化队列*/
/*----------*/
void InitQueue(PAVEMENT *s)
{
s->front = 0;
s->rear = 0;
}
//***********************************************************
//停入便道
//************************************************************
void Pave(PAVEMENT *sq)
{
system("cls");
printf("●\t\t车位已满!请依次停在便道上等候\n");
while(1){
printf("●\t\t是否继续停在便道?(y/n)");
if (tolower(getchar())=='n')
{
break;
}
getchar();
system("cls");
if((sq->rear+1)%MAX_PAVE == sq->front)
printf("●\t\t便道已满!");
else
{
printf("●\t\t请输入车牌号(例:渝A1234):\n");
sq->rear = (sq->rear+1) % MAX_PAVE;
Text();
gets(sq->PAVE[sq->rear].license_plate);
gotoxy(4,0);
sq->PAVE[sq->rear].state='p';
printf("●\t\t排号为%s的车已在便道上等候!\n",sq->PAVE[sq->rear].license_plate);
}
}
}
//***********************************************************
//停入停车场
//************************************************************
void Parking(STOPPING *s,PAVEMENT *sq)
{
system("cls");
while(1){
if(s->top==MAX_STOP)
{
Pave(sq);
break;
}
else
{
system("cls");
printf("●\t\t请输入车牌号(例:渝A1234):\n");
printf("●\t\t");
Text();
gets(s->STOP[s->top].license_plate);
gotoxy(4,0);
//getchar();
time_t timep;
struct tm *p;
time (&timep);
p=gmtime(&timep);
//printf("●\t\t请输入进场时间(例:**:**):\n");
s->STOP[s->top].reach.hour = 8+p->tm_hour;
s->STOP[s->top].reach.min = p->tm_min; //获取当前分
//scanf("%d%d",&(s->STOP[s->top].reach.hour),&(s->STOP[s->top].reach.min));
printf("●\t\t牌照为%s的汽车进入停车位的%d号车位!!\n",s->STOP[s->top].license_plate,s->top+1);
s->STOP[s->top++].state='s';
}
printf("●\t\t是否继续?(y/n)");
if (tolower(getchar())=='n')
{
break;
}
getchar();
}
}
//***********************************************************
//列表打印信息
//************************************************************
void List(PAVEMENT *sq)
{
system("cls");
while(1){
if(sq->front==sq->rear)
{
printf("\n");
printf("\t\t ◆◆◆◆便道◆◆◆◆\n");
printf("\n\n");
printf("●\t\t还没有车辆进入便道!!\n");
}
else
{
int i;
int count = 1;
i = (MAX_PAVE+sq->rear-sq->front)%MAX_PAVE;
printf("\n");
printf("\t\t ◆◆◆◆便道◆◆◆◆\n");
printf("\n\n");
printf("\t\t------------------------");
printf("\n●\t\t位置\t车牌号\t 状态\n");
printf("\t\t------------------------\n");
for(int j=sq->front+1;j<=i+sq->front;j++) {
printf("●\t\t%d\t",count);
printf("%s\t %c\n",sq->PAVE[j].license_plate,sq->PAVE[j].state);
count++;
printf("\t\t------------------------\n");
}
}
printf("●\t\t按回车键退出");
if (getchar())
{
break;
}
}
}
void print(STOPPING *s)
{
system("cls");
while(1){
int i;
i = s->top;
if(i == 0)
{
printf("\n");
printf("\t\t ◆◆◆◆车场◆◆◆◆\n");
printf("\n\n");
printf("\n●\t\t车场里没有车!!\n");
}
else
{
printf("\n");
printf("\t\t ◆◆◆◆车场◆◆◆◆\n");
printf("\n\n");
printf("\t\t--------------------------------------");
printf("\n●\t\t位置\t到达时间\t车牌号\t 状态\n");
printf(" \t\t--------------------------------------\n");
for(int j=0;j<i;j++) {
printf("●\t\t%d\t%d:%d\t\t",j+1,s->STOP[j].reach.hour,s->STOP[j].reach.min);
printf("%s\t %c\n",s->STOP[j].license_plate,s->STOP[j].state);
printf("\t\t--------------------------------------\n");
}
}
printf("●\t\t按回车键退出");
if (getchar())
{
break;
}
}
}
void list(STOPPING *s,PAVEMENT *sq)
{
int ch;
int flag;
flag=1;
while(flag)
{
system("cls"); //必须包含头文件 #include <stdlib.h> 其作用是清除屏幕先前的显示内容!
printf("\t\t-----------------------------------\n");
printf("\t\t ------ 车辆信息查询------\n");
printf("\t\t-----------------------------------\n");
printf("\n\t\t********************************\n");
printf("\t\t==\t1.车场\n\t\t+\n");
printf("\t\t==\t2.便道\n\t\t+\n");
printf("\t\t==\t3.返回\n\t\t+\n");
printf("\t\t********************************\n");
printf("\t\t==---------------------------------\n");
char c;
int x,y,i,j;
x=20;
y=5;
gotoxy(5,20);
printf("->");
while(1)
{
if((c=getch())<0) c=getch();
switch(c)
{
case 72:
if(y>5) y=y-2;
else if(y=3) y=9;
break;
case 80:
if(y<9) y=y+2;
else if(y=11) y=5;
break;
case 10:break;
case 13:break;
default:
break;
}
if(c==10||c==13)
{
if(x==20&&y==5)
ch=1;
else if(x=20&&y==7)
ch=2;
else if(x=20&&y==9)
ch=3;
//getchar();
break;
}
else
{
system("cls");
gotoxy(0,0);
printf("\t\t-----------------------------------\n");
printf("\t\t ------ 车辆信息查询------\n");
printf("\t\t-----------------------------------\n");
printf("\n\t\t********************************\n");
printf("\t\t==\t1.车场\n\t\t+\n");
printf("\t\t==\t2.便道\n\t\t+\n");
printf("\t\t==\t3.返回
没有合适的资源?快使用搜索试试~ 我知道了~
C语言停车场管理系统(完整代码)
共22个文件
pdb:3个
opt:2个
ilk:2个
4星 · 超过85%的资源 需积分: 31 251 下载量 78 浏览量
2017-08-29
17:12:16
上传
评论 64
收藏 1.9MB ZIP 举报
温馨提示
停车场管理系统完整代码
资源推荐
资源详情
资源评论
收起资源包目录
Parking.zip (22个子文件)
Parking
lot.dsw 514B
Debug
vc60.pdb 76KB
Parking.ilk 464KB
Parking.pch 225KB
lot.obj 47KB
vc60.idb 145KB
lot.ilk 412KB
Parking.exe 224KB
Parking.pdb 721KB
lot.pch 3.41MB
lot.exe 232KB
lot.pdb 585KB
Parking.opt 48KB
lot.ncb 49KB
Parking.ncb 49KB
Parking.dsp 4KB
lot.plg 1KB
lot.dsp 3KB
Parking.plg 990B
lot.opt 48KB
lot.cpp 15KB
Parking.dsw 522B
共 22 条
- 1
资源评论
- landis20152018-03-28让我试一试
- jogeshi2020-03-16这么LOW,浪费我的C币
- javezhao2018-12-16基本功能可以,界面做得好
- 不许看我~哼2021-01-07大佬太强了 还有想问一下为什么打开里边的注释是乱码呢
qq_36020952
- 粉丝: 6
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功