停车场管理系统

一、实验目的

  1. 熟练掌握线性表的基本操作在顺序存储和链式存储上的实现;
  2. 以线性表的各种操作(建立、插入、删除、遍历等)的实现为重点;
  3. 掌握线性表的动态分配顺序存储结构的定义和基本操作的实现;
  4. 通过本章实验帮助学生加深对C语言的使用(特别是函数的参数调用、指针类型的应用和链表的建立等各种基本操作)
  5. List item

二、实验内容及要求

【问题描述】设有一个可以停放n辆汽车的停车场,它有二个大门可以供车辆进出,其中一个进,一个出。车辆到达停车场后任意选择空闲停车位停放,每个停车位按顺序编号。如果停车场已放满n辆车,则后来的车辆只能停在停车场大门外的便道上等待,一旦停车场里有车开走,则排在便道上的第一辆车就进入停车场。每辆车离开停车场时,都应根据其在停车场的逗留时间交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆顺序。编制一程序模拟停车场的管理。
[基本要求]
1、要求程序输出每辆车到达后的停车位置(停车场或便道上);
2、某辆车离开停车场时应交纳的费用和停留时间;
3、可以随时查看停车场及便道的状态。
4、可以随时查看空闲停车位。
概要设计

   停车场管理实验可以采用静态链表作为存储结构
输入形式:汽车模拟输入格式为:(到达\ 离去, 汽车牌照号码,到达\离去的时刻), 例如: (‘A’,1,5)  表示1号车在5时刻到达;(‘D’, 5,20) 表示5号车在20时刻离开;结束标志为: (‘E’,0,0)。
输出形式:若是车辆到达,则输出汽车在停车场或便道上,还有停车场或便道上有几辆车,以及停车场内还有几个空闲车位。若是车辆离开,则输出在停车场停留几个小时和需要收费多少。
测试数据:请输入停车场的收费标准(元/小时):2
请输入停车场容量:3
请依次输入车辆状态(A为到达,D为离开)车辆编号和时间
若结束程序请输入E 0 0:
A 1 1
该车在停车场,停车场已有1辆车,还有2个空闲车位
A 2 2
该车在停车场,停车场已有2辆车,还有1个空闲车位
A 3 3
该车在停车场,停车场已有3辆车,还有0个空闲车位
A 4 4
停车场已满,该车在便道上,便道上有1辆车
D 1 4
该车在停车场内共消费6元,共停车3小时
D 2 5
该车在停车场内共消费6元,共停车3小时
A 5 5
该车在停车场,停车场已有3辆车,还有0个空闲车位
E 0 0

源代码:

#include <iostream>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<algorithm>
using namespace std;
#define MAXSIZE 100
typedef int ElemType;
typedef long long ll;
int n, money, k = 0;
/**线性表的静态链表存储结构**/
typedef struct
{ElemType num, time;int cur;//为0时无指向
} component, Slinklist[MAXSIZE];
/**初始化备用空间**/
void InitSpace(component *L)
{/*将数组L中各分量链接成一个备用链表,L[0].cur代表头指针,0表示空指针*/for(int i = 0; i < MAXSIZE - 1; i++)L[i].cur = i + 1;L[MAXSIZE - 1].cur = 0;
}
/**从备用空间取得一个结点**/
int Malloc(component *space)
{/* 若备用链表非空,则返回分配的结点下标,否则返回0*/int i;i = space[0].cur;if(i) /* 备用链表非空 */{space[0].cur = space[i].cur;/* 备用链表的头结点指向原备用链表的第二个结点*/}return i;//返回新开辟结点的坐标
}
/**将空闲结点链接到备用链表中**/
void Free(component *space, int k)
{/* 将下标为k的空闲结点回收到备用链*/space[k].cur = space[0].cur;/* 回收结点的游标指向备用链表第一个结点*/space[0].cur = k;/* 备用链表的头结点指向新回收的结点 */
}
/**到达停车场**/
int arrive(int x, int y, int *p, component *space, int r)
{int t;while(r){if(space[r].num == x){printf("已经有该车辆,请检查是否输入有错\n");return 0;}r = space[r].cur;}t = Malloc(space);space[t].num = x;space[t].time = y;space[*p].cur = t;*p = t;space[t].cur = 0;k++;if(k <=n)printf("该车在停车场,停车场已有%d辆车,还有%d个空闲车位\n", k,n-k);if(k > n){printf("停车场已满,该车在便道上,便道上有%d辆车\n", k - n);}return 1;
}
/**离开停车场**/
int leave(int x, int y, component *space, int r)
{int biaoji = 0, m= r, sum = -1;while(r){sum++;if(x == space[r].num){if(sum > n){printf("该车未进停车场,该车在便道上\n");space[m].cur = space[r].cur;}else{printf("该车在停车场内共消费%d元,共停车%d小时\n", money * (y - space[r].time),y - space[r].time);space[m].cur = space[r].cur;}biaoji = 1;break;}m = r;r = space[r].cur;}if(biaoji == 0){printf("该车不在停车场和便道上\n");return 0;}else{k--;return 1;}
}
/**停车场管理目录**/
void menu(int m, int n)
{printf("\n");printf("停车场标准:\n\n");printf("                      停车场收费标准:%d元/小时\n\n", m);printf("                      停车场最多停%d辆车\n\n",n);printf("\t\t 1.输出每辆车到达后的停车位置(停车场或便道)\n\n");printf("\t\t 2.某辆车离开停车场时应交的费用和停留时间\n\n");printf("\t\t 3.查看停车场及便道的状态\n\n");printf("\t\t 4.查看空闲停车位\n\n");printf("********************************************************************************\n");
}
int main()
{int num, time, S, r;char c;Slinklist Space;InitSpace(Space);//初始化备用空间S = Malloc(Space); //生成S的头结点r = S; //r指向S的当前最后结点printf("请输入停车场的收费标准(元/小时):\n");scanf("%d", &money);printf("请输入停车场容量:\n");scanf("%d", &n);getchar();Space[1].cur = 0;menu(money, n);printf("请依次输入车辆状态('A'为到达,'D'为离开)车辆编号和时间\n若结束程序请输入E 0 0:\n");while(1){int R = S;scanf("%c %d %d", &c, &num, &time);getchar();if(c == 'E')break;if(c == 'A')arrive(num, time, &r, Space, R);if(c == 'D')leave(num, time, Space, R);}return 0;
}

