Ім'я файлу: Курсовая.docx
Розширення: docx
Розмір: 946кб.
Дата: 25.05.2022
скачати

ЗМІСТ:




ВСТУП


На сьогоднішній день інформаційні системи займають вагоме місце в житті людей. Найперші з них були створені ще в 50-х роках минулого століття і здійснювали в основному арифметичні розрахунки, незначно скорочуючи витрати виробництва і витрати часу. Розвиток інформаційних систем не стояв на місці, просуваючись в ногу з часом і діловими потребами людини. До банальних можливостей розрахунку зарплат додалися можливості аналізувати інформацію, спрощуючи процес прийняття рішень для управлінського персоналу. Також, з кожним роком ступінь автоматизації систем збільшувалася, дозволяючи все сильніше нарощувати виробничі показники підприємств, що їх використовують.

В сучасних умовах, людина змушена працювати з гігантськими обсягами інформації. У зв'язку з цим розробка програмних продуктів, призначених для автоматизованого обліку, вельми актуальна. Системи зобов'язані являти собою потужні засоби, здатні обробляти гігантські потоки даних високої структурної складності за мінімум витраченого часу, забезпечуючи дружній діалог з користувачем.

Метою курсової роботи є створення автоматизованої інформаційної системи, що здійснює бронювання залізничних квитків.

Розробка подібної системи вельми актуальна на даний момент. В сучасному світі потяги є досить швидким та економічним видом транспорту крім того потяги – безпечні, у зв’язку з цим подорож поїздом користується вельми високою популярністю. Внаслідок цього квитки на рейси затребувані і з високою ймовірністю знайдуть свого покупця, за умови, що залізниця забезпечила клієнтові повноцінний доступ до потрібної йому інформації. Це і є завдання, яке вирішується сучасними автоматизованими інформаційними системами. Існує безліч подібних розробок, які дозволяють реалізовувати квитки на потяги, а користувачам - купувати їх. Однак, найчастіше, функціональність таких систем або вельми обмежена, або надає достатню кількість інформації, жертвуючи дружністю до користувача.

Для реалізації поставленого завдання було обрано такі засоби розробки: MS Visual Studio 2019 року, і мову програмування C#.

РОЗДІЛ I. Аналіз проблеми і постановка завдання роботи

    1. Аналіз професійної області проблеми


Метою даної курсової роботи є створення програмного засобу для бронювання залізничних квитків.

Залізниця займається перевезенням пасажирів. Крім того вона встановлює маршрути потягів. Рейси здійснюються за встановленими маршрутами відповідно до розкладу. На кожен рейс існує певна кількість квитків. Бронювання квитка користувачем здійснюється при відправці запиту та за умови, що даний квиток до сих пір є в наявності. Придбавши квиток, користувач надає інформацію про себе і стає пасажиром. Повнолітні пасажири зобов'язані мати занесені в базу даних (БД) паспортні дані. Неповнолітні повинні мати занесені в БД дані зі свідоцтва про народження. Адміністратори системи можуть обмежувати або розширювати доступ користувачів і співробітників до наданої інформації. Система створюється для обслуговування таких груп користувачів:

  • Користувачі, які бронюють квитки на потяг і здійснюють їх пошук;

  • Касири, якi пiдтверджують бронювання квиткiв, а пiсля виконують продаж залiзничних квиткiв, котрi були заздалегiть заброньованними.

  • Адміністратори, які здійснюють контроль за користувачами і функціональністю системи;
    1. Аналіз існуючих аналогів


На даний момент існує величезна кількість інформаційних систем, що займаються продажами та бронюванням залізничних квитків. Вони можуть являти собою як окремі програми, так і онлайн сервіси, надаючи користувачу доступ до веб-служб постачальників. Були розглянуті наступні засоби, в даний час існуючі на ринку:

Інформаційна система

Розробник

Системні вимоги

Адреса у Інтернеті

uz.gov.ua

Укрзалізниця

Вимагає підключення до мережі Інтернет

https://booking.uz.gov.ua

Железнодорожные билеты



Укрзалізниця

Необхідна версія Android 4.1 і вище, iOS 11.0 або новіше.

