Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <iostream>
- #include <string>
- #include <fstream>
- using namespace std;
- // Folder z plikem
- string path = "/Users/vadimm/code/PWR/PWR/dane.txt";
- ////// Wywołanie menu
- char sym;
- void menu() {
- 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";
- }
- //////
- //////Otrzymujemy ID ostatniej wizyty
- unsigned int getID() {
- fstream data(path);
- int id = 1;
- if(data.is_open() == true){
- data.seekg( 0, ios::end);
- long size = data.tellg();
- data.seekg( 0, ios::beg);
- if (size == 0)
- {
- data << "1";
- }
- else {
- data >> id;
- }
- }
- else {
- ofstream data(path);
- data.close();
- getID();
- }
- data.close();
- return id;
- }
- //////
- int n = getID();
- //////
- //////Szukamy długość ID
- int getDigit(int n){
- int i = 0;
- for (;n > 0; i++) {
- n /= 10;
- }
- return i;
- }
- //////
- struct Przychodnia {
- int id;
- string imie;
- string nazwisko;
- string typ;
- string data;
- string imie_nazw_lek;
- string diagnoza;
- string leki;
- };
- //////
- ////// Dodanie wizyty
- void addVisit(){
- Przychodnia pacjent;
- ofstream data(path, ios::app | ios::binary);
- if(data.is_open() == true){
- pacjent.id = getID();
- cout << "\nPodaj imię pacjenta:\n";
- cin >> pacjent.imie;
- cout << "\nPodaj nazwisko pacjenta:\n";
- cin >> pacjent.nazwisko;
- cout << "\nPodaj typ wizity:\n";
- cin >> pacjent.typ;
- cout << "\nPodaj datę wizyty w postaci dd.mm.rrrr:\n";
- cin >> pacjent.data;
- cout << "\nPodaj Imię i Nazwisko lekarza:\n";
- cin >> pacjent.imie_nazw_lek;
- cout << "\nPodaj diagnozę:\n";
- cin >> pacjent.diagnoza;
- cout << "\nPodaj wypisane leki:\n";
- cin >> pacjent.leki;
- data.write((char*)&pacjent, sizeof(Przychodnia));
- data.close();
- ////// Zmieniamy ID
- fstream data(path, ios::out | ios::in);
- if (data.is_open())
- {
- data.seekp(0, ios::beg);
- data << getID() + 1;
- } else {
- cout << "Wystąpił błąd. Sprobuj ponownie!\n";
- }
- //////
- cout << "\n\nWizita dodana!\n\n";
- }
- else {
- cout << "Wystąpił błąd. Sprobuj ponownie!\n";
- }
- data.close();
- }
- //////
- //////Wypisywanie wizytów
- void getVisit() {
- Przychodnia pacjent;
- n = getID();
- ifstream data(path, ios::ate);
- if(data.is_open() == true){
- if (data.tellg() < 175) {
- cout << "-----------------------------------------\n\n\tBrak zapisów!\n\n-----------------------------------------\n";
- menu();
- } else {
- data.seekg(getDigit(n),ios::beg);
- for (int i = 1; i <= n - 1; i++) {
- data.read((char*)&pacjent, sizeof(Przychodnia));
- if (pacjent.imie == "") {
- continue;
- } else {
- cout << "\tWizyta #" << pacjent.id << endl;
- cout << "Imie: " << pacjent.imie << endl;
- cout << "Nazwisko: " << pacjent.nazwisko << endl;;
- cout << "Typ wizyty: " << pacjent.typ << endl;;
- cout << "Data: " << pacjent.data << endl;;
- cout << "Lekarz: " << pacjent.imie_nazw_lek << endl;;
- cout << "Diagnoza: " << pacjent.diagnoza << endl;;
- cout << "Przypisane leki: " << pacjent.leki << endl;;
- cout << "-----------------------------------------\n";
- }
- }
- }
- }
- else {
- cout << "Wystąpił błąd. Sprobuj ponownie!\n";
- }
- data.close();
- menu();
- }
- //////
- //////Usuwanie wizytów
- void deleteVisit(){
- Przychodnia pacjent;
- fstream data(path, ios::in | ios::out);
- if(data.is_open() == true){
- int id;
- cout << "Podaj ID wizyty:\n";
- cin >> id;
- data.seekg(getDigit(n) + (id-1) * sizeof(Przychodnia),ios::beg);
- data.read((char*)&pacjent, sizeof(Przychodnia));
- pacjent.imie = "";
- pacjent.nazwisko = "";
- pacjent.typ = "";
- pacjent.data = "";
- pacjent.imie_nazw_lek = "";
- pacjent.diagnoza = "";
- pacjent.leki = "";
- data.seekg(getDigit(n) + (id-1) * sizeof(Przychodnia),ios::beg);
- data.write((char*)&pacjent, sizeof(Przychodnia));
- cout << "Wizyta się usunięła!\n";
- } else {
- cout << "Wystąpił błąd. Sprobuj ponownie!\n";
- }
- data.close();
- }
- void editVisit(){
- Przychodnia pacjent;
- fstream data(path, ios::in | ios::out);
- if(data.is_open() == true){
- int id;
- cout << "Podaj ID wizyty:\n";
- cin >> id;
- data.seekg(getDigit(n) + (id-1) * sizeof(Przychodnia),ios::beg);
- data.read((char*)&pacjent, sizeof(Przychodnia));
- 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";
- char sym;
- cin >> sym;
- switch (sym) {
- case '1':{
- cout << "Podaj nowe imie:\n";
- cin >> pacjent.imie;
- data.seekg(getDigit(n) + (id-1) * sizeof(Przychodnia),ios::beg);
- data.write((char*)&pacjent, sizeof(Przychodnia));
- cout << "\nImie się zmieniło!\n";
- break;
- }
- case '2':{
- cout << "Podaj nowe nazwisko:\n";
- cin >> pacjent.nazwisko;
- data.seekg(getDigit(n) + (id-1) * sizeof(Przychodnia),ios::beg);
- data.write((char*)&pacjent, sizeof(Przychodnia));
- cout << "\nNazwisko się zmieniło!\n";
- break;
- }
- case '3':{
- cout << "Podaj nowy typ wizyty:\n";
- cin >> pacjent.typ;
- data.seekg(getDigit(n) + (id-1) * sizeof(Przychodnia),ios::beg);
- data.write((char*)&pacjent, sizeof(Przychodnia));
- cout << "\nTyp się zmienił!\n";
- break;
- }
- case '4':{
- cout << "Podaj nową datę:\n";
- cin >> pacjent.data;
- data.seekg(getDigit(n) + (id-1) * sizeof(Przychodnia),ios::beg);
- data.write((char*)&pacjent, sizeof(Przychodnia));
- cout << "\nData się zmieniła!\n";
- break;
- }
- case '5':{
- cout << "Podaj nowego lekarza:\n";
- cin >> pacjent.imie_nazw_lek;
- data.seekg(getDigit(n) + (id-1) * sizeof(Przychodnia),ios::beg);
- data.write((char*)&pacjent, sizeof(Przychodnia));
- cout << "\nLekarz się zmienił!\n";
- break;
- }
- case '6':{
- cout << "Podaj nową diagnozę:\n";
- cin >> pacjent.diagnoza;
- data.seekg(getDigit(n) + (id-1) * sizeof(Przychodnia),ios::beg);
- data.write((char*)&pacjent, sizeof(Przychodnia));
- cout << "\nDiagnoza się zmieniła!\n";
- break;
- }
- case '7':{
- cout << "Podaj nowe leki:\n";
- cin >> pacjent.leki;
- data.seekg(getDigit(n) + (id-1) * sizeof(Przychodnia),ios::beg);
- data.write((char*)&pacjent, sizeof(Przychodnia));
- cout << "\nLeki się zmieniły!\n";
- }
- default:{
- break;
- }
- }
- } else {
- cout << "Wystąpił błąd. Sprobuj ponownie!\n";
- }
- data.close();
- }
- //////Wyszukiwanie wizyty
- void search(){
- Przychodnia pacjent;
- ifstream data(path, ios::in);
- if (data.is_open()) {
- data.seekg(getDigit(n),ios::beg);
- char sym;
- cin >> sym;
- switch (sym) {
- case '1': {
- cout << "-----------------------------------------\n\n\t\tWyszukiwanie ID\n\n-----------------------------------------\n";
- int id;
- cout << "Podaj ID wizyty:\n";
- cin >> id;
- for (int i = 1; i <= n - 1; i++) {
- data.read((char*)&pacjent, sizeof(Przychodnia));
- if (pacjent.id == id) {
- cout << "\tWizyta #" << pacjent.id << endl;
- cout << pacjent.imie << endl;
- }
- }
- break;
- }
- case '2': {
- cout << "-----------------------------------------\n\n\t\tWyszukiwanie imiony\n\n-----------------------------------------\n";
- string imie;
- cout << "Podaj imię pacjenta:\n";
- cin >> imie;
- for (int i = 1; i <= n - 1; i++) {
- data.read((char*)&pacjent, sizeof(Przychodnia));
- if ((pacjent.imie) == imie) {
- cout << "\tWizyta #" << pacjent.id << endl;
- cout << pacjent.imie << endl;
- }
- }
- break;
- }
- case '3': {
- cout << "-----------------------------------------\n\n\t\tWyszukiwanie nazwiska\n\n-----------------------------------------\n";
- string nazwisko;
- cout << "Podaj nazwisko pacjenta:\n";
- cin >> nazwisko;
- for (int i = 1; i <= n - 1; i++) {
- data.read((char*)&pacjent, sizeof(Przychodnia));
- if (pacjent.nazwisko == nazwisko) {
- cout << "\tWizyta #" << pacjent.id << endl;
- cout << pacjent.imie << endl;
- }
- }
- break;
- }
- case '4': {
- cout << "-----------------------------------------\n\n\t\tWyszukiwanie daty\n\n-----------------------------------------\n";
- string ddata;
- cout << "Podaj datę wizyty:\n";
- cin >> ddata;
- for (int i = 1; i <= n - 1; i++) {
- data.read((char*)&pacjent, sizeof(Przychodnia));
- if (pacjent.data == ddata) {
- cout << "\tWizyta #" << pacjent.id << endl;
- cout << pacjent.imie << endl;
- }
- }
- break;
- }
- default: {
- cout << "Nie mamy takiego parametru\n";
- break;
- }
- }
- } else {
- cout << "Wystąpił błąd. Sprobuj ponownie!\n";
- }
- data.close();
- }
- //////
- //////
- int main () {
- menu();
- cin >> sym;
- //////Menu
- while (sym != '6') {
- switch (sym) {
- case '1':
- cout << "-----------------------------------------\n\n\tLista wizytów:\n\n-----------------------------------------\n";
- getVisit();
- break;
- case '2':
- cout << "-----------------------------------------\n\t\tDodanie wizyty\n-----------------------------------------\n";
- addVisit();
- menu();
- break;
- case '3':
- cout << "-----------------------------------------\n\n\tUsunięcie wizytów\n\n-----------------------------------------\n";
- deleteVisit();
- menu();
- break;
- case '4':
- cout << "-----------------------------------------\n\n\tZmień wizytę\n\n-----------------------------------------\n";
- editVisit();
- menu();
- break;
- case '5':
- cout << "-----------------------------------------\n\n\tWyszukiwanie\n\n\t1. ID\n\t2. Imie\n\t3. Nazwisko\n\t4. Data\n\n--------------------------------------\n";
- search();
- menu();
- break;
- default:
- cout << "Nie mamy takiego rozdzialu\n";
- break;
- }
- cin >> sym;
- }
- //////
- }
- //////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement