初级基础练习:酒店管理系统的房间号定位:不用for循环.

// 用二维数组保存酒店的层数.以及房间号码.

在房间大概信息我对房间号进行了编号.

用你指定编号来反算,找出对应的楼层,以及对应的房间号;答应出对应房间的对应信息.

    x = ((xgnum-1)/fjhao);

    y = (xgnum-(fjhao*x));

 代码如上.X 为层数.Y为房间号; xgnum为指定的房间号的序列号. fjhao 为全局变量.为每层的房间个数;



#include <stdio.h>

//全局变量定义列表

int fjceng = 2;

int fjhao = 5;

//函数声明列表

void showfangjian(); //房间信息show

void mainUI();       //主界面

void ruzhu();        //入住登记

void duqu();         //读取信息

void baocun();       //保存信息

void xiangxi();      //详细信息

void tuifang();      //退房

void nowxinxi1(); //更新信息

void sjgx();         //房间数量更新

//结构体 房间信息

typedef struct {

  int rzyn; //用来保存是否有人入住.

  char name[20];

  char sfhao[20];

  char sex;

} kerenxinxi;

kerenxinxi fjnum[100][100];

int main(int argc, const char* argv[]) {

  duqu();

  while (1) {

    mainUI();

    int cznum;

    scanf("%d", &cznum);

    switch (cznum) {

      case 1: //入住登记

        ruzhu();

        break;

      case 2: //退房

        tuifang();

        break;

      case 3: //修改信息

        nowxinxi1();

        break;

      case 4: //查看所有

        showfangjian();

        break;

      case 5: //搜索信息

        xiangxi();

        break;

      case 6: //退出系统

        printf("************************\n");

        printf("******** ******\n");

        printf("***** 1.房间数量更新 *****\n");

        printf("***** 2.退 *****\n");

        printf("************************\n");

        int xtsznum;

        printf("请选择对应序列号\n");

        scanf("%d", &xtsznum);

        switch (xtsznum) {

          case 1:

            sjgx();

            break;

          case 2:

            printf("是否确认退出输入Y确认退出.否则任意键返回\n");

            char charQz;

            scanf(" %c", &charQz);

            if (charQz == 'y' || charQz == 'Y') {

              return 0;

            }

            break;

          default:

            break;

        }


        break;

      default:

        break;

    }

  }

  return 0;

}


void sjgx() {

  char lssz;

  printf("请输入更新后的酒店楼层数\n");

  scanf("%d", &fjceng);

  printf("请输入更新后的楼层房间数\n");

  scanf("%d", &fjhao);

  printf("确认更新?确定Y,取消任意键返回!\n");

  scanf(" %c", &lssz);

  if (lssz == 'y' || lssz == 'Y') {

    baocun();

  } else {

    printf("取消保存,已返回菜单\n");

  }

}


void tuifang() {

  showfangjian();

    printf("请输入你要退房的房间序列号\n");

    int xgnum,x,y;

    scanf("%d", &xgnum);

    x = ((xgnum-1)/fjhao);

    y = (xgnum-(fjhao*x));

    if(fjnum[x][y-1].rzyn == 1){

    printf("你需要退房的原信息如下\n");

    printf("姓名:%s\n",fjnum[x][y-1].name);

    printf("身份证:%s\n",fjnum[x][y-1].sfhao);

    printf("性别:%c\n",fjnum[x][y-1].sex);

    fjnum[x][y-1].rzyn = 0;

    printf("退房完成\n");

    baocun();

    }else{

        printf("你选择的房间无人入住,请重新操作\n");

    }


}

