Разработка информационной системы для организации теннисных турниров

Процесс проектирования программы, состоящий из следующих шагов: описание прецедентов, построение диаграммы прецедентов, диаграммы взаимодействий, создание модели программных классов. Тестирование программы входными тестовыми вариантами, ее листинг.

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

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

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Міністерство освіти і науки України

Одеський національний політехнічний університет

Інститут комп'ютерних систем

Кафедра "Системне програмне забезпечення"

КУРСОВА РОБОТА

з дисципліни "Конструювання програмного забезпечення"

Тема "Розробка інформаційної системи для організації тенісних змагань"

Виконав:

Студент групи АС-091

Єрмаков О.К.

Перевірив:

Керівникдоц.

Кунгурцев О.Б.

Одеса - 2012

Министерство образования и науки Украины

Одесский Национальный Политехнический Университет

Институт Компьютерных Систем

Кафедра "Системное программное обеспечение"

ЗАДАЧА

НА КУРСОВУЮ РАБОТ

1. Тема работы: " Разработка информационной системы для организации теннисных турниров "

2. Срок сдачи студентом законченной работы __________

3. Начальные данные к проекту (работе): организация теннисных турниров, аспекты деятельности:

- продажа билетов;

-создание турниров;

- заявки на участие игрокам;

- отправка заявки судьям;

- генерация турнирной сетки и расписания матчей.

4. Содержание расчетно-объяснительной записки (перечень вопросов, которые необходимо разработать): список заинтересованных лиц и их нужд, документ «Видение», график выполнения курсовой работы, описание прецедентов, модель концептуальных классов, описание операций и диаграмм прецедентов, архитектура системы, модель программных классов, методики, схемы тестирования и тестовые варианты, инструкции по установке и эксплуатации, листинги программных модулей.

5. Перечень графического материала: диаграмма концептуальных классов на листе формата А1.

Задача выдана _____________ ______________

Задача принята к выполнению _____________ ______________

АННОТАЦИЯ

При выполнении данной курсовой работы будет разработана программа для учета организации теннисных турниров. Согласно задаче будут рассмотрены такие аспекты деятельности: продажа билетов, создание турниров, заявки на участие игрокам, отправка заявки судьям, генерация турнирной сетки и расписания матчей.

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

После написания программы, она будет протестирована разными входными тестовыми вариантами, результаты тестирования будут приведены в пояснительной записке. Также будет описана инструкция по эксплуатации разработанной программы.

программа прецедент диаграмма класс

ВВЕДЕНИЕ

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

С помощью языка проектирования UML нужно создать диаграммы прецедентов, диаграммы взаимодействий, диаграммы концептуальных классов. При создании этих диаграмм нужно выявить все нюансы и подробности по ходу действия прецедентов, то есть выявить все возможные проблемы и недостатки, которые могут возникнуть при работе программы.

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

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

Именно в такой последовательности будет выполнено проектирование и написание программы по автоматизации работы организации теннисных турниров.

1. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Язык UML (англ. Unified Modeling Language) -- унифицированный язык объектно-ориентированного моделирования, используется в парадигме объектно-ориентированного программирования. Является неотъемлемой частью унифицированного процесса разработки программного обеспечения.

Первая версия (1.0) UML вышла 13 января 1997, она была создана по запросу Object Management Group (OMG) -- организации, ответственной за принятия стандартов в области объектных технологий и баз данных. После обсуждения, в сентябре 1997 года, версия 1.1 UML была представлена на голосование в OMG. Разработку UML поддержали и уже тогда использовали как стандарт такие гранды рынка информационных технологий, как Microsoft, IBM, Hewlett-Packard, Oracle, DEC, Sybase, Logic Works и другие.

UML может быть применен на всех этапах жизненного цикла анализа бизнес-систем и разработки приложений. Разные виды диаграмм, которые поддерживаются UML, и богатейший набор возможностей представления определенных аспектов системы делает UML универсальным средством описания как программных, так и бизнес-систем.

Диаграммы дают возможность представить систему (как бизнес-систему, так и программную) в таком виде, чтобы ее можно было легко перевести в программный код.

Кроме того, UML специально создавалась для оптимизации процесса разработки программных систем, который позволяет увеличить эффективность реализации программных систем в несколько раз и заметно улучшить качество конечного продукта.

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

Практически все сase-средства (программы автоматизации процесса анализа и проектирования) имеют поддержку UML. Модели разработаны в UML, позволяют значительно упростить процесс кодирования и направить усилие программистов непосредственно на реализацию системы.

Диаграммы повышают сопровождаемость проекта и облегчают разработку документации.

UML необходим:

- руководителям проектов, которые руководят распределением задач и контролем над проектом;

- проектировщикам информационных систем, которые разрабатывают технические задания для программистов;

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

- программистам, которые реализуют модули информационной системы.

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

Не смотря на то, что UML является широко признанным стандартом языка моделирования, она часто подпадает под критику по следующим причинам:

- чрезмерность языка;

- неточная семантика;

- проблемы в изучении и применении;

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

- старается нравиться всем.[1]

2. ДОКУМЕНТ «ВИДЕНИЕ»

Документ «Видение» определяет видение проекта. В нем коротко описываются цели проекта, проблемы, указывается круг заинтересованных лиц, их нужды, а также основные идеи предложенного решения.

2.1 Цели проекта

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

2.2 Проблемы

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

2.3 Круг заинтересованных лиц

Менеджер регистрирует турниры в системе, высылает заявки судьям и игрокам.

Игрок получает заявки на участие в турнире и отправляет ответ.

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

Продавец билетов оформляет покупку билетов и заносит информацию в систему.

Зритель покупает билет(ы) и взаимодействует с продавцом.

2.4 Основные идеи предложенного решения

Автоматизация процесса составления расписания игр.

Поиск гостиниц для размещения на время соревнования.

Сокращение времени работы с клиентом.

Облегчение работы с клиентом.

3. ДИАГРАММА ПРЕЦЕДЕНТОВ

Диаграммы прецедентов имеют второстепенное значение, они только иллюстрируют образа использования системы внешними исполнителями.

Основное внимание нужно уделять текстовым описаниям.

4. ОПИСАНИЕ ПРЕЦЕДЕНТОВ

Прецедент - это механизм упрощения этапа формулирования требований для всех заинтересованных лиц.

4.1 Прецедент «Создание турнира»

Основное действующее лицо

Менеджер

Область действия

Система

Уровень

Цель пользователя

Участники и интересы

Менеджер оформляет турнир

Предусловия

Менеджер турнира вошел в систему

Мин. Гарантии

Менеджер оформил турнир и выполнил все действия

Гарантии успеха

Турнир оформлен

Триггер

Менеджер сообщает системе о создании турнира

Основной сценарий

Менеджер сообщает Системе о создании турнира, Система подтверждает.

Система предлагает Менеджеру ввести предполагаемую дату проведения турнира (дата начала и дата окончания)

Менеджер вводит дату начала турнира и дату окончания. Система подтверждает.

Система предлагает Менеджеру ввести место проведения турнира

Менеджер вводит имя города и название клуба. Система подтверждает.

Система предлагает Менеджеру ввести список гостиниц,в которых игроки и судьи смогут расположиться на время проведения турнира

Менеджер вводит список названий гостиниц. Система подтверждает

Расширения

5а. На заданную дату корты в данном клубе заняты другими арендаторами.

5а.1. Система извещает Менеджера о том, что корты будут заняты.

5а.2. Система предлагает игроку ввести место проведения турнира заново.

5а.3 Менеджер вводит место проведения турнира заново.Вариант использования продолжается.

7а. В любой из веденных Менеджером гостиниц отсутствуют свободные места на заданный период проведения турнира.

7а.1.Система сообщает Менеджеру что брони в данной гостиницы не будет и предалагет ввести другую гостиницу.

7а.2 Менеджер вводит новое название. Вариант использования продолжается.

4.2 Прецедент «Продажа билетов»

Основное действующее лицо

Зритель , Продавец билетов

Область действия

Система

Уровень

Цель пользователя

Участники и интересы

Зритель обращается к Продавцу билетов с просьбой оформить заказ билетов.

Предусловия

Турнир был создан

Мин. гарантии

Продавец билетов обслужил зрителя

Гарантии успеха

Продавец билетов продал определенное количество билетов зрителю.

Триггер

Зритель обратился к продавцу билетов с целью приобрести определенное количество билетов на определенные места на трибуне турнира.

Основной сценарий

Продавец билетов входит в Систему и открывает новую продажу билетов(новый заказ).

Зритель указывает продавцу на матч, на который будут куплены билеты, запрашивает у продавца доступность определенного количества билетов.

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

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

Зритель указывает продавцу желаемые места. Продавец подтверждает.

Продавец указывает системе запрошенные зрителем места на трибуне. Система подтверждает.

Продавец запрашивает у системы стоимость запрошенных билетов. Система показывает продавцу стоимость билетов к оплате.

Продавец указывает зрителю на сумму к оплате.

Зритель осуществляет оплату билетов наличными средствами, продавец принимает оплату.

Продавец сообщает системе о том, что оплата была осуществлена.

Система распечатывает билеты и чек об оплате.

Продавец выдает билеты и чек зрителю. Прецедент завершается.

Расширения

4а. Все билеты распроданы

4а.1. Система сообщает продавцу билетов что доступных билетов нет, вариант использования завершается.

4б. Билеты на матч есть, но в меньшем количестве, чем указал зритель

4б.1. Система сообщает продавцу список оставшихся нераскупленых мест.

4б.2. Продавец предалагает зрителю приобрести оставшиеся билеты с заданными местами на трибуне.

4б.3. Зритель соглашается на покупку оставшегося количества билетов. Прецедент продолжается по обычному сценарию, начиная с пункта 7.

12а. Оплата не была осуществлена.

12а.1. Система регистрирует отмену покупки билетов. Прецедент завершается.

4.3 Прецедент «Составление расписания игр и условий оплаты»

Основное действующее лицо

Менеджер

Область действия

Система

Уровень

Цель пользователя

Участники и интересы

Менеджер передает системе список игроков для генерации расписания игр, устанавливает в системе условия оплаты участия в турнире, размер призового фонда.

Предусловия

Турнир был создан

Мин. гарантии

Расписание игр сгенерировано,условия оплаты установлены

Гарантии успеха

Расписание игр сгенерировано,условия оплаты установлены

Триггер

Турнир создан менеджером

Основной сценарий

Менеджер сообщает системе о составлении расписания игр и условий оплаты.Система подтверждает.

Система предлагает Менеджеру ввести список игроков.

Менеджер вводит список имен игроков.

Система генерирует игровую сетку и составляет расписание игр.

Система предлагает Организатору турнира ввести размер взноса за участие в турнире.

Организатор турнира вводит размер взноса.Система подтверждает.

Система предлагает Организатору турнира ввести размер призового фонда.

Организатор турнира вводит размер призового фонда. Система подтверждает.

Расширения

Отсутствуют

4.4 Прецедент «Приглашение игроков»

Основное действующее лицо

Менеджер, Игрок

Область действия

Система и Федерация Тенниса Украины

Уровень

Обобщенный (системы)

Участники и интересы

Менеждер высылает персональные приглашения игрокам на участие в турнире и ожидает определенное время пока не прийдут ответы на приглашения

Предусловия

Турнир,на который Менеждер высылает приглашения игрокам для участия,был создан.

Мин. гарантии

Приглашения были высланы.

Гарантии успеха

Приглашения были высланы и ответы были получены в течение 2 недель.

Триггер

Менеджер решает выслать приглашения научастие в созданном турнире.

Основной сценарий

Организатор турнира обращается к ФТУ за списком зарегистрированных игроков.

ФТУ извещает Менеджера списком имен игроков и контактные данные -телефон и e-mail.

Менеджер высылает игрокам по e-mail персональные електронные приглашения для участия в своем турнире и ждет в течение двух недель ответных e-mail.

Менеджер получает ответы , входит в Систему и регистрирует игроков на свой турнир . Вариант использовани завершается.

Расширения

3а.В течение двух недель не было получено ни одного ответа

3а.1 Турнир отменяется. Завершение варианта использования.

4.5 Прецедент «Приглашение судей»

Основное действующее лицо

Менеджер, Судья

Область действия

Система и Федерация Тенниса Украины

Уровень

Обобщенный (системы)

Участники и интересы

Менеджер высылает персональные приглашения судьям на судейство и ожидает определенное время пока не прийдут ответы на приглашения

Предусловия

Турнир,на который Менеджер высылает приглашения судьям для участия,был создан.

Мин. гарантии

Приглашения были высланы.

Гарантии успеха

Приглашения были высланы и ответы были получены в течение 2 недель.

Триггер

Менеджер решает выслать приглашения на судейство в созданном турнире.

Основной сценарий

Менеджер обращается к ФТУ за списком лицензированных судей.

ФТУ извещает Менеджера списком имен судей и контактные данные -телефон и e-mail.

Менеджер высылает по e-mail персональные електронные приглашения для судейства в своем турнире судьям и ждет в течение двух недель ответных e-mail.

Менеджер получает ответы , входит в Систему и регистрирует судей на свой турнир . Вариант использовани завершается.

Расширения

3а.В течение двух недель не было получено ни одного ответа

3а.1 Турнир отменяется. Завершение варианта использования.

5. ОПИСАНИЕ СИСТЕМНЫХ ОПЕРАЦИЙ

Системные операции - это операции, которые входят в открытый интерфейс системы для обработки входных системных событий, которые система выполняет как черный ящик.

Системные операции можно идентифицировать на основе системных событий.

5.1 Системные операции для прецедента «Продажа билетов»

Операция CreateSelling

Операции

CreateSelling()

Ссылки

Прецедент «Продажа билета»

Предусловие

Отсутствует

Постусловие

-создан экземпляр класса Selling

-установление ассоциации с классом Selling

Операция GetFreePositions

Операции

GetFreePositions()

GetFreePositionsAndSave()

Ссылки

Прецедент «Продажа билета»

Предусловие

Имеетмя экземпляр класса Journal и PositionMap

Постусловие

-инициализирован список freePositions

-установление ассоциации с классами Journal и PositionMap

Операция orderPosition

Операции

orderPositionById(positionID)

orderPosition(positionID)

Ссылки

Прецедент «Продажа билетов»

Предусловие

Имеется экземпляр класса Selling

Постусловие

-установление ассоциации с классом Selling

- место забронировано

Операция GetSellingCost

Операции

GetSellingCost()

Ссылки

Прецедент «Продажа билетов»

Предусловие

Имеется экземпляр класса Selling

Постусловие

- определено значение стоимости билетов (текущей продажи)

5.2 Системные операции для прецедента «Создание турнира»

Операция RegisterTournament

Операции

RegisterTournament()

Ссылки

Прецедент «Создание турнира»

Предусловие

Отсутствует

Постусловие

-создан экземпляр класса Tournament

-установление ассоциации с классом Tournament

Операция defineDates

Операции

defineDates()

Ссылки

Прецедент «Создание турнира»

Предусловие

Отсутствует

Постусловие

-установлены даты проведения турнира

Операция definePlaces

Операции

definePlaces()

Ссылки

Прецедент «Создание турнира»

Предусловие

Отсутствует

Постусловие

-установлено место проведения турнира

Операция defineHotel

Операции

defineHotel()

Ссылки

Прецедент «Создание турнира»

Предусловие

Отсутствует

Постусловие

-установлена гостиница на размещение во время турнира

5.3 Системные операции для прецедента «Составление расписания игр и условий оплаты»

Операция GenerateDraw

Операции

GenerateDraw()

Ссылки

Прецедент «Составление расписания игр и условий оплаты»

Предусловие

Отсутствует

Постусловие

-создана игровая сетка

Операция CreateSchedule

Операции

CreateSchedule()

Ссылки

Прецедент «Составление расписания игр и условий оплаты»

Предусловие

Отсутствует

Постусловие

-создана игровая сетка

Операция definePrizes

Операции

definePrizes()

Ссылки

Прецедент «Составление расписания игр и условий оплаты»

Предусловие

Отсутствует

Постусловие

-определены условия оплаты турнира

5.4 Системные операции для прецедента «Приглашение игрока»

Операция MakeRequest

Операции

MakeRequest()

Ссылки

Прецедент «Приглашение игрока»

Предусловие

Отсутствует

Постусловие

- игроку было отправлено приглашение на участие в турнире и получен ответ от него

5.5 Системные операции для прецедента «Приглашение судьи»

Операция MakeRequest

Операции

MakeRequest()

Ссылки

Прецедент «Приглашение судьи»

Предусловие

Отсутствует

Постусловие

- кандидату в судьи было отправлено приглашение на участие в турнире и получен ответ от него

6. ДИАГРАММЫ ВЗАИМОДЕЙСТВИЙ

Диаграммы взаимодействий иллюстрируют образ взаимодействия объектов с помощью сообщений.

Термин «диаграмма взаимодействий» используется в качестве общего названия для двух следующих конкретных типов диаграмм:

диаграммы кооперации;

диаграммы последовательностей.

Выбор типа диаграммы остается за нами. Так как у нас место ограничено форматом А4, то будем использовать диаграммы кооперации (объекты не ограничены в размещении).

6.1 Диаграммы взаимодействия для процедуры «Продажа билета»

Операция CreateSelling

Операция GetFreePositions

Операция orderPosition

Операция GetSellingCost

6.2 Диаграммы взаимодействия для процедуры «Создание турнира»

Операция RegisterTournament

Операция defineDates

Операция definePlaces

Операция defineHotel

6.3 Диаграммы взаимодействия для процедуры «Составление расписания игр и условий оплаты»

Операция GenerateDraw

Операция CreateSchedule

Операция definePrizes

6.4 Диаграммы взаимодействия для процедуры «Приглашение игрока»

Операция MakeRequest

6.5 Диаграммы взаимодействия для процедуры «Приглашение судьи»

Операция MakeRequest

7. ДИАГРАММЫ КЛАССОВ

Диаграмма классов иллюстрирует спецификации программных классов и интерфейсов в приложении.

Обычно на такую диаграмму выносится следующая информация:

- классы, ассоциации и атрибуты;

- интерфейсы со своими операциями и константами;

- методы;

- информация о типах атрибутов;

- образ навигации;

- зависимости.

На самом деле диаграммы классов и диаграммы взаимодействия выполнялись одновременно, потому что они тесно связаны и при их проектировании использовались одни шаблоны.

При проектировании диаграмм взаимодействия и диаграмм классов использовались в основном три шаблона:

- Information Expert;

- Controller;

- Creator.

При этом учитывались шаблоны Low Coupling и High Cohesion. Шаблон Controller был применен к классу Register, то есть он должен был обрабатывать системные сообщения.

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

Но при проектировании классов приложения могут появиться и новые классы, которые не имеют аналогов в реальном мире.

Диаграмма классов приведена в приложении на листе формата А1.

8. ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЯ

Интерфейс программы является интуитивным и не требует долгого вникания.

После запуска программы на экране появляется следующее окно:

Сотрудник должен ввести свое имя и пароль для входа в систему и предоставления ему определенных прав (продавца билетов либо менеджера турнира).

Войдем в систему от лица продавца билетов. Увидим следующее окно:

Выйдем и зайдем как менеджер турнира:

Здесь мы можем отправлять заявки игрокам на участие в нашем турнире и получать от них ответы.

Перейдя на вкладку «Судьи» мы можем выполнять те же действия только относительно судей:

Перейдем на вкладку «Расписание матчей»

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

Во вкладке «Создать турнир» мы описываем информацию касающуюся турнира и создаем его нажатием кнопки «Создать». При этом предыдущий турнир закрывается.

ВЫВОД

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

ЛИТЕРАТУРА

Конспект лекций Кунгурцев А.Б. «Технология программирования и создание программных продуктов».

MSDN HELP.

Герберт Шилд «Полный справочник по С++ Четвертое издание».

В.И. Давыдов и А.Б. Кунгурцев «Объектно-Ориентированное программирование».

ПРИЛОЖЕНИЕ 1

Файл TTMSMainWindow.h

#ifndef TTMSMAINWINDOW_H

#define TTMSMAINWINDOW_H

#include <QMainWindow>

#include <managerwindow.h>

#include <ticketmanagerwindow.h>

#include <QFile>

#include <QTextStream>

namespace Ui {

class TTMSMainWindow;

}

class TTMSMainWindow : public QMainWindow

{

Q_OBJECT

public:

explicit TTMSMainWindow(QWidget *parent = 0);

~TTMSMainWindow();

ManagerWindow manager;

TicketManagerWindow ticket;

private:

Ui::TTMSMainWindow *ui;

private slots:

void on_commandLinkButton_clicked();

};

#endif // TTMSMAINWINDOW_H

Файл TTMSMainWindow.cpp

#include "ttmsmainwindow.h"

#include "ui_ttmsmainwindow.h"

TTMSMainWindow::TTMSMainWindow(QWidget *parent) :

QMainWindow(parent),

ui(new Ui::TTMSMainWindow)

{

ui->setupUi(this);

}

TTMSMainWindow::~TTMSMainWindow()

{

delete ui;

}

void TTMSMainWindow::on_commandLinkButton_clicked()

{

QString userLoginInput = ui->loginLineEdit->text();

QString userPassInput = ui->passLineEdit->text();

QFile crewManager("C:\\Users\\Oleksiy\\Documents\\managers.txt");

if( crewManager.open(QIODevice::ReadOnly) )

{

QTextStream stream(&crewManager);

QString str;

while( !stream.atEnd() )

{

str = stream.readLine();

if( userLoginInput == str )

{

if( (str = stream.readLine()) == userPassInput )

{

this->hide();

this->manager.show();

return;

}

}

}

}

crewManager.close();

QFile crewSeller("C:\\Users\\Oleksiy\\Documents\\sellers.txt");

if( crewSeller.open(QIODevice::ReadOnly) )

{

QTextStream stream(&crewSeller);

QString str;

while( !stream.atEnd() )

{

str = stream.readLine();

if( userLoginInput == str )

{

if( (str = stream.readLine()) == userPassInput )

{

this->hide();

this->ticket.show();

return;

}

}

}

}

crewSeller.close();

}

Файл Main.cpp

#include <QtGui/QApplication>

#include "ttmsmainwindow.h"

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

TTMSMainWindow w;

w.show();

return a.exec();

}

Файл ManagerWindow.h

#ifndef MANAGERWINDOW_H

#define MANAGERWINDOW_H

#include <QMainWindow>

#include <QFile>

#include <QTextStream>

#include <QTableWidgetItem>

namespace Ui {

class ManagerWindow;

}

class ManagerWindow : public QMainWindow

{

Q_OBJECT

public:

explicit ManagerWindow(QWidget *parent = 0);

~ManagerWindow();

private:

Ui::ManagerWindow *ui;

int currMatchIndex;

QString tourName;

QString tourCity;

QString tourClub;

QString tourDateStart;

QString tourDateEnd;

QString tourHotel;

QString tourFund;

QString tourType;

int tourNumOfPlayers;

QVector<QString> playersVector;

private slots:

void on_finPlPushButton_clicked();

void on_finJdgPushButton_clicked();

void on_cancelJudgePushButton_2_clicked();

void on_acceptJudgePushButton_2_clicked();

void on_cancelPropPushButton_clicked();

void on_acceptPropPushButton_clicked();

void on_createTourBtn_clicked();

void on_generatePushButton_clicked();

void on_finishPushButton_clicked();

void on_sendPushButton_clicked();

//void on_pushButton_2_clicked();

void on_addMatchPushButton_clicked();

};

#endif // MANAGERWINDOW_H

Файл ManagerWindow.cpp

#include "managerwindow.h"

#include "ui_managerwindow.h"

ManagerWindow::ManagerWindow(QWidget *parent) :

QMainWindow(parent),

ui(new Ui::ManagerWindow)

{

ui->setupUi(this);

currMatchIndex = 0;

QFile players("C:\\Users\\Oleksiy\\Documents\\players.txt");

if( players.open(QIODevice::ReadOnly) )

{

ui->playersTableWidget->setRowCount(200);

QString playerName;

QTextStream stream(&players);

int playerNum = 0;

while( !stream.atEnd() )

{

playerName = stream.readLine();

ui->playersTableWidget->setItem(playerNum, 0, new QTableWidgetItem(playerName));

++playerNum;

}

}

players.close();

QFile judges("C:\\Users\\Oleksiy\\Documents\\judges.txt");

if( judges.open(QIODevice::ReadOnly) ){

ui->judgesTableWidget->setRowCount(20);

QString judgeName;

QString judgeAge;

QString judgePhone;

QTextStream stream(&judges);

int judgeNum = 0;

while( !stream.atEnd() )

{

judgeName = stream.readLine();

ui->judgesTableWidget->setItem(judgeNum, 0, new QTableWidgetItem(judgeName));

judgeAge = stream.readLine();

ui->judgesTableWidget->setItem(judgeNum, 1, new QTableWidgetItem(judgeAge));

judgePhone = stream.readLine();

ui->judgesTableWidget->setItem(judgeNum, 2, new QTableWidgetItem(judgePhone));

++judgeNum;

}

}

judges.close();

QFile tours("C:\\Users\\Oleksiy\\Documents\\tours.txt");

if( tours.open(QIODevice::ReadOnly) ){

QTextStream stream(&tours);

tourName = stream.readLine();

ui->tourNameInfo->setText(tourName);

tourCity = stream.readLine();

ui->cityNameInfo->setText(tourCity);

tourClub = stream.readLine();

ui->clubNameInfo->setText(tourClub);

tourDateStart = stream.readLine();

ui->dateStart->setText(tourDateStart);

tourDateEnd = stream.readLine();

ui->dateEnd->setText(tourDateEnd);

tourHotel = stream.readLine();

ui->hotelNameInfo->setText(tourHotel);

tourFund = stream.readLine();

ui->fundAmountInfo->setText(tourFund);

tourType = stream.readLine();

ui->drawType->setText(tourType);

}

tours.close();

}

ManagerWindow::~ManagerWindow(){

delete ui;

}

void ManagerWindow::on_addMatchPushButton_clicked(){

ui->matchesTableWidget->setItem(currMatchIndex, 0, new QTableWidgetItem(ui->pl1ComboBox->currentText()));

ui->matchesTableWidget->setItem(currMatchIndex, 1, new QTableWidgetItem(ui->pl2ComboBox->currentText()));

ui->matchesTableWidget->setItem(currMatchIndex, 2, new QTableWidgetItem(ui->matchDateLineEdit->text()));

ui->matchesTableWidget->setItem(currMatchIndex, 3, new QTableWidgetItem(ui->matchCourtComboBox->currentText()));

ui->matchesTableWidget->setItem(currMatchIndex, 4, new QTableWidgetItem(ui->jdgComboBox->currentText()));

++currMatchIndex;

}

void ManagerWindow::on_createTourBtn_clicked(){

QFile tours("C:\\Users\\Oleksiy\\Documents\\tours.txt");

if( tours.open(QIODevice::ReadWrite) ){

QTextStream stream(&tours);

ui->tourNameInfo->setText(ui->tourNameEdit->text());

stream << ui->tourNameEdit->text() << '\n';

ui->cityNameInfo->setText(ui->cityNameEdit->text());

stream << ui->cityNameEdit->text() << '\n';

ui->clubNameInfo->setText( ui->clubComboBox->currentText() );

stream << ui->clubComboBox->currentText() << '\n';

ui->dateStart->setText(ui->dateStartEdit->text());

stream << ui->dateStartEdit->text() << '\n';

ui->dateEnd->setText(ui->dateEndEdit->text());

stream << ui->dateEndEdit->text() << '\n';

ui->hotelNameInfo->setText(ui->hotelComboBox->currentText());

stream << ui->hotelComboBox->currentText() << '\n';

ui->fundAmountInfo->setText(ui->fundEdit->text());

stream << ui->fundEdit->text() << '\n';

ui->drawType->setText(ui->drawTypeComboBox->currentText());

stream << ui->drawTypeComboBox->currentText() << '\n';

}

tours.close();

}

void ManagerWindow::on_acceptPropPushButton_clicked(){

QFile pltour("C:\\Users\\Oleksiy\\Documents\\tourpl.txt");

if( pltour.open(QIODevice::Append) ){

QTextStream pl(&pltour);

pl << ui->playersTableWidget->item(0, 0)->text() << '\n';

ui->playersTableWidget->removeRow(0);

}

pltour.close();

}

void ManagerWindow::on_cancelPropPushButton_clicked(){

ui->playersTableWidget->removeRow(0);

}

void ManagerWindow::on_acceptJudgePushButton_2_clicked(){

QFile jdgtour("C:\\Users\\Oleksiy\\Documents\\tourjdg.txt");

if( jdgtour.open(QIODevice::Append) ){

QTextStream jdg(&jdgtour);

jdg << ui->judgesTableWidget->item(0, 0)->text() << '\n';

ui->judgesTableWidget->removeRow(0);

}

jdgtour.close();

}

void ManagerWindow::on_cancelJudgePushButton_2_clicked(){

ui->judgesTableWidget->removeRow(0);

}

void ManagerWindow::on_finJdgPushButton_clicked(){

QFile jdgfile("C:\\Users\\Oleksiy\\Documents\\tourjdg.txt");

if( jdgfile.open(QIODevice::ReadOnly) ){

QTextStream jdg(&jdgfile);

while(!jdg.atEnd()){

ui->jdgComboBox->addItem(jdg.readLine());

}

}

jdgfile.close();

}

void ManagerWindow::on_finPlPushButton_clicked(){

QFile plfile("C:\\Users\\Oleksiy\\Documents\\tourpl.txt");

if( plfile.open(QIODevice::ReadOnly) ){

QTextStream pl(&plfile);

while(!pl.atEnd()){

QString str = pl.readLine();

ui->pl1ComboBox->addItem(str);

ui->pl2ComboBox->addItem(str);

}

}

plfile.close();

}

Файл TicketManagerWindow.h

#ifndef TICKETMANAGERWINDOW_H

#define TICKETMANAGERWINDOW_H

#include <QMainWindow>

namespace Ui {

class TicketManagerWindow;

}

class TicketManagerWindow : public QMainWindow {

Q_OBJECT

public:

explicit TicketManagerWindow(QWidget *parent = 0);

~TicketManagerWindow();

private:

Ui::TicketManagerWindow *ui;

int selectedCellRow;

bool cellIsSelected;

private slots:

void on_pushButton_clicked();

};

#endif // TICKETMANAGERWINDOW_H

Файл TicketManagerWindow.cpp

#include "ticketmanagerwindow.h"

#include "ui_ticketmanagerwindow.h"

TicketManagerWindow::TicketManagerWindow(QWidget *parent) :

QMainWindow(parent),

ui(new Ui::TicketManagerWindow){

ui->setupUi(this);

cellIsSelected = false;

}

TicketManagerWindow::~TicketManagerWindow(){

delete ui;

}

void TicketManagerWindow::on_pushButton_clicked(){

ui->tableWidget->removeRow( 0 );

}

1. Размещено на www.allbest.ru


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

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