停车场管理系统(数据结构与算法课设)(C语言版)
本文是程设计——《停车场管理系统》课题的一个分享。使用了顺序表和栈的数据结构,这也是数据结构与算法课设专栏的第六篇博客,我觉得不应当只是提供要求与原代码,还应当提供一些说明和思维导图的引导。如果您还有别的建议和想法,欢迎评论和私信。
本文是程设计——《停车场管理系统》课题的一个分享。使用了顺序表和栈的数据结构,这也是数据结构与算法课设专栏的第六篇博客,我觉得不应当只是提供要求与原代码,还应当提供一些说明和思维导图的引导。如果您还有别的建议和想法,欢迎评论和私信。
目录
1.设计内容与要求
|
设计内容: 设有一个可以停放n(n>=5)辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在他之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆在依原来的次序进场。每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制模拟该停车场的管理的程序。 设计要求: (1) 符合课题要求,实现相应功能; (2) 要求界面友好美观,操作方便易行; (3) 注意程序的实用性、安全性; |
2.程序总体设计
(1).数据结构设计
typedef struct car {
char licen[50]; // 车牌号
time_t startTime ; // 到达时间
time_t endTime ; // 离开时间
double time = 0.0 ; // 停放时间(秒)
double cost = 0.0; // 停车费用
}Car;
typedef struct ParkingLot {
Car Spots[n]; // 停车位数组
Car Queue[m]; // 便道上的车辆队列
int num_Parked = 0; // 停车位上停放的车辆数 //当做指针使用
int num_Waiting = 0; // 便道上等待的车辆数
}ParkingLot;
程序使用的数据结构有两个,一个是顺序栈Sports(栈最大长度已知,所以使用顺序栈),另一个是一个不完全的队列Queue,除了支持队列的基本功能,还支持队内元素自由弹出。二者和各自的指针num_Parked和num_waiting封装在结构体ParkingLot中。
(2).程序总体框架
1.计时功能实现
如果使用时车辆进入和离开停车场的时间都要靠键盘输入的话,实际使用太过繁琐。所以,提出一个新的想法。当车辆进入停车场时,通过使用time函数记录车辆进入停车场的时刻startTime。当车辆离开停车场时,再记录一下车辆离开的时刻endtTme。这样就可以去计算出车辆在停车场的停留时间并记录到time中。这样不仅避免了多次输入的繁琐,还跟贴近实际生活。
time_t startTime = time(NULL);
Sleep(5000);
time_t endTime = time(NULL);
double timeDiff = difftime(endTime, startTime); //计时原理
printf("费用:%3.1f", (timeDiff) * poice);
课题中还提到,停车场的大门尽允许一辆车通行,当停车场内部的车要离开时,靠近外面的车都要先离开车场腾开位置。这段等待的时间就不能计入车辆的停车时间中,等待时间的计算其实很简单。

(这其实只是我们规则假设的一种情况,方便我们去计算等候时间,按照实际情况,不可能所有车移动和等候的时间是规则的,如果想更贴近这种情况,可以去定义一个函数:当车辆离开停车场时,记录当前时刻并将该车辆的标记值设为1(默认为0)等车辆回到停车场时再记录时刻,去计算等待时间。我们在系统中可以使用输入1来表示让一辆车离开,输入0表示一辆车进入。当然,这也只是模拟的一个过程,本次程序并没有实现这个功能,欢迎有实现了该功能的同学在评论区分享交流)
2.车辆停入与离开流程实现

(3).函数原型清单
void Pop_sports();
void Pop_queue();
void Push_sports();
void Push_queue();
void Pop();
void Push();
void p_money();
void Menu();
void Menuport();
3.系统运行结果与调试
运行时为了方便观察,设置的停车场可停放车辆为2,使用时建议更改到符合要求的>=5

开始运行,打印菜单,进行选择。



开始进行停入操作,三张分别是停入停车场,停入车道,无法停入的操作显示 。

执行车辆驶离操作,让第一个停入的车离开并结算停车费,发现能够正常运行和计算。(后续输入时间在120秒,停留时间是正确的)

让车道上的车辆也驶离一辆。

这时候,再进行显示操作,不仅发现驶离的车辆已经不再显示,车道中的第一辆车也已经进入了停车场中。说明我们的功能是正常实现的。
4.代码实现
变量声明
#define n 5
#define m 5
#define length_1 13
#define length_2 18
#define poice 5 //系统实际安排应该是一小时的费用 这里为了方便演示 以一秒钟5元计入
typedef struct car {
char licen[50]; // 车牌号
time_t startTime ; // 到达时间
time_t endTime ; // 离开时间
double time = 0.0 ; // 停放时间(秒)
double cost = 0.0; // 停车费用
}Car;
typedef struct ParkingLot {
Car Spots[n]; // 停车位数组
Car Queue[m]; // 便道上的车辆队列
int num_Parked = 0; // 停车位上停放的车辆数 //应该可以当做指针使用
int num_Waiting = 0; // 便道上等待的车辆数
}ParkingLot;
ParkingLot Park;
宏定义,全局变量和结构体声明
1.车辆停入
void Pop() {
if (Park.num_Parked < n) {
printf("停车场内有%d个空位\n",n- Park.num_Parked);
printf("请您登记停车\n");
Pop_sports();
}
else {
printf("停车场已满\n\n");
if (Park.num_Waiting <m) {
printf("车道还有%d个空位\n",m-Park.num_Waiting);
printf("请您登记进入车道 等侯停车\n");
Pop_queue();
}
else {
printf("车道已满\n\n");
printf("停车场内已经停满 请您等待车辆离开\n\n");
}
}
}
void Pop_sports() {
Car newCar;
printf("请输入车牌号\n");
scanf("%s",newCar.licen);
newCar.startTime = time(NULL);
Park.Spots[Park.num_Parked++] = newCar;
printf("车辆%s已进入停车场\n\n", newCar.licen);
}
void Pop_queue() {
Car newCar;
printf("请输入车牌号\n");
scanf("%s",newCar.licen);
Park.Queue[Park.num_Waiting++] = newCar;
printf("车辆%s已进入车道\n", newCar.licen);
}
Pop函数做选择,分设Pop_sports和Pop_queue两个函数实现停入功能
2.车辆驶离
void Push() {
printf("\n*********************************************\n");
printf("** 请选择车辆要离开的位置 **\n");
printf("** 1.停车场 2.车道 **\n");
printf("** 0.退出车辆离开操作 **\n");
printf("*********************************************\n");
int input;
while (1) {
printf("请选择:");
scanf("%d",&input);
switch (input) {
case 1:if (Park.num_Parked == 0) { printf("停车场内无车辆 \n已退出车辆驶离操作\n\n"); break; }
else { Push_sports(); break; }
case 2:if (Park.num_Waiting == 0) { printf("车道内无车辆 \n已退出车辆驶离操作\n\n"); break; }
else { Push_queue(); break; }
case 0:printf("已退出车辆驶离操作\n"); break;
default:printf("无效输入 请重新选择\n");
}
break;
}
}
void Push_sports() {
P_car_1(); int num_car;
printf("请输入要离开车辆的车位号:");
time_t wait_start = time(NULL); //等待前方车辆离开的开始时间
while (1) {
scanf("%d",&num_car);
if (num_car <= 0 || num_car > Park.num_Parked) { printf("无效选择 请重新输入\n"); }
else {
for (int i = num_car ; i < Park.num_Parked; i++) {
printf("车辆正在驶离 》》 ");
Sleep(1000); //假设一辆车驶离一个车位的时间是1秒 且所有车的行驶速度一致 这里是为了模拟车辆离开的等待过程 实际是可以直接在Park.Sports[i].time去计算的
printf("车辆%已经驶离\n\n");
time_t wait_end = time(NULL);
double time_wait = difftime(wait_end, wait_start);
Park.Spots[i - 1].time = Park.Spots[i - 1].time - time_wait;
}
Park.Spots[num_car - 1].endTime = time(NULL);
double timeDiff = difftime(Park.Spots[num_car - 1].endTime, Park.Spots[num_car - 1].startTime);
Park.Spots[num_car - 1].time += timeDiff;
Park.Spots[num_car - 1].cost = Park.Spots[num_car - 1].time * poice;
P_money(num_car - 1);
for (int i = num_car - 1; i < Park.num_Parked - 1; i++) { Park.Spots[i] = Park.Spots[i + 1]; }
if (Park.num_Waiting > 0) {
Car newCar = Park.Queue[0];
newCar.startTime = time(NULL);
Park.Spots[Park.num_Parked - 1] = newCar;
for (int i = 0; i < Park.num_Waiting - 1; i++) { Park.Queue[i] = Park.Queue[i + 1];} Park.num_Waiting--;
}
else { Park.num_Parked--; }
break;
}
}
}
void Push_queue() {
P_car_2(); int num_car;
printf("请输入要离开车辆的车位号:");
scanf("%d", &num_car);
for (int i = num_car - 1; i < Park.num_Waiting - 1; i++) { Park.Queue[i] = Park.Queue[i + 1]; } Park.num_Waiting--;
printf("车辆%s已经驶离车道 感谢您的等待和谅解\n 期待您的下次光临\n\n",Park.Queue[num_car-1].licen);
}
Push下设Push_sports和Push_queue函数,重点在于Push_sports,有三步判断,停车场是否为空(判断进行驶离操作),驶离车辆前方是否有车(判断进行等待时间计算),此时车道里是否有车辆等待(判断将车道第一辆车移到停车场)。其中,第一步判断成功后就要进行记录时间,计算车费的操作了。
3.信息显示
void P_car_1() {
//打印表头
printf("停车场内:\n\n");
printf("┌─────────────┬──────────────────┐\n");
printf("│ 车位 │ 车牌号 │\n");
printf("├─────────────┼──────────────────┤\n");
for (int i = 0; i < Park.num_Parked; i++) {
printf("│");
int padding = (length_1 - 1) / 2; for (int i = 0; i < padding; i++) { printf(" "); } if ((i + 1) > 9) { padding++; if ((i + 1) > 99) { padding++; } }
printf("%d", i + 1);
for (int i = 0; i < length_1 - 1 - padding; i++) { printf(" "); }
printf("│");
padding = (length_2 - strlen(Park.Spots[i].licen)) / 2; for (int i = 0; i < padding; i++) { printf(" "); }
printf("%s", Park.Spots[i].licen);
for (int j = 0; j < (length_2 - strlen(Park.Spots[i].licen) - padding); j++) { printf(" "); }
printf("│\n");
if (i + 1 < Park.num_Parked) { printf("├─────────────┼──────────────────┤\n");
}
else { printf("└─────────────┴──────────────────┘\n"); }
}
}
void P_car_2() {
//打印表头
printf("车道内:\n\n");
printf("┌─────────────┬──────────────────┐\n");
printf("│ 车位 │ 车牌号 │\n");
printf("├─────────────┼──────────────────┤\n");
for (int i = 0; i < Park.num_Waiting; i++) {
printf("│");
int padding = (length_1 - 1) / 2; for (int i = 0; i < padding; i++) { printf(" "); } if ((i + 1) > 9) { padding++; if ((i + 1) > 99) { padding++; } }
printf("%d", i + 1);
for (int j = 0; j < length_1 - 1 - padding; j++) { printf(" "); }
printf("│");
padding = (length_2 - strlen(Park.Queue[i].licen)) / 2; for (int i = 0; i < padding; i++) { printf(" "); }
printf("%s", Park.Queue[i].licen);
for (int k = 0; k < (length_2 - strlen(Park.Queue[i].licen) - padding); k++) { printf(" "); }
printf("│\n");
if (i + 1 < Park.num_Waiting) { printf("├─────────────┼──────────────────┤\n"); }
else { printf("└─────────────┴──────────────────┘\n"); }
}
}
void P_money(int i) {
//打印表头
printf("收费情况:\n\n");
printf("┌──────────────────┬──────────────────┬──────────────────┐\n");
printf("│ 车牌号 │ 停车时间 │ 停车费 │\n");
printf("├──────────────────┼──────────────────┼──────────────────┤\n");
printf("│");
int padding = (length_2 - strlen(Park.Spots[i].licen)) / 2; for (int i = 0; i < padding; i++) { printf(" "); }
printf("%s", Park.Spots[i].licen);
for (int sum = 0; sum < length_2 - strlen(Park.Spots[i].licen) - padding; sum++) { printf(" "); }
printf("│");
padding = (length_2 - 3) / 2; for (int i = 0; i < padding; i++) { printf(" "); } if (Park.Spots[i].time > 9) { padding++; if ((Park.Spots[i].time) > 99) { padding++; if ((Park.Spots[i].time) > 999) { padding++; } } }
printf("%3.1f", Park.Spots[i].time);
for (int j = 0; j < length_2 - 3 - padding; j++) { printf(" "); }
printf("│");
padding = (length_2 - 3) / 2; for (int i = 0; i < padding; i++) { printf(" "); } if ((Park.Spots[i].cost) > 99) { padding++; if ((Park.Spots[i].cost) > 999) { padding++; } }
printf("%3.1f", Park.Spots[i].cost);
for (int k = 0; k < length_2 - 4 - padding; k++) { printf(" "); }
printf("│\n");
printf("└──────────────────┴──────────────────┴──────────────────┘\n");
printf("感谢%s车主使用停车场 期待您的下次光临\n\n", Park.Spots[i].licen);
}
停车场信息显示,车道信息显示,和车费信息显示。只是简单的表格绘制输出数据。
4.菜单与主函数
void Menu() {
system("cls");
printf("\n********************************************\n");
printf("************* 停车场管理系统 ************\n");
printf("** **\n");
printf("** \033[1;36;41m当前停车场中有 %d 辆车!\033[m **\n",Park.num_Parked);
printf("** \033[1;36;41m当前车道中有 %d 辆车!\033[m **\n",Park.num_Waiting);
printf("** **\n");
printf("** 1: 登记车辆进入 **\n");
printf("** 2: 登记车辆离开 **\n");
printf("** 3. 显示停放信息 **\n");
printf("** 0: 退出管理系统 **\n");
printf("** **\n");
printf("********************************************\n\n");
}
void Menuport() {
int input;
Menu();
while(1) {
printf("请选择您的操作:");
scanf("%d", &input);
switch (input) {
case 1:Menu(); Pop(); break;
case 2:Menu(); Push(); break;
case 3:P_car_1(); P_car_2(); printf("\n显示完毕\n"); break;
case 0:printf("您已退出停车管理系统 感谢您的使用\n"); exit(-339);
}
}
}
int main() {
Menu();
Menuport();
return 0;
}
*5.完整代码
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <time.h>
#include <locale.h> // 包含 setlocale() 函数的头文件
#define n 2
#define m 3
#define length_1 13
#define length_2 18
#define poice 5 //系统实际安排应该是一小时的费用 这里为了方便演示 以一秒钟5元计入
typedef struct car {
char licen[50]; // 车牌号
time_t startTime ; // 到达时间
time_t endTime ; // 离开时间
double time = 0.0 ; // 停放时间(秒)
double cost = 0.0; // 停车费用
}Car;
typedef struct ParkingLot {
Car Spots[n]; // 停车位数组
Car Queue[m]; // 便道上的车辆队列
int num_Parked = 0; // 停车位上停放的车辆数 //应该可以当做指针使用
int num_Waiting = 0; // 便道上等待的车辆数
}ParkingLot;
ParkingLot Park;
void Pop_sports();
void Pop_queue();
void Push_sports();
void Push_queue();
void Pop();
void Push();
void p_money();
void Menu();
void Menuport();
void Pop_sports() {
Car newCar;
printf("请输入车牌号\n");
scanf("%s",newCar.licen);
newCar.startTime = time(NULL);
Park.Spots[Park.num_Parked++] = newCar;
printf("车辆%s已进入停车场\n\n", newCar.licen);
}
void Pop_queue() {
Car newCar;
printf("请输入车牌号\n");
scanf("%s",newCar.licen);
Park.Queue[Park.num_Waiting++] = newCar;
printf("车辆%s已进入车道\n", newCar.licen);
}
void Pop() {
if (Park.num_Parked < n) {
printf("停车场内有%d个空位\n",n- Park.num_Parked);
printf("请您登记停车\n");
Pop_sports();
}
else {
printf("停车场已满\n\n");
if (Park.num_Waiting <m) {
printf("车道还有%d个空位\n",m-Park.num_Waiting);
printf("请您登记进入车道 等侯停车\n");
Pop_queue();
}
else {
printf("车道已满\n\n");
printf("停车场内已经停满 请您等待车辆离开\n\n");
}
}
}
void P_car_1() {
//打印表头
printf("停车场内:\n\n");
printf("┌─────────────┬──────────────────┐\n");
printf("│ 车位 │ 车牌号 │\n");
printf("├─────────────┼──────────────────┤\n");
for (int i = 0; i < Park.num_Parked; i++) {
printf("│");
int padding = (length_1 - 1) / 2; for (int i = 0; i < padding; i++) { printf(" "); } if ((i + 1) > 9) { padding++; if ((i + 1) > 99) { padding++; } }
printf("%d", i + 1);
for (int i = 0; i < length_1 - 1 - padding; i++) { printf(" "); }
printf("│");
padding = (length_2 - strlen(Park.Spots[i].licen)) / 2; for (int i = 0; i < padding; i++) { printf(" "); }
printf("%s", Park.Spots[i].licen);
for (int j = 0; j < (length_2 - strlen(Park.Spots[i].licen) - padding); j++) { printf(" "); }
printf("│\n");
if (i + 1 < Park.num_Parked) { printf("├─────────────┼──────────────────┤\n");
}
else { printf("└─────────────┴──────────────────┘\n"); }
}
}
void P_car_2() {
//打印表头
printf("车道内:\n\n");
printf("┌─────────────┬──────────────────┐\n");
printf("│ 车位 │ 车牌号 │\n");
printf("├─────────────┼──────────────────┤\n");
for (int i = 0; i < Park.num_Waiting; i++) {
printf("│");
int padding = (length_1 - 1) / 2; for (int i = 0; i < padding; i++) { printf(" "); } if ((i + 1) > 9) { padding++; if ((i + 1) > 99) { padding++; } }
printf("%d", i + 1);
for (int j = 0; j < length_1 - 1 - padding; j++) { printf(" "); }
printf("│");
padding = (length_2 - strlen(Park.Queue[i].licen)) / 2; for (int i = 0; i < padding; i++) { printf(" "); }
printf("%s", Park.Queue[i].licen);
for (int k = 0; k < (length_2 - strlen(Park.Queue[i].licen) - padding); k++) { printf(" "); }
printf("│\n");
if (i + 1 < Park.num_Waiting) { printf("├─────────────┼──────────────────┤\n"); }
else { printf("└─────────────┴──────────────────┘\n"); }
}
}
void P_money(int i) {
//打印表头
printf("收费情况:\n\n");
printf("┌──────────────────┬──────────────────┬──────────────────┐\n");
printf("│ 车牌号 │ 停车时间 │ 停车费 │\n");
printf("├──────────────────┼──────────────────┼──────────────────┤\n");
printf("│");
int padding = (length_2 - strlen(Park.Spots[i].licen)) / 2; for (int i = 0; i < padding; i++) { printf(" "); }
printf("%s", Park.Spots[i].licen);
for (int sum = 0; sum < length_2 - strlen(Park.Spots[i].licen) - padding; sum++) { printf(" "); }
printf("│");
padding = (length_2 - 3) / 2; for (int i = 0; i < padding; i++) { printf(" "); } if (Park.Spots[i].time > 9) { padding++; if ((Park.Spots[i].time) > 99) { padding++; if ((Park.Spots[i].time) > 999) { padding++; } } }
printf("%3.1f", Park.Spots[i].time);
for (int j = 0; j < length_2 - 3 - padding; j++) { printf(" "); }
printf("│");
padding = (length_2 - 3) / 2; for (int i = 0; i < padding; i++) { printf(" "); } if ((Park.Spots[i].cost) > 99) { padding++; if ((Park.Spots[i].cost) > 999) { padding++; } }
printf("%3.1f", Park.Spots[i].cost);
for (int k = 0; k < length_2 - 4 - padding; k++) { printf(" "); }
printf("│\n");
printf("└──────────────────┴──────────────────┴──────────────────┘\n");
printf("感谢%s车主使用停车场 期待您的下次光临\n\n", Park.Spots[i].licen);
}
void Push_sports() {
P_car_1(); int num_car;
printf("请输入要离开车辆的车位号:");
time_t wait_start = time(NULL); //等待前方车辆离开的开始时间
while (1) {
scanf("%d",&num_car);
if (num_car <= 0 || num_car > Park.num_Parked) { printf("无效选择 请重新输入\n"); }
else {
for (int i = num_car ; i < Park.num_Parked; i++) {
printf("车辆正在驶离 》》 ");
Sleep(1000); //假设一辆车驶离一个车位的时间是1秒 且所有车的行驶速度一致 这里是为了模拟车辆离开的等待过程 实际是可以直接在Park.Sports[i].time去计算的
printf("车辆%已经驶离\n\n");
time_t wait_end = time(NULL);
double time_wait = difftime(wait_end, wait_start);
Park.Spots[i - 1].time = Park.Spots[i - 1].time - time_wait;
}
Park.Spots[num_car - 1].endTime = time(NULL);
double timeDiff = difftime(Park.Spots[num_car - 1].endTime, Park.Spots[num_car - 1].startTime);
Park.Spots[num_car - 1].time += timeDiff;
Park.Spots[num_car - 1].cost = Park.Spots[num_car - 1].time * poice;
P_money(num_car - 1);
for (int i = num_car - 1; i < Park.num_Parked - 1; i++) { Park.Spots[i] = Park.Spots[i + 1]; }
if (Park.num_Waiting > 0) {
Car newCar = Park.Queue[0];
newCar.startTime = time(NULL);
Park.Spots[Park.num_Parked - 1] = newCar;
for (int i = 0; i < Park.num_Waiting - 1; i++) { Park.Queue[i] = Park.Queue[i + 1];} Park.num_Waiting--;
}
else { Park.num_Parked--; }
break;
}
}
}
void Push_queue() {
P_car_2(); int num_car;
printf("请输入要离开车辆的车位号:");
scanf("%d", &num_car);
for (int i = num_car - 1; i < Park.num_Waiting - 1; i++) { Park.Queue[i] = Park.Queue[i + 1]; } Park.num_Waiting--;
printf("车辆%s已经驶离车道 感谢您的等待和谅解\n 期待您的下次光临\n\n",Park.Queue[num_car-1].licen);
}
void Push() {
printf("\n*********************************************\n");
printf("** 请选择车辆要离开的位置 **\n");
printf("** 1.停车场 2.车道 **\n");
printf("** 0.退出车辆离开操作 **\n");
printf("*********************************************\n");
int input;
while (1) {
printf("请选择:");
scanf("%d",&input);
switch (input) {
case 1:if (Park.num_Parked == 0) { printf("停车场内无车辆 \n已退出车辆驶离操作\n\n"); break; }
else { Push_sports(); break; }
case 2:if (Park.num_Waiting == 0) { printf("车道内无车辆 \n已退出车辆驶离操作\n\n"); break; }
else { Push_queue(); break; }
case 0:printf("已退出车辆驶离操作\n"); break;
default:printf("无效输入 请重新选择\n");
}
break;
}
}
void Menu() {
system("cls");
printf("\n********************************************\n");
printf("************* 停车场管理系统 ************\n");
printf("** **\n");
printf("** \033[1;36;41m当前停车场中有 %d 辆车!\033[m **\n",Park.num_Parked);
printf("** \033[1;36;41m当前车道中有 %d 辆车!\033[m **\n",Park.num_Waiting);
printf("** **\n");
printf("** 1: 登记车辆进入 **\n");
printf("** 2: 登记车辆离开 **\n");
printf("** 3. 显示停放信息 **\n");
printf("** 0: 退出管理系统 **\n");
printf("** **\n");
printf("********************************************\n\n");
}
void Menuport() {
int input;
Menu();
while(1) {
printf("请选择您的操作:");
scanf("%d", &input);
switch (input) {
case 1:Menu(); Pop(); break;
case 2:Menu(); Push(); break;
case 3:P_car_1(); P_car_2(); printf("\n显示完毕\n"); break;
case 0:printf("您已退出停车管理系统 感谢您的使用\n"); exit(-339);
}
}
}
int main() {
Menu();
Menuport();
return 0;
}
5.问题反思与总结
此次课题总耗时在4个小时,程序部分没有遇到棘手的问题,主要是绘制流程图比较麻烦,在完成此次课题时也是尽量将程序运行贴近实际生活,在实际的背景下去优化完善代码,我认为会使得系统使用和操作体验更好一点。
欢迎大家有发现问题或者有更好的想法时,评论或者私信批评指教。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)