Варианты индивидуальных заданий



1. Самолеты          
  Наименование Фамилия Год Количество Грузо-
  типа конструктора выпуска кресел подъёмность, т
           
2. Расчет движения          
  Наименование Тип Количество Налет, Пассажирооборот,
  воздушной линии самолета рейсов тыс.км чел. км
           
3. Перевозки          
  Тип Номер Количество Налет, Налет
  самолета борта рейсов час в тыс.км
           
4. Расписание          
  Номер Наименование Тип Стоимость Протяженность
  рейса рейса самолета билета линии
           
5 Сооружения аэропорта          
  Наименование Площадь Этажность Год Стоимость,
        сооружения млн. руб.
           
6 Ремонт аэродромных сооружений          
  Наименование Шифр Вид Стоимость Наименование
      ремонта ремонта подрядчика
           
7 Кассы авиабилетов          
  Номер ФИО Количество Суммарная Дата
  кассы кассира проданных выручка продажи
      билетов    
           
8 Характеристики ПК          
  Тип Тактовая Емкость Емкость Тип
  процессора частота ОП, Мбайт ЖМД, Мбайт монитора
           
9 Города          
  Наименование Количество Площадь, Год Количество
    жителей кв.км основания школ  
10 Мосты          
  Наименование Высота Ширина Количество опор Протяженность
           
11 Программные продукты        
  Наименование Фирма Стоимость Объем Количество
           
12 Музеи          
  Наименование Назначение Адрес Время работы Стоимость билета
           
13 Поликлиника          
  ФИО врача Специализация № кабинета Начало приёма Окончание приёма
           
14 Квартиры          
  Адрес Площадь, Колич. Стоимость Этаж
    кв.м комнат 1 кв.м  
           
15 Кинотеатры          
  Наименование Стоимость Время Адрес Количество
    билета сеансов мест мест
           
16 Магазин          
  Наименование товара Фирма изготовитель Сорт Цена Размер партии
           
17 Театр          
  Наименование спектакля Дата Время Место Цена билета
           
18 Железная дорога        
  Пункт назначения Поезд Вагон Место Стоимость проезда
           
19 Библиотека          
  Название книги Автор Издание Год издания Количество экземпляров
           
20 Автоинспекция          
  Марка машины Цвет Номер Год выпуска Владелец
           
21 Метрополитен          
  Номер линии Название линии Число станций Время стоянки Время разворота

 


Пример программы

 

//Программа работы с базой данных "Экскурсии"

//Создание базы

//Добавление новых записей

//Просмотр базы

//Поиск по названию страны с созданием файла выборки

//Сортировка по наименованию экскурсии в алфавитном порядке

//Сортировка в порядке возрастания стоимости путевки

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <iostream.h>;

#include <locale.h>

#define FNAME_I "D:\\bd1.dat" //имя файла с исходной базой

#define FNAME_R "D:\\bd2.dat" //имя файла с результатами поиска

 

int proverka_file(char *fname, const char *) ; //проверка наличия файла

void dobavka(char *fname) ;               //добавление новых записей

void zag1() ;                             //вывод заголовка таблицы

void zag2() ;                             //вывод заголовка таблицы

void prosmotrbd1(char *fname) ;           //просмотр содержимого файла

void prosmotrbd2(char *fname) ;           //просмотр содержимого файла

void poiskcountry(char *fname1, char *fname2) ;//поиск по ключу

void sort_name(char *fname) ;       //сортировка по строке

void sort_voz_cena(char *fname) ;         //сортировка по числу

 

const char PR_R[] = "r" ;   //признак открытия файла на чтение

const char PR_S[] = "r+" ; //признак открытия файла на чтение и запись

const char PR_W[] = "w" ;  //признак открытия файла на запись

const char PR_A[] = "a" ;  //признак открытия файла на добавление

typedef struct {char name[15] ;  //наименование экскурсии

       char country[15] ; //страна

       unsigned int cena ; //стоимость путевки

       int time ;      //продолжительность

       char trans[10] ;   //транспорт

  }trip ;

 

//main_Begin______________________________________________________________

int main()

{int var ;         //вид действия с содержимым файла

 char otv ;        //ответ пользователя

 char fname_i[20] = FNAME_I ;

 char fname_r[20] = FNAME_R ;

 setlocale(LC_ALL,"Russian") ;

for( ; ;)

{//Выбор вида действия с содержимым файла

cout << "\n Вид действия:" << endl ;

cout << " 1 - создание базы данных" << endl ;

cout << " 2 - добавление новых записей" << endl ;

cout << " 3 - сортировка по наименованию" << endl ;

cout << " 4 - сортировка по цене путёвки" << endl ;

cout << " 5 - поиск по стране" << endl ;

cout << " 6 - просмотр базы данных" << endl ;

cout << " 7 - просмотр базы данных поиска" << endl ;

 cout << " 8 - завершение задачи" << endl ;

cout << " Введите вид действия ->" ;

cin >> var ;

switch(var)

{default:break ;

  case 1: if(proverka_file(fname_i, PR_R))

        {cout << " База данных экскурсий с именем "<< fname_i ;

       cout << " была создана раньше." << endl ;

       cout << " Создаём файл с новым именем? [Y/N] " ;

       cin >> otv ;

       cin.get() ;      //убираем символ '\n' из потока

       if(otv == 'Y' || otv == 'y' || otv == 'Н' || otv == 'н')

       {cout << " Задайте имя создаваемого файла: " ;

       cin >> fname_i ;

       }

       else break ;

        }

  if(!proverka_file(fname_i, PR_W))

        {cout << "\n Ошибка открытия файла для записи" << endl ;

       cout << " Для продолжения нажмите Enter->" ; getchar() ;

       break ;

        }

  cout << " Создаем базу " << fname_i << endl ;

  dobavka(fname_i) ;

  cout << "\n Создание файла закончено." << endl ;

  if(proverka_file(fname_i, PR_R))

        cout << " База данных готова к работе" << endl ;

  else cout << "\n база не создана" << endl ;

  cout << " Для продолжения нажмите Enter->" ; getchar() ;

  break ;

  case 2: if(proverka_file(fname_i, PR_R))

        {cout << " База данных экскурсий с именем "<< fname_i ;

       cout << " была создана раньше." << endl ;

       cout << " Будем добавлять новые записи в неё? [Y/N] " ;

       cin >> otv ;

       cin.get() ;      //убираем символ '\n' из потока

       if(otv == 'N' || otv == 'n' || otv == 'Т' || otv == 'т')

       {cout << " Задайте имя файла другой базы: " ;

       cin >> fname_i ;

       if(!proverka_file(fname_i, PR_R))

         {cout << " Такая база данных не создавалась" << endl ;

             cout << " Для продолжения нажмите Enter->" ; getchar() ;

             break ;

         }

       }

        }

  cout << " Добавляем записи в файл " << fname_i << endl ;

  dobavka(fname_i) ;

  cout << "\n Изменение файла закончено." ;

  cout << " Для продолжения нажмите Enter->" ; getchar() ;

  break ;

  case 3: if(!proverka_file(fname_i, PR_S))

        {cout << "\n Ошибка открытия файла для чтения и записи" << endl ;

       cout << " Для продолжения нажмите Enter->" ; getchar() ;

       break ;

        }

  sort_name(fname_i) ;

  cout << "\n Сортировка закончена." ;

  cout << " Для продолжения нажмите Enter->" ; getchar() ;

  break ;

  case 4: if(!proverka_file(fname_i, PR_S))

        {cout << "\n Ошибка открытия файла для чтения и записи" << endl ;

       cout << " Для продолжения нажмите Enter->" ; getchar() ;

       break ;

        }

  sort_voz_cena(fname_i) ;

  cout << "\n Сортировка закончена." ;

  cout << " Для продолжения нажмите Enter->" ; getchar() ;

  break ;

  case 5: if(!proverka_file(fname_i, PR_R))

        {cout << "\n Ошибка открытия файла для чтения" << endl ;

       cout << " Для продолжения нажмите Enter->" ; getchar() ;

       break ;

        }

  if(!proverka_file(fname_r, PR_W))

        {cout << "\n Ошибка открытия файла для записи" << endl ;

       cout << " Для продолжения нажмите Enter->" ; getchar() ;

       break ;

        }

  poiskcountry(fname_i, fname_r) ;

  cout << "\n Поиск по стране закончен." ;

  cout << " Для продолжения нажмите Enter->" ; getchar() ;

  break ;

  case 6: if(!proverka_file(fname_i, PR_R))

        {cout << "\n Ошибка открытия файла для чтения" << endl ;

       cout << " Для продолжения нажмите Enter->" ; getchar() ;

       break ;

        }

  prosmotrbd1(fname_i) ;

  cout << "\n Для продолжения нажмите Enter->" ; getchar() ;

  break ;

  case 7: if(!proverka_file(fname_r, PR_R))

        {cout << "\n Ошибка открытия файла для чтения" << endl ;

       cout << " Для продолжения нажмите Enter->" ; getchar() ;

       break ;

        }

  prosmotrbd2(fname_r) ;

  cout << "\n Для продолжения нажмите Enter->" ; getchar() ;

  break ;

  case 8: return 0 ;

}

}

}

//main_End________________________________________________________________

 

//Dobavka_Begin___________________________________________________________

//Добавление новых элементов в базу данных

void dobavka(char *fname)

{char otv ;

 trip excur ;

 FILE *baza ;

 

 baza = fopen(fname, PR_A) ;

 rewind(baza) ;

 do

{cout << "\n Наименование экскурсии? " ;

cin >> excur.name ;

 

cout << " Страна? " ;

cin >> excur.country ;

 

cout << " Стоимость путевки? " ;

cin >> excur.cena ;

 

cout << " Продолжительность? " ;

cin >> excur.time ;

 

cout << " Транспорт? " ;

cin >> excur.trans ;

fwrite(&excur, sizeof(excur), 1, baza) ;

 

cout << "\n Продолжать?[Y/N]" ;

cin >> otv ;

cin.get() ;

}

 while(otv == 'Y' || otv == 'y' || otv == 'Н' || otv == 'н') ;

 fclose(baza) ;

}

//Dobavka_End_____________________________________________________________

 

//Zag1_Begin______________________________________________________________

//Вывод заголовка при просмотре исходного файла

void zag1()

{int i ;

 cout << "\n" ;

 for(i = 1; i <= 65; i++)

cout << "-" ;

 cout << endl ;

 cout << "| Наименование |" << " Страна |" << " Стоимость|"

<< "Продолжит.|" << "Транспорт|" << endl ;

 for(i = 1; i <= 65; i++)

cout << "-" ;

}

//Zag1_End________________________________________________________________

 

//Zag2_Begin______________________________________________________________

//Вывод заголовка при просмотре файла поиска

void zag2()

{int i ;

 cout << "\n" ;

 for(i = 1; i <= 65; i++)

cout << "-" ;

 cout << endl ;

 cout << "| Страна |" << " Наименование |" << " Стоимость|"

<< "Продолжит.|" << "Транспорт|" << endl ;

 for(i = 1; i <= 65; i++)

cout << "-" ;

}

//Zag2_End________________________________________________________________

 

//ProsmotrBD1_Begin_______________________________________________________

//Просмотр базы данных экскурсий

void prosmotrbd1(char *fname)

{int i ;

 trip excur ;

 FILE *baza ;

 

 baza = fopen(fname, PR_R) ;

 cout << "\n База данных экскурсий" ;

 zag1() ;

 rewind(baza) ;

 while(fread(&excur, sizeof(excur), 1, baza) > 0)

{cout << "\n|" ;

cout.width(15) ; cout << excur.name << "|" ;

cout.width(15) ; cout << excur.country << "|" ;

cout.width(10) ; cout << excur.cena << "|" ;

cout.width(10) ; cout << excur.time << "|" ;

cout.width(9) ; cout << excur.trans << "|" ;

}

 cout << "\n" ;

 for(i = 1; i <= 65; i++)

cout << "-" ;

 fclose(baza) ;

}

//ProsmotrBd1_End_________________________________________________________

 

//ProsmotrBd2_Begin_______________________________________________________

//Просмотр базы данных поиска экскурсий по стране пребывания

void prosmotrbd2(char *fname)