void nowxinxi1(){

    showfangjian();

    printf("请输入你要修改登记信息的房间序列号\n");

    int xgnum,x,y;

    scanf("%d", &xgnum);

    x = ((xgnum-1)/fjhao);

    y = (xgnum-(fjhao*x));

    if (fjnum[x][y-1].rzyn == 1){

    printf("你需要修改的原信息如下\n");

    printf("姓名:%s\n",fjnum[x][y-1].name);

    printf("身份证:%s\n",fjnum[x][y-1].sfhao);

    printf("性别:%c\n",fjnum[x][y-1].sex);

    printf("请输入你要更新的入住人员姓名\n");

    scanf("%s", fjnum[x][y-1].name);

    printf("请输入你要更新的身份证号码\n");

    scanf("%s", fjnum[x][y-1].sfhao);

    printf("请输入你要更新的入住人员性别\n");

    scanf(" %c", &fjnum[x][y-1].sex);

    baocun();

    }else{

        printf("你选择的房间无人入住\n");

    }



}


void xiangxi() {

  showfangjian();

  printf("请输入你要查看详细信息的序列号\n");

   //要查看的详细信息的序列号

    int xgnum,x,y;

    scanf("%d", &xgnum);

    x = ((xgnum-1)/fjhao);

    y = (xgnum-(fjhao*x));

    if(fjnum[x][y-1].rzyn == 1){


    printf("房间登记详细如下:\n");

    printf("姓名:%s\n",fjnum[x][y-1].name);

    printf("身份证号:%s\n",fjnum[x][y-1].sfhao);

    printf("性别:%c\n",fjnum[x][y-1].sex);

    }else{

        printf("你选择的房间无人入住,无法查看详细信息\n");

    }

}

void ruzhu() {

  int xgnum,x,y;

    while (1) {

  showfangjian();

  printf("请输入要登记的房间序列号\n");

    scanf("%d", &xgnum);

    x = ((xgnum-1)/fjhao);

    y = (xgnum-(fjhao*x));

        if (fjnum[x][y-1].rzyn == 0){

    printf("请输入你要登记的旅客姓名:\n");

    scanf("%s",fjnum[x][y-1].name);

    printf("请输入你要登记的旅客身份证号码:\n");

    scanf("%s",fjnum[x][y-1].sfhao);

        printf("请输入你要登记的旅客性别:\n");

    scanf(" %c",&fjnum[x][y-1].sex);

            fjnum[x][y-1].rzyn = 1;

        baocun();

        printf("登记完成!!\n");

            break;

        }else{

            printf("你选择的房间已经有人入住,请重新选择\n");

        }

      }

}

void showfangjian() {

  int xlh = 1;

  printf("序号:楼层:房间号:入住信息.1 = 有人 0 = 无人\n");

  for (int i = 0; i < fjceng; i++) {

    for (int j = 0; j < fjhao; j++) {

      printf("%d:  %d- %d号房,   入住信息:%d\n", xlh, i + 1, j + 1,

             fjnum[i][j].rzyn);

      xlh++;

    }

  }

}

void mainUI() {


  printf("**************************\n");

  printf("*****欢迎使用酒店管理系统*****\n");

  printf("******  1、入住登记  ******\n");

  printf("******  2、退     ******\n");

  printf("******  3、修改信息  ******\n");

  printf("******  4、查看所有  ******\n");

  printf("******  5、搜索详细  ******\n");

  printf("******  6、系统设置  ******\n");

  printf("**************************\n\n");


  printf("请输入您要进行的操作(请输入序号)\n");

}

void duqu() {

  FILE* pd = fopen("name222.txt", "r");

  if (pd) {

      fread(&fjceng, sizeof(int), 1, pd);

      fread(&fjhao, sizeof(int), 1, pd);

    fread(fjnum, sizeof(fjnum), 1, pd);

    fclose(pd);

  }

}

//保存联系人数组到文本

void baocun() {

  FILE* pf = fopen("name222.txt", "w");

  if (pf) {

      fwrite(&fjceng, sizeof(int), 1, pf);

      fwrite(&fjhao, sizeof(int), 1, pf);

    fwrite(fjnum, sizeof(fjnum), 1, pf);

    fclose(pf);

    printf("更新成功!!!\n");

  }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值