「ベッドの割り当て」の問題-C言語配列の実現
前に書く
书くのはとても苦労します~しかし范先生は运行さえ私に运行させていません~私は枯れました!構造体配列の格納方式を採用している.
テーマ:ベッドの割り当て
ある客店にはNランクの部屋があり、k級客室はA(k)個あり、各部屋にBがあります(k)シングルベッドで、メニュー呼び出し方式でシングル旅客がベッドを割り当て、店を出る時にベッドを回収するプログラムを設計する.割り当て成功を要求する時、旅客の名前、年齢、性別、到着日、客室等級、部屋番号及びベッド番号を印刷する.割り当てが成功しない時、部屋等級の変更を許可し、等級を変更しなければ、「満客」の提示を印刷する.
ツッコミと説明
怠け者だから、注釈をつけない.timeライブラリ内の構造体のほかに,Guest,Bed,Room,Levelの4種類の構造体がある.オブジェクト向けの感じが出てきました.タイトル通りにはいかなかったのですが、部屋ごとにベッド数が違います~それはむくんでいると思います.また、「余分な10部屋を建ててはいけないレベル」の理由は、私の部屋番号「X 0 X」がデザインが悪いだけ......(.チェックアウト操作はNULLに名前を置くだけです.システム時間を取得する上で主に文字列を操作しています.
完全なコード
书くのはとても苦労します~しかし范先生は运行さえ私に运行させていません~私は枯れました!構造体配列の格納方式を採用している.
テーマ:ベッドの割り当て
ある客店にはNランクの部屋があり、k級客室はA(k)個あり、各部屋にBがあります(k)シングルベッドで、メニュー呼び出し方式でシングル旅客がベッドを割り当て、店を出る時にベッドを回収するプログラムを設計する.割り当て成功を要求する時、旅客の名前、年齢、性別、到着日、客室等級、部屋番号及びベッド番号を印刷する.割り当てが成功しない時、部屋等級の変更を許可し、等級を変更しなければ、「満客」の提示を印刷する.
ツッコミと説明
怠け者だから、注釈をつけない.timeライブラリ内の構造体のほかに,Guest,Bed,Room,Levelの4種類の構造体がある.オブジェクト向けの感じが出てきました.タイトル通りにはいかなかったのですが、部屋ごとにベッド数が違います~それはむくんでいると思います.また、「余分な10部屋を建ててはいけないレベル」の理由は、私の部屋番号「X 0 X」がデザインが悪いだけ......(.チェックアウト操作はNULLに名前を置くだけです.システム時間を取得する上で主に文字列を操作しています.
完全なコード
#include
#include
int levelNum, roomNum, bedNum;
typedef struct tm *tim;
typedef struct Guest{
int level, room, bed;
char name[20],date[20];
int age;
int sex;
}Guest;
typedef struct Bed{
int bedNumber;
Guest guest;
}Bed;
typedef struct Room{
int sex;
int bedNum;
int peopleNum;
int roomNumber;
Bed *bed;
}Room;
typedef struct Level{
Room *room;
int roomNum;
}Level;
Level* BuildHotel(int levelNum, int roomNum, int bedNum){
Level* level;
int i, j, k;
level = (Level*)malloc(sizeof(Level)*levelNum);
for(i=0;itm_year+1900,y,10);
ltoa(lt->tm_mon+1,m,10);
ltoa(lt->tm_mday,d,10);
ltoa(lt->tm_hour,h,10);
ltoa(lt->tm_min,f,10);
ltoa(lt->tm_sec,s,10);
strcat(y,"/");strcat(y,m);strcat(y,"/");strcat(y,d);strcat(y," ");
strcat(y,h);strcat(y,":");strcat(y,f);strcat(y,":");strcat(y,s);
strcpy(hotel[level].room[room].bed[bed].guest.date, y);
printf("
** :
");
PrintGuest(hotel, level, room, bed);
return 1;
}
void PrintGuest(Level* hotel, int level, int room, int bed){
printf("***************************************************
");
printf("*
");
printf("** :%d\t\t :%d0%d\t :No.%d
",level+1, level+1, room+1, bed+1);
printf("** :%s\t", hotel[level].room[room].bed[bed].guest.name);
if(hotel[level].room[room].bed[bed].guest.sex==0) printf(" : \t");
else printf(" : \t");
printf(" :%d
", hotel[level].room[room].bed[bed].guest.age);
printf("** :%s
", hotel[level].room[room].bed[bed].guest.date);
printf("*
");
printf("***************************************************
");
}
int CheckOut(Level* hotel){
int i, j, level, room, bed;
char name[20];
printf("* :"); scanf("%d", &i);
level = i/100 -1;
room = i%10 -1;
printf("* :"); scanf("%d", &j);
bed = j - 1;
if( strcmp(hotel[level].room[room].bed[bed].guest.name, "")!=0 ){
printf("* :"); scanf("%s", &name);
if( strcmp(hotel[level].room[room].bed[bed].guest.name, name)==0 ){
printf("
** :
");
PrintGuest(hotel, level, room, bed);
strcpy(hotel[level].room[room].bed[bed].guest.name, "");
hotel[level].room[room].peopleNum -= 1;
return 1;
}
else{
printf("
* !
");
return 0;
}
}
else{
printf("
* !
");
return 0;
}
}
int Query(Level* hotel){
int i, j, level, room, bed;
char name[20];
printf("* :"); scanf("%d", &i);
level = i/100 -1;
room = i%10 -1;
printf("* :"); scanf("%d", &j);
bed = j - 1;
if( strcmp(hotel[level].room[room].bed[bed].guest.name, "")==0 ){
printf("
* !
");
return 0;
}
else {
printf("
** :
");
PrintGuest(hotel, level, room, bed);
return 1;
}
}
void PrintAll(Level* hotel){
int i, j, k, sum = 0;
for(i=0;i10 || roomNum>10) {
printf(" , 10 !");
levelNum = 9;
roomNum = 9;
}
Level* hotel = BuildHotel(levelNum, roomNum, bedNum);
while(1){
printf("
******* CK *******");
printf("
***----1> ------------***");
printf("
***----2> ------------***");
printf("
***----3> --------***");
printf("
***----4> ----***");
printf("
***----5> --------***");
printf("
****************************");
printf("
* :");
scanf("%d",&select);
printf("
");
switch(select){
case 1:
if( CheckIn(hotel) ){
printf("* !
");
}
else printf("
* ! !
");
break;
case 2:
if( CheckOut(hotel) ){
printf("* !
");
}
else printf("* !
");
break;
case 3:
if( Query(hotel) ){
printf("* !
");
}
else printf("* !
");
break;
case 4:
PrintAll(hotel);
break;
case 5:
printf("* CK ! !");
return 0;
default:
printf("* ! !
");
break;
}
}
}