如何把struct改成class

qq_27650053 2015-07-25 10:13:45
#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);

}
...全文
362 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
幻夢之葉 2015-07-26
  • 打赏
  • 举报
回复
我很好奇为何要替换?!
707wk 2015-07-25
  • 打赏
  • 举报
回复
简单快速 直接替换关键字,如果大改的话就新建个类,然后函数全调里面去
ralln 2015-07-25
  • 打赏
  • 举报
回复
直接改,struct中的成员变为类成员变量,下面的函数选择相关的放入类里成为成员函数
Falleyes 2015-07-25
  • 打赏
  • 举报
回复
最简单的,不加成员函数,修改类似如下:
typedef struct 
{
  char num[10];
  int hour;
  int min;
  int sec;
  int out_hour;
  int out_min;
  int out_sec;
}Car;

class Car{
public:
  char num[10];
  int hour;
  int min;
  int sec;
  int out_hour;
  int out_min;
  int out_sec;
}
guzitajiu 2015-07-25
  • 打赏
  • 举报
回复
c ++中规定,struct 和class 的区别,仅仅只是,struct 里面的成员变量 的属性是Public,而 class里面的成员变量表示的是Private ,如果你都封装性没有很高的要求的话,直接替换就可以了

64,680

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