Разработка программы "Сведения о местах на авиарейсы из Махачкалы в Москву"
Сведения о свободных, проданных, бронированных местах. Редактирование данных об авиарейсах. Пользовательский контроль над управлением свободной памятью. Сокращение объема исходного кода, улучшение его читаемости. Функции, хранящиеся в заголовочных файлах.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 07.06.2014 |
Размер файла | 777,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
Введение
1. Анализ задания
2. Описание программы
3. Тестирование
Заключение
Литература
Приложение
Введение
Программирование - это процесс составления определенной последовательности действий для электронной вычислительной машины. Само слово «программирование» прочно вошло в нашу повседневную жизнь, ведь программное обеспечение активно используется в различных видах техники, существенно облегчая задачи, стоящие перед обыкновенными пользователями.
Язык программирования - способ точного формулирования задачи в процессе подготовки ее к решению. Языки позволяют понимать программирование как процесс перевода задания для компьютера, выраженного определенным языком, на другой язык - машинный. Одним из наиболее популярных языков является язык программирования высокого уровня C++.
C++ - это попытка решения разработчиками языка С задач объектно-ориентированного программирования (Object Oriented Programming, OOP). Построенный на твердом фундаменте С, С++ помимо ООР поддерживает множество других полезных инструментов, не жертвуя при этом ни мощью, ни элегантностью, ни гибкостью С. С++ уже стал универсальным языком для программистов всего мира.
C++ был разработан сотрудником научно-исследовательского центра AT&T Bell Laboratories (Нью-Джерси, США) Бьярном Страуструпом в 1979 году.
В 1983 г. произошло переименование языка из Си с классами в Си++ по соображениям маркетинга. Кроме того, в него были добавлены новые возможности, такие как:
- виртуальные функции;
- перегрузка функций и операторов;
- ссылки;
- константы;
- пользовательский контроль над управлением свободной памятью;
- улучшенная проверка типов и новый стиль комментариев(//);
- абстрактные классы;
- статические функции-члены, функции-константы и защищённые члены;
- шаблоны;
- исключения;
- пространства имён;
- новые способы приведения типов и булевский тип.
Стандартная библиотека Си++ также развивалась вместе с ним. Первыми добавлениями к стандартной библиотеке Си++ стали:
- потоки ввода/вывода, обеспечивающие средства для замены традиционных функций Си printf и scanf;
- включение Стандартной библиотеки шаблонов.
Главной целью данной курсовой работы является анализ и разработка программы “электронного справочника” для доступа к информации об авиарейсах. В программе необходимо реализовать меню для более удобной навигации по необходимым функциям, которые предоставляет программа.
В программе используются функции, не только для удобства пользователя, но и для сокращения объема исходного кода. Результатом работы функций будет вывод необходимой информации.
1. Анализ задачи
Исходные данные
В качестве исходных данных в данной программе берется база данных.
Сведения записываются в файлы, которые имеют вид DAYNN (где NN число на которой хранится информация).
База данных организована следующим образом:
Имеется 10 файлов, в каждом из которых имеется информация в виде матрицы:
0 - место свободно, 1 - место занято, 2 - место забронировано;
Как исходные данные могут рассматриваться числа, которые пользователь вводит для того чтобы просмотреть сведения на данное число.
Выходные данные
Результатом выполнения программы является вывод сообщения - информации о свободных, забронированных местах и т.д., в зависимости от выбранного пункта меню.
При запуске программы в первую очередь будет выводиться меню. Наименования пунктов меню записываются в массивы символов, на которые ссылаются указатели.
Для сокращения объема исходного кода и для улучшения его читаемости используем функции. Они позволяют вынести часто повторяющиеся выражения в отдельный блок и затем, по мере надобности, обращаться к нему. В программе будут созданы 12 функций:
· главная функция, в которой осуществляется вызов других функций.
· функция, с помощью которой осуществляется построение графического меню и переходы между пунктами данного меню.
Функции передаются два параметра. Указатель на пункты меню и количество этих пунктов. Это позволяет быть данной функции более универсальной.
· функция позволяющая выводить информацию о свободных местах, и позволяющая увидеть какие именно места свободны.
· функция позволяющая выводить информацию о проданных местах, и позволяющая увидеть какие именно места проданы.
· функция позволяющая выводить информацию о забронированных местах, и позволяющая увидеть какие именно места забронированы.
· функция позволяющая выводить информацию о проданных местах на декаду, и позволяющая увидеть какие именно места проданы
· функция позволяющая выводить информацию о забронированных местах на декаду и позволяющая увидеть какие именно места забронированы.
· функция внутри которой происходит массовая работа с файлами, для извлечения требуемой информации.
2. Программирование задачи
данные редактирование память код
В программе были использованы функции, хранящиеся в заголовочных файлах. Список заголовочных файлов из стандартной библиотеки C++, используемых в программе (в описании приведены функции, использующиеся в данной программе):
iostream.h - в ней реализована поддержка для файлового ввода/вывода данных встроенных типов. Операции ввода/вывода выполняются с помощью классов istream (потоковый ввод) и ostream (потоковый вывод).
Третий класс, iostream, является производным от них и поддерживает двунаправленный ввод/вывод.
· cin;
· 2) cout;
Вывод осуществляется, как правило, с помощью перегруженного оператора сдвига влево (<<), а ввод - с помощью оператора сдвига вправо (>>).
· stdlib.h - заголовочный файл стандартной библиотеки языка С, который содержит в себе функции, занимающиеся выделением памяти, контроль процесса выполнения программы, преобразования типов и другие.
· malloc();
· conio.h - объявляет несколько библиотечных функций для работы с «консольным вводом/выводом» программы, создает текстовый интерфейс пользователя.
· clrscr();
· getch() ;
· textcolor() ;
· textattr();
· gotoxy();
· fstream.h - заголовочный файл , необходимый для работы с файлами (запись, чтение, добавление)
· open();
· close();
Перейдем к описанию программы :
char *dano[5]={"Svob. mesta na uk-e chislo",
"Prod. mesta na uk-e chislo",
"Bron. na ukaz-e chislo",
"Prod. mesta na dekadu",
"Bron na decadu"
};
//задаём элементы пункта меню в одномерном массиве
int a[10][25][6]; //задаём трехмерный массив для хранения данных из файлов
int menu(int n); //функциия для текстового меню
void sinkh(); //ввод данных из файла в массив
void sv_uk(); //свободные места на заданное число
void pr_uk(); //проданные места на заданное число
void br_uk(); //забронирование места на заданное число
void pr_dc(); //проданные места на декаду
void br_dc(); //забронированные места на декаду
1) Функция void main()
while(1)
{
window(1,1,80,25);
textattr(16*7+0);
clrscr(); // Создается окно, размером 80 на 25. Окно закрашивается светло-серым цветом, текст черным, и вызывается функция clrscr(), которая выполняет само закрашивание.
window(20,8,60,17);
textattr(16*15+2);
clrscr();
sinkh();
gotoxy(20,2);
for(int i=0;i<5;i++)
{
gotoxy(8,i+4);
cout<<dano[i];
} // Цикл вывода пунктов главного меню
window(1,1,80,25);
switch (menu(5)) //Выбор пункта меню
{
case 1:sv_uk();break;
case 2:pr_uk();break;
case 3:br_uk();break;
case 4:pr_dc();break;
case 5:br_dc();break;
}
}
2) Функция int menu(int n)
gotoxy(3,y); //прописываются на экран пункты меню
window(27,y+10,50,y+10);
textattr(16*15+4);
clrscr();
cout<<dano[0];
do
{
c=getch();
k=y;
window(27,k+10,50,k+10);
textattr(16*15+2);
clrscr();
cout<<dano[k-1];
switch(c)
{
case 'w':y--;break; ; // переход по пунктам меню
case 's':y++;break;
case 13:return y;
case 27:exit(0);
}
if(y>n) y=1; //с помощью данных условных операторов
if(y<1) y=n; // осуществляется переход от последнего к первому
}while(c!=27); // и наоборот
3) Функция void sv_uk()
int i,j,n;
cout<<"Vvedite chislo\nn=";
cin>>n; // вводится требуемое число
for(i=0;i<25;i++)
for(j=0;j<6;j++)
if (a[n][i][j]==0) // проводим проверку свободно ли место
cout<<i+1<<"-"<<j+1<<"|"; // вывод на экран свободных мест
4) Функция void pr_uk()
int i,j,n;
cout<<"Vvedite chislo\nn=";
cin>>n; // вводится требуемое число
for(i=0;i<25;i++)
for(j=0;j<6;j++)
if (a[n][i][j]==1) // проводим проверку продано ли место
cout<<i+1<<" - "<<j+1<<"|"; // вывод на экран проданных мест
5) Функция void br_uk()
cout<<"Vvedite chislo\nn=";
cin>>n; // вводится требуемое число
for(i=0;i<25;i++)
for(j=0;j<6;j++)
if (a[n][i][j]==2) // проводим проверку забронировано ли место
cout<<i+1<<" - "<<j+1<<"|"; // вывод на экран забронированных мест
6) Функция void pr_dc()
cout<<"Prodannie mesta na dekadu(ryad-mesto)\n";
for(n=0;n<10;n++){
cout<<"\n"<<n+1<<" den:";
for(i=0;i<25;i++)
for(j=0;j<6;j++)
if (a[n][i][j]==1) // проводим проверку продано ли место на декаду
cout<<i+1<<" - "<<j+1<<"|";} // вывод на экран проданых мест на декаду
7) Функция void br_dc()
cout<<"Zabronirovanie mesta na dekadu(ryad-mesto)\n";
for(n=0;n<10;n++){
cout<<"\n"<<n+1<<" den:";
for(i=0;i<25;i++)
for(j=0;j<6;j++)
if (a[n][i][j]==2) // проводим проверку забронировано ли место на декаду
cout<<i+1<<" - "<<j+1<<"|"; } // вывод на экран забронированных мест на декаду
8) Функция void sinkh()
ifstream f; // файловая переменная
f.open("DAY01.txt", ios::in); //открываем файл для чтения
for(i=0;i<25;i++)
for(j=0;j<6;j++)
f>>a[0][i][j]; //записываем данные из файла в массив
f.close(); //закрываем файл
…………
………………..
«Полный текст программы приведен в приложении»
3. Тестирование программы
При запуске программы появляется меню из 5 пунктов, выбираем первый пункт (рис. 1).
Рис.1 Главное меню (выбор 1-го пункта)
После выбора первого пункта откроется окно где требуется ввести число на которое мы хотим получить информацию, введём число 2 (рис.2)
Рис.2 Ввод числа для проверки на свободные места
После чего мы получим информацию о свободных местах на второе число, двоеточие разделяет между собой ячейки с информацией на свободные места, где первым значением в ней является ряд, а вторым значением выступает место которое на данный момент является свободным. (рис. 3)
Рис.3 Свободные места на 2 день (ряд-место)
Теперь будем искать проданные места на указанное число (рис. 4)
Рис.4 Главное меню (выбор 2-го пункта)
Вводим число 4 (рис.5)
Рис.5 Ввод числа для проверки на проданные места
После чего мы получим информацию о проданных местах на четвёртое число. (рис .6)
Рис.6 Проданные места на 4 день (ряд-место)
Аналогичным способом можно получить информацию о бронированных местах на указанное число (рис.7)
Рис.7 Главное меню (выбор 3-го пункта)
Вводим число 5 (рис.8)
Рис.8 Ввод числа для проверки на забронированные места
После чего мы получим информацию о забронированных местах на пятое число, двоеточие разделяет между собой ячейки с информацией на свободные места, где первым значением в ней является ряд, а вторым значением выступает место которое на данный момент является забронированным (рис .9)
Рис. 9 Забронированные места на 5 день (ряд-место)
Как видно из предыдущих примеров, получать информацию с другими критериями можно аналогичным способом.
Просмотрим информацию о проданных местах на декаду, выберем 4 пункт (рис.10)
Рис.10 Главное меню (выбор 4-го пункта)
После выбора 4-го пункта мы получим информацию о проданных местах на декаду. (рис .11)
Рис.11 Проданные места на декаду с 1 по 10 число (ряд-место)
А сейчас просмотрим информацию о забронированных местах на декаду, выберем 5 пункт (рис.12)
Рис.12 Главное меню (выбор 5-го пункта)
После выбора 5 пункта мы получаем информацию о всех забронированных местах на декаду с 1 по 10 число (рис.13)
Рис.13 Вывод всех забронированных мест на декаду с 1 по 10 число
Давайте посмотрим как выглядит одна из баз данных (DAY01) (рис.14)
Рис.14 База данных (DAY01)
Как видно на рисунке (рис.13) база состоит из набора чисел, причем структура их такова: 25 строк, 6 столбцов, а самих файлов 10.
Заключение
Целью курсовой работы было создание работоспособной программы, предназначенной для быстрого и удобного получения информации о местах на авиарейсы из Махачкалы в Москву.
В результате работы была разработана программа, удовлетворяющая всем требованиям задания. Программа позволяет получить сведения о свободных, проданных, бронированных местах, а также о проданных и бронированных местах на декаду.
В ходе разработки программы удалось создать простое меню, которое упрощает пользование программой.
Разработка самой программы особых сложностей при конструировании не доставила.
Программу можно усовершенствовать, добавив возможность редактировать данные об авиарейсах. Можно создать возможность просматривать информацию в более удобном виде.
Литература
1. Страуструп Б. Программирование: принципы и практика использования C++, исправленное издание -- М.: Вильямс, 2011. -- 1248 с.
2. Шилдт Г. Полный справочник по C++ - 4-е изд. - М.: Вильямс, 2011. -- 800 с.
3. http://ru.wikipedia.org/wiki/Программирование
4. http://www.codenet.ru/progr/cpp/spr.php
5. Методические указания к выполнению лабораторных работ по дисциплине «Программирование», для студентов 2 курса направления подготовки бакалавров 231000.62 - «Программная инженерия», профиль «Разработка программно-информационных систем»
6. Конспект лекций по дисциплине «Программирование»
Приложение
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <fstream.h>
char *dano[5]={"Svob. mesta na uk-e chislo",
"Prod. mesta na uk-e chislo",
"Bron na ukaz-e chislo",
"Prod. mesta na dekadu",
"Bron na decadu"
}; /*элементы пункта меню*/
int a[10][25][6]; /*трехмерный массив для хранения данных из файлов*/
int menu(int n); /*функциия для текстового меню*/
void sinkh(); /*ввод данных из файла в массив*/
void sv_uk(); /*свободные места на заданное число*/
void pr_uk(); /*проданные места на заданное число*/
void br_uk(); /*забронирование места на заданное число*/
void pr_dc(); /*проданные места на декаду*/
void br_dc(); /*забронированные места на декаду*/
void main() //основное меню
{
while(1)
{
window(1,1,80,25);
textattr(16*7+0);
clrscr();
window(20,8,60,17);
textattr(16*15+2);
clrscr();
sinkh();
gotoxy(20,2);
for(int i=0;i<5;i++)
{
gotoxy(8,i+4);
cout<<dano[i];
}
window(1,1,80,25);
switch (menu(5)) /*выбор нужной функции*/
{
case 1:sv_uk();break;
case 2:pr_uk();break;
case 3:br_uk();break;
case 4:pr_dc();break;
case 5:br_dc();break;
}
}
}
int menu(int n)
{
int y=1,k;
char c;
gotoxy(3,y);
window(27,y+10,50,y+10);
textattr(16*15+4);
clrscr();
cout<<dano[0];
do
{
c=getch();
k=y;
window(27,k+10,50,k+10);
textattr(16*15+2);
clrscr();
cout<<dano[k-1];
switch(c)
{
case 'w':y--;break;
case 's':y++;break;
case 13:return y;
case 27:exit(0);
}
if(y>n) y=1;
if(y<1) y=n;
window(27,y+10,50,y+10);
textattr(16*15+4);
clrscr();
cout<<dano[y-1];
}while(c!=27);
return c;
}
void sv_uk()
{
int i,j,n;
window(1,1,80,25);
clrscr();
cout<<"Vvedite chislo\nn=";
cin>>n;
cout<<"Svobodnie mesta na "<<n<<"-i den (ryad-mesto)\n";n--;
for(i=0;i<25;i++)
for(j=0;j<6;j++)
if (a[n][i][j]==0) cout<<i+1<<"-"<<j+1<<"|";
getch();
}
void pr_uk()
{
int i,j,n;
window(1,1,80,25);
clrscr();
cout<<"Vvedite chislo\nn=";
cin>>n;
cout<<"Prodanie mesta na "<<n<<"-i den (ryad-mesto)\n";n--;
for(i=0;i<25;i++)
for(j=0;j<6;j++)
if (a[n][i][j]==1) cout<<i+1<<" - "<<j+1<<"|";
getch();
}
void br_uk()
{
int i,j,n;
window(1,1,80,25);
clrscr();
cout<<"Vvedite chislo\nn=";
cin>>n;
cout<<"Zabronirovanie mesta na "<<n<<"-i den (ryad-mesto)\n";n--;
for(i=0;i<25;i++)
for(j=0;j<6;j++)
if (a[n][i][j]==2) cout<<i+1<<" - "<<j+1<<"|";
getch();
}
void pr_dc()
{
window(1,1,80,25);
clrscr();
int i,j,n;
window(1,1,80,25);
clrscr();
cout<<"Prodannie mesta na dekadu(ryad-mesto)\n";
for(n=0;n<10;n++){
cout<<"\n"<<n+1<<" den:";
for(i=0;i<25;i++)
for(j=0;j<6;j++)
if (a[n][i][j]==1) cout<<i+1<<" - "<<j+1<<"|";}
getch();
}
void br_dc()
{
window(1,1,80,25);
clrscr();
int i,j,n;
window(1,1,80,25);
clrscr();
cout<<"Zabronirovanie mesta na dekadu(ryad-mesto)\n";
for(n=0;n<10;n++){
cout<<"\n"<<n+1<<" den:";
for(i=0;i<25;i++)
for(j=0;j<6;j++)
if (a[n][i][j]==2) cout<<i+1<<" - "<<j+1<<"|"; }
getch();
}
void sinkh()
{
int i,j;
ifstream f;
f.open("DAY01.txt",ios::in);
for(i=0;i<25;i++)
for(j=0;j<6;j++)
f>>a[0][i][j];
f.close();
f.open("DAY02.txt",ios::in);
for(i=0;i<25;i++)
for(j=0;j<6;j++)
f>>a[1][i][j];
f.close();
f.open("DAY03.txt",ios::in);
for(i=0;i<25;i++)
for(j=0;j<6;j++)
f>>a[2][i][j];
f.close();
f.open("DAY04.txt",ios::in);
for(i=0;i<25;i++)
for(j=0;j<6;j++)
f>>a[3][i][j];
f.close();
f.open("DAY05.txt",ios::in);
for(i=0;i<25;i++)
for(j=0;j<6;j++)
f>>a[4][i][j];
f.close();
f.open("DAY06.txt",ios::in);
for(i=0;i<25;i++)
for(j=0;j<6;j++)
f>>a[5][i][j];
f.close();
f.open("DAY07.txt",ios::in);
for(i=0;i<25;i++)
for(j=0;j<6;j++)
f>>a[6][i][j];
f.close();
f.open("DAY08.txt",ios::in);
for(i=0;i<25;i++)
for(j=0;j<6;j++)
f>>a[7][i][j];
f.close();
f.open("DAY09.txt",ios::in);
for(i=0;i<25;i++)
for(j=0;j<6;j++)
f>>a[8][i][j];
f.close();
f.open("DAY10.txt",ios::in);
for(i=0;i<25;i++)
for(j=0;j<6;j++)
f>>a[9][i][j];
f.close();
}
Размещено на Allbest.ru
Подобные документы
Пользовательский интерфейс, функциональное, структурное, алгоритмическое и архитектурное обеспечение программы. Разработка руководства пользователя и методики интеграционных и модульных тестов. Анализ исходного кода приложения, его производительности.
дипломная работа [464,5 K], добавлен 17.06.2013Особенности разработки программы для ведения автоматизированной базы данных, организованной на информационных файлах. Тестовые наборы, проектирование кода программы. Принципы проведения испытаний и принципы проверки алгоритма на работоспособность.
лабораторная работа [1,6 M], добавлен 23.11.2014Разработка программы в среде Delphi, позволяющей оперативно вести учет наличия свободных мест на авиарейсах, отправляющихся из города Саранска. Описание алгоритма решения задачи и его машинная реализация. Разработка диалогового приложения пользователя.
курсовая работа [1,1 M], добавлен 22.03.2014Создание программы для хранения и обработки данных о съеме/сдаче жилья. Написание программы на языке C++ с использованием библиотеки Qt; использование исходного кода для создания приложения под Windows, Linux, Mac OS X без дополнительных изменений кода.
курсовая работа [60,4 K], добавлен 07.03.2013Перечень основных требований к базе данных "Сведения о простоях". Процесс создания таблиц и связей между ними. Результаты выполнения запросов и форма выведения отчетов. Разработка интерфейса программы. Руководство для администратора и пользователя.
курсовая работа [3,7 M], добавлен 11.11.2012Реализация программы, разработанной в среде Turbo C++. Обработка динамической структуры данных, содержащей сведения об авторах книг. Моделирование работы со структурой как с базой данных. Метод сортировки и описание работы пользовательских подпрограмм.
курсовая работа [124,3 K], добавлен 23.12.2010Разработка и создание информационной базы данных в СУБД MS Access, которая будет содержать: сведения о гостинице; сведения о составе номеров в гостинице и обстановке в них; регистрацию покупателей в гостинице; ведение учета покупателей и данных о них.
курсовая работа [586,6 K], добавлен 06.05.2010Процесс создания программы, разработка проекта программы и программирование. Лексическая обработка, синтаксический анализ, поэтапная генерация кода, использование библиотечного файла и кода. Стандартные функции библиотечного кода, математические ошибки.
курсовая работа [26,4 K], добавлен 01.12.2009Проектирование и описание логической структуры программы для работы электронного магазина в среде Microsoft Visual C++. Инструкция, описывающая сведения для запуска программы. Обновление данных о доступных товарах. Поиск по каталогу доступных товаров.
курсовая работа [27,6 M], добавлен 27.04.2012Общие сведения об исследуемой организации, направления ее хозяйственной деятельности, характеристика используемой вычислительной техники и программного обеспечения. Разработка пользовательского интерфейса, шаблонов, отладка и тестирование программы.
отчет по практике [159,3 K], добавлен 11.04.2016