Создание программы "График движения поездов"

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

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

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

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

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

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

по дисциплине

«Технологии программирования»

Содержание

1. Задание

2. Описание применения

2.1 Запуск программы

2.2 Входные данные

2.3 Выходные данные

2.4 Сообщения программы

3. Описание программы

3.1 Метод решения задачи

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

3.3 Описание функций

3.3.1 main - главная функция

3.3.2 FindStation- вывод списка всех поездов, следующих до города Х, с указанием времени отправления

3.3.3 FindMinTime - вывод номера поезда с минимальным временем следования до города Х (с указанием времени отправления и прибытия)

3.3.4 GetMinutes - перевод времени в минуты с начала суток

3.3.5 AddTime - добавление ко времени минут

3.3.6 PutsCyr - Вывод на экран сообщения на кириллице

Литература

Приложение 1. Текст программы

Приложение 2. Пример входного файла trains.txt

Приложение 3. Результаты тестирования программы

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

1. Задание

Дан файл, содержащий информацию о поездах дальнего следования с Красноярского вокзала. Структура записи файла:

- номер поезда;

- станция назначения;

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

- время в пути.

Написать программу, выдающую

- список всех поездов, следующих до города Х, с указанием времени отправления;

- номер поезда с минимальным временем следования до города Х (с указанием времени отправления и прибытия).

2. Описание применения

2.1 Запуск программы

Запуск программы можно выполнить обычным способом из проводника MS Windows или из командной строки MS Windows, введя kursovaya.exe.

2.2 Входные данные

Входные данные программы находятся в файле “ trains.txt ”. Число строк в файле - произвольное. Каждая строка содержит номер поезда (5 символов), станцию назначения (20 символов), время отправления (6 символов), время в пути (6 символов). Пример строки файла:

«0001 Москва 11:23 03:23»

| 5 | 20 | 6 | 6 |

Пример входного файла приведен в приложении 2.

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

2.3 Выходные данные

Программа выводит на экран меню:

Выберите номер пункта меню:

1 - вывод списка всех поездов, следующих до города Х, с указанием времени отправления

2 - вывод номера поезда с минимальным временем следования до города Х (с указанием времени отправления и прибытия)

3 - выход

При выборе пункта 1 на экран выводится сообщение:

Введите станцию прибытия:

После ввода «Москва» выводится результат в виде:

№ п/п № поезда Время отправления

-----------------------------------

1. 0001 11:23

2. 0004 22:27

3. 0008 07:34

4. 0046 17:23

Для продолжения нажмите любую клавишу

Если поезда с заданной станцией прибытия отсутствуют, то на экран выдается следующее сообщение:

Нет поездов с заданной станцией прибытия

Примеры выходных данных для остальных пунктов меню см. в приложении 3.

2.4 Сообщения программы

Ниже приводится перечень возможных сообщений программы:

1. Файл trains.txt не найден

2. Выберите номер пункта меню:

3. Нужно вводить номер пункта от 1 до 3

4. Введите станцию прибытия:

5. Нет поездов с заданной станцией прибытия

6. Поезд с минимальным временем следования до станции:

3. Описание программы

3.1 Метод решения задачи

Задачу можно разбить на две отдельные подзадачи:

1. Поиск в файле записей поездов, следующих до города Х, и вывод списка этих поездов с указанием времени отправления.

2. Последовательный просмотр записей файла, поиск номера поезда с минимальным временем следования до города Х, вывод его на экран с указанием времени отправления и прибытия.

Каждая подзадача решается методом линейного поиска (последовательного просмотра элементов таблицы).

Чтобы пользователь мог выбирать, какие подзадачи решать и в каком порядке, программа выводит на экран меню (см. раздел 2.3).

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

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

Рис. 1 Функциональная структура программы

Программа состоит из пяти функций: главной функции main и пяти подпрограмм.

FindStation - список всех поездов, следующих до города Х, с указанием времени отправления

FindMinTime - номер поезда с минимальным временем следования до города Х (с указанием времени отправления и прибытия)

GetMinutes - перевод времемни в минуты с начала суток

AddTime - функция, которая добавляет ко времени минуты

