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

来源:互联网 发布:网络协议软件是什么 编辑:程序博客网 时间:2024/05/01 12:07

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

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

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

    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");

  }

}


0 0
原创粉丝点击