一、实验目的

1.根据停车场管理系统的要求,利用结构化程序设计方法以及C的编程思想来完成系统的设计,使用数据结构中的栈、队列进行分析;

2.按功能定义函数或书写多个文件,进行模块化设计,各个功能模块用函数的形式来实现;

3.通过对参考代码的运行与调试,并且对以核心功能模块代码进行注释,真正掌握算法的思路与实现步骤。

二、实验内容

1.设计系统主界面,要求选择菜单对应数字进入相应功能:

2.要求对以下各个功能模块进行算法设计;

(1)车辆到达模块;

(2)车辆离开模块;

(3)列表显示模块;


Dec C++和VS编译器创建项目都要创建C++项目:
 VS:VS2019如何创建C++项目?_Gemini-zero的博客-CSDN博客_vs2019怎么创建c++项目打开VS2019,选择空项目后,点击下一步(如果没有找到空项目,说明你下载的时候没勾选C++模块)输入项目名,更改项目存放路径后,选择下一步选择C++文件,修改程序名称,点击添加找到“解决方案资源管理器”,右键点击源文件,选择添加新建项此时可以开始编写C++程序了...https://blog.csdn.net/qq_44364832/article/details/105820626Dec c++: https://jingyan.baidu.com/article/fd8044fae80db55031137a07.htmlhttps://jingyan.baidu.com/article/fd8044fae80db55031137a07.html


这是我的vs框架


1、车辆到达模块流程图:

2、车辆离开模块流程图:


 功能截图:


创建头文件 struct.h 定义数据类型和存储结构

#pragma once#ifndef __STRUCT_H__
#define __STRUCT_H__#define MAX 3 //车位数
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define Xtime 30 //30分钟Xprice块钱
#define Xprice 1 //Xtime分钟一块钱
#define Etime 0 //前5分钟免费
typedef int Status;// 车辆信息
typedef struct {char num[10];   // 车牌 long reach;       // 车辆到达时间 long leave;       // 车辆离开时间
}Car;// 车辆顺序栈:停车场Enter和临时停车Temp
typedef struct {Car* top;Car* base;int stacksize;//栈可用的最大容量
}SqStack;//链栈(临时)
typedef struct StackNode {Car data;struct StackNode* next;
}StackNode,*LinkStack;// 便道停车wait队列的结点
typedef struct QNode {Car data;QNode* next;
}QNode, * QueuePtr;// 便道停车链式队列
typedef struct {QueuePtr front; //队头指针QueuePtr rear; //队尾指针
}LinkQueue;#endif

创建 function_declare.h 头文件把所有的方法函数声明

#pragma once#ifndef __FUNCTION_H__
#define __FUNCTION_H__void SelectAll(SqStack S, LinkQueue Q);//查看车库Status InitTempStack(LinkStack& TempStack); //初始化临时栈
Status InitStack(SqStack & S);      // 初始化车辆栈
Status Push(SqStack& S, Car e); // 车辆进栈
Status Pop(SqStack& S, Car& e, LinkStack& TempStack);   // 车辆出栈
Car GetTop(SqStack& S); // 取栈顶元素
int StackEmpty(SqStack S);  // 车辆栈判空
int StackFull(SqStack S, Car e);    // 车辆栈判满Status InitQueue(LinkQueue & Q);        // 初始化车辆链式队列
Status EnQueue(LinkQueue& Q, Car e);    // 车辆入队
Car DeQueue(LinkQueue& Q);  // 车辆出队
Car GetHead(LinkQueue Q);   // 取链队的对头元素
int QueueEmpty(LinkQueue Q);    // 车辆队列判空#endif

创建 caroperation.cpp 源文件编写系统的功能