PutsCyr - служебная процедура - вывод на экран кирилицы

3.3 Описание функций

3.3.1 main - главная функция

Заголовок функции:

int main ()

Значение функции:

0 - в случае успешного завершения;

1 - если входной файл не найден.

Рабочие данные:

f - указатель на структуру с информацией о входном файле;

n - номер пункта меню.

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

Рис. 1 Блок-схема функции main()

3.3.2 FindStation- вывод списка всех поездов, следующих до города Х, с указанием времени отправления

Заголовок функции: Структура записи файла:

void FindStation (FILE *f)

Структура записи файла f: номер поезда,

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

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

Рис.2 Схема функции вывода списка всех поездов, следующих до города Х, с указанием времени отправления.

3.3.3 FindMinTime - - вывод номера поезда с минимальным временем следования до города Х (с указанием времени отправления и прибытия)

Заголовок функции:

void FindMinTime(FILE *f)

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

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

Рис. 3 Блок-схема функции, которая выводит номер поезда с минимальным временем следования до города Х

3.3.4 GetMinutes - перевод времени в минуты с начала суток

Заголовок функции:

int GetMinutes (char str[DL_WAYTIME])

Входные данные:

str - время в пути.

Значение функции:

Количество минут, которое соответствует времени.

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

Рис. 4 Схема функции перевода времени в минуты

3.3.5 AddTime - добавить ко времени минуты

Заголовок функции:

char* AddTime (char str[DL_WAYTIME], int minutes)

Входные данные:

str - время, minutes - число минут.

Значение функции:

Новое значение времени

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

Рис. 5 Схема функции прибавления времени.

3.3.6 PutsCyr - Вывод на экран сообщения на кириллице

Заголовок процедуры:

void PutsCyr(char *str, int size)

Входные данные:

str - строка, size - размер строки.

Текст процедуры:

void PutsCyr(char *str, int size)

{

char buffer[512 + 1] = {0};

if (size > 512) size = 512;

CharToOemBuff(str, buffer, size); /*преобразование кодировки*/

puts(buffer);

}

Литература

1. Хохлов Д.Г. Основы технологии модульного программирования. Учебное пособие. Казань. Изд-во Казан. гос. техн. ун-та, 2005. 63 с.

2. Павловская Т.А. С/С++. Программирование на языке высокого уровня. СПб: Питер, 2004. 461 с.

3. Павловская Т.А., Щупак Ю.А. С/С++. Структурное программирование: Практикум. СПб: Питер, 2002. 240 с.

4. Хохлов Д.Г. Структуры данных и комбинаторные алгоритмы. Учебное пособие. - Казань: Изд-во Казан. гос. техн. ун-та, 2005. 102 с.

5. Хохлов Д.Г., Захарова З.Х. Практикум по структурам данных и комбинаторным алгоритмам: Учебное пособие.- Казань: Изд-во Казан. гос. техн. ун-та, 2005. 48 с.

6. Бикмурзина А.Р. Лабораторный практикум по программированию. Казань: Изд-во Казан. гос. техн. ун-та, 2000.

Приложение 1

Текст программы

#ifndef INTERFACES_INCLUDED /*для защиты от повторного включения заголовочного файла*/

#define INTERFACES_INCLUDED /*для защиты от повторного включения заголовочного файла*/

#include <stdio.h>

#include <conio.h>

#include <string.h>

#include <stdlib.h>

#include <windows.h>

#define DL_NUM 5 /* длина поля номера */

#define DL_STATION 20 /* длина поля станции*/

#define DL_START 6 /* длина поля времени отправления*/

#define DL_WAYTIME 6 /* длина поля времени в пути*/

struct train /* структура записи входного файла */

{ char num[DL_NUM]; /* номер поезда */

char station [DL_STATION]; /* станция */

char start [DL_START]; /* время отправления */

char waytime [DL_WAYTIME + 3]; /* время в пути + '\n' + '\r' + '\0'*/

};

/* прототипы функций */

void FindStation(FILE *f); /*функция, которая выводит список всех поездов,*/

/*следующих до города Х, с указанием времени отправления*/

void FindMinTime(FILE *f); /*функция, которая выводит номер поезда с минимальным временем */

/*следования до города Х (с указанием времени отправления и прибытия)*/

int GetMinutes (char str[DL_WAYTIME]); /*перевести время в минуты с начала суток*/

char* AddTime (char str[DL_WAYTIME], int minutes); /*добавить ко времени минуты*/

void PutsCyr(char *str, int size = 512); /*служебная процедура-вывод на экран кирилицы*/

#endif // INTERFACES_INCLUDED

#include "interfaces.h"

/*вспомогательная функция вывода на экран кириллицы*/

void PutsCyr(char *str, int size)

{

char buffer[512 + 1] = {0};

if (size > 512) size = 512;

CharToOemBuff(str, buffer, size);

puts(buffer);

}

/*----------------------*/

/* главная функция */

/*----------------------*/

int main()

{

FILE *f; /* ссылка на входной файл */

char n; /* номер пункта меню */

clrscr(); /*очистка экрана*/

f = fopen("trains.txt", "r");

if (f == NULL) /*не удалось прочитать файл*/

{

PutsCyr ("Файл trains.txt не найден");

getch();

return 1;

}

do

{

clrscr(); /*очистка экрана*/

PutsCyr ("\n===========================================");

PutsCyr ("Выберите номер пункта меню:");

PutsCyr ("1 - вывод списка всех поездов, следующих до города Х, с указанием времени отправления");

PutsCyr ("2 - вывод номер поезда с минимальным временем следования до города Х (с указанием времени отправления и прибытия)");

PutsCyr ("3 - выход");

PutsCyr ("------------------------------------------------------");

n = getche();

switch(n)

{

case '1': FindStation(f); break;

case '2': FindMinTime(f); break;

case '3': break;

default: PutsCyr("\nНужно вводить номер пункта от 1 до 3");

}

if (n != '3')

{

PutsCyr("\nДля продолжения нажмите любую клавишу");

getch();

}

}

while (n != '3'); /*3 - выход*/

fclose(f);

return 0;

}

#include "interfaces.h"

void FindStation(FILE *f) /*функция, которая выводит список всех поездов,*/

/*следующих до города Х, с указанием времени отправления*/

{

train tz; /* текущая запись файла */

char zstation[DL_STATION]; /* заданная станция */

int n = 0; /* порядковый поезда в выводимом списке*/

PutsCyr("\nВведите станцию прибытия:");

gets (zstation);

OemToChar(zstation, zstation);

int length = strlen(zstation); /*длина строки заданой станции*/

rewind(f); /*перейти в начало файла*/

while (fgets((char *) &tz,sizeof(train),f) != NULL) /*пока не достигнут конец файла*/

{

if (strncmp(tz.station, zstation, length) == 0) /*если найден поезд с заданной станцией прибытия*/

{

if (n == 0)

{

PutsCyr("№ п/п № поезда Время отправления"); /*вывести шапку*/

puts("-----------------------------------");

}

tz.num[DL_NUM - 1] = '\0';

tz.start[DL_START - 1] = '\0';

printf ("%d. %s %s\n", ++n, tz.num, tz.start);

}

}

if (n == 0) PutsCyr ("\nНет поездов с заданной станцией прибытия");

}

#include "interfaces.h"

void FindMinTime(FILE *f) /*функция, которая выводит номер поезда с минимальным временем */

/*следования до города Х (с указанием времени отправления и прибытия)*/

{

train tz; /* текущая запись файла */

char zstation[DL_STATION]; /* заданная станция */

int n = 0; /* порядковый номер поезда с минимальным временем*/

int mintime = 88888; /*минимальное время следования*/

int curtime = 0; /*текущее время следования*/

train min_tz; /*запись в файле, которая соответствует минимальному времени*/

PutsCyr("\nВведите станцию прибытия:");

gets (zstation);

OemToChar(zstation, zstation);

int length = strlen(zstation); /*длина строки заданой станции*/

rewind(f); /*перейти в начало файла*/

while (fgets((char *)&tz, sizeof(train), f) != NULL) /*пока не достигнут конец файла*/

if (strncmp(tz.station, zstation, length) == 0) /*если найден поезд с заданной станцией прибытия*/

{

curtime = GetMinutes(tz.waytime);

if (curtime < mintime)

{

mintime = curtime;

strncpy((char *) &min_tz, ((char *) &tz), sizeof(train));

}

n++;

}

if (n == 0) PutsCyr ("\nНет поездов с заданной станцией прибытия");

else

{

min_tz.num[DL_NUM - 1] = '\0';

min_tz.start[DL_START - 1] = '\0';

char buffer[512] = {'\0'};

char timebuffer[DL_WAYTIME] = {'\0'};

strncpy(timebuffer, min_tz.start, DL_WAYTIME - 1);

sprintf(buffer,

"Поезд с минимальным временем следования до станции %s: \nномер %s, время отправления: %s, время прибытия: %s",

zstation, min_tz.num, min_tz.start, AddTime(timebuffer, mintime));

PutsCyr(buffer);

}

}

#include "interfaces.h"

int GetMinutes (char str[DL_WAYTIME]) /*перевести время в минуты с начала суток*/

{

int minutes = 0; /*переводим минуты в числовое значение*/

char xx[3] = {'\0'};

xx[0] = str[3];

xx[1] = str[4];

minutes += atoi (xx);

xx[0] = str[0]; /*добавляем часы в виде минут*/

xx[1] = str[1];

minutes += 60 * atoi (xx);

return minutes;

}

#include "interfaces.h"

char* AddTime (char str[DL_WAYTIME], int minutes) /*добавить ко времени минуты*/

{

minutes += GetMinutes(str);/*добавить ко времени минуты*/

minutes = minutes % (24 * 60); /*вычитаем целое число суток*/

char xx[3];

itoa(minutes / 60, xx, 10); /*получаем количество часов*/

str[0] = xx[0];

str[1] = xx[1];

itoa(minutes % 60, xx, 10); /*получаем количество часов*/

str[3] = xx[0];

str[4] = xx[1];

return str;

}

Приложение 2

Пример входного файла trains.txt

0001 Москва 11:23 03:23

0002 Сочи 09:53 07:23

0004 Москва 22:27 04:03

0008 Москва 07:34 03:12

0025 Сочи 14:29 08:53

0046 Москва 17:23 03:55

Приложение 3

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

Тест 1. Входного файла нет в текущем каталоге.

Результат:

Файл trains.txt не найден

В следующих тестах используется файл из приложения 2.

Тест 2.

======================================================

Выберите номер пункта меню:

1 - вывод списка всех поездов, следующих до города Х, с указанием времени отправления

2 - вывод номер поезда с минимальным временем следования до города Х (с указанием времени отправления и прибытия)

3 - выход

1

Введите станцию прибытия:

Москва

№ п/п № поезда Время отправления

-----------------------------------

1. 0001 11:23

2. 0004 22:27

3. 0008 07:34

4. 0046 17:23

Для продолжения нажмите любую клавишу

Тест 3.

=====================================================

Выберите номер пункта меню:

1 - вывод списка всех поездов, следующих до города Х, с указанием времени отправления

2 - вывод номер поезда с минимальным временем следования до города Х (с указанием времени отправления и прибытия)

3 - выход

2

Введите станцию прибытия:

Москва

Поезд с минимальным временем следования до станции Москва:

номер 0008, время отправления: 07:34, время прибытия: 10:46

Для продолжения нажмите любую клавишу

Тест 4. Неверно выбран номер пункта меню

=====================================================

Выберите номер пункта меню:

1 - вывод списка всех поездов, следующих до города Х, с указанием времени отправления

2 - вывод номер поезда с минимальным временем следования до города Х (с указанием времени отправления и прибытия)

3 - выход

6

Нужно вводить номер пункта от 1 до 3

Для продолжения нажмите любую клавишу

======================================================

Выберите номер пункта меню:

1 - вывод списка всех поездов, следующих до города Х, с указанием времени отправления

2 - вывод номер поезда с минимальным временем следования до города Х (с указанием времени отправления и прибытия)

3 - выход

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

...

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

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

    курсовая работа [2,9 M], добавлен 18.03.2011

  • Разработка программного продукта "Железная дорога". Вид и классификация инструментальных средств, используемых для создания прикладного ПО. Организация взаимодействия клиентской программы с базой данных; реализация системы контроля движения поездов.

    курсовая работа [895,0 K], добавлен 11.11.2010

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

    контрольная работа [21,7 K], добавлен 21.07.2012

  • Написание программы для работы со списком документов, разработка функционала. Требования к аппаратному и программному обеспечению. Описание интерфейса пользователя. Структура программы и описание данных. Процедура тестирования и его результаты.

    курсовая работа [1,5 M], добавлен 26.08.2012

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

    курсовая работа [40,7 K], добавлен 18.04.2012

  • Реализация информационно-справочной системы расписания поездов в Microsoft Visual Studio 2008 на языке C#. Методика разработки и основное содержание данной программы, алгоритмы ее реализации. Требования к программе и оценка ее эффективности, листинг.

    курсовая работа [5,0 M], добавлен 19.08.2012

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

    курсовая работа [1,9 M], добавлен 25.10.2012

  • Написание программы, исходя из конкретных данных. Создание двунаправленного линейного списка. Main - главная программа, содержащая меню. Занесение данных в память списка. Результирующий файл. Значения всех числовых данных из диапазона целого типа данных.

    курсовая работа [2,3 M], добавлен 22.12.2010

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

    лабораторная работа [858,0 K], добавлен 23.11.2014

  • Составление программы для вычисления по двум формулам одной и той же переменной "X". Создание программы, которая по введенному значению аргумента вычислят значение функции, заданной в виде графика. Вывод на экран значения функции, заданной графически.

    курсовая работа [4,9 M], добавлен 14.03.2014

  • Построение программы, создающей ведомость для каждой группы студентов по всем дисциплинам с указанием формы контроля (зачет или экзамен). Упорядочивание списка студентов по алфавиту. Описание функций и переменных. Алгоритм, блок-схема и текст программы.

    реферат [281,3 K], добавлен 17.10.2013

  • Правила запуска программы Компас-График 5.11. Алгоритм создания новой папки и завершения сеанса работы с программой. Построение линий, прямоугольников, правильных шестиугольников, контуров деталей с указанием размеров и отрезком с заданием типа линии.

    курсовая работа [1,2 M], добавлен 13.10.2010

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

    курсовая работа [1,5 M], добавлен 21.11.2013

  • Проектирование программы "Будильник" с использованием программной среды, позволяющей осуществлять получение и обработку значений времени и воспроизведение звукового файла. Разработка технического и эскизного проектов программы. Спецификация программы.

    курсовая работа [84,2 K], добавлен 15.04.2013

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

    курсовая работа [4,1 M], добавлен 07.04.2012

  • Разработка и тестирование программы класса Точка. Спецификация программы. Сценарий диалога с пользователем. Разработка структур данных и алгоритмов. Таблица параметров функций программы. Текст программы на языке C++. Особенности тестирования программы.

    лабораторная работа [43,1 K], добавлен 21.07.2012

  • Рассмотрение основ работы в Microsoft Visual Studio 2010 с языком программирования С#. Реализация программы обработки данных авиапассажиров. Выбор метода ввода данных из текстового файла. Создание фильтра для обработки списка по определенным критериям.

    курсовая работа [1,4 M], добавлен 17.01.2016

  • Краткая информация об объектно-ориентированном языке программирования Delphi. Создание базы данных в среде Delphi с возможностью обновления информации по учету расписания поездов с целью ознакомления и подборки необходимых для человека маршрутов.

    курсовая работа [185,8 K], добавлен 06.01.2013

  • Общие сведения о предприятии "Гранит-ВТ". Основной вид деятельности - производство вычислительных модулей общего назначения. Разработка программы, предназначеной для автоматизированной проверки версий всех компонентов изделия. Алгоритм работы программы.

    отчет по практике [33,8 K], добавлен 23.12.2009

  • Разработка программы тестирования студентов по MS PowerPoint с кодом на языке Delphi. Создание алгоритма для решения функциональных требований задачи. Описание переменных, вспомогательных процедур, входных и выходных данных для реализации программы.

    курсовая работа [1,5 M], добавлен 21.09.2010

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