停车场管理系统课程设计
- 格式:doc
- 大小:69.00 KB
- 文档页数:9
停车场管理系统数据结构课程设计随着社会的发展和经济的快速增长,城市的交通压力越来越大,停车位的需求也越来越高。
而如何有效地管理停车场,提高停车位的利用率,成为了当今社会普遍关注的问题。
因此,本文将以停车场管理系统数据结构课程设计为主题,探讨停车场管理系统的数据结构设计。
一、需求分析停车场管理系统主要需要实现以下功能:1.车辆进入停车场时的记录;2.车辆离开停车场时的记录;3.计算停车费用;4.查询车辆信息;5.管理员管理停车场信息。
二、数据结构设计1.车辆信息结构体在车辆进入停车场时,需要记录车辆的信息,包括车牌号、车辆类型、进入时间等。
因此,我们可以定义一个车辆信息结构体,如下所示:struct CarInfo{string plateNumber; //车牌号string carType; //车辆类型string enterTime; //进入时间int parkingTime; //停车时间float parkingFee; //停车费用};2.停车场结构体停车场是一个重要的管理对象,需要记录停车场的信息,包括停车场容量、当前停车量、车位状态等。
因此,我们可以定义一个停车场结构体,如下所示:struct ParkingLot{int capacity; //停车场容量int currentCount; //当前停车量bool *parkingStatus; //车位状态CarInfo *parkingCar; //停车车辆信息};其中,parkingStatus数组表示每个车位的状态,true表示该车位已经被占用,false表示该车位空闲;parkingCar数组存储每个车位停放的车辆信息。
3.查询车辆信息结构体管理员需要查询车辆信息,因此我们可以定义一个查询车辆信息结构体,如下所示:struct QueryCarInfo{string plateNumber; //车牌号string enterTime; //进入时间string leaveTime; //离开时间float parkingFee; //停车费用};4.管理员结构体管理员需要管理停车场信息,包括设置停车场容量、添加车辆、删除车辆等。
课程设计停车场管理系统一、课程目标知识目标:1. 让学生理解停车场管理系统的基本原理和功能需求。
2. 使学生掌握利用所学编程语言设计简单的停车场管理系统。
3. 帮助学生了解数据库在停车场管理系统中的应用。
技能目标:1. 培养学生运用所学知识,如流程图绘制、代码编写和调试等,解决实际问题的能力。
2. 提高学生团队协作、沟通表达和项目管理的能力。
情感态度价值观目标:1. 培养学生对计算机科学的兴趣,激发他们探索新技术、新方法的热情。
2. 培养学生面对实际问题时,积极思考、勇于创新的态度。
3. 增强学生的环保意识,让他们认识到智能停车场系统对缓解交通压力、提高生活质量的重要性。
课程性质:本课程为信息技术学科,以项目式教学为主,结合教材内容,使学生能够将理论知识与实际应用相结合。
学生特点:考虑到学生所在年级,他们在前期课程中已掌握了基本的编程知识和数据库应用,具备一定的自学能力和团队协作精神。
教学要求:在教学过程中,教师应注重引导学生自主探究、动手实践,鼓励学生提出问题、解决问题。
同时,关注学生的个体差异,给予个性化指导,确保每位学生都能在课程中取得实质性的进步。
通过本课程的学习,使学生能够达到以上设定的课程目标,为后续相关课程打下坚实基础。
二、教学内容1. 教学大纲:a. 停车场管理系统概述:介绍停车场管理系统的基本概念、功能和应用场景。
b. 系统需求分析:讲解如何进行需求分析,明确系统所需实现的功能和性能要求。
c. 系统设计:包括数据库设计、界面设计和模块设计,阐述各部分的设计原则和实现方法。
d. 编程实现:利用所学编程语言(如Python、Java等),实现停车场管理系统的核心功能。
e. 系统测试与优化:教授测试方法,分析测试结果,提出优化策略。
2. 教学内容安排与进度:a. 概述(1课时):引导学生了解停车场管理系统的背景和意义。
b. 需求分析(2课时):指导学生进行实际需求分析,明确系统目标。
停车场管理系统1题目要求设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车站。
停车站内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车站为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。
编制一程序模拟该停车场的管理。
【基本要求】要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场是的停车时间及它应该交的费用。
2需求分析根据题目要求,因为停车场是一个单条的序列,可以用结构体实现;在程序中,需要知道每辆来车的具体停放位置,应提供提示、查找、标记工作。
车辆离开要计时计费。
另外,每天开始时,停车场要初始化。
3总体设计这个系统可以分为:初始化、有车进入、有车离开、退出四个模块。
4详细设计main()函数体内包含了界面选则部分menu(),并单独Array抽出来作为一个独立函数,目的在于系统执行每部分模块后能够方便返回到系统界面。
即main()函数写为如下:void main()/*主函数*/{menu();/*菜单函数*/}菜单函数:void menu(){int n,w;do{puts("\t\t**************MENU**************\n\n");puts("\t\t\t 1.初始化");puts("\t\t\t 2.有车进入");puts("\t\t\t 3.有车离开");puts("\t\t\t 4.退出");puts("\n\n\t\t*********************************\n");printf("Please choice your number(1-4): [ ]\b\b");scanf("%d",&n);if(n<1||n>4)/*对选择的数字作判断*/{w=1;getchar();}else w=0;}while(w==1);switch(n){case 1:chushi();break;/*初始化函数*/case 2:jinru();break;/*车辆进入函数*/case 3:likai();break;/*车辆离开函数*/case 4:exit(0);/*退出*/}}初始化模块设计:【需求分析】该模块是将每一天开始的停车场内和便道车位清零。
一、绪论数据结构是计算机程序设计的重要理论技术基础,也是计算机学科的核心课程,而课程设计则是考察我们学生对数据结构的熟悉程度及掌握程度。
此次的课程设计是关于停车场管理系统的编程,需要考查的是对栈和队列的熟练使用,以及对基础知识的掌握。
这次的课程设计主要是用栈和队列实现模拟停车场的基本原理,栈的顺序存储结构和队列的链式存储结构的定义和算法描述,同时也学会了编写停车场问题的程序。
二、程序设计2.1、需求分析(1)根据车辆到达停车场到车辆离开停车场时所停留的时间进行计时收费。
进入主菜单前需要输入收费标准以及停车场所能容纳的车辆数目。
(2)当有车辆从停车场离开时,等待的车辆按顺序进入停车场停放。
实现停车场的调度功能。
(3)用顺序栈来表示停车场,链队表示停车场外的便道。
(4)显示停车场信息和便道信息。
(5)程序执行的命令为:○1车辆进入停车场○2车辆离开停车场○3显示停车场的信息。
2.2、概要设计抽象数据类型定义(1)栈的抽象数据类型定义AST Stack{数据对象:D={ai|ai∈ElemSet,i=1,2,...,n, n≥0}数据关系:R1={<ai-1,ai>|ai-1,ai∈D,i=2,...,n}约定an端为栈顶,a1端为栈底。
基本操作:InitStack(&S)操作结果:构造一个空栈S。
DestroyStack(&S)初始条件:栈S已存在。
操作结果:栈S被销毁。
ClearStack(&S)初始条件:栈S已存在。
操作结果:将栈S清为空栈。
StackEmpty(S)初始条件:栈S已存在。
操作结果:若栈S为空栈,则返回TRUE,否则FALSE。
StackLength(s)初始条件:栈S已存在。
操作结果:返回S的元素个数,既栈的长度。
GetTop(S,&e)初始条件:栈S已存在且非空。
操作结果:用e返回S的栈顶元素。
Push(&S,e)初始条件:栈S已存在。
停车场管理系统软件工程导论课程设计停车场管理系统软件工程导论课程设计一、需求分析1.1 系统背景随着汽车拥有量的不断增加,城市交通的拥堵问题日益严重,如何高效地利用有限的公共停车资源,成为城市管理者们面临的紧要问题。
因此,设计一个高效、稳定的停车场管理系统,对于城市停车场的管理、监控以及车辆拥堵的解决具有重要意义。
1.2 功能需求1.2.1 登录模块该模块负责用户身份认证和权限管理,只有授权用户才能够登录停车场管理系统。
1.2.2 车辆入场模块该模块负责识别车辆的车牌号码,并记录车辆进入停车场的时间和位置。
1.2.3 车辆出场模块该模块负责识别车辆的车牌号码,并与进场记录进行匹配,计算车辆的停车费用,并根据用户的选择实现在线支付或现金支付。
1.2.4 数据统计模块该模块负责对停车场的使用情况进行统计分析,可以提供车位使用率、停车时长、收入情况等详细数据。
1.2.5 报表查询模块该模块负责生成各种报表查询结果,如日报表、月报表、年报表等。
1.2.6 系统设置模块该模块负责停车场的基本信息管理和系统配置,如车位数量、停车费用、支付方式等。
1.3 非功能需求1.3.1 系统可靠性停车场管理系统必须具有高可靠性和稳定性,以保证数据的完整性和准确性。
1.3.2 系统安全性停车场管理系统必须具有高安全性,以保护用户的隐私和停车场信息的安全。
1.3.3 系统响应时间停车场管理系统必须具有快速响应的能力,以满足用户对停车场的实时查询需求。
二、系统设计2.1 总体架构设计停车场管理系统的总体架构由前端、后端和数据库三部分构成。
2.2 数据库设计停车场管理系统需要建立一个数据库来存储各种信息和数据,如用户信息、车辆信息、停车场基本信息、报表统计信息等。
该数据库采用关系数据库模型。
2.3 后端设计后端主要负责实现各种功能模块,包括登录模块、车辆入场模块、车辆出场模块、数据统计模块、报表查询模块和系统设置模块。
后端采用Java编程语言实现。
停车场管理系统课程设计一.设计要求1.问题描述设计一个停车场管理系统,模拟停车场的运作,此程序应具备以下功能:(1)若车辆达到,则显示汽车在停车场内或便道上的停车位置。
(2)若车辆离去,则显示汽车在停车场停留的时间和应交纳的费用(在便道上不收费)。
2.需求分析(1)该程序要求以栈模拟停车场,以队列模拟车场外的便道。
(2)要求处理的数据元素包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻。
(3)要求栈以顺序结构实现,队列以链表实现。
二.概要设计1.主界面设计为了实现停车场系统的管理,设计一个含有多个菜单项的主控菜单子程序以链接系统的各项子功能。
主控菜单运行如下:2.存储结构设计该系统采用顺序栈存储停车场信息,链队列存储便道信息。
3.系统功能设计(1)车辆到达登记(2)车辆离开登记(3)停车场车辆信息(4)退出系统三.模块设计1.模块设计本程序包含主程序模块、菜单选择模块和栈及队列操作模块。
调用关系如下2.系统子程序及功能设计(1)void InitStack(SeqStackCar *); //车辆节点进栈(2)int InitQueue(LinkQueueCar *); //车辆节点进队列(3)int Arrival(SeqStackCar *,LinkQueueCar *); //车辆到达登记(4)void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *); //车辆离开处理(5)void List(SeqStackCar,LinkQueueCar); //显示车场内和便道上的车辆情况(6)void Cost(CarNode *p,int room); // 车辆离开时的费用(7)void main()//主程序画面函数四.详细设计1、数据类型定义(1)车辆信息的表示车辆可看成是一个节点,设计成一个结构体,车辆信息包括:车牌号码,车辆的进站时间和离开停车的时间,定义如下:typedef struct node{char num[10]; //车牌号码Time reach; //到站时间Time leave; //离开时间}CarNode;(2)时间、栈和队列的定义时间是由小时和分钟表示的,有两部分数据,所以,类似于复数的表示一样,设计两个变量分别存储小时和分钟。
停车管理系统课程设计一、课程目标知识目标:1. 让学生理解停车管理系统的作用和重要性,掌握其基本组成部分及功能。
2. 使学生掌握数据结构中与停车管理系统相关的基础知识,如队列、栈等。
3. 帮助学生了解并运用编程语言(如Python或C++)实现简单的停车管理系统。
技能目标:1. 培养学生运用数据结构解决实际问题的能力,能够设计并优化停车管理系统的数据模型。
2. 提高学生的编程能力,使其能够独立完成一个简单的停车管理系统的代码编写和调试。
3. 培养学生团队协作和沟通能力,通过小组合作完成课程项目。
情感态度价值观目标:1. 激发学生对计算机科学和信息技术领域的兴趣,培养其主动学习的态度。
2. 培养学生关注社会问题,认识到信息技术在解决实际生活中的重要作用,增强社会责任感。
3. 引导学生树立正确的价值观,认识到技术应服务于社会,遵循道德规范,保护用户隐私。
本课程针对高年级学生,已具备一定的数据结构知识和编程基础。
课程性质为实践性较强的综合应用课程,旨在通过停车管理系统这一实际案例,使学生将所学知识综合运用到实际项目中。
教学要求注重培养学生的实践能力、创新思维和团队协作能力,通过分解课程目标为具体的学习成果,使学生在完成课程后能够达到预期的知识和技能水平。
二、教学内容1. 停车管理系统概述:- 系统功能介绍- 系统在实际生活中的应用案例2. 数据结构基础:- 队列与栈的应用- 哈希表的原理与实现3. 编程语言选择与使用:- Python/C++语言基础- 编程规范与调试技巧4. 停车管理系统设计与实现:- 系统需求分析- 数据模型设计- 算法设计与优化- 代码编写与测试5. 课程项目:- 小组分工与协作- 项目进度安排与汇报- 项目评价与反馈教学内容根据课程目标,结合课本相关章节,制定以下教学大纲:第1周:停车管理系统概述,数据结构基础第2周:编程语言选择与使用,编程规范与调试技巧第3-4周:停车管理系统设计与实现(需求分析、数据模型设计、算法设计)第5-6周:停车管理系统设计与实现(代码编写与测试)第7周:课程项目启动,小组分工与协作第8周:课程项目中期汇报,项目评价与反馈第9周:课程项目总结,成果展示与分享教学内容科学系统,注重理论与实践相结合,旨在提高学生的实际操作能力和创新思维。
停车场管理系统课程设计一、课程目标知识目标:1. 学生能理解停车场管理系统的基本原理和功能需求;2. 学生掌握使用编程语言设计并实现停车场管理系统的基本方法;3. 学生了解数据库在停车场管理系统中的应用和重要性;4. 学生掌握停车场管理系统中的数据结构和算法。
技能目标:1. 学生能运用所学知识,设计出结构合理、功能完善的停车场管理系统;2. 学生能运用编程语言实现停车场管理系统的各项功能,并解决实际问题;3. 学生能够通过团队协作,完成停车场管理系统的设计、开发和测试;4. 学生具备分析和解决停车场管理系统中问题的能力。
情感态度价值观目标:1. 学生通过学习停车场管理系统课程,增强对计算机科学和信息技术领域的兴趣和热情;2. 学生在课程学习过程中,培养良好的团队合作精神和沟通能力;3. 学生能够认识到停车场管理系统在实际生活中的应用价值,关注社会发展和科技创新;4. 学生在学习过程中,树立正确的价值观,关注环境保护和资源合理利用。
课程性质:本课程为信息技术课程,旨在让学生结合现实生活中的问题,运用所学知识设计和开发停车场管理系统。
学生特点:学生具备一定的编程基础,对信息技术领域有一定了解,具备探索精神和动手能力。
教学要求:课程要求学生在理解停车场管理系统原理的基础上,动手实践,培养解决实际问题的能力。
教学过程中注重培养学生的团队合作和沟通能力,提高学生的综合素质。
通过课程目标的分解和实施,确保学生能够达到预期学习成果。
二、教学内容1. 停车场管理系统概述- 停车场管理系统的作用和功能- 常见停车场管理系统的案例分析2. 系统需求分析- 了解停车场管理系统的业务流程- 学习如何进行系统需求分析- 编写系统需求规格说明书3. 系统设计- 学习系统架构设计- 数据库设计与数据表结构设计- 系统模块划分与功能设计4. 编程语言与开发工具- 选择合适的编程语言(如Java、C#等)- 学习使用相关开发工具(如Eclipse、Visual Studio等)5. 系统实现- 编写系统各模块的代码- 集成各个模块,实现系统整体功能- 学习调试程序,解决开发过程中遇到的问题6. 系统测试与优化- 制定测试计划,进行系统功能测试- 分析测试结果,优化系统性能- 评估系统可靠性、稳定性和安全性7. 课程总结与展示- 学生团队展示停车场管理系统成果- 分析课程学习过程中的收获与不足- 教师点评与反馈教学内容根据课程目标进行科学性和系统性的组织,与课本内容紧密关联。
停车场管理系统一编程思想:将停车场设计成一个虚拟的栈,将其入口设计成栈顶,在设计一个倒车场,也将其设计成一个虚拟的栈,使其入口为栈顶,再根据队列设计一个供车来停放的便道,当停车场里的车辆不为满时,车辆进入停车场,当停车场里的车辆为满时,车辆在便道里等候,当车辆从停车场里出来的时候,如果出来的不是第一个车辆,则其前面的车辆将进入倒车场里面,待车辆出去后,倒车场里的车再依次进入停车场,如果停车场不满的话,便道里等候的第一辆车进入停车场,进入停车场的时间为停车场中车辆出来的时间,再设计一个函数用来显示停车场以及便道中车辆的信息。
二程序流程图:三,程序代码:#include<stdio.h>#define Size 3 /*车库容量*/#define Price 5 /*单位价格*/#define Null 0typedef struct time{int hour; /*时间结点*/}Time;typedef struct{int car_number;Time arrivetime,leavetime; /*车信息结点*/ int fee;}car_info;typedef struct{car_info *north;car_info *south; /*停车场信息*/int number;}car_park;typedef struct{car_info *west;car_info *east; /*倒车场信息*/int number;}car_park_back;Typedef struct car{car_info *data;struct car *next; /*结点信息*/}carnode;typedef struct node{carnode *head;carnode *rear; /*便道信息*/int number;}car_park_temp;void init_car_park(car_park *cp){cp->north=(car_info *)malloc(Size * sizeof(car_info)); /*初始化停车场*/ if(!cp->north) printf("error\n");cp->south=cp->north; /*令栈顶等于栈底*/cp->number=0;}void enter_car_park(car_park *cp,car_info *car){*cp->south++=*car; /*车辆进入停车场*/cp->number++;}int notfull_car_park(car_park *cp){int e;if(cp->south-cp->north>=Size) /*判断常常是否已满*/e=0;elsee=1;return(e);int notempty_car_park_back(car_park_back *cpb){int e;if(cpb->east==cpb->west)e=0; /*判断倒车场是否不空*/ elsee=1;return(e);}void back_car_park(car_park *cp,car_info *car){*car=*cp->south; /*进行倒车操作*/cp->number--;}void init_car_park_back(car_park_back *cpb){cpb->west=(car_info *)malloc(Size *sizeof(car_info));if(!cpb->west) printf("error\n"); /*倒车场初始化*/cpb->east=cpb->west;cpb->number=0;}void enter_car_park_back(car_park_back *cpb,car_info *car) {*cpb->east++=*car;cpb->number++; /*进入倒车场操作*/}void leave_car_park_back(car_park_back *cpb,car_info *car) {*car=*--cpb->east;cpb->number--; /*离开倒车场操作*/void init_car_park_temp(car_park_temp *cpt){cpt->head=cpt->rear=(carnode *)malloc(sizeof(carnode)); /*初始化便道*/ cpt->head->next=Null;cpt->number=0;}void enter_car_park_temp(car_park_temp *cpt,car_info *car){carnode *p;p=(carnode *)malloc(sizeof(carnode)); /*进入便道操作*/p->data=car;p->next=Null;cpt->rear->next=p;cpt->rear=p;cpt->number++;}void leave_car_park_temp(car_park_temp *cpt,car_info *car,car_park *cp) {carnode *p;p=cpt->head->next;car=p->data; /*离开便道操作*/cpt->head->next=p->next;enter_car_park(cp, car); /*进入停车场操作*/cpt->number--;}int notempty_car_park_temp(car_park_temp *cpt){int e;if(cpt->head==cpt->rear) /*判断便道是否为空*/e=0;elsee=1;return(e);}void leave_car_park(car_park *cp,car_info *car,car_park_back *cpb){int e, a1,b1,t; /*定义时间变量*/car_info *car1,*car2;car1=(car_info *)malloc(sizeof(car_info)); /*车辆实体化*/car2=(car_info *)malloc(sizeof(car_info));while((--cp->south)->car_number!=car->car_number) /*判断车号是否为要出去的车号*/ {back_car_park(cp,car1); /*进行倒车操作*/enter_car_park_back(cpb,car1); /*进入倒车场*/}car->arrivetime.hour=cp->south->arrivetime.hour;a1=car->arrivetime.hour;b1=car->leavetime.hour;t=(b1-a1);car->fee=t*Price; /*计算价格*/printf("the time of the car is %3d hour\n",t);printf("the money is %3d yuan\n",car->fee);e=notempty_car_park_back(cpb); /*判断倒车场是否为空*/while(e==1){leave_car_park_back(cpb,car2); /*离开倒车场enter_car_park(cp,car2); 进入停车场e=notempty_car_park_back(cpb); 判断倒车场是否为空*/}cp->number--;}void main() /*主函数*/{char ch; /*定义字符和int e,n,i; 整形变量*/car_park_back *cpb; /* 定义停车场,倒车场以及便道的变量*/ car_park *cp;car_park_temp *cpt,*cpt2;car_info *car;cp=(car_park *)malloc(sizeof(car_park)); /*实体化变量*/cpb=(car_park_back *)malloc(sizeof(car_park));cpt=(car_park_temp *)malloc(sizeof(car_park_temp));init_car_park(cp); /*实体化停车场,倒车场,便道*/init_car_park_back(cpb);init_car_park_temp(cpt);do{car=(car_info *)malloc(sizeof(car_info));printf("\ninput the 'A' or 'L' or 'X' ,end with '0' :");/*输入待操作的命令*/ scanf("%s",&ch);e=notfull_car_park(cp); /*判断车场是否为空*/switch(ch) /*判断要输入的命令*/{case 'A':if(e==1) /*车场不满,进入车辆*/{printf("input the car_number:"); /*输入车辆的基本信息*/scanf("%d",&car->car_number);printf("input the arrivetime:");scanf("%d",&(*car).arrivetime.hour);enter_car_park(cp,car); /*进入车场*/printf("the car is in the car_park,the place is %d\n",cp->number);}else /*若车场满,进入便道*/{enter_car_park_temp(cpt,car);printf("input the car_number:");scanf("%d",&car->car_number);printf("the car is in the car_park_temp,the place of temp is %d\n",cpt->number);}break;case 'L': /*离开停车场*/printf("input the car_number:"); /*输入要离开车辆的号码以及离开时间*/scanf("%d",&car->car_number);printf("input the leavetime of the car:");scanf("%d",&(*car).leavetime.hour);leave_car_park(cp,car,cpb); /*执行离开车场*/i=(*car).leavetime.hour; /*令便道里车辆进入车场的时间和车场里面的车离开的时间相等*/n=notempty_car_park_temp(cpt); /*判断便道是否不空*/if(n==1)printf("The car %d",cpt->head->next->data->car_number); /*记住便道里第一辆车的号码*/ leave_car_park_temp(cpt,car,cp); /*离开便道,进入停车场*/printf(" is enter the car_park,arrivetime is %d ,the place of carpark is %d\n",i,cp->number);break;case 'X': /*查看车场以及便道里的车辆信息*/printf("\nThere are %d cars in car park!\nFolowing is the carnumber in the car park:\n ",cp->number);for(i=1;i<=cp->number;i++) /*做循环,依次输出停车场里车辆的信息*/printf("%d,",(cp->north++)->car_number);cp->north=cp->north-cp->number;cpt2->head=cpt->head; /*设一个虚拟指针使其指向头结点的下一个位置*/ if(cpt->number==0) /*便道里没有车的情况*/printf("\nThere is no cars in temp!") ;else{ printf("\nThere are %d cars in car temp!\nFolowing is the carnumber in the car temp:\n ",cpt->number);for(i=1;i<=cpt->number;i++) /*做一个循环,输出便道里车辆的信息*/ {printf("%d ",cpt2->head->next->data->car_number); /* 输出车辆的号码*/ cpt2->head=cpt2->head->next;}}break;default:break; /*退出循环*/}}while(ch!='0'); /*退出操作*/}。
一、课程设计内容1.有一个两层的停车场, 每层有6个车位, 当第一层车停满后才允许使用第二层. ( 停车场可用一个二维数组实现, 每个数组元素存放一个车牌号 ) 每辆车的信息包括车牌号, 层号, 车位号, 停车时间共4项. 其中停车时间按分钟计算2. 假设停车场初始状态为第一层已经停有4辆车, 其车位号依次为1—4 , 停车时间依次为20, 15, 10 , 5 . 即先将这四辆车的信息存入文件”car.txt”中( 数组的对应元素也要进行赋值 )3. 停车操作: 当一辆车进入停车场时, 先输入其车牌号, 再为它分配一个层号和一个车位号(分配前先查询车位的使用情况, 如果第一层有空则必须停在第一层), 停车时间设为5 , 最后将新停入的汽车的信息添加文件”car.txt”中, 并将在此之前的所有车的停车时间加5.4. 收费管理(取车): 当有车离开时, 输入其车牌号, 先按其停车时间计算费用, 每5分钟0.2元. (停车费用可设置一个变量进行保存), 同时从文件”car.txt”中删除该车的信息, 并将该车对应的车位设置为可使用状态(即二维数组对应元素清零). 按用户的选择来判断是否要输出停车收费的总计.5. 输出停车场中全部车辆的信息.6. 退出系统.实验程序流程图停车输入2输入0 开始 输出提示信息,进入选项1-停车 2-取车 3-退出系统输入1 进入管理系统 进入停车流程 退出管理系统 车离开停车场开始 进入停车场管理系统 判断一楼是否有空位 车停入一楼 车停入二楼 输入停车信息,车牌号,车位,停车让时间(预设为5 ) 车进入停车场Y N取车开始进入管理系统输入取车的信息(车牌号或车位号)弹出取车信息(车牌号,车位号,停车费用)车离开停车场实验源程序#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#define N 12void park();//停车void getout();//取车并计算停车费用int x=4;int Time=0;struct C{char car_number[8];//车牌号int fooler;//层数int carport;//车位号int time;//停车时间}Car[N]={{"031098X",1,1,20},{"223X334",1,2,15},{"47328J3",1,3,10},{"3232G34",1, 4,5}};//初始化void main(){char choose,ch='\0';FILE*fp=NULL;fp=fopen("car.txt","aw");if(fp==NULL){printf("\n 打开文件失败!\n");return;}fprintf(fp," 车牌号码层数车位号停车时间\n");for(int i=0;i<=3;i++){fprintf(fp,"%10s%5d%5d%10d\n",Car[i].car_number,Car[i].fooler,Car[i].carport,Ca r[i].time);}do{printf("请输入选择的编号:(0--2)\n");system("cls");printf("*********************************\n"); printf("1--- 停车\n");printf("2--- 取车,并计算停车费用\n");printf("0--- 退出\n");printf("********************************\n"); choose=getch();switch(choose){case '1':park();break;case '2':getout();break;case '0':exit(0);default : printf("您输入的为非法选项!\n");}printf("要继续吗?(Y or N)");scanf("%c",&ch);}while (ch=='Y'||ch=='y') ;}void park(){FILE*fp=NULL;fp=fopen("car.txt","w");if(fp==NULL){printf("\n 打开文件失败!\n");return;}printf("请输入车牌号码(以#开头):");do{//gets(Car[x].car_number);getchar();gets(Car[x].car_number);// scanf("%s",&Car[x].car_number);}while(strcmp(Car[x].car_number," ")==0);for(int j=0;j<=11;j++){if(Car[j].fooler==0){if(j<6)Car[x].fooler=1;else if (j>=6)Car[x].fooler=2;Car[x].carport=++j;break;}}Car[x].time=Time;for(int i=0;i<=x;i++){ Car[i].time+=5;}printf("登记成功!\n");printf(" 车牌号码层数车位号停车时间\n");printf(" %5s%5d%5d%10d\n",Car[x].car_number,Car[x].fooler,Car[x].carport,Car[x] .time);fprintf(fp," 车牌号码层数车位号停车时间\n");for(i=0;i<=x;i++)fprintf(fp,"%10s%5d%5d%10d\n",Car[i].car_number,Car[i].fooler,Car[i].carport,Ca r[i].time);x++;}void getout(){struct C temp={0};double M=0;FILE*fp=NULL;fp=fopen("car.txt","w");if(fp==NULL){printf("\n 打开文件失败!\n");return;}printf("请输入您停车的车位号:");//改成车位号比较方便计算(1234车位号已经初始化了)// getchar();//吃掉一个字符// gets(temp.car_number);scanf("%d",&temp.carport);// for(int i=0;i<=x;i++)//{//if(!strcmp(temp.car_number,Car[x].car_number))// break;//}for(int i=0;i<=x;i++){if(temp.carport==Car[i].carport)break;}if(i>x){printf("无此辆车的记录!\n");return ;}else{M=(double)Car[i].time*0.2;printf("停车费用为:%5.1f\n",M);}Car[i].fooler=0;fprintf(fp," 车牌号码层数车位号停车时间\n");for(i=0;i<=x;i++){while(Car[i].fooler!=0)fprintf(fp,"%10s%5d%5d%10d\n",Car[i].car_number,Car[i].fooler,Car[i].carport,Ca r[i].time);return ;}}。
停车场管理系统c语言课程设计随着城市化进程的加快,人们的生活质量不断提高,汽车已经成为了现代人出行的主要方式。
然而,随着汽车数量的增加,停车难题也日益凸显。
传统的停车方式已经无法满足人们的需求,因此停车场的建设和管理也变得越来越重要。
为了更好地管理停车场,本文设计了一款停车场管理系统。
二、需求分析本系统需要实现以下功能:1. 停车位管理:实现对停车位的管理,包括停车位的添加、删除、修改和查询等操作。
2. 车辆管理:实现对车辆的管理,包括车辆的进入、离开、查询和计费等操作。
3. 收费管理:实现对车辆的计费管理,包括按小时计费和按天计费。
4. 报表统计:实现对停车场的报表统计,包括车位使用情况、收入情况等。
三、系统设计1. 数据结构设计本系统主要包括两个数据结构:停车位和车辆。
停车位包括编号、位置、状态等信息;车辆包括车牌号、进入时间、离开时间、停车位等信息。
2. 界面设计本系统的界面采用命令行界面,用户可以通过输入命令来完成对系统的操作。
界面包括以下命令:添加停车位:add_space删除停车位:del_space修改停车位:mod_space查询停车位:query_space车辆进入:car_in车辆离开:car_out查询车辆:query_car计费管理:charge报表统计:report退出系统:exit3. 算法设计本系统的算法主要包括车辆进入、离开和计费等算法。
车辆进入:当车辆进入停车场时,系统需要检查是否有空闲停车位,如果有则将车辆停放在该停车位上,并记录车辆信息;如果没有则提示用户无法停车。
车辆离开:当车辆离开停车场时,系统需要计算停车时长并根据收费标准计算费用,并将车辆信息从停车位中删除。
计费管理:系统需要根据停车时长和收费标准计算车辆的费用,包括按小时计费和按天计费。
四、实现过程本系统采用C语言实现,主要包括以下模块:1. 停车位管理模块:实现对停车位的添加、删除、修改和查询等操作。
面向对象程序设计(C++)课程大作业设计题目:停车场管理系统设计院系: 计算机科学与信息工程学院专业班级:学号姓名:指导教师:一、成员分工 (1)二、需求分析 (2)三、总体设计 (3)四、详细设计 (6)五、系统测试 (17)六、总结 (20)七、参考文献 (21)一成员分工我们小组成员共有三名,分别是,为了能按时圆满的完成这次VC++课程设计,我们小组进行了详细的分工,以确保设计能按时完成。
经过周密的考虑和详细的调查最终确定该停车场管理系统需要以下几个功能模块:(1需求分析(2)界面的设计(3)添加功能(4)显示功能(5)查询功能(6)编辑功能(7)删除功能(8)统计功能(9)保存功能(10)读取功能经过小组成员的讨论,并根据个人的特长和具体爱好做如下具体分工神1具体完成以下模块的设计与实现:(1)需求分析(2)界面的设计(3)添加功能(4)保存功能神2具体完成以下模块的设计与实现:(1)显示功能(2)查询功能(3)显示功能神3主要具体完成以下模块的设计与实现:(1)编辑功能(2)删除功能(3读取功能二需求分析1.问题描述定义车辆类,属性有车牌号、颜色、车型(小汽车、小卡、中卡和大卡)、至U达的时间和离开的时间等信息和相关的对属性做操作的行为。
定义一个管理类,完成对停车场的管理。
停车场的具体要求:设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等待,一旦有车开走,则排在便道上的第一辆车即可开入;每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
2.基本要求(1)添加功能:程序能够添加到达停车场的车辆信息,要求车辆的车牌号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。
(2)查询功能:可根据车牌号、车型等信息对已添加的停车场中的车辆信息进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息;(3)显示功能:可显示当前系统中所有车辆的信息,每条记录占据一行。
一、课程设计容
1.有一个两层的停车场, 每层有6个车位, 当第一层车停满后才允许使用第二层. ( 停车场可用一个二维数组实现, 每个数组元素存放一个车牌号) 每辆车的信息包括车牌号, 层号, 车位号, 停车时间共4项. 其中停车时间按分钟计算
2. 假设停车场初始状态为第一层已经停有4辆车, 其车位号依次为1—4 , 停车时间依次为20, 15, 10 , 5 . 即先将这四辆车的信息存入文件”car.txt”中( 数组的对应元素也要进行赋值)
3. 停车操作: 当一辆车进入停车场时, 先输入其车牌号, 再为它分配一个层号和一个车位号(分配前先查询车位的使用情况, 如果第一层有空则必须停在第一层), 停车时间设为5 , 最后将新停入的汽车的信息添加文件”car.txt”中, 并将在此之前的所有车的停车时间加5.
4. 收费管理(取车): 当有车离开时, 输入其车牌号, 先按其停车时间计算费用, 每5分钟0.2元. (停车费用可设置一个变量进行保存), 同时从文件”car.txt”中删除该车的信息, 并将该车对应的车位设置为可使用状态(即二维数组对应元素清零). 按用户的选择来判断是否要输出停车收费的总计.
5. 输出停车场中全部车辆的信息.
6. 退出系统.
实验程序流程图
停车
取车
实验源程序
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#define N 12
void park();//停车
void getout();//取车并计算停车费用int x=4;
int Time=0;
struct C
{
char car_number[8];//车牌号
int fooler;//层数
int carport;//车位号
int time;//停车时间
}Car[N]={{"031098X",1,1,20},{"223X334",1,2,15},{"47328J3",1,3,10},{"3232G34",1,4,5}};/ /初始化
void main()
{
char choose,ch='\0';
FILE*fp=NULL;
fp=fopen("car.txt","aw");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
fprintf(fp," 车牌层数车位号停车时间\n");
for(int i=0;i<=3;i++)
{
fprintf(fp,"%10s%5d%5d%10d\n",Car[i].car_number,Car[i].fooler,Car[i].carport,Car [i].time);
}
do{
printf("请输入选择的编号:(0--2)\n");
system("cls");
printf("*********************************\n");
printf("1--- 停车\n");
printf("2--- 取车,并计算停车费用\n");
printf("0--- 退出\n");
printf("********************************\n");
choose=getch();
switch(choose)
{
case '1':park();break;
case '2':getout();break;
case '0':exit(0);
default : printf("您输入的为非法选项!\n");
}
printf("要继续吗?(Y or N)");
scanf("%c",&ch);
}while (ch=='Y'||ch=='y') ;
}
void park()
{
FILE*fp=NULL;
fp=fopen("car.txt","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
printf("请输入车牌(以#开头):");
do{
//gets(Car[x].car_number);
getchar();
gets(Car[x].car_number);
// scanf("%s",&Car[x].car_number);
}while(strcmp(Car[x].car_number," ")==0);
for(int j=0;j<=11;j++)
{
if(Car[j].fooler==0)
{
if(j<6)
Car[x].fooler=1;
else if (j>=6)
Car[x].fooler=2;
Car[x].carport=++j;
break;
}
}
Car[x].time=Time;
for(int i=0;i<=x;i++)
{ Car[i].time+=5;
}
printf("登记成功!\n");
printf(" 车牌层数车位号停车时间\n");
printf(" %5s%5d%5d%10d\n",Car[x].car_number,Car[x].fooler,Car[x].carport,Car[x] .time);
fprintf(fp," 车牌层数车位号停车时间\n");
for(i=0;i<=x;i++)
fprintf(fp,"%10s%5d%5d%10d\n",Car[i].car_number,Car[i].fooler,Car[i].carport,Car [i].time);
x++;
}
void getout()
{
struct C temp={0};
double M=0;
FILE*fp=NULL;
fp=fopen("car.txt","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
printf("请输入您停车的车位号:");//改成车位号比较方便计算(1234车位号已经初始化了)
// getchar();//吃掉一个字符
// gets(temp.car_number);
scanf("%d",&temp.carport);
// for(int i=0;i<=x;i++)
//{
//if(!strcmp(temp.car_number,Car[x].car_number))
// break;
//}
for(int i=0;i<=x;i++)
{
if(temp.carport==Car[i].carport)
break;
}
if(i>x)
{
printf("无此辆车的记录!\n");
return ;
}
else
{
M=(double)Car[i].time*0.2;
printf("停车费用为:%5.1f\n",M);
}
Car[i].fooler=0;
fprintf(fp," 车牌层数车位号停车时间\n");
for(i=0;i<=x;i++)
{
while(Car[i].fooler!=0)
fprintf(fp,"%10s%5d%5d%10d\n",Car[i].car_number,Car[i].fooler,Car[i].carport,Car [i].time);
return ;
}
}。