精华内容
下载资源
问答
  • 停车场管理系统c语言
    2021-05-25 05:00:44

    停车场管理系统c语言摘要

    学号

    《》课程设计报告停车场管理系统专业:计算机科学与技术班级:15级计科<1>班姓名:胡玉玉指导教师: 陈广宏成绩:

    计算机学院

    2016 年 4月 25 日

    目 录

    1. 设计内容及要求1

    1.1课程设计内容1

    1.2课程设计的要求2

    2概要设计3

    2.1设计思路3

    2.2程序基本框架结构图4

    3设计过程或程序代码5

    3.1主要程序代码及解释5

    4设计结果与分析13

    4.1程序运行结果截图与分析13

    5 参考文献16

    设计内容及要求

    1.1课程设计内容

    ①通过本次课程设计,强化上级动手能力,在理论和实践的基础上巩固 《C语言程序设计》课程的学习内容。掌握软件设计的基本方法。

    ②熟悉C语言的基本内容从而掌握C语言的基本知识以及了解C语言的基本编写及运行。

    ③了解程序的分模块编写并对程序的每个模块进行详细的设计并且能理解一般C语言编写的程序。

    ?④掌握书写程序设计说明文档的能力。

    ⑤熟悉C程序设计的开发环境及C程序的调试过程

    1.2 课程设计的要求?

    ①分析课程设计题目的要求。

    ?②写出详细设计说明。

    ?③编写程序代码,调试程序使其能正确运行。

    ?④设计完成的软件要便于操作和使用。

    ?⑤设计完成后提交课程设计报告。

    2.概要设计

    2.1设计思路

    停车场是一个可停放n辆汽车的狭长通道,并只有一个大门可供汽车进出,汽车在停车场内按车辆到达的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),如车长内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用,以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理.每一组输入数据包括三个数据项:汽车”到达”或”离去”信息,汽车牌照号码以及到达或离去的时刻(到达或离去的时刻也可用计算机控制).对每一组输入数据进行操作后的输入信息为:如是车辆到达,则输入汽车在停车场。

    3.设计过程或程序代码

    3.1主要程序代码及解释

    #include

    #include

    #include

    #define N 3

    #define MAX 50

    #define sign 10

    #define price 10

    char part[N][sign];

    char Rpart[MAX][sign];

    char time[N][20];

    int P,R;

    partadd(char *t)

    {

    strcpy(&part[P][0],t);

    printf("请输入时间:\n");

    scanf("%s",&time[P][0]);

    getchar();

    P++;

    }

    Rpartadd(char *t)

    {

    if(R

    {

    strcpy(&Rpart[R][0],t);

    R++;

    }

    else

    {

    printf("过道已满无法停车\n");

    }

    }

    newcar()

    {

    char temp[sign];

    printf("请输入车牌号码:");

    scanf("%s",temp);

    getchar();

    if(P

    {

    partadd(temp);

    }

    else if(R

    {

    Rpartadd(temp);

    }

    }

    int timed(char *t1,char *t2)

    {

    int i=0,y=0,x=0,j,n=1;

    while(1)

    {

    if(t1[i]=='.')

    {

    for(j=i-1;j>=0;j--)

    {

    y=y+(t1[j]-'0')*(60*n);

    n=n*10;

    }

    while(1)

    {

    if(t1[j]==NULL)

    {

    for(n=1;j>i;j--)

    {

    y=y+(t1[j]-'0')*n;

    n=n*10;

    }

    break;

    }

    j++;

    }

    i=0;

    while(1)

    {

    if(t2[i]=='.')

    {

    更多相关内容
  • 本资源是数据结构的课设内容,做的是停车场管理系统,使用C语言结合EasyX图形库做了一个简单的界面。
  • 主要为大家详细介绍了C语言实现简单停车场管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要为大家详细介绍了C语言源码实现停车场管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 停车场管理系统完整代码
  • 设计内容:  设有一个可以停放n辆汽车的狭长停车场,它只有一个...编制一程序模拟该停车场管理。 设计要求: (1) 符合课题要求,实现相应功能; (2) 要求界面友好美观,操作方便易行;(3) 注意程序的实用性、安全性;
  • 停车场管理系统C语言课程设计》由会员分享,可在线阅读,更多相关《停车场管理系统C语言课程设计(27页珍藏版)》请在人人文库网上搜索。1、计算机科学与技术系课程设计报告20 20 学年第 学期 课程C语言课程设计课程...

    《停车场管理系统C语言课程设计》由会员分享,可在线阅读,更多相关《停车场管理系统C语言课程设计(27页珍藏版)》请在人人文库网上搜索。

    1、计算机科学与技术系课程设计报告20 20 学年第 学期 课程C语言课程设计课程设计名称停车场管理系统学生姓名学号专业班级指导教师目录1.需求分析32.算法设计32.1总体设计思想 32.2总体设计框图 33.调试及测试 43.1 主界面及功能列表 43.2 停车函数getin()的实现 63.3 取车函数getout()及biandao()的实现 103.4 存车信息输出函数xinxi()的实现 133.5文件保存 144.用户手册 165.问题与不足 166.小结 17附录1:程序清单17附录2:参考文献261 需求分析本次设计,仅为一个简单的小型停车场管理系统。采用C语言编写,主要强调车辆。

    2、的进站和出站操作,以及车场和通道之间的相互关系。根据车场内车道狭长且为一边开口的特点,将车库和便道中的车辆信息记录在一个结构体数组中,这样设计可以方便的记录车辆的数据,读取和删除。本程序中的数据对象是汽车,为使操作更方便,将给每辆进车道的汽车编号,根据编号出场。其中,还包括入场时间、出场时间、收取费用等项2 算法设计2.1 总体设计思想为了实现车库中有空车位汽车停入车库,车库满则停入便道的要求,在整个设计中使用了一个结构体数组,这样可以使车库和便道的停泊车辆信息储存在连续的结构体中。在本设计中,设车库的容量为N,便道的容量为M,当停泊的车辆不超过车库和便道容量总和的情况下,为使每个车位都有相对。

    3、应的存储空间,则设结构体数组的容量为M+N,因此在整个结构体数组carN+M中,car0至carN-1对应储存车库中各车位的车辆信息,carN至carN+M-1对应储存便道中各车位的车辆信息。为判断车库和便道各车位上是否有车停入,另设两个一维数组aN与bM,并赋初值为0,表示车位为空,即没有车辆停入。当有车停入车库或便道中时,数组aN和bM中相对应的数值被赋值为1,表示有车停入;当停在车位中的车离开时,数组aN和bM中相对应的数值由1赋值为0,表示车已经离开。设计中所设的结构体储存信息包括存入汽车的车牌号,汽车停泊的车位,停入车库中汽车的时间,其中时间记录方法采用系统自动调用当期时间的时间函数。

    4、,当车库汽车离开车位后,系统自动记录当前时间,减去汽车存入的时间,按每分钟存车的价格自动计算出汽车存入的费用。此外,本设计还包括车辆信息保存等功能。2.2 总体设计框图停车场管理系统车库信息停车取车信息保存退出3.调试及测试3.1 主界面及功能列表系统首先调用菜单函数进入系统主界面,之后运用switch函数体进行功能选择。当输入为1时,调用车库信息函数xinxi(),当输入为2时,调用停车函数geyin(),当输入为3时,调用取车函数getout(),当输入为4时,调用信息保存函数xxbc(),当输入为5时,退出系统。如图1图1主界面及功能列表截图部分程序代码:void menu() int 。

    5、n,w; do printf(nnn);printf(ttt 欢迎进入停车场管理系统n);puts(tt *MENU*nn); puts(tt *t 1.车库信息 t *); puts(tt *t 2.有车进入 t *); puts(tt *t 3.有车离开 t *);puts(tt *t 4.信息保存 t *);puts(tt *t 5.退出系统 t *);puts(nntt *n); printf(tt请在(1-5)中选择:); scanf(%d,&n);system(cls);if(n4)/*对选择的数字作判断*/ w=1; getchar(); else w=0; while(w=1)。

    6、; switch(n) case 1:xinxi();break;/*初始化函数*/ case 2:getin();break;/*车辆进入函数*/ case 3:getout();break;/*车辆离开函数*/case 4:xxbc();break;case 5:printf(nnnttt感谢您对本产品的支持n);exit(0);/*退出*/ 3.2停车函数getin()的实现用停车函数后,系统首先要求用户输入要停入的汽车的车牌号。图2停车功能中等待用户输入车牌界面的截图当系统接收到用户输入的车牌号后,系统首先判断车库中是否有空余的车位。这个功能是通过使用一维数组aN实现的,数组的初始值为。

    7、0,代表车库中各个车位没有汽车停入,每当有汽车停入车库的车位时,其相对应的数组数值由0变为1,代表汽车的停入。判断有无空车位,系统执行一个for循环,由a0执行到aN-1,若其中有数值为0,则代表有空车位汽车可以停在车库内,若数组aN的值都为1,则车库已满,汽车需要停在便道上等候。图3 车辆停入车库空车位显示界面截面图3车库有空位,汽车可以停入空位中.图4车库已满,汽车需停在便道上等候车库未满流程图如下返回主函数j #include #include#define N 3/*预设停车场有3个车位*/ #define M 3/*预设便道有3个出位*/ #define D 0.1/*预设车辆停车费。

    8、0.1元每小时*/#define XUHAO 1000/*预设车辆次序号。不管车辆到达时停在场内或便道,均依次设置一个次序号,由1开始*/ void menu();/菜单函数void getin();/车辆进入函数 void getout();/车辆离开函数void biandao();/便道车辆处理函数void xinxi();/车辆信息查询函数void xxbc();/信息保存函数int aN=0,0,0;/将数组中的各个元素初始化为0int bM=0,0,0;int j=0,t;struct car/*车辆信息*/ char car_num6;/*车辆次序号*/ int car_inh;。

    9、/*车辆到达时间(时)*/ int car_inm;/*车辆到达时间(分)*/ int car_stay;/*车辆停放位置*/ carXUHAO;void main()/*主函数*/ menu();/*菜单函数*/ void menu()/*菜单函数*/ int n,w; do printf(nnn);printf(ttt 欢迎进入停车场管理系统n);puts(tt *MENU*nn); puts(tt *t 1.车库信息 t *); puts(tt *t 2.有车进入 t *); puts(tt *t 3.有车离开 t *);puts(tt *t 4.信息保存 t *);puts(tt *t。

    10、 5.退出系统 t *);puts(nntt *n); printf(tt请在(1-5)中选择:); scanf(%d,&n);system(cls);if(n5)/*对选择的数字作判断*/ w=1; getchar(); else w=0; while(w=1); switch(n) case 1:xinxi();break;/*初始化函数*/ case 2:getin();break;/*车辆进入函数*/ case 3:getout();break;/*车辆离开函数*/case 4:xxbc();break;case 5:printf(nnnttt感谢您对本产品的支持n);exit(0);。

    11、/*退出*/ void getin()/车辆进入函数if(jN)/从0开始计停入停车场的车的数量int i;for(i=0;iN;i+) if(ai=0)/有车停入时,赋值为1j=i;ai=1;break;printf(nntt请输入该车的车牌号(如“n12354”):);scanf(%s,&cari.car_num);cari.car_stay=j; printf(ntt该车应该停在停车场内第%d位(从1道开始记)n,j+1); printf(ntt请输入该车进停车场时刻(24小时制,如3:20):); scanf(%d:%d,&cari.car_inh,&cari.car_inm); j+。

    12、;printf(ntt车已成功停入n);system(pause);system(cls);menu();elsebiandao();void getout()/*取车函数*/int i,g,w;char p6;int outh,outm,min1,min2;int stoph,stopm;double cost;printf(ntt请输入要驶出的车的车牌号码 );scanf(%s,&p);for(i=0;iN;i+)if(!strcmp(cari.car_num,p)/查找要取出的车的车牌号printf(ntt请输入该车出停车场时刻(24小时制,如3:20):);scanf(%d:%d,&o。

    13、uth,&outm);printf(ntt车牌号%s驶出车库%d位置n,p,cari.car_stay);min1=outh*60+outm;min2=(cari.car_inh)*60+cari.car_inm;/将停车和取车的时间全部转化为分钟单位cost=(min1-min2)*D;/停车应收取的费用stopm=(min1-min2)%60; stoph=(min1-min2)/60; /车在车库中停留的时间(时,分)printf(tt停留%d小时%d分钟n,stoph,stopm);printf(tt您应缴费用:%f元nnnnn,cost);g=i+1;if(b0=1) printf(。

    14、nntt请让便道上的第一辆车%s进场n,carN.car_num);printf(tt请输入该车出停车场时刻(24小时制,如:3:20):n);scanf(%d:%d,&carN.car_inh,&carN.car_inm); printf( tt停入车辆情况n);printf(tt车牌号%sn,carN.car_num);printf(tt车库位置%dn,carN-1.car_stay);for(g=i+1;g=N+M;g+)/系统根据记录的被提取车的车位g执行一个循环体,将carg的数据赋给carg-1,之后g+。使后一个结构体的数据赋给它的上一个,实现取车删除数据的功能.strcpy(c。

    15、arg-1.car_num,carg.car_num);carg-1.car_stay=carg.car_stay-1;carg-1.car_inh=carg.car_inh;carg-1.car_inm=carg.car_inm;for(w=0;wM;w+)bi=bi+1;/将便道的车位停入数据进行覆盖system(pause);menu(); printf(没有你要查询的车辆n);system(pause);menu();void biandao()int t,i;for(i=0;i=M;i+)if(i=M)printf(对不起,便道已满n);menu();else if(bi=0)t=i。

    16、+N;bi=1;break; printf(nn请输入该车的车牌号(如“n12354”):);scanf(%s,&cart.car_num);printf(车库已满,车辆停在便道的%d位n,i+1);printf(停入车辆情况:n);printf(车牌号:%sn,cart.car_num);printf(车位置:%dn,i+1);/*便道上的车位,从1开始记,在车位位置上的车对应cart.car_num*/system(pause);system(cls);menu();void xinxi()if(a0!=0)int i,j;printf(车库信息n);printf(tt车位编号t车牌号t停。

    17、入时间n);for(i=0;iN;i+)printf(tt %d t%st%d:%dn,i+1,cari.car_num,cari.car_inh,cari.car_inm);printf(便道信息n);printf(tt车位编号t车牌号n);for(j=0;jM;j+)printf(tt %d t%sn,j+1,carj+N.car_num);system(pause);menu();elseprintf(当前车库无车n);system(pause);menu();void xxbc()/*信息保存*/int i;FILE *fp;fp=fopen(car.txt,a+);/*写入*/fpr。

    18、intf(fp,车库信息n);fprintf(fp,tt车位编号t车牌号t停入时间n);for(i=0;iN;i+) fprintf(fp,tt%dtt%st%d:%dn,i+1,cari.car_num,cari.car_inh,cari.car_inm);fprintf(fp,便道信息n);fprintf(fp,tt车位编号t车牌号n);for(j=0;jM;j+) fprintf(fp,tt%dtt%sn,j+1,carj+N.car_num);printf(nnn信息保存成功nn);system(pause);fclose(fp);menu();附录2 参考文献1 黄明等编著C语言课程。

    19、设计北京:电子工业出版社2 郭翠英编著C语言课程设计案例精编北京:中国水利水电出版社3 宁正元数据结构(c语言) 南京:东南大学出版社。2000年6月第1版4 严蔚敏等 数据结构(c语言版) 北京:清华大学出版社,1997年4月第1版5 谭浩强编著C程序设计题解与上机指导(第3版) 北京:清华大学出版社6 谭浩强编著C程序设计(第3版) 北京:清华大学出版社7 洪国胜 等编著 C+ Builder程序设计轻松上手北京:清华大学出版社8 宁正元数据结构(c语言) 南京:东南大学出版社。2000年6月第1版9 严蔚敏等 数据结构(c语言版) 北京:清华大学出版社,1997年4月第1版。10 明日科技 编著Visual C+程序开发范例宝典北京:人民邮电出版社。11 胡学钢等数据结构算法设计指导北京:清华大学出版社,1999年 第1版。12 刘大有数据结构(面向21世纪课程教材) 北京:高等教育出版社。2001年6月第1版。13胡学钢等数据结构算法设计指导北京:清华大学出版社,1999年 第1版。

    展开全文
  • 实现了对车辆的入库登记、对停车场内车辆的查询和计费、对车辆的出库结算等功能
  • 停车位信息有漏洞,未验收需要,定义4分钟为一个小时!
  • 停车场管理系统 C语言 停车场管理系统 C语言 停车场管理系统 C语言
  • 停放的车辆可以是汽车、自行车、电驴。人物分为学生和管理员,并保存在本地文本中。管理员可以修改信息,学生可以查看停车场信息,并在随机提供的车位停车。
  • 设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。...编制一程序模拟该停车场管理
  • 停车场管理系统c语言.doc
  • 停车场管理系统C语言实现.doc
  • 课程设计任务书 学生姓名 专业班级软件2101计算2101 指导教师黄启荃 钱小红 工作单位 华夏学院计算机教研室 设计题目用C语言实现停车场管理程序的设计 初始条件 1栈与队列的建立和操作. 2带TC或VC的计算机系统 要求...
  • T1123-6-鲁杰-停车场管理系统 C语言课设(可编辑)
  • //在车库里的停车时间 int probability; //存储车辆离去的概率,1,2,3,4级数一次增大 double cost; //该次停车应付费用 char time_insert; //进库时间 char time_left; //出库时间, 出库的时间等于进库时间加出库时...

    杭电软件工程学院程序设计实践

    #include

    #include

    #include

    #include

    #include

    #include

    #define PASSWORD "000"

    #define PRICE 5.0

    #define END 24

    #define SPEED_CAR 150

    #define SELCET 300

    #define EXIST 1 //EXIST代表当前车位有车

    #define NO 0 //NO 代当前车位表没车

    /*

    创建一个二维数组,模拟车库的平面示意图

    创建两个队列,模拟进库和出库的队列

    车辆的队列与出库之间通过坐标进行联系

    车位有空,但有既有车库又有车出库时,

    遵照先出后进的原则,

    即,出库的优先级高于入库的优先级*

    */

    struct Coordinate

    {

    int x;

    int y;

    };

    struct Car

    {

    int number; //车牌号

    int time_inner; //在车库里的停车时间

    int probability; //存储车辆离去的概率,1,2,3,4级数一次增大

    double cost; //该次停车应付费用

    char time_insert; //进库时间

    char time_left; //出库时间, 出库的时间等于进库时间加出库时的probability

    Coordinate local; //当前车辆所在/要出的库编号

    Car *next; //由于车辆数并不确定,因此用链式存储

    };

    int Time=0;

    double Sum_Money=0.0;

    bool Garage[2][10]; //用10*2的方格模拟车库的平面示意图

    Car *Head_Out=(Car *)malloc(sizeof(Car)); //在车库里,准备出来的车队

    Car *Head_In=(Car *)malloc(sizeof(Car)); //在外面排队,准备进库的车队

    /* 车库的平面示意、车队的头指针、收益设为全局变量,这样方便各函数的调用*/

    void gotoxy(int x, int y)

    {

    COORD pos;

    pos.X = x;

    pos.Y = y;

    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);

    }

    int Insert_Password(int flag)

    {

    char key[20],c;

    int count=0;

    if(flag)

    {

    system("cls");

    puts("\n温馨提示,你的输入密码有误\n\n");

    }

    printf("\n请输入密码 : ");

    while(c=getch(),c!='\r')

    {

    if(c==8)

    {

    system("cls");

    if(flag)

    printf("\n温馨提示,你的输入密码有误\n\n");

    printf("\n请输入密码 : ");

    if(count>0)

    {

    key[--count]='\0';

    for(int i=0;i

    printf("●");

    }

    }

    else if(count>=0)

    {

    printf("●");

    key[count++]=c,key[count]='\0';

    }

    }

    if(strcmp(key,PASSWORD)==0)

    {

    system("cls");

    gotoxy(35,5);

    puts("密码正确");

    Sleep(2000);

    return 1;

    }

    else return Insert_Password(1);

    }

    void Enter()

    {

    for(int i=0;i<15;i++)

    {

    gotoxy(35,5);

    puts("正在登录\n");

    Sleep(200);

    for(int j=0;j

    {

    if(!j)

    printf("\t\t\t■");

    else printf("■");

    }

    }

    system("cls");

    }

    void Get_Time() //获取进出车库的时间

    {

    time_t rawtime;

    struct tm *timeinfo;

    time (&rawtime);

    timeinfo = localtime (&rawtime);

    gotoxy(61,1);

    printf("%d",timeinfo->tm_hour);

    gotoxy(66,1);

    printf(

    展开全文
  • 停车场管理系统 课程设计 C语言

    万次阅读 多人点赞 2019-06-28 16:53:28
    停车场管理系统课程设计 数据结构 C语言 设计内容: 设有一个可以停放n(n>=5)辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一...

    停车场管理系统课程设计 数据结构 C语言

    设计内容:

    设有一个可以停放n(n>=5)汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在他之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆在依原来的次序进场。每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。如果停留在便道上的车 未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制模拟该停车场的管理的程序。

    设计思路:

    我采用数组来模拟栈和队列。分析设计内容可知:本设计需要两个栈、分别是停车栈和缓冲栈、两个队列分别是停车队列和临时队列。
    任务要求细节分析如下:
    (1)狭长停车场的容量n是可变的,所以此处要宏定义一个MAX_STOP,方便在头部修改n的值。
    (2)只有一个大门可出入,根据实际情况分析满足FILO的特性,那么需要用到栈的数据结构。
    (3)当停车场内车辆已满时需要后来车辆停在便道上,分析满足FIFO的特性,那么在此需要用到循环队列的数据结构。
    (4)停车场内的车辆离开停车场时需要根据停放时间进行计费,则需要调用<time.h>库的函数,保存车辆的进出时间,并且设立一个容易更改的停车单价,用宏定义Price,方便在头部修改。
    (5)如果停放在便道上的车辆为进入停车场就要收费,则需要追加一个队列来模拟车辆进入临时队列,为该车辆让路。
    (6)书写一个美观大方的菜单界面,可以展示操作详情。

    废话不多说了,求大佬轻喷,时间仓促难免有误,甩代码了:
    注释删减版(可看文末):

    //
    // Create by Ep on 2019/6/28 
    //
    #include <stdio.h>
    #include <stdlib.h> 
    #include <windows.h>		
    #include <string.h>			
    #include <time.h>			
    
    #define Price     0.1		 
    #define MAX_STOP  5
    #define MAX_PAVE  4   
    
    
    typedef struct{
    	int TimeIn;				
    	int TimeOut;			
    	char ct[50];
    	char Lincense[10];		
    }Car;
    
    typedef struct{
    	Car Stop[MAX_STOP];		
    	int top;			
    }Stopping;
    
    typedef struct{
    	Car Pave[MAX_PAVE];		
    	int count;				
    	int front, rear;		
    }Pavement; 
    
    typedef struct{
    	Car Let[MAX_STOP];		
    	int top;				 
    }Buffer;						
    
    typedef struct{					
    	Car Wait[MAX_PAVE];		
    	int count;				
    	int front, rear;		
    }Waiting; 
    
    Stopping s;
    Pavement p;
    Buffer   b;
    Car      c;
    Waiting  w;
    char     C[10];
    
    void Car_Come();	
    void Car_Leave();		
    void Stop_To_Pave();	
    void Stop_To_Buff();		
    void Leave_Pavement();		
    void DisPlay();			
    void DisPlayPave();			
    void Welcome();				
    void SmallWelcome();
    void Car_Leave_menu();
    void Search();
    
    
    void Car_Come(){						 
    	printf("请输入即将停车的车牌号:");
    	scanf("%s", &C);		
    	int i = s.top;
    	while(i != -1){
    		if(0 == strcmp(s.Stop[i].Lincense, C)){
    			printf("输入有误,此汽车已存在!\n");
    			return;
    		}
    		i--;
    	}
    	int k = MAX_PAVE;
    	while(k != 0){
    		if(0 == strcmp(p.Pave[k].Lincense, C)){
    			printf("输入有误,此汽车已存在!\n");
    			return;
    		}
    		k--;
    	}
    	if (s.top >= MAX_STOP - 1){
    		Stop_To_Pave();			
    	}
    	else{
    		time_t t1;
    		long int t = time(&t1);	
    		char* t2;				
    		t2 = ctime(&t1); 
    		s.Stop[++s.top].TimeIn = t;
    		strcpy(s.Stop[s.top].ct, t2);
    		strcpy(s.Stop[s.top].Lincense, C);
    		printf("牌照为%s的汽车停入停车位的%d车位,当前时间:%s\n", C, s.top+1, t2);
    	}
    }
    
    
    void Search(){
    	printf("请输入要搜索的车牌号:\n");
    	scanf("%s", &C);
    	int i, j, k, flag = 0;        
    	time_t t1;
    	long int t = time(&t1);
    	if(s.top >= 0){
    		for(i = s.top; i >= 0; i--){
    			if(0 == strcmp(s.Stop[i].Lincense, C)){
    			printf("此汽车在停车场内,信息如下:\n");
    			printf("\t车牌号\t\t停车位序\t当前所需支付金额\t进入时间\t\n");
    			printf("\t%s\t第%d个\t\t%0.f元\t\t\t%s", s.Stop[i].Lincense, i+1, Price * (t - s.Stop[i].TimeIn), s.Stop[i].ct);
    			flag = 1;
    			break;
    			} 
    		}
    	}
    	if(flag == 0 && p.count > 0){		 
    		i = p.front, k = 1, j = p.rear;			
    		while(i != j ){
    			if(0 == strcmp(p.Pave[i].Lincense, C)){
    				printf("此汽车在停便道上\n");
    				printf("\t车牌号\t\t停车位序\n");
    				printf("\t%s\t第%d个",p.Pave[i].Lincense, k);
    				flag = 2;
    				break;
    			}
    			i++;
    			k++;
    		}	
    	}
    	if(0 == flag)
    		printf("停车场内外不存在该汽车信息!\n");
    	
    }
    
    
    void Car_Leave(){						
    	printf("请输入即将离开的车牌号:");
    	scanf("%s", &C);
    	int i, j, flag = 1, flag2 = 1;
    	if(s.top >= 0){							
    		for(i = s.top; i >=0; i-- ){		
    			flag = flag * strcmp(s.Stop[i].Lincense, C);
    			i--;
    		}
    	}
    
    	if(0 == flag){							
    		Stop_To_Buff();							
    	}	
    
    	if(flag !=0 /*&& flag2 != 0*/)				
    	printf("停车场内没有该汽车的信息!\n"); 
    }
    
    
    void Leave_Pavement(){
    	int i, j, flag = 0;
    	printf("请输入即将离开的车牌号:");
    	scanf("%s", &C);
    	if(p.count  <= 0){
    		printf("便道上不存在汽车!\n");
    		return;
    	}
    	while(p.count > 0){					 
    		i = p.front; 
    		if(0 == strcmp(p.Pave[i].Lincense, C)){
    			break;	
    		}
    		printf("牌照为%s的汽车暂时从便道进入临时便道\n", p.Pave[p.front].Lincense);
    		strcpy(w.Wait[w.rear].Lincense, p.Pave[p.front].Lincense);
    		p.front = (p.front + 1) % MAX_PAVE;	
    		w.rear = (w.rear + 1) % MAX_PAVE;	
    		w.count++;							
    		p.count--;							
    	}
    	printf("\n牌照为%s的汽车从便道上开走,不收取任何费用!\n\n", p.Pave[i].Lincense); 
    	p.front = (p.front + 1) % MAX_PAVE;
    	p.count--;
    	while(p.count > 0){		
    		printf("牌照为%s的汽车暂时从便道进入临时便道\n", p.Pave[p.front].Lincense);
    		strcpy(w.Wait[w.rear].Lincense, p.Pave[p.front].Lincense);
    		p.front = (p.front + 1) % MAX_PAVE;
    		w.rear = (w.rear + 1) % MAX_PAVE;
    		w.count++;
    		p.count--;
    	}
    	while(w.count > 0){		
    		printf("\n牌照为%s的汽车返回便道\n",w.Wait[w.front].Lincense);
    		strcpy(p.Pave[p.rear].Lincense, w.Wait[w.front].Lincense);
    		w.front = (w.front + 1) % MAX_PAVE;	 
    		p.rear = (p.rear + 1) % MAX_PAVE;
    		w.count--;
    		p.count++;
    	}
    }
    
    
    void Stop_To_Buff(){
    	while (s.top >= 0){	
    		if(0 == strcmp(s.Stop[s.top].Lincense, C)){
    			break;
    		}
    		strcpy(b.Let[b.top++].Lincense, s.Stop[s.top].Lincense);
    		printf("牌照为%s的汽车暂时退出停车场\n", s.Stop[s.top--].Lincense);
    	}
    	printf("牌照为%s的汽车从停车场开走\n", s.Stop[s.top].Lincense);	 
    	time_t t1;
    	long int t = time(&t1);
    	s.Stop[s.top].TimeOut = t;
    	char* t2;
    	t2 = ctime(&t1);
    	printf("离开时间%s\n需付费%.0f元\n", t2, Price * (s.Stop[s.top].TimeOut - s.Stop[s.top].TimeIn));
    	s.top--;
    	while(b.top > 0){
    		strcpy(s.Stop[++s.top].Lincense, b.Let[--b.top].Lincense);
    		printf("牌照为%s的汽车停回停车位%d车位\n", b.Let[b.top].Lincense, s.top+1);
    	}
    	while(s.top < MAX_STOP-1){
    		if(0 == p.count)
    			break;
    		else{
    			strcpy(s.Stop[++s.top].Lincense, p.Pave[p.front].Lincense);
    			printf("牌照为%s的汽车从便道中进入停车位的%d车位\n", p.Pave[p.front].Lincense, s.top+1);
    			time_t t1;
    			long int t = time(&t1);
    			char* t2;
    			s.Stop[s.top].TimeIn = t;
    			p.front = (p.front + 1) % MAX_PAVE;
    			p.count--;
    		}
    	}
    }
    
    void Stop_To_Pave(){
    	if(p.count > 0 && (p.front == (p.rear + 1) % MAX_PAVE))
    		printf("便道已满,请下次再来!\n");
    	else{
    		strcpy(p.Pave[p.rear].Lincense, C);
    		p.rear = (p.rear + 1) % MAX_PAVE;
    		p.count++;
    		printf("牌照为%s的汽车停入便道上\n", C);
    	}
    }
    
    
    void DisPlay(){
    	int i = s.top;
    	if(-1 == i)
    		printf("停车场目前为空\n");
    	time_t t1;
    	long int t = time(&t1);
    	printf("\t车牌号\t\t停放时间\t当前所需支付金额\t停放位序\n");
    	while(i != -1){
    		printf("\t%s\t%d分%d秒\t\t%.0f元\t\t\t第%d个\n", s.Stop[i].Lincense, 
    		(t - s.Stop[i].TimeIn)/60,(t - s.Stop[i].TimeIn) % 60, Price * (t - s.Stop[i].TimeIn), i+1);
    		i--;
    	}
    }
    
    
    void DisPlayPave(){
    	int i = p.front;
    	int k = 1;			
    	if(0 == p.count)  
    	printf("便道目前为空\n");
    	printf("\t车牌号\t\t停放位序\n");
    	while(i != p.rear && k <= p.count){  
    		printf("\t%s\t第%d个\n", p.Pave[i].Lincense, k++);
    		i = (i + 1) % MAX_PAVE;
    	}
    }
    
    
    void Car_Leave_menu(){
    	while(1){
    		system("cls");	
    		SmallWelcome();	
    		int i, cho;
    		scanf("%d", &i);
    		if(1 == i)  Car_Leave();
    		if(2 == i)  Leave_Pavement();
    		if(3 == i)  return;
    		printf("\n返回请输入0\n");
    		top:
    			scanf("%d", &cho);
    		if(0 == cho){
    			continue;
    		}
    		else{
    			printf("您的输入有误,请重新输入\n");
    			goto top;
    		}
    	}	
    } 
    
    void SmallWelcome(){
    	printf ("\t*******************目前停车场状况***********************\n");
        printf ("\t停车场共有%d个车位,当前停车场共有%d辆车,等候区共有%d/%d辆车\n",  
        MAX_STOP, s.top+1, (p.rear + MAX_PAVE - p.front) % MAX_PAVE, MAX_PAVE-1);
        printf ("\t********************************************************\n");
        printf ("\t---------Welcome to Ep's Car Parking next time----------\n");
        printf ("\t*                                                      *\n");
        printf ("\t*                   1.从停车场内驶出汽车               *\n");
        printf ("\t*                   2.从便道上驶出汽车                 *\n");
        printf ("\t*                   3.退出子管理系统                   *\n");
        printf ("\t*请注意:从停车场内驶离的汽车按照%.0f元/分钟计费          *\n",60*Price);
        printf ("\t*望周知:从便道上驶离的汽车不收取费用                  *\n");
        printf ("\t*                                                      *\n");
        printf ("\t*------------------------------------------------------*\n");
        printf ("\t--------Press key(1/2/3) to continue the program--------\n");
    }
    void HideCursor(){
     CONSOLE_CURSOR_INFO cursor_info = {1, 0};
     SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
    }
    
    void Welcome(){
    	time_t rawtime;
        struct tm * timeinfo;
        time ( &rawtime );
        timeinfo = localtime ( &rawtime );
        printf ("\t\t\t%s", asctime(timeinfo) );
        HideCursor();
    	printf ("\t*******************目前停车场状况***********************\n");
        printf ("\t停车场共有%d个车位,当前停车场共有%d辆车,等候区共有%d/%d辆车\n",  
        MAX_STOP, s.top+1, (p.rear + MAX_PAVE - p.front) % MAX_PAVE, MAX_PAVE-1);
        printf ("\t********************************************************\n");
        printf ("\t--------------Welcome to Ep's Car Parking---------------\n");
        printf ("\t*                                                      *\n");
        printf ("\t*                   1.停车场停车信息显示               *\n");
        printf ("\t*                   2.便道上停车信息显示               *\n");
        printf ("\t*                   3.汽车到达停车场操作               *\n");
        printf ("\t*                   4.汽车离去停车场操作               *\n");
        printf ("\t*                   5.查找汽车功能                     *\n");
        printf ("\t*                   6.退出管理系统                     *\n");
        printf ("\t*收费标准:本停车场按照%.0f元/分钟计费,望周知            *\n",60*Price);
    	printf ("\t*                                                      *\n");
        printf ("\t*------------------------------------------------------*\n");
        printf ("\t---------Press key(1/2/3/4/5/6) to run program----------\n");
        
    }
    
    int main(){
    	s.top = -1;
    	b.top = 0;
    	p.rear = 0;
    	p.count = 0;
    	p.front = 0;
    	w.count = 0;
    	w.front = 0;
    	w.rear = 0;
    	while(1){
    		system("color 0B");
    		system("cls");	
    		Welcome();	
    		int i, cho;
    		scanf("%d", &i);
    		if(1 == i)  DisPlay();
    		if(2 == i)  DisPlayPave();
    		if(3 == i)  Car_Come();
    		if(4 == i)  Car_Leave_menu();
    		if(5 == i)  Search();
    		if(6 == i)  {
    						printf("\n欢迎您再次使用本系统呦 ε=ε=ε=(~ ̄▽ ̄)~\n\n");
    						break;
    					} 
    		printf("\n返回请输入0\n");
    		begin:	
    			scanf("%d", &cho);
    		if(0 == cho){
    			continue;
    		}
    		else{
    			printf("您的输入有误,请重新输入\n");
    			goto begin;	
    		}
    	}
    	return 0;
    }
    
    
    

    部分运行截图如下:
    图1 简洁美观大方的菜单界面
    在这里插入图片描述
    图2 功能3运行截图(停车栈未满)
    在这里插入图片描述
    图3 功能3运行截图(停车栈已满)
    在这里插入图片描述
    图4 功能3的运行截图(可检测输入错误)
    在这里插入图片描述
    图5 功能1运行截图
    在这里插入图片描述
    图6 功能2运行截图
    在这里插入图片描述
    图7 功能4美观简洁的子菜单
    在这里插入图片描述
    图8:从停车场中驶离
    在这里插入图片描述
    图9:从便道上驶离
    在这里插入图片描述

    970+收藏足以说明本文质量,
    如果不愿意自己研究代码实现细节,需要有注释版代码、流程图、1对1讲解请站内私信~ 君子爱财,取之有道。

    说在最后的话:编写实属不易,若喜欢或者对你有帮助记得点赞+关注或者收藏哦~

    展开全文
  • 用栈和队列实现的停车场管理系统。用栈模拟停车场,队列模拟便道,(如果停车场满了则暂时将车停于便道)。
  • 课程设计 停车场管理系统 C语言

    热门讨论 2011-08-13 10:32:21
    课程设计 停车场管理系统 C语言课程设计 停车场管理系统 C语言课程设计 停车场管理系统 C语言课程设计 停车场管理系统 C语言课程设计 停车场管理系统 C语言

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,208
精华内容 483
关键字:

停车场管理系统c语言

友情链接: complex.rar