Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2019, 21:26   #1
Anonymous4722
 
Аватар для Anonymous4722
 
Регистрация: 28.03.2013
Сообщений: 5
По умолчанию Как с консоли записать строку или предложение в файл?

Не могу понять, как сделать так чтобы я ввел вопросы для тестируемого и они сохранились в файл, а потом студент после входа в систему мог открыть этот файл считать вопросы и пройти тест по этим вопросам, и получить оценку по 12 бальной шкале, и чтобы админ видел эти оценки, а также чтобы тестируемый их тоже видел? Или хотя бы покажите, как сделать запись вопросов для теста в файл?
Ниже мой код:
Код:
#include <iostream>
#include <iomanip>
#include <vector>
#include <string>
#include <algorithm>
#include <math.h>
#include <fstream>
#include <map>
#include <list>
#include <Windows.h>
using namespace std;
const char n = '\n';
void login(), registr(), menu(), statusCheck();
void statusCheck()
{
 
}
class Reg_user // register to user // регистрация
{
public:
    struct log_adm
    {
        char login[255];
        char password[255];
    };
 
    void login_adm() // вход для администратора
    {
        log_adm userIn, readIn;
        cout << "Введите логин ";
        cin >> userIn.login;
        cout << "Введите пароль ";
        cin >> userIn.password;
        ifstream in("user.dat", ios::binary);
        bool flag = false;
        while (!in.eof())
        {
            in.read(reinterpret_cast<char*>(&readIn), sizeof(log_adm)); // приведение типов
            if (strcmp(userIn.login, readIn.login) == 0 && strcmp(userIn.password, readIn.password) == 0);
            {
                flag = true;
                break;
            }
        }
        in.close();
        flag ? cout << "Вы успешно вошли в систему, " << userIn.login << "!\n"
            : cout << "Ошибка, вам нужно попробовать еще раз\n";
        cout << n;
        int m = 0;
        cout << "Вы можете выбрать опцию и нажать соответствующий её номер" << n;
        cout << "1. Составить и загрузить тест для тестируемого." << n;
        switch (m)
        {
        case 1: 
            ofstream fout; // создаю объект для записи в файл вопросов для теста
            fout.open("Test for the tested.txt"); // связваю объект с файлом и ниже начинаю записывать строки в файл
            fout << "";
 
        }
    }
 
    void To_make_a_test() // Составить тест
    {
 
    }
 
    struct log_users // регистрация
    {
        string name; // имя
        string adress; // название улицы
        string House_number; // номер дома 
        string num; // номер телефона
        char login[255]; // логин
        char password[255]; // пароль
    };
    
    void login()
    {
        log_users userIn, readIn;
        cout << "Введите логин ";
        cin >> userIn.login;
        cout << "Введите пароль ";
        cin >> userIn.password;
        ifstream in("user.dat", ios::binary);
        bool flag = false;
        while (!in.eof())
        {
            in.read(reinterpret_cast<char*>(&readIn), sizeof(log_users)); // приведение типов
            if (strcmp(userIn.login, readIn.login) == 0 && strcmp(userIn.password, readIn.password) == 0);
            {
                flag = true;
                break;
            }
        }
        in.close();
        flag ? cout << "Вы успешно вошли в систему, " << userIn.login << "!\n"
            : cout << "Ошибка, вам нужно попробовать еще раз\n";
    }
    
    void menu()
    {
        cout << "Привет, тестируемый!" << n;
        cout << "Войти или пройти регистрацию? (y/n) ";
        char temp;
        cin >> temp;
        if (temp == 'y')
        {
            login();
        }
        else if (temp == 'n')
        {
            registr();
        }
    }
 
