程序说明书Word文档格式.doc
- 文档编号:13266049
- 上传时间:2022-10-09
- 格式:DOC
- 页数:32
- 大小:565KB
程序说明书Word文档格式.doc
《程序说明书Word文档格式.doc》由会员分享,可在线阅读,更多相关《程序说明书Word文档格式.doc(32页珍藏版)》请在冰豆网上搜索。
前言
停车场管理系统是现代化高科技社会不可或缺的一部分,在运输业高速发展的现今社会中,良好的停车管理系统方便了大家,使车辆能够更便捷的管理,由于有了良好的管理系统,使得生活节奏井然有序这也是编写本系统的目的所在,目前的停车场管理系统都是人工的,本系统可以大大提高停车场管理员工作效率,节省工作时间,节省人力,物力。
根据课程设计任务书要求,本系统开发主要完成以下功能和性能。
停车场车辆信息管理:
信息包括a车牌号,b车位置,c停车时间,d停车所用的花费。
用户根据系统所规定并提示的要求输入有关内容,车场所能容纳的车辆数由收费人员来确定,车辆离开时,车主还可以得到收据,便于收费的管理使用;
并且系统程序所提供的一些信息可通过特殊硬件显示出来,供车主了解信息,准确有效的停车。
改程序系简单的用于运用栈与队列基本知识的工具,不能用于现实中,特别是栈“先进后出”的规则大大限定了该程序的推广,现实世界的车站管理系统比这个远远复杂的多
正文
1.采用类c语言定义相关的数据类型
1.时间结点类型
typedefstructtime//节点类型
{
inthour;
//小时节点
intmin;
//分钟节点
}Time;
时间结点
2.车辆进出站信息类型
typedefstructnode//节点类型
charnum[10];
//车牌节点
Timereach;
//到达时间节点
Timeleave;
//离开时间节点
}CarNode;
车辆信息结点
3.停车场和便道信息类型
typedefstructNODE//节点类型
CarNode*stack[MAX+1];
//数据域指针
inttop;
//头指针
}SeqStackCar;
模拟车站
typedefstructcar//节点类型
CarNode*data;
structcar*next;
/指针域
}QueueNode;
车道结点
typedefstructNode//节点类型
QueueNode*head;
//队头节点指针
QueueNode*rear;
//队尾节点指针
}LinkQueueCar;
模拟通道
voidInitStack(SeqStackCar*,intn);
/*声明栈*/
//初始化,创建两个新栈S,S1
intInitQueue(LinkQueueCar*);
/*声明便道*/
//初始化,创建一个队列Q用于便道
intArrival(SeqStackCar*,LinkQueueCar*,intn);
/*车辆进站*/
voidLeave(SeqStackCar*,SeqStackCar*,LinkQueueCar*,intn);
/*车辆出站*/
voidList(SeqStackCar,LinkQueueCar);
/*显示存车信息*/
voidInitStack(SeqStackCar*s,intn)/*初始化栈*/
2.各模块的流程图
车辆进入停车场和便道系统模块:
该系统要输入停车场所停车的车牌号码,让后输入要选择的菜单项,进行停车。
填写停车时间。
该模块功能图如图1所示:
图1车辆进入停车场和便道系统模块图
车辆离开停车场和便道系统模块:
该系统需要输入离开车的车牌号。
判断是车所在的位置,系统自动输出离开时间。
该模块功能图如图2,3所示:
图2车辆离开停车场系统模块图
图3车辆离开便道系统模块图
车辆收费系统模块:
该系统通过判断汽车所在的位置来收费,如果汽车在停车场则收费,如果汽车在便道则不收费用。
功能模块图如图4所示:
图4车辆收费模块图
3.程序的算法的设计框架及函数的调用关系图
图5程序算法的设计框架
图6函数调用关系图
4.调试分析
1、调试中遇到的问题及对问题的解决方法
(1)程序不能按原顺序输出。
原因是出站时存储变量指针方向弄反了,导致车出站后原顺序错误。
(2)输入时,无论输入车牌号码正确与否,全部能显示。
原因是没有清除输入缓存区,导致输入不是本来行啊要的输入的树,运用flushall()函数解决了问题。
2、调试分析
(1)进栈:
车辆进入
出栈:
车辆离开
查找:
允许排中间的车辆先离开停车场,因此需要在栈中进行查找。
(2)进栈:
查找:
(3)在定义栈的元素最大空间时如果使用顺序栈必须先给它赋初值,但如果通过链表就可以实现动态分配内存,为栈动态开辟新空间。
(4)在判断键盘输入是否符合要求时,如果不符合要求应循环赋值,直到符合要求为止,在此利用的do-while循环语句与外部while语句套用时应使用两次break语句,才能跳出循环,否则会造成死循环。
5.测试结果
图7登录界面
图8进入停车场界面
图9离开停车场界面
图10显示离开停车场的金额及信息
图11进入便道界面
图12存车信息显示界面
图13退出系统界面
6.源程序(带注释)
#include<
stdio.h>
stdlib.h>
string.h>
malloc.h>
#defineMax10
intgetn()
{
intn;
printf("
欢迎您光临兰州理工大学技术工程学院停车场,"
);
本停车场管理实行24小时制,停车每分钟0.1元.\n"
请输入停车场可容纳的车(最多10辆):
"
scanf("
%d"
&
n);
fflush(stdin);
do
if(n<
1||n>
10)
{
printf("
输入的车辆数不在要求范围内,请重新输入!
scanf("
fflush(stdin);
}
elsebreak;
}
while(n<
10);
returnn;
}
//时间结点
//车辆信息结点
CarNode*stack[Max+1];
//模拟车站
//指针域
//车道结点
typedefstruct//队列的定义
QueueNode*head;
//队头指针
QueueNode*rear;
//队尾指针
/*模拟通道*/
{
inti;
s->
top=0;
for(i=0;
i<
=n;
i++)
stack[s->
top]=NULL;
}
intInitQueue(LinkQueueCar*Q)/*初始化便道*/
Q->
head=(QueueNode*)malloc(sizeof(QueueNode));
if(Q->
head!
=NULL)
head->
next=NULL;
//下一个节点指空
rear=Q->
head;
return
(1);
elsereturn(-1);
voidPRINT(CarNode*p)/*打印出站车的信息*/
intA1,A2,B1,B2;
inta,b,c;
\n请输入离开的时间:
/**:
**/"
%d:
(p->
leave.hour),&
leave.min));
do{
if(p->
leave.hour<
p->
reach.hour||(p->
leave.hour==p->
reach.hour&
&
p->
leave.min<
reach.min))
输入离开时间比进站时间早,请重新输入!
\n"
0||p->
leave.hour>
=24||p->
leave.min>
=60)
输入的时间格式有错,请重新输入!
scanf("
fflush(stdin);
while(p->
reach.min));
车场现在有一辆车离开,请便道里的第一辆车进入车场!
出站的车的车牌号为:
puts(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 说明书
![提示](https://static.bdocx.com/images/bang_tan.gif)