网站链接: element-ui dtcms
当前位置: 首页 > 技术博文  > 技术博文

(c语言)自动寄存柜

2021/4/3 23:47:06 人评论

完成实验四 实验四:自动寄存柜 某超市门口的自动寄存柜有n个寄存箱,并且有一个投币控制器,顾客想要寄存小件物品时,只要在投币控制器中投入一个1元硬币,如果此时有空闲的箱子,寄存柜就会自动打开一个空的…

完成实验四

实验四:自动寄存柜

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

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

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

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

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

输入输出示例:

寄存箱总数:10

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

投币值:1

寄存箱编号:1  密码:9342

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

输入密码:9342

1号寄存箱已打开

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

结束

#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
int N;
int comp(int k);
struct  box{
    int key;
    int used;
}box[100];

int main() {
    int choice;
    int coin;
    int i;
    int putkey;
    int k = 0;
    int q;

    printf("寄存箱总数:");
    scanf("%d", &N);
    //set the box's key
    for (i = 0; i < N; i++) {
        box[i].key = rand() % (9999 - 1000 + 1) + 1000;
        box[i].used = 0;
    }
    for (i = 0; i < N; i++) {
        if (comp(i) == 1)
            do {
                box[i].key = rand() % (9999 - 1000 + 1) + 1000;
            } while (comp(i) == 0);
    }
    printf("          =========自动寄存柜========           \n\n");
    while (1) {
        printf("  1.投硬币  2.输密码  0.退出   请选择:");
        scanf("%d", &choice);
        if (choice == 1) {
            printf("请投币:");
            scanf("%d", &coin);
            if (coin != 1) printf("无法识别货币");
            if (coin == 1) {
                for (q = 0; q < N; q++) { if (box[q].used == 0) break; }
                if (q >= N) puts("本柜已满!");
                if (q < N) {
                    printf("您的箱子序号是:%d 密码为:%d\n", q+1, box[q].key);
                    box[q].used = 1;
                }
            }
        }
        if (choice == 2) {
            printf("请输入密码:");
            scanf("%d", &putkey);
            for (q = 0; q < N; q++) { if (putkey == box[q].key) break; }
            if (q >= N) printf("密码错误\n");
            if (q < N) {
                printf("%d 号寄存箱已打开\n", q + 1);
                box[q].used = 0;
                do {
                    box[q].key = rand() % (9999 - 1000 + 1) + 1000;
                } while (comp(q) == 0);
            }
        }
            if (choice == 0) {
                puts("欢迎使用本机器\n");
                break;
            }
        }
    }
    int comp(int k) {
        int a;
        for (a = k + 1; a < N; ++a) {
            if (box[k].key == box[a].key) {
                return 1;
                break;
            }
        }
           if (a == N) return 0;
    }

相关资讯

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?