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

合集下载

C语言:停车场管理系统

C语言:停车场管理系统

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<malloc.h>#include<time.h>//获取系统时间#include<conio.h>//包含屏幕操作函数#define NULL 0#define LEN sizeof(struct car)//用于存放时间typedef struct time{int intimeyear;int intimemounth;int intimeday;int intimehour;int intimeminute;int intimesecond;//驶入时间,驶入时系统获取int outtimehour;int outtimeminute;int outtimesecond;//驶出时间}TIME;//用于存放车辆信息typedef struct car{int number;//在头指针中代表空车位,在其它指针中代表其车位号,从1-15按顺序char license[10];//每辆车自己的型号TIME time;//时间struct car *next;}CAR;//用于存放每日费用,并写入文件,便于计算一个月收入struct oneday{int tyear;int tmounth;int tday;int onedayfee;}one;CAR *creat();void inbigcar();//驶入一辆大型客车或货车void inmiddlecar();//驶入一辆中型客车或货车void insmallcar();//驶入一辆轿车int outbigcar();//输出一辆大型客车或货车int outmiddlecar();//开出一辆中型客车或货车int outsmallcar();//开出一辆轿车void lookup1();//分别输出A区,B区,C区当前所停放的汽车的信息void lookup2();//分别输出A区,B区,C区当前空闲的车位号void lookup3();//输入车牌号,输出该车所停放的车位号void lookup4();//输出A区,B区,C区当前所停放的汽车的数量void lookup5();//输入当前时间,分别统计A区,B区,C区到当前时间为止,停车时间超过5小时的汽车数量,并输出这些汽车的信息void lookup6();//输入一个日期(年.月),统计该月停车场的收费金额int onemoufee(int year,int mounth);//计算一个月的收入CAR *Ahead,*Bhead,*Chead;void main(){printf("\n\n\n\n================================================================== ==============\n\n\n\n");printf("\t\t********欢迎使用Light停车场管理系统!********\n\n\n\n\n");printf("========================================================================= =======\n\n\n\n");printf("\t\t\t 请按任意键进入\n");getchar();FILE *fp,*fp1;int year,mounth,day,hour,m,n=1,i=0;int Amoney=0,Bmoney=0,Cmoney=0,summoney=0;if((fp=fopen("table.txt","a"))==NULL){printf("Cannot open file!\n");exit(0);}//end if创立一个文件,以便记录Ahead=creat();Bhead=creat();Chead=creat();time_t nowtime;struct tm *timeinfo;time( &nowtime );timeinfo = localtime( &nowtime );one.tyear =year= timeinfo->tm_year + 1900;one.tmounth =mounth=timeinfo->tm_mon + 1;one.tday =day= timeinfo->tm_mday;hour = timeinfo->tm_hour;printf("%d\n",hour);if(hour<6||hour>=22){system("cls");printf("\n\n\n=================================================================== =============\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("\t\t * Light停车场管理系统close *\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("\t\t * 营业时间:6:00-22:00 *\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("\t\t * 请您营业时间再来!*\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("========================================================================= =======\n");printf("\n\t\t\t\t请按任意键结束\n");getchar();exit(0);}//end iffprintf(fp,"%d年%d月%d日",year,mounth,day);while(n==1){system("cls");printf("\n");printf("========================================================================= =======\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("\t\t * Light停车场管理系统*\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("\t\t * 欢迎使用!*\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("========================================================================= =======\n\n");printf("\t 1. 停车 3. 查询\n");printf("\t 2. 取车0. 退出\n\n");printf("\t 请选择: ");scanf("%d",&m);switch(m){case 1:while(n==1){system("cls");printf("\t\t欢迎您停车!\n\n\t\t请选择您的停车区域\n");printf("--------------------------------------------------------------------------------\n\n");printf("\t 1. A区停放轿车 3. C区停放大型客车或货车\n");printf("\t 2. B区停放中型客车或货车0. 退出\n\n");printf("\t 请选择您需要的服务(0-3):");printf("\n\t 请选择: ");scanf("%d", &m);getchar();//驶入状况下选择车型switch(m){case 1:insmallcar();break;case 2:inmiddlecar();break;case 3:inbigcar();break;case 0:break;default:printf("You input the wrong number.\n");}//end switchprintf("\n\t如果您想继续停车,请输入1;如果想进入主菜单或退出,请输入任意数字:");printf("\n\t 请选择: ");scanf("%d",&n);}break;case 2: while(n==1){system("cls");printf("\t\t欢迎您取车!\n\n\t\t请选择您的取车的区域!\n");printf("--------------------------------------------------------------------------------\n\n");printf("\t 1. 从A区取轿车 3. 从C区取大型客车或货车\n");printf("\t 2. 从B区取中型客车或货车0. 退出\n\n");printf("--------------------------------------------------------------------------------\n");printf("\t 请选择您需要的服务(0-3):");scanf("%d", &m);getchar();//驶出状况下选择车型switch(m){case 1:Amoney=outsmallcar();break;case 2:Bmoney=outmiddlecar();break;case 3:Cmoney=outbigcar();break;case 0:break;default:printf("You input the wrong number.\n");}printf("\n\t如果您想继续开车,请输入1;如果想进入主菜单或退出,请输入0:");printf("\n\t 请选择: ");scanf("%d",&n);}one.onedayfee =summoney=Amoney+Bmoney+Cmoney;break;case 3: while(n==1){system("cls");printf("--------------------------------------------------------------------------------\n");printf("\t欢迎进入管理系统\t\n");printf("--------------------------------------------------------------------------------\n");printf("What do you want to look up?\n");printf("1、分别输出A区,B区,C区当前所停放的汽车的信息;\n");printf("2、分别输出A区,B区,C区当前空闲的车位号;\n");printf("3、输入车牌号,输出该车所停放的车位号;\n");printf("4、输出A区,B区,C区当前所停放的汽车的数量;\n");printf("5、输入当前时间,分别统计A区,B区,C区到当前时间为止,停车时间超过5小时的汽车数量,并输出这些汽车的信息;\n");printf("6、输入一个日期(年.月),统计该月停车场的收费金额。

停车场管理系统--c语言

停车场管理系统--c语言
t->data=a.num;
t->next=NULL;
q->rear->next=t;
q->rear=t;//q->rear=q->rear->next;
printf("%d号车进入便道等待\n",q->rear->data);
q->geshu++;
}
}
int D_cars(SqStack *s,LinkQueue *q,struct car d)
{QNODE *front,*rear;
int geshu;
}LinkQueue;
QNODE *head;
struct Dcar dd[MAXSIZE];
A_cars(SqStack *s,LinkQueue *q,struct car a)
{QNODE *t, *p;
printf(" ** 停车场管理系统 ** \n");
printf(" ** ** \n");
a=s->top;
printf("停车场内车辆数: %d\n",(s->top)+1);
printf("停车场内剩余空位:%d\n",3-s->top);
printf("详细信息:\n");
while(s->top>=0)
{printf("%d号车,%d时停车\n",(s->G[s->top]).num,(s->G[s->top]).time);
{int i,j,l;

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

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车道信息该模块是将每一天开始的停车场内和便道车位清零。

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

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

C语言课程设计报告目录一、题目要求,需求分析二、总体设计思路与功能模块划分三、程序设计四、程序运行测试五、总结前言计算机科学技术的发展,不仅极大地促进了整个科学技术的发展,而且明显地加快了经济信息化和社会信息化的进程。

因此,计算机教育在全国备受重视,计算机知识与能力已成为21世纪人才素质的基本要素之一。

如今,高等教育的计算机教育发展十分迅速。

十多年前,只有部分理工科专业开设计算机课程。

今天,几乎所有高校的所有专业都开设了程度不同的计算机课程。

人们已经认识到,计算机知识已成为当代知识分子知识结构中不可缺少的重要组成部分。

而除了掌握计算机的基础知识和操作的基本能力外,掌握一门高级编程语言,并可以熟练运用它,已成为当代大学生综合能力必要组成。

计算机技术发展如此迅猛,计算机应用如此广泛,需要学习的东西愈来愈多,而我们的总学时是有限的。

一般来说,计算机课程学习可以分为两部分:一部分是理论课程学习,一部分是上机应用实习。

根据我们专业的性质和要求,则应侧重于上机操作运用。

为此,学校特意在本学期最后安排了32个学时的上机实习。

现将一星期的实习内容及结果分析分列如下:一、题目要求:27.停车场管理21、有一个两层的停车场,每层有6个车位,当第一层车停满后才允许使用第二层,(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共4项,其中停车时间按分钟计算。

2、假设停车场初始状态为第一层已经停有4辆车,其车位号依次为1-4,停车时间依次为20,15,10,5。

即先将这四辆车的信息存入文件“car.dat"中(数组的对应元素也要进行赋值)。

3、停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件"car.dat"中,并将在此之前的所有车的停车时间加5。

c语言实现停车场管理系统

c语言实现停车场管理系统

c语言实现停车场管理系统#include#include #include#define Size 2#define price 5typedef struct { char num[20]; int reachtime; int leavetime; }carinfo;typedef struct stack{ carinfo car[5]; int top;}Stack;typedef struct Node{ carinfo data; struct Node*next; }QueueNode;typedef struct { QueueNode *front; QueueNode *rear;}Queue,*linkQueue;int EnterQ(Queue *Q,carinfo x); int inistack(Stack *S) //初始化栈{S->top=-1; return 1;}void Push(Stack *S,carinfo x) //进栈操作{S->top++; S->car[S->top]=x;printf(" 进站成功!"); }void Pop(Stack *S,carinfo x) //出栈操作{ if(S->top=-1) printf(" 空栈,无法出栈!");x=S->car[S->top];S->top--;printf(" 出栈成功!");}IsEmpty(Stack *S) // 判断栈空{ if(S->top==-1) return 1;elsereturn 0;}int iniQueue(Queue *Q) //初始化便道{Q->front=(QueueNode *)malloc(sizeof(QueueNode)); //申请节点if(Q->front!=NULL){Q->rear=Q->front;Q->front->next=NULL;return 1;}else return 0;}int EnterQ(Queue *Q,carinfo x) //进便道{QueueNode *newNode;newNode=(QueueNode *)malloc(sizeof(QueueNode)); if(newNode!=NULL){ newNode->data=x; newNode->next=NULL;Q->rear->next=newNode; Q->rear=newNode; return 1;}else return 0;}int DeleteQ(Queue *Q,carinfo x) // 出便道{QueueNode *p; p=Q->front->next;if(Q->front==Q->rear) //判断便道是否有车return 0;x=p->data;if(p->next==Q->rear)Q->rear=Q->front;Q->front->next=NULL;}Q->front->next=p->next; free(p); return 1;}void Lpush(Stack *S,carinfo x){ Push(S,x); //进临时栈}void LPop(Stack *S,carinfo x){Pop(S,x);}int Arrive(Stack *S,Queue *Q) // 车辆到达{carinfo x;int a;printf(" 输入车牌号:"); scanf("%s",x.num); printf(" 请输入进车场的时间:");scanf("%d",&x.reachtime);if(S->top==Size-1){printf(" 车场已满,不能进入,进便道");//递归调用进便道操作a=EnterQ(Q, x);if(a==1){ printf("OK\n");} else printf("No!\n");}else{ Push(S,x);} return 1;}int Departure(Stack *S) // 车辆离开操作{int money;。

C语言实现停车管理系统

C语言实现停车管理系统

C语⾔实现停车管理系统本题为⼤家分享了C语⾔实现停车管理系统的具体代码,供⼤家参考,具体内容如下设计题⽬设停车场是⼀个可以停放n辆汽车的南北⽅向的狭长通道,且只有⼀个⼤门可供汽车进出。

汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(⼤门在最南端,最先到达的第⼀辆车停放在车场的最北端),若车场内已停满n辆车,那么后来的车只能在门外的便道上等候,⼀旦有车开⾛,则排在便道上的第⼀辆车即可开⼊;当停车场内某辆车要离开时,在它之后进⼊的车辆必须先退出车场为它让路,待该辆车开出⼤门外,其它车辆再按原次序进⼊车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费⽤。

试为停车场编制按上述要求进⾏管理的模拟程序。

要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应缴纳的费⽤和它在停车场内停留的时间。

需求分析由于停车场只有⼀个⼤门,当停车场内某辆车要离开时,在它之后进⼊的车辆必须先退出车场为它让路,先进停车场的后退出,后进车场的先退出,符合栈的“后进先出,先进后出”的操作特点,因此,可以⽤⼀个栈来模拟停车场。

⽽当停车场满后,继续来到的其它车辆只能停在便道上,根据便道停车的特点,先排队的车辆先离开便道进⼊停车场,符合队列的“先进先出,后进后出”的操作特点,因此,可以⽤⼀个队列来模拟便道。

排在停车场中间的车辆可以提出离开停车场,并且停车场内在要离开的车辆之后到达的车辆都必须先离开停车场为它让路,然后这些车辆依原来到达停车场的次序进⼊停车场,因此在前⾯已设的⼀个栈和⼀个队列的基础上,还需要有⼀个地⽅保存为了让路离开停车场的车辆,由于先退出停车场的后进⼊停车场,所以很显然保存让路车辆的场地也应该⽤⼀个栈来模拟。

因此,本题求解过程中需⽤到两个栈和⼀个队列。

栈以顺序结构实现,队列以链表结构实现。

程序代码#include#include<stdlib.h>#include<stdio.h>#include#define MAXSIZE 5#define price 0.01#pragma warning(disable: 4996)using namespace std;typedef struct time {int hour;int min;}Time;/时间结点/typedef struct carnews {char num[10];Time reach;Time leave;}CarNode;/车辆信息结点/typedef struct NODE {CarNode* stack[MAXSIZE + 1];int top; //栈可⽤的最⼤容量}SeqStackCar;/模拟停车场/typedef struct car {CarNode* data;struct car* next;}QueueNode; //模拟车进⼊便道,便道的车进⼊停车场typedef struct Node {QueueNode* head; //头指针QueueNode* rear; //尾指针}LinkQueueCar;/模拟便道/void InitStack(SeqStackCar*); //创建空栈int InitQueue(LinkQueueCar*); //创建空队列int Arrival(SeqStackCar*, LinkQueueCar*); //车辆到达void Leave(SeqStackCar*, SeqStackCar*, LinkQueueCar*); //车辆离开void PRINT(CarNode*, int); //输出离开车辆的信息清单void List(SeqStackCar, LinkQueueCar); //对所⽤到的函数作提前声明int main() {SeqStackCar Enter, Temp;LinkQueueCar Wait;int ch;InitStack(&Enter);//初始化车站InitStack(&Temp);//初始化让路的临时栈InitQueue(&Wait);//初始化通道while (1) {cout << "@欢迎使⽤本停车管理系统@" << endl;cout << “----------------------------------------------------------------” << endl;cout << " # # 1.车辆到达 # # " << endl;cout << " # # 2.车辆离开 # # " << endl;cout << " # # 3.列表显⽰ # # " << endl;cout << " # # 4.退出系统 # # " << endl;cout << “----------------------------------------------------------------” << endl;cout << “!说明:请注意正确输⼊时间,在输⼊‘时'后,按‘ENTER'或者‘空格',再输⼊‘分'。

C程序设计-停车场管理系统(流程设计图)

C程序设计-停车场管理系统(流程设计图)

3 2
N
Y
是否继续
N
退出程序 退出程序
主菜单
主菜单
Y
退出程
主菜单 出站模块流程图
停车场管理 1
主菜单
浏览、显示信息
入站
出站
退站
系统功能模块图
主函数
主菜单
主函数流程图
显示一系列功能选项
输入 n 判断 n 是否为 0~4
N
Y 根据 n 的值调用其他功能模块函数 主菜单模块流程图
浏览、显示模块
从文件中读取站内车辆信息
显示所读信息
从文件中读取便道停车信
显示所读信息
是否继续
N
Y
返回主菜单
退出程序
查询、显示模块程图
入站模块
从文件中读出站内停车信息
Y
记录空位信息
查询站内是否有空位
N
从文件中读出便道停车信息
车辆入站,记录信息
查询便道是否有空位
将信息存入文件
记录空位信息
是否继续
Y
是否继续
N
N
车辆入站,记录信息
主菜单
Y
主菜单 Y
退出 退出程序
将信息存入文件
程序
是否继续
N
Y
主菜单 入站模块流程图
退出程序
出站模块
输入车辆车牌
从文件中读取站内车辆信息
查询该车所在的位
Y
输出该车的信息,安排出站
该车是否在站内
N
从文件中读取便道停车信息
安排该车出站,更新站内信息
查询该车所在的位
从文件中读取便道停车信息 该车是否在便道内
N
便道内是否有 车
输出该车的信息,安排出站

C语言版停车位管理系统

C语言版停车位管理系统

C语⾔版停车位管理系统本⽂实例为⼤家分享了C语⾔实现停车位管理系统的具体代码,供⼤家参考,具体内容如下简单功能介绍1、录⼊车辆信息2、查找车辆信息3、删除车辆信息4、修改车辆信息5、查找区域车辆信息6、排序(按照车主姓名排序)7、展⽰所有车辆信息8、将录⼊的数据保存在⽂件中9、将⽂件中的数据读出算法构造链表的增删改查结构体的定义typedef struct Parking{char name[20]; //车主姓名char carname[10]; //车牌号long information; //车主联系⽅式char region; //车位区域编号int num; //车位编号struct Parking *next; //指针}Parking;录⼊车辆信息利⽤尾插法插⼊新添加的数据Parking *Addcar(Parking *head) //录⼊车辆信息{int x;system("cls"); //清屏操作system("color B"); //改变字体颜⾊Parking *p = head;while(p->next!=NULL) //利⽤尾插法插⼊新⽤户信息{p = p->next;}printf("输⼊需要添加的车辆个数:");scanf("%d", &x);while(x--) //输⼊⽤户信息{system("cls");Parking *Node = (Parking *)malloc(sizeof(Parking));printf("\n输⼊⽤户姓名:");scanf("%s",Node->name);printf("\n输⼊车牌号:");scanf("%s",Node->carname);printf("\n输⼊车主联系⽅式:");scanf("%ld",&Node->information);printf("\n输⼊车位区域编号:");getchar();scanf("%c",&Node->region);printf("\n输⼊车位编号:");scanf("%d",&Node->num);Node->next=NULL;p->next = Node;p = p->next;}printf("\n输⼊完成!");F(head); //打印添加后的⽤户信息printf("\n按任意键返回主页\n");getch(); //⽤来显⽰结果return head;}删除⽤户信息根据⽤户名匹配查找⽤户信息进⾏删除Parking *Delete(Parking *head) //删除⽤户信息{char name[20];system("cls");system("color B");printf("\n\t\t输⼊你要删除的⽤户姓名:");scanf("%s", name);Parking *p = head;Parking *q = p->next;while(q) //找到需要删除数据的前结点{if(strcmp(q->name,name)==0) //判断字符串是否相等函数{p->next = q->next;free(q); //释放内存空间break;}p = q;q = p->next;}if(p->next==NULL){printf("\n\t\t未找到该⽤户信息!");}else{printf("\n\t\t删除成功!!");F(head);}printf("\n\t\t按任意键返回主菜单");getch();return head;}查找⽤户信息根据字符串匹配查找⽤户信息void Find(Parking *head) //查找⽤户信息{system("cls");system("color B");char name[20];printf("\n\t\t输⼊你要查找的⽤户姓名:");scanf("%s", name);Parking *p = head;while(p->next){if(strcmp(p->next->name,name)==0){printf("找到了!\n");printf("该⽤户的信息如下:");printf("\n\t\t---⽤户姓名 %s",p->next->name);printf("\n\t\t---车牌号 %s",p->next->carname);printf("\n\t\t---车主联系⽅式 %ld",p->next->information); printf("\n\t\t---车位区域编号 %c",p->next->region);printf("\n\t\t---车位编号 %d",p->next->num);break;}p = p->next;}if(p->next==NULL)printf("\n\t\t没有找到该⽤户信息");printf("\n\t\t按任意键返回主菜单");getch();}修改⽤户信息查找⽤户找到后显⽰该⽤户的信息,根据⽤户选择修改信息Parking *Change(Parking *head) //修改⽤户信息{char name[20];system("cls");system("color B");printf("输⼊需要修改的⽤户姓名:");scanf("%s", name);Parking *p = head->next;while(p){if(strcmp(p->name,name)==0){system("cls");system("color B");int x;printf("\n\t\t --该⽤户信息-- \n\n");printf("\t---------------------------------------------------------------------\n");printf("\t车主姓名--------车牌号-------车主联系⽅式---车位区域编号-----车位编号----\n");printf("\t%-17s%-16s%-15ld%-16c%-17d\n", p->name, p->carname, p->information, p->region, p->num); printf("\n输⼊你要修改的信息编号:\n");printf(" 1-车主姓名 \n");printf(" 2-车牌号 \n");printf(" 3-车主联系⽅式 \n");printf(" 4-车位区域编号 \n");printf(" 5-车位编号 \n");scanf("%d", &x);switch(x){case 1:printf("\n\t输⼊修改后的信息");scanf("%s", p->name);break;case 2:printf("\n\t输⼊修改后的信息");scanf("%s", p->carname);break;case 3:printf("\n\t输⼊修改后的信息");scanf("%ld", &p->information);break;case 4:printf("\n\t输⼊修改后的信息");scanf("%c", &p->region);break;case 5:printf("\n\t输⼊修改后的信息");scanf("%d", &p->num);break;}printf("\n\t\t修改后的⽤户信息为");printf("\t车主姓名--------车牌号-------车主联系⽅式---车位区域编号-----车位编号----\n");printf("\t%-17s%-16s%-15ld%-16c%-17d\n", p->name, p->carname, p->information, p->region, p->num); break;}p = p->next;}if(p==NULL){printf("\n未找到相应⽤户");printf("\n按任意键返回主页\n");getch();return head;}printf("\n修改完成!");F(head); //显⽰修改后的全部信息printf("\n按任意键返回主页\n");getch();return head;}其他链表操作排序(根据⽤户姓名排序)void *Sort(Parking *head) //排序{Parking *p=head;Parking *q,*p1=NULL,*p2=NULL;while(p->next != NULL){q = p->next;while(q->next != NULL){if(strcmp(p->next->name,q->next->name)>0) //字符串⽐较{p1 = p->next; //记录p与q的下⼀结点p2 = q->next;q->next = q->next->next;p->next = p2;p2->next = p1;}elseq = q->next;}p = p->next;}F(head);printf("\n\t\t按任意键返回主菜单");getch();}查找区域车辆信息void RegionalVehicles(Parking *head) //寻找指定区域内车辆信息{system("cls");system("color B");char c;printf("\n\t\t输⼊你想要查看的区域");getchar();scanf("%c", &c);Parking *p = head->next;printf("\n\t\t --%c区域内车辆⽤户信息-- \n\n",c);printf("\t---------------------------------------------------------------------\n");printf("\t车主姓名--------车牌号-------车主联系⽅式---车位区域编号-----车位编号----\n");while(p){if(p->region==c) //判断区域字符与输⼊字符是否相等,相等则输出{printf("\t%-17s%-16s%-15ld%-16c%-17d\n", p->name, p->carname, p->information, p->region, p->num);}p = p->next;}printf("\n\t\t按任意键返回主菜单");getch();}⽂件的读取与输⼊将数据保存在⽂件中之所以⽤w形式打开⽂件是因为我在程序运⾏前已将⽂件内数据读出,最后进⾏保存数据时覆盖原数据不会导致原数据丢失void Preservation(Parking *head) //保存数据在⽂件中{const char* filename1 = "C:/Users/judicious/Desktop/car.text"; //⽂件路径FILE *fp = fopen(filename1, "w"); //以写的⽅式打开⽂件,若⽂件不存在,则建⽴新的⽂件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

综合性程序设计报告设计题目:____停车场管理系统___________指导教师: _______________班级: _____________学号: _______________设计者: _______________成绩: _______________设计时间: 年月日停车场管理系统目录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分别是停车场和便道的车位预设值,用宏定义。

用户可根据实际情况改变。

#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();}函数出示化后将回到菜单界面。

○3车辆进入函数:该模块车辆到达后,要指定车辆的停车位置。

用户根据菜单函数进入车辆进入模块。

按照每辆车的到达次序给予车辆次序号,由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<N;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();}程序执行完后回到菜单。

○4车辆离开函数:该模块一辆车要离开,则需要记录该车的离开时间,以计算出该车在停车场内的停车时间和应该缴纳的费用。

该车离开后,要判断便道上是否有车等待进入,如有,则将便道上第一辆车停放在停车场内最后的位置并记录好进场时间;若无,N Y 则返回菜单.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元每小时*/3.数据库设计及说明○1停车车道:用宏定义管理数据。

N和M分别是停车场和便道的车位预设值原因以及说明:用户可根据实际情况改变。

○2预设车辆次序号:用宏定义。

原因及说明不管车辆到达时停在场内或便道,均依次设置一个次序号,由0开始*/ 给予车辆次序号之后,用循环判断停车场是否停满,再分别给予选择:○3停车费用:用宏定义。

原因及说明:以后便于修改。

○4车辆号码:用数组。

原因及说明:车辆数目较大,用数组更加有条理。

○5车道号码:用数组。

原因及说明:车辆数目较大,用数组更加有条理。

4.界面说明○1主菜单函数○2初始化操作○3有车进入以上分别举例0,1,2三个车的进场情况○4有车离开○5若便道上没车,则退回到主菜单○6若便道上有车5.主要算法说明○1.主菜单○2车道是否停满。

场内是否已满 已满,将车停在便道 未满,指定停车场位置开始显示一系列选项功能 输入n ,判断n 是不是1-4? 根据n 的值调用各功能模块函数 结束Y N○3便道上是否有车辆。

6.代码清单及注释#include<stdio.h>#include<stdlib.h>#include<string.h>#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<N;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();}}7.设计测试说明8.设计体会c 语言程序设计是一门重要的专业基础课,通过这次课程设计使我了解了,c语言程序设计的思想,并且掌握了程序设计的基本方法,为后续课程打下了坚实的基础。

相关文档
最新文档