|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Программирование задачиВ программе были использованы функции, хранящиеся в заголовочных файлах. Список заголовочных файлов из стандартной библиотеки 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(); } Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.042 сек.) |