《2022年自动寄存柜 .pdf》由会员分享,可在线阅读,更多相关《2022年自动寄存柜 .pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、“程序设计()”综合编程实验报告(2011-2012 学年第 2 学期)实验项目名称:自动寄存柜一、实验内容与要求某超市门口的自动寄存柜有n 个寄存箱,并且有一个投币控制器,顾客想要寄存小件物品时, 只要在投币控制器投入1 个 1元的硬币,如果此时有空闲的箱子,寄存柜就会自动打开一个空的箱子,并且打印输出一张小小的密码纸条;如果没有空闲的箱子,则提示“本柜已满”。当顾客离开超市时,用密码纸条上指定的数字密码依次输入到开箱控制器,则顾客所存包的箱子门就自动打开,顾客取走物品后,关上门。输入数据时,可先输入寄存箱总数n,再由用户选择是“投硬币”还是“输密码” 。如果选择“投硬币”,则只有硬币值是1
2、 才开箱。如果有空闲的箱子,则输出箱子编号及密码( 4 位数字) ;如果无空闲的箱子,则提示: “本柜已满”。如果选择“输密码” ,若输入的密码与某一箱子密码相符,则显示打开的箱子编号,否则输出提示: “密码错误”。请编写开箱控制程序实现上述过程。输入输出示例寄存箱总数 :10 1. 投硬币 2. 输密码 0. 退出 请选择 : 1 投币值:1 寄存箱编号 :1 密码:9342 1. 投硬币 2. 输密码 0. 退出 请选择 : 2 输入密码 :9342 1号寄存箱已打开1. 投硬币 2. 输密码 0. 退出 请选择 :0 结束名师资料总结 - - -精品资料欢迎下载 - - - - - -
3、- - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 二、系统设计1、解题思路(1)先输入寄存箱数量,并判断数量是否正确。(2) 先输出 1. 投硬币 2. 输密码 0. 退出 请选择 : , 再输入数字选择是“投硬币”还是“输密码” 。 。(3)若“投硬币”,则只有硬币值是1 才开箱,并判断是否有空闲的箱子。若有则输出箱子编号及密码。(4)若选择“输密码”,则判断输入的密码是否正确。2、数据结构描述3、程序框架结构4、关键算法描述(1)输入寄存箱数量 srand(int)time(0); prin
4、tf(寄存柜数量 :); scanf(%d,&num); printf(n); while(num=0) printf(寄存柜数量错误 , 请重新输入 nn); printf(寄存柜数量 :); scanf(%d,&num); printf(n); (2)判断是否有空闲的箱子。若有则输出箱子编号及密码。 if(x=1) printf(投币值 :); scanf(%d,&coin); printf(n); if(coin=1) if(countnum) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - -
5、- - - 第 2 页,共 9 页 - - - - - - - - - bcount=rand()%num+1; while(fullbcount-1=1) bcount=rand()%num+1; for(i=0;icount;i+) if(bcount=bi) bcount=rand()%num+1; i=0; fullbcount-1=1; acount=rand()%9000+1000; for(i=0;icount;i+) if(acount=ai) acount=rand()%9000+1000; i=0; printf(寄存箱编号 :%d 密码:%dnn,bcount,acoun
6、t); count+; else printf(本柜已满 nn); (3)判断输入的密码是否正确 printf(输入密码 :); scanf(%d, &password); printf(n); if(count=0) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - printf(密码错误 nn); continue; for(i=0;icount;i+) if(fullbi-1=1&password=ai) printf(%d
7、号寄存箱已打开 nn,bi); fullbi-1=0; flag=1; for(k=i;kcount-1;k+) bk=bk+1; ak=ak+1; fullbk-1=fullbk+1-1; break; if(flag!=1) printf(密码错误 nn); else count-; flag=0; 三、测试用例测试用例 1:寄存柜数量: 10 1. 投硬币 2. 输密码 0. 推出 请选择: 1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - -
8、 - - - - - 投硬币: 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 ma
9、in(void) int i,k,num,x,count,coin,temp; int b1000,a1000,full1000; int password,flag=0; srand(int)time(0); printf(寄存柜数量 :); scanf(%d,&num); printf(n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 9 页 - - - - - - - - - while(num=0) printf(寄存柜数量错误 , 请重新输入 nn); p
10、rintf(寄存柜数量 :); scanf(%d,&num); printf(n); /for(y=0;ynum;y+) /for(z=0;z4;z+) /syz=a; /*-*/ for(i=0;inum;i+) fulli=0; count=0;/check=0; while(1) printf(1.投硬币 2. 输密码 0. 退出 请选择:); scanf(%d,&x); printf(n); /*-*/ if(x=1) printf(投币值 :); scanf(%d,&coin); printf(n); if(coin=1) if(countnum) bcount=rand()%num
11、+1; while(fullbcount-1=1) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 9 页 - - - - - - - - - bcount=rand()%num+1; for(i=0;icount;i+) if(bcount=bi) bcount=rand()%num+1; i=0; fullbcount-1=1; acount=rand()%9000+1000; for(i=0;icount;i+) if(acount=ai) acount=rand(
12、)%9000+1000; i=0; printf(寄存箱编号 :%d 密码:%dnn,bcount,acount); count+; else printf(本柜已满 nn); else printf(投错硬币 , 请重新选择 nn); continue; else if(x=2) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 9 页 - - - - - - - - - printf(输入密码 :); scanf(%d, &password); printf(n); i
13、f(count=0) printf(密码错误 nn); continue; for(i=0;icount;i+) if(fullbi-1=1&password=ai) printf(%d号寄存箱已打开 nn,bi); fullbi-1=0; flag=1; for(k=i;kcount-1;k+) bk=bk+1; ak=ak+1; fullbk-1=fullbk+1-1; break; if(flag!=1) printf(密码错误 nn); else count-; flag=0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 9 页 - - - - - - - - - else if(x=0) break; else printf(输入错误 , 请重新输入 nn); return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -