文档库 最新最全的文档下载
当前位置:文档库 › C语言课程设计-停车场管理系统

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

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

停车场管理系统

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); /*退出*/

}

}

初始化模块设计:

【需求分析】

该模块是将每一天开始的停车场内和便道车位清零。首先建立场内场外的结构体,结构体内成员即车位的状态。用循环实现车位的致零即可。

struct changnei/*场内车道信息*/

{

int neikong;

}chn[N-1];

struct changwai/*场外车道信息*/

{

int waikong;

}chw[M-1];

N和M分别是停车场和便道的车位预设值,用宏定义。用户可根据实际情况改变。

#define N 100/*预设停车场有100个车位*/

#define M 100/*预设便道有100个出位*/

void chushi()/*初始化函数*/

{

int i,j;

for(i=0;i<=N-1;i++)

chn[i].neikong=0;/*将场内车道设置为空*/

for(j=0;j<=M-1;j++)

chw[i].waikong=0;/*将便道车道设置为空*/

printf("\n\n\t\t已初始化\n\n");

menu();

}

函数出示化后将回到菜单界面。

车辆进入函数:

【需求分析】

车辆到达后,要指定车辆的停车位置。用户根据菜单函数进入车辆进入模块。按照每辆车的到达次序给予车辆次序号,由0号开始。车辆信息也建立结构体。

struct car/*车辆信息*/

{

int car_num;/*车辆次序号*/

int car_arr;/*车辆到达时间*/

int car_lef;/*车辆离开时间*/

int car_stay;/*车辆停放位置*/

}car[CIXUHAO];

其中,CIXUHAO是车辆次序号的宏定义:

#define CIXUHAO 1000/*预设车辆次序号。不管车辆到达时停在场内或便道,均依次设置一个次序号,由0开始*/

给予车辆次序号之后,用循环判断停车场是否停满,再分别给予选择:

void jinru()/*车辆进入函数*/ { int i,a; int h=0; printf("\n\n 请输入该车次序号(从0号开始):"); scanf("%d",&a); for(i=0;i

printf("该车应该停在停车场内第道%d (从 printf("请输入该车进停车场时刻(24小时整点

计时):\n"); scanf("%d",&car[a].car_arr); }

便道上还有车吗?

menu();

}

程序执行完后回到菜单。 车辆离开函数: 【需求分析】

若有一辆车要离开,则需要记 录该车的离开时间,以计算出该车 在停车场内的停车时间和应该缴纳

的费用。该车离开后,要判断便道

上是否有车等待进入,如有,则将

便道上第一辆车停放在停车场内最

后的位置并记录好进场时间;若无,

则返回菜单。

void likai()/*车辆离开函数*/

{ int i,k,choi,time;

double fee;

printf("请输入离开车辆次序号[ ],并将此车之后的车先全部退出停车场!");

scanf("%d",&i);

printf("\n请输入离开车辆的离开时刻(24小时整点计时):\n");

scanf("%d",&car[i].car_lef);

fee=D*(car[i].car_lef-car[i].car_arr);

time=car[i].car_lef-car[i].car_arr;

printf("次序号为%d的车停车时间%d小时,应收费%f元\n",i,time,fee);

printf("\n\n\n请让场内退出的车再依次进场!\n\n\n");

printf("便道上现在有车吗?(请选择1或2)\n1.有\n2.没有\n");/*因便道上可能没有车,因此要做选择*/

scanf("%d",&choi);

if(choi==2)

{

menu();

}

if(choi==1)

{

printf("请让便道上的第一辆车进场\n");

printf("该车次序号为:\n");

scanf("%d",&k);

printf("请输入该车进场时间:\n");

scanf("%d",&car[k].car_arr);

menu();

}

}

D为预设停车场单位小时费用,用宏定义,便于以后修改。#define D 1.2/*预设车辆停车费为1.2元每小时*/

5上机操作

(1)主菜单函数

(2)初始化操作

(3)有车进入

以上分别举例0,1,2三个车的进场情况(4)有车离开

若便道上没车,则退回到主菜单

若便道上有车

6总结

通过该实例的实习,要求大家进一步理解和运用结构化程序设计的思想和方法,初步掌握开发一个小型实用系统的基本方法,学会调试较长的程序,学会利用流程图表示算法,进一步掌握和提高利用C语言进行程序设计的能力。

7原程序代码

#include

#include

#include

#define N 100/*预设停车场有100个车位*/

#define M 100/*预设便道有100个出位*/

#define D 1.2/*预设车辆停车费为1.2元每小时*/

#define CIXUHAO 1000/*预设车辆次序号。不管车辆到达时停在场内或便道,均依次设置一个次序号,由0开始*/

void menu();

void chushi();

void jinru();

void likai();

struct car/*车辆信息*/

{

int car_num;/*车辆次序号*/

int car_arr;/*车辆到达时间*/

int car_lef;/*车辆离开时间*/

int car_stay;/*车辆停放位置*/

}car[CIXUHAO];

struct changnei/*场内车道信息*/

{

int neikong;

}chn[N-1];

struct changwai/*场外车道信息*/

{

int waikong;

}chw[M-1];

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);/*退出*/

}

}

