基于C/C++语言的停车场管理系统编程课程设计超详细

这篇具有很好参考价值的文章主要介绍了基于C/C++语言的停车场管理系统编程课程设计超详细。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

详细代码讨论加我QQ:1271370903

程序设计课程实践

基于C语言的停车管理系统编程设计
1.课程目的
本程序旨在训练学生的C语言基本编程能力,通过串联C语言输入输出、循环语句、子函数设计、数组、结构体等知识点,完成一个简单系统的设计开发。

2.系统功能
(1)通过菜单的形式实现人机交互界面
(2)实现便道上停车信息显示
(3)实现录入进入停车场的车辆信息
(4)实现删除离去停车场的车辆信息
(5)实现查询指定汽车功能
(6)实现对车辆的停车时间计费功能
3.设计思想
(1)人机交互界面
设有一个可以停放n(n>=5)辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在他之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆在依原来的次序进场。每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。如果停留在便道上的车 未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制模拟该停车场的管理的程序。
人机交互界面可以自己设计,可以加上开发者信息,体现每个学生的差异。

基于C/C++语言的停车场管理系统编程课程设计超详细
(2)停车信息显示
设首先定义结构体要包含车辆的这些信息:车牌、进入(离开)的状态、进入(离开)的时间,为了清晰地表示汽车的位置,结构体中还应该设置有表示位置信息的变量。
输入1后可查看当前停靠的车辆信息,输入2后可查看便道上的停车信息。
基于C/C++语言的停车场管理系统编程课程设计超详细
基于C/C++语言的停车场管理系统编程课程设计超详细
3)录入进入停车场的车辆信息
实现顺序栈和链队的数据结构,分析程序的结构。有车入场,停车场数据加一,若车辆已满,将车辆信息存入便道,输入3后可输入车辆信息。
基于C/C++语言的停车场管理系统编程课程设计超详细
(4)删除离去停车场的车辆信息
停车场车辆出场,将便道第一辆加进停车场,修改位置信息。输入4后可删除车辆信息。
基于C/C++语言的停车场管理系统编程课程设计超详细
5)实现查询指定汽车功能

根据输入需要查找车辆的车牌号,遍历当前结构体数组,判断是否含有一致车牌,若有则显示输出相应的车辆,否则不显示车辆,输入5后可查询指定汽车。
基于C/C++语言的停车场管理系统编程课程设计超详细
(6)实现对车辆的停车时间计费功能
停车场内的车辆离开停车场时需要根据停放时间进行计费,则需要调用<time.h>库的函数,保存车辆的进出时间,并且设立一个容易更改的停车单价,用宏定义Price,方便在头部修改。
基于C/C++语言的停车场管理系统编程课程设计超详细文章来源地址https://www.toymoban.com/news/detail-501501.html

部分详细代码

// 汽车信息的结构体 
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;         // flag用来标记车辆位置,如果在停车场内会置为1 
	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会变为0 
			flag = flag * strcmp(s.Stop[i].Lincense, C);
			i--;
		}
	}

	if(0 == flag){									// 当flag == 0 汽车必在停车场栈内 
		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){							// 找到该车位置时退出while循环 
		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;		// 出p队:队头指针的移动 
		w.rear = (w.rear + 1) % MAX_PAVE;		// 入w队:队尾指针的移动 
		w.count++;								// w.count + 1 
		p.count--;								// p.count - 1 
	}
	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){							// 当该车为栈顶时退出while循环 
		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;						// 用k模拟便道上汽车的位序  /***********/ 
	if(0 == p.count)       			// 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;
	}
}

// 4.汽车离去子菜单
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:								// goto 标志位 
			scanf("%d", &cho);
		if(0 == cho){
			continue;
		}
		else{
			printf("您的输入有误,请重新输入\n");
			goto top;						// goto 到指定标志位 top
		}
	}	
} 
// 子菜单的welcome 
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:								// goto 标志位 
			scanf("%d", &cho);
		if(0 == cho){
			continue;
		}
		else{
			printf("您的输入有误,请重新输入\n");
			goto begin;						// goto 到指定标志位 begin
		}
	}
	return 0;
}


