Информационная система реализации билетов в кинотеатрах

Используемые средства реализации информационной системы реализации билетов в кинотеатрах. Создание автоматизированного программного комплекса на платформе NET Framework при помощи объектно-ориентированного подхода в среде разработки Visual Studio 2019.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 19.04.2020
Размер файла 1019,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

{

cinema.Add(new Cinema(Convert.ToInt32(item.ItemArray[0]), item.ItemArray[1].ToString(), Convert.ToInt32(item.ItemArray[2]),

Convert.ToInt32(item.ItemArray[3]), Convert.ToInt32(item.ItemArray[4]), item.ItemArray[5].ToString()));

}

foreach (var item in cinema)

{

ticketCinema.Items.Add(item.Name);

}

command = new MySqlCommand("SELECT * FROM tikets.film", db.GetConnection());

table = new DataTable();

adapter.SelectCommand = command;

adapter.Fill(table);

foreach (var item in table.Select())

{

films.Add(new Film(

Convert.ToInt32(item.ItemArray[0]),

item.ItemArray[1].ToString(),

item.ItemArray[2].ToString(),

item.ItemArray[3].ToString(),

Convert.ToInt32(item.ItemArray[4])));

}

foreach (var item in films)

{

ticketFilm.Items.Add(item.Name);

}

}

private void addTicketBtn_Click(object sender, RoutedEventArgs e)

{

int filmId = 0, cinemaId = 0;

foreach (var item in films)

{

if (item.Name.Equals(ticketFilm.SelectedItem))

filmId = item.FilmId;

}

foreach (var item in cinema)

{

if (item.Name.Equals(ticketCinema.SelectedItem))

cinemaId = item.CinemaId;

}

DateTime dateTime = Convert.ToDateTime(ticketDate.Text);

DB db = new DB();

db.openConnection();

MySqlDataAdapter adapter = new MySqlDataAdapter();

MySqlCommand command = new MySqlCommand("INSERT INTO tikets.ticket(time_seans, cinema_id, film_id) VALUES (" +

"@time_seans,@cinema_id,@film_id);"

, db.GetConnection());

adapter.InsertCommand = command;

adapter.InsertCommand.Parameters.Add("@time_seans", MySqlDbType.DateTime, 4).Value = dateTime;

adapter.InsertCommand.Parameters.Add("@cinema_id", MySqlDbType.Int32, 4).Value = cinemaId;

adapter.InsertCommand.Parameters.Add("@film_id", MySqlDbType.Int32, 4).Value = filmId;

adapter.InsertCommand.ExecuteNonQuery();

ticketDate.Text = "";

MessageBox.Show("Билеты успешно добавлены!");

}

private void Button_Click(object sender, RoutedEventArgs e)

{

otchetText.Text = "";

DB db = new DB();

db.openConnection();

MySqlDataAdapter adapter = new MySqlDataAdapter();

MySqlCommand command;

cinema = new List<Cinema>();

films = new List<Film>();

command = new MySqlCommand("Select films.name, count(films.film_id) " +

"From tikets.film as films " +

"INNER JOIN tikets.ticket as tickets ON films.film_id = tickets.film_id " +

"INNER JOIN tikets.sale as sales ON sales.ticket_id = tickets.ticket_id " +

"GROUP BY films.name; ", db.GetConnection());

table = new DataTable();

adapter.SelectCommand = command;

adapter.Fill(table);

int count = 1;

foreach (var item in table.Select())

{

otchetText.Text += "Место номер " + count + ": " + item.ItemArray[0].ToString() + "\n";

count++;

}

}

private void Button_Click_1(object sender, RoutedEventArgs e)

{

otchetText.Text = "";

DB db = new DB();

db.openConnection();

MySqlDataAdapter adapter = new MySqlDataAdapter();

MySqlCommand command;

cinema = new List<Cinema>();

films = new List<Film>();

command = new MySqlCommand("Select films.name, sum(sales.price) " +

"From tikets.film as films " +

"INNER JOIN tikets.ticket as tickets ON films.film_id = tickets.film_id " +

"INNER JOIN tikets.sale as sales ON sales.ticket_id = tickets.ticket_id " +

"GROUP BY films.name; ", db.GetConnection());

table = new DataTable();

adapter.SelectCommand = command;

adapter.Fill(table);

int count = 1;

foreach (var item in table.Select())

{

otchetText.Text += item.ItemArray[0].ToString() + " собрал " + item.ItemArray[1].ToString() + "р. \n";

count++;

}

}

private void Button_Click_2(object sender, RoutedEventArgs e)

{

otchetText.Text = "";

DB db = new DB();

db.openConnection();

MySqlDataAdapter adapter = new MySqlDataAdapter();

MySqlCommand command;

cinema = new List<Cinema>();

films = new List<Film>();

command = new MySqlCommand("Select cinemas.name, count(sales.ticket_id) " +

"From tikets.cinema as cinemas " +

"INNER JOIN tikets.ticket as tickets ON cinemas.cinema_id = tickets.cinema_id " +

"INNER JOIN tikets.sale as sales ON sales.ticket_id = tickets.ticket_id " +

"GROUP BY cinemas.name;", db.GetConnection());

table = new DataTable();

adapter.SelectCommand = command;

adapter.Fill(table);

int count = 1;

foreach (var item in table.Select())

{

otchetText.Text += item.ItemArray[1].ToString() + " зрителей посетили " + item.ItemArray[0].ToString() + " \n";

count++;

}

}

DataTable table = null;

private void exit_Click(object sender, RoutedEventArgs e)

{

MainWindow mainWindow = new MainWindow();

mainWindow.Show();

Close();

}

private void Button_Click_3(object sender, RoutedEventArgs e)

{

if (table == null)

return;

XDocument xdoc = new XDocument();

XElement attributes = new XElement("attributes");

foreach (var item in table.Select())

{

XElement otchet = new XElement("otchet");

XAttribute otchetNameAttr = new XAttribute("name", item.ItemArray[0].ToString());

XElement otchetElement = new XElement("element", item.ItemArray[1].ToString());

otchet.Add(otchetNameAttr);

otchet.Add(otchetElement);

attributes.Add(otchet);

}

xdoc.Add(attributes);

SaveFileDialog saveFileDialog = new SaveFileDialog();

saveFileDialog.Filter = "Xml file (*.xml)|*.xml";

saveFileDialog.InitialDirectory = @"c:\";

if (saveFileDialog.ShowDialog() == true)

xdoc.Save(saveFileDialog.FileName);

}

}

}

Cinema.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace CourseWorkProject_OOP.Models.Entity

{

public class Cinema

{

public int CinemaId;

public string Name { get; set; }

public string Description { get; set; }

public int CountPlaceCategory1;

public int CountPlaceCategory2;

public int CountPlaceCategory3;

public Cinema(int cinema_id, string name, int place_category1, int place_category2, int place_category3, string description)

{

this.CinemaId = cinema_id;

this.Name = name;

this.CountPlaceCategory1 = place_category1;

this.CountPlaceCategory2 = place_category2;

this.CountPlaceCategory3 = place_category3;

this.Description = description;

}

}

}

Film.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace CourseWorkProject_OOP.Models.Entity

{

public class Film

{

public int FilmId;

public string Name { get; set; }

public string Description { get; set; }

public string Cost { get; set; }

public int Length { get; set; }

public Film(int filmId, string name, string description, string cost, int length)

{

FilmId = filmId;

Name = name;

Description = description;

Cost = cost;

Length = length;

}

public Film(string name, string description)

{

Name = name;

Description = description;

}

}

}

Length.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace CourseWorkProject_OOP.Models.Entity

{

class LengthCategory

{

private int lengthFrom;

private int lengthTo;

private double coef;

public LengthCategory(int lengthFrom, int lengthTo, double coef)

{

this.lengthFrom = lengthFrom;

this.lengthTo = lengthTo;

this.coef = coef;

}

public double calcPrice(double price, int length)

{

if (length >= lengthFrom && length <= lengthTo)

{

return price * coef;

}

else

{

return price;

}

}

}

}

PlaceCategory.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace CourseWorkProject_OOP.Models.Entity

{

class PlaceCategory

{

private int placeFrom;

private int placeTo;

private double coef;

public PlaceCategory(int placeFrom, int placeTo, double coef)

{

this.placeFrom = placeFrom;

this.placeTo = placeTo;

this.coef = coef;

}

public double calcPrice(double price, int line)

{

if (line >= placeFrom && line <= placeTo)

{

return price * coef;

}

else

{

return price;

}

}

}

}