https://play.google.com/store/apps/details?id=com.uz.bookinguz&hl=ru&gl=US

tickets.ua

tickets

Вимагає підключення до мережі Інтернет

https://gd.tickets.ua/?refid=700&gclid=Cj0KCQjw4cOEBhDMARIsAA3XDRikdQINeusgkBt8dHLVIElhXyO7Y0BjqCP3HftdqaMggN8-1E-wTiUaAp6VEALw_wcB

Таб. 1 – Порівнянні програмні засоби

u z.gov.ua - локальна але популярна в Україні система продажу залізничних квитків. Є провідним постачальником квитків в Україні.

Річний обсяг замовлень перевищує 19.5млн

Акціонерне товариство «Українська залізниця» – національний перевізник вантажів та пасажирів. Метою діяльності товариства є задоволення потреб у безпечних та якісних залізничних перевезеннях, забезпечення ефективного функціонування та розвитку залізничного транспорту.

Железнодорожные билетыпрограмма для мобільних пристроїв від акціонерного товариства «Українська залізниця». Також локальне українське програмне забезпечення, користується меншою популярністю ніж офіційний сайт «Укрзалізниці».

tickets.ua - частина холдингу TTN, одного з провідних туристичних онлайн-агентств Європи. Холдинг має одне з найбільших портфоліо послуг серед онлайн тревел-агентств. До переліку сервісів, що надає TTN, належать: авіаквитки, готелі, залізничні та автобусні квитки, страхування, оренда авто, сіті брейки, квитки на різні події тощо.

Назва системи

Переваги

Недоліки

uz.gov.ua

Висока стабільність, незалежна від обсягу даних, простий для користувача інтерфейс. Можна використовувати будь-коли, при підключенні до мережі Інтернет.

Використання можливе лише на території України.

Железнодорожные билеты

Простий і зрозумілий інтерфейс, безкоштовне використання.

Існує лише мобільна версія программи.

tickets.ua

Великий функціонал, можна використовувати у багатьох країнах світу.

Не зручний інтерфейс.

Таб. 2 Результати порівняння програмних засобів

За результатами проведеного аналізу можна сказати, що на даний момент існує безліч потужних інформаційних систем бронювання та продажі залізничних квитків, що володіють великими функціональними засобами.

Однак всі вони є недоступними при відсутності підключення до мережі Інтернет.

1.3 Вхідна інформація


Абсолютно кожна компанія по продажу та бронюванні залізничних квитків використовує певну систему дистрибуції. Найбільш розвинені використовують GDS (глобальні дистриб'юторські системи, які формуються з основних міжнародних комп'ютерних систем резервування). В результаті сервіси продажів квитків при пошуку інформації користуються ресурсами глобальних дистриб'юторських систем. Однак доступ до GDS не є безкоштовним, тому в ролі дистрибутивної системи для продукту, що розробляється буде виступати БД, створена в MS SQL Server 2012.

У БД повинна зберігатися інформація:

 Про маршрути;

 Про користувачів;

 Про квитки;

 Про співробітників;

 Про пасажирів.

Запланована інформаційна система призначена для бронювання залізничних квитків і спрощення доступу до потрібної інформації. Наявність даної розробки покращує організаційну роботу перевізника за рахунок відсутності паперової документації, пошук і систематизація якої займали б дуже багато часу.

1.4 Вихідна інформація


В ході даної курсової роботи повинна бути створена автоматизована інформаційна система бронювання залізничних квитків, виконуюча наступні завдання:

  • Бронювання залізничних квитків на заплановані рейси;

  • Адміністрування інформаційної системи;

  • Створення додатка, що надає користувачам графічний інтерфейс для доступу до системи.

Час відгуку інформаційної системи має бути комфортним для користувача і не перевищувати 3 секунд.

1.5 Характеристика задачі


Програма, що розробляється в цій курсовій роботі, буде використовуватися лише для бронювання квитків на залізничний транспорт. Вона буде представляти собою закінчену систему для бронювання квитків на потяги.

Реалізація задачі буде складатися з однієї частини:

  1. Програмної реалізації бронювання квитка.