到了这里,关于基于C/C++语言的停车场管理系统编程课程设计超详细的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Web的停车场管理系统(Java)

    目录 一、系统介绍 1.开发的环境 2.本系统实现的功能 3.数据库用到的表 4.工程截图 二、系统展示 1、登录页面  2、首页 3、系统信息管理模块   4、车位信息管理模块  5、IC卡信息管理模块 ​编辑6、固定车主停车管理模块 7、临时车主停车管理模块 8、系统功能操作模块 三

    2024年02月10日
    浏览(27)
  •  基于JAVAEE的停车场管理系统(论文+PPT+源码)

      详情介绍 毕业设计(论文) 论文题目 基于JAVAEE的停车场管理系统 Thesis Topic JAVAEE – based parking management system 毕业设计(论文)任务书 毕业设计(论文)题目:基于JAVAEE的停车场管理系统毕业设计(论文)要求及原始数据(资料):1.了解当前停车场管理的实际需求,确

    2024年02月03日
    浏览(47)
  • 50基于java的智能停车场管理系统设计与实现

    ​ 本章节给大家带来一个基于java的智能停车场管理系统设计与实现,可适用于java车辆管理,java停车场信息管理平台,小区停车管理平台,小区停车,物业停车管理,智慧停车场管理系统,智慧小区停车场平台,车辆AI识别,车辆识别。 近年来,随着我国经济的快速发展,人

    2024年02月09日
    浏览(28)
  • 基于JSP+Servlet+Mysql停车场管理系统(含实训报告)

    @TOC 项目类型:Java web项目 项目名称:基于JSP+Servlet的停车场管理系统 项目架构:B/S架构 开发语言:Java语言 前端技术:HTML、CSS、JS、JQuery等技术 后端技术:JSP、Servlet、JDBC等技术 运行环境:Win10、JDK1.8 数 据 库:MySQL5.7及以上 运行服务器:Tomcat8.0及以上 运行工具:EclipseM

    2024年02月11日
    浏览(30)
  • 毕业设计 基于51单片机智能停车场管理车位引导系统设计

    选题之前,同学们要弄明白一件事情,做毕业设计是干什么用的! 这里我告诉大家,毕业设计对于你来说,不是让你去搞研究,掌握运用所学知识的,也不是让你去比谁做的毕业设计多么牛逼,多么厉害。 说白点,它的作用就是一个,让你顺利毕业,能够拿到学位证,毕业

    2023年04月15日
    浏览(58)
  • 案例158:基于微信小程序的停车场管理系统设计与实现

    文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序运行软件:微信开发者 目录 目录 前言 系统展示 管理员功能实现 车辆停放管理 车辆驶出管理 停车费用管

    2024年01月23日
    浏览(44)
  • 基于python停车场管理系统的设计与实现(论文+源码)_kaic

    摘  要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 智能停车场管理系统,主要的模块包括首页、个人中心、用户管理、车位区域管理、车位信息管理、车位租用管理、车位退租管理、系统管理等功

    2024年02月02日
    浏览(31)
  • 停车场收费管理系统/停车场管理系统的设计与实现

    摘  要 ABSTRACT 目   录 第 1 章 绪论 1.1背景及意义 1.2 国内外研究概况 1.3 研究的内容 第2章 相关技术 2.1 JSP技术介绍 2.2 SSM三大框架 2.3 MyEclipse开发环境 2.4 Tomcat服务器 2.5 MySQL数据库 第3章 系统分析 3.1 需求分析 3.2 系统可行性分析 3.2.1技术可行性:技术背景 3.2.2经济可行性

    2024年02月12日
    浏览(40)
  • 基于单片机的智能停车场管理系统的设计与实现_kaic

    摘 要 本设计基于RFID智能识别和高速的视频图像和存储比较相结合,通过计算机的图像处理和自动识别,对车辆进出停车场的收费、车牌识别和车位诱导等,以实现停车场全方位智能管理。 本设计是以AT89C51型单片机为主控芯片的智能停车场系统,主要是针对车辆诱导和车辆检

    2024年02月06日
    浏览(23)
  • 基于java停车场共享车位预约管理系统(springboot框架)开题答辩常规问题

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年01月19日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包