寄存柜程序模拟(C语言)
某超市门口的自动寄存柜有n个寄存箱,并且有一个投币控制器。
顾客想要寄存小件物品时,只要在投币控制器中投入一个1元硬币,如果此时有空闲的箱子,寄存柜就会自动打开一个空的箱子,并且打印输出一张小小的密码纸条;如果没有空闲的箱子,则提示“本柜已满”。
当顾客离开超市时,用密码纸条上指定的数字密码依次输入到开箱控制器,则顾客所存包的箱子门就会自动打开,顾客取走物品后,关上门。
流程分析:
输入数据时,可先输入寄存箱总数n(10<=n<=100), 再由用户选择是“投硬币”还是“输密码”。
如果选择“投硬币”,则只有硬币值是1时才开箱。
如果有空闲的箱子,则输出箱子编号及密码(4位数字构成);
如果无空闲的箱子,则提示“本柜已满”。
如果选择“输密码”,若输入的密码与某一箱子密码相符,则显示打开的箱子编号,否则输出提示“密码错误”。
万能密码:假定有一个密码1168,该密码用于营业结束后整理寄存柜。先在菜单中输入隐藏的选项5,然后提示请输入万能密码,密码输入后,打开所有的箱子,如有箱子中客户没有取走东西,则提示:请重点检查某编号的箱子是否有物留存。
请编写开箱控制程序实现上述过程。
输入输出示例: (黑色字体内容为计算机输出,红色字体内容为用户输入)
寄存箱总数:10
----------------------------------------------------------
1.投硬币 2.输密码 0.退出
请选择:1
投币值:1
寄存箱编号:6 密码:9342
----------------------------------------------------------
1.投硬币 2.输密码 0.退出
请选择: 2
输入密码:9342
6号寄存箱已打开
----------------------------------------------------------
1.投硬币 2.输密码 0.退出
请选择:5
请输入万能密码:9999
箱子已经全部打开,请重点检查编号1,编号7的箱子是否有物留存
-----------------------------------------------------------
1.投硬币 2.输密码 0.退出
请选择:0
结束
提示:密码随机产生
重点:如何判断货柜是否为空
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <windows.h>int main()
{int n, mode = 1, cion, code,codeing, num, box[101] = { 0 }, tex=0; //n为箱子总数(待输入) mode为用户选择模式(投硬币/输密码) box为每一个箱子 cion投入硬币 code为用户输入的密码int code_origin = 1168, sum = 0; //万能密码int i,k; //i检查密码用,k统计箱子数srand(time(NULL));printf("寄存箱总数:");scanf_s("%d", &n);while (mode != 0){srand(time(NULL));printf("------------------------------------------------------------------------------------------\n");printf("1.投硬币 2.输密码 0.退出\n");printf("请选择:");scanf_s("%d", &mode);if (mode == 1){printf("投币值:");scanf_s("%d", &cion);if (cion == 1){if (sum == n){printf("储物箱已满,抱歉\n");continue;}choose_num:num = 1 + rand() % n; //随机选择箱子choose_code:codeing = 1000 + rand() % 9000; //随机密码if (box[num] != 0){goto choose_num; //避免储物箱重复,若重复,重新选择储物箱}for (i = 1; i < n + 1; i++){if (codeing == box[i]){goto choose_code; //避免储物箱重复,若重复,重新选择储物箱}}box[num] = codeing;printf("寄存箱编号:%d 密码:%d\n", num, box[num]);sum++;Sleep(5000);}else{printf("投币数错误,请重试\n");}}else if (mode == 2){printf("输入密码:");scanf_s("%d", &code);for (i = 1; i < n+1; i++){if (box[i] == code){printf("%d号寄存箱已打开\n", i);box[i] = 0;tex = 0;sum--;break;}else{tex = 1;}}if (tex == 1){printf("密码错误,5s后重试\n");}Sleep(5000);}else if (mode == 5){printf("请输入万能密码:");scanf_s("%d", &code);k = 0;if (code_origin == code){printf("箱子已全部打开,请重点检查", i);for (i = 1; i < 101; i++){if (box[i] != 0){k++;if (k == 1){printf("编号%d", i);}else{printf("、编号%d", i);}}}printf("的箱子是否有物留存\n");}else{printf("密码错误,5s后重试\n");}Sleep(5000);}else if (mode == 0){printf("结束\n");break;}else{printf("输入错误,请重试\n");}}}
总结:认识了Sleep()函数[S必须是大写]【Sleep(5000) 表示暂停5000ms(不同语言可能不同)】
复习了之前所学的知识
寄存柜程序模拟(C语言)相关推荐
- c语言模仿atm源代码,C语言ATM程序模拟
<C语言ATM程序模拟>由会员分享,可在线阅读,更多相关<C语言ATM程序模拟(18页珍藏版)>请在人人文库网上搜索. 1.一. 课题要求1. 当输入给定的卡号和密码(初始卡号 ...
- C语言程序模拟流星雨,C语言_流星雨的实现.doc
C语言_流星雨的实现 HUNAN UNIVERSITY 程序设计训练报告 题目 流 星 雨 的 实 现 学生姓名毛 宇 锋学生学号201208060116专业班级信息安全一班学院名称信息科学与工程学院 ...
- 关于c语言排序计时器完整程序,先来先服务调度算法模拟实验程序源代码(C语言)...
先来先服务调度算法模拟实验程序源代码(C语言) 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水 ...
- c语言大作业之自动寄存柜,关于自动寄存柜的问题求解
关于自动寄存柜的问题求解 红字部分看不懂,求解答 #include #include #include #include int main(void) { int i,k,num,x,count,co ...
- 数码管在c语言中显示时间,如何利用单片机数码管程序模拟是时钟显示时间?...
数码管是一种半导体发光器件,其基本单元是发光二极管.数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元,也就是多一个小数点(DP)这个小数点可以更精确的表示数码管想要 ...
- c语言小学生加法考试题程序4,c语言编程题及答案.doc
c语言编程题及答案.doc C C 语言编程题及答案(三)语言编程题及答案(三) 1. 给小学生出加法考试题 编写一个程序,给学生出一道加法运算题,然后判断学生输入的答案对错与否,按下列 要求以循序渐 ...
- 黑马程序员C语言基础(第五天)运算符与表达式、程序流程结构、数组和字符串、函数
https://www.bilibili.com/video/BV15W411K7k6?p=93&spm_id_from=pageDriver 黑马程序员C语言基础(第五天)运算符与表达式.程 ...
- 飞鸽快递系统代码_自动售卖机、视觉+重力柜、自动寻址机、智能寄存柜解决方案及整套源代码...
智能售卖机.自动寻址机.快递柜系统整套源代码及解决方案,产品已成型,可快速部署,且有成功运作案例. 智能售卖机.自动寻址机.快递柜系统系统包括(后台数据管理中心,智能售卖机.自动寻址机.快递柜系统终端 ...
- 深入解析JNA—模拟C语言结构体
原帖:http://blog.csdn.net/shendl/article/details/3599849 深入解析JNA-模拟C语言结构体 前言 前几天写<JNA--JNI终结者>一文 ...
- 程序设计基础c语言第二版巫,程序设计基础 (C语言)---2版
图书特色: 1. 实例丰富 本书不仅理论完备,还通过 100 多个实例夯实基础,100 多个课后习题巩固练习,并通过分布在本书第 6.8 和 10 章的 3 个综合应用案例 学生成绩统计程序.学生成绩 ...
最新文章
- Nature:人工甜味剂改变小鼠肠道菌群组成及功能
- SpringBoot报错:Could not autowire. No beans of ‘DiscussantMapper‘ type found
- ORACLE查询表数据占用存储空间大小
- 转Delphi中Create(nil),Create(self),Create(Application)区别
- 调用Xvid编码器流程(基于xvid1.1.0)
- webstorm 运行android,Windows React Native环境搭建:webstorm+android studio 及解决热更新
- 【精彩实况】第三届大数据科学与工程国际会议
- c# 子窗口与父窗口之间的传值
- 关于Romoting又一例
- query string parameter前端怎么传参_Substrate 前端开发-1: 用 Polkadot-JS API 轻松搭建前端
- Android 各国语言包字符串缩写
- 权限管理模块数据库设计
- vb6.0开发的单片机串口温度采集系统(单片机测温、串口传输、温度曲线显示)
- Visio流程图模具:国标1526-89(V2.0.5)
- SAP FICO模块-财务账期的打开和关闭
- python读取文件报错:‘utf-8‘ 或“gbk” codec can‘t decode byte 0xbe in position 627: invalid start byte
- 十几套JavaWeb项目,拿去当毕业设计简直太爽了(源码)
- 英特尔(中国)架构师夏磊先生一行到访云创
- Solo.io发布Gloo Mesh Enterprise 2.0
- [随笔]关于如何实现鼠标穿透窗口和窗口半透明