数据结构c语言版课程设计报告停车场管理系统.docx

上传人:b****2 文档编号:2753570 上传时间:2023-05-04 格式:DOCX 页数:26 大小:97.51KB
下载 相关 举报
数据结构c语言版课程设计报告停车场管理系统.docx_第1页
第1页 / 共26页
数据结构c语言版课程设计报告停车场管理系统.docx_第2页
第2页 / 共26页
数据结构c语言版课程设计报告停车场管理系统.docx_第3页
第3页 / 共26页
数据结构c语言版课程设计报告停车场管理系统.docx_第4页
第4页 / 共26页
数据结构c语言版课程设计报告停车场管理系统.docx_第5页
第5页 / 共26页
数据结构c语言版课程设计报告停车场管理系统.docx_第6页
第6页 / 共26页
数据结构c语言版课程设计报告停车场管理系统.docx_第7页
第7页 / 共26页
数据结构c语言版课程设计报告停车场管理系统.docx_第8页
第8页 / 共26页
数据结构c语言版课程设计报告停车场管理系统.docx_第9页
第9页 / 共26页
数据结构c语言版课程设计报告停车场管理系统.docx_第10页
第10页 / 共26页
数据结构c语言版课程设计报告停车场管理系统.docx_第11页
第11页 / 共26页
数据结构c语言版课程设计报告停车场管理系统.docx_第12页
第12页 / 共26页
数据结构c语言版课程设计报告停车场管理系统.docx_第13页
第13页 / 共26页
数据结构c语言版课程设计报告停车场管理系统.docx_第14页
第14页 / 共26页
数据结构c语言版课程设计报告停车场管理系统.docx_第15页
第15页 / 共26页
数据结构c语言版课程设计报告停车场管理系统.docx_第16页
第16页 / 共26页
数据结构c语言版课程设计报告停车场管理系统.docx_第17页
第17页 / 共26页
数据结构c语言版课程设计报告停车场管理系统.docx_第18页
第18页 / 共26页
数据结构c语言版课程设计报告停车场管理系统.docx_第19页
第19页 / 共26页
数据结构c语言版课程设计报告停车场管理系统.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据结构c语言版课程设计报告停车场管理系统.docx

《数据结构c语言版课程设计报告停车场管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构c语言版课程设计报告停车场管理系统.docx(26页珍藏版)》请在冰点文库上搜索。

数据结构c语言版课程设计报告停车场管理系统.docx

数据结构c语言版课程设计报告停车场管理系统

课程设计:

停车场

c语言版本的数据结构课程设计,要求用栈模拟停车场,用队列模拟便道,实现停车场的收费管理系统

停车场停满车后车会停在便道上面

下面附上源码,vc:

