车库管理系统设计报告.docx
《车库管理系统设计报告.docx》由会员分享,可在线阅读,更多相关《车库管理系统设计报告.docx(14页珍藏版)》请在冰豆网上搜索。
![车库管理系统设计报告.docx](https://file1.bdocx.com/fileroot1/2022-10/29/a473d519-b48c-47d1-9f28-e318fcecda87/a473d519-b48c-47d1-9f28-e318fcecda871.gif)
车库管理系统设计报告
陕西工业职业技术学院
2011/2012学年第1学期
数据结构实训报告
课程名称:
数据结构
班级:
软件1001
姓名:
杨微娜
教学周数:
1周(第18周)
地点:
行知楼(506)
指导教师:
刘喜勋吴红
信息工程学院
《数据结构》课程设计实训方案
一实训对象
1.实训班级软件1001班
2.计划实训周期:
5个工作日
3.计划受训人数:
50人左右
二实训目的
通过本次实训希望学生能有以下收获:
(1)掌握数据结构的基础知识;;
(2)数据结构模型的建立以及存储结构的选择;
(3)掌握C语言文件操作方式;
(4)掌握数据结构中队列、新建、入队、出队。
线性表、查询、更新、插入、删除、排序等功能;
(5)了解数据处理的权限管理;
三实训内容
题目:
车库管理系统
[问题描述]
设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
试为停车场编制按上述要求进行管理的模拟程序。
以线性表模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。
每一组输入数据包括三个数据项:
汽车“到达”或“”离去信息、汽车牌照号码以及到达或离去的时刻。
对每一组输入数据进行操作后的输出信息为:
若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。
线性表以顺序结构实现,队列以链表结构实现。
[系统要求]
(1)初始化:
初始化线性表、队列。
(2)入队:
新车加入队。
(3)出队:
队首出队。
(4)入库:
定位、队列元素入库。
(5)出库:
查找、出库并计费、记录流水。
(6)输出流水帐
四摘要
详细内容如下:
序号
实训项目
内容及要求
学时
1
数据结构基础知识
数据结构设计
1)了解数据结构中的基本概念
2)数据结构应用设计过程
3)独立完成“车库管理系统”数据结构的规范化设计;
4
2
初始化:
初始化线性表、队列。
要求:
1)完成初始化线性表、队列程序设计;
2
3
入队:
新车加入队。
出队:
队首出队。
要求:
1)完成入队出队程序设计;
4
4
入库:
定位、队列元素入库
要求:
1)完成定位、队列元素入库程序设计
6
5
出库:
查找、出库并计费、记录流水。
要求:
1)完成查找、出库并计费、记录流水
2)保存数据(文件写操作);
6
6
输出流水帐
要求:
1)读入数据(文件读操作);
2)输出数据
2
7
完成报告
要求:
文章结构清晰,文字描述准确;掌握科技应用文的写作;
4
五实训环境
地点:
行知楼506
软件:
TurboC2.0
六实训进度
序号
时间
实训内容
方式
1
第一天早上
数据结构基础知识、数据结构设计
讲练
2
第一天下午
初始化:
初始化线性表、队列。
练习
3
第二天早上
入队:
新车加入队列
讲练
4
第二天下午
出队:
队首出队。
练习
5
第三天早上
入库:
队列元素入库
讲练
6
第三天下午
出库:
查找、出库并计费
练习
7
第四天早上
记录流水。
讲练
8
第四天下午
输出流水帐
练习
9
第五天早上
系统联调
讲练
10
第五天下午
完成报告
练习
目 录
绪论1
第一章题目2
第二章题目3
第三章题目4
总结和体会5
参考文献6
绪论
本系统是假设有一个停车场且只有一个大门可供汽车进出。
汽车在停车场内按车辆达到时间的先后顺序,依次由北向南排列(大门在最南端,最先达到的第一辆车停放在车场的最北端),若车场内已停满汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退车车场为它让路,待赶辆车开出大门外,其它车辆在按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短叫纳费用的系统。
其顺序用队列来实现,车辆的车牌、停车时间以及车位号均保持在库中,在车辆离开停车场时调用库中信息,查询车辆信息,计算应缴纳的费用,并处理后续车辆。
第一章初始化
具体内容
对线性表、队列的初始化和必要的操作提示,代码如下:
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"conio.h"
intMAX;/*定义一个全局变量用来存储车库最大容量*/
floatprice;/*每车每小时的费用*/
typedefstructtime
{
inthour;
intmin;
}Time;/*时间结点*/
typedefstructnode
{
charnum[100];
Timereach;
Timeleave;
}Car;/*车辆信息结点*/
typedefstructNODE
{
Car*stack[100];
inttop;
floatx;
}SqStack;/*停车站*/
typedefstructcar
{
Car*data;//数据域名
structcar*next;//指针域名
}QNode;
typedefstructNode
{
QNode*head;//队头指针
QNode*rear;//队尾指针
}LinkQueue;/*通道*/
voidInitStack(SqStack*);/*初始化栈*/
intInitQueue(LinkQueue*);/*初始化便道*/
intarrive(SqStack*,LinkQueue*);/*车辆到达*/
voidleave(SqStack*,SqStack*,LinkQueue*);/*车辆离开*/
voidinfo(SqStack,LinkQueue);/*显示停车场信息*/
voidPRINT(Car*p,introom);//打印详细信息及账单
voidInitStack(SqStack*s)/*初始化栈*/
{
inti;
s->top=0;//定义初始栈顶下标值
for(i=0;i<=MAX;i++)
s->stack[s->top]=NULL;//建立一个空栈
}
intInitQueue(LinkQueue*Q)/*初始化便道*/
{
Q->head=(QNode*)malloc(sizeof(QNode));//为通道开辟一个空间
if(Q->head!
=NULL)//判断队头是否为空
{
Q->head->next=NULL;//队头的下一个数据元素设为空
Q->rear=Q->head;//把队头数据元素的值赋给队尾
return
(1);
}
elsereturn(-1);
}
voidmain()
{
SqStackIn,Out;
LinkQueueWait;
intch;
InitStack(&In);/*初始化停车站*/
InitStack(&Out);/*初始化让路的临时栈*/
InitQueue(&Wait);/*初始化通道*/
while
(1)
{
printf("--------------------欢迎使用停车场管理系统--------------------\n");
printf("请输入停车场的容量:
");
scanf("%d",&MAX);
printf("请输入停车场的收费标准(元/小时):
");
scanf("%f",&price);
printf("您输入的停车场容量为%d位,费用为%2.1f元/小时。
\n",MAX,price);
printf("
(1)车辆到达\n");
printf("
(2)车辆离开\n");
printf("(3)停车场信息\n");
printf("(0)退出系统\n");
printf("----------------------------------------\n");
printf("请选择\n");
while
(1)
{
ch=getch();
switch(ch)
{
case'1':
arrive(&In,&Wait);break;/*车辆到达*/
case'2':
leave(&In,&Out,&Wait);break;/*车辆离开*/
case'3':
info(In,Wait);break;/*输出车站信息*/
case'0':
{printf("谢谢使用!
");exit(0);}/*退出主程序*/
default:
printf("\n非数字键,请重新按键选择!
");
}
system("CLS");
printf("--------------------欢迎使用停车场管理系统--------------------\n");
printf("您输入的停车场容量为%d位,费用为%2.1f元/小时。
\n",MAX,price);
printf("\n
(1)车辆到达\n
(2)车辆离开\n(3)停车场信息\n(4)退出系统\n请选择\n");
}
}
}
第二章车辆到达
车场可停放多辆汽车,且只有一个大门可供汽车进出。
汽车在停车场内按车辆达到时间的先后顺序依次排列,若车场内已停满汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入代码如下:
intarrive(SqStack*In,LinkQueue*W)/*车辆到达*/
{
Car*p;
QNode*t;
p=(Car*)malloc(sizeof(Car));//把开辟成功的空间存入指针p中
flushall();//清除所有缓冲区
printf("\n停车场还有%d个停车位(若停车位为0,车可先进入便道等待)",MAX-In->top);
printf("\n请输入车牌号码(例:
3454):
");
gets(p->num);
if(In->top{
In->top++;
printf("\n停车的位置:
%d号停车位。
",In->top);
//printf("\n请输入车到达的时间(格式"**:
**"):
");
printf("\n请输入车到达的时间:
");
scanf("%d:
%d",&(p->reach.hour),&(p->reach.min));
In->stack[In->top]=p;//弹出栈顶数据元素值到指针p
printf(