如何把struct改成class
#include<iostream>
#include<malloc.h>
//#include<ctime>
#include "stdio.h"
#include"windows.h"
#define MaxSize 3
#define MaxSize1 4
#define Price 1
using namespace std;
typedef struct
{
char num[10];
int hour;
int min;
int sec;
int out_hour;
int out_min;
int out_sec;
}Car;
typedef struct
{
Car car[MaxSize];
int top;
}SqStack;
typedef struct
{
Car car[MaxSize1];
int front,rear;
}SqQueue;
void InitStack(SqStack*&s)
{
s=(SqStack*)malloc(sizeof(SqStack));
s->top=-1;
}
void InitQueue(SqQueue*&q)
{
q=(SqQueue*)malloc(sizeof(SqQueue));
q->front=q->rear=0;
}
int Push(SqStack *&s,Car c)
{
if(s->top==MaxSize-1)
return 0;
s->top++;
s->car[s->top]=c;
return 1;
}
int enQueue1(SqQueue*&q,Car c)
{
if((q->rear+1)%MaxSize1==q->front)
{
return 0;
}
q->car[q->rear]=c;
q->rear=(q->rear+1)%MaxSize1;
return 1;
}
int deQueue(SqQueue*&q,Car &c)
{
if(q->front==q->rear)
return 0;
c=q->car[q->front];
q->front=(q->front+1)%MaxSize1;
return 1;
}
void TypeIn(SqStack *s,SqQueue *q,Car &c,SYSTEMTIME m_time)
{ int sign=0;
int i;
GetLocalTime(&m_time);
cout<<"请输入车牌号(例:A1234):";
cin>>c.num;
i=0;
while(strcmp(c.num,s->car[i].num)==0)
{
sign=1;
cout<<"请重新输入车牌号(例:A1234):";
cin>>c.num;
i++;
}
/* for(int i=0;i<=s->top;i++)
{
if(strcmp(c.num,s->car[i].num)==0)
{ sign=1;
cout<<"该车已经存在!请重新输入。"<<endl;
cout<<"请重新输入车牌号:"<<endl;
cin>>c.num;
}
}
*/
if(i==s->top+1&&sign==0)
{ cout<<"停车场已经有该车!"<<endl;
for(int j=q->front;j<=q->rear;j++)
{
if(strcmp(c.num,q->car[j].num)==0)
{
cout<<"该车在侯选场已经存在!请重新输入。"<<endl;
cout<<"请重新输入车牌号:"<<endl;
cin>>c.num;
}
}
}
c.hour=m_time.wHour;
c.min=m_time.wMinute;
c.sec=m_time.wSecond;
cout<<"该车到达时间:"<<c.hour<<":"<<c.min<<":"<<c.sec<<endl;
}
void Search(SqStack *s,SqQueue *q,char num1[])
{ int sign=0;
if(s->top==-1)
{
cout<<"该停车场无车!"<<endl;
}
for(int i=0;i<s->top+1;i++)
{
if(strcmp(s->car[i].num,num1)==0)
{
cout<<"你要查找的车的信息为:"<<endl;
cout<<"车牌 "<<s->car[i].num<<endl;
cout<<"该车进【停车场】时间:"<<s->car[i].hour<<":"<<s->car[i].min<<":"<<s->car[i].sec<<endl;
cout<<"该车在【停车场】"<<"【"<<i+1<<"】"<<"号位上"<<endl;
sign=1;
break;
}
}
if(sign==0&&i==s->top+1)
{
for(int j=q->front;j<q->rear;j++)
{
if(strcmp(q->car[j].num,num1)==0)
{
cout<<"你要查找的车的信息为:"<<endl;
cout<<"车牌 "<<s->car[j].num<<endl;
cout<<endl;
cout<<"该车进【候选场】时间:"<<q->car[j].hour<<":"<<q->car[j].min<<":"<<q->car[j].sec<<endl;
cout<<"该车在【侯车场】"<<"【"<<j+1<<"】"<<"号位上"<<endl;
break;
}
}
}
}
int pop1(SqStack*&s,Car&c)
{
if(s->top==-1)
{
return 0;
}
c=s->car[s->top];
s->top--;
return 1;
}
int StackLength(SqStack *s)
{
return (s->top+1);
}
void Pop(SqStack*&s,SqStack*&h,SqQueue*&q,SYSTEMTIME m_time)
{ Car c;
char num[10];
int i,sign;
sign=10;
if(s->top==-1) //停车场已空
{
cout<<"【停车场】已经没车了!"<<endl;
}
cout<<"请输入出场的车牌:";cin>>num;
for(i=0;i<=s->top;i++) //遍历栈
{
if(strcmp(s->car[i].num,num)==0) //有要出车场的车
{ sign=i;
break;
}
}
if(sign!=10)
{
cout<<"该车进场时间 "<<s->car[sign].hour<<":"<<s->car[sign].min<<":"<<s->car[sign].sec<<endl;
GetLocalTime(&m_time);
s->car[sign].out_hour=m_time.wHour;
s->car[sign].out_min=m_time.wMinute;
s->car[sign].out_sec=m_time.wSecond;
int d=s->car[sign].out_hour*3600+s->car[sign].out_min*60+s->car[sign].out_sec-s->car[sign].hour*3600-s->car[sign].min*60-s->car[sign].sec;
cout<<"该车出场时间 "<<s->car[sign].out_hour<<":"<<s->car[sign].out_min<<":"<<s->car[sign].out_sec<<endl;
cout<<"该车共停留"<<"【"<<d<<"】"<<"秒 ";
cout<<"费用为:"<<"【"<<float(d*Price)<<"】元"<<endl;
int l=StackLength(s);
for(int k=0;k<l-sign-1;k++)
{
pop1(s,c);
Push(h,c);
}
pop1(s,c);
cout<<endl;
for(int n=0;n<l-sign-1;n++)
{
pop1(h,c);
Push(s,c);
}
if(q->rear!=0)
{
deQueue(q,c);
Push(s,c);
cout<<"【侯选场】第一辆车 "<<"车号为"<<c.num<<"的车已经进入停车场"<<MaxSize<<"号位"<<endl;
cout<<"【侯选场】还剩"<<q->rear-q->front<<"辆车在等待 "<<endl;
/* cout<<"【友好提示】"<<endl;
cout<<"【停车场】"<<endl;
cout<<"位置 "<<"车牌 "<<endl;
for(int m=q->front;m<=q->rear;m++)
{
cout<<m<<" "<<q->car[m].num<<endl;
}*/
}
}
else
cout<<"【停车场】没有该车!"<<endl;
}
void List(SqStack *s,SqQueue *q)
{
int a,i,j;
do
{
cout<<'\t'<<'\t'<<" ***********************************"<<endl;
cout<<'\t'<<'\t'<<" * 【1】【查看停车场】 *"<<endl;
cout<<'\t'<<'\t'<<" * 【2】【查看候选场】 *"<<endl;
cout<<'\t'<<'\t'<<" * 【0】【退出查看】 *"<<endl;
cout<<'\t'<<'\t'<<" ***********************************"<<endl;
cout<<"请输入你的选择:"; cin>>a;
switch(a)
{
case 1:
if(s->top>0) /*判断车站内是否有车*/
{
cout<<"【停车场】"<<endl;
cout<<"共有"<<s->top+1<<"辆车"<<endl;
cout<<"位置 到达时间 车牌号"<<endl;
for(i=0;i<=s->top;i++)
{
cout<<" "<<i+1<<" "<<s->car[i].hour<<":"<<s->car[i].min<<":"<<s->car[i].sec<<" "<<s->car[i].num<<endl;
}
}
else cout<<"车场里没有车!"<<endl;
break;
case 2:
cout<<"【侯选场】"<<endl;
if(q->rear!=0&&q->rear!=q->front)
{
cout<<"共有"<<q->rear-q->front<<"辆车在等待"<<endl;
cout<<"位置 到达时间 车牌号"<<endl;
for(j=q->front;j<q->rear;j++)
{
cout<<" "<<j+1<<" "<<q->car[j].hour<<":"<<q->car[j].min<<":"<<q->car[j].sec<<" "<<q->car[j].num<<endl;
}
}
else cout<<"后车场没有车!"<<endl;
break;
case 0:
break;
default:
cout<<"输入有误!"<<" 请重新输入!"<<endl;
break;
}
}while(a!=0);
}
void main()
{
SYSTEMTIME m_time;
system("Color f0");
SqStack *s,*h;
SqQueue *q;
Car c;
char num1[10];
InitStack(s);
InitStack(h);
InitQueue(q);
GetLocalTime( &m_time );
cout<<"当前时间 ";
printf( "%4d/%02d/%02d %02d:%02d:%02d\n",m_time.wYear,m_time.wMonth,m_time.wDay,m_time.wHour,m_time.wMinute, m_time.wSecond);
int a;
do
{
cout<<'\t'<<'\t'<<'\t'<<"欢迎使用停车场管理系统"<<endl;
cout<<"开发人:sam"<<endl<<endl;
cout<<'\t'<<'\t'<<"*********************************************"<<endl;
cout<<'\t'<<'\t'<<"* 【1】. 【进场】 *"<<endl;
cout<<'\t'<<'\t'<<"* 【2】. 【出场】 *"<<endl;
cout<<'\t'<<'\t'<<"* 【3】. 【查询】 *"<<endl;
cout<<'\t'<<'\t'<<"* 【4】. 【显示】 *"<<endl;
cout<<'\t'<<'\t'<<"* 【0】. 【退出】 *"<<endl;
cout<<'\t'<<'\t'<<"*********************************************"<<endl;
cout<<"温馨提示*该停车场共有"<<MaxSize<<"个位,侯选场共有"<<MaxSize1-1<<"个位*"<<endl;
cout<<"请输入你的选择:";
cin>>a;
switch(a)
{
case 1:
cout<<"请输入该车信息:"<<endl;
TypeIn(s,q,c,m_time);
if(s->top<MaxSize-1)
{
cout<<"该车停在【停车场】"<<s->top+2<<"位上"<<endl;
Push(s,c);
cout<<"该车信息已经成功录入!"<<endl;
}
else
{
enQueue1(q,c);
//if(q->rear==MaxSize1+1)
cout<<"不好意思 "<<"【停车场】已满 "<<"该车需要在【侯选场】等待!"<<endl;
cout<<"该车停在【侯选场】"<<q->rear-q->front<<"位上"<<endl;
//else
// cout<<"对不起 !停车场、侯选场都已满,如果你有需要可以在这里等候!"<<endl;
}
break;
case 2:
/* t=time(0);
hour=localtime(&t);
minute=localtime(&t);
second=localtime(&t); */
Pop(s,h,q,m_time);
break;
case 3:
cout<<"请输入你要查询车的车牌:";
cin>>num1;cout<<endl;
Search(s,q,num1);
break;
case 4:
List(s,q);
case 0:
break;
default:
cout<<"输入有误!"<<" 请重新输入";
break;
}
}while(a!=0);
}