{int i ;

 trip excur ;

 FILE *baza ;

 

 baza = fopen(fname, PR_R) ; //открываем файл на чтение

 cout << "\n База данных поиска экскурсий по стране" ;

 zag2() ;

 rewind(baza) ;

 while(fread(&excur, sizeof(excur), 1, baza) > 0)

{cout << "\n|" ;

cout.width(15) ; cout << excur.country << "|" ;

cout.width(15) ; cout << excur.name << "|" ;

cout.width(10) ; cout << excur.cena << "|" ;

cout.width(10) ; cout << excur.time << "|" ;

cout.width(9) ; cout << excur.trans << "|" ;

}

 cout << endl ;

 for(i = 1; i <= 65; i++)

cout << "-" ;

 fclose(baza) ;

}

//ProsmotrBd2_End_________________________________________________________

 

//PoiskCountry_Begin______________________________________________________

//Поиск по стране пребывания

void poiskcountry(char *fname1, char *fname2)

{unsigned char country[15] ;

 trip excur ;

 FILE *in,         //исходный файл

*out ;     //файл результатов поиска

 

 in = fopen(fname1, PR_R) ; //открываем файл на чтение

 out = fopen(fname2, PR_W) ; //открываем файл на запись

 cout << "\n Название страны для поиска? " ;

 cin >> country ;

 rewind(in) ;

 while(fread(&excur, sizeof(excur), 1, in) > 0)

 if(strncmp(excur.country, country, 15) == 0)

{fwrite(&excur, sizeof(excur), 1, out) ;

}

 fclose(out) ;

 fclose(in) ;

}

//PoiskCountry_End________________________________________________________

 

//Sort_name_Begin_________________________________________________________

//Сортировка по наименованию экскурсии по алфавиту

void sort_name(char *fname)

{int i ;

 int fl ;

 trip ppp, excur ;

 FILE *baza ;

 baza = fopen(fname, PR_S) ; //открываем файл на чтение и запись

 do{rewind(baza) ;

fl = 0 ;

for(i =0; fread(&excur, sizeof(excur), 1, baza) > 0; i += sizeof(excur), fseek(baza, i, SEEK_SET)) //позиция i от НАЧАЛА файла

{if(fread(&ppp, sizeof(excur), 1, baza) > 0)

  {if(strncmp(excur.name, ppp.name, 15) > 0)

{fseek(baza, i, SEEK_SET) ; //позиция i от НАЧАЛА файла

fwrite(&ppp, sizeof(excur), 1, baza) ;

fwrite(&excur, sizeof(excur), 1, baza) ;

fl = 1 ;

}

  }

}

}

 while(fl) ;

 fclose(baza) ;

}

//Sort_name_End___________________________________________________________

 

//Sort_cena_Begin_________________________________________________________

//Сортировка по убыванию стоимости путевки

void sort_voz_cena(char *fname)

{int i ;

 int fl ;

 trip ppp, excur ;

 FILE *baza ;

 

 baza = fopen(fname, PR_S) ; //открываем файл на чтение и запись

 do{rewind(baza) ;

fl = 0 ;

for(i =0; fread(&excur, sizeof(excur), 1, baza) > 0; i += sizeof(excur),

fseek(baza, i, SEEK_SET))

{if(fread(&ppp, sizeof(excur), 1, baza) > 0)

{if(excur.cena > ppp.cena)

{fseek(baza, i, SEEK_SET) ; //позиция i от НАЧАЛА файла

  fwrite(&ppp, sizeof(excur), 1, baza) ;

  fwrite(&excur, sizeof(excur), 1, baza) ;

  fl = 1 ;

}

}

}

}

 while(fl) ;

 fclose(baza) ;

}

//Sort_cena_End___________________________________________________________

 

//proverka_file_Begin_____________________________________________________

//проверка наличия физического файла

int proverka_file(char *fname, const char *pr)

{

//Открываем файл

 if((fopen(fname, pr)) == NULL)     //файл не существует

return(0) ;

 return(1) ;

}

//proverka_file_End_______________________________________________________


Лабораторная работа №14

Линейные списки

 

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

 

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

 

Порядок выполнения работы:

 

1) Получить у преподавателя индивидуальное задание.

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

3) Составить спецификации функций.

4) Составить программу на языке C/C++.

5) Проверить и продемонстрировать преподавателю работу программы на полном наборе тестов. Обеспечить одновременный показ на экране исходного и результирующего списков.

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

 


Дата добавления: 2018-04-05; просмотров: 748; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!