Sale.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace CourseWorkProject_OOP.Models.Entity

{

class Sale: Ticket

{

public int SaleId;

public int UserId;

public double Price { get; set; }

public DateTime DateSale { get; set; }

public Sale(int saleId, int userId, double price, DateTime dateSale, int tiketId, int cinemaId, string cinemaName, DateTime timeSeans,

int filmId, string name, string description, string cost, int length)

: base(tiketId, cinemaId, cinemaName, timeSeans, filmId, name, description, cost, length)

{

this.SaleId = saleId;

this.UserId = userId;

this.DateSale = dateSale;

this.Price = price;

}

public Sale(double price, DateTime dateSale, string cinemaName, DateTime timeSeans,

string name, string description)

: base(cinemaName, timeSeans, name, description)

{

this.DateSale = dateSale;

this.Price = price;

}

}

}

Ticket.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace CourseWorkProject_OOP.Models.Entity

{

public class Ticket: Film

{

public int TiketId;

public int CinemaId;

public string CinemaName { get; set; }

public DateTime TimeSeans { get; set; }

public Ticket(int tiketId, int cinemaId, string cinemaName, DateTime timeSeans,

int filmId, string name, string description, string cost, int length)

: base(filmId, name, description, cost, length)

{

this.TiketId = tiketId;

this.CinemaId = cinemaId;

this.CinemaName = cinemaName;

this.TimeSeans = timeSeans;

}

public Ticket(string cinemaName, DateTime timeSeans,

string name, string description)

:base(name, description)

{

this.CinemaName = cinemaName;

this.TimeSeans = timeSeans;

}

}

}

TimeCategory.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace CourseWorkProject_OOP.Models.Entity

{

/// <summary>

/// класс категории времени

/// </summary>

class TimeCategory

{

private int timeFrom;

private int timeTo;

private double coef;

public TimeCategory(int timeFrom, int timeTo, double coef)

{

this.timeFrom = timeFrom;

this.timeTo = timeTo;

this.coef = coef;

}

public double calcPrice(double price, DateTime time)

{

if (time.Hour >= timeFrom && time.Hour <= timeTo)

{

return price * coef;

}

else

{

return price;

}

}

}

}

Db.cs

using MySql.Data.MySqlClient;

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace CourseWorkProject_OOP

