Advertisement
fabis_sparks

Kireev Lab3

Jun 2nd, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.85 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include "stdio.h"
  3. #include "iostream"
  4. #include "fstream"
  5. #include <conio.h>
  6. #include <stdlib.h>
  7. #include <ctime>
  8. #include <windows.h>
  9. #define _CRT_SECURE_NO_WARNINGS
  10.  
  11. #define k 10000
  12.  
  13. using namespace std;
  14.  
  15. struct aero
  16. {
  17.     char reis[10];
  18.     char kuda[15];
  19.     char time0[5];
  20.     char time1[5];
  21.     char price[7];
  22. }rasp[10];
  23.  
  24. int comanda=0, spisok=0, a=0, Aero;
  25. bool Exit=false;
  26.  
  27. void Menu();
  28. void DobZap();
  29. void Read();
  30. void Save();
  31. void SaveFile();
  32. void Redact();
  33.  
  34. void Menu()
  35. {
  36.     cout<<"Создать автоматизированную информационную систему Аэрофлота. Структура данных: рейс, пункт назначения, время вылета, время прибытия, стоимость билетов. Предусмотреть возможность получения справки о наличии билетов на указанный рейс."<<endl;
  37.     cout<<"Выберите действие: "<<endl;
  38.     cout<<"1 - Добавить рейс"<<endl;
  39.     cout<<"2 - Сохранить изменения в файле"<<endl;
  40.     cout<<"3 - Прочитать записи в файле"<<endl;
  41.     cout<<"4 - Редактировать запись в файле"<<endl;
  42.     cout<<"5 - Выход"<<endl;
  43.  
  44.     cin>>comanda;
  45.  
  46.     if (comanda>5 || comanda<1)
  47.     {
  48.         cout<<"Ввести можно только от 1 до 5"<<endl;
  49.         system("pause");
  50.         system("cls");
  51.         Menu();
  52.     }
  53.     switch(comanda)
  54.     {
  55.     case 1: DobZap();break;
  56.     case 2: SaveFile();break;
  57.     case 3: Read();break;
  58.     case 4: Redact();break;
  59.     case 5: Exit=true;break;
  60.     }
  61. }
  62.  
  63. void DobZap()
  64. {
  65.     cout<<"Не забывайте сохранять после каждой записи"<<endl;
  66.     Aero=0;
  67.     cout<<"Имя(номер) рейса"<<endl;
  68.     cin>>rasp[Aero].reis;
  69.     cout<<"Куда летит"<<endl;
  70.     cin>>rasp[Aero].kuda;
  71.     cout<<"Во-сколько вылет"<<endl;
  72.     cin>>rasp[Aero].time0;
  73.     cout<<"Во-сколько приземление"<<endl;
  74.     cin>>rasp[Aero].time1;
  75.     cout<<"Цена билета"<<endl;
  76.     cin>>rasp[Aero].price;
  77. }
  78.  
  79. void SaveFile()
  80. {
  81.     cout<<"Вы точно хотите сохранить изменения?\n1 - сохранить файл, 2 - отменить сохранение"<<endl<<endl;
  82.     cin>>a;
  83.     if (a>2 || a<1)
  84.     {
  85.         cout<<"Неправильный ввод!\nВведите 1 - для сохранения или 2 - для отмены"<<endl;
  86.         SaveFile();
  87.     }
  88.     if (a==1)
  89.     {
  90.         Save();
  91.     }
  92.     if (a==2)
  93.     {
  94.         Menu();
  95.     }
  96. }
  97.  
  98. void Save()
  99. {
  100.     FILE*fp;
  101.     fp=fopen("raspisanie.txt","a");
  102.     fwrite(&rasp[Aero],sizeof(aero),1,fp);
  103.     fclose(fp);
  104.     cout<<"\nФайл сохранён! Нажмите для продолжения Enter"<<endl;
  105.     system("pause");//ПРОВЕРИТЬ!!!
  106. }
  107.  
  108. void Read()
  109. {
  110.     FILE*fp;
  111.     int i, j=0;
  112.     char buf[512];
  113.     if ((fp=fopen("raspisanie.txt","r"))==NULL)
  114.     {
  115.         cout<<"\nОшибка при открытии файла! Возможно он ещё не был создан"<<endl;
  116.         system("pause");
  117.         system("cls");
  118.         Menu();
  119.     }
  120.     for (i=0;i<k;i++)
  121.     {
  122.         if (fread(&rasp[i],sizeof(aero),1,fp) !=ferror(fp))
  123.         {
  124.             j++;
  125.         }
  126.         else
  127.         {
  128.             break;
  129.         }
  130.     }
  131.     for (i=0;i<j;i++)
  132.     {
  133.         cout<<"Номер рейса: "<<rasp[i].reis<<"\t"<<"Пункт назначения: "<<rasp[i].kuda<<"\t"<<"Вылет в: "<<rasp[i].time0<<"\t"<<"Приземление в: "<<rasp[i].time1<<"\t"<<"Цена билета: "<<rasp[i].price<<endl;
  134.     }
  135.     system("pause");
  136.     system("cls");
  137.     fclose(fp);
  138.     Menu();
  139. }
  140.  
  141. void Redact()
  142. {
  143.     FILE*fp;
  144.     fp=fopen("raspisanie.txt","w");
  145.     int i, s, x, z, j=0;
  146.     for (i=0;i<k;i++)
  147.     {
  148.         if (fread(&rasp[i],sizeof(aero),1,fp) !=ferror(fp));
  149.         {
  150.         j++;
  151.         }
  152.     }
  153.     cout << "Введите номер пункта для редактирования: " << endl;
  154.     cin >> s;
  155.     s--;
  156.     cout << rasp[s].reis << "\t" << rasp[s].kuda << "\t" << "\t" << rasp[s].time0 << "\t" << rasp[s].time1 << "\t"<< rasp[s].price << endl;
  157.     cout<<"\n Запись номер "<< s+1 <<endl;
  158.     cout<<"\n Какое поле редактировать? "<<endl;
  159.     cout<<"\n 1. "<< rasp[s].reis <<endl;
  160.     cout<<"\n 2. "<< rasp[s].kuda <<endl;
  161.     cout<<"\n 3. "<< rasp[s].time0 <<endl;
  162.     cout<<"\n 4. "<< rasp[s].time1 <<endl;
  163.     cout<<"\n 5. "<< rasp[s].price <<endl;
  164.     cin>>x;
  165.     if (x > 5 || x < 1)
  166.     {
  167.         cout << "\nВвести можно только от 1 до 5" << endl;
  168.     }
  169.     switch (x)
  170.     {
  171.         case 1:
  172.             cin>>rasp[s].reis;
  173.         break;
  174.         case 2:
  175.             cin>>rasp[s].kuda;
  176.         break;
  177.         case 3:
  178.             cin>>rasp[s].time0;
  179.         break;
  180.         case 4:
  181.             cin>>rasp[s].time1;
  182.         break;
  183.         case 5:
  184.             cin>>rasp[s].price;
  185.         break;
  186.     }
  187.     for (int i=0;i<5;i++)
  188.     {
  189.         fwrite(&rasp[i], sizeof(aero), 1, fp);
  190.     }
  191.     fclose(fp);
  192. }
  193.  
  194. int main()
  195. {
  196.     setlocale(LC_ALL, "rus");
  197.     do
  198.     {
  199.         system("cls");
  200.         Menu();
  201.     }
  202.     while (Exit==false);
  203.     getchar();
  204.     getchar();
  205.     return 0;
  206. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement