Премини към съдържанието
  • Добре дошли!

    Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

    Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

     

C++ Моля за помощ със задача за запис на час


Препоръчан отговор

Здравейте!

Опитвам се да съставя програма, с която да бъдат записвани часове. Ето и кода, който имам.


#include <iostream>
#include<fstream>
#include<windows.h>
#include<conio.h>
#include<stdio.h>


using namespace std;


class kabinet
{
    string day;
    int hour;
    string exam;
    char name[50];
    char address[50];
    int phone[10];
    int age[3];//години

public:

    void main_menu();//главно меню
    void type_examin();//вид преглед

    void setDay();//въвеждане на  ден
    void setHour();//назоваването на часа
    int check(int);

    void price_menu();//ценова листа на предлаганите услуги

    void showHour();//показване на свободните часове

    void edit();//опция за промяна

    void modifyHour();//промяна на часа
    void delete_hour();//изтриване на запазения час

    void showDisp();//изписване на информацията относно прегледа


};

void kabinet::main_menu()
{

    system("color D1");
    setlocale(LC_ALL, "bulgarian");    //за използване на български език
    system("chcp 1251>0");


    int choice = 0;

    while (choice != 5)
    {

        system("cls");

        
        cout << "                              /      1.Записване на час                 / /  /" << endl;
        cout << "                             /      2.Показване записани часове        / /  /" << endl;
        cout << "                            /      3.Промяна на час                   / /  /" << endl;
        cout << "                           /      4.Ценоразпис                       /  \_/" << endl;
        cout << "                          /      5.Изход                            /    *" << endl;
        cout << "                         /                                         /  " << endl;
        cout << "                        /                                         /  " << endl;
        cout << "                       /                                         /  " << endl;
        cout << "                      /_________________________________________/  " << endl

            << endl << endl << endl << "Моля въведете своя избор." << endl;
        cin >> choice;


        switch (choice) {

        case 1:system("cls");;
            type_examin();
            break;
        case 2: system("cls");;
            showHour();
            break;
        case 3: system("cls");;
            modifyHour();
            break;
        case 4: system("cls");;
            price_menu();
            break;
        case 5:
            default: {
            cout << "Благодарим Ви!";
            cout << "Благодарим Ви, че използвахте нашата система за записване." << endl;
            _getch();
        }
        }


    }
}

void kabinet::type_examin()
{
    system("cls");
    system("color F6");

    int choiExam = 0;
    string exam;

    while (choiExam != 7)
    {

        cout << endl << endl << endl;


        
        cout << "                               /     1.Медицински преглед                / /  / *" << endl;
        cout << "                              /     2.Диспансерен преглед               / /  /" << endl;
        cout << "                             /     3.Профилактичен преглед             / /  /" << endl;
        cout << "                            /     4.Детска консултация                / /  /" << endl;
        cout << "                           /     5.Женска консултация                /  \_/" << endl;
        cout << "                          /     6.Издаване на документи             /    *" << endl;
        cout << "                         /                                         /  " << endl;
        cout << "                        /     7.Изход                             /  " << endl;
        cout << "                       /                                         /  " << endl;
        cout << "                      /_________________________________________/  " << endl

            << endl << endl << endl << "Моля въведете своя избор." << endl;
        cin >> choiExam;

        string exam;

        switch (choiExam)
        {
        case 1:
            exam = "Медицински преглед";
            setDay(); break;
        case 2: exam = "Диспансерен преглед";
            setDay(); break;
        case 3: exam = "Профилактичен преглед ";
            setDay(); break;
        case 4: exam = "Детска консултация";
            setDay(); break;
        case 5: exam = "Женска консултация ";
            setDay(); break;
        case 6:  exam = "Издаване на документи ";
            setDay(); break;
        case 7:break;
        default:
        {
            cout << "Благодарим Ви!";
            _getch();

        }
        }
    }
}

                void kabinet::setDay()
                {

                    system("cls");
                    system("color B2");

                    int day;
                    string date;

                    while (day!=5) {

                        cout << endl << endl << endl;

                        cout << "                                  __________________________________   " << endl;
                        cout << "                                 /                                 /  " << endl;
                        cout << "                                /                                 /  " << endl;
                        cout << "                               /     1.Понеделник                /  " << endl;
                        cout << "                              /     2.Вторник                   /  " << endl;
                        cout << "                             /     3.Сряда                     /  " << endl;
                        cout << "                            /     4.Четвъртък                 /  " << endl;
                        cout << "                           /     5.Петък                     /  " << endl;
                        cout << "                          /                                 /  " << endl;
                        cout << "                         /                                 /  " << endl;
                        cout << "                        /_________________________________/  " << endl

                            << endl << endl << endl << "Моля въведете своя избор." << endl;

                        cin >> day;


                        switch (day)
                        {
                        case 1:
                            date = " Понеделник ";
                            setHour();
                            break;
                        case 2: date = " Вторник ";
                            setHour();
                            break;
                        case 3: date = " Сряда ";
                            setHour();
                            break;
                        case 4: date = " Четвъртък ";
                            setHour();
                            break;
                        case 5: date = " Петък ";
                            setHour();
                            break;
                        default:{
                            cout << "Грешен избор";
                            _getch();
                        }
                    }
                }
            }


            void kabinet::setHour()
            {
                system("cls");
                system("color C3");

                string custumer;
                string day;


                int c, flag;


                ofstream fout("Записани", ios::app);

                cout << endl << endl << " Въведете час: ";
                cin >> c;
                flag = check(c);

                if (flag)
                {
                    cout << "-----------------------------------" << endl;
                    cout << "   Избраният от Вас час е зает.    " << endl;
                    cout << "-----------------------------------" << endl;
                    cout << "      Моля, въведете друг.         " << endl;
                    cout << "-----------------------------------" << endl;
                }

                else
                {
                hour = c;

                cout << endl << endl << "Въведете име и фамилия: ";

                gets(name);

                cout << "Адрес: ";
                gets(address);

                cout << " Телефонен номер: ";

                gets(phone);

                cout << endl << endl << "Възраст: ";
                gets(age);

                fout.write((char*)this, sizeof(kabinet));

                cout << "Успешно записан час!";
            }
                cout << "Натиснете, който и да е клавиш, за да продължите!!!";
                _getch();
                fout.close();
        }

void kabinet::price_menu()
                {


                    cout << endl << endl << endl;

                    cout << "                                  _______________________________________________  " << endl;
                    cout << "                                 /                                              /  " << endl;
                    cout << "                                /                                              /  " << endl;
                    cout << "                               /  Медицинско за работа - 15 лева.             /  " << endl;
                    cout << "                              /  Медицинско за шофьорска книжка              /  " << endl;
                    cout << "                               /                        - 20 лева.            /  " << endl;
                    cout << "                            /  Оформяне на документи за застраховка        /  " << endl;
                    cout << "                           /                       - 50 лева.             /  " << endl;
                    cout << "                          /   Потребителски такси:                       /  " << endl;
                    cout << "                         /           за пенсионери - 1лев.              /  " << endl;
                    cout << "                        /            за осигурени лица - 2,90лева.     /  " << endl;
                    cout << "                       /                                              /  " << endl;
                    cout << "                      /   Преглед за лица, които не са осигурени     /  " << endl;
                    cout << "                     /                       - 20 лева.             /  " << endl;
                    cout << "                    /  1.Назад към главното меню                   /  " << endl;
                    cout << "                   /______________________________________________/  " << endl;

                    cout << "Натиснете, който и да е клавиш, за да продължите!!!";
                    _getch();
                    fout.close();

        }
        void kabinet::showHour();
        {
            system("cls");
            system("color B1");
            ifstream fin("Записани данни: ", ios::in);
            int c, flag;

            cout << "Въведете запазен час: ";
            cin >> c;
            while (!fin.eof())

            {
                fin.read((char*)this, sizeof(kabinet));
                if (hour == c)
                {
                    system("cls");
                    cout << " Данни на пациента. ";
                    cout << "--------------------" << endl;
                    cout << "Имена: " << name;
                    cout << "Адрес: " << address;
                    cout << "Телефонен номер: " << phone;
                    cout << "Записан час за: " << date << "Час: " << hour;

                    flag = 1;
                    break;

                }

            }
            if (nomb== 0)
                cout << "Търсеният от вас номер не фигурира!!!";

            cout << "Натиснете, който и да е клавиш, за да продължите!!!";
            _getch();
            fin.close();
        }


        void kabinet::edit()
        {
            system("cls");
            system("color A3");
            int c, flag;


            cout << "\n Меню за промяна";
            cout << "\n ***************";
            cout << "\n 1.Промяна на час ";
            cout << "\n 2.Изтриване на запазен час";

            cout << "Моля, изберете: ";
            cin >> choise;

            system("cls");
            cout << "\n Въведете запазен час: ";
            cin >> c;

            switch (choice)
            {
            case 1: modifyHour(c);
                break;
            case 2:
                 delete_hour(c);//изтриване на запазения час
                break;
            default: cout << "\n Грешен избор!!";
            }

            cout << "\n  Натиснете, който и да е клавиш, за да продължите!!!";
            _getch();
        }

        int kabinet::check(int c)
        {
            system("color F2");
            int flag = 0;
            ifstream fin("Записи: ", ios::in);
            while (!fin.eof())
            {
                fin.read((char*)this, sizeof(hotel));
                if (hour== c)
                {
                    flag = 1;
                    break;
                }
            }

            fin.choice();
            return (flag);

}

        void kabinet::modifyHour(int c)

        {
            system("color C3");
            long pos, flag = 0;
            fstream file("Record.dat", ios::in | ios::out | ios::binary);

            while (!file.eof())
            {
                pos = file.tellg();
                file.read((char*)this, sizeof(kabinet));
                if (hour == c)
                {
                    cout << "\n Въведете данните наново";
                    cout << "\n ***********************";
                    cout << "\n Име: ";
                    gets(name);
                    cout << " Адрес: ";
                    gets(address);
                    cout << " Телефонен номер: ";
                    gets(phone);

                    file.seekg(pos);
                    file.write((char*)this, sizeof(kabinet));
                    cout << "\n Данните Ви са променени!!!";
                    flag = 1;
                    break;
                }
            }

            if (flag == 0)
                cout << "\n Часът не е намерен!";

            file.close();


        }

        void kabinet::delete_hour(int c)

            int flag = 0;
        char ch;
        ifstream fin("Record.dat", ios::in);
        ofstream fout("temp.dat", ios::out);

        while (!fin.eof())
        {
            fin.read((char*)this, sizeof(kabinet));
            if (hour == c)
            {
                cout << "\n Име: " << name;
                cout << "\n Адрес: " << address;
                cout << "\n Телефонен номер: " << phone;
                cout << "\n\n Искате ли да изтриете данните? (y/n): ";
                cin >> ch;

                if (ch == 'n')
                    fout.write((char*)this, sizeof(kabinet));

                flag = 1;
            }
            else
                fout.write((char*)this, sizeof(kabinet));
        }
        fin.close();
        fout.close();

        if (flag == 0)
            cout << "\n Часът не е намерен.";
        else
        {
            remove("Record.dat");
            rename("temp.dat", "Record.dat");
        }
}

int main()
{


    kabinet h;

    system("color A4"

        system("cls");
    cout << "\n\t\t\t*********************************";
    cout << "\n\t\t\t*    Проект за запис на час     *";
    cout << "\n\t\t\t*********************************";
    Sleep(200);

    char text[] = { "\n\n\n\n\t\t };
    for (int p = 0; p < strlen(text); p++)   
        cout << text[p];
        Sleep(40);
    }

    cout << "\n\n\tНатиснете който и да е клавиш!!";
    _getch();
    h.main_menu();
}

Линк към коментара
Сподели в други сайтове

Първоначално, докато четях това което е написано. Направи ми впечатление това.  Може при C++  да е така не знам. :)

 for е брояч и когато се знае,  до колко ще се повтаря самата задача. 

Другото, което while  от примера горе while (day!=5). Ако въведа 6 или 0. 0 не е 5 или 6 не е 5.  Какво ще стане?  

Няма и try catch. Няма и Exception.

Линк към коментара
Сподели в други сайтове

:) Благодаря за отговора първо.
Тепърва започвам с програмирането и имам много неизвестни. 
За часа няма да коментирам изобщо.

Опитвам се да премахна грешките, с което опростявам програмата. Ползвах код на друга такава, която е със сходни за моите потребности функции.
Искаше ми се, да запазва въведените от потребителя данни, да могат да бъдат извиквани, при нужда променяни...

Линк към коментара
Сподели в други сайтове

Имам въпрос: Защо не сте почнали с простите неща като цикли типове променливи и други а директно с ООП? Предполагам структурата на учебника ви е точно такава...

Линк към коментара
Сподели в други сайтове

Вижте структури ако сте взели

Код няма да ви дам щот следвам  структурите в учебника а тук някои колеги вдигат пара и викат че не знам С++

Линк към коментара
Сподели в други сайтове

А ако ви дам учебници ще ви помогне ли

Линк към коментара
Сподели в други сайтове

Цитат

Код няма да ви дам щот следвам  структурите в учебника а тук някои колеги вдигат пара и викат че не знам С++

Какво имаш предвид с колеги?А че не знаеш Ц++ е повече от ясно.

Линк към коментара
Сподели в други сайтове

преди 11 часа, Martin Chekurov написа:

Какво имаш предвид с колеги?А че не знаеш Ц++ е повече от ясно.

Сигурен ли си? Пак казвам следвам структурата на учебниците ясно ли е? Напишете учебник с удоволствие бих го разучил ако МОН го приеме с удоволствие ще го следвам. Как си мислите ако ученик иде с код написан от вас каква ще е оценката му?

Аз бих го повикал на рандеву и стъпка по стъпка бих го накарал да обясдни кое какво е ако дори един ред не може двойка..... Ако обясни целия код лиично бих го уредил в най доброте ни университети

Линк към коментара
Сподели в други сайтове

на 13.11.2018 г. в 0:09, petie1 написа:

Сигурен ли си? Пак казвам следвам структурата на учебниците ясно ли е? Напишете учебник с удоволствие бих го разучил ако МОН го приеме с удоволствие ще го следвам. Как си мислите ако ученик иде с код написан от вас каква ще е оценката му?

Аз бих го повикал на рандеву и стъпка по стъпка бих го накарал да обясдни кое какво е ако дори един ред не може двойка..... Ако обясни целия код лиично бих го уредил в най доброте ни университети

Аз не мога да разбера какво имаш в предвид, че следваш структурата на учебниците.Ученик ли си?Учител ли си?Какво си?Ти нямаш елементарни познания по C/C++ и просто не мога да си представя да изпитваш когото и да било.

Линк към коментара
Сподели в други сайтове

преди 9 часа, Martin Chekurov написа:

Аз не мога да разбера какво имаш в предвид, че следваш структурата на учебниците.Ученик ли си?Учител ли си?Какво си?Ти нямаш елементарни познания по C/C++ и просто не мога да си представя да изпитваш когото и да било.

Пак ви Ви казвам писах каквото има дадено в учебнинците единственото което забравих  обаче беше размера на масива и то щот не бях писал на С++ скоро за което Вие ми напомнихте

 

#include <iostream> 

using namespace std;


int main()

{
  const int n=30;
  
    cout <<" Vyvedi razmera na masiva"<<"\n";
    cin>>n;
  
  while (n<0 || n>30 )
  {
    cout <<" Vyvedi razmera na masiva"<<"\n";
    cin>>n;
  }
  
  for (int c=0; c<n; c++)
  {
    cin>>array[c];
  }
  
  cin.get();
  return 0;
}

Ето този код е верен  според Тони Гладис ако не сте съгласен пишете му или издайте собствен учебник който МОН да приеме ще го разуча и ще пиша по "мартински"....

Кой съм аз никак ама никак не ви интересува нито пък мен кой сте вие.......

Линк към коментара
Сподели в други сайтове

А бе ти да не си трол?Какъв е този супер грешен код който пак качваш тук.Или пиши верни неща или въобще недей да пишеш.Този код пробва ли да го компилираш?Значи първо array не се знае какво е, второ n e const и ти се опитваш да пишеш в него, трето защо ти е стойност със знак за размер на масив по-правилно е unsigned int (ако не знаеш по подразбиране int е signed).Иначе грам не ме интересува кой си.Интересува ме с какво се занимаваш.И хайде стига с тези учебници.Учебник за програмиране няма.Има книги за програмиране и очевидно тези които ползваш не стават за нищо.По-добре ги запали.Какво означава "пиша по мартински"?Да не би да означава "пиша правилно"?Виж сега програмирането не е за всеки и със сигурност не е за теб.По-добре си намери друго занимание и не си губи времето.

Линк към коментара
Сподели в други сайтове

преди 9 часа, Martin Chekurov написа:

А бе ти да не си трол?Какъв е този супер грешен код който пак качваш тук.Или пиши верни неща или въобще недей да пишеш.Този код пробва ли да го компилираш?Значи първо array не се знае какво е, второ n e const и ти се опитваш да пишеш в него, трето защо ти е стойност със знак за размер на масив по-правилно е unsigned int (ако не знаеш по подразбиране int е signed).Иначе грам не ме интересува кой си.Интересува ме с какво се занимаваш.И хайде стига с тези учебници.Учебник за програмиране няма.Има книги за програмиране и очевидно тези които ползваш не стават за нищо.По-добре ги запали.Какво означава "пиша по мартински"?Да не би да означава "пиша правилно"?Виж сега програмирането не е за всеки и със сигурност не е за теб.По-добре си намери друго занимание и не си губи времето.

A Грешка при преписването извинете ме ще го редактирам,Ич не ми пука грам кой сте,какво е трол? Кода е по Тони Гладис,същия код е дал и Бярне Строускоп казах ви напишете учебник по програмиране опишете как се пише и аз ще пиша по "Мартински"

#include <iostream> 

using namespace std;


int main()

{
  const int n=30;
  int array[n];// eto ti go masiva koyto zabravih da napisha pri prepisvaneto
  
    cout <<" Vyvedi razmera na masiva"<<"\n";
    cin>>n;
  
  while (n<0 || n>30 )
  {
    cout <<" Vyvedi razmera na masiva"<<"\n";
    cin>>n;
  }
  
  for (int c=0; c<n; c++)
  {
    cin>>array[c];
  }
  
  cin.get();
  return 0;
}

Нещо става с форума

Линк към коментара
Сподели в други сайтове

преди 1 час, Martin Chekurov написа:

А бе нали ти казах че n e const бе.Според теб правилно ли е да променяш const?

Не но като казах разберете се с Тони Гладис и Бярне Строускоп или напишете ваш учебник аз не оспорвам това което са писали те

И аз бях учуден като вас но нямам право да им оспорвам нещата...

Линк към коментара
Сподели в други сайтове

Starting Out  C++ Tonny Gladdis Chapter 7 Arrays

bjarne stroustrup programming principles and practice using c++  chapter 18 Vector and Arrays

Линк към коментара
Сподели в други сайтове

Чакай пак да видя и аз да не са две променливи само

Линк към коментара
Сподели в други сайтове

Ти си пълен идиот айде стига спори като не разбираш нищо.Не можеш да променяш const променлива НЕ СЕ КОМПИЛИРА!!!!!!!!!!!

Линк към коментара
Сподели в други сайтове

Хе Браво на мен създадох нов С++ и се чудя каква тази нова конструкция тя константата си била вътре в цикъла аз прочетох че я въвевежда и се чудя какво е това.......

преди 7 минути, Martin Chekurov написа:

Ти си пълен идиот айде стига спори като не разбираш нищо.Не можеш да променяш const променлива НЕ СЕ КОМПИЛИРА!!!!!!!!!!!

А аз да ви обиждам? Нали затова се чудех защо е тази промяна на константата

Линк към коментара
Сподели в други сайтове

Добавете отговор

Можете да публикувате отговор сега и да се регистрирате по-късно. Ако имате регистрация, влезте в профила си за да публикувате от него.

Гост
Напишете отговор в тази тема...

×   Вмъкнахте текст, който съдържа форматиране.   Премахни форматирането на текста

  Разрешени са само 75 емотикони.

×   Съдържанието от линка беше вградено автоматично.   Премахни съдържанието и покажи само линк

×   Съдържанието, което сте написали преди беше възстановено..   Изтрий всичко

×   You cannot paste images directly. Upload or insert images from URL.

 Сподели

×
×
  • Добави ново...

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите Условия за ползване