56 / 56 / 44
Регистрация: 24.03.2016
Сообщений: 378
1

Как сохранять значения

07.05.2016, 06:31. Показов 2344. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть программа. Подскажите пожалуйста как сделать так что бы после завершения программы данные объектов сохранялись. И после следующего открытия объекты записаны ранее были на месте.
Код программы.
Файл 1:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#ifndef Header_H
#define Header_H
#include <iostream>
#include <string>
class test {
    std::string name;
    double money;
public:
    test();
    test(std::string a, double b=0);
    void show();
    void set();
    void addmoney(double b);
    void minusMoney(double b);
    
};
int main() {
    char c;
    int i = 0;
    
    test object[50];
    
    std::cout << "For add new object enter "a"" << std::endl;
    std::cout << "For show all object enter "b"" << std::endl;
    std::cout << "For delete object enter "c"" << std::endl;
    std::cout << "For plus money object enter "d"" << std::endl;
    while (std::cin >> c,c!='q') {
        
        
        switch (c)
        {
            
        case 'a':
            object[i].set();
            i++;
            continue;
            break;
        case 'b':           
            for (int j = 0; j < i; j++) {
                std::cout << "Object " << j+1 << std::endl;
                object[j].show();
            }
            break;
        case 'c':
            int a;
            std::cout << "Enter the number of the object you want to remove: ";
            std::cin >> a;
 
            for (int j = a-1; j < i; ++j) {
                object[j] = object[j + 1];
            }
            i--;
            break;
        case 'd':
            std::cout << "Enter number object";
            int g;
            std::cin >> g;
            std::cout << "How many money you want plus?";
            int a1;
            std::cin >> a1;
            object[g - 1].addmoney(a1);
        case 'j':
            std::cout << "Enter number object";
            int j;
            std::cin >> j;
            std::cout << "How many money you want minus?";
            int j1;
            std::cin >> j1;
            object[j - 1].minusMoney(j1);
 
        default:
            break;
        }
        std::cin.ignore();
    }
}
 
#endif


Файл 2:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "Header.h"
 
test::test() {
    name = "Error";
    money = 0;
}
test::test(std::string a, double b) {
    name = a;
    money = b;
}
 
void test::addmoney(double b) {
    money = money + b;
 
}
void test::minusMoney(double b) {
    money = money - b;
}
void test::show() {
    std::cout << "Name: " << name << std::endl;
    std::cout << "Money: " << money << std::endl;
}
void test::set() {
    std::cin.ignore();
    std::cout << "Set name:";
    std::getline(std::cin, name);
    std::cout << "Set money:";
    std::cin >> money;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2016, 06:31
Ответы с готовыми решениями:

Как сохранять значения именно в кэш-память, а не в оперативку?
Как сохранять значения именнов кэш память а не в оперативку?? Какие есть инструменты (классы Java)...

Сохранять значения ячеек в txt файл по расписанию, или периодично каждые 10 минут - как реализовать?
подскажите как реализовать. или функционалом екселя, или через VBA. суть такая: есть одна...

Вторая radiobutton отказывается сохранять значения в slider
Здравствуйте,я наконец разобрался с тем,чтобы при нажатой кнопке значения переходили в...

Сохранять значения данных формы в случае ошибки
Покажите простой пример.

8
Wanna be serious
586 / 473 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
07.05.2016, 06:38 2
Попробуйте воспользоваться файловым вводом-выводом <fstream>. При завершении программы сохраняете всю информацию в файл, при запуске открываете этот файл и считываете информацию.

Не по теме:

А почему у вас main() в файле 1?

0
56 / 56 / 44
Регистрация: 24.03.2016
Сообщений: 378
07.05.2016, 06:45  [ТС] 3
Bespridelschic, Та думал я уже об этом, а по другом никак что бы другим людям только ехе файл передавать без прикрепленных к нему блокнотов? А насчет main() в первом файле - просто лень было третий создавать
0
Wanna be serious
586 / 473 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
07.05.2016, 06:48 4
Лучший ответ Сообщение было отмечено Armatus как решение

Решение

Armatus, делаете проверку, найден ли файл и открыт ли он должным образом. Если нет - создаете новый, и заносите туда всю информацию полученную за время работы программы.
1
56 / 56 / 44
Регистрация: 24.03.2016
Сообщений: 378
07.05.2016, 07:03  [ТС] 5
Bespridelschic, ладно, спасибо. Так и сделаем.

Добавлено через 13 минут
Bespridelschic, блин а как изменять тогда значения объектов, что-то я совсем запутался в реализации
0
Wanna be serious
586 / 473 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
07.05.2016, 07:33 6
Armatus, записываете допустим первым имя, затем количество денег. А при считывании вводим в объект сначала имя строкового типа, а затем при вводе денег, переводим из строкового типа, в вещественный. И так по строкам. Дальше думаю сами разберетесь.
0
56 / 56 / 44
Регистрация: 24.03.2016
Сообщений: 378
07.05.2016, 10:39  [ТС] 7
Bespridelschic,
C++
1
2
3
4
5
6
7
std::string buff;
std::ifstream fin("cppstudio.txt"); // открыли файл для чтения
while (fin) {
        fin >> buff;
        fin >> mon;
        std::cout << buff << mon;
    }
Не подскажите почему в этом цикле последнее имя и деньги выводиться два раза?

Добавлено через 31 секунду
Bespridelschic, и как этого избежать?

Добавлено через 1 минуту
Bespridelschic, Пока я придумал вот такой извращенный метод:
C++
1
2
3
4
5
6
7
8
while (fin) {
        fin >> buff;
        if (buff == buff2)
            break;
        fin >> mon;
        buff2 = buff;
        std::cout << buff << mon;
    }
Добавлено через 2 часа 25 минут
Если вдруг кому интересно будет, или по поисковику сюда попадет, вот мое решение:
файл 1:

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#ifndef Header_H
#define Header_H
#include <iostream>
#include <string>
#include <fstream>
 
 
class test {
    std::string name;
    double money;
public:
    test();
    test(std::string a, double b=0);
    void show();
    void set();
    void set_from_file(std::string a, double b);    
    void addmoney(double b);
    void minusMoney(double b);
    friend std::ostream & operator<<(std::ostream & os, const test & t);
};
 
void clearb();
#endif


Файл 2:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "Header.h"
 
test::test() {
    name = "Error";
    money = 0;
}
test::test(std::string a, double b) {
    name = a;
    money = b;
}
 
void test::addmoney(double b) {
    money = money + b;
 
}
void test::minusMoney(double b) {
    money = money - b;
}
void test::show() {
    std::cout << "Name: " << name << std::endl;
    std::cout << "Money: " << money << std::endl;
}
void test::set() {
    std::ofstream fout("cppstudio.txt", std::ios_base::app); // открываем файл для добавления информации к концу файла
    if (!fout.is_open()) // если файл небыл открыт
    {
        std::ofstream fout("cppstudio.txt");    
    }
    std::cin.ignore();
    std::cout << "Set name:";
    std::getline(std::cin, name);
    fout << name;
    fout << " ";
    std::cout << "Set money:";
    std::cin >> money;
    fout << money;
    fout << std::endl;
    
}
void test::set_from_file(std::string a, double b) {
    name = a;
    money = b;
    
}
std::ostream & operator<<(std::ostream & os, const test & t) {
    os << t.name << t.money;
    return os;
    
}
void clearb() {
    std::ofstream fout("cppstudio.txt", std::ios_base::trunc);
}

Файл 3:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include "Header.h"
 
int main() {
    int i = 0;
    
    double mon;
    std::string buff;
    std::string buff2;
    std::ifstream fin("cppstudio.txt"); // открыли файл для чтения
    test object[50];
    while (fin) {
        fin >> buff;
        if (buff == buff2)
            break;
        fin >> mon;
        buff2 = buff;   //защита от двойного присвоивания последних значений
        object[i].set_from_file(buff, mon);     
        i++;
    }
    std::ofstream fout("cppstudio.txt", std::ios_base::app);
    char c;
    
    std::cout << "For add new object enter "a"" << std::endl;
    std::cout << "For show all object enter "b"" << std::endl;
    std::cout << "For delete object enter "c"" << std::endl;
    std::cout << "For plus money object enter "d"" << std::endl;
    while (std::cin >> c, c != 'q') {
 
        switch (c)
        {
 
        case 'a':
            object[i].set();
            i++;
            continue;
            break;
        case 'b':
            for (int j = 0; j < i; j++) {
                std::cout << "Object " << j + 1 << std::endl;
                object[j].show();
            }
            break;
        case 'c':
            int a;
            std::cout << "Enter the number of the object you want to remove: ";
            std::cin >> a;
 
            for (int j = a - 1; j < i; ++j) {
                object[j] = object[j + 1];
            }
            i--;
            clearb();
            for (int j = 0; j < i; j++) {
                fout << object[j] << std::endl;
            }
            break;
        case 'd':
            std::cout << "Enter number object";
            int g;
            std::cin >> g;
            std::cout << "How many money you want plus?";
            int a1;
            std::cin >> a1;
            object[g - 1].addmoney(a1);
        case 'j':
            std::cout << "Enter number object";
            int j;
            std::cin >> j;
            std::cout << "How many money you want minus?";
            int j1;
            std::cin >> j1;
            object[j - 1].minusMoney(j1);
 
        default:
            break;
        }
        std::cin.ignore();
    }
}
0
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
07.05.2016, 15:38 8
Armatus, можешь сделать скрин файла, в который записываешь информацию. И скажи, какие у тебя задачи этой программы, а то ничего не понятно.
0
56 / 56 / 44
Регистрация: 24.03.2016
Сообщений: 378
07.05.2016, 16:29  [ТС] 9
meJevin, да это я тренируюсь проводить разные манипуляции с объектами класса, перегружать функции и т.д.
Данная программа записывает информацию об объектах в файл ( если его нет - создает ). А потом воспроизводит.

Не по теме:

Кстате можешь меня в вк добавить я у тебя в заявках вишу ( Григорий Краснов )

Миниатюры
Как сохранять значения  
0
07.05.2016, 16:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2016, 16:29
Помогаю со студенческими работами здесь

Необходимо каждые 30 миллисекунды генерировать значения и сохранять в бд
необходимо каждые 30 миллисекунды сохранять в бд и значения необходимо генерировать.Я создал...

Edit, при вводе нового значения сохранять старое
Добрый день. Имеется такая задача - в экшн Edit приходят новые данные из вью. Перед их...

В каких файлах у разных браузеров хранится галочка сохранять/не сохранять пароли?
Нужен способ отключить сохранение паролей во всех браузерах одновременно. Все известные...

Как сохранять данные?
Есть замысел создать приложение записи доходов и расходов. Такой Журнал капитала(коих тысячи,...

Как сохранять фото?
Как сделать так, что в Adobe Photoshop CS5 фотки сохранялись как обычно, а не в формате PSD и они...

Как сохранять рисунки?
как сохранять рисунки, сделанные на форме, в любой формат?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru