• 【C语言程序设计试验与习题指导】试验十三 2


    自动寄存柜

    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    
    struct boxs{
        int id;
        int passwd;
        int is_used;
    };
    
    void init_boxs(struct boxs *, int);
    int finding_available_boxes(struct boxs *, int);
    int get_coin_num(void);
    int create_rand_passwd(void);
    
    int main(void){
        struct boxs  c_box;
        int in_passwd, in_select, index, i, is_finded,BOX_NUM, is_over=0;
    
        srand((unsigned int)time(NULL));
        
        printf("寄存器总数:");
        scanf("%d", &BOX_NUM);
        struct boxs s_box[BOX_NUM];
        
        init_boxs(s_box, BOX_NUM);
        
        while (1) {
            if (is_over) {
                break;
            }
            printf("1. 投硬币  2.输密码  0.退出 请选择: ");
            scanf("%d", &in_select);
            switch (in_select) {
                case 1:
                    get_coin_num();
                    index = finding_available_boxes(s_box, BOX_NUM);
                    if (index != -1) {
    //                    printf("index = %d", index);
                        c_box.passwd = create_rand_passwd();
                        c_box.is_used = 1;
                        s_box[index] = c_box;
                        printf("寄存箱编号: %d 密码:%04d
    ", index+1, c_box.passwd);
                    }
                    else{
                        printf("对不起,暂无可用空箱子!");
                    }
                    break;
                case 2:
                    printf("请输入密码: ");
                    scanf("%d", &in_passwd);
                    is_finded = 0;
                    for (i = 0; i < BOX_NUM; i++) {
                        if (s_box[i].is_used == 1 && s_box[i].passwd == in_passwd) {
                            printf("%d号箱已打开
    ", i+1);
                            s_box[i].is_used = 0;
                            is_finded = 1;
                            break;
                        }
                    }
                    if (!is_finded) {
                        printf("密码错误.
    ");
                    }
                    break;
                case 0:
                    printf("结束
    ");
                    is_over = 1;
                    break;
                }
        }
        
        return 0;
    }
    
    /* 初始化所有的箱子数据 */
    void init_boxs(struct boxs *s_box, int BOX_NUM){
        int i;
        for (i = 0; i < BOX_NUM; i++) {
            (*s_box).id = i + 1;
            (*s_box).is_used = 0;
            s_box++;
        }
    }
    
    /* 查询可用的空箱子 */
    int finding_available_boxes(struct boxs *s_box, int BOX_NUM){
        int i, index = -1;
        for (i = 0; i < BOX_NUM; i++) {
            if ((*s_box).is_used == 0) {
                index = i;
                break;
            }
            s_box++;
        }
        return index;
    }
    
    /* 获取投币数 */
    int get_coin_num(void){
        int r_num;
        while (1) {
            printf("投币值: ");
            scanf("%d", &r_num);
            if (r_num == 1) {
                return r_num;
            }else{
                continue;
            }
        }
        return r_num;
    }
    
    /* 创建随机密码 */
    int create_rand_passwd(void){
        int r_num = (rand()%10) * 1000 + (rand()%10) * 100 + (rand()%10) * 10 + rand()%10;
    //    printf("%d
    ", r_num);
        return r_num;
    }
  • 相关阅读:
    使用Spring AOP实现MySQL数据库读写分离案例分析
    mysql的备份(文档的内容小编都已经验证过了)
    【信息化】MySQL数据库简介
    基于MySQL的分布式数据库TDSQL十年锻造经验分享
    MySQL数据库丢失数据场景分析
    微博的MySQL数据库优化实践经验
    数据库MySQL调优实战经验总结
    让数据库跑的更快的7个MySQL优化建议
    一文看懂 MySQL 分区和分表,提高表增删改查效率
    三分钟掌握SQL Server迁移Mongodb
  • 原文地址:https://www.cnblogs.com/sidianok/p/15377111.html
Copyright © 2020-2023  润新知