
Перелік джерел посилання
1. Андреев, В. В. Как организовать делопроизводство на. М.: ИНФРА-М, 1997. 94 с.
2. Белов А. В., Николаев В. Н. Финансы и кредит: учеб. - К.: Университет, 2004. 215 с.
3. Агафонова Н. Н., Богачева Т. В. , Глушкова Л. И. Гражданское право: учеб. пособие / под общ. ред. А. Г. Калпина ; МОН Украины. - 2-е изд., перераб. и доп. - Х. : Фактор, 2000. 542 с.
4. Височанський В. С. , Кардаш А. І., Костєв В. С. та ін. Елементи інформатики: довідник. К. :Наук. думка, 2003. 92 с.
5. Документация по .NET. URL: https://docs.microsoft.com/ru-ru/dotnet/#pivot=docs&panel=getstarted (дата звернення: 26.02.2018).
6. Microsoft Developer Network. Библиотека MSDN / MSDN – сеть разработчиков Microsoft. URL: https://msdn.microsoft.com/ru-ru/ (дата звернення: 26.02.2018).
Додаток а
Код форми додатків
AddRoomsForm.cs
public partial class AddRoomsForm : Form
{
private Hotel hotel;
private int numberFirst, numberLast;
private string _class;
private int capacity;
private double pricePerDay;
//конструктор
public AddRoomsForm(Hotel h)
{
hotel = h;
InitializeComponent();
for (int i = 1; i <= hotel.FloorNumber; i++)
floorComboBox.Items.Add(i);
floorComboBox.SelectedIndex = 0;
}
//валидаторы полей
private string roomNumberTextBox_Validate()
{
string text = roomNumberTextBox.Text;
if (text == "")
{
return "Заполните это поле";
}
Regex single = new Regex(@"^\d{1,9}$");
Regex range = new Regex(@"^\d{1,9}-\d{1,9}$");
if (single.IsMatch(text))
{
numberFirst = numberLast = Int32.Parse(text);
if (numberFirst == 0)
{
return "Введите положительное число меньше миллиарда";
}
return "";
}
if (range.IsMatch(text))
{
numberFirst = Int32.Parse(text.Split('-')[0]);
numberLast = Int32.Parse(text.Split('-')[1]);
if (numberFirst == 0 || numberLast == 0)
{
return "Номер комнаты должен быть от нуля до миллиарда";
}
return "";
}
return "Неверный формат";
}
private string classTextBox_Validate()
{
_class = classTextBox.Text;
if (_class == "")
{
return "Заполните это поле";
}
return "";
}
private string capacityTextBox_Validate()
{
if (capacityTextBox.Text == "")
{
return "Заполните это поле";
}
if (!Int32.TryParse(capacityTextBox.Text, out capacity) || capacity <= 0)
{
return "Введите положительное число меньше миллиарда";
}
return "";
}
private string priceTextBox_Validate()
{
if (priceTextBox.Text == "")
{
return "Заполните это поле";
}
if (!Double.TryParse(priceTextBox.Text, out pricePerDay) || pricePerDay < 0)
{
return "Введите неотрицательное число меньше миллиарда";
}
return "";
}
//удаление предупреждения при изменении текста
private void textBox_TextChanged(object sender, EventArgs e)
{
TextBox target = sender as TextBox;
if (target == priceTextBox)
{
errorProvider.SetError(priceLabel1, null);
}
else
{
errorProvider.SetError(target, null);
}
}
//обработка добавления комнат
private void submitButton_Click(object sender, EventArgs e)
{
//проверка всех полей формы
string result;
//флаг, все ли поля формы верны
bool flag = true;
if ((result = roomNumberTextBox_Validate()) != "")
{
flag = false;
errorProvider.SetError(roomNumberTextBox, result);
}
if ((result = classTextBox_Validate()) != "")
{
flag = false;
errorProvider.SetError(classTextBox, result);
}
if ((result = capacityTextBox_Validate()) != "")
{
flag = false;
errorProvider.SetError(capacityTextBox, result);
}
if ((result = priceTextBox_Validate()) != "")
{
flag = false;
errorProvider.SetError(priceLabel1, result);
}
if (flag == false)
return;
try
{
hotel.AddRoomRange(floorComboBox.SelectedIndex + 1,
numberFirst,
numberLast,
_class,
capacity,
pricePerDay);
MessageBox.Show("Комнаты успешно добавлены.",
"Добавление успешно",
MessageBoxButtons.OK, MessageBoxIcon.Information);
this.DialogResult = DialogResult.OK;
}
catch (Exception exc)
{
MessageBox.Show(exc.Message,
"Ошибка",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
DeleteRoomsForm.cs
public partial class DeleteRoomForm : Form
{
private Hotel hotel;
public DeleteRoomForm(Hotel h)
{
InitializeComponent();
hotel = h;
}
private void deleteButton_Click(object sender, EventArgs e)
{
string text = roomNumberTextBox.Text;
int number;
if (text == "")
{
errorProvider.SetError(roomNumberTextBox, "Заполните это поле.");
return;
}
if (Int32.TryParse(text, out number) == false || number <= 0)
{
errorProvider.SetError(roomNumberTextBox, "Введите положительное число не больше миллиарда.");
return;
}
DialogResult result = MessageBox.Show($"Вы уверены, что хотите удалить комнату с номером {number}?",
"Подтверждение операции",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
if (result == DialogResult.No)
{
errorProvider.SetError(roomNumberTextBox, null);
return;
}
try
{
hotel.DeleteRoom(number);
MessageBox.Show($"Комната {number} успешно удалена.",
"Удаление успешно",
MessageBoxButtons.OK, MessageBoxIcon.Information);
this.DialogResult = DialogResult.OK;
}
catch (Exception exc)
{
errorProvider.SetError(roomNumberTextBox, null);
MessageBox.Show(exc.Message,
"Ошибка",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
FindRoomsForm.cs
public partial class FindRoomsForm : Form
{
private Hotel hotel;
private string _class;
private int capacity;
private double pricePerDay;
public FindRoomsForm(Hotel h)
{
hotel = h;
InitializeComponent();
datePicker.MinDate = DateTime.Now;
}
//валидаторы полей
private string classTextBox_Validate()
{
_class = classTextBox.Text;
if (_class == "")
{
return "Заполните это поле";
}
return "";
}
private string capacityTextBox_Validate()
{
if (capacityTextBox.Text == "")
{
return "Заполните это поле";
}
if (!Int32.TryParse(capacityTextBox.Text, out capacity) || capacity <= 0)
{
return "Введите положительное число меньше миллиарда";
}
return "";
}
private string priceTextBox_Validate()
{
if (priceTextBox.Text == "")
{
return "Заполните это поле";
}
if (!Double.TryParse(priceTextBox.Text, out pricePerDay) || pricePerDay < 0)
{
return "Введите неотрицательное число меньше миллиарда";
}
return "";
}
//удаление предупреждения при изменении текста
private void textBox_TextChanged(object sender, EventArgs e)
{
TextBox target = sender as TextBox;
if (target == priceTextBox)
{
errorProvider.SetError(priceLabel1, null);
}
else
{
errorProvider.SetError(target, null);
}
}
//формирование запроса на поиск
private void findButton_Click(object sender, EventArgs e)
{
//проверка всех полей формы
string result;
//флаг, все ли поля формы верны
bool flag = true;
if (classCheckBox.Checked && (result = classTextBox_Validate()) != "")
{
flag = false;
errorProvider.SetError(classTextBox, result);
}
if (capacityCheckBox.Checked && (result = capacityTextBox_Validate()) != "")
{
flag = false;
errorProvider.SetError(capacityTextBox, result);
}
if (priceCheckBox.Checked && (result = priceTextBox_Validate()) != "")
{
flag = false;
errorProvider.SetError(priceLabel1, result);
}
if (flag == false)
return;
//проверка чекбоксов, составление критерия
string criteria = "";
criteria += classCheckBox.Checked ? "Y" : "N";
criteria += capacityCheckBox.Checked ? "Y" : "N";
criteria += priceCheckBox.Checked ? "Y" : "N";
try
{
IReadOnlyList<Room> foundRooms = hotel.FindEmptyRooms(criteria,
_class,
capacity,
pricePerDay,
datePicker.Value);
showResult(foundRooms);
}
catch (Exception exc)
{
MessageBox.Show(exc.Message,
"Ошибка",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void showResult(IReadOnlyList<Room> foundRooms)
{
if (foundRooms.Count == 0)
{
nothingFound.Visible = true;
}
else
{
nothingFound.Visible = false;
}
searchResult.Rows.Clear();
foreach (Room room in foundRooms)
{
searchResult.Rows.Add(new object[] { room.Number,
room.Class,
room.Capacity,
room.PricePerDay,
room.IsEmpty,
room.IsEmpty ? null : room.DateLeave.ToShortDateString() });
}
}
//включение/отключение параметра поиска
private void checkBox_CheckedChanged(object sender, EventArgs e)
{
CheckBox target = sender as CheckBox;
switch (target.Name)
{
case "classCheckBox":
{
classTextBox.Enabled = !classTextBox.Enabled;
errorProvider.SetError(classTextBox, null);
break;
}
case "capacityCheckBox":
{
capacityTextBox.Enabled = !capacityTextBox.Enabled;
errorProvider.SetError(capacityTextBox, null);
break;
}
case "priceCheckBox":
{
priceTextBox.Enabled = !priceTextBox.Enabled;
errorProvider.SetError(priceLabel1, null);
break;
}
}
}
.