Глава 6
Задача 6.17 "Онлайновое бронирование номеров."
Модифицируйте программы 4.12 и 4.13 так, чтобы во время их работы забронированные номера хранились в массиве или хеш-таблице.
Решение 2
Поскольку программист всегда может узнать точно, сколько номеров в гостиннице, и все остальные данные. То для временного хранения данных во время работы программы хорошо подойдет обычный массив.
Исходный файл с данными может быть отформатирован так:
1 2 20
nothing
true
2 2 22
nothing
true
3 2 21
nothing
true
4 3 24
Peter Brown
false
5 3 26
Albert Volos
false
...
Отличие данной программы от предыдущей версии в том, что программа считывает из входного файла данных данные в обычный массив один раз, затем происходит работа с массивом по поиску нужного варианта комнаты.
Если нужная комната найдена, то вносятся изменения в массив, туда заносятся имя постояльца, и изменяется значение булевой переменной на противоположное.
Результаты работы программы сохраняются в выходном файле. В выходной файл в цикле копируется массив с измененными данными.
В случае, если все номера заняты, то программа не выводит ни каких предложений. Это говорит о том, что все номера заняты.
Код программы:
import java.io.*;
import javagently.*;
class HotelRooms {
int len = 11;
Room f[] = new Room[len];
boolean b;
HotelRooms() throws IOException {
Stream fin = new Stream(System.in);
try {
fin = Filer.open("data.txt");
}
catch (FileNotFoundException e) {
System.out.println("Five tries up");
System.out.println("Connecting to keyboard by default");
}
try {
for (int i = 0;i < f.length;i++) {
String temp;
f[i] = new Room(2,3,10,"",true);
f[i].number = fin.readInt();
f[i].piples = fin.readInt();
f[i].area = fin.readInt();
f[i].clientName = fin.readLine();
temp = fin.readLine();
String s = fin.readString();
b = temp.equals("true");
f[i].bul = b;
f[i].write();
}//for
}
catch (EOFException e) {
System.out.println(" All data is reading ");
}//try
System.out.println(" ");
System.out.println(" Massive: ");
for (int j = 0;j < f.length;j++) {
f[j].write();
}//for
fin.close();
Display d = new Display ("Hotel information");
d.prompt("Value of peoples",1);
d.prompt("Enter the name", "Peter Brown");
//---------------------------
//for1
for (; ;) {
d.ready("\nPress ready when peoples entered");
int pip = d.getInt("Value of peoples");
String name = d.getString("Enter the name");
//for2
for (int i = 0;i < f.length;i++) {
if(f[i].piples==pip & f[i].bul == true ){
d.println("Dear "+ name + "! Your room is: ");
d.println("number: "+ f[i].number + ";"+
" for: "+ f[i].piples + " peoples;"+
" area: "+ f[i].area + " square meter;");
f[i].clientName = name;
f[i].bul = false;
pip = 0;
b = true;
continue;
}//if
if(f[i].piples > pip & f[i].bul == true & pip != 0){
d.println("Dear "+ name + "! Sorry! "+ pip +"-place room is absence. ");
d.println("Your room is number: "+ f[i].number + ";"+
" for: "+ f[i].piples + " peoples;"+"\n"+
" area: "+ f[i].area + " square meter;");
f[i].clientName = name;
f[i].bul = false;
pip = 0;
b = true;
continue;
}//if
}//for2
//сохраним измененные данные в выходном файле
Stream fout= new Stream ("data.out",Stream.WRITE);
for (int i = 0;i < f.length;i++) {
fout.println(f[i].number + " "+
f[i].piples + " " +
f[i].area + "\n" +
f[i].clientName + "\n" +
f[i].bul);
}//for
fout.close();
}//end for1
}//end constructor
public static void main (String [ ] args)throws IOException {
new HotelRooms ();
}
}
class Room{
int number;//number of room
int piples;//volume to piples
int area;// area of room
String clientName;
boolean bul = true; //rezerved or free
Room(int n,int pip,int ar, String name, boolean b){
number = n;
piples = pip;
area = ar;
clientName = name;
bul = b ;
}
void write () {
System.out.println("number: "+ number + ";"+
" piples: "+ piples + ";"+
" area: "+ area + " square meter;"
+ " clientName: " + clientName + " Room is free? - " + bul);
}
}
Результат :
Как видим в выходном файле сохранен измененый массив.
1 2 20
Marko Polo
false
2 2 22
Gus Hiddink
false
3 2 21
nothing
true
4 3 24
Peter Brown
false
...
9 4 35
Malvina
false
10 4 30
Enrico Caruso
false
11 5 40
Sancho Pansa
false
Назад |
Начало урока |
Вверх |
Вперед
Содержание