c语言程序停车场管理系统课程设计报告基于huffman算法的编码与译码技术的探究大学毕业设计论文.docx
《c语言程序停车场管理系统课程设计报告基于huffman算法的编码与译码技术的探究大学毕业设计论文.docx》由会员分享,可在线阅读,更多相关《c语言程序停车场管理系统课程设计报告基于huffman算法的编码与译码技术的探究大学毕业设计论文.docx(35页珍藏版)》请在冰点文库上搜索。
![c语言程序停车场管理系统课程设计报告基于huffman算法的编码与译码技术的探究大学毕业设计论文.docx](https://file1.bingdoc.com/fileroot1/2023-5/17/730e9a3c-24c2-4cf4-acca-71f6a5332624/730e9a3c-24c2-4cf4-acca-71f6a53326241.gif)
c语言程序停车场管理系统课程设计报告基于huffman算法的编码与译码技术的探究大学毕业设计论文
停车场系统1课程设计
题目基于Huffman算法的编码与译码技术的探究
系(部)电子与信息工程系
班级15级电子与信息工程专业一班
姓名郭威
学号2015021029
指导教师王静
2010年01月07日
课程设计任务书
设计题目:
停车场管理系统设计
学生姓名
郭威
课程名称
C语言程序设计课程设计
专业班级
2015级电本一班
地点
B302
起止时间
2016年6月20日~6月24日
设计要求
设计内容
1.有一个两层的停车场,每层有6个车位,当第一层车停满后才允许使用第二层.(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共4项.其中停车时间按分钟计算
2.假设停车场初始状态为第一层已经停有4辆车,其车位号依次为1—4,停车时间依次为20,15,10,5.即先将这四辆车的信息存入文件”car.dat”中(数组的对应元素也要进行赋值)
3.停车操作:
当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件”car.dat”中,并将在此之前的所有车的停车时间加5.
4.收费管理(取车):
当有车离开时,输入其车牌号,先按其停车时间计算费用,每5分钟0.2元.(停车费用可设置一个变量进行保存),同时从文件”car.dat”中删除该车的信息,并将该车对应的车位设置为可使用状态(即二维数组对应元素清零).按用户的选择来判断是否要输出停车收费的总计.
5.输出停车场中全部车辆的信息.
6.退出系统.
(1)系统分析、设计正确。
(2)结果以图表方式显示。
(3)界面简洁、美观。
(4)报告格式规范。
工作进度与计划安排
1月6日第一大节、第二大节讲解课程设计任务
1月6日第三大节、第四大节阅读课程设计指导书,选择课题
1月7日第一大节、第二大节讲解结构体相关知识
1月7日第三大节、第四大节学生练习结构体的使用
1月8日第一大节、第二大节程序编码
1月8日第三大节、第四大节程序编码
1月9日第一大节、第二大节程序编码
1月9日第三大节、第四大节编写课程设计报告
1月10日第一大节、第二大节课程设计答辩
1月10日第三大节、第四大节课程设计答辩
参考资料
[1]何钦铭颜晖.《C语言程序设计》.高等教育出版社.2008年
[2]谭浩强张基温.《C语言程序设计教程》.高等教育出版社.2006年
其它
说明
1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。
2.若填写内容较多可另纸附后。
3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。
系主任:
指导教师:
伍建全/王双明/王成敏/张亚军/彭军2013年12月29日
摘要
停车场管理系统先利用了结构对停车场中车牌号,车位号,层数等看成了一个逻辑整体对停车产进行描述,在使用停车功能,取车功能时都需要使用文本读写对信息的保存和删减等,使用自定义函数分别对停车,读写,取车进行描述,使程序更加清晰,也运用了if对一些语句进行判断。
for则是循环或的多组数据,switch对功能进行选择。
关键词:
数组结构文本读写停车场管理系统
目录
摘要1
1软件需求分析说明...................................................................................................................................5
2系统分析与设计6
2.1软件界面设计6
2.2软件的数据(结构)设计6
2.3软件的算法设计7
3.软件的实现8
4软件测试16
5软件使用说明书17
参考文献20
致谢21
1软件需求分析说明书
这是停车管理系统当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件”car.dat”中,并将在此之前的所有车的停车时间加5,当有车离开时,输入其车牌号,先按其停车时间计算费用,每5分钟0.2元.(停车费用可设置一个变量进行保存),同时从文件”car.dat”中删除该车的信息,并将该车对应的车位设置为可使用状态(即二维数组对应元素清零).按用户的选择来判断是否要输出停车收费的总计.
本程序包含了四大核心功能为:
1.1停车:
从文本“car.dat”读出停车场当前车牌号,车位号,状态,并在屏幕中显现出来,在分配车位停车。
同时将增加量改存入“car.dat”.
1.2信息查询:
从文本“car.dat”读出停车场当前车牌号,车位号,状态,并在屏幕中显现出来.
1.3取车:
从文本“car.dat”读出停车场当前车牌号,车位号,状态,输入你所想取走的车然后将该车信息归零即删除。
1.4退出程序
2系统分析与设计
2.1软件界面设计
进入根据屏幕显示从键盘上进行操作
2.2软件的数据(结构)设计
对整个软件使用的文件功能、文件内部的数据格式进行说明
本程序是要将文本文件里面停车场车辆信息的内容读入程序内,并对信息进行保存和修改。
文件的功能便是一个停车场信息存放库,便于我们对停车信息的利用。
2.3软件的算法设计
开始
停车系统
for(i=0;i<12;i++)利用循环查找车位并停车
{
if(car[i].state==0)
{
flag=1;
break;
}
}
if(flag==0)
{
printf("无车位\n");
}
else{
for(j=0;j<12;j++)
{
if(car[j].state==1)car[j].time+=5;
}
car[i]=tempcar;
否
}
取车系统
否
是
是
for(k=0;k<12;k++)
{
if(bring.num==car[k].num)
{
printf("是否输出停车费用(Y/N)?
");
scanf("%c",&b);
if(b=='Y')
{
fee=car[k].time/5.0*0.2;
printf("车牌号:
%d\n\n",bring.num);
printf("停车费:
%f元\n",fee);
printf(".............欢迎下次光临..............\n\n");
}
elseif(b=='N')
{
printf("\n欢迎下次光临!
\n");
}
else
{
printf("输入错误!
\n\n");
printf("\n");
}
car[i]=bring;
}
else
{
printf("不能取车");
}
}
3软件的实现
3.1定义了一个结构体数组:
struct_car
{
intnum;//车牌号
inttime;//时间
intstate;//状态
}car[12];//car结构体的名字,定义一个一维数组,car[0]为一层一车位
3.2自定义函数:
3.2.1.voidload()//文件读写函数
{
FILE*fp;
inti=0;
fp=fopen("car.dat","r");
while(!
feof(fp))
{fscanf(fp,"%d%d%d",&car[i].num,&car[i].time,&car[i].state);
i++;
}
fclose(fp);}
3.2.2voidpark();停车函数
{
struct_cartempcar;inti=0;
FILE*fp;
intflag=0,j=0;
tempcar.time=5;
tempcar.state=1;
printf("请输入车牌号:
");
scanf("%d",&tempcar.num);
for(i=0;i<12;i++)
{
if(car[i].state==0)
{flag=1;
break;
}
}
if(flag==0)
{
printf("无车位\n");
}
else
{
for(j=0;j<12;j++)
{
if(car[j].state==1)car[j].time+=5;
}
car[i]=tempcar;
}
fp=fopen("D:
\\car.txt","w");
i=0;
fprintf(fp,"%d%d%d\n",car[i].num,car[i].state,car[i].time);
fclose(fp);
fp=fopen("car.txt","a");
for(i=1;i<12;i++)
{
fprintf(fp,"%d%d%d",car[i].num,car[i].time,car[i].state);
}
fclose(fp);
}
3.2.3.voidcha();查询函数
{
intj=0;
for(j=0;j<12;j++)
{
printf("%d\t%d\t%d\n",car[j].num,car[j].time,car[j].state)}
3.2.3.voidqu();取车函数
{struct_carbring;
intk=0,i;
charb;
doublefee;
FILE*fp;
fp=fopen("d:
\\car.txt","w");
i=0;
fprintf(fp,"%d%d%d",car[i].num,car[i].time,car[i].state);
fclose(fp);
fp=fopen("car.txt","a");
bring.num=0;
bring.state=0;
bring.time=0;
for(i=1;i<12;i++)
{
fprintf(fp,"%d%d%d",car[i].num,car[i].time,car[i].state);
}
fclose(fp);
printf("请输入车牌号:
");
scanf("%d",&bring.num);
for(k=0;k<12;k++)
{
if(bring.num==car[k].num)
{
printf("是否输出停车费用(Y/N)?
");
scanf("%s",&b);
if(b=='Y')
{
fee=car[k].time/5.0*0.2;
printf("车牌号:
%d\n\n",bring.num);
printf("停车费:
%f元\n",fee);
printf(".............欢迎下次光临..............\n\n");
}
elseif(b=='N')
{printf("\n欢迎下次光临!
\n");
}
else
{printf("输入错误!
\n\n");
printf("\n");
}
car[i]=bring;
}
else
{
printf("不能取车");
}
}}
文件读写:
fp=fopen("car.txt","r");/*以读方式的方式打开文件a*/
fp=fopen("car.txt","w");/*以写的方式打开文件a*/
fp=fopen("car.txt","a");/*以追加写的方式打开文件a*/
fscanf(fp,"%d%d%d",&car[i].num,&car[i].time,&car[i].state);/*将内存中的数据写入fp指向的文件*/
4软件测试
1、voidload();/*读入文本*/
fscanf(fp,"%d%d%d",&car[i].num,&car[i].time,&car[i].state)
2、voidpark();/*停车*/
用例1:
printf("请输入车牌号:
");car[i].state==0flag=1停车成功
用例2:
flag==0printf("无车位\n");
3、voidqu();取车
用例1:
printf("是否输出停车费用(Y/N)?
")Yprintf("停车费:
%f元\n",fee);
用例2:
printf("是否输出停车费用(Y/N)?
")Nprintf("\n欢迎下次光临!
\n");
4、voidcha();查询
用例1:
for(j=0;j<12;j++)printf("%d\t%d\t%d\n",car[j].num,car[j].time,car[j].state);
5软件使用说明书
结合软件的使用界面,详细介绍整个软件功能。
该系统为停车场管理系统,可以进行停车功能,取车功能以及查询功能,以下为操作该系统的详细步骤:
运行程序时,首先出现:
这是你可以任意输入1,2,3,4四个数;
如果你输入1时:
任意输入一个车牌号123:
如果你输入了3,系统可以为你查询刚才的车是否停好:
有刚刚输入的车牌号说明已经停好。
如果你输入2:
如果输入以有记录的车牌号123:
如果输入Y:
如果输入N
参考文献
【1】裘宗燕《从问题到程序》北京:
机械工业出版社,2011.5
【2】谭浩强《C程序设计》北京:
清华大学出版社,2010.7
【3】左飞、李召恒《轻松学通C语言》北京:
中国铁道出版社,2013.9
致谢
在这次设计中感谢老师们对我的指导和同学们的帮助。
签名:
文莉
日期:
2014年1月10日星期五
#include
#include
#defineN3/*停车场大小*/
#defineMAX50/*过道大小*/
#definesign10/*车牌大小*/
#defineprice10/*每分钟的价钱*/
charpart[N][sign];
charRpart[MAX][sign];
chartime[N][20];
intP,R;
partadd(char*t)
{
strcpy(&part[P][0],t);
printf("请输入时间:
\n");
scanf("%s",&time[P][0]);
getchar();
P++;
}
Rpartadd(char*t)
{
if(R{
strcpy(&Rpart[R][0],t);
R++;
}
else
{
printf("过道己满。
无法停车。
\n");
}
}
newcar()
{
chartemp[sign];
printf("请输入车牌号:
");
scanf("%s",temp);
getchar();
if(P{
partadd(temp);
}
elseif(R{
Rpartadd(temp);
}
}
inttimed(char*t1,char*t2)
{
inti=0,y=0,x=0,j,n=1;
while
(1)
{
if(t1[i]=='.')
{
for(j=i-1;j>=0;j--)
{
y=y+(t1[j]-'0')*(60*n);
n=n*10;
}
while
(1)
{
if(t1[j]==NULL)
{
for(n=1;j>i;j--)
{
y=y+(t1[j]-'0')*n;
n=n*10;
}
break;
}
j++;
}
i=0;
while
(1)
{
if(t2[i]=='.')
{
for(j=i-1;j>=0;j--)
{
x=x+(t2[j]-'0')*(60*n);
n=n*10;
}
while
(1)
{
if(t2[j]==NULL)
{
for(n=1;j>i;j--)
{
x=x+(t2[j]-'0')*n;
n=n*10;
}
break;
}
j++;
}
y=(x-y)*price;
returny;
}
i++;
}
}
i++;
}
}
partcarout(inti)
{
intj,money;
chart[20];
printf("请输入现在的时间:
\n");
scanf("%s",t);
getchar();
money=timed(t,&time[i][0]);
printf("收费%d\n",money);
for(j=i;j
{
strcpy(&part[j][0],&part[j+1][0]);
P--;
}
if(R!
=0)
{
strcpy(&part[N-1][0],&Rpart[0][0]);
P++;
strcpy(&time[P][0],t);
Rpartcarout(0);
}
}
Rpartcarout(inti)
{
intj;
for(j=i;j{
strcpy(&Rpart[j][0],&Rpart[j+1][0]);
R--;
}
}
carout()
{
chart[sign];
inti,get=0;
printf("请入要离开的车牌号:
");
scanf("%s",t);
getchar();
for(i=0;i
{
if(strcmp(t,&part[i][0])==0)
{
get=1;
partcarout(i);
break;
}
}
for(i=0;i{
if(strcmp(t,&Rpart[i][0])==0)
{
get=1;
Rpartcarout(i);
break;
}
}
if(get==0)
{
printf("查无此车。
\n");
}
}
jopart()
{
inti;
for(i=0;i
{
printf("%d.%s\n",i,&part[i][0]);
}
}
joRpart()
{
inti;
for(i=0;i{
printf("%d.%s\n",i,&Rpart[i][0]);
}
}
main()
{
intc;
while
(1)
{
printf("请选择要做的事:
\n");
printf("1.加入新车。
\n");
printf("2.有车离开。
\n");
printf("3.显示在停车场内的车。
\n");
printf("4.显示在过道上的车。
\n");
printf("5.退出。
\n");
c=getchar();
getchar();
switch(c)
{
case'1':
newcar();
break;
case'2':
carout();
break;
case'3':
jopart();
break;
case'4':
joRpart();
break;
case'5':
exit
(1);
break;
}
}
}
#include
#include
typedefstructLNode{
intdata;
LNode*next;
}LNode,*LinkList;
typedefstruct{
int*Num;
inttop;
intstackment;//停车场最大的停车辆
}SqStack;
typedefLinkListQueuePtr;
typedefstruct{
QueuePtrfront;
QueuePtrrear;
}LinkQueue;
voidInitStack(SqStack&S);
voidInitQueue(LinkQueue&Q);
voidPutIn(SqStack&S,LinkQueue&Q);
voidGetOut(SqStack&S,LinkQueue&Q);
voidStackTraverse(SqStackS);
voidQueueTraverse(LinkQueueQ);
intmain()
{
charch,c;
SqStackS;LinkQueueQ;
InitStack(S);InitQueue(Q);
while
(1)
{
fflush(stdin);
printf("***进入停车场:
'A'***\n");
printf("***退出停车场:
'D'***\n");
printf("***退出操作:
'0'***\n");
printf("\n请输入命令:
");
ch=getchar();
c=getchar();
switch(ch)
{
case'A':
PutIn(S,Q);break;
case'D':
GetOut(S,Q);break;
case'0':
exit(-1);
default:
printf("输入有误!
\b");
exit(-1);
}
StackTraverse(S);
QueueTraverse(Q);
}
return0;
}
voi