#include <string.h>
#include<stdlib.h>
#include <stdio.h>
#include<time.h>
#include "struct.h"//时间换算(传入秒)
void TimeExpress(int time) {int min;int hour;int sec;if (time < 60) {printf("停车时长: %d 秒\n", time);}else if (time < 3600) {min = time / 60;sec = time % 60;if (time % 60 == 0) {printf("停车时长: %d 分钟\n", min);}else {printf("停车时长: %d 分钟 % d 秒\n", min , sec);}}else {min = time / 60;sec = time % 60;hour = min / 60;min %= 60;if (sec == 0 && min == 0) {printf("停车时长: %d 小时\n", hour);}else if(sec != 0 && min == 0){printf("停车时长: %d 小时 0 分钟 %d 秒\n", hour,sec);}else if (sec == 0 && min != 0) {printf("停车时长: %d 小时 %d 分钟\n", hour, min);}else if (sec != 0 && min != 0) {printf("停车时长: %d 小时 %d 分钟 %d 秒\n", hour,min, sec);}}
}//前Etime分钟免费,费用Xtime分钟Xprice块钱,不到Xtime分钟按Xtime分钟算
//传入的time单位为分钟
int price(int time) {int price;if (time <= Etime)return 0;else {price = time / Xtime;if (time % Xtime != 0)price++;return price;}
}// 车辆栈判空
int StackEmpty(SqStack S) {if (S.top == S.base) {printf("当前车库没有车辆!\n\a");return ERROR;}else {return OK;}
}//查看车库
void SelectAll(SqStack S, LinkQueue Q) {if (StackEmpty(S)) {QueuePtr q=Q.front;printf("========车库========\n");while (S.top != S.base){S.top--;printf("|%s|\n", S.top->num);}printf("=======等待区=======\n");printf("-------------------------\n");if (q == Q.rear) {printf("暂无车辆等待...");}else {while (q != Q.rear) {q = q->next;printf("%s ",q->data.num);}}printf("\n-------------------------\n");}
}// 初始化车辆栈
Status InitStack(SqStack& S) {S.base = new Car[MAX];if (!S.base)exit(OVERFLOW);S.top = S.base;S.stacksize = MAX;return OK;
}//初始化临时栈
Status InitTempStack(LinkStack &TempStack) {TempStack = NULL;return OK;
}// 车辆栈判满
int StackFull(SqStack S,Car e) {if (S.top - S.base == MAX) {//printf("车库满了!\a\n");printf("车位已满 ==> 车牌号 %s 进入等待区!\a\n", e.num);return ERROR;}else {return OK;}
}// 车辆进栈
Status Push(SqStack& S, Car e) {if (StackFull(S,e)) {*S.top++ = e;printf("车牌号 %s 成功进库!\n",e.num);printf("车位剩余:%d \n", --S.stacksize);return OK;}//等待队列 return ERROR;
}// 取栈顶元素
Car GetTop(SqStack& S) {return *--S.top;
}//判断有没有该车辆
Status Find(SqStack S,Car e) {while (S.top != S.base){S.top--;if (!strcmp(S.top->num, e.num)) {return OK;}}return ERROR;
}// 链栈入栈(临时)
Status TempPush(LinkStack& TempStack,Car e) {LinkStack p = new StackNode;p->data = e;p->next = TempStack;TempStack = p;return OK;
}// 链栈出栈(临时)
Car TempPop(LinkStack& TempStack) {/*if (TempStack == NULL) {printf("临时栈空\a\n");return ERROR;}*/LinkStack p;Car tempData;tempData = TempStack->data;p = TempStack;TempStack = TempStack->next;delete(p);return tempData;
}// 车辆出栈
Status Pop(SqStack& S, Car& e, LinkStack& TempStack) {//是否空栈if (StackEmpty(S)) { //判断有没有该车if (!Find(S,e)) {printf("该车不在车库中!\a\n");return ERROR;}Car temp;while (true){temp = GetTop(S);if (!strcmp(temp.num, e.num)) {printf("车牌号 %s 成功出库!\n", e.num);//时间(出库时间)e.leave = time(NULL);//计费(传入分钟单位)int pay=price((e.leave - e.reach)/60);//出临时栈&进原栈(给车让位进另一个栈又出栈进回原栈)while (TempStack != NULL) {*S.top++ = TempPop(TempStack);}//时间换算并输出时间TimeExpress(e.leave - e.reach);printf("请缴费 %d 元\n", pay);printf("车位剩余:%d \n", ++S.stacksize);return OK;}//进栈(让位的车进临时栈)TempPush(TempStack, temp);}}return ERROR;
}// 初始化车辆链式队列
Status InitQueue(LinkQueue& Q) {Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));if (!Q.front)return ERROR;else {Q.front->next = NULL;return OK;}
}// 车辆队列判空
int QueueEmpty(LinkQueue Q) {if (Q.front == Q.rear) {//printf("队空!\n\a");return ERROR;}return OK;
}// 取链队的对头元素
Car GetHead(LinkQueue Q) {return Q.front->next->data;
}// 车辆入队
Status EnQueue(LinkQueue& Q, Car e) {QueuePtr p = (QueuePtr)malloc(sizeof(QNode));if (!p) {printf("程序发生不可逆的错误,请联系管理员!\n\a");//printf("入队失败!\a\n");return ERROR;}else {p->data = e;p->next = NULL;Q.rear->next = p;Q.rear = p;return OK;}
}// 车辆出队
Car DeQueue(LinkQueue& Q) {QueueEmpty(Q);Car HeadCar=GetHead(Q);QueuePtr p;p = Q.front->next;Q.front->next = p->next;if (Q.rear == p)Q.rear = Q.front;free(p);return HeadCar;
}

创建主函数 main.cpp 源文件编写界面并执行程序

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include"struct.h"
#include"function_declare.h"int main() {SqStack S;LinkStack TempStack;LinkQueue Q;Car ReadyCar;Car e;int item;//栈初始化if (!InitStack(S)) {printf("程序发生不可逆的错误,请联系管理员!\n\a");return ERROR;system("pause");}//临时栈初始化InitTempStack(TempStack);//队列初始化if (!InitQueue(Q)) {printf("程序发生不可逆的错误,请联系管理员!\n\a");return ERROR;system("pause");}MARK:while (1) {printf("*****欢迎使用停车场系统*****\n");printf("①车辆到达模块\n");printf("②车辆离开模块\n");printf("③列表显示模块\n");printf("④极致可视化\n");printf("⑤退出\n");printf("请选择功能: ");scanf("%d", &item);printf("-----------------\n");switch (item){case 1: {printf("车牌号为:");getchar();scanf("%s", &e.num);//时间计费(入库开始时间)e.reach = time(NULL);if (!Push(S,e)) {EnQueue(Q,e);}printf("\n\n");break;}case 2: {printf("输入要出库的车牌号:");getchar();scanf("%s", &e.num);if (Pop(S, e, TempStack)) {if (QueueEmpty(Q)) {//出队进栈ReadyCar = DeQueue(Q);ReadyCar.reach = time(NULL);Push(S, ReadyCar);}}printf("\n\n");break;}case 3: {SelectAll(S,Q);printf("\n\n");break;}case 4: {system("cls");while (1) {printf("*****极致可视化模式*****\n");printf("①车辆到达模块\n");printf("②车辆离开模块\n");printf("③列表显示模块\n");printf("④退出极致可视化模式\n");printf("请选择功能: ");scanf("%d", &item);printf("-----------------\n");switch (item){case 1: {printf("车牌号为:");getchar();scanf("%s", &e.num);system("cls");//时间计费(入库开始时间)e.reach = time(NULL);if (!Push(S, e)) {EnQueue(Q, e);}printf("\n");SelectAll(S, Q);break;}case 2: {printf("输入要出库的车牌号:");getchar();scanf("%s", &e.num);system("cls");if (Pop(S, e, TempStack)) {if (QueueEmpty(Q)) {//出队进栈ReadyCar = DeQueue(Q);ReadyCar.reach = time(NULL);Push(S, ReadyCar);}}printf("\n");SelectAll(S, Q);break;}case 3: {system("cls");SelectAll(S, Q);printf("\n\n");break;}case 4:system("cls");goto MARK;break;default:printf("错误:输入正确的功能序号!\a\n");break;}}break;}case 5:return 0;system("pause");default:printf("错误:输入正确的功能序号!\a\n");break;}}return 0;
}

资源:

停车场管理系统(C语言顺序栈+链栈+链队列)-C++文档类资源-CSDN下载停车场管理系统(C语言车库顺序栈+临时栈链栈+排队车道链队列)更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/weixin_55797565/85183518


如果有用的话可以给一个小赞吗

停车场管理系统(C语言顺序栈+链栈+链队列)相关推荐

  1. 停车场管理系统 C语言实现 EasyX图形库

    一.设计目的 软件算法综合设计是理论教学的深化和补充,具有较强的实践性,是电气信息类各专业的一门重要的实践环节必修课,涵盖<程序设计基础>.<离散结构>.<面向对象程序设 ...

  2. 课程设计之停车场管理系统C语言实现

    1.课程设计内容: 设有一个可以停放n(n>=5)辆汽车的狭长停车场,它只有一个大门可以供车辆进出.车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里 ...

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

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

  4. 停车场管理系统C语言作业,c语言课程设计报告停车场管理系统

    c语言课程设计报告停车场管理系统 C 语言课程设计报告 --停车场管理 1 班 级: 192102 学 号: 20101003907 姓 名: 聂 彪 指导教师: 张冬梅 时 间: 2011 年 6 ...

  5. 停车场管理系统C语言课程设计

    停车场管理系统C语言课程设计 1.问题描述 车辆属性有车牌号.颜色.车型(小汽车.小卡.中卡和大卡).到达的时间和离开的时间等信息和相关的对属性做操作的行为. 完成对停车场的管理.停车场的具体要求:设 ...

  6. c语言课程设计报告停车系统,停车场管理系统C语言课程设计

    <停车场管理系统C语言课程设计>由会员分享,可在线阅读,更多相关<停车场管理系统C语言课程设计(27页珍藏版)>请在人人文库网上搜索. 1.计算机科学与技术系课程设计报告20 ...

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

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

  8. 停车场管理系统c语言查询,停车场管理系统c语言.doc

    实用标准文案 精彩文档 学号 2015 2015-2016学年 第二学期 <高级语言程序设计> 课程设计报告 题目: 停车场管理系统 专业: 计算机科学与技术 班级: 15级计科<1 ...

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

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

最新文章

  1. 【leetcode】Search in Rotated Sorted Array II(middle)☆
  2. java web利用mvc结构实现简单聊天室功能
  3. centos7开启,关闭防火墙
  4. 用PQ的Windows版完成分区的一些调整工作
  5. C++ Primer 5th笔记(chap 14 重载运算和类型转换)算术和关系运算符
  6. php写实体类,自动生成实体类(方式一)
  7. Chrome 控制台不完全指南
  8. 广东科技学院计算机应用技术专业,广东科技学院是几本 [深圳大学应用技术学院计算机技术专业2018考研调剂信息]...
  9. OpenCV-Python实战(14)——人脸检测详解(仅需6行代码学会4种人脸检测方法)
  10. 申万一级行业日指数_2017年申万一级行业分类表
  11. mciSendCommand对本地音乐的播放
  12. 通达OA智能开发平台CRM系统 实现数据的自动计算
  13. Android 开发 | ImageView 与 ImageButton
  14. html js满屏飘雪特效,原生js实现的雪花飘落特效
  15. 看《西游记》谈团队管理
  16. 蒟蒻的单调队列orz,真的蒻
  17. birt 报表与润乾报表对比
  18. laravel实现文件下载功能
  19. 【考研英语语法】祈使句
  20. 怎样让android系统消失,谷歌本以为断供安卓可以让华为手机消失,结果断送了安卓系统的前程...

热门文章

  1. linux9.0安装教程,RedHat Linux 9.0安装过程小记
  2. 转:CPU与内存的那些事
  3. java稿件管理系统外文翻译,新闻稿件管理系统毕业论文
  4. xv6 6.S081 Lab8: fs
  5. Hive常用日期格式转换
  6. 赋能 打造应对不确定性的敏捷团队 pdf_周末荐书 | 赋能:打造应对不确定性的敏捷团队...
  7. 今日头条自媒体平台实操经验分享,让你月入上万不是梦
  8. 微信小程序----API、获取openid、消息订阅
  9. 2021 Jiangsu Collegiate Programming Contest部分题解
  10. 2022考研笔记-政治(马原-马克思主义政治经济学)