Диплом: Автоматизация продажи авиабилетов в ООО «ФлайВан»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
97
14. Ш. Чаллавала: MySQL 8 для больших данных, М, ДМК-Пресс, 2018 г.,
181 с.
15. Шварц Бэрон: MySQL по максимуму, М. Питер, 2018 г., 676 с.Amadeus
[Электронный ресурс] – Режим доступа:
http://support.nemo.travel/ru/Amadeus (Дата обращения: 15.06.2020).
16. Travelport (Galileo) [Электронный ресурс] – Режим доступа:
http://support.nemo.travel/ru/Travelport_(Galileo) (Дата обращения:
15.06.2020).
17. Авиабилеты. IT системы бронирования [Электронный ресурс] – Режим
доступа: https://habrahabr.ru/company/buruki/blog/192384/ (Дата
обращения: 15.06.2020).
18. Возможности Немо [Электронный ресурс] – Режим доступа:
https://nemo.travel/bazovye-vozmozhnosti-nemo.html (Дата обращения:
15.06.2020).
19. Электронный билет (воздушный транспорт) [Электронный ресурс] –
Режим
доступа:http://ru.wikipedia.org/wiki/Электронный_билет_(воздушный_т
ранспорт) (Дата обращения: 15.06.2020).
98
ПРИЛОЖЕНИЕ. ЛИСТИНГ C# КОДА ОСНОВНЫХ
МОДУЛЕЙ КЛИЕНТСКОГО ПРИЛОЖЕНИЯ
public static string Post(string url, string data){
string result;
try{
WebRequest request = WebRequest.Create(new Uri(url));
request.Method = "POST";
byte[] byteArray = Encoding.UTF8.GetBytes(data);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
Stream stream = request.GetRequestStream();
stream.Write(byteArray, 0, byteArray.Length);
stream.Close();
WebResponse response = request.GetResponse();
using (stream = response.GetResponseStream()){
StreamReader reader = new StreamReader(stream);
result = reader.ReadToEnd();
reader.Dispose();
}
stream.Close();
response.Close();
}
catch (WebException){
result = "Не удалось подключиться к серверу";
}
return result;
}
private void Auth(string login, string password, bool remember){
if (!string.IsNullOrWhiteSpace(login)){
if (!string.IsNullOrWhiteSpace(password)){
99
string postData =
$"action=auth&login={login}&password={password}";
string response = Http.Post("http://h146736.s31.test-
hf.su/flyone/api.php", postData);
if (response.Contains("Авторизован")){
Properties.Settings.Default.Login = login;
if (remember){
Properties.Settings.Default.Password = password;
Properties.Settings.Default.RememberMe =
remember;
}
Properties.Settings.Default.Save();
Tools.role = Tools.ParseBetween(response, "role=", ";");
Tools.apiKey = Tools.ParseBetween(response,
"apikey=", ";");
DialogResult = DialogResult.OK;
}
else{
MaterialMessageBox.Show(response, "Ошибка");
}
}
else{
MaterialMessageBox.Show("Укажите пароль", "Ошибка");
}
}
else{
MaterialMessageBox.Show("Укажите электронную почту",
"Ошибка");
}
}
100
private void Reg(string login, string password){
if (!string.IsNullOrWhiteSpace(login)){
string pattern = @"^(.*)@(.*).(.*)$";
if (Regex.IsMatch(login, pattern)){
if (!string.IsNullOrWhiteSpace(password) && password.Length
>= 5){
string postData =
$"action=reg&login={login}&password={password}";
string response = Http.Post("http://h146736.s31.test-
hf.su/flyone/api.php", postData);
if (response.Contains("Зарегистрирован")){
MaterialMessageBox.Show("Регистрация прошла
успешно, используйте свой логин и пароль на вкладке
авторизации", "Успешно");
TbAuthLogin.Text = login;
TcAuth.SelectedIndex = 0;
}
else{
MaterialMessageBox.Show(response, "Ошибка");
}
}
else{
MaterialMessageBox.Show("Пароль должен содержать
минимум 5 символов", "Ошибка");
}
}
else{
MaterialMessageBox.Show("Неверный адрес электронной
почты. Пример: user@mail.com", "Ошибка");
}
101
}
else{
MaterialMessageBox.Show("Укажите электронную почту",
"Ошибка");
}
}
private void GetFlights(){
LvFlights.Items.Clear();
string postData = $"action=getFlights&apikey={Tools.apiKey}";
string response = Http.Post("http://h146736.s31.test-hf.su/flyone/api.php",
postData);
if (response.Contains("Рейсов получено")){
int flights = Convert.ToInt32(Tools.ParseBetween(response, "Рейсов
получено=", ";"));
for (int i = 1; i <= flights; i++){
string getOrder = Tools.ParseBetween(response, "Flight_" + i +
"=", "&;");
ListViewItem listViewItem = new
ListViewItem(Tools.ParseBetween(getOrder, "FlightId=", ";"));
listViewItem.SubItems.Add(Tools.ParseBetween(getOrder,
"Route=", ";"));
listViewItem.SubItems.Add(Tools.ParseBetween(getOrder,
"Date=", ";"));
listViewItem.SubItems.Add(Tools.ParseBetween(getOrder,
"Cost=", ";"));
listViewItem.SubItems.Add(Tools.ParseBetween(getOrder,
"Seats=", ";"));
listViewItem.SubItems.Add(Tools.ParseBetween(getOrder,
"Status=", ";"));
LvFlights.Items.Add(listViewItem);
102
}
}
}
private void BtnBuyTicket_Click(object sender, EventArgs e){
if (!string.IsNullOrEmpty(TbFirstName.Text) &&
!string.IsNullOrEmpty(TbMiddleName.Text) &&
!string.IsNullOrEmpty(TbLastName.Text) &&
!string.IsNullOrEmpty(CbGender.Text) &&
!string.IsNullOrEmpty(TbBirthday.Text) &&
!string.IsNullOrEmpty(TbDocument.Text)){
string birthdayPattern = @"^([0-9]{2}).([0-9]{2}).([0-9]{4})$";
if (Regex.IsMatch(TbBirthday.Text, birthdayPattern)){
string postData =
$"action=buyTicket&flightId={TbFlightId.Text}&firstName={TbFirs
tName.Text}&middleName={TbMiddleName.Text}&lastName={Tb
LastName.Text}&gender={CbGender.Text}&birthday={TbBirthday.
Text}&document={TbDocument.Text}&apikey={Tools.apiKey}";
string response = Http.Post("http://h146736.s31.test-
hf.su/flyone/api.php", postData);
if (response.Contains("Билет успешно оплачен")){
MaterialMessageBox.Show("Заказ оплачен",
"Успешно");
DialogResult = DialogResult.OK;}
else{
MaterialMessageBox.Show(response, "Ошибка");
}
}
else{
MaterialMessageBox.Show("Проверьте корректность даты
дня рождения. Пример ДД.ММ.ГГГГ", "Ошибка");
103
}
}
else{
MaterialMessageBox.Show("Необходимо заполнить все поля",
"Ошибка");
}
}
private void GetAirports(){
CbCityFrom.Items.Clear();
CbCityTo.Items.Clear();
string postData = $"action=getAirports&apikey={Tools.apiKey}";
string response = Http.Post("http://h146736.s31.test-hf.su/flyone/api.php",
postData);
if (response.Contains("Аэропортов получено")){
int flights = Convert.ToInt32(Tools.ParseBetween(response,
"Аэропортов получено=", ";"));
for (int i = 1; i <= flights; i++){
string getAirport = Tools.ParseBetween(response, "Airport_" +
i + "=", "&;");
string city = Tools.ParseBetween(getAirport, "City=", ";");
if (!CbCityFrom.Items.Contains(city)){
CbCityFrom.Items.Add(city);
}
if (!CbCityTo.Items.Contains(city)){
CbCityTo.Items.Add(city);
}
}
}
}
private void GetOrders(){
104
LvOrders.Items.Clear();
string postData = $"action=getOrders&apikey={Tools.apiKey}";
string response = Http.Post("http://h146736.s31.test-hf.su/flyone/api.php",
postData);
if (response.Contains("Заказов получено")){
int orders = Convert.ToInt32(Tools.ParseBetween(response, "Заказов
получено=", ";"));
for (int i = 1; i <= orders; i++){
string getOrder = Tools.ParseBetween(response, "Order_" + i +
"=", "&;");
ListViewItem listViewItem = new
ListViewItem(Tools.ParseBetween(getOrder, "OrderId=", ";"));
listViewItem.SubItems.Add(Tools.ParseBetween(getOrder,
"FlightId=", ";"));
listViewItem.SubItems.Add(Tools.ParseBetween(getOrder,
"Route=", ";"));
listViewItem.SubItems.Add(Tools.ParseBetween(getOrder,
"Date=", ";"));
listViewItem.SubItems.Add(Tools.ParseBetween(getOrder,
"Cost=", ";"));
listViewItem.SubItems.Add(Tools.ParseBetween(getOrder,
"Status=", ";"));
LvOrders.Items.Add(listViewItem);
}
}
}
private void BtnSendMessage_Click(object sender, EventArgs e){
if (!string.IsNullOrWhiteSpace(TbMessage.Text)){
string postData =
$"action=sendMessage&message={TbMessage.Text}&apikey={Tools.apiK
105
ey}";
string response = Http.Post("http://h146736.s31.test-
hf.su/flyone/api.php", postData);
if (response.Contains("Письмо успешно отправлено")){
MaterialMessageBox.Show("Спасибо за письмо! Мы
обязательно ответим на ваше письмо в ближайшее время",
"Успешно");
}
else{
MaterialMessageBox.Show(response, "Ошибка");
}
}
else{
MaterialMessageBox.Show("Вы отправляете пустое сообщение?
Вам нечего нам сказать?", "Ошибка");
}
}
private void BtnFindTicket_Click(object sender, EventArgs e){
if (!string.IsNullOrWhiteSpace(CbCityFrom.Text) &&
!string.IsNullOrWhiteSpace(CbCityTo.Text)){
if (CbCityFrom.Text != CbCityTo.Text){
string dateFromPattern = @"^([0-9]{2}).([0-9]{2}).([0-
9]{4})$";
if (Regex.IsMatch(TbDateFrom.Text, dateFromPattern)){
LvFlights.Items.Clear();
string postData =
$"action=findFlights&cityFrom={CbCityFrom.Text}&cit
yTo={CbCityTo.Text}&dateFrom={TbDateFrom.Text}
&3days={Cb3days.Checked}&apikey={Tools.apiKey}";
string response =
106
Http.Post("http://h146736.s31.test-hf.su/flyone/api.php",
postData);
if (response.Contains("Рейсов получено")){
int flights =
Convert.ToInt32(Tools.ParseBetween(response, "Рейсов
получено=", ";"));
for (int i = 1; i <= flights; i++){
string getFlight =
Tools.ParseBetween(response, "Flight_" + i + "=",
"&;");
ListViewItem listViewItem = new
ListViewItem(Tools.ParseBetween(getFlight,
"FlightId=", ";"));
listViewItem.SubItems.Add(Tools.ParseBet
ween(getFlight, "Route=", ";"));
listViewItem.SubItems.Add(Tools.ParseBet
ween(getFlight, "Date=", ";"));
listViewItem.SubItems.Add(Tools.ParseBet
ween(getFlight, "Cost=", ";"));
listViewItem.SubItems.Add(Tools.ParseBet
ween(getFlight, "Seats=", ";"));
listViewItem.SubItems.Add(Tools.ParseBet
ween(getFlight, "Status=", ";"));
LvFlights.Items.Add(listViewItem);
}
}
}
else{
MaterialMessageBox.Show("Проверьте корректность
даты вылета. Пример ДД.ММ.ГГГГ", "Ошибка");

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
«Управление ресурсами проекта» (на примере организации ООО «ЛАКОСТЭ»)
Agile-методология в управлении проектами на примере ООО «Ресурсный центр «Академия КлассИнфо»
Aвтoмaтизaция пpoцecca вeдeния инфopмaциoннoй бaзы o дoлжнocтяx и вaкaнcияx c укaзaниeм тpeбoвaний к уpoвню знaний и нaвыкoв кaндидaтoв для гpуппы кaдpoв вoйcкoвoй чacти 3474»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
Cовершенствование управления рентабельности предприятия (на примере гуипп «бендерская типография «полиграфист»)