(下编译

#include

//#include//malloc

#include//获取系统时间所用函数

#include//getch()

#include//设置光标信息mallco

#defineMaxSize5/*定义停车场栈长度*/

#definePRICE0.05/*每车每分钟收费值*/

#defineBASEPRICE0.5//基础停车费

#defineEsc27//退出系统

#defineExit3//结束对话

#defineStop1//停车

#defineDrive2//取车

intjx=0,jy=32;//全局变量日志打印位置

typedefstruct

{inthour;

intminute;

}Time,*PTime;/*时间结点*/

typedefstruct/*定义栈元素的类型即车辆信息结点*/

{intnum;/*车牌号*/

Timearrtime;/*到达时刻或离区时刻*/

}CarNode;

typedefstruct/*定义栈,模拟停车场*/

{CarNodestack[MaxSize];

inttop;

}SqStackCar;

typedefstructnode/*定义队列结点的类型*/

{intnum;/*车牌号*/

structnode*next;

}QueueNode;

typedefstruct/*定义队列,模拟便道*/

{QueueNode*front,*rear;

}LinkQueueCar;

/*函数声明*/

PTimeget_time();

CarNodegetcarInfo();

voidqingping(inta);

voidgotoxy(intx,inty);

voidprintlog(Timet,intn,intio,charab,intpo,doublef);

voidprintstop(inta,intnum,intx0,inty0);

voidprintleave(inta,intpo,intnum);

/*初始化栈*/

voidInitSeqStack(SqStackCar*s)

{

s->top=-1;

}

/*push入站函数*/

intpush(SqStackCar*s,CarNodex)//数据元素x入指针s所指的栈

{

if(s->top==MaxSize-1)

return(0);//如果栈满,返回0

else

{

s->stack[++s->top]=x;//栈不满,到达车辆入栈

return

(1);

}

}

/*栈顶元素出栈*/

CarNodepop(SqStackCar*s)

{

CarNodex;

if(s->top<0)

{

x.num=0;

x.arrtime.hour=0;

x.arrtime.minute=0;

return(x);//如果栈空,返回空值

}

else

{

s->top--;

return(s->stack[s->top+1]);//栈不空,返回栈顶元素

}

}

/*初始化队列*/

voidInitLinkQueue(LinkQueueCar*q)

{

q->front=(QueueNode*)malloc(sizeof(QueueNode));//产生一个新结点,作头结点

if(q->front!

=NULL)

{

q->rear=q->front;

q->front->next=NULL;

q->front->num=0;//头结点的num保存队列中数据元素的个数

}

}

/*数据入队列*/

voidEnLinkQueue(LinkQueueCar*q,intx)

{

QueueNode*p;

p=(QueueNode*)malloc(sizeof(QueueNode));//产生一个新结点

p->num=x;

p->next=NULL;

q->rear->next=p;//新结点入队列

q->rear=p;

q->front->num++;//队列元素个数加1

}

/*数据出队列*/

intDeLinkQueue(LinkQueueCar*q)

{

QueueNode*p;

intn;

if(q->front==q->rear)//队空返回0

return(0);

else

{

p=q->front->next;

q->front->next=p->next;

if(p->next==NULL)

q->rear=q->front;

n=p->num;

free(p);

q->front->num--;

return(n);//返回出队的数据信息

}

}

/*********************车辆到达***************************/

//参数:

停车栈停车队列车辆信息

//返回值:

//功能:

对传入的车辆进行入栈栈满则入队列

voidArrive(SqStackCar*stop,LinkQueueCar*lq,CarNodex)

{

intf;

f=push(stop,x);//入栈

if(f==0)//栈满

{

EnLinkQueue(lq,x.num);//入队

printstop(1,lq->front->num,0,23);

printlog(x.arrtime,x.num,1,'B',lq->front->num,0);

qingping(0);printf("您的车停在便道%d号车位上\n",lq->front->num);//更新对话

}

else

{

printstop(0,stop->top+1,0,23);

printlog(x.arrtime,x.num,1,'P',stop->top+1,0);

qingping(0);printf("您的车停在停车场%d号车位上\n",stop->top+1);//更新对话

}

qingping

(1);printf("按任意键继续");

getch();

}

/**************************车辆离开*************************************/

//参数:

停车栈指针s1,暂存栈指针s2,停车队列指针p,车辆信息x

//返回值:

//功能:

查找栈中s1的x并出栈,栈中没有则查找队p中并出队,打印离开收费信息

voidLeave(SqStackCar*s1,SqStackCar*s2,LinkQueueCar*p,CarNodex)

{

doublefee=0;

intposition=s1->top+1;//车辆所在车位

intn,f=0;

CarNodey;

QueueNode*q;

while((s1->top>-1)&&(f!

=1))//当栈不空且未找到x

{

y=pop(s1);

if(y.num!

=x.num)

{

n=push(s2,y);

position--;

}

else

f=1;

}

if(y.num==x.num)//找到x

{

gotoxy(33,17);printf("%d:

%-2d",(x.arrtime.hour-y.arrtime.hour),(x.arrtime.minute-y.arrtime.minute));

fee=((x.arrtime.hour-y.arrtime.hour)*60+(x.arrtime.minute-y.arrtime.minute))*PRICE+BASEPRICE;

gotoxy(48,17);printf("%2.1f元\n",fee);

qingping(0);printf("确认您的车辆信息");

qingping

(1);printf("按任意键继续");

getch();

while(s2->top>-1)

{y=pop(s2);

f=push(s1,y);

}

n=DeLinkQueue(p);

if(n!

=0)

{

y.num=n;

y.arrtime=x.arrtime;

f=push(s1,y);

printleave(p->front->num+1,position,s1->top+1);//出栈动画ji队列成员入栈

printlog(x.arrtime,x.num,0,'P',position,fee);

printlog(y.arrtime,y.num,1,'P',s1->top+1,0);

}

else

{

printleave(0,position,s1->top+2);

printlog(x.arrtime,x.num,0,'P',position,fee);

}

}

else//若栈中无x

{

while(s2->top>-1)//还原栈

{

y=pop(s2);

f=push(s1,y);

}

q=p->front;

f=0;

position=1;

while(f==0&&q->next!

=NULL)//当队不空且未找到x

if(q->next->num!

=x.num)

{

q=q->next;

position++;

}

else//找到x

{

q->next=q->next->next;

p->front->num--;

if(q->next==NULL)

p->rear=p->front;

gotoxy(33,17);printf("0:

0");

gotoxy(48,17);printf("0元");

qingping(0);printf("您的车将离便道");

qingping

(1);printf("按任意键继续");

getch();

printleave(-1,position,p->front->num+1);//出队动画

printlog(x.arrtime,x.num,0,'B',position,0);

f=1;

}

if(f==0)//未找到x

{

qingping(0);printf("停车场和便道上均无您的车");

qingping

(1);printf("按任意键继续");

getch();

}

}

}

 

/*获取系统时间*/

//返回PTime类型

PTimeget_time()

{

Time*t;

t=newTime;

time_ttimer;

structtm*tblock;

timer=time(NULL);

tblock=localtime(&timer);

t->minute=tblock->tm_min;

t->hour=tblock->tm_hour;

returnt;

}

/*移动光标*/

//蒋光标移动到(x,y)点

voidgotoxy(intx,inty)

{

COORDcoord;

coord.X=x;

coord.Y=y+3;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);

}

/*画图*/

//画出系统界面

voidpanitPL()

{

gotoxy(20,4);

printf("****************对话框****************");

intx=18,y=6;//起始点

inta[2][4]={2,0,0,1,-2,0,0,-1};//方向

for(inti=0;i<2;i++)

{

for(intj=0;j<20;j++)

{

x+=a[i][0];y+=a[i][1];

gotoxy(x,y);

printf("═");

}

x+=a[i][0];y+=a[i][1];

gotoxy(x,y);

if(i==0)

printf("╗");

else

printf("╚");

for(j=0;j<12;j++)

{

x+=a[i][2];y+=a[i][3];

gotoxy(x,y);

printf("║");

}

x+=a[i][2];y+=a[i][3];

gotoxy(x,y);

if(i==0)

printf("╝");

else

printf("╔");

}

gotoxy(22,8);

printf("小王:

");

gotoxy(22,11);

printf("顾客:

");

gotoxy(22,14);printf("***********停车信息***********");

gotoxy(23,15);printf("车牌号:

");

gotoxy(42,15);printf("时间:

");

gotoxy(23,17);printf("停车时长:

");

gotoxy(42,17);printf("收费:

");

 

}

/*清屏函数*/

//更新对话框前将原对话晴空

voidqingping(inta)

{

if(a==0)//清空小王的对话

{

gotoxy(28,8);printf("");

gotoxy(28,9);printf("");

gotoxy(28,8);

}

elseif(a==1)//清空顾客的对话

{

gotoxy(28,11);printf("");

gotoxy(28,12);printf("");

gotoxy(28,13);printf("");

gotoxy(28,11);

}

else//清空车辆信息

{

gotoxy(31,15);printf("");

gotoxy(48,15);printf("");

gotoxy(33,17);printf("");

gotoxy(48,17);printf("");

gotoxy(31,15);

}

}

//用上下键移动选择

intgetkey()

{

charc;

intx=28,y=11;

while

(1)

{

gotoxy(x,11);printf("");

gotoxy(x,12);printf("");

gotoxy(x,13);printf("");

gotoxy(x,y);printf(">>");

c=getch();

if(c==13)returny-10;//enter键返回当前选项

if(c!

=-32)continue;//不是方向键进行下次循环

c=getch();

if(c==72)if(y>11)y--;//上

if(c==80)if(y<13)y++;//下

}

}

 

//输入车辆信息

CarNodegetcarInfo()

{

PTimeT;

CarNodex;

qingping(0);printf("请输入您的车牌号\n");

qingping

(1);printf("在下面输入车辆信息");

qingping

(2);

scanf("%d",&(x.num));

T=get_time();

x.arrtime=*T;

gotoxy(48,15);printf("%d:

%d",x.arrtime.hour,x.arrtime.minute);

getch();

returnx;

}

//打印停车场

voidprintcar()

{

gotoxy(0,20);//╔╗╝╚═║

printf("═══════════════════════════════════════╗");

printf("出场暂放区║12345║");

printf("----------------------------------------------------------------------║");

printf("主车道║");

printf("----------------------------------------------------------------------║");

printf("121110987654321║");

printf("═══════════════════════════════════╗║");

printf("↑╔══════════════╝║");

printf("便道停车区→║12345║");

printf("╚══════════════════╝");

printf("停车场管理日志\n\n");

printf("时间车牌号进

(1)/出(0)车位(B便道P停车场)收费(元)");

}

//打印日志记录

voidprintlog(Timet,intn,intio,charab,intpo,doublef)

{

jy++;

gotoxy(jx,jy);

//printf("时间车牌号进

(1)/出(0)车位(B便道P停车场)收费(元)");

if(io==0)

printf("/%2.1f",f);

gotoxy(jx,jy);

printf("/%d/%c:

%d",io,ab,po);

gotoxy(jx,jy);

printf("%d:

%d/%d",t.hour,t.minute,n);

}

voidprintstop(inta,intnum,intx0,inty0)

{

staticchar*car="【█】";

//intx0=0,y0=23;

intx=0,y=28;

if(a==0)

{

x=(num+6)*6;

for(;x0<72;x0++)

{

gotoxy(x0,y0);printf("%s",car);Sleep(30);

gotoxy(x0,y0);printf("");

}

for(;y0

{

gotoxy(x0,y0);printf("%s",car);Sleep(100);

gotoxy(x0,y0);printf("");

}

for(;x0>x;x0--)

{

gotoxy(x0,y0);printf("%s",car);Sleep(50);

gotoxy(x0,y0);printf("");

}

gotoxy(x,y);

printf("%s",car);

}

else

{

x=(12-num)*6;

y=y-3;

for(;x0

{

gotoxy(x0,y0);printf("%s",car);Sleep(30);

gotoxy(x0,y0);printf("");

}

gotoxy(x,y);

printf("%s",car);

}

}

voidprintleave(inta,intpo,intnum)

{

staticchar*car="【█】";

intx0=0,y0=23;

intx=0,y=28;

inti;

if(a==-1)

{

x=(12-po)*6;

y=y-3;

gotoxy(x,y);printf("");

gotoxy(x,y-2);printf("%s",car);

Sleep(100);

if(12>num)

{

gotoxy((12-num)*6,y);

printf("");

}

gotoxy(x,y);printf("%s",car);

for(;x>x0;x--)

{

gotoxy(x,y-2);printf("%s",car);Sleep(30);

gotoxy(x,y-2);printf("");

}

}

else

{

i=num+1;

for(;num>po;num--)

{

x=(num+6)*6;y=28;

for(;x<72;x++)

{

gotoxy(x,y);printf("%s",car);Sleep(30);

gotoxy(x,y);printf("");

}

for(;y>21;y--)

{

gotoxy(x,y);printf("%s",car);Sleep(50);

gotoxy(x,y);printf("");

}

for(;x>(i-num+6)*6;x--)

{

gotoxy(x,y);printf("%s",car);Sleep(30);

gotoxy(x,y);printf("");

}

gotoxy(x,y);printf("%s",car);

}

x=(po+6)*6;y=28;

for(;x<72;x+

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2