Advertisement
v4d1mm

Untitled

Jan 23rd, 2019
532
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 12.57 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <iostream>
  3. #include <string>
  4. #include <fstream>
  5.  
  6. using namespace std;
  7. // Folder z plikem
  8. string path = "/Users/vadimm/code/PWR/PWR/dane.txt";
  9.  
  10. ////// Wywołanie menu
  11. char sym;
  12. void menu() {
  13.     cout << "-----------------------------------------\n\n\t\tWizyty przychodni\n\n\t1. Lista wizytów\n\t2. Dodaj wizytę\n\t3. Usuń wizytę\n\t4. Zmień wizyt\n\t5. Wyszukiwanie wizity\n\t6. Wyjście\n\n-----------------------------------------\n";
  14.    
  15. }
  16. //////
  17.  
  18. //////Otrzymujemy ID ostatniej wizyty
  19. unsigned int getID() {
  20.     fstream data(path);
  21.     int id = 1;
  22.     if(data.is_open() == true){
  23.         data.seekg( 0, ios::end);
  24.         long size = data.tellg();
  25.         data.seekg( 0, ios::beg);
  26.         if (size == 0)
  27.         {
  28.             data << "1";
  29.         }
  30.         else {
  31.             data >> id;
  32.         }
  33.     }
  34.     else {
  35.         ofstream data(path);
  36.         data.close();
  37.         getID();
  38.     }
  39.     data.close();
  40.     return id;
  41. }
  42. //////
  43. int n = getID();
  44. //////
  45.  
  46. //////Szukamy długość ID
  47. int getDigit(int n){
  48.     int i = 0;
  49.     for (;n > 0; i++) {
  50.         n /= 10;
  51.     }
  52.     return i;
  53. }
  54. //////
  55. struct Przychodnia {
  56.     int id;
  57.     string imie;
  58.     string nazwisko;
  59.     string typ;
  60.     string data;
  61.     string imie_nazw_lek;
  62.     string diagnoza;
  63.     string leki;
  64. };
  65. //////
  66.  
  67. ////// Dodanie wizyty
  68. void addVisit(){
  69.     Przychodnia pacjent;
  70.     ofstream data(path, ios::app | ios::binary);
  71.     if(data.is_open() == true){
  72.         pacjent.id = getID();
  73.         cout << "\nPodaj imię pacjenta:\n";
  74.         cin >> pacjent.imie;
  75.         cout << "\nPodaj nazwisko pacjenta:\n";
  76.         cin >> pacjent.nazwisko;
  77.         cout << "\nPodaj typ wizity:\n";
  78.         cin >> pacjent.typ;
  79.         cout << "\nPodaj datę wizyty w postaci dd.mm.rrrr:\n";
  80.         cin >> pacjent.data;
  81.         cout << "\nPodaj Imię i Nazwisko lekarza:\n";
  82.         cin >> pacjent.imie_nazw_lek;
  83.         cout << "\nPodaj diagnozę:\n";
  84.         cin >> pacjent.diagnoza;
  85.         cout << "\nPodaj wypisane leki:\n";
  86.         cin >> pacjent.leki;
  87.         data.write((char*)&pacjent, sizeof(Przychodnia));
  88.         data.close();
  89.        
  90.         ////// Zmieniamy ID
  91.         fstream data(path, ios::out | ios::in);
  92.         if (data.is_open())
  93.         {
  94.             data.seekp(0, ios::beg);
  95.             data << getID() + 1;
  96.         } else {
  97.             cout << "Wystąpił błąd. Sprobuj ponownie!\n";
  98.         }
  99.         //////
  100.         cout << "\n\nWizita dodana!\n\n";
  101.     }
  102.     else {
  103.         cout << "Wystąpił błąd. Sprobuj ponownie!\n";
  104.     }
  105.     data.close();
  106. }
  107. //////
  108.  
  109. //////Wypisywanie wizytów
  110. void getVisit() {
  111.     Przychodnia pacjent;
  112.     n = getID();
  113.     ifstream data(path, ios::ate);
  114.     if(data.is_open() == true){
  115.         if (data.tellg() < 175) {
  116.             cout << "-----------------------------------------\n\n\tBrak zapisów!\n\n-----------------------------------------\n";
  117.             menu();
  118.         } else {
  119.             data.seekg(getDigit(n),ios::beg);
  120.             for (int i = 1; i <= n - 1; i++) {
  121.                 data.read((char*)&pacjent, sizeof(Przychodnia));
  122.                 if (pacjent.imie == "") {
  123.                     continue;
  124.                 } else {
  125.                 cout << "\tWizyta #" << pacjent.id << endl;
  126.                 cout << "Imie: " << pacjent.imie << endl;
  127.                 cout << "Nazwisko: " << pacjent.nazwisko << endl;;
  128.                 cout << "Typ wizyty: " << pacjent.typ << endl;;
  129.                 cout << "Data: " << pacjent.data << endl;;
  130.                 cout << "Lekarz: " << pacjent.imie_nazw_lek << endl;;
  131.                 cout << "Diagnoza: " << pacjent.diagnoza << endl;;
  132.                 cout << "Przypisane leki: " << pacjent.leki << endl;;
  133.                 cout << "-----------------------------------------\n";
  134.                 }
  135.             }
  136.         }
  137.     }
  138.     else {
  139.         cout << "Wystąpił błąd. Sprobuj ponownie!\n";
  140.     }
  141.     data.close();
  142.     menu();
  143. }
  144. //////
  145.  
  146.  
  147. //////Usuwanie wizytów
  148. void deleteVisit(){
  149.     Przychodnia pacjent;
  150.     fstream data(path, ios::in | ios::out);
  151.     if(data.is_open() == true){
  152.         int id;
  153.         cout << "Podaj ID wizyty:\n";
  154.         cin >> id;
  155.         data.seekg(getDigit(n) + (id-1) * sizeof(Przychodnia),ios::beg);
  156.         data.read((char*)&pacjent, sizeof(Przychodnia));
  157.         pacjent.imie = "";
  158.         pacjent.nazwisko = "";
  159.         pacjent.typ = "";
  160.         pacjent.data = "";
  161.         pacjent.imie_nazw_lek = "";
  162.         pacjent.diagnoza = "";
  163.         pacjent.leki = "";
  164.         data.seekg(getDigit(n) + (id-1) * sizeof(Przychodnia),ios::beg);
  165.         data.write((char*)&pacjent, sizeof(Przychodnia));
  166.         cout << "Wizyta się usunięła!\n";
  167.     } else {
  168.         cout << "Wystąpił błąd. Sprobuj ponownie!\n";
  169.     }
  170.     data.close();
  171. }
  172.  
  173. void editVisit(){
  174.     Przychodnia pacjent;
  175.     fstream data(path, ios::in | ios::out);
  176.     if(data.is_open() == true){
  177.         int id;
  178.         cout << "Podaj ID wizyty:\n";
  179.         cin >> id;
  180.         data.seekg(getDigit(n) + (id-1) * sizeof(Przychodnia),ios::beg);
  181.         data.read((char*)&pacjent, sizeof(Przychodnia));
  182.         cout << "-----------------------------------------\n\n\tZmiana dannych\n\n\t1. Imie\n\t2. Nazwisko\n\t3. Typ wizyty\n\t4. Data\n\t5. Imie i nazwisko lekarza\n\t6. Diagnoza\n\t7. Przypisane leki\n\n--------------------------------------\n";
  183.         char sym;
  184.         cin >> sym;
  185.         switch (sym) {
  186.             case '1':{
  187.                 cout << "Podaj nowe imie:\n";
  188.                 cin >> pacjent.imie;
  189.                 data.seekg(getDigit(n) + (id-1) * sizeof(Przychodnia),ios::beg);
  190.                 data.write((char*)&pacjent, sizeof(Przychodnia));
  191.                 cout << "\nImie się zmieniło!\n";
  192.                 break;
  193.             }
  194.             case '2':{
  195.                 cout << "Podaj nowe nazwisko:\n";
  196.                 cin >> pacjent.nazwisko;
  197.                 data.seekg(getDigit(n) + (id-1) * sizeof(Przychodnia),ios::beg);
  198.                 data.write((char*)&pacjent, sizeof(Przychodnia));
  199.                 cout << "\nNazwisko się zmieniło!\n";
  200.                 break;
  201.             }
  202.             case '3':{
  203.                 cout << "Podaj nowy typ wizyty:\n";
  204.                 cin >> pacjent.typ;
  205.                 data.seekg(getDigit(n) + (id-1) * sizeof(Przychodnia),ios::beg);
  206.                 data.write((char*)&pacjent, sizeof(Przychodnia));
  207.                 cout << "\nTyp się zmienił!\n";
  208.                 break;
  209.             }
  210.             case '4':{
  211.                 cout << "Podaj nową datę:\n";
  212.                 cin >> pacjent.data;
  213.                 data.seekg(getDigit(n) + (id-1) * sizeof(Przychodnia),ios::beg);
  214.                 data.write((char*)&pacjent, sizeof(Przychodnia));
  215.                 cout << "\nData się zmieniła!\n";
  216.                 break;
  217.             }
  218.             case '5':{
  219.                 cout << "Podaj nowego lekarza:\n";
  220.                 cin >> pacjent.imie_nazw_lek;
  221.                 data.seekg(getDigit(n) + (id-1) * sizeof(Przychodnia),ios::beg);
  222.                 data.write((char*)&pacjent, sizeof(Przychodnia));
  223.                 cout << "\nLekarz się zmienił!\n";
  224.                 break;
  225.             }
  226.             case '6':{
  227.                 cout << "Podaj nową diagnozę:\n";
  228.                 cin >> pacjent.diagnoza;
  229.                 data.seekg(getDigit(n) + (id-1) * sizeof(Przychodnia),ios::beg);
  230.                 data.write((char*)&pacjent, sizeof(Przychodnia));
  231.                 cout << "\nDiagnoza się zmieniła!\n";
  232.                 break;
  233.             }
  234.             case '7':{
  235.                 cout << "Podaj nowe leki:\n";
  236.                 cin >> pacjent.leki;
  237.                 data.seekg(getDigit(n) + (id-1) * sizeof(Przychodnia),ios::beg);
  238.                 data.write((char*)&pacjent, sizeof(Przychodnia));
  239.                 cout << "\nLeki się zmieniły!\n";
  240.             }
  241.             default:{
  242.                
  243.                 break;
  244.             }
  245.         }
  246.     } else {
  247.         cout << "Wystąpił błąd. Sprobuj ponownie!\n";
  248.     }
  249.     data.close();
  250. }
  251.  
  252.  
  253.  
  254. //////Wyszukiwanie wizyty
  255. void search(){
  256.     Przychodnia pacjent;
  257.     ifstream data(path, ios::in);
  258.     if (data.is_open()) {
  259.         data.seekg(getDigit(n),ios::beg);
  260.         char sym;
  261.         cin >> sym;
  262.         switch (sym) {
  263.             case '1': {
  264.                 cout << "-----------------------------------------\n\n\t\tWyszukiwanie ID\n\n-----------------------------------------\n";
  265.                 int id;
  266.                 cout << "Podaj ID wizyty:\n";
  267.                 cin >> id;
  268.                 for (int i = 1; i <= n - 1; i++) {
  269.                     data.read((char*)&pacjent, sizeof(Przychodnia));
  270.                     if (pacjent.id == id) {
  271.                         cout << "\tWizyta #" << pacjent.id << endl;
  272.                         cout << pacjent.imie << endl;
  273.                     }
  274.                 }
  275.                 break;
  276.             }
  277.             case '2': {
  278.                 cout << "-----------------------------------------\n\n\t\tWyszukiwanie imiony\n\n-----------------------------------------\n";
  279.                 string imie;
  280.                 cout << "Podaj imię pacjenta:\n";
  281.                 cin >> imie;
  282.                 for (int i = 1; i <= n - 1; i++) {
  283.                     data.read((char*)&pacjent, sizeof(Przychodnia));
  284.                     if ((pacjent.imie) == imie) {
  285.                         cout << "\tWizyta #" << pacjent.id << endl;
  286.                         cout << pacjent.imie << endl;
  287.                     }
  288.                 }
  289.                 break;
  290.             }
  291.             case '3': {
  292.                 cout << "-----------------------------------------\n\n\t\tWyszukiwanie nazwiska\n\n-----------------------------------------\n";
  293.                 string nazwisko;
  294.                 cout << "Podaj nazwisko pacjenta:\n";
  295.                 cin >> nazwisko;
  296.                 for (int i = 1; i <= n - 1; i++) {
  297.                     data.read((char*)&pacjent, sizeof(Przychodnia));
  298.                     if (pacjent.nazwisko == nazwisko) {
  299.                         cout << "\tWizyta #" << pacjent.id << endl;
  300.                         cout << pacjent.imie << endl;
  301.                     }
  302.                 }
  303.                 break;
  304.             }
  305.             case '4': {
  306.                 cout << "-----------------------------------------\n\n\t\tWyszukiwanie daty\n\n-----------------------------------------\n";
  307.                 string ddata;
  308.                 cout << "Podaj datę wizyty:\n";
  309.                 cin >> ddata;
  310.                 for (int i = 1; i <= n - 1; i++) {
  311.                     data.read((char*)&pacjent, sizeof(Przychodnia));
  312.                     if (pacjent.data == ddata) {
  313.                         cout << "\tWizyta #" << pacjent.id << endl;
  314.                         cout << pacjent.imie << endl;
  315.                     }
  316.                 }
  317.                 break;
  318.             }
  319.             default: {
  320.                 cout << "Nie mamy takiego parametru\n";
  321.                 break;
  322.             }
  323.         }
  324.     } else {
  325.         cout << "Wystąpił błąd. Sprobuj ponownie!\n";
  326.     }
  327.     data.close();
  328. }
  329.  
  330. //////
  331.  
  332. //////
  333. int main () {
  334.     menu();
  335.     cin >> sym;
  336.     //////Menu
  337.     while (sym != '6') {
  338.         switch (sym) {
  339.             case '1':
  340.                 cout << "-----------------------------------------\n\n\tLista wizytów:\n\n-----------------------------------------\n";
  341.                 getVisit();
  342.                 break;
  343.             case '2':
  344.                 cout << "-----------------------------------------\n\t\tDodanie wizyty\n-----------------------------------------\n";
  345.                 addVisit();
  346.                 menu();
  347.                 break;
  348.             case '3':
  349.                 cout << "-----------------------------------------\n\n\tUsunięcie wizytów\n\n-----------------------------------------\n";
  350.                 deleteVisit();
  351.                 menu();
  352.                 break;
  353.             case '4':
  354.                 cout << "-----------------------------------------\n\n\tZmień wizytę\n\n-----------------------------------------\n";
  355.                 editVisit();
  356.                 menu();
  357.                 break;
  358.             case '5':
  359.                 cout << "-----------------------------------------\n\n\tWyszukiwanie\n\n\t1. ID\n\t2. Imie\n\t3. Nazwisko\n\t4. Data\n\n--------------------------------------\n";
  360.                 search();
  361.                 menu();
  362.                 break;
  363.                
  364.             default:
  365.                 cout << "Nie mamy takiego rozdzialu\n";
  366.                 break;
  367.         }
  368.         cin >> sym;
  369.     }
  370.     //////
  371. }
  372. //////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement