Файл: Курсовой проект по мдк 01. 02 Прикладное программирование на тему Программа формирования списков Транспортное агентство.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.03.2024

Просмотров: 16

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ


«СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ И ИНФОРМАТИКИ»

ХАБАРОВСКИЙ ИНСТИТУТ ИНФОКОММУНИКАЦИЙ (ФИЛИАЛ)
СРЕДНЕЕ ПРОФЕССИОНАЛЬНОЕ ОБРАЗОВАНИЕ


 

 

 

 

 

 

КУРСОВОЙ ПРОЕКТ

по МДК 01.02 Прикладное программирование
на тему Программа формирования списков «Транспортное агентство»

 

 

 

 

 

 

 

Выполнил:

Е.В. Пырлифын

Проверил:

Ю.А. Калиниченко

Группа:

ПКС-340

 

 

 

 

 

2022

Содержание

Введение

4

1 Постановка задачи

6

1.1 Описание задачи

6

1.2 Описание состава входных и выходных данных

6

1.3 Ограничения на входные данные и методы их контроля

6

1.4 Формулы для решения задачи

9

2 Функциональная схема и блок-схема программы

10

3 Описание интерфейса программы

12

4 Описание программных компонентов и их свойств

18

5 Тестовый пример

19

6 Листинг программы

21

Заключение

27

Список используемых источников

28


ВВЕДЕНИЕ

Программа формирование списков «Транспортное агентство» написана на высокоуровневом языке программирования Python с использованием SQLite3.

Цель курсовой работы – это разработка консольного приложения с возможностью редактирования записей, а также формированием списков по определенным критериям.

Актуальность заключается в том, что при работе с большим объемом данных во время учета сведений по транспорту затрачивается большое количество времени. Благодаря данному приложению пользователь за тоже количество времени сможет обрабатывать гораздо больше данных, а также позволит систематизировать учет сведений о транспорте (номер рейса, время отправление, пункт назначение и т.д.).


Для реализации цели следует решить следующие задачи:

  • разработать консольный интерфейс программы;

  • составить функциональную схему программы;

  • составить блок – схему программы;

  • разработать обработку исключений в программе;

  • разработать возможность редактировать записи в приложении.

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

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

Объектно-ориентированное программирование (ООП) в Python – это способ компьютерного программирования, использующий идею «объектов» для представления данных и методов. Это также подход, используемый для создания аккуратного и многоразового кода вместо избыточного. Программа разбита на автономные объекты или несколько мини-программ. Каждый индивидуальный объект представляет собой отдельную часть приложения, имеющую собственную логику и данные для взаимодействия внутри себя. Объектно-ориентированное программирование включает в себя четыре основных принципа структурирования:

  • абстракция — моделирование требуемых атрибутов и взаимодействий сущностей в виде классов для определения абстрактного представления системы;

  • инкапсуляция — скрытие внутреннего состояния и функций объекта и предоставление доступа только через открытый набор функций;

  • наследование — возможность создания новых абстракций на основе существующих;

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

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


Кроссплатформенность — это способность IT-продукта полноценно работать на любом устройстве вне зависимости от типа операционной системы (ОС).

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

SQLite3 — это консольная утилита для работы с SQLite от разработчиков СУБД. Она запускается и работает в командной строке, в консоли операционной системы. По функциональности SQLite3 — программа-клиент для клиент-серверных приложений. С ее помощью можно вводить и передавать запросы к базе данных: создавать, модифицировать, получать или удалять таблицу. Разница в том, что она обращается не к отдельному процессу-серверу, а ко встроенному в приложение движку SQLite.

SQLite – это быстрая и легкая встраиваемая однофайловая СУБД на языке C, которая не имеет сервера и позволяет хранить всю базу локально на одном устройстве. Для работы SQLite не нужны сторонние библиотеки или службы.

СУБД – это системы управления базами данных. При помощи СУБД можно создавать, объединять, удалять информацию в базах данных, предоставлять к ним доступ определённым пользователям и защищать от взлома.

1 Постановка задачи

1.1. Описание задачи

Программа формирования списков «Транспортное агентство» обрабатывает исходные данные и формирует списки. Входная и выходная информация формируется в консоли в виде таблиц. Исходные данные базируются в базе данных SQLite3. Они представляют собой 3 локальных таблицы (направление, расстояние), которые связаны между собой по ключевому полю «NomerReisa» и одну общую таблицу, которая формируется в Python из этих 2 таблиц. Все необходимые данные Python самостоятельно распределяет между таблицами и автоматически подсчитывает цену билета. В программе возможно добавлять, удалять и изменять записи.

1.2. Описание состава входной и выходной информации.

Входной информацией программы формирования списков «Экзамены» являются:

  • номер рейса;

  • время отправления;

  • пункт назначения;

  • расстояние до пункта назначения;

  • количество мест;

  • цена поездки.


