Репетиторские услуги и помощь студентам!
Помощь в написании студенческих учебных работ любого уровня сложности

Тема: Программирование на языке высокого уровня

  • Вид работы:
    Курсовая работа (п) по теме: Программирование на языке высокого уровня
  • Предмет:
    Информационное обеспечение, программирование
  • Когда добавили:
    12.06.2014 14:31:41
  • Тип файлов:
    MS WORD
  • Проверка на вирусы:
    Проверено - Антивирус Касперского

Другие экслюзивные материалы по теме

  • Полный текст:
    СОДЕРЖАНИЕ  
    1. ЗАДАНИЕ   3
    2. ОПИСАНИЕ ПРИМЕНЕНИЯ   3
    2.1. Запуск программы 3
    2.2. Входные данные   3
    2.3. Выходные данные   4
    2.4. Сообщения программы 4
    3. ОПИСАНИЕ ПРОГРАММЫ   5
    3.1. Метод решения задачи   5
    3.2. Структура программы   5
    3.3. Описание алгоритмов   6
    3.3.1. main – главная функция   6
    3.3.2. Блок схема поиска по параметру     8
    3.3.3. Блок-схема удаления   9
    3.3.4. Блок-схема добавления    11
    4. ОТЛАДКА ПРОГРАММЫ 13
    4.1. Проектирование тестов 13
    4.1.1. Тесты черного ящика     13
     
    ЛИТЕРАТУРА      14
    Приложение 1. Текст программы   15
    Приложение 2. Пример содержания файла marsh.txt   19
    Приложение 3. Результаты тестирования программы   20
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    1. ЗАДАНИЕ
     
    Вариант 4. Касса аэрофлота. Расписание: номер рейса, маршрут, пункты промежуточной посадки, время отправления, дни полета. (сортировка по полям день полета, маршруты, поиск по запросам маршрут – вывод номер рейса и время отправки, время отправки – вывод рейс и маршрут)
     
    2. ОПИСАНИЕ ПРИМЕНЕНИЯ
     
    2.1. Запуск программы
     
    Запуск программы (файл kurs.c) можно выполнить  из среды Turbo C 2.0 (или Borland C++ 3.1),
    2.2. Входные данные
     
    Входные данные программы находятся в файле  “marsh.txt”. Число строк в файле - произвольное. Для работы с записями используется структура marsh:
     
    struct marsh
    {
      char marsh1[30]; - Маршрут – пункт вылета
      char marsh2[30]; - Маршрут – пункт прилета
      char prom[80]; - Маршрут – промежуточные пункты
      int nom; - номер рейса
      int time[2]; - время вылета – часы и минуты
      int dni[7]; - дни полетов(массив для семи дней недели)
    }
     
    Пример содержания  файла приведен в приложении 2.
    По запросу программы с клавиатуры необходимо ввести номер  меню (см. раздел 2.3), пункт вылета и прилета, промежуточные пункты маршрута, время, дни полетов, номер рейса, номер записи, выбор да нет. 2.3. Выходные данные
     
    Программа выводит на экран меню:
    При выборе пункта 0 программа завершает свою работу.
     
    Примеры выходных данных для остальных пунктов меню см. в приложении 3.
     
    2.4. Сообщения программы
     
    Ниже приводится перечень  возможных сообщений программы:
     
    Vvedite kolichestvo dobavlyaemih marshrutov =
    Vvedite punkt vileta =
     Vvedite punkt prileta =
    Vvedite promegutognie punkti poleta =
    den dolgen bit 0 - net ili 1 - da!
    Vvedite vremya otpravlenia chas i minuti cherez probel =
    minuti dolgni bit ot 0 do 59!
    chas dolgem bit ot 0 do 23!
    Vvedite nomer marshruta =
    Nomer marhruta dolgen bit > 0!
    Marshrut %d dobavlen v file
    kolichestvo dobavlyaemih marshrutov dolgno bit > 0!
    File marsh.txt ne naiden, sozdaite ego!
    vvedi nomer zapisi =>
    Udalit zapis 2? - da - 1/net – 2
    Vi dolgni vvesti 1 - da ili 2 – net
    zapis 2 udalena!!!
    zapis 2 ne naidena ili ne suchestvuet!!!
    Udalenie zapisi otmeneno
    File marsh.txt sozdan
    3. ОПИСАНИЕ ПРОГРАММЫ
     
    3.1. Метод решения задачи
     
    Задачу можно разбить на три отдельные подзадачи:
    1.  Для ввода данных организовать проверку существование файла, проверку вводимых данных, а также добавление определенного количества записей, чтобы не добавлять по одной записи.
    2. Разработать алгоритм поиска записей по определенному параметру и вывод полученных данных на экран.
    3.  Сортировку данных реализовать при помощи алгоритма поиска из пункта 2 и применяя перекрёстную группировку параметров для поиска.
    Каждая  подзадача решается методом линейного поиска (последовательного просмотра элементов таблицы).
    Чтобы пользователь мог выбирать, какие подзадачи  решать и в каком порядке, программа выводит на экран меню (см. раздел 2.3).
     
    3.2. Структура программы
    Программа состоит из 10-и функций: главной функции main и 9 подпрограмм.
    void dobavit() – добавить запись в файл(алгоритм добавления)
    void prosmotrf() – просмотр всего файла(алгоритм поиска)
    void prosmotrbym() – поиск по маршруту(алгоритм поиска)
    void prosmotrbytime()– поиск по времени(алгоритм поиска)
    void prosmotrbyday()– поиск по дню полета(алгоритм поиска)
    void prosmotrbyn ()– поиск по номеру рейса(алгоритм поиска)
    void udalit()– удаление записи(алгоритм удаления)
    void sortbypt()– сортировка по дням и маршрутам полетов(алгоритм поиска – задание курсовой)
    void sozdat()– создание файла(вспомогательная функция)
    struct marsh * get(int kol, int day)– выборка из файла рейсов по заданному дню(вспомогательная функция)
    struct marsh * sort(int kol, struct marsh srt[], int * h[]) – сортировка рейсов по маршрутам в выбранном дне(вспомогательная функция)
    int * kols() – подсчет кол-ва рейсов в заданный день(вспомогательная функция)
    3.3. Описание алгоритмов
     
    3.3.1. main – главная функция
     
    Заголовок функции:
    int  main ()
     
    Рабочие данные:
    r – номер пункта меню.
     
     
     
     
     
     
     
     
     Рис.1. Блок-схема функции  main()
     
    3.3.2. Блок схема поиска по параметру.
     
     

       
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    Рис.2. Блок схема поиска по параметру.
    в заданный день.  
     
         
     
     
     
     
    3.3.3. Блок-схема удаления.

     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

       
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    Рис.3 Блок-схема удаления.
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    3.3.4. Блок-схема добавления.
     
     

       
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    Рис.4. Блок-схема добавления.
     
     
     
    4. ОТЛАДКА ПРОГРАММЫ
     
    4.1. Проектирование тестов
     
    4.2.1. Тесты черного ящика
     
    Для проектирования тестов программы методами черного ящика [1] с помощью эквивалентного разбиения входных/выходных данных  на  области  (классы) эквивалентности составлен список ситуаций,  каждая из которых должна создаваться хотя бы  одним тестом.  Тестовые  ситуации приведены в табл.  4.1,  в скобках указаны их номера.  
     
      Таблица 4.1
    Области входных/выходных данных тестов программы  
     
    Входное/выходное условие (значение)
    "Правильные" классы эквивалентности
    "Неправильные" ¦ классы   эквивалентности 
    Номер пункта меню
    0.9
     <0 и >9
    Входной файл
    существует
    не существует
    Входной файл  
    Не пустой
    пустой
    Дни полетов
    >=0 и <=1
    >1 и <0
    Номер рейса    
    >=1
    <0
    Часы
    >=0 и <=23
    >23 и <0
    Минуты
    >=0 и <=59
    >59 и <0
     
      Для создания  перечисленных тестовых ситуаций разработаны тесты,  представленные в табл. 4.2. Входные и выходные данные тестов по возможности выбирались ближе к границам классов эквивалентности.
     
    Таблица 4.2
     
    Вход
    Выход  
    1
    Номер пункта меню n=10
    Нужно вводить номер пункта от 0 до 9
    2
    Номер пункта меню n=4
    Завершение программы
    3
    Входной файл не содержит записей
    Вывод: “Fail marsh.txt pustoy”
    4
    Входной файл содержит записи
    Вывод приглашения к вводу данных
      Тесты черного ящика для отладки программы
     
     
     
     
     
     
    5
    День >1 или <0
    Вывод ошибки
    6
    День >=1 и <=0
    Продолжение работы
    7
    Минуты >59 и <0
    Вывод ошибки
    8
    Минуты >=0 и <=59
    Продолжение работы
    9
    Часы >23 и <0
    Вывод ошибки
    10
    Часы >=0 и <=23
    Продолжение работы
    11
    Номер рейса <0
    Вывод ошибки
    12
    Номер рейса>=1
    Продолжение работы
    13
    Номер записи<0
    Вывод ошибки
     
     
     
     
     
     
     
     
     
     
     
     
    Литература  
     
      1. Хохлов Д.Г. Основы технологии модульного программирования. Учебное пособие. - Казань. Изд-во  Казан. гос. техн. ун-та ,  2005. - 63 с.
    2.  Павловская  Т.А. С/С++. Программирование на языке высокого уровня. - СПб: Питер, 2004г. - 461с.
    3.  Павловская Т.А., Щупак Ю.А. С/С++. Структурное программирование: Практикум. - СПб: Питер, 2002 г. - 240с.
      4.  Хохлов Д.Г. Структуры данных и комбинаторные алгоритмы. Учебное пособие. - Казань: Изд-во  Казан. гос. техн. ун-та,  2005. -  102 с.
      5.  Хохлов Д.Г., Захарова З.Х. Практикум по структурам данных и комбинаторным алгоритмам: Учебное пособие.- Казань: Изд-во Казан. гос. техн. ун-та, 2005. - 48 с.
    6.  Бикмурзина А.Р. Лабораторный практикум по программированию. - Казань: Изд-во  Казан. гос. техн. ун-та, 2000г.
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    Приложение 1. Текст программы
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <string.h>
     
    struct marsh//no?oeoo?a aey ?aaiou n oaeeii
    {
      char marsh1[30];
      char marsh2[30];
      char prom[80];
      int nom;
      int time[2];
      int dni[7];
    }s;
     
     
    void dobavit() //- ooieoey aiaaaeaiey, aaai?eoi aiaaaeaiey
    {
    FILE *f;
    int kol=0,i,g_kol=0,a,b,c,day,k;
    char dni[7][15] = {"Ponedelnik", "Vtornik", "Sreda", "Chetverg", "Pyatnica", "Subbota", "Voskresenye"};


    f=fopen ("marsh.txt","a+b");

    if(f!=NULL)
    {
    printf("Vvedite kolichestvo dobavlyaemih marshrutov = ");
    scanf("%d", &kol);

    if(kol>=1)
    {
     
    for(i=0; i!=kol; i++)
    {
    a=0;b=0;c=0;
    printf("\n\nVvod marshruta %d:",i+1);
    printf("\nVvedite punkt vileta = ");
    fflush(stdin);
    gets(s.marsh1);

    printf("\nVvedite punkt prileta = ");
    fflush(stdin);
    gets(s.marsh2);

    printf("\nVvedite promegutognie punkti poleta = ");
    fflush(stdin);
    gets(s.prom);

    for(k=0; k!=7; k++)
    {
    s.dni[k]=0;
    }

    k=0;

    do
    {
      a=0;
      printf("\nDNI(0 - da, 1 - net)");
      printf("\nVvedite dni poleta %s = ", dni[k]);
     
      scanf("%d", &day);

      if(day>=0 && day<=1)
      {
      a=1;
      s.dni[k] = day;
      k++;
      }
      else
      {
    a=0;
    printf("\nden dolgen bit 0 - net ili 1 - da!");
    getch();
      }
     
      if(k==7)
      {
      break;
      }
     
    }while(1);



    do
    {
    printf("\nVvedite vremya otpravlenia chas i minuti cherez probel = ");
    scanf("%d %d", &s.time[0], &s.time[1]);

    if(s.time[0]>=0 && s.time[0]<=23)
    {
    if(s.time[1]>=0 && s.time[1]<=59)
    {
    b=1;
    }
    else
    {
      b=0;
      printf("\nminuti dolgni bit ot 0 do 59!");
      getch();
       }
      }
      else
      {
      b=0;
      printf("\nchas dolgem bit ot 0 do 23!");
      getch();
     }
     
      if(b==1)
      {
      break;
      }
     
      }while(1);
     
    do
    {
    printf("\nVvedite nomer marshruta = ");
    scanf("%d", &s.nom);

    if(s.nom>0)
    {
    c=1;
      }
      else
      {
    c=0;
    printf("\nNomer marhruta dolgen bit > 0!");
    getch();
    }
      if(c==1)
      {
     break;
      }
     
      }while(1);
     
    fwrite(&s,sizeof(struct marsh),1,f);
     
      printf("\nMarshrut %d dobavlen v file", i+1);
      getch();
    }
    }
    else
    {
    printf("\nkolichestvo dobavlyaemih marshrutov dolgno bit > 0!");
    getch();
    }
    }
    else
    {
    printf("\nFile marsh.txt ne naiden, sozdaite ego!");
    getch();
    }
    fclose(f);
    }
     
    void sozdat()
    {
     FILE * f;
     f=fopen("marsh.txt", "w+b");
     printf("\nFile marsh.txt sozdan");
     fclose(f);
     getch();
    }
     
    void prosmotrbyday()
    {
    FILE *f;
    int kol=0,z,day,i;

    f=fopen ("marsh.txt","rb");
    printf("\nPoisk po dnyam:");
     
    if(f!=NULL)
    {
      do
      {  
    printf("\nDNI(Ponedelnik - 1, Vtornik - 2, Sreda - 3, Chetverg - 4, Pyatnica - 5, Subbota - 6, Voskresenye - 7)");
    printf("\nVvedite den = ");
    scanf("%d",&day);
    if(day>=1 && day<=7)
    {
    break;
     
    }
    else
    {
    printf("\nden dolgen bit ot 1 do 7!");
      getch();
    }  
      }while(1);
     

      do
      {
    z = fread(&s,sizeof(struct marsh),1,f);
    if(z!=0)
    {
      if(s.dni[day-1]==1)
      {
      kol++;
      printf("\n\nMarshrut N%d:", kol);
      printf("\nNomer reisa = %d", s.nom);
      printf("\nPunkt Vileta = %s", s.marsh1);
      printf("\nPunkt Prileta = %s", s.marsh2);
      printf("\nPromegutochnie punkti = %s", s.prom);
      printf("\nVremya = %d:%d", s.time[0], s.time[1]);
      }  
      }
      else if(z==0 && kol==0)
      {
      break;
      }
      else if(z==0)
      {
      getch();
      break;
      }
      }while(1);  
    }
    else
    {
    printf("\nFile marsh.txt ne naiden, sozdaite ego!");
    getch();
    }

    if(kol==0 && f!=NULL)
    {
    printf("\nNet zapisei udovletvaryauchih zaprosu!");
    getch();
    }
    fclose(f); 

     
    void prosmotrbyn()
    {
    FILE *f;
    int kol=0,z,nom,i;
    char dni[7][15] = {"Ponedelnik", "Vtornik", "Sreda", "Chetverg", "Pyatnica", "Subbota", "Voskresenye"};

    f=fopen ("marsh.txt","rb");
    printf("\nPoisk po nomeru reisa:");
     
    if(f!=NULL)
    {
      do
      {  
       printf("\nVvedite nomer reisa = ");
    scanf("%d",&nom);
    if(nom>0)
    {
    break; 
    }
    else
    {
      printf("\nNomer dolgen bit >0!");
      getch();
    }
      }while(1);
     

      do
      {
    z = fread(&s,sizeof(struct marsh),1,f);
    if(z!=0)
    {
      if(s.nom==nom)
     {
      kol++;
      printf("\n\nNomer reisa = %d", s.nom);
      printf("\nPunkt Vileta = %s", s.marsh1);
      printf("\nPunkt Prileta = %s", s.marsh2);
      printf("\nPromegutochnie punkti = %s", s.prom);
      printf("\nVremya = %d:%d", s.time[0], s.time[1]);
      printf("\n---Dni poletov---");
      for(i=0; i!=7; i++)
      {
    if(s.dni[i]==1)
    {
    printf("\n%s", dni[i]);
    }
      }
      }
     
      }
      else if(kol==0 && z==0)
      {
      break;
      }
      else if(z==0)
      {
      getch();
      break;
      }  
      }while(1);  
    }
    else
    {
    printf("\nFile marsh.txt ne naiden, sozdaite ego!");
    getch();
    }

    if(kol==0 && f!=NULL)
    {
    printf("\nNet zapisei udovletvaryauchih zaprosu!");
    getch();

    fclose(f);
    }
     
    struct marsh * sort(int kol, struct marsh srt[], int * h[])
    {
    int i,g,z,t;
    FILE *f;
       //struct marsh * m1;
    int * d = new int[kol];

    f=fopen ("marsh.txt","rb");

    for(i=0; i!=kol; i++)
    {
    d[i]=i;
    }

    if(f!=NULL)
    {
      do
    {
    t=0;
    for(i=0; i!=kol-1; i++)
    {
      g = d[i];
      z = d[i+1];
      //printf("\n%d %d",g,z);
      if(strcmp(srt[g].marsh1,srt[z].marsh1)>0)
      {
      d[i]=z;
      d[i+1]=g;
      t=1;
      }
      else if(strcmp(srt[g].marsh1,srt[z].marsh1)==0)
      {
      if(strcmp(srt[g].marsh2,srt[z].marsh2)>0)
      {
    d[i]=z;
    d[i+1]=g;
    t=1;
      }
      }
    }  
     
    if(t==0)
    {
    break;
    }    
      }while(1);  
    }
    else
    {
    printf("\nFile marsh.txt ne naiden, sozdaite ego!");
    getch();
    }
    *h=d;
    fclose(f);
    return srt;
    }
     
     
    struct marsh * get(int kol, int day)
    {
      FILE *f;
      int i;
      struct marsh * m1 = new struct marsh[kol];

    f=fopen ("marsh.txt","rb");

    if(f!=NULL)
    {
     
    while(!feof(f))
    {
    fread(&s,sizeof(struct marsh),1,f);
    if(s.dni[day]==1)
    {
    m1[i] = s;
    i++;
    }
    }
    }
    else
    {
    printf("\nFile marsh.txt ne naiden, sozdaite ego!");
    getch();
    }
    fclose(f);

    return m1;  
    }
     
    int * kols()
    {
      FILE *f;
      int i;
      int * m = new int[7];
    f=fopen ("marsh.txt","rb");
    if(f!=NULL)
    {
    for(i=0; i!=7; i++)
    {
      m[i]=0;
    }

    while(!feof(f))
    {
    fread(&s,sizeof(struct marsh),1,f);
    for(i=0; i!=7; i++)
    {
      if(s.dni[i]==1)
      {
      m[i]++;
      }
    }
    }
    }
    else
    {
    printf("\nFile marsh.txt ne naiden, sozdaite ego!");
    getch();
    }
    fclose(f);
    return m;  
    }
     
    void sortbypt()
    {
    FILE *f;
    struct marsh * m1;
    int * r;
    int * kol = new int[7];
    char dni[7][15] = {"Ponedelnik", "Vtornik", "Sreda", "Chetverg", "Pyatnica", "Subbota", "Voskresenye"};
    int i,k;
    f=fopen ("marsh.txt","rb");
    printf("\nSortirovka po dnaym i marshrutam:");
     
    if(f!=NULL)
    {  
     
    kol = kols();
     
    fclose(f);

    printf("\n-------Dni poletov-------");
    for(i=0; i!=7; i++)
    {
     
    printf("\n\n---%s---", dni[i]);
    if(kol[i]==0)
    {
    printf("\n Net Reisov");
    }
    else if(kol[i]==1)
    {
      m1 = new struct marsh[1];
      r = new int[1];
      //printf("\n2");
      m1 = get(kol[i], i);
     
      printf("\n\nNomer reisa = %d", m1[i].nom);
      printf("\nPunkt Vileta = %s", m1[i].marsh1);
      printf("\nPunkt Prileta = %s", m1[i].marsh2);
      printf("\nPromegutochnie punkti = %s", m1[i].prom);
      printf("\nVremya = %d:%d", m1[i].time[0], m1[i].time[1]);
    }
       else
    {
      m1 = new struct marsh[kol[i]];
     
      r = new int[1];

      m1 = get(kol[i], i);
     
      m1 = sort(kol[i], m1, &r);
     
      for(k=0; k!=kol[i]; k++)
      {
    printf("\n\nNomer reisa = %d", m1[r[k]].nom);
    printf("\nPunkt Vileta = %s", m1[r[k]].marsh1);
       printf("\nPunkt Prileta = %s", m1[r[k]].marsh2);
    printf("\nPromegutochnie punkti = %s", m1[r[k]].prom);
    printf("\nVremya = %d:%d", m1[r[k]].time[0], m1[r[k]].time[1]);
      }
    }

    }  
     
    }
    else
    {
    printf("\nFile plan.txt ne naiden, sozdaite ego!");
    getch();
    }
    getch();
      fclose(f);
     
    }
     
    void prosmotrbym()
    {
    FILE *f;
    int kol=0,z,i;
    char dni[7][15] = {"Ponedelnik", "Vtornik", "Sreda", "Chetverg", "Pyatnica", "Subbota", "Voskresenye"};
    char m[30]="";

    f=fopen ("marsh.txt","rb");
    printf("\nPoisk po marshrutu:");
     
    if(f!=NULL)
    {
    printf("\nVvedite punkt prileta ili vileta = ");
    fflush(stdin);
    gets(m);  
     
      do
      {
    z = fread(&s,sizeof(struct marsh),1,f);
    if(z!=0)
    {
      if(strcmp(m, s.marsh1)==0 || strcmp(m, s.marsh2)==0)
      {
      kol++;
      printf("\n\nNomer reisa = %d", s.nom);
      printf("\nPunkt Vileta = %s", s.marsh1);
      printf("\nPunkt Prileta = %s", s.marsh2);
      printf("\nPromegutochnie punkti = %s", s.prom);
      printf("\nVremya = %d:%d", s.time[0], s.time[1]);
      printf("\n---Dni poletov---");
      for(i=0; i!=7; i++)
      {
    if(s.dni[i]==1)
    {
    printf("\n%s", dni[i]);
    }
      }  
      }  
      }
      else if(z==0 && kol==0)
     {

      break;
      }
      else if(kol==0)
      {
      printf("\nFile marsh.txt pust, dobavte zapisei");
      getch();
      break;
      }
      else if(z==0)
      {
      getch();
      break;
      }
      }while(1);  
    }
    else
    {
    printf("\nFile marsh.txt ne naiden, sozdaite ego!");
    getch();
    }

    if(kol==0 && f!=NULL)
    {
    printf("\nNet zapisei udovletvaryauchih zaprosu!");
    getch();

    fclose(f);  
    }
     
     
    void prosmotrbytime()
    {
    FILE *f;
    int kol=0,z,genre,a,b,i;
    int time[2];
    char dni[7][15] = {"Ponedelnik", "Vtornik", "Sreda", "Chetverg", "Pyatnica", "Subbota", "Voskresenye"};

    f=fopen ("marsh.txt","rb");
    printf("\nPoisk po vremeni:");
     
    if(f!=NULL)
    {
      do
      { printf("\nVvedite vremya chas i minuti cherez probel = ");
    scanf("%d %d", &time[0], &time[1]);

    if(time[0]>=0 && time[0]<=23)
    {
    if(time[1]>=0 && time[1]<=59)
    {
      break;
    }
    else
    {
      printf("\nminuti dolgni bit ot 0 do 59!");
      getch();
    }
      }
      else
      {
      printf("\nchas dolgem bit ot 0 do 23!");
      getch();
      }
      }while(1);
     

      do
      {
    z = fread(&s,sizeof(struct marsh),1,f);
    if(z!=0)
    {
      a = (time[0]*60)+time[1];
      b = (s.time[0]*60)+s.time[1];

      if(a==b)
      {
      kol++;
      printf("\n\nNomer reisa = %d", s.nom);
      printf("\nPunkt Vileta = %s", s.marsh1);
      printf("\nPunkt Prileta = %s", s.marsh2);
      printf("\nPromegutochnie punkti = %s", s.prom);
      printf("\nVremya = %d:%d", s.time[0], s.time[1]);
      printf("\n---Dni poletov---");
      for(i=0; i!=7; i++)
     {
    if(s.dni[i]==1)
    {
    printf("\n%s", dni[i]);
    }
      }  
      }  
      }
     else if(z==0 && kol==0)
      {
      break;
      }
      else if(z==0)
      {
      getch();
      break;
      }
      }while(1);  
    }
    else
    {
    printf("\nFile marsh.txt ne naiden, sozdaite ego!");
    getch();
    }

    if(kol==0 && f!=NULL)
    {
    printf("\nNet zapisei udovletvaryauchih zaprosu!");
    getch();
    }
    fclose(f);


    void prosmotrf()
    {
       FILE *f;
    int kol=0,z,i;
    char dni[7][15] = {"Ponedelnik", "Vtornik", "Sreda", "Chetverg", "Pyatnica", "Subbota", "Voskresenye"};

    f=fopen ("marsh.txt","rb");

    if(f!=NULL)
    {
      do
      {
    z = fread(&s,sizeof(struct marsh),1,f);
    if(z!=0)
    {
    kol++;
      printf("\n\nNomer reisa = %d", s.nom);
      printf("\nPunkt Vileta = %s", s.marsh1);
      printf("\nPunkt Prileta = %s", s.marsh2);
      printf("\nPromegutochnie punkti = %s", s.prom);
      printf("\nVremya = %d:%d", s.time[0], s.time[1]);
      printf("\n---Dni poletov---");
      for(i=0; i!=7; i++)
      {
    if(s.dni[i]==1)
    {
    printf("\n%s", dni[i]);
    }
      }
      }
      else if(kol==0)
      {
     printf("\nFile marsh.txt pust, dobavte zapisei");
      }
      else
      {
    break;
      }
      }while(1);
      getch();
    }
    else
    {
    printf("\nFile marsh.txt ne naiden, sozdaite ego!");
    getch();
    }
    fclose(f);
    }
     
    void udalit()
    {
     FILE*f;
     FILE*ff;
     
     int z,i,pr,j=0,l,r,u;
     char dni[7][15] = {"Ponedelnik", "Vtornik", "Sreda", "Chetverg", "Pyatnica", "Subbota", "Voskresenye"};
     f=fopen ("marsh.txt","rb");
     printf("\nvvedi nomer zapisi => ");
     scanf("%d", &z);
     
    if(z<=0){
    printf("\nnomer dolgen bit > 0");
    getch();
      return;
    }
     
     
    for(r=1; r!=z; r++){
        fseek(f,sizeof(struct marsh),SEEK_CUR);
    }
     
     
    pr=fread(&s,sizeof(struct marsh),1,f);
     
    if(pr!=0){
      printf("\n\nNomer reisa = %d", s.nom);
      printf("\nPunkt Vileta = %s", s.marsh1);
      printf("\nPunkt Prileta = %s", s.marsh2);
     printf("\nPromegutochnie punkti = %s", s.prom);
      printf("\nVremya = %d:%d", s.time[0], s.time[1]);
      printf("\n---Dni poletov---");
      for(i=0; i!=7; i++)
      {
       if(s.dni[i]==1)
    {
    printf("\n%s", dni[i]);
    }
      }
    }
    else
    {
    printf("\nzapis %d ne naidena ili ne suchestvuet!!!", z);
    getch();
    return;
    }
     
     
    fclose(f);

    do{
      printf("\n\nUdalit zapis %d? - da - 1/net - 2", z);
      scanf("%d", &l);
      if(l>=1 && l<=2)
      {
     break;
      }
      else
      {
      printf("\n Vi dolgni vvesti 1 - da ili 2 - net"); 
      }
    }while(1);

    if(l==1)
    {
    f=fopen ("marsh.txt","rb");
    ff=fopen ("temp","w+b");
     
    do
       {
        pr=fread(&s,sizeof(struct marsh),1,f);
     
        j++;
     
        if(pr!=0)
      {
        if(j!=z)
      {
      fwrite(&s,sizeof(struct marsh),1,ff);
        }
      }
      else
      {
        break;
        }
      }while(1);
     
      fclose(f);
      fclose(ff);
      remove("marsh.txt");
      rename("temp","marsh.txt");
     
      printf("\nzapis %d udalena!!!\n", z);
      }
      else
      {
      printf("\nUdalenie zapisi otmeneno\n");
      }
     
      getch();
    }
     
     
    int main(int argc, char *argv[])
    {
    int r=0;
    do
    {
      system("cls");
      printf("= MENU =\n\n");
      printf("\n  1.Dobavit marshrut\n");
      printf("  2.Prosmotret vse marshruti\n");
      printf("  3.Poisk po marshrutam\n");
      printf("  4.Poisk po vremeni otpravki\n");
      printf("  5.Poisk po dnaym poleta\n");
      printf("  6.Poisk po nomeru\n");
      printf("  7.Udalit marshrut\n");
      printf("  8.Sortirovka po dnaym i marshrutam\n");
      printf("  9.sozdat fail marsh.txt\n");
      printf("  0.vihod\n");
      printf("\n viberite punkt => ");
      scanf("%d",&r);
     
      switch(r) {
       case 1: dobavit(); break;
       case 2: prosmotrf(); break;
       case 3: prosmotrbym(); break;
       case 4: prosmotrbytime(); break;
       case 5: prosmotrbyday(); break;
       case 6: prosmotrbyn(); break;
       case 7: udalit(); break;
       case 8: sortbypt(); break;
       case 9: sozdat(); break;
       default: break;
      }
     
      }while(r!=0);
     
      system("PAUSE");
      return EXIT_SUCCESS;
    }
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    Приложение 2. Пример входного файла marsh.txt

     
     
     
    Приложение 3. Результаты тестирования программы
     
     
    Тест 1.   Входного файла нет в текущем каталоге.
    Результат:
    Fail  marsh.txt ne naiden
     
      В следующих тестах используется файл из приложения 2.
     
    Тест 2 . 
     
    Тест 3. 
     

     
     
     
     
    Тест 4 . 
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    Тест 5 . 
     
     

     
    Тест 6. 
Если Вас интересует помощь в НАПИСАНИИ ИМЕННО ВАШЕЙ РАБОТЫ, по индивидуальным требованиям - возможно заказать помощь в разработке по представленной теме - Программирование на языке высокого уровня ... либо схожей. На наши услуги уже будут распространяться бесплатные доработки и сопровождение до защиты в ВУЗе. И само собой разумеется, ваша работа в обязательном порядке будет проверятся на плагиат и гарантированно раннее не публиковаться. Для заказа или оценки стоимости индивидуальной работы пройдите по ссылке и оформите бланк заказа.