void chushi()/*初始化函数*/

{

int i,j;

for(i=0;i<=N-1;i++)

chn[i].neikong=0;/*将场内车道设置为空*/

for(j=0;j<=M-1;j++)

chw[i].waikong=0;/*将便道车道设置为空*/

printf("\n\n\t\t已初始化\n\n");

menu();

}

void jinru()/*车辆进入函数*/

{

int i,a;

int h=0;

printf("\n\n请输入该车次序号(从0号开始):");

scanf("%d",&a);

for(i=0;i

{

if(chn[i].neikong==0);/*无车标记0*/

if(chn[i].neikong==1)/*有车标记1*/

h=h+1;

}

if(h==N)

printf("停车场内已停满,请停在便道上\n");

else

{

car[a].car_stay=h;

chn[h].neikong=1;

printf("该车应该停在停车场内第道%d(从0道开始记)\n",h);

printf("请输入该车进停车场时刻(24小时整点计时):\n");

scanf("%d",&car[a].car_arr);

}

menu();

}

void likai()/*车辆离开函数*/

{ int i,k,choi,time;

double fee;

printf("请输入离开车辆次序号[ ],并将此车之后的车先全部退出停车场!");

scanf("%d",&i);

printf("\n请输入离开车辆的离开时刻(24小时整点计时):\n");

scanf("%d",&car[i].car_lef);

fee=D*(car[i].car_lef-car[i].car_arr);

time=car[i].car_lef-car[i].car_arr;

printf("次序号为%d的车停车时间%d小时,应收费%f元\n",i,time,fee);

printf("\n\n\n请让场内退出的车再依次进场!\n\n\n");

printf("便道上现在有车吗?(请选择1或2)\n1.有\n2.没有\n");/*因便道上可能没有车,因此要做选择*/

scanf("%d",&choi);

if(choi==2)

{

menu();

}

if(choi==1)

{

printf("请让便道上的第一辆车进场\n");

printf("该车次序号为:\n");

scanf("%d",&k);

printf("请输入该车进场时间:\n");

scanf("%d",&car[k].car_arr);

menu();

}

}

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

停车场管理系统 1题目要求 设有一个可以停放n 辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n 辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车站。停车站内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车站为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制一程序模拟该停车场的管理。 【基本要求】要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场是的停车时间及它应该交的费用。 2需求分析 根据题目要求,因为停车场是一个单条的序列,可以用结构体实现;在程序中,需要知道每辆来车的具体停放位置,应提供提示、查找、标记工作。车辆离开要计时计费。另外,每天开始时,停车场要初始化。 3总体设计 这个系统可以分为:初始化、有车进入、有车离开、退出四个模块。 4详细设计 main()函数体内包含了界面选则部分menu(),并单独 抽出来作为一个独立函数,目的在于系统执行每部分 模块后能够方便返回到系统界面。即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; /*车辆进入函数*/

停车场管理系统源代码

// 停车场管理系统 #include #include #define OVERFLOW 0 #define ERROR 0 #define OK 1 #define STACKSIZE 2 /车/ 库容量 // 时间节点typedef struct time{ int hour; int min; }Time; // 车辆信息typedef struct{ char CarNum; float time; int pos_a; // 车在停车场中的位置int pos_b; // 车 在便道上的位置int flag; }Car,Car2; // 车库信息 (顺序栈) typedef struct{ Car *top; Car *base; int stacksize; }SqStack; // 初始化int InitStack(SqStack &S){ S.base=new Car[STACKSIZE]; if(!S.base) exit(OVERFLOW); S.top=S.base; S.stacksize=STACKSIZE; return OK; } // 判空int StackEmpty(SqStack S){ if(S.top==S.base) return OK; else return ERROR;

// 判满 int StackFull(SqStack S){ if(S.top-S.base>=S.stacksize) return OK; else return ERROR; } // 入栈 int Push(SqStack &S,Car e){ if(S.top-S.base==S.stacksize) return ERROR; *S.top++=e; return OK; } // 出栈 int Pop(SqStack &S,Car &e){ if(S.top==S.base) return ERROR; e=*--S.top; return OK; } // 遍历栈 int StackTraverse(SqStack S) { Car *p=S.top; Car *q=S.base; int l=1; if(StackEmpty(S)){ for(int j=1;j<=STACKSIZE;j++){ printf("\t 车牌:"); printf("\t\t 到达时间:"); printf("\t 位置%d:空空",j); printf("\n"); } return OK; } while(p!=q){ Car car=*(q); printf("\t 车牌: %d",car.CarNum); printf("\t\t 到达时 间: %5.2f",car.time); printf("\t\t 位置: %d",l++); printf("\n"); q++; return OK; } // 备用车道 (顺序栈) typedef struct { Car2 *top2; Car2 *base2; // int stacksize2; }SqStack2;

停车场管理系统 c语言

2015-2016学年第二学期《高级语言程序设计》 课程设计报告 题目:停车场管理系统 专业:计算机科学与技术 班级:15级计科<1>班 姓名:胡玉玉 指导教师:陈广宏 成绩: 计算机学院 2016 年 4月 25 日

目录 1. 设计内容及要求 (1) 1.1 课程设计内容 (1) 1.2 课程设计的要求 (2) 2概要设计 (3) 2.1 设计思路 (3) 2.2 程序基本框架结构图 (4) 3设计过程或程序代码 (5) 3.1 主要程序代码及解释 (5) 4设计结果与分析 (13) 4.1 程序运行结果截图与分析 (13) 5参考文献 (16)

1.设计内容及要求 1.1 课程设计内容 ①通过本次课程设计,强化上级动手能力,在理论和实践的基础 上巩固《C语言程序设计》课程的学习内容。掌握软件设计的基本方法。 ②熟悉C语言的基本内容从而掌握C语言的基本知识以及了解C 语言的基本编写及运行。 ③了解程序的分模块编写并对程序的每个模块进行详细的设计并 且能理解一般C语言编写的程序。 ④掌握书写程序设计说明文档的能力。 ⑤熟悉C程序设计的开发环境及C程序的调试过程 1.2 课程设计的要求 ①分析课程设计题目的要求。 ②写出详细设计说明。 ③编写程序代码,调试程序使其能正确运行。 ④设计完成的软件要便于操作和使用。 ⑤设计完成后提交课程设计报告。

2.概要设计 2.1设计思路 停车场是一个可停放n辆汽车的狭长通道,并只有一个大门可供汽车进出,汽车在停车场内按车辆到达的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),如车长内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用,以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理.每一组输入数据包括三个数据项:汽车”到达” 或”离去”信息,汽车牌照号码以及到达或离去的时刻(到达或离去的时刻也可用计算机控制).对每一组输入数据进行操作后的输入信息为:如是车辆到达,则输入汽车在停车场。 2.2程序基本框架结构图

停车场管理系统C语言实现1

一.问题描述 1.实验题目: 设停车场是一个可停放n 辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端)。若停车场内已经停满n辆车,那么后来的车只能在门外的便道上等候。一旦有车开走,则排在便道上的第一辆车即可开入。当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场。每辆停放在车场的车在它离开停车场时必须按它停留的时间长短缴纳费用。试为停车场编制按上述要求进行管理的模拟程序。 要求:根据各结点的信息,调用相应的函数或者语句,将结点入栈入队,出栈或者出队。 二.需求分析 1.程序所能达到的基本可能: 程序以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入数据的序列进行模拟管理。栈以顺序结构实现,队列以链表结构实现。同时另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车。输入数据按到达或离去的时刻有序。当输入数据包括数据项为汽车的“到达”(‘A’表示)信息,汽车标识(牌照号)以及到达时刻时,应输出汽车在停车场内或者便道上的停车位置;当输入数据包括数据项为汽车的“离去”(‘D’表示)信息,汽车标识(牌照号)以及离去时刻时,应输出汽车在停车场停留的时间和应缴纳的费用(便道上停留的时间不收费);当输入数据项为(‘P’,0,0)时,应输出停车场的车数;当输入数据项为(‘W’, 0, 0)时,应输出候车场车数;当输入数据项为(‘E’, 0, 0),退出程序;若输入数据项不是以上所述,就输出"ERROR!"。 2.输入输出形式及输入值范围: 程序运行后进入循环,显示提示信息:“Please input the state,number and time of the car:”,提示用户输入车辆信息(“到达”或者“离开”,车牌编号,到达或者离开的时间)。若车辆信息为“到达”,车辆信息开始进栈(模拟停车场),当栈满,会显示栈满信息:“The parking place is full!”,同时车辆进队列(模拟停车

停车场管理系统源代码

//停车场管理系统 #include #include #define OVERFLOW 0 #define ERROR 0 #define OK 1 #define STACKSIZE 2 //车库容量 //时间节点 typedef struct time{ int hour; int min; }Time; //车辆信息 typedef struct{ char CarNum; float time; int pos_a; //车在停车场中的位置 int pos_b; //车在便道上的位置 int flag; }Car,Car2; //车库信息(顺序栈) typedef struct{ Car *top; Car *base; int stacksize; }SqStack; //初始化 int InitStack(SqStack &S){ S.base=new Car[STACKSIZE]; if(!S.base) exit(OVERFLOW); S.top=S.base; S.stacksize=STACKSIZE; return OK; } //判空 int StackEmpty(SqStack S){ if(S.top==S.base) return OK; else return ERROR; }

//判满 int StackFull(SqStack S){ if(S.top-S.base>=S.stacksize) return OK; else return ERROR; } //入栈 int Push(SqStack &S,Car e){ if(S.top-S.base==S.stacksize) return ERROR; *S.top++=e; return OK; } //出栈 int Pop(SqStack &S,Car &e){ if(S.top==S.base) return ERROR; e=*--S.top; return OK; } //遍历栈 int StackTraverse(SqStack S) { Car *p=S.top; Car *q=S.base; int l=1; if(StackEmpty(S)){ for(int j=1;j<=STACKSIZE;j++){ printf("\t车牌:"); printf("\t\t到达时间:"); printf("\t位置%d:空空",j); printf("\n"); } return OK; } while(p!=q){ Car car=*(q); printf("\t车牌: %d",car.CarNum); printf("\t\t到达时间:%5.2f",car.time); printf("\t\t位置:%d",l++); printf("\n");

大学 C语言 停车场管理系统 设计c语言课程设计 (含调试图)

Xxxxx大学 xxxxxxxxxxx系 20xx-20xx学年第一学期 《C程序设计》课程设计 题目名称:停车场管理系统设计 姓名: 学号: 班级: 指导教师: 编写日期: 20 年1月5日—20 年1月31日 成绩:

目录 (一)需求分析 (3) 1-1停车 (3) 1-2取车 (3) 1-3功能的选择 (3) (二)总体设计(程序设计组成框图) (3) 2-1停车模块 (3) 2-2取车模块 (3) 2-3车辆信息浏览模块 (4) 2-4程序设计组成框图 (4) (三)详细设计 (4) 3-1停车场分析 (4) 3-2停车操作 (4) 3-3收费管理(取车) (5) 3-4车辆信息 (5) 3-5退出系统 (5) (四)程序运行结果测试与分析 (5) (五)结论与心得 (7) (六)参考文献 (7) (七)致谢 (8) 附录: (8)

(一)需求分析 1-1停车 车辆信息要用文件存储,因而要提供文件的输入输出操作。 1-2取车 当车离开时,要删除文件中该车的信息,因而要提供文件的删除操作。 1-3功能的选择 提供现实操作和用键盘式菜单实现功能选择。 (二)总体设计(程序设计组成框图) 2-1停车模块 对车辆信息赋值,分配前检查车位使用情况(按行查找park 数组,元素为0 表示车位为空,则允许分配)。把新添加的车辆信息以追加的方式写入汽车信息文件,并更改汽车信息文件中其他汽车信息的停车时间(停车时间加5)。 2-2取车模块 计算费用(停车费用=停车时间*0.2 元),从文件中删除该车信息。并将该车位对应的二位数组变量设为0,表示该车位可用。输出提示信息:是否输出停车费用总计?(Y/N)如果选择Y,则输出停车费用,否则回到上级菜单。

停车场管理系统 C语言实习报告

C 语 言 课 程 实 习 报 告 【要求】 设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进来的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制一程序模拟停车场管理。 【提示】 汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去的时刻)。 基本要求:要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某

辆车离开停车场时应交纳的费用和它在停车场内停留的时间。 根据题目要求,停车场可以用一个长度为n 的堆栈来模拟。由于停车场内如有某辆车要开走,在它之后进来的车辆都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场,所以可以设两个堆栈。 一、需求分析 根据题目要求,程序应该提供“到达/离去,汽车牌照号码,到达/离去”的输入、输出操作;在程序中需要浏览停车场的车位信息,应提供显示、查找、排序等操作;此外还应提供键盘式菜单实现功能选择。 二、总体设计: 根据需求分析,可以将系统的设计分为以下五大模块:(1)车辆进入;(2)车辆退出; (3)车辆等待;(4)车辆查询;(5)退出。 一、详细设计: 主函数中只包含菜单函数,菜单部分单独写成函数,只提供输入、功能处理和输出部分的函数调用,其中各功能模块用菜单方式选择。 [程序] #define N 30 /*等待车辆*/ #define M 20 /*车位*/ #define P 2 /*单位时间所收费用*/ #include #include #include struct cars /*定义车辆信息*/ { char state; int num; int in_time; 停车场 管理系统 车辆进入 车辆退出 车辆等待 车辆信息 显示 车辆查询 退出系统

停车场模拟管理系统报告(附源代码)

实训报告 专业: 班级: 学号: 姓名: 课设题目:停车场模拟管理系统指导教师:

目录 一、需求分析 (1) 二、总体设计 (1) 2.1系统功能概述 (1) 三、到达停车场准备进入停车场 (2) 3.1进入停车场函数 (2)

四、离开停车场 (3) 五、详细设计 (5) 5.1函数的调用关系 (5) 5.2主要算法的流程图 (6) 六、软件说明: (7) 6.1使用环境:Visual C++ 6.0. (7) 操作要求:程序运行后,用户根据所要进行的操作选择是进入停车场还是离开停车场并输入车牌号和时间 (7) 6.2测试图: (7) 七、总结 (9) 附录:程序代码 (9)

一、需求分析 停车场模拟管理系统现在很多的大型超市等都有智能的停车场当你进入停车场门口就会自动的显示里面还有多少的空位并且指引你走到空的车位停下避免了把车辆开进去并且找不到空的车位和因为车子在停车场内乱走而导致想出来的车没有足够的时间出来。导致空间和时间各种不必要的麻烦所以急需我们做一个停车场管理系统。我们的停车场模拟管理系统有以下方面功能: 1 记录进入停车场的车辆的车牌号从而进入后可以知道其所停的停车位。 2 车子离开停车场根据离开时间和进入时间从而计算出所需要交的费用。 3 如果队列已经满了可以让要进入停车场的车子停在旁边的等候队列。 二、总体设计 2.1系统功能概述 (1) 如果选择进入停车场就要判断停车场是否已经满了,如果未满直接进

入,如果满了的话就直接排在旁边的便道上等待有车子离开停车场从而进入停车场。 (2)同时改程序还设立多了一个位置以便与有车进入同时有车离开可以停留在这里等候车子离开再进入。(以防止车子停车场内的车未能离开进入的车又正在进入从而导致停车场堵塞的情况) (3)离开的时候根据离开的车牌号从而把它从停车场中的位置移开并且通过离开时间和进入停车场的时间来计算出该车子所需要交纳的费用。 如果等候队列不为空的话进入停 2.11 总体设计图 三、到达停车场准备进入停车场 void parkingmanagement::arrival(carstack &cs,carqueue &cq,int cnum,double ctime)

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

停车场管理一 一.要求: 1.设计一个停车场用长度为N的堆栈来模拟。由于停车场内如有某辆车要开走,在它之后进来的车都必须先退出为它让道,待其开出停车场后,这些车再依原来的顺序进入。 2.程序输出每辆车到达后的停车位置,以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。 二、程序中所采用的数据结构及存储结构的说明 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。栈以顺序结构实现,队列以链表实现。 程序中分别采用了“栈”和“队列”作为其存储结构。 “栈”的定义可知,每一次入栈的元素都在原栈顶元素之上成为新的元素,每一次出栈的元素总是当前栈顶元素使次栈元素成为新的栈顶元素,即最后进栈者先出栈。程序中采用的结构是: typedef struct NODE{ CarNode *stack[MAX+1]; int top; }SeqStackCar; /*模拟车库*/ “队列”是限定所有插入操作只能在表的一端进行,而所有的删除操作都只能在表的另一端进行。插入端叫队尾,删除端叫对头。按先进先出规则进行。程序中采用的结构是:typedef struct Node{ QueueNode *head; QueueNode *rear; }LinkQueueCar; /*模拟通道*/ 三、算法的设计思想 由于停车场是一个狭窄通道,而且只有一个大门可供汽车进出,问题要求汽车停车

场内按车辆到达时间的先后顺序,依次由北向南排列。由此很容易联想到数据结构中的堆栈模型,因此可首先设计一个堆栈,以堆栈来模拟停车场,又每个汽车的车牌号都不一样,这样一来可以根据车牌号准确找到汽车位置,所以堆栈里的数据元素我设计成汽车的车牌号。当停车场内某辆车要离开时,在他之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入停车场。这是个一退一进的过程,而且让道的汽车必须保持原有的先后顺序,因此可再设计一个堆栈,以之来暂时存放为出站汽车暂时让道的汽车车牌号。当停车场满后,继续进来的汽车需要停放在停车场旁边的便道上等候,若停车场有汽车开走,则按排队的先后顺序依次进站,最先进入便道的汽车将会最先进入停车场,这完全是一个先进先出模型,因此可设计一个队列来模拟便道,队列中的数据元素仍然设计成汽车的车牌号。另外,停车场根据汽车在停车场内停放的总时长来收费的,在便道上的时间不计费,因此必须记录车辆进入停车场时的时间,车辆离开停车场时的时间不需要记录,当从终端输入时可直接使用。由于时间不象汽车一样需要让道,我设计了一个顺序表来存放时间。又用顺序表用派生法设计了一个堆栈,恰好满足上面模拟停车场的需要。 四.设计原理、框图

停车场管理系统c语言

停车场管理系统c 语言

- 第二学期 《高级语言程序设计》 课程设计报告 题目:停车场管理系统 专业:计算机科学与技术班级:15级计科<1>班 姓名:胡玉玉 指导教师:陈广宏 成绩: 计算机学院 年 4月 25 日 目录

1. 设计内容及要求 (1) 1.1 课程设计内容 (1) 1.2 课程设计的要求 (2) 2 概要设计 (3) 2.1 设计思路 (3) 2.2 程序基本框架结构图 (4) 3 设计过程或程序代码 (5) 3.1 主要程序代码及解释 (5) 4 设计结果与分析 (13) 4.1 程序运行结果截图与分析 (13) 5参考文献 (16)

1.设计内容及要求 1.1 课程设计内容 ①经过本次课程设计,强化上级动手能力,在理论和实践的基 础上巩固《C语言程序设计》课程的学习内容。掌握软件设计的基本方法。 ②熟悉C语言的基本内容从而掌握C语言的基本知识以及了解 C语言的基本编写及运行。 ③了解程序的分模块编写并对程序的每个模块进行详细的设计 而且能理解一般C语言编写的程序。 ④掌握书写程序设计说明文档的能力。 ⑤熟悉C程序设计的开发环境及C程序的调试过程 1.2 课程设计的要求 ①分析课程设计题目的要求。 ②写出详细设计说明。 ③编写程序代码,调试程序使其能正确运行。 ④设计完成的软件要便于操作和使用。 ⑤设计完成后提交课程设计报告。

2.概要设计 2.1设计思路 停车场是一个可停放n辆汽车的狭长通道,并只有一个大门可供汽车进出,汽车在停车场内按车辆到达的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),如车长内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入; 当停车场内某辆车要离开时,在它后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用,以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理.每一组输入数据包括三个数据项:汽车”到达”或”离去”信息,汽车牌照号码以及到达或离去的时刻(到达或离去的时刻也可用计算机控制).对每一组输入数据进行操作后的输入信息为:如是车辆到达,则输入汽车在停车场。 2.2程序基本框架结构图

停车场管理系统代码

// 1、停车场管理.cpp : Defines the entry point for the console application. // ^include stdafx.h*' ^include vcon 1o.h> ^include ^include ^include ^include //清空当前屏幕 #define ClearScreen() system( 'cls M ) 〃设置背景前景颜色 //#define setcolor() system(u color 2f ) //显不字符串szPrompt并等待用户按下任意键 #define Pause( szPrompt) printf( %s: szPrompt ),getch() typedef struct carinformation // 车辆信息 { char szRegistrationMark[64]; // 车牌号 char szArrivalTime[16]; // 到达时间 char szEntranceT1me[16]; //进入停车场(开始计费)时间 char szDepartureTime[16]; // 离开时间 } TCARINFORMATION, *LPTCARINFORAAATION; typedef struct carstack { LPTCARINFORMATION IpCarlnformation; // 车辆信息 int nTop; //栈顶元素下标 int nStackSize; // 栈容量

经典C源码 之 停车场管理系统

停车场管理系统 #include "stdio.h" #define STACKSIZE 2 struct Car { char Label; float InTime; }; struct StackCar { struct Car *Top; struct Car *BottomStack; int Size; }; int StackInitial(struct StackCar *stackcar) { stackcar->BottomStack=(struct Car *)malloc(STACKSIZE*sizeof(struct Car)); if(!(stackcar->BottomStack)) return 0; stackcar->Top=stackcar->BottomStack; stackcar->Size=STACKSIZE; return 1; } int StackEmpty(struct StackCar stackcar) { if(stackcar.Top==stackcar.BottomStack) return 1; return 0; } int StackFull(struct StackCar stackcar) { if(stackcar.Top-stackcar.BottomStack>=STACKSIZE) return 1; return 0; } int Push(struct StackCar *stackcar,struct Car car) { if(stackcar->Top-stackcar->BottomStack>=STACKSIZE) return 0; *(stackcar->Top++)=car; return 1; } int Pop(struct StackCar *stackcar,struct Car *car)

数据结构c语言版课程设计停车场管理系统

课程设计:停车场 c语言版本的数据结构课程设计,要求用栈模拟停车场,用队列模拟便道,实现停车场的收费管理系统

