Назад | Начало урока | Вперед
Содержание

Глава 4

Задача 4.12 "Заказ комнаты"

Нам нужна система, которая подбирает наиболее подходящую комнату для размещения определенного количества людей.
- Создайте файл с номерами комнат и количеством людей, которая каждая из них может поместить.
- Выполнение программы должно начинаться с вывода на экран окна, где требуется указать количество людей и имя заказчика.
- Считывайте данные из файла, пока не найдете такую комнату, которая не более чем на 10% больше, чем требуется.
- Выведите отчет о заказе, если он успешно выполнен.
- Если программа не нашла комнату, отвечающую заданным критериям, она должна предложить любую свободную комнату, в которой может разместиться необходимое количество людей, даже если она слишком большая.

Решение

Всю информацию о гостиничной комнате - номер, число мест, площадь -, будем хранить в классе Room.

class Room{

int number;//number of room
int piples;//volume to piples
int area;// area of room
Room(int n,int pip,int ar){
number = n;
piples = pip;
area = ar;
}
void write () {
System.out.println("number: "+ number + ";"+
" piples: "+ piples + ";"+
" area: "+ area + " square meter;");
}
}

Исходный файл может выглядеть следующим образом:

1 2 20
2 2 22
3 2 21
4 3 24
5 3 26
6 3 25
7 4 31
8 4 34
9 4 35
10 4 30

Первая цифра - номер комнаты, вторая - число людей на которое рассчитан номер, третья - площадь номера.

Нам остается через Display-окно принимать в цикле заказы от пользователя (две переменных - имя клиента и количество мест в номере). Затем считать пословно (три слова в строке) исходный файл, инициализировать три переменных объекта Room, проанализировать эти переменные, найти подходящий номер и сообщить клиенту (вывести в Display-окно), данные о подходящем номере, если таковой найден.

Код программы:



import java.io.*;
import javagently.*;

class HotelRooms {

Room first = new Room(2,3, 10);

HotelRooms() throws IOException {

Display d = new Display ("Hotel information");
d.prompt("Value of peoples",1);
d.prompt("Enter the name", "Peter Brown");
for (; ;) {

d.ready("\nPress ready when peoples entered");
int pip = d.getInt("Value of peoples");
String name = d.getString("Enter the name");

Stream in = new Stream(System.in);
// default the file to the keyboard
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");
}

int num;
int piple;
int area;

try {

for (;;) {

num = fin.readInt();
piple = fin.readInt();
area = fin.readInt();

first.number = num;
first.piples = piple;
first.area = area;

if(first.piples==pip)
break;
if(first.piples > pip)
break;

}
if(first.piples == pip){
d.println("Dear "+ name + "! Your room is: ");
d.println("number: "+ first.number + ";"+
" for: "+ first.piples + " peoples;"+
" area: "+ first.area + " square meter;");
}
if(first.piples > pip){
d.println("Dear "+ name + "! Sorry! 1-place room is absence. ");
d.println("Your room is number: "+ first.number + ";"+
" for: "+ first.piples + " peoples;"+"\n"+
" area: "+ first.area + " square meter;");
}
}

catch (EOFException e) {

System.out.println(" All data is reading ");
}
}
}

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
Room(int n,int pip,int ar){
number = n;
piples = pip;
area = ar;
}
void write () {
System.out.println("number: "+ number + ";"+
" piples: "+ piples + ";"+
" area: "+ area + " square meter;");
}
}


Результат :

Подсказка


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz