自动寄存柜

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

“程序设计(Ⅱ)”综合编程实验报告

(2011-2012学年第2学期)

实验项目名称:自动寄存柜

一、实验内容与要求

某超市门口的自动寄存柜有n个寄存箱,并且有一个投币控制器,顾客想要寄存小件物品时,只要在投币控制器投入1个1元的硬币,如果此时有空闲的箱子,寄存柜就会自动打开一个空的箱子,并且打印输出一张小小的密码纸条;如果没有空闲的箱子,则提示“本柜已满”。当顾客离开超市时,用密码纸条上指定的数字密码依次输入到开箱控制器,则顾客所存包的箱子门就自动打开,顾客取走物品后,关上门。

输入数据时,可先输入寄存箱总数n,再由用户选择是“投硬币”还是“输密码”。

如果选择“投硬币”,则只有硬币值是1才开箱。如果有空闲的箱子,则输出箱子编号及密码(4位数字);如果无空闲的箱子,则提示:“本柜已满”。

如果选择“输密码”,若输入的密码与某一箱子密码相符,则显示打开的箱子编号,否则输出提示:“密码错误”。

请编写开箱控制程序实现上述过程。

输入输出示例

寄存箱总数:10

1.投硬币

2.输密码 0.退出请选择: 1

投币值:1

寄存箱编号:1 密码:9342

1.投硬币

2.输密码 0.退出请选择: 2

输入密码:9342

1号寄存箱已打开

1.投硬币

2.输密码 0.退出请选择:0

结束

二、系统设计

1、解题思路

(1)先输入寄存箱数量,并判断数量是否正确。

(2)先输出"1.投硬币 2.输密码 0.退出请选择:",再输入数字选择是“投硬币”还是“输密码”。。

(3)若“投硬币”,则只有硬币值是1才开箱,并判断是否有空闲的箱子。若有则输出箱子编号及密码。

(4)若选择“输密码”,则判断输入的密码是否正确。

2、数据结构描述

3、程序框架结构

4、关键算法描述

(1)输入寄存箱数量

srand((int)time(0));

printf("寄存柜数量:");

scanf("%d",&num);

printf("\n");

while(num<=0){

printf("寄存柜数量错误, 请重新输入\n\n");

printf("寄存柜数量:");

scanf("%d",&num);

printf("\n");

}

(2)判断是否有空闲的箱子。若有则输出箱子编号及密码。

if(x==1){

printf("投币值:");

scanf("%d",&coin);

printf("\n");

if(coin==1){

if(count

b[count]=rand()%num+1;

while(full[b[count]-1]==1) {

b[count]=rand()%num+1;

for(i=0;i

if(b[count]==b[i]) {

b[count]=rand()%num+1;

i=0;

}

}

}

full[b[count]-1]=1;

a[count]=rand()%9000+1000;

for(i=0;i

{

if(a[count]==a[i])

{

a[count]=rand()%9000+1000;

i=0;

}

}

printf("寄存箱编号:%d 密码:%d\n\n",b[count],a[count]);

count++;

}

else

printf("本柜已满\n\n");

}

(3)判断输入的密码是否正确

printf("输入密码:");

scanf("%d", &password);

printf("\n");

if(count==0)

{

printf("密码错误\n\n");

continue;

}

for(i=0;i

{

if(full[b[i]-1]==1&&password==a[i])

{

printf("%d号寄存箱已打开\n\n",b[i]);

full[b[i]-1]=0;

flag=1;

for(k=i;k

{

b[k]=b[k+1];

a[k]=a[k+1];

full[b[k]-1]=full[b[k+1]-1];

}

break;

}

}

if(flag!=1)

printf("密码错误\n\n");

else

{

count--;

flag=0;

}

三、测试用例

测试用例1:

寄存柜数量:10

1.投硬币

2.输密码 0.推出请选择:1

投硬币:1

寄存箱编号:10 密码:7075

1.投硬币

2.输密码 0.推出请选择:2 输入密码:7075

10号寄存箱已打开

1.投硬币

2.输密码 0.推出请选择:0 测试用例2:

寄存柜数量:10

1.投硬币

2.输密码 0.推出请选择:1 投硬币:1

寄存箱编号:5 密码:2738

1.投硬币

2.输密码 0.推出请选择:2 输入密码:2738

5号寄存箱已打开

1.投硬币

2.输密码 0.推出请选择:0

四、总结

#include

#include

#include

#include

int main(void)

{

int i,k,num,x,count,coin,temp;

int b[1000],a[1000],full[1000]; int password,flag=0;

srand((int)time(0));

printf("寄存柜数量:");

scanf("%d",&num);

printf("\n");

相关文档
最新文档