数据结构用c语言实现停车场管理系统报告书

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

课程设计任务书
学生姓名:专业班级:软件2101(计算2101)指导教师:黄启荃钱小红工作单位:华夏学院计算机教研室
设计题目:用C语言实现停车场管理程序的设计
初始条件:
1、栈与队列的建立和操作.
2、带T C或V C的计算机系统。

要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
主要任务:(在规定的时间内完成下列任务)
设有一个停放n辆车的狭长停车场,它只有一个大门供车辆出入。

车辆按到达停车场时间的早晚依次从停车场最里面向大门处停放。

若已放满n辆车,则后来的车只能停在外面等待,当有车开走后方依次进入,停在场内的车按时计费。

编制一个程序模拟该停车场管理。

1.汽车的模拟输入信息格式可设为:汽车牌照号码,到达/离去时刻
如(‘a’,1,5)为1号车在5时刻到达,(‘b’,5,20)为5号车在20这个时刻离去
2. 要求程序输出每辆车到达后的停车位置,以及离开停车场时应缴纳的费用及停留时间。

3.编制完成上述问题的C语言程序、进行程序调试并能得出正确的运行结果,并对采用的算法进行分析。

设计报告撰写格式要求:(课程设计报告按统一通用格式书写)具体内容如下:
①设计任务与要求②总体方案与说明
③程序主要模块的流程图④源程序清单与注释
⑤问题分析与解决方案(包括调试记录、调试报告,即在调试过程中遇到的主要问题、
解决方法及改进设想);⑥小结与体会
附录:①源程序(必须有简单注释)②使用说明③参考资料
时间安排:6月20日---24日
第一天布置题目,确定任务、查找相关资料
第二天~第四天功能分析,编写程序,调试程序、运行系统;
第五天程序验收、答辩;撰写设计报告。

指导教师签字:2011年6月20日
系主任签字:年月日
设计题目:用C语言实现停车场管理程序的设计
1、问题描述即要求
停车场是一个可停放n辆汽车的狭长通道,并只有一个大门可供汽车进出,汽车在停车场内按车辆到达的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),如车长内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用,以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理.每一组输入数据包括三个数据项:汽车”到达”或”离去”信息,汽车牌照号码以及到达或离去的时刻(到达或离去的时刻也可用计算机控制).对每一组输入数据进行操作后的输入信息为:如是车辆到达,则输入汽车在停车场内或便道上的停留位置;如是车辆离去,则输入汽车在停车场内停留的时间和应交的费用。

2、需求分析
每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场应交纳的费用和它在停车场内停留的时间。

3、概要设计
1、系统分为:初始化、有车进入、有车离开、退出四个模块。

2、停车场管理程序
4详细设计
菜单函数设计:分为初始化、有车进入、有车离开、退出。

void menu()
{
int n,w;
do
{
puts("****MENU***");
puts("1.初始化");
puts("2.有车进入");
puts("3.有车离开");
puts("4.退出");
printf("请选择你需要的服务(1-4):");
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);break;/*初始化*/
}
}
初始化模块设计:将车道和停车场内所有的车清空。

void chushi()/*初始化*/
{
int i,j;
for(i=0;i<N;i++)
chn[i].neikong=0;/*停车场设置为空*/
for(j=0;j<M;j++)
chw[i].waikong=0;
printf("已初始化");
menu();
}
进入函数设计:车辆到达需要给车编号及给出车停的位置和停车时间等。

void jinru()/*车辆进入函数*/
{
int i,a;
int h=0;
printf("请输入该车系序号(从0开始):");
scanf("%d",&a);
for(i=0;i<N;i++)
{
if(chn[i].neikong==0)/*无车标记*/
if(chn[i].neikong==1)/*有车标记*/
h=h+1;
}
if(h==N)
printf("停车场内已满!");
else
{
car[a].carstay=h;
chn[h].neikong=1;
printf("该车应该停在停车场内");
printf("请输入该车进停车场时间:");
scanf("d%",&car[a].cararr);
}
menu();
}
离开函数设计:车辆离开时间,应缴费用,判断便道上是否有车,有则将车停入停车
场。

void likai()/*车辆离开函数*/
{
int i,k,choi,time;
double fee;
printf("请输入离开车辆次序号[]",&i);
scanf("%d",&i);
printf("请输入离开时间:");
scanf("%d",&car[i].carlef);
fee=D*(car[i].carlef-car[i].cararr);
time=car[i].carlef-car[i].cararr;
printf("次序号为%d的车停时间%d小时,应收费%f元",i,time,fee);
printf("便道上现在有车么?(请选择1或2)1.有。

2.没有");
scanf("%d",&choi);
if(choi==2)
{
menu();
}
if(choi==1)
{
printf("请让便道上的第一辆车进场");
printf("该车次序号为:");
scanf("%d",&car[k].cararr);
menu();
}
退出函数。

5调试分析
i.静态调试:按求解算法和C语言的语法规则进行检查;
语法上出现一些很小的问题,但也是程序无法运行。

ii.动态调试:将设计题给出的路径进行运行;
程序无法运行,无法给出结果,修改好后于理想结果产生偏差。

6测试结果
主菜单
初始化
进入
离开
退出
7 用户手册
(1)本程序在TC环境下形成xxx.exe的执行文件。

(2)在windows系统界面上运行xxx.exe 即可显示运行界面,按提示命令输入需要的服务进行选择。

8 改进方案
本程序无法显示停车场所有车辆的信息,需要在有车进入函数和离开函数中添加变量,最后对变量进行输出,即为停车场所有车辆的信息。

9 设计体会
学会了如何使用c程序来编写一个小的程序,看起来似乎很简单,动起手来真的不是很容易!以后再学习中要更加努力的学习。

学习什么都要全身心的投入进去。

就没有什么做不到。

数据结构其实不是很难,只要理解了,所有的都很简单。

编写程序方面要多动手才会知道怎么做!
参考资料:《数据结构、算法与应用》、《数据结构辅导(第二版)》
附录
1.源程序文件名清单
C语言
2.源程序清单
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 100/*预设停车场有100个车位*/
#define M 100/*预设便道有100各出位*/
#define D 1.2/*预设车辆停车费为1.2元每小时*/
#define NUMBER 100
void menu();
void chushi();
void jinru();
void likai();
struct car
{
int carnum;
int cararr;
int carlef;
int carstay;
}car[NUMBER];
struct park
{
int neikong;
}chn[N-1];
struct changwai
{
int waikong;
}chw[M-1];
void main()
{
menu();/*菜单*/
}
void menu()
{
int n,w;
do
{
puts("****MENU***");
puts("1.初始化");
puts("2.有车进入");
puts("3.有车离开");
puts("4.退出");
printf("请选择你需要的服务(1-4):");
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);break;/*初始化*/
}
}
void chushi()/*初始化*/
{
int i,j;
for(i=0;i<N;i++)
chn[i].neikong=0;/*停车场设置为空*/
for(j=0;j<M;j++)
chw[i].waikong=0;
printf("已初始化");
menu();
}
void jinru()/*车辆进入函数*/
{
int i,a;
int h=0;
printf("请输入该车系序号(从0开始):");
scanf("%d",&a);
for(i=0;i<N;i++)
{
if(chn[i].neikong==0)/*无车标记*/
if(chn[i].neikong==1)/*有车标记*/
h=h+1;
}
if(h==N)
printf("停车场内已满!");
else
{
car[a].carstay=h;
chn[h].neikong=1;
printf("该车应该停在停车场内");
printf("请输入该车进停车场时间:");
scanf("d%",&car[a].cararr);
}
menu();
}
void likai()/*车辆离开函数*/
{
int i,k,choi,time;
double fee;
printf("请输入离开车辆次序号[]",&i);
scanf("%d",&i);
printf("请输入离开时间:");
scanf("%d",&car[i].carlef);
fee=D*(car[i].carlef-car[i].cararr);
time=car[i].carlef-car[i].cararr;
printf("次序号为%d的车停时间%d小时,应收费%f元",i,time,fee); printf("便道上现在有车么?(请选择1或2)1.有。

2.没有"); scanf("%d",&choi);
if(choi==2)
{
menu();
}
if(choi==1)
{
printf("请让便道上的第一辆车进场");
printf("该车次序号为:");
scanf("%d",&car[k].cararr);
menu();
}
}。

相关文档
最新文档