Програмна реалізація буде включати в себе класи, методи, бібліотеки, компоненти. Ця частина буде виконувати:

  1. Отримання даних від користувача;

  2. Передавання даних в відповідний клас або метод;

  3. Отримання кінцевих результатів.

Таким чином, для вирішення задачі курсової роботи треба вирішити наступне:

  1. Розробити метод класу для бронювання квитків;

  2. Розробити програмну реалізацію системи;

  3. Виконати аналіз програми на коректність результатів.

РОЗДІЛ II. ТЕОРЕТИЧНИЙ БАЗИС ДЛЯ ВИРІШЕННЯ ЗАВДАНЬ РОБОТИ

2.1. Аналіз функціональних можливостей


Функціональні можливості системи представлені в діаграмі варіантів використання (рисунок 1).



Рисунок. 1 – Діаграма варіантів використання

Діаграма варіантів використання показує відносини між акторами і прецедентами, описуючи систему на концептуальному рівні. В даному випадку існує три актори: користувач системи, зареєстрований користувач і адміністратор, причому для запобігання дублювання інформації було використано відношення узагальнення. Також на діаграмі представлені три прецеденти - адмініструвати інформаційну систему, використовувати інформаційну систему і авторизуватися в системі. Вони відносяться до адміністратора, зареєстрованого користувача і користувачеві системи, відповідно. Далі будуть представлені і описані діаграми декомпозиції прецедентів, представлених на малюнку 1.

На малюнку 2 представлена ​​декомпозиція прецеденту авторизації користувача.



Рисунок. 2 – Декомпозиція варіанту використання «Авторизуватись в системі »

На малюнку 3 представлена ​​декомпозиція прецеденту «Адміністрування інформаційної системи».



Рисунок. 3 – Декомпозиція варіанти використання «Адмініструвати інформаційну систему»

У таблиці 3 описані варіанти використання, представлені на малюнку 2.

Варіанти використання

Опис

Увійти до системи

Вхід користувача в систему

Вийти з системи

Вихід користувача із системи

Зареєструватися в системі

Реєстрація нового користувача в системі

Ввести логін і пароль

Введення логіна і пароля користувачем

Перевірити логін і пароль

Натискаючи «вхід в систему» ​​користувач ініціює перевірку введених даних

Таб. 3 Варіанти використання діаграми «Авторизуватись в системі»

У таблиці 4 описані варіанти використання, представлені на малюнку 3.

Варіанти використання

Опис

Здійснювати супровід системи

Підтримувати працездатність системи

Додавати дані в БД

Додавати нову інформацію в БД системи

Змінювати дані в БД

Змінювати інформацію в БД системи

Видаляти дані з БД

Видаляти інформацію з БД системи

Керувати правами користувачів

Визначати рівень доступу користувача до системи

Обмежити доступ користувача до системи

Обмежити права доступу користувача системи

Розширити доступ користувача до системи

Розширити права доступу користувача системи

Видалити користувача

Видалити користувача і його дані з системи

Таб. 4 Варіанти використання діаграми «Адмініструвати інформаційну систему»

2.2. Вибір засобів розробки


Для розробки інформаційної системи були обрані мову програмування С#, MS Visual Studio 2019 року.

Мова C # є об'єктно-орієнтованою мовою програмування. Розроблено в 1998-2001 роках групою інженерів під керівництвом Андерса Хейлсберг в компанії Microsoft як основна мова розробки додатків для платформи Microsoft .NET і згодом був стандартизований як ECMA-334і ISO / IEC 23270. Компілятор з C # входить в стандартну установку самої .NET, тому програми на ньому можна створювати і компілювати навіть без інструментальних засобів, на кшталт Visual Studio.

C# відноситься до сім'ї мов з C-подібним синтаксисом, з них його синтаксис найбільш близький до C++ і Java. Мова має статичну типізацію, підтримує поліморфізм, перевантаження операторів (в тому числі операторів явного і неявного приведення типу), делегати, атрибути, події, властивості, узагальнені типи і методи, ітератори, анонімні функції з підтримкою замикань, LINQ, виключення, коментарі у форматі XML.

Перейнявши багато від своїх попередників - мов C++, Java, Delphi, Модула і Smalltalk - С#, спираючись на практику їх використання, виключає деякі моделі, що зарекомендували себе як проблематичні при розробці програмних систем: так, C# не підтримує множинне успадкування класів (на відміну від C ++)

Назва «Сі Шарп» походить від буквеної музичної нотації, де латинської букви C відповідає нота До, а знак дієз (англ. Sharp) означає підвищення відповідного ноті звуку на півтон, що аналогічно назвою мови C ++, де «++» позначає інкремент змінної. Назва також є грою з ланцюжком C → C ++ → C ++++ (C #), так як символ «#» можна уявити що складається з 4-х знаків «+».Через технічні обмежень на відображення (стандартні шрифти, браузери і т. Д.), А також через те, що знак дієз ♯ не представлені на стандартній клавіатурі комп'ютера, під час запису імені мови програмування використовують знак решітки (#). Ця угода відображено в Специфікації мови C # ECMA-334. Проте, на практиці, «Майкрософт» використовує знак діеза. Назви мов програмування не прийнято переводити, тому мову називають, використовуючи транскрипцію, - «Сі Шарп».

Середовище розробки Microsoft Visual Studio 2019 - це набір інструментів і засобів, призначених для допомоги розробникам програм будь-якого рівня кваліфікації у вирішенні складних завдань і створення новаторських рішень. Роль Visual Studio полягає в тому, щоб поліпшити процес розробки і спростити розробку високоефективних програм. У Visual Studio містяться інструменти для всіх етапів розробки програмного забезпечення (розробка, тестування, розгортання, інтеграція і управління). Visual Studio розробляється таким чином, щоб забезпечити високу надійність і сумісність. Visual Studio володіє вдалим поєднанням безпеки, масштабованості і взаємодії.

2.3. Архітектура інформаційної системи бронювання залізничних квитків


Архітектурою інформаційної системи називається концепція, що визначає структуру і взаємозв'язок компонентів в даній системі. Компоненти інформаційної системи по виконуваних функцій можна розділити на три шари: шар уявлення, шар бізнес-логіки й шар доступу до даних. Розробляється інформаційній системі бронювання залізничних квитків відповідає клієнт-серверна архітектура (рисунок 4).



Рисунок. 4 – Архітектура клієнт-сервер

СУБД - комплекс програм, що дозволяють створити базу даних (БД) і маніпулювати даними (вставляти, оновлювати, видаляти і вибирати). Система забезпечує безпеку, надійність зберігання і цілісність даних, а також надає кошти для адміністрування БД

Такий підхід забезпечує багатокористувацький режим доступу до інформації, а також гарантує цілісність даних. Користувач використовує спроектований графічний інтерфейс клієнтської частини системи, якав свою чергу відправляє запити серверного ПЗ. Також особливістю такої архітектури є поділ функціональних можливостей додатка між клієнтом і сервером

2.4. Розробка UML – діаграм класів програмного комплексу


Для наглядного розуміння структури класів системи розробимо їх UML – діаграми. Діаграма класів − структурна діаграма мови моделювання UML, що демонструє загальну структуру ієрархії класів системи, їх кооперацій, атрибутів (полів), методів, інтерфейсів і взаємозв'язків між ними.



Рисунок. 5 – UML – дiаграма

Клас interface - інтерфейс, в якому прописаний метод display (), який і показує користувачеві всю інформацію, за якою останній звернувся до додатка. За допомогою цього класу виводиться вся інформація з інших класів, а саме: Menu (), More_Details (), і User (). Тому від нього до даних класів проведена зв'язок залежності.

Клас Menu - клас, який відповідає за «пошук» Search. Методи get ... і set ... розраховані на заповнення приватних полів. Зв'язок з класом Logs () потрібен для відображення помилок.

Клас More_Details відповідає за документацію програми та допомогу користувачам з виниклими труднощами в процесі використання. Має поля faq і info (Найпоширеніші запитання та інформація-путівник відповідно).

Клас User - клас, який відповідає за функціонал користувача програми. Включає такі поля: id, phone_number, name (айдi, номер телефону, і ПІБ відповідно, пароль користувачам не потрібен, тому що вони не проходять реєстрацію). Зв'язок з класом Logs () потрібен для звіту про помилки, а з Booking () - для бронювання залiзничних квиткiв.

Клас Booking - клас, який описує «бронювання квиткiв». Методи, які реалізує даний клас, спрямовані на заповнення приватних полів (методи get ... і set ...). Клас пов'язаний з користувачем, який бронює квитки і з журналом помилок, для відображення інформації про виниклі помилки.

Клас Logs відповідає за реєстрацію помилок під час використання програми. Він пов'язаний з класами користувача, меню і бронювання, адже для оформлення звіту про ситуацію необхідні дані і айдi всіх цих класів (у Menu () немає id, мається на увазі, що у цього класу статистичний айдi).

2.5. Розробка блок-схем алгоритмів програмного комплексу


Одним з фундаментальних понять в інформатиці є поняття алгоритму. Алгоритмом називають точне приписання, що визначає послідовність дій та забезпечує одержання необхідного результату з вихідних даних. Розроблюєма система в цій курсовій, містить в собі алгоритми бронювання залiзничних квиткiв.

Блок-схема бронювання залiзничних квиткiв не є складною и уявляє собою простий лінійний алгоритм.



Рисунок. 6 – блок-схема проекту

РОЗДІЛ III. РОЗРОБКА ПРОГРАМНИХ МОДУЛІВ ПРОЕКТУ

    1. Структура програми


Основними класами програми є наступнi класи: «головний iнтерфейс», «сервiс повiдомлень», «программа».

Клас «головний iнтерфейс» містить в собі конструктор класу, який створює об’єкт, який містить в собі головне меню програми: (Перегляд квиткiв, перегляд потягiв, бронювання квиткiв, кнопки взаємодії).

Також цей клас містить в собі такі приватнi та публiчнi методи:

private readonly IForm view;

private readonly IManeger manager;

private readonly IMessageService message;

public MainPresenter(IForm _view, IManeger manager,IMessageService _message){

message = _message;

view = _view;

this.manager = manager;

view.SetCounterTrains(0);
view.SaveButClick += view_SaveButClick;

view.LoadButtonClick += view_LoadButtonClick;

view.OrderATicket += view_OrderATicket;

view.OrderTwoATicket += view_OrderTwoATicket;}

Клас «сервiс повiдомлень» містить в собі методи, які показують повiдомлення, у тому числі показ помилок і попереджень.

public void ShowMessage(string message)

{

MessageBox.Show(message, "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information);

}
public void ShowExclamation(string exclamation)

{

MessageBox.Show(exclamation, "Предуприждение", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

}
public void ShowError(string error)

{

MessageBox.Show(error, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

Класс «программа» безпосередньо запускає наш додаток.

static void Main()

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

MessageService mss = new MessageService();

MainForm form=new MainForm();

Manager m=new Manager();

MainPresenter pres = new MainPresenter(form, m,mss);

Application.Run(form);

}

3.2. Графічний інтерфейс програми


Програма розроблена в даній курсовій роботі має графічний інтерфейс користувача. Він був створений задля спрощення процесу введення даних та відображення результату. Інтерфейс розроблений на базі бібліотек Windows Forms.

Windows Forms − це технологія інтелектуальних клієнтів для .NET Framework. Вона являє собою набір керованих бібліотек, що спрощують виконання стандартних завдань, таких як читання з файлової системи і запис в неї. За допомогою середовища розробки типу Visual Studio можна створювати інтелектуальні клієнтські програми Windows Forms, які відображають інформацію, запитують введення від користувачів і обмінюються даними з віддаленими комп'ютерами по мережі.

З одного боку, Windows Forms розглядається як заміна більш старої і складної бібліотеці MFC, спочатку написаної на мові C ++. З іншого боку, WF не пропонує парадигми, яку можна порівняти з MVC. Для виправлення цієї ситуації і реалізації даної функціональності в WF існують сторонні бібліотеки. Однією з найбільш використовуваних подібних бібліотек є User Interface Process Application Block, випущена спеціальною групою Microsoft, що займається прикладами і рекомендаціями, для безкоштовного скачування. Ця бібліотека також містить вихідний код і навчальні приклади для прискорення навчання.

У середині .NET Framework Windows Forms реалізується в рамках простору імен System.Windows.Forms.



Рисунок. 7 – Cкрiншот розробленого iнтерфейсу



Рисунок. 8 – Cкрiншот розробленого iнтерфейсу з даними

3.3. Розробка інструкції з експлуатації


Запустити файл Bal_calc.exe. (рисунок 9)



Рисунок. 8 - запуск програми

Дочекатися загрузки інтерфейсу головного вікна програми.

У головному вікні програми, користувач може обрати касира. (рисунок 3.3)



Рисунок. 9 вибiр касира

Кнопка "order" (замовити) запускає процес обчислення. Результат відображається в спеціальному полі. (рисунок 10)



Рисунок. 10 замовлення

ВИСНОВКИ


У результаті роботи над курсовим проектом було створено програмне забезпечення для бронювання квиткiв на залiзничнi потяги. На початку роботи було сформульовано основні задачі та цілі роботи. Був намічений план вирішення поставленої задачі. В процесі розробки було обрано методи вирішення поставленої задачі: методи теорії алгоритмів та методи об’єктно-орієнтованого програмування, а саме наслідування. Програму було реалізовано мовою C#.

Програма має графічний інтерфейс, що дозволяє користувачеві бронювати квиток самостійно.

На основі проведеної роботи можна з успіхом розвивати та вдосконалювати розроблену програмну систему та надавати їй нової функціональності.

Програма повністю відповідає поставленій задачі та цілям описаним в курсовій роботі. Дозволяє значно скоротити час пошуку рішення у важких математичних задачах наукової сфери. Завдяки простому функціоналу, дозволяє звичайним користувачам швидко отримувати результати обчислень параметрів моделі, та робити відповідний подальший аналіз.

СПИСОК ЛІТЕРАТУРИ


  1. Архангельский, А. Я. C++ Builder 6: cправочное пособие. Книга 2. Классы и компоненты. – М.: Бином-Пресс, 2004г. – 528с.

  2. Бхаргава А. Грокаем алгоритмы: ПИТЕР, 2017 – 49с.

  3. Виды тестирования программного обеспечения [Электронный ресурс] – Режим доступа: http://www.protesting.ru/testing/testtypes.html.

  4. Кренке, Д. Теория и практика построения баз данных. – 9-е изд. Изд.: ПИТЕР, 2005. – 859с.

  5. Карпова, Т.С. Базы данных: модели, разработка. – СПб.: Питер, 2001. – 1304 с.

  6. Либерти, Дж. Создание .NET приложений Программирование на C#. – СПб.: Орейли, 2006.

  7. Михелёв, В.М. Базы данных и СУБД – Белгород: Издательство БелГУ, 2007. – 200 с.

  8. Троелсен Э. C# и платформа .NET. Библиотека программиста. – СПб.: Питер, 2007.

  9. Фуфаев, Э.В. / Фуфаев Д.Э. Разработка и эксплуатация удаленных баз данных – М.: Издательский центр «Академия», 2008. – 256с.

  10. https://scienceforum.ru

  11. https://elib.pnzgu.ru

  12. https://ru.wikipedia.org/wiki/C_Sharp


ДОДАТОК А

А.1 ПОВНИЙ ТЕКСТ ПРОГРАМНИХ МОДУЛІВ


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using Kassa.Bl;
namespace Kassa

{

internal class MainPresenter

{

private readonly IForm view;

private readonly IManeger manager;

private readonly IMessageService message;

public MainPresenter(IForm _view, IManeger manager,IMessageService _message)

{

message = _message;

view = _view;

this.manager = manager;

view.SetCounterTrains(0);
view.SaveButClick += view_SaveButClick;

view.LoadButtonClick += view_LoadButtonClick;

view.OrderATicket += view_OrderATicket;

view.OrderTwoATicket += view_OrderTwoATicket;

}
void view_OrderTwoATicket(object sender, EventArgs e)

{

try

{

int n = view.OrderTwo;

List lst = view.GetDataFromDataGridView();

int index=-1;

for (int i = 0; i < lst.Count; i++)

{

if (lst[i].NomerPoezda == n)

{

index = lst.IndexOf(lst[i]);

int count = lst[index].KolichestvoMest;

if(count==0)

throw new Exception("Места закончились!");

lst[index] = new Train(lst[index].NomerPoezda, lst[index].DataOtpravleniya, count - 1, lst[index].Name);

}

}

if(index==-1)

throw new Exception("Поезд не найден!");

view.ClearGridView();

foreach (Train t in lst)

{

view.InsertRows(t.NomerPoezda, t.Name, t.KolichestvoMest, t.DataOtpravleniya);

}

view.SetCounterTrains(lst.Count);

}

catch (Exception ee)

{

message.ShowError(ee.Message);

}

}
void view_OrderATicket(object sender, EventArgs e)

{

try

{

int n = view.OrderOne;
List lst = view.GetDataFromDataGridView();
int index = -1;

for (int i = 0; i < lst.Count; i++)

{

if (lst[i].NomerPoezda == n)

{

index = lst.IndexOf(lst[i]);

int count = lst[index].KolichestvoMest;

if (count == 0)

throw new Exception("Места закончились!");

lst[index] = new Train(lst[index].NomerPoezda, lst[index].DataOtpravleniya, count - 1, lst[index].Name);

}

}

if (index == -1)

throw new Exception("Поезд не найден!");

view.ClearGridView();

foreach (Train t in lst)

{

view.InsertRows(t.NomerPoezda, t.Name, t.KolichestvoMest, t.DataOtpravleniya);

}

view.SetCounterTrains(lst.Count);

}

catch (Exception ee)

{

message.ShowError(ee.Message);

}

}
void view_LoadButtonClick(object sender, EventArgs e)

{

try

{

string fname = view.FilePath;

view.ClearGridView();

var lst = manager.DeSerializeFile(fname);

foreach (Train t in lst)

{

view.InsertRows(t.NomerPoezda, t.Name, t.KolichestvoMest, t.DataOtpravleniya);

}

view.SetCounterTrains(lst.Count);

message.ShowMessage("Данные успешно загружены!");

}

catch (Exception ee)

{

message.ShowError(ee.Message);

}


}
private void view_SaveButClick(object sender, EventArgs e)

{

try

{

SaveFileDialog save = new SaveFileDialog()

{

Title = "Выберите файл",

InitialDirectory = Environment.CurrentDirectory,

RestoreDirectory = true,

Filter = @"Файлы данных .dat|*.dat|All Files|*.*",

FilterIndex = 0

};

if (save.ShowDialog() == DialogResult.OK)

{

manager.SerializeToFile(view.GetDataFromDataGridView(), save.FileName);

}

message.ShowMessage("Данные успешно сохранились!");

}

catch (Exception ee)

{

message.ShowError(ee.Message);

}

}

}

}

Message:

using System;
using System.Windows.Forms;
namespace Kassa

{

public interface IMessageService

{

void ShowMessage(string message);

void ShowExclamation(string exclamation);

void ShowError(string error);

}

public class MessageService : IMessageService

{

public void ShowMessage(string message)

{

MessageBox.Show(message, "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information);

}
public void ShowExclamation(string exclamation)

{

MessageBox.Show(exclamation, "Предуприждение", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

}
public void ShowError(string error)

{

MessageBox.Show(error, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}

}

Program:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Threading.Tasks;

using System.Windows.Forms;

using Kassa.Bl;

namespace Kassa

{

static class Program

{

///

/// The main entry point for the application.

///


[STAThread]

static void Main()

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

MessageService mss = new MessageService();

MainForm form=new MainForm();

Manager m=new Manager();

MainPresenter pres = new MainPresenter(form, m,mss);

Application.Run(form);

}

}

}

ДОДАТОК Б

Б.1 СКРІНШОТИ ІНТЕРФЕЙСУ




Рисунок Б.1. − Початкова форма



Рисунок Б.2. – Кінцева форма

скачати

© Усі права захищені
написати до нас