停车场停满车后车会停在便道上面 下面附上源码,vc:(下编译 #include //#include //malloc #include //获取系统时间所用函数#include //getch() #include //设置光标信息 mallco #define MaxSize 5 /*定义停车场栈长度*/ #define PRICE 0.05 /*每车每分钟收费值*/

#define BASEPRICE 0.5 //基础停车费 #define Esc 27 //退出系统 #define Exit 3 //结束对话 #define Stop 1 //停车 #define Drive 2 //取车 int jx=0,jy=32; //全局变量日志打印位置 typedef struct {int hour; int minute; }Time,*PTime; /*时间结点*/ typedef struct /*定义栈元素的类型即车辆信息结点*/ {int num ; /*车牌号*/ Time arrtime; /*到达时刻或离区时刻*/ }CarNode; typedef struct /*定义栈,模拟停车场*/ {CarNode stack[MaxSize]; int top; }SqStackCar; typedef struct node /*定义队列结点的类型*/ {int num; /*车牌号*/ struct node *next; }QueueNode; typedef struct /*定义队列,模拟便道*/ {QueueNode *front,*rear; }LinkQueueCar; /*函数声明*/ PTime get_time(); CarNode getcarInfo(); void qingping(int a); void gotoxy(int x,int y); void printlog(Time t,int n,int io,char ab,int po,double f); void printstop(int a,int num,int x0,int y0); void printleave(int a,int po,int num); /*初始化栈*/ void InitSeqStack(SqStackCar *s) { s->top=-1; } /* push入站函数 */ int push(SqStackCar *s,CarNode x) //数据元素x入指针s所指的栈

停车场管理系统的代码

设停车场是一个可停放n辆车的狭长通道,且只有一个大门可供汽车进出。在停车场内,汽车按到达的先后次序,由北向南依次排列(假设大门在最南端)。若车场内已停满n辆车,则后来的汽车要在门外的便道上等候,当有车开走时,便道上的第一辆车即可开入。当停车场内某辆车要离开时,在它之后进去的车辆必须先推出车场为它让路,待该辆车开出大门以后,其他车辆再按原次序返回车场。每辆车离开停车场时,应按其停留时间的长短交费(在便道上停留的时间不收费)。试编写程序,模拟上述管理过程。要求以顺序栈模拟停车场,以链队列模拟便道。从终端读入汽车到达或离去的数据,每组数据包括三项:(1)是“到达”还是“离去”(2)汽车牌照号码;(3)“到达”或“离去”的时刻。与每组输入信息相应的输出信息为:如果是到达的车辆,则输出其在停车场中或便道上的位置;如果是离去的车辆,则输出其在停车场中停留的时间和应缴的费用。(需另设一个栈,临时停放为让路而从车场退出的车。) #include #define M 5 using namespace std; typedef int Datatype; typedef struct { Datatype bianhao[M]; int top; int h[M]; //时 int m[M]; //分 int s[M]; //秒 }Seqstack; //停车场栈的定义 typedef struct Node //便道结点,表示一辆汽车 { Datatype bianhao; struct Node *next; }node; typedef struct { node *front; node *rear; int count;

C语言 停车场管理系统

附件二【学生用】 西北农林科技大学信息工程学院 数据结构实习报告 题目:停车场管理系统 学号2011013200 姓名阮屹 专业班级电子商务111 指导教师戴涛、杨会君 实践日期2012-7-6至2012-7-15

目录 一、综合训练目的与要求 (1) 二、综合训练任务 (1) 三、总体设计 (1) 四、详细设计说明 (1) 五、调试与测试 (7) 六、实习日志 (13) 七、实习总结 (13) 八、附录:核心代码清单 (14)

一、综合训练目的与要求 正文 综合训练的目的 本综合训练是计算机科学与技术、信息管理与信息系统、软件工程专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》、《数据结构》课程后进行的一次全面的综合练习。本课综合训练的目的和任务: 1. 巩固和加深学生对C语言、数据结构课程的基本知识的理解和掌握 2. 掌握C语言编程和程序调试的基本技能 3. 利用C语言进行基本的软件设计 4. 掌握书写程序设计说明文档的能力 5. 提高运用C语言、数据结构解决实际问题的能力 综合训练要求 1. 分析综合训练题目的要求 2. 写出详细设计说明 3. 编写程序代码,调试程序使其能正确运行 4. 设计完成的软件要便于操作和使用 4. 设计完成后提交课程设计报告 二、综合训练任务 通过此系统可以实现如下功能: 若是车辆到达,则输入汽车在停车场内或便道上的停车位置以及进站时间,当车子出站时,则显示在停车场内停车时间,并;应当支付的金额 要求:设计合理的存储结构,设计界面,设计程序完成功能; 三、总体设计 该程序是模拟了一个特殊车站,车站是一条直线,只有一个入口,车子要出站则他前边的车子都要为其让路,然后再回来并且覆盖出站车子原来的位置,这明显是一个要用到栈的环境。而当车站满了之后,便在一旁的便道里排队等待,先排队的当然先进车站。这是原题,我做了些许改动,设计了会员系统,会员享受9折优惠并且有会员专用便道,在车站满的情况下优先进入车站。 四、详细设计说明 整体设计如上,那么现在详细分析程序。这个程序每辆车实际在内存中保存了两次,一个是在主函数中的Car c的结构体数组中,一个在栈或队列中,而不是只用栈来储存,这样方便后来的车辆的查找和程序的管理,当然这样也相对好编写程序,思路相对清晰。这也是我本身对数据结构不熟练的结果。程序中用到的结构体:

停车场管理系统数据库设计

停车场管理系统数据库设计说明书 文档名称数据库设计说明书 撰写人 审核/批准 创建时间

目录 1.目的.................................................................................................. 错误!未定义书签。 2.概念设计阶段 (4) 全局E-R图 (4) 3.逻辑设计阶段 (5) 任务与结果 (5) 4.物理设计阶段 (6) 功能模块图 (7) 5.数据库实施阶段 (9) 建立数据库 (9) 1.目的 21世纪以来,现代化产业高速发展,汽车作为日常交通工具已经普及社会的每一个角落,给人们的日常生活带来了极大的便利。但是随着汽车拥有量的急剧增加,车辆停放的问题随

之而来,如果没有合理的停放规则和秩序,势必引起许多不必要的麻烦,反而给生活带来不便。 停车场作为交通设施的组成部分,随着交通运输的繁忙和不断发展,人们对其管理的要求也不断提高,都希望管理能够达到方便、快捷以及安全的效果。目前的许多停车场还处于一种纯人工的管理的模式,在车辆的管理上效率低下,而且十分容易出错。因此需要一种合适的管理系统来解决这些问题,达到高效,简易的效果,给广大人民的出行带来方便。 2.概念设计阶段 全局E-R图:

E-R图属性如下所示: 车辆:Car (Carno,Carsb,Carcolor) Carno是主码; 车位:Ffed(Cwno,Cwpace,Carno,Carpho,Caradd,Cartel,Carmon) Cwno是主码; 收费:Moneyt (Timetype,Montime) 停车:Stop (Cwno,Carno,Carin,Carout,Timetype,Cwtype,Montime) Cwno和Carno是外码; 3.逻辑设计阶段 任务与结果 数据组织 车辆信息 列名数据类型是否为主码是否为外码取值范围可否为空含义说明Carno Char 是否否车牌号码Carsb Char 否否可车辆品牌Carcolor Char 否否可车辆颜色 车位信息 列名数据类型是否为主码是否为外码取值范围可否为空含义说明Cwno Char 是否否车位编号Cwpace Char 否否否车位位置Cwtype Char 否否否车位类型Carno Char 否否可车牌号码Carpho Bit 否否可车牌号码Caradd Char 否否可车辆颜色Cartel Char 否否可车辆照片Carmon Float 否否100~200 可联系地址 停车信息 列名数据类型是否为主码是否为外码取值范围可否为空含义说明Cwno Char 否是否车位编号Carno Char 否是否车牌号码Carat Bit 否否否在位情况Carin datetime 否否否进入时间Carout datetime 否否可离开时间 否时间段Timetype Char(6) 是否高峰、一般、 低谷

C语言综合程序设计停车场管理系统.doc

综合性程序设计报告 设计题目:____停车场管理系统___________ 指导教师: _______________ 班级: _____________ 学号: _______________ 设计者: _______________ 成绩: _______________ 设计时间: 年月日

停车场管理系统 目录 1.题目描述 2.功能模块分解及说明 3.数据库设计及说明 4.界面说明 5.主要算法说明 6.代码清单及注释 7.设计测试说明 8.设计体会 停车场管理系统 1.题目描述 停车场的基本概述:用于利用计算机实现停车场的管理,包括车位调度,停车记费。车位记录,收费管理与计算。停车场的主要功能: 1.车位调度。 2.停车时间与费用的计算。 3.车位记录。 2.功能模块分解及说明 根据题目要求,可以用结构体实现,在程序中,需要知道每辆来车的具体停放位置,应提供提示、查找、标记工作。车辆离开要计时计费。另外,每天开始时,停车场要初始化。 所以,这个系统可以分为:初始化、有车进入、有车离开、退出四个模块。 ○1菜单函数: main()函数体内包含了界面选则部分menu(),并单独 抽出来作为一个独立函数,目的在于系统执行每部分 模块后能够方便返回到系统界面。即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车道信息 该模块是将每一天开始的停车场内和便道车位清零。首先建立场内场外的结构体,结构体内成员即车位的状态。用循环实现车位的致零即可。 struct changnei/*场内车道信息*/ { int neikong; }chn[N-1]; struct changwai/*场外车道信息*/ { int waikong; }chw[M-1]; N和M分别是停车场和便道的车位预设值,用宏定义。用户可根据实际情况改变。

停车场管理系统源代码

停车场管理系统源代码

//停车场管理系统 #include #include #define OVERFLOW 0 #define ERROR 0 #define OK 1 #define STACKSIZE 2 //车库容量 //时间节点 typedef struct time{ int hour; int min; }Time; //车辆信息 typedef struct{ char CarNum; float time; int pos_a; //车在停车场中的位置int pos_b; //车在便道上的位置 int flag; }Car,Car2;

//车库信息(顺序栈) typedef struct{ Car *top; Car *base; int stacksize; }SqStack; //初始化 int InitStack(SqStack &S){ S.base=new Car[STACKSIZE]; if(!S.base) exit(OVERFLOW); S.top=S.base; S.stacksize=STACKSIZE; return OK; } //判空 int StackEmpty(SqStack S){ if(S.top==S.base) return OK; else r eturn ERROR; }

//判满 int StackFull(SqStack S){ if(S.top-S.base>=S.stacksize) return OK; else r eturn ERROR; } //入栈 int Push(SqStack &S,Car e){ if(S.top-S.base==S.stacksize) return ERROR; *S.top++=e; return OK; } //出栈 int Pop(SqStack &S,Car &e){ if(S.top==S.base) return ERROR; e=*--S.top; return OK; }

相关文档
相关文档 最新文档