数据结构实验一(C语言):停车场管理系统相关推荐

  1. C语言停车场管理系统

    C语言停车场管理系统 [问题描述] 某停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端最先到达的第一辆车停放在车 ...

  2. 计算机课程设计收费管理系统,数据结构课程设计报告---收费停车场管理系统

    数据结构课程设计报告---收费停车场管理系统 (20页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 XX大学计算机与电子 信息学院< ...

  3. [数据结构实践项目]变态的停车场管理系统

    [数据结构实践项目]变态的停车场管理系统 项目简介 设停车场是一个可以停放 n 辆汽车的南北方向的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在 ...

  4. 数据结构实验报告(一)学生信息管理系统

    大二计算机学生报告的汇总 进入计算机专业以来每天的必要工作就是写报告,按照老师的话来说,我们计算机专业的学生经过长时间的训练,以后出去写代码就跟喝水一样简单.在这里我将发表部分我写的报告,仅以此怀念我 ...

  5. 停车管理系统汽车到达汽车离去c语言,停车场管理系统 C语言实现

    用堆栈模拟实际的停车场管理系统 一.问题描述 1.实验题目: 设停车场是一个可停放 n 辆汽车的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最 ...

  6. 停车自助缴费模拟系统c语言,停车场管理系统C语言实现,全动画模拟.doc

    停车场管理系统C语言实现,全动画模拟 停车场管理系统C语言实现,全动画模拟#include#include#include#include#include#include#define PASSWOR ...

  7. c语言停车场管理系统课程设计,停车场管理系统—C语言课程设计

    <停车场管理系统-C语言课程设计>由会员分享,可在线阅读,更多相关<停车场管理系统-C语言课程设计(12页珍藏版)>请在人人文库网上搜索. 1.精品好资料学习推荐停车场管理系统 ...

  8. c语言停车场的收费管理系统,c语言停车场管理系统

    #include #include #include #include #define max 3 #define price 1 int b=1; typedef struct { int day; ...

  9. C语言停车场管理系统,使用栈和队列实现

    使用栈和队列实现的狭长停车场管理 1.情况说明:  (1)停车场结构为一条狭长的通道(可视为栈).  (2)若停车场内车辆已经停满,后来的车需要在路边排队等待,库内有车出来才能入库    (可视为队列 ...

最新文章

  1. python3.7.2安装教程-CentOS 7安装Python教程
  2. Android 页面多状态布局管理
  3. Spring Cloud实战小贴士:Zuul统一异常处理(二)
  4. linux内核的配置过程,linux内核的配置机制及其编译过程
  5. tfs 安装mysql.h_如何在centos5或centos7上编译安装tfs rcserver 模块?
  6. js基础知识汇总06
  7. wafer map格式转换_如何将谷歌地球KML图层转换为Mapinfo TAB图层?
  8. 好用的数据建模工具,探索中完善
  9. jsp中java实现弹窗_jsp用java弹窗
  10. 6月读书《有效的管理者》笔记
  11. websockets_WebSockets简介
  12. 技术文化和惨淡命运 —— 怀念中国雅虎----转载
  13. Power BI中字体使用微软雅黑
  14. app应用分发平台|苹果ios超级签名|APP封装打包|应用内测托管平台|iOS应用企业签名|Android应用上传内测-虾分发
  15. AUTOSAR技术分析报告
  16. 钉钉与wcp集成通知【原创】
  17. 【uni-app】只支持在微信小程序运行的 导入外部3d模型
  18. python主页_主页 - Python 宽客之道
  19. 2022-06-09 分析Android11 Settings里面电池信息获取流程,在里面添加显示电池温度的功能。
  20. linux拷贝U盘的文件

热门文章

  1. python 第三方库 xToolkit库工具使用详细教程香不香
  2. javascript中浏览器控制台console.log 输出图片,彩色字体,文字
  3. win7打开画图工具的操作步骤--win7w.com
  4. linux下命令行进入mysql出错
  5. RTX3060、RTX3060Ti、RTX2060和RTX2070 对比评测性能差距大吗
  6. 1080P、2k、4k、帧、帧率、fps
  7. 解构「私域流量」(二)|如何构建微信私域闭环?
  8. 领域驱动设计之领域模型_领域驱动的设计思维
  9. MAC连接数据库提示 zsh: command not found: mysql 的解决办法
  10. Python设置画布大小_我用Python的Seaborn库绘制17个超好看图表