Выходной информацией программы формирования списков «Транспортное агентство» являются пять списков:

  • пункты с самой дорогой ценой поездки;

  • пункты с самой низкой стоимостью билетов;

  • по заданному пользователем пункту назначения;

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

  • по заданному пользователем количеству мест, отсортированный по номеру рейса.

1.3 Ограничения на входные данные и методы их контроля

На все входные данные присутствуют ограничения. Входные данные типа «text» при добавлении или изменении «пункта назначения»в 1 из 3 таблиц, могут быть введены с использованием любого регистра, но если пользователь введет символы помимо букв и знаков препинания, то программа выведет сообщение: «Некорректный ввод. Попробуйте снова и вернет пользователя к вводу данных.»

while True: #Добавление пункта назначения

try:

punkt = input(str("PunktNaznachenia = "))

isCointainsNumbers = bool(re.search(r"\d", punkt))

if isCointainsNumbers:

print("Неккоректный ввод. Повторите ввод")

continue

break

except:

print("Неккоректный ввод. Повторите ввод")

Входные данные типа «integer» при добавлении или обновлении записей в колонках «Время отправления», «Цена поездки», «Количество мест» и «Расстояние» могут быть введены только числа. Если пользователь введет символы кроме чисел, то программа выведет сообщение: «Некорректный ввод. Попробуйте снова» и вернет пользователя к вводу данных.

while True: # Добавление времени отправления

try:

time = int(input("VremiaOtpravlenia = "))

break

except:

print("Неккоректный ввод. Повторите ввод")

while True: # Добавление цены поездки

try:

money = int(input("TsenaPoezdki= "))

break

except:

print("Неккоректный ввод. Повторите ввод")

while True: # Добавление расстояния поездки

try:

rasstoanie = int(input("Rastoainie = "))

if rasstoanie < 201: True

break

except:

print("Ошибка ввода. Попробуйте снова.")

while True: # Добавление расстояния поездки

try:

rasstoanie = int(input("Rastoainie = "))

if rasstoanie < 201: True

break

except:

print("Ошибка ввода. Попробуйте снова.")

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


while True:

try:

nomer = int(input("Введите номер рейса для удаления записи: "))

cur.execute(""" SELECT 1 FROM napravlenie WHERE NomerReisa = {};""".format(nomer))

one = cur.fetchone()[0]

break

except:

print("Ошибка ввода. Попробуйте снова.")

while True:

try:

nomer = int(input("Введите номер рейса для обновления записи: "))

cur.execute(""" SELECT 1 FROM napravlenie WHERE NomerReisa = {};""".format(nomer))

one = cur.fetchone()[0]

break

except:

print("Ошибка ввода. Попробуйте снова.")

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

case _:

print("Неккоректный ввод. Повторите ввод")

case "10": #Вернуться к выбору таблиц

break

Входные данные при формировании списков, где нужно ввести «диапазон расстояния до пункта назначения, отсортированный по цене поездки», «количество мест» или «пункт назначение», должны быть подходящего типа «integer» или «text». Если пользователь введет неправильные данные, то программа выведет следующее сообщение: «Некорректный ввод. Попробуйте снова» и вернет пользователя к вводу данных.

while True: #Добавление пункта назначения

try:

runkt = input(str("Введите пункт назначения = "))

isCointainsNumbers = bool(re.search(r"\d", runkt))

if isCointainsNumbers:

print("Ошибка ввода. Попробуйте снова.")

continue

break

except:

print("Ошибка ввода. Попробуйте снова.")

while True:

try:

diapone = int(input("Введите диапазон от: "))

diapsec = int(input("Введите сдиапазон до: "))

break

except:

print("Ошибка ввода. Попробуйте снова.")

while True:

try:

colvo = int(input("Введите количество мест = "))

cur.execute("""SELECT 1 FROM rastoainie WHERE KolichestvoMest = '{}'; """.format(colvo))

one = cur.fetchone()[0]

cur.execute("""SELECT NomerReisa, VremiaOtpravlenia, PunktNaznachenia, TsenaPoezdki, Rastoainie, TsenaBileta, KolichestvoMest FROM napravlenie INNER JOIN rastoainie ON NomerReisa = NomerReisaa WHERE KolichestvoMest = '{}' """.format(colvo))

table = from_db_cursor(cur)

print(table)

break

except:

print("Ошибка ввода. Попробуйте снова.")

1.4 Формулы для решения задач

Для нахождения цены билета, используется формула подсчета цены билета: (расстояние/20) *10.

TsenaBileta = (rasstoanie/20)*10 # Добавление цены билета
2 Функциональная схема и блок-схема программы

Функциональная схема программы формирования списков «Транспортное агентство» представлена на рисунке 2.1.

Блок – схема программы формирования списков «Транспортное агентство» представлена на рисунке 2.2.