{

class DB

{

MySqlConnection connection = new MySqlConnection("datasource = localhost; port=3306;username=root;password=Guga6931;database=tikets");

//ф-ция подключения к БД

public void openConnection()

{

if (connection.State == System.Data.ConnectionState.Closed)

connection.Open();

}

public void closedConnection()

{

if (connection.State == System.Data.ConnectionState.Open)

connection.Close();

}

public MySqlConnection GetConnection()

{

return connection;

{

ПРИЛОЖЕНИЕ Г

(обязательное)

Руководство пользователя

1 Общие сведения

Раздел «Руководство пользователя» содержит материал в обязательном порядке необходимый для ознакомления. В разделе описывается уровень допустимых знаний пользователя, документы, описывающие особенности работы и функционирования системы, необходимое программное обеспечение (если требуется).

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

Пользователь системы должен обладать следующей квалификацией:

- пользовательские навыки работы с ЭВМ;

- знание предметной области и знакомство с руководством пользователя.

Список документов, предоставляемых к обязательному ознакомлению перед началом работы:

- настоящее руководство пользователя;

- инструкциями по технике безопасности (для работы с ЭВМ).

2 Требования к запуску приложения

Для запуска приложения требуется:

- операционная система Windows 7, 8, 10;

- устнановленный.NET Framework;

- заранее настроеное соединения с базой данных системным-программистом.

3 Запуск приложения

Приложение можно запустить через exe-файл напрямую. После запуска программы пользователь должен авторизоваться в системе, затем он сможет продолжить работу с приложением. Для завершения программы требуется нажать на значок меню в правом верхнем углу программы и выбрать соответствующий пункт.

4 Непредвиденные ситуации

Могут возникнуть несколько типов ошибок:

- неверно вваленные данные при авторизации;

-некорректно введённые данные;

- потеря соединения с базой данных;

- не удалось изменить запись;

- не удалось добавить запись;

- не удалось удалить запись;

- доступ к данному ресурсу недоступен.

При возникновении любых непредвиденных ситуаций рекомендуется перезапустить приложение. Если ошибка связана с подключением к базе данных обратитесь к системному-программисту. Если после повторного использования программы возникают ошибки сообщите разработчику, или программисту, который в данный момент поддерживает программу данной программы для её устранения.

ПРИЛОЖЕНИЕ Д

(обязательное)

Руководство программиста

1 Назначение и условия применения программы

Программное средство предназначено для учёта реализации билетов на киносеансы в кинотеатрах города.

Основные функции приложения:

- предоставление отчётов о доставках;

- получение информации с базы данных;

- управление данными пользователей;

- управление пользователями системы;

И тд

Для запуска приложения должен быть установлен.NET Framework. Для считывания данных устройство должно соединятся с базой данных MySQL.

2 Характеристики программы

Разработанное приложение написано на языке программирования C# в среде разработке VisualStudio 2019.

Для хранения информации используется база данных MySQL.

3 Обращение к программе

Обращение к программе происходит при запуске.exeфайла и настройки соединения с СУБД MySQL. Запуск программы так же осуществляется с помощью среды разработки, например, VisualStudio 2019.

Для дополнения программного обеспечения новым функционалом можно использовать любую среду разработки на языке программирования C#. Продукт покрыт автоматизированными функциональными тестами и их использование позволяет изменять исходный код без опасности нарушить какую-либо часть существующего функционала.

4 Входные и выходные данные

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

Выходными данными для приложения являются сгенерированные XML-отчёты по расходу обслуживания заказов.

5 Сообщение в ходе работы приложения

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

- некорректные учетные данные пользователя;

- несуществующий пользователь;

- ошибки корректности ввода данных;

- несуществующий киносеанс;

- несуществующий заказ.

Данные сообщения передаются в специальном виде ошибки с кодом ошибки и описанием

ПРИЛОЖЕНИЕ Ж

(обязательное)

Руководство системного программиста

1 Общие сведения о приложении

Приложении предназначена для автоматизации и упрощения работы по учёту обслуживания кинотеатров.

Данноеприложение выполняет следующие функции:

управление данными: добавление, удаление, просмотр, редактированиеданных;

выборка данных для предоставления отчётов;

получение данных из базы данных;

предоставление отчётов о доставках в формате XML;

Для функционирования программно-аппаратного комплекса необходимо наличие следующих компонент:

СУБД: MySQL;

на стороне клиента:.exeфайл с приложением.

2 Структура программы

Приложение реализовано на языке C#. В качестве хранилища базы данных используется MySQL. Для генерации базы данных и тестового набора написаны SQL-скрипты.

3 Настройка программы

Для корректной работы приложения требуется предварительно настроить подключения к базе данных, если база данных не создана, то сгенерировать её.

Так как приложения работает с СУБД MySQL, требуется предварительно её установить на компьютер с приложением, либо компьютер, находящийся в одной сети с ним, и установить MySQL Server. Для этого требуется выполнить SQL-скрипт, приложенный к приложению.

Далее потребуется настройка соединения с СУБД. Для этого требуется изменить строку подключения для уже существующей СУБД. Строка подключения находится в файле «DB.cs».

4 Проверка программы

Для проверки программы на работоспособность требуется заново провести модульное и интегрированное тестирование для проверки:

- на соединения с базой данных;

- на работоспособность бизнес-логики и возникновения исключительных ситуаций;

- корректность вывода данных и представления данных.

5 Дополнительные возможности

В качестве дополнительных возможностей можно выделить:

- многопользовательский доступ;

- гибкая настройка СУБД;

- валидация введённых данных.

6 Сообщение системному программисту

В приложении могут возникать следующие системные ошибки:

- не удалось установить подключения к базе данных;

-не удалось сохранить XML-отчёт;

- не удалось добавить киносеанс;

- не удалось зарегистрировать пользователя.

Для устранения данных ошибок требуется перезапустить программу, если ошибки не исчезли требуется проверить корректность введённых данных и соединения с базой данных. Если ошибки так и не удалось устранить требуется обратится к разработчику программы, либо программисту в данный момент её поддерживающий.

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.