Система бронювання та продажу квитків в кінотеатр

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2015
Тип роботи:
Курсова робота
Предмет:
Дослідження і проектування програмних систем

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” / Курсова робота На тему: «Система бронювання та продажу квитків в кінотеатр» із дисципліни: «Дослідження і проектування програмних систем» Львів – 2015 Течнічне завдання Розробити GUI оболонку для реалізації системи продажу і бронювання квитків в кінотеатр. Дана система буде використовуватися для віддаленого замовлення квитків. Система повинна мати клієнт-серверну архітектуру. Комунікація між клієнтською і серверною частиною відбувається по протоколу TCP. Клієнтська програма призначена для комунікації з користувачем. Вона повинна мати зручний інтерфейс, який буде зрозумілий на інтуїтивному рівні. Основне призначення серверної частини системи – муніпулювання даними. Сервер повинен вміти приймати дані від клієнта та записувати їх у БД, вичитувати дані з БД і відправляти їх до клієнта. Створити клас комунікації для клієнтської частини. Добавити функціонал зчитування даних що ввів користувач, передача по протоколу TCP та запис їх у БД. Додати функціонал у клієнтську та серверну частини, щоб забезпечити повне функціонування системи. АНОТАЦІЯ Архітектура клієнт-сервер є одним із архітектурних шаблонів програмного забезпечення та є домінуючою концепцією у створенні розподілених мережних застосунків і передбачає взаємодію та обмін даними між ними. У роботі було спроектовано систему для бронювання і продажу квитків в кінотеатр, що має клієнт-серверну архітектуру. Проект розроблений на мові програмування C#, технологія XAML, платформа .NET 4.5. Для взаємодії між клієнтом і сервером в локальній мережі використовується компонент Windows Socket з Net.Framework, на основі протоколу TCP. ЗМІСТ 1. Аналітичний розділ 5 1.1. Огляд існуючих програмних рішень 5 1.2. Середовище розробки 6 1.3. Система контролю версіями 7 1.4. Система управління дефектами 8 1.5. SQL Server 9 2. Реалізація програмної системи 10 2.1. Діаграма використання 10 2.2. Діаграма класів 12 2.3. Діаграма станів 13 2.4. Діаграма взаємодії 17 3. Результати роботи 20 Висновок 23 Список використаної літератури 24 Додатки 25 Аналітичний розділ Огляд існуючих програмних рішень Існує дуже багато різних систем для бронювання квитків в кінотеатр. Практично кожен кінотеатр має свою програмну реалізацію даної системи. Однією з найпопулярніших програм є “PlanetaKino” (Рис.1.1). / Рис. 1.1. “PlanetaKino”. Сторінка вибору місць в кінозалі В даній системі можна з легкістю купити або забронювати необхідну кількість квитків. Користувач має змогу вибрати зі списку потрібний фільм, переглянути вільні місця в залі, а також забронювати необхідну кількість місць. Присутні такі способи оплати: банківською карткою, платіжні термінали, оплата в банках. Система має зручний інтерфейс, зрозумілий на інтуїтивному рівні. Уся необхідна інформація про сеанс є доступна з самого початку (кількість вільних місць, вартість квитка). Також, даний сервіс часто проводить різноманітні акції, що забезпечує позитивні відгуки від користувачів. Середовище розробки Microsoft Visual Studio – лінійка продуктів компанії Microsoft, що включають інтегроване середовище розробки програмного забезпечення і ряд інших інструментальних засобів. Дані продукти дозволяють розробляти як консольні додатки, так і додатки з графічним інтерфейсом, в тому числі з підтримкою технології Windows Forms, а також веб – сайти, веб – додатки, веб – служби як в рідному, так і в керованому кодах для всіх платформ, підтримуваних Windows, Windows Mobile, Windows CE, .NET Framework, Xbox, Windows Phone .NET Compact Framework і Silverlight. Visual Studio включає в себе редактор вихідного коду з підтримкою технології IntelliSense і можливості просто рефакторингу коду. Вбудований відлагоджувач може працювати як відлагоджувач рівня вихідного коду, так і як відлагоджувач машинного рівня. Решта вбудовані інструменти включають в себе редактор форм для спрощення створення графічного інтерфейсу додатку, веб – редактор, дизайнер класів і дизайнер схеми бази даних. Visual Studio дозволяє створювати і підключати сторонні додатки (плагіни) для розширення функціональності практично на кожному рівні, включаючи додавання підтримки систем контролю версій вихідного коду, додавання нових наборів інструментів. Середовище розробки включає високопродуктивний 32-бітовий компілятор, що дозволяє оптимізувати створюваний код. Багатофункціональне інтегроване середовище розробки Microsoft Visual Studio 2013 включає компілятор, що задовольняє стандарту ANSI/ISO, вбудований дизайнер форм, багатий набір засобів для роботи з компонентами, інструмент Solution Explorer, менеджер проектів і відлагоджувач. Система контролю версіями Система контролю версій GIT призначена для контрольованого внесення змін у процесі розробки  програмного забезпечення, а також при написанні статей, та іншого роду діяльності, пов'язаному з редагуванням текстових файлів. Система дозволяє відстежити зміни, що відбуваються у вихідних текстах програм, що робить зручною спільну розробку. Механізм гілок  дозволяє з легкістю проводити експерименти над проектом, не зачіпаючи основного коду, або вести окрему розробку модулів, які згодом можуть бути включені в основний проект виконанням операції злиття. Внесення зміни можна контролювати за допомогою протоколу, який веде система. Крім того, система контролю версій в автоматичному режимі відстежує коректність внесених змін при одночасній розробці і запобігає ситуації які суперечать один одному при виправленнях в коді. Легка у використанні і одночасно багата функціонально, система контролю версій Git покликана стати незамінним інструментом будь-якого розробника! Можливості Git: Контроль версій програм Автоматичне резервне копіювання поточній версії програми і відповідних вихідних кодів; Зручні результати внесених змін; Інтелектуальне відстеження змін що суперечать один одному; Спільна розробка програми групою програмістів: Контроль відповідальності: хто, коли і які зміни вніс у вихідний код; статистика внеску учасників у розробку проекту; Створення версій розробки Проведення експериментів, не зачіпаючи основного коду програми; Спільна модульна розробка: окремі модулі, які в подальшому включаються до загального проекту; Легке управління версіями: злиття версій в основний проект, переміщення версій, видалення версій; Використання системи контролю версій для написання статей спільне написання з контролем відповідальності і поділом обов'язків; Зручність відстеження змін; Система управління дефектами JIRA це продукт, призначений для організації процесу контролю запитів і завдань, що має частину функціональності зазвичай властивої великим і дорогим системам управління проектами. Ключовими поняттями в JIRA є проекти і завдання. Завдання створюються в проектах, для виконання завдань призначаються виконавці. Завдання можуть бути різного типу і мати підзадачі, завдання можуть бути пов'язаними з іншими завданнями. Статус завдань змінюється в процесі їх виконання. Ви можете організувати контроль розробки проектів, роздавши завдання виконавцям, ви можете визначити свій власний метод руху завдань - від створення до виконання і контролю результатів, конфігурувати правила повідомлення про події всіх учасників процесу, управляти правами доступу користувачів і робити багато чого іншого. JIRA приносить великий ефект будь-якої організації, діяльність якої можна інтерпретувати як виконання будь-яких проектів і завдань, що мають тематичні та часові рамки. Головна перевага цього продукту в його ні з чим не порівнянною здатності налаштування під ваші потреби. SQL Server Microsoft SQL Server — комерційна система керування базами даних, що розповсюджується корпорацією Microsoft. Мова, що використовується для запитів — Transact-SQL, створена спільно Microsoft та Sybase. Transact-SQL є реалізацією стандарту ANSI/ISO щодо структурованої мови запитів (SQL) із розширеннями. Використовується як для невеликих і середніх за розміром баз даних, так і для великих баз даних масштабу підприємства. Багато років вдало конкурує з іншими системами керування базами даних. Microsoft SQL Server також підтримує Open Database Connectivity (ODBC) — інтерфейс взаємодії застосунків з СУБД. Версія SQL Server 2013 надає можливість підключення користувачів через веб-сервер-сервіси, що використовують протокол SOAP. Це дозволяє клієнтським програмам, не призначеним для Windows, кроссплатформенно з'єднуватися з SQL Server. SQL Server підтримує дзеркалювання та кластеризацію баз даних. Кластер серверу SQL — це сукупність однаково конфігурованих серверів; така схема допомагає розподілити робоче навантаження між декількома серверами. Усі сервера мають одне віртуальне ім'я, а дані розподіляються за IP-адресами машин кластеру протягом робочого циклу. Також у разі відмови або збою на одному з серверів кластеру доступне автоматичне перенесення навантаження на інший сервер. SQL Server 2005 має вбудовану підтримку .NET Framework. Завдяки цьому, процедури бази даних, що зберігаються, можуть бути написані на будь-якій мові платформи .NET з використанням повного набору бібліотек, доступних для .NET Framework. Реалізація програмної системи Діаграма використання Важливо зауважити, що діаграми випадків використання не призначено для показу компонування, вони не можуть описати внутрішню структуру системи. Діаграми випадків використання призначено для полегшення обміну інформацією між майбутніми користувачами системи і замовником, вони особливо корисні для визначення переліку можливостей, які повинна мати система. За діаграмами випадків використання можна сказати, що система має робити, але не те, як вона досягає потрібних результатів, для останнього ці діаграми просто не придатні. Випадок використання визначає, з точки зору акторів (користувачів), групу дій у системі, які призводять до конкретного видимого результату. Діаграма сценарію роботи клієнтської частини: / Рис. 2.1. UML діаграма сценарію роботи клієнтської частини Система дає змогу користувачу переглянути список фільмів які є в наявності, а також повну інформацію про них ( найближчий сеанс, вартість білетів, тощо). Після авторизації, користувач має змогу купити, або забронювати квиток (вибравши вільне місце в кінозалі). При купівлі квитка, система знімає з особистого рахунку клієнта певну суму грошей (вартість квитка). Нові користувачі повинні зареєструватися в системі. Перегляд контенту не потребує авторизації . Редагувати список запропонованих фільмів має тільки адміністратор. Діаграма сценарію роботи серверної частини: / Рис. 2.2. UML діаграма сценарію роботи серверної частини Серверна частина виконує команди клієнтської програми. Відповідно до команди клієнтів можна вносити зміни до бази даних. Редагувати базу даних може користувач, який пройшов авторизацію під іменем і паролем адміністратора. Діаграма класів На діаграмах класів буде показано різноманітні класи, які утворюють систему і їх взаємозв’язки. Діаграми класів називають “статичними діаграмами”, оскільки на них показано класи разом з методами і атрибутами, а також статичний взаємозв’язок між ними: те, яким класам “відомо” про існування яких класів, і те, які класи “є частиною” інших класів, — але не показано методи, які при цьому викликаються. На Рис. 2.3 зображена діаграма класів. / Рис. 2.3. Діаграма класів Роботу клієнтської частини організовано наступним чином: вона складається з 2 класів. А саме: авторизація (+реєстрація) та Tickets. У кожному класі описано необхідні для роботи цього класу операції та змінні які будуть використовуватись у ньому. Клас Authorization має такі атрибути: Login – змінна під логін, Mail – змінна під e-mail, Telephone – зміна під телефонний номер, та інші. В цьому клачі будуть описані наступні методи: Get_Data – метод для отримання даних з сервера, метод Sign_In –метод який авторизує користувача, та інші. Також в проекті було використано клас “Button”. В цьому класі я описав методи які описують усі кнопки які застосовуватимуться в програмі. Наприклад такі кнопки як вхід, вихід, так, ні, та інші. Таким способом я полегшую роботу програми. Цей клас зв’язаний з авторизацією та класом Tickets, так як саме в цих класах ці методи(тобто операції які відбуватимуться при натисненні на кнопку) будуть застосовуватись. Серверна частина складається з одного класу “Server”, який містить в собі такі методи: Get_Bd(отримання даних з БД), Get Data(отримання даних з клієнтської частини), Send_Bd(надсилання даних на сервер); Send Data(надсилання даних у клієнтську частину); Send Pass(надсилання паролю); Send Status(надсилання статусу). Для зв’язку з сервером використовується додатковий клас Communication. Діаграма станів На діаграмах станів зображають різні стани об’єкта під час його існування і стимули, які призводять до переходу об’єкта з одного стану у інший. На діаграмах стану об’єкти розглядаються як машини станів або скінченні автомати, які можуть перебувати у одному зі станів скінченного набору станів, і які можуть змінювати цей стан через вплив одного зі стимулів зі скінченного набору стимулів. З метою розкриття деталей алгоритмічної реалізації операцій, виконуваних системою, будемо використовувати оремий випадок діаграми станів - діаграми діяльності (Рис. 2.4.).  Рис. 2.4. Діаграма діяльності. Бронювання квитка Бронювання квитка передбачає вибір сеансу. Вибравши сеанс, користувач має змогу обрати вільні місця в залі і забронювати їх. Вибрані місця відсилаються на сервер. Сервер опрацьовує вхідні дані і зберігає їх в БД. Після успішного виконання запиту, сервер відправляє клієнту відповідь, в якій вказується статус виконання операції.  Рис. 2.5. Діаграма діяльності. Купівля квитка Купівля квитка передбачає вибір сеансу. Вибравши сеанс, користувач має змогу обрати вільні місця в залі і забронювати їх. Вибрані місця відсилаються на сервер. Сервер опрацьовує вхідні дані. Перевіривши стан рахунку конкретного користувача, зберігає дані в БД. При цьому, з особистого рахунку знімається необхідна кількість грошей. Після успішного виконання запиту, сервер відправляє клієнту відповідь, в якій вказується статус виконання операції.  Рис. 2.6. Діаграма діяльності. Вибір місця В даному випадку на сервер відправляється запит з проханням отримати список вільних місць до конкретного сеансу. Сервер аналізує запит і витягує з БД необхідні поля. Отримані дані відправляються до клієнта. Клієнт відображає отримані дані і дає змогу користувачу вибрати вільні місця. Діаграма взаємодії Діаграма взаємодії показує потік повідомлень між об'єктами системи і основні асоціації між ними і по суті, як вже було сказано вище, є альтернативою діаграми послідовностей. Слід зазначити, що використання діаграми послідовностей або діаграми взаємодії - особистий вибір кожного проектувальника і залежить від індивідуального стилю проектування. З метою зображення часових особливостей передачі і прийому повідомлень об’єктами будемо використовувати окремий вид діаграми взаємодії – діаграму послідовностей. Діагарама послідовності бронювання квитка зображена на Рис. 2.7.  Рис. 2.7. Діаграма послідовностей. Бронювання квитків  Рис. 2.8. Діаграма послідовностей. Купівля квитків Результати роботи Перед початком роботи, запускаємо сервер. Сервер буде безпосередньо з’єднуватися з базою даних (БД). Запускаємо сервер: / Рис. 3.1. Сервер в стані очікування Клієнтська програма з'єднується з сервером, передає дані по протоколу TCP. Запустивши програму, вона надсилає запит на сервер. Сервер, в свою чергу, зв’язується з БД і витягує потрібну інформацію. Головне вікно програми має вигляд: / Рис. 3.2. Головне вікно програми Щоб перейти на наступне вікно, потрібно вибрати один з запропонованих фільмів: / Рис. 3.3. Вибір фільму / Рис. 3.4. Інформаційне вікно Користувач має змогу вибрати зручний для себе сеанс: / Рис. 3.5. Вибір сеансу В новому вікні відображається фізичне розташування сидінь в кінозалі. Місця, які уже є зарезервовані є неактивними. / Рис. 3.6. Вікно бронювання Щоб забронювати бажане місце достатньо активізувати його кліком миші. Обраний квадрат міняє свій колір на жовтий. Обравши потрібну кількість квитків, клієнт має змогу забронювати, або ж купити квиток. При купівлі з особистого рахунку користувача знімається сума у розмірі вартості обраних квитків. Броньовані квитки знімаються з резервування за 30 хв до початку сеансу. Про успішне бронювання свідчить повідомлення: / Рис. 3.7. Підтвердження бронювання Висновок В даній курсовій роботі розроблено GUI оболонку для реалізації системи бронювання та купівлі квитків в кінотеатр, консольну аплікацію, що підтримує зв'язок TCP, отримує дані та записує у БД, вичитує з БД необхідну інформацію та передає по TCP протоколу. Створено клас комунікації для клієнтської частини. Добавлено функціонал зчитування даних що ввів користувач, виконана передача по протоколу TCP та запис їх у БД. Додано функціонал у клієнтську та серверну частини. Занесено у БД усю необхідну інформацію для роботи і демонстрації системи. Список використаної літератури Тейлор А.Дж. SQL для «чайників» / А.Дж. Тейлор .- Москва: Вільямс, 2005. Дейт К.Дж. Введення в системи баз даних / К.Дж. Дейт - Москва: ДМК, 2000. Хомоненко О.Д. Бази даних / О.Д. Хомоненко, В.М. Циганков - Санкт-Петербург: БХВ-Петербург, 2004. Вескес Л.Дж. Access і SQL Server. Керівництво розробника / Дж.Л. Вескес - Москва: Лорі, 1997. Коннолі Т. Бази даних. Проектування, реалізація і супровід / Т. Коннолі, К. Бегг. - Київ: Вільямс, 2003. Додатки MainWindow.cs using System; using System.Net; using System.Net.Sockets; using System.IO; using Vkino_Online.TCPClient; using Vkino_Online.Windows; namespace Vkino_Online { public partial class MainWindow : Window { AsynchronousClient client = null; private static int count; private int num; private string id; public int key; public string pp; public string ll; public string mymoney; public static string[] userplaces; public bool read_picture = true; public string[] newplaces; byte[] file_data; public byte[] res_data = null; byte[] send_data = null; public bool wait_for_respons = false; string file_name_send; public string file_name; public string select_film_name; byte[] file_data_send = null; bool server_connected = false; bool flag = false; public bool sFlag; public bool moneyFlag; int count_for_response = 0; string file_read_path; public SQLOptions option_selected; public String responseData = String.Empty; public System.Windows.Threading.DispatcherTimer connect = new System.Windows.Threading.DispatcherTimer(); public enum SQLOptions { Test, Film_name, Film_info, Film_showing, Film_time, Film_place, LogCheck, Select_Id, Users_Money, Update_Money, RegLogCheck, Registration, AddPlaces, SendFileName, SendFile, ReadFile, ReadVideo, }; public MainWindow() { InitializeComponent(); client = new AsynchronousClient(); option_selected = MainWindow.SQLOptions.Film_name; connect.Interval = new TimeSpan(0, 0, 0, 0, 1000); // через кожні 10с має опитувати сервер. опитує чи є з'єднання connect.Tick += connect_Tick; connect.Start(); } public class ThreadWithState { // State information used in the task. private byte[] send_data; private byte[] received_data; AsynchronousClient client_temp; // Delegate used to execute the callback method when the // task is complete. private Callback callback; // The constructor obtains the state information and the // callback delegate. public ThreadWithState(byte[] data, AsynchronousClient client, Callback callbackDelegate) { send_data = data; client_temp = client; callback = callbackDelegate; } // The thread procedure performs the task, such as // formatting and printing a document, and then invokes // the callback delegate with the number of lines printed. public void ThreadProc() { received_data = client_temp.StartClient(send_data); if (callback != null) { callback(received_data); } } } public delegate void Callback(byte[] recieved); public void ResultCallBack(byte[] result_data) { res_data = result_data; wait_for_respons = false; file_data = result_data; } public void connect_Tick(object sender, EventArgs e) { SendRecievedData(); } private void Button_Click(object sender, RoutedEventArgs e) { var ofd = new Microsoft.Win32.OpenFileDialog(); ofd.Multiselect = false; bool? userClickedOK = ofd.ShowDialog(); if (userClickedOK == true) { SendTCP(ofd.FileName); option_selected = SQLOptions.SendFileName; client = new AsynchronousClient(); connect.Start(); SendRecievedData(); SendRecievedData(); } } public void SendRecievedData() { if (wait_for_respons == false || server_connected == false) { if (res_data == null) { StringBuilder builder = new StringBuilder(); switch (option_selected) { case SQLOptions.Film_name: builder.Append("Film_name").Append(" ").Append("All").Append(" ").Append("<EOF>"); send_data = Encoding.Unicode.GetBytes(builder.ToString()); break; case SQLOptions.LogCheck: builder.Append("LogCheck").Append(" ").Append(userlog).Append(" ").Append("<EOF>"); send_data = Encoding.Unicode.GetBytes(builder.ToString()); break; case SQLOptions.Users_Money: builder.Append("Users_Money").Append(" ").Append(Login).Append(" ").Append("<EOF>"); send_data = Encoding.Unicode.GetBytes(builder.ToString()); break; case SQLOptions.Update_Money: builder.Append("Update_Money").Append(" ").Append(Login).Append(" ").Append(mymoney).Append(" ").Append("<EOF>"); send_data = Encoding.Unicode.GetBytes(builder.ToString()); break; case SQLOptions.Select_Id: builder.Append("Select_Id").Append(" ").Append(Login).Append(" ").Append("<EOF>"); send_data = Encoding.Unicode.GetBytes(builder.ToString()); break; case SQLOptions.RegLogCheck: builder.Append("RegLogCheck").Append(" ").Append(userlog).Append(" ").Append("<EOF>"); send_data = Encoding.Unicode.GetBytes(builder.ToString()); break; case SQLOptions.Film_info: builder.Append("Film_info").Append(" ").Append(select_film_name).Append(" ").Append("<EOF>"); send_data = Encoding.Unicode.GetBytes(builder.ToString()); break; case SQLOptions.Registration: builder.Append("Registration").Append(" ").Append(UserName).Append(" ").Append(UserSName).Append(" ").Append(telephone).Append(" ").Append(mail).Append(" ").Append(UserLogin).Append(" ").Append(UserPass).Append(" ").Append("<EOF>"); send_data = Encoding.Unicode.GetBytes(builder.ToString()); break; case SQLOptions.Film_showing: builder.Append("Film_showing").Append(" ").Append(select_film_name).Append(" ").Append("<EOF>"); send_data = Encoding.Unicode.GetBytes(builder.ToString()); break; case SQLOptions.Film_time: builder.Append("Film_time").Append(" ").Append(select_film_name).Append("*").Append(selected_date).Append("*").Append("<EOF>"); send_data = Encoding.Unicode.GetBytes(builder.ToString()); break; case SQLOptions.Film_place: builder.Append("Film_place").Append(" ").Append(select_film_name).Append("*").Append(selected_date).Append("*").Append(selected_time).Append("*").Append("<EOF>"); send_data = Encoding.Unicode.GetBytes(builder.ToString()); break; case SQLOptions.AddPlaces: builder.Append("AddPlaces").Append(" ").Append(myPlacess).Append(" <EOF>"); send_data = Encoding.Unicode.GetBytes(builder.ToString()); break; case SQLOptions.Test: builder.Append("Test").Append(" ").Append("Vidpravleno").Append(" ").Append("<EOF>"); send_data = Encoding.Unicode.GetBytes(builder.ToString()); break; case SQLOptions.SendFileName: builder.Append("StoreFile").Append(" ").Append(file_name_send).Append(" ").Append("<EOF>"); send_data = Encoding.Unicode.GetBytes(builder.ToString()); break; case SQLOptions.SendFile: send_data = file_data_send; break; case SQLOptions.ReadFile: builder.Append("ReadFile").Append(" ").Append(film_name).Append(" ").Append("<EOF>"); send_data = Encoding.Unicode.GetBytes(builder.ToString()); break; case SQLOptions.ReadVideo: flag = true; builder.Append("ReadVideo").Append(" ").Append(select_film_name).Append(" ").Append("<EOF>"); send_data = Encoding.Unicode.GetBytes(builder.ToString()); break; default: break; } ThreadWithState tws = new ThreadWithState(send_data, client, new Callback(ResultCallBack)); Thread request = new Thread(new ThreadStart(tws.ThreadProc)); request.Start(); responseData = String.Empty; wait_for_respons = true; } else { if (option_selected != SQLOptions.ReadFile && option_selected != SQLOptions.ReadVideo) { responseData = Encoding.Unicode.GetString(res_data); } else { SaveRecievedFile(file_name); responseData = "+"; //будь-які дані аби responseData != empty } } } else { count_for_response++; } if (responseData != String.Empty && count_for_response < 300) { switch (option_selected) { case SQLOptions.Test: connect.Stop(); break; case SQLOptions.Film_name: connect.Stop(); FilmsTitlesAdd(); break; case SQLOptions.Users_Money: connect.Stop(); if (moneyFlag == true) { ((Vkino_Online.Online)(Application.Current.Windows[2])).user_money(responseData, id); } else { showmoney(); } break; case SQLOptions.Update_Money: connect.Stop(); ((Vkino_Online.Online)(Application.Current.Windows[2])).myTickets(); break; case SQLOptions.Registration: MessageBox.Show("Реєстрація пройшла успішно!"); ((Vkino_Online.Registration)(Application.Current.Windows[3])).RegFinish(); connect.Stop(); break; case SQLOptions.Film_place: connect.Stop(); FilmsPlaces(); break; case SQLOptions.Select_Id: connect.Stop(); id_selected(); break; case SQLOptions.Film_info: connect.Stop(); FilmsInfoAdd(); break; case SQLOptions.LogCheck: connect.Stop(); LoginChecking(); break; case SQLOptions.RegLogCheck: connect.Stop(); break; case SQLOptions.Film_showing: connect.Stop(); FilmsShowingAdd(); break; case SQLOptions.Film_time: connect.Stop(); FilmTime(); break; case SQLOptions.SendFileName: option_selected = SQLOptions.SendFile; break; case SQLOptions.SendFile: MessageBox.Show("Файл успішно записано в Базі Даних"); connect.Stop(); break; case SQLOptions.ReadFile: connect.Stop(); FilmsPictAdd(); break; case SQLOptions.ReadVideo: connect.Stop(); MediaPlay(); break; case SQLOptions.AddPlaces: connect.Stop(); if (sFlag == true) { MessageBox.Show("Дякуємо за покупку"); } else { MessageBox.Show("Ваші місця заброньовані. Бронь буде знята за 30хв. до початку сеансу. Ваш унікальний код: " + key.ToString() + ". Запам'ятайте цей код!. "); } break; default: break; } res_data = null; count_for_response = 0; if (server_connected == false) { server_connected = true; status_bar.Text = "З'єднано із сервером"; status_bar.Foreground = Brushes.Green; } } else { if (wait_for_respons == true && server_connected == true) { if (count_for_response < 300) { return; } else { wait_for_respons = false; } } server_connected = false; status_bar.Text = "Відсутнє з'єднання із сервером"; status_bar.Foreground = Brushes.Red; count_for_response = 0; } } public void SendTCP(string file_data) { try { FileStream Fs = new FileStream(file_data, FileMode.Open, FileAccess.Read); string[] file_name = Fs.Name.Split('\\'); file_name_send = file_name[file_name.Length - 1]; byte[] fileData = File.ReadAllBytes(file_data); file_data_send = new byte[fileData.Length]; fileData.CopyTo(file
Антиботан аватар за замовчуванням

04.05.2016 15:05-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!