数据结构课程设计实验报告 安徽大学Word文档格式.docx
- 文档编号:1521387
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:53
- 大小:308.13KB
数据结构课程设计实验报告 安徽大学Word文档格式.docx
《数据结构课程设计实验报告 安徽大学Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计实验报告 安徽大学Word文档格式.docx(53页珍藏版)》请在冰点文库上搜索。
//表示数组中元素个数
}L;
typedefstructQNode
//链队列元素结点类型
intdata;
structQNode*next;
}QNode,*QueuePtr;
typedefstruct
//链队列类型
QueuePtrfront;
QueuePtrrear;
}LinkQueue;
3.系统主要功能设计
本系统共采用3个功能模块,每个模块中又各自包含自己的子功能,各功能模块如下:
1.车辆到达;
该模块将给用户提供两种停车选择,是场内停车还是便道停车方式,便于用户选择。
2.车辆离开;
用户进入该界面,只要输入相关信息,系统将会显示用户在该停车场内停留的时间以及是否需要支付相应金额的停车费用等。
3.退出系统;
方便用户退出本系统。
模块设计
1.模块设计
本程序包含4个模块,它们分别是:
主程序模块、菜单选择模块、栈操作模块、队列操作模块。
调用关系如图所示:
2.系统子程序及功能设计
1)voidInitshuzu()//初始化数组
2)voidtime()//时间函数
3)voidchepaihao()//输入的车牌号
4)voidInitStack(SqStack&
S)//构造一个空栈s
5)voidpush(SqStack&
S,inte)//车辆进入停车场场内停车
6)voidpop(SqStack&
S,inte)//车辆离开停车场场内
7)voidInitQueue(LinkQueue&
Q)//构造一个空队列Q
8)voidEnQueue(LinkQueue&
Q,intelem)//车辆进入便道
9)voidDeQueue(LinkQueue&
Q,int&
e)//车辆离开便道
10)voidtingchefangshi()//选择停车方式,场内停车还是便道停车
11)voidlikai()//车辆离开
12)voidmain()//主函数
3.函数主要调用关系图
详细设计
1.数据类型定义
(1)栈的顺序存储结构体定义
(2)数组的结构体定义
(3)链队列元素结点的结构体定义
(4)全局变量定义
intz;
time_ta[m+n],end;
doubleA[m+n]={0};
intcount1=0,count2=0;
//count1、count2分别用来统计场内停车数和便道停车数,并且初始化为0
2.系统主要子程序设计
(1)车辆进入停车场场内停车
voidpush(SqStack&
S,inte)
{//车辆进入停车场场内停车
intstacksize=50;
if(S.top-S.base>
=stacksize){//栈满,追加存储空间
S.base=(int*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int));
if(!
S.base)exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
}//push
(2)车辆进入便道停车
voidEnQueue(LinkQueue&
Q,intelem)
{//车辆进入便道
QNode*s;
s=(QueuePtr)malloc(sizeof(QNode));
if(!
s)exit(OVERFLOW);
s->
data=elem;
next=NULL;
Q.rear->
next=s;
Q.rear=s;
}
(3)车辆离开场内
voidpop(SqStack&
{//车辆离开停车场场内
e=*--S.top;
}//pop
(4)车辆离开便道
voidDeQueue(LinkQueue&
e)
{//车辆离开便道
QNode*t;
if(Q.front==Q.rear)
{
printf("
便道内无任何车辆\n"
);
exit
(1);
else
t=Q.front->
next;
e=t->
data;
Q.front->
next=t->
if(Q.rear==t)Q.rear=Q.front;
free(t);
(5)选择停车方式
voidtingchefangshi()
{//选择停车方式,场内停车还是便道停车
printf("
请选择您的停车方式:
\n"
1.场内停车\n"
2.便道停车\n"
scanf("
%d"
&
z);
switch(z)
case1:
{if(count1<
=m){
printf("
您选择的是:
1.场内停车\n"
您的车位是:
%d号车位\n"
count1);
chepaihao();
从现在开始为您计时,您的到达时间是:
time();
a[count1]=time(NULL);
count1++;
push(S,count1);
}
elseprintf("
当前车位已满,请选择其他停车方式\n"
break;
return;
case2:
{if(count2<
=n){
您选择的是2.便道停车\n"
count2+m);
EnQueue(Q,count2);
a[count2]=time(NULL);
count2++;
EnQueue(Q,count2);
default:
您的输入有误,请重新输入!
getch();
(6)车辆离开函数
voidlikai()
inti;
请输入您的车位号:
i);
if(i>
=0&
&
i<
=m)
end=time(NULL);
A[i]=difftime(end,a[i]);
您在停车场内停留时间为:
%0.2f秒\n"
difftime(end,a[i]));
您所需支付金额为:
%0.2f元\n"
difftime(end,a[i])*j);
感谢您的使用,欢迎下次光临!
"
count1--;
elseif(i>
m&
=m+n)
您的服务是免费服务,感谢您的使用,欢迎下次光临!
elseprintf("
您的输入有误,请重新输入!
测试分析
系统运行主界面如下:
1.车辆到达界面
车辆到达后需要选择相应的停车方式,主要有两种方式,场内停车方式和便道停车方式。
2.车辆离开界面
车辆离开时需要输入自己的车位号,系统会自动判别你的停车方式,提供相关服务
3.车辆进入场内停车
4.车辆进入便道停车
5.车辆离开场内
6.车辆离开便道
源程序清单
#include<
stdio.h>
malloc.h>
stdlib.h>
conio.h>
time.h>
string.h>
#definem50//停车场内总容纳量m,车位号依次为:
1—50
#definen50//停车场便道容纳量n,车位号依次为:
51-100
#definep3//车牌号码的位数000-999
#defineSTACK_INIT_SIZE100
#defineSTACKINCREMENT10
#defineOVERFLOW0
#defineT100
#definej0.001//停车场内收费标准0.001元/秒
voidInitshuzu()
{//初始化数组
for(inti=1;
i<
=m+n;
i++)
L.B[i]=0;
L.len=0;
};
voidtime()
{//时间函数
time_ttimep;
time(&
timep);
现在时刻:
%s"
ctime(&
timep));
voidchepaihao()
{//输入的车牌号
intch[p];
请输入您的车牌号:
for(i=0;
3;
scanf("
ch[i]);
您输入的车牌号码为:
ch[i]);
voidInitStack(SqStack&
S){
//构造一个空栈s
S.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));
if(!
S.base)exit(OVERFLOW);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
SqStackS;
voidInitQueue(LinkQueue&
Q)
{//构造一个空队列Q
Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));
Q.front)exit(OVERFLOW);
Q.front->
LinkQueueQ;
count2--;
//主函数
voidmain()
system("
color1f"
modecon:
cols=90lines35"
Initshuzu();
InitStack(S);
InitQueue(Q);
while
(1)
\n*****************************欢迎光临ABC停车场*****************************\n"
\n\n"
1.车辆到达\n"
2.车辆离开\n"
3.退出系统\n\n"
time();
\n提示:
选择后按回车键进入下一步操作\n"
printf("
请选择您所需服务:
"
intc;
c);
switch(c)
case1:
{
system("
cls"
printf("
\n*****************************车辆到达界面*****************************\n"
tingchefangshi();
getch();
system("
break;
}
case2:
\n*****************************车辆离开界面*****************************\n"
likai();
getch();
case3:
return;
default:
您的输入有误!
请重新输入:
用户手册
1.本程序执行程序文件为“停车管理系统.exe”。
2.车辆进入停车场,场内允许及便道允许停车数分别为50个车位,依次为0-49和50-99,用户可根据自己需要进行适当更改,不影响程序执行。
3.程序中车牌号暂假定为3位,请用空格键隔开,否则将出现差错。
4.程序内每一界面跟换需要敲两次回车键方才有效,方便用户确认录入信息是否正确无误。
【实验二】
重言式判别问题
1.问题描述
一个逻辑表达式如果对于其变元的任一种取值都为真,则称为重言式;
反之,如果对于其变元的任一种取值都为假,则称为矛盾式;
然而,更多的情况下,既非重言式,也非矛盾式。
试写一个程序,通过真值表判断一个逻辑表达式属于上述哪一种类型。
2.需求分析
(1)逻辑表达式从终端输入,长度不超过一行。
逻辑运算符包括“|”、“+”、“-”,分别表示或、与、非,运算优先程度递增,但可有括号改变,即括号内的运算优先。
逻辑变元为大写字母。
表达式中任何地方都可以含有多个空格符。
(2)若是重言式或矛盾式,可以只显示“TrueForever”或“FalseForever”,否则显示“Satisfactible”以及变量名序列,与用户交互。
若用户对表达式中变元取定一组值,程序就求
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构课程设计实验报告 安徽大学 数据结构 课程设计 实验 报告