Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Zakład fryzjerski - weryfikacja programu

Ostatnio zmodyfikowano 2012-01-09 23:44
Autor Wiadomość
pekfos
» 2012-01-09 19:35:43
Jak to już wszystko, to zamykaj.
P-47752
ptaq
Temat założony przez niniejszego użytkownika
» 2012-01-09 20:07:29
Zdaje sobie sprawe jak meczace jest sprawdzanie tak amatorskiego kodu ;p no ale ... jak ktoś znajdzie chwilke to bede wdzieczny.
@akwes
[cytat]
Właściwie to faktycznie może prościej będzie zapisywać klienta do pliku za każdym razem, ale wczytywać klientów, wizyty i salony już można by do jakiegoś kontenera (vector, list).
[/cytat]
Myslalem, myslalem i wymyslilem iż jeśli zrobie w ten sposób, a miedzy czasie zmieni sie lista klientow czy też wizyt w pliku (nowa wizyta, nowy klient), to na cóż przyda sie nieaktualna, dynamicznie zaalokowana lista ? 

C/C++
#include<iostream>
#include<string>
#include<fstream>




class Salon {
public:
    void CheckTime();
    void addVisit( std::string imie, std::string nazwisko, std::string tel, std::string godzina, std::string data );
    void uslugi();
    void CheckVisits();
};


class Osoba {
public:
   
    void znajdzOsobe( std::string imie, std::string nazwisko );
    void addKlient( std::string imie, std::string nazwisko, std::string tel, std::string godzina, std::string data );
    void addPracownik( std::string imie, std::string nazwisko, std::string tel, std::string etat, std::string wynagrodzenie );
   
};


void Salon::CheckTime()
{
    std::string time, date;
    std::cout << "podaj godzine i date wizyty: ##:## dd.mm.rrrr  " << std::endl;
    std::cin >> time >> date;
    std::string line;
    int czyZnaleziono, czyZnaleziono2;
   
    while( czyZnaleziono != std::string::npos )
    {
        std::ifstream fileInput( "wizyty.txt" );
        if( fileInput.is_open() )
        {
            while( std::getline( fileInput, line ) )
            {
                czyZnaleziono = line.find( time );
                czyZnaleziono2 = line.find( date );
                if( czyZnaleziono && czyZnaleziono2 != std::string::npos )
                {
                    std::cout << "termin jest zajety " << std::endl;
                    std::cout << "podaj inny termin" << std::endl;
                    std::cin >> time >> date;
                    std::cout << std::endl;
                }
            }
        }
    }
    std::cout << std::endl;
    std::cout << "termin jest wolny" << std::endl;
    std::cin.clear();
    std::cin.sync();
    return;
}

void Salon::addVisit( std::string imie, std::string nazwisko, std::string tel, std::string godzina, std::string data )
{
    std::cout << "dodaj wizyte: imie, nazwisko, tel, godzine[##:##] i date[dd.mm.rrr] " << std::endl;
   
    {
        std::getline( std::cin, imie );
        std::getline( std::cin, nazwisko );
        std::getline( std::cin, tel );
        std::getline( std::cin, godzina );
        std::getline( std::cin, data );
       
       
        std::ofstream fileOutput( "wizyty.txt", std::ios::app );
       
        if( fileOutput.is_open() )
        {
            fileOutput << imie << "  " << nazwisko << "  " << tel << "  " << godzina << " " << data << std::endl;
            fileOutput.close();
            std::cout << " wizyta dodana !" << std::endl;
        }
        else
        {
            std::cout << " nie zapisano !" << std::endl;
        }
    }
}

void Salon::CheckVisits()
{
    std::string line;
    std::ifstream fileInput( "wizyty.txt" );
    if( fileInput.is_open() )
    {
        while( std::getline( fileInput, line ) )
        {
            std::cout << line << std::endl;
        }
    }
}





void Osoba::addKlient( std::string imie, std::string nazwisko, std::string tel, std::string godzina, std::string data )
{
    std::cout << "dodaj klienta: imie, nazwisko, tel, godzine[##:##] i date [dd.mm.rrrr] wizyty " << std::endl;
    std::getline( std::cin, imie );
    std::getline( std::cin, nazwisko );
    std::getline( std::cin, tel );
    std::getline( std::cin, godzina );
    std::getline( std::cin, data );
   
    std::ofstream fileOutput( "klienci.txt", std::ios::app );
   
    if( fileOutput.is_open() )
    {
        fileOutput << imie << "  " << nazwisko << "  " << tel << "  " << godzina << " " << data << std::endl;
        fileOutput.close();
        std::cout << " klient dodany !" << std::endl;
    }
    else
    {
        std::cout << " nie zapisano !" << std::endl;
    }
}

void Osoba::znajdzOsobe( std::string imie, std::string nazwisko )
{
    std::getline( std::cin, imie );
    std::getline( std::cin, nazwisko );
    std::cout << "podaj imie i nazwisko klienta w jednej lini: ## ## " << std::endl;
    std::cin >> imie >> nazwisko;
   
    std::string line, plik;
    char znak;
    int czyZnaleziono, czyZnaleziono2;
    std::cout << "szukana osoba jest klient czy pracownik ? K/P " << std::endl;
    std::cin >> znak;
   
    if( znak != 'K' && znak != 'k' && znak != 'P' && znak != 'p' )
    {
        while( znak != 'K' && znak != 'k' && znak != 'P' && znak != 'p' )
        { std::cout << " niepoprawny wybor ! " << std::endl;
            std::cin >> znak; }
    }
    if( znak == 'K' || 'k' )
         plik = "klienci.txt";
   
    if( znak == 'P' | 'p' )
         plik = "pracownicy.txt";
   
    std::ifstream fileInput( plik.c_str() );
    if( fileInput.is_open() )
    {
        while( std::getline( fileInput, line ) )
        {
            czyZnaleziono = line.find( imie );
            czyZnaleziono2 = line.find( nazwisko );
            if( czyZnaleziono && czyZnaleziono2 != std::string::npos )
            {
                std::cout << "znaleziono klienta\n";
                std::cout << line << std::endl;
                break;
            }
        }
        if( czyZnaleziono == std::string::npos )
        {
            std::cout << std::endl;
            std::cout << "klienta nie ma w bazie !";
        }
       
    }
   
}


int main()

{
   
    std::cout << "          =======================================================          " << std::endl;
    std::cout << "     ..::: Witaj w systemie zarzadzania zakladem fryzjerskim !!! :::..     " << std::endl;
    std::cout << "          =======================================================          " << std::endl;
    std::cout << std::endl;
    std::cout << "Menu:" << std::endl;
    std::cout << "[1] - dodaj wizyte.\n[2] - znajdz osobe.\n[3] - nowy klient.\n[4] - sprawdz wizyty .\n[5] - .";
    std::cout << "\n[6] - drukuj liste pracownikow.\n[7] - drukuj liste klientow.\n[8] - zakoncz.\n" << std::endl;
   
    int num;
    std::string imie, nazwisko, tel, godzina, data, imieInazwisko;
    std::cin >> num;
   
    Salon mySalon;
    Osoba osoba;
   
    switch( num )
    {
    case 1:
        {
            mySalon.CheckTime();
            mySalon.addVisit( imie, nazwisko, tel, godzina, data );
            std::cin.clear();
            std::cin.sync();
            break;
        }
    case 2:
        {
            osoba.znajdzOsobe( imie, nazwisko );
            std::cin.clear();
            std::cin.sync();
            break;
        }
    case 3:
        {
            osoba.addKlient( imie, nazwisko, tel, godzina, data );
            break;
        }
    case 4:
        {
            mySalon.CheckVisits();
            break;
        }
        default:
        std::cout << "koniec";
    }
   
}

ps. jak sie robi cytat ??? ;p
P-47763
pekfos
» 2012-01-09 20:37:01
[cytat][/cytat]
P-47770
akwes
» 2012-01-09 22:46:57
@ptaq programowałeś może kiedyś w jakimś innym języku :P ? Chyba nie czujesz bluesa z obiektami.

Jest kwestia tego czy chcesz to zrobić dobrze czy po prostu zrobić żeby działało :P

Bo tutaj powinno być powiązanie klienta z wizytą, a u Ciebie nie da się dowiedzieć o której jest dany klient, da się dowiedzieć czy dany termin jest wolny, czyli niewiele ;)

Wolałbym uniknąć męczenia Cię SQLem :) Więc proponuje Ci spróbowanie chociaż zrobienia prostej bazy z relacjami :)

C/C++
class Osoba
{
public:
    int ID;
    string Imie;
    string Nazwisko;
    string Telefon;
};

class ListaOsob
{
public:
    std::vector < Osoba *> Lista;
    void WgrajOsoby();
    void ZapiszOsoby();
    void DodajOsobe( Osoba * ); // dodaje do listy gotowa osobe
    void DodajOsobe(); // najpierw pyta o dane, potem dodaje
};

class Wizyta
{
public:
    int ID_wizyty;
    int ID_osoby;
    string Data;
    string Godzina;
};

class ListaWizyt
{
public:
    std::vector < Wizyta *> Lista;
    void WgrajWizyty();
    void ZapiszWizyty();
    void DodajWizyte( Wizyta * ); // jw
    void DodajWizyte(); // jw
};

Hm... Taki szkielet jakbym to widział. Dzięki ID masz wtedy połączenie relacją (ID jest kluczem) wizyty z klientem. Czyli jesteś w stanie określić: Kiedy dany klient ma wizyty, kto o danym terminie ma wizytę, czy termin jest wolny itd.

Nie wiem jaki jest Twój poziom w C++ :P Ja przez długi czas nawet jak już znałem składnię języka, operacje na listach i wektorach itd. to pisałem "dziwny kod". Więc nie wiem jak proste rozwiązanie Ci proponować :P

 
P-47791
ptaq
Temat założony przez niniejszego użytkownika
» 2012-01-09 23:44:27
Nigdy wczesniej nie programowalem, fakt że troche sie zwiesilem przy obiektach ;p. To ze jestem poczatkujacy to pisac chyba nie trzeba ;p.
A co do programu , wybierajac opcje "znajdz osobe, a dalej "klienta" wyświetla pelne dane wraz z data i godzina wizyty o ile dany klient istnieje.
Jasne ze chce to zrobic dobrze, po to caly ten balagan ;p.
Dzieki za pomoc, popracuje nad tym :).
P-47798
1 2 « 3 »
Poprzednia strona Strona 3 z 3