    void registr() // регистрация Юзера. При регистрации он вводит Свой адрес, телефон и имя
    {
        log_users dataUser;
        char i; // определяю идентификатор чтобы идентифицировать переменную
        do
        {
            cout << "Имя тестируемого? ";
            cin >> dataUser.name;
            for (i = 0; dataUser.name[i]; i++)
            {
                if (dataUser.name[i] >= '0' && dataUser.name[i] <= '9')
                {
                    cout << "Имя тестируемого не может состоять из цифр или в вашем имени не должно быть цифр!" << n <<
                        "Имя должно состоять только из букв английского или русского алфавита!" << n
                        << "Пожалуйста повторите!" << n;
                    break;
                }
                if (dataUser.name[i] >= 'Aa' && dataUser.name[i] <= 'Zz' 
                    || dataUser.name[i] >= 'Аа' && dataUser.name[i] <= 'Яя');
            }
        } while (dataUser.name[i]);
 
        do
        {
            cout << "Название улицы? ";
            cin >> dataUser.adress;
            for (i = 0; dataUser.adress[i]; i++)
            {
                if (dataUser.adress[i] >= '0' && dataUser.adress[i] <= '9')
                {
                    cout << "В названии улицы должны быть только буквы" << n << "Повторите попытку" << n;
                    break;
                }
            }   if (dataUser.adress[i] >= 'Aa' && dataUser.adress[i] <= 'Zz'
                || dataUser.adress[i] >= 'Аа' && dataUser.adress[i] <= 'Яя');
        } while (dataUser.adress[i]);
 
        do
        {
            cout << "Номер дома? ";
            cin >> dataUser.House_number;
            for (i = 0; i < dataUser.House_number[i]; i++)
            {
                if (!isdigit(dataUser.House_number[i]))
                {
                    cout << "Номер дома должен содержать только цифры!" << n <<
                        "Попробуйте еще раз!" << n;;
                    break;
                }
                if (isdigit(dataUser.House_number[i]));
            }
        } while (dataUser.House_number[i]);
 
        do
        {
            cout << "Ваш номер телефона? ";
            cin >> dataUser.num;
            for (i = 0; i < dataUser.num[i]; i++)
            {
                if (!isdigit(dataUser.num[i]))
                {
                    cout << "Номер телефона должен содержать только цифры!" << n <<
                        "Попробуйте еще раз!" << n;;
                    break;
                }
                if (isdigit(dataUser.num[i]));
            }
        } while (dataUser.num[i]);
 
        ofstream out("users.dat", ios_base::binary | ios_base::app);
        cout << "ENTER LOGIN ";
        cin >> dataUser.login;
        cout << "ENTER PASSWORD";
        cin >> dataUser.password;
        out.close();
        cout << "Регистрация прошла успешно, " << dataUser.login << "!" << n;
    }
private:
};
 
void Selection_menu_output() // Вывод меню выбора
{
    Reg_user reg_stud, reg_adm;
 
    int m = 0;
    cout << "Выберете необходимый пункт меню нажав на соответствующий номер" << n <<
        "В качестве кого вы хотите войти в систему?" << n <<
        "1. Тестируемый" << n << "2. Администратор" << n;
    cin >> m;
    switch (m)
    {
    case 1: reg_stud.menu();
        break;
    case 2: reg_adm.login_adm();
        break;
    }
}
 
int main()
{
    setlocale(0, "");
    system("Color F0");
 
    Selection_menu_output();
}
Т. е я хочу составить вопросы для теста и за них определенная оценка.
Например 1. Вопрос? - 1 балл или 6 баллов и тд. За не правильный ответ 0 баллов. Потов это все суммируется и показывается процент правильных ответов и общий балл. Задание
Skype: Anonymous4722
ICQ: 220592937
e-mail: balashov_vadim@mail.ru
Anonymous4722 вне форума Ответить с цитированием
Старый 13.08.2019, 22:00   #3
Anonymous4722
 
Аватар для Anonymous4722
 
Регистрация: 28.03.2013
Сообщений: 5
По умолчанию

Не работает я уже пробовал.
Skype: Anonymous4722
ICQ: 220592937
e-mail: balashov_vadim@mail.ru
Anonymous4722 вне форума Ответить с цитированием
Старый 13.08.2019, 23:27   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Что не работает? Как пробовали? У меня все читается и пишется...
p51x вне форума Ответить с цитированием
Старый 13.08.2019, 23:34   #5
Anonymous4722
 
Аватар для Anonymous4722
 
Регистрация: 28.03.2013
Сообщений: 5
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Что не работает? Как пробовали? У меня все читается и пишется...
Я уже сделал, я добавил вот это cin.ignore(cin.rdbuf() ->in_avail()); и я мог писать в консоле и потом видеть в файле, что написал.
Skype: Anonymous4722
ICQ: 220592937
e-mail: balashov_vadim@mail.ru
Anonymous4722 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли изменить программу так, чтобы предложение в котором будет замена слова писалось из консоли, а не бралось из текстового файла. broiler747 Паскаль, Turbo Pascal, PascalABC.NET 11 11.12.2017 18:18
Файловый ввод/вывод в языке С: двоичный файл и записать в него двумерный целочисленный массив размером n*m, записать в файл F2... Анастасия_А Помощь студентам 0 28.03.2016 14:07
Организовать процедуру, позволяющую записать в текстовый файл введенную с клавиатуры строку. Удвоить в данном файле каждую цифру. Deg Паскаль, Turbo Pascal, PascalABC.NET 5 18.05.2014 21:10
FASM. Считать содержимое файла в строку и затем записать обратно в файл Zart Помощь студентам 0 19.04.2011 17:02
Как записать (считать) динамическую строку в (из) файл(а)? C++ Сергей089 Помощь студентам 2 10.02.2010 22:00