Форум программистов, компьютерный форум CyberForum.ru

Редактирование объекта - C++

Восстановить пароль Регистрация
 
OlegRuno
2 / 2 / 0
Регистрация: 28.05.2012
Сообщений: 38
29.05.2012, 18:45     Редактирование объекта #1
Вообщем то идея такая, существует класс TKlient объект которого инициализируемый в функции int main
в нем такие поля: int Code;//код клиента, int Password;//пароль клиента, TAccount Acct;//счет клиента. Где TAccount класс-счет. Необходимо совершить операцию снятия денег, для этого написан метод в управляющем классе
TManager:
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
void TManager::WithdrawMoney(int Sum, TKlient& TrueKlient)//снять деньги
{
    TManager T;
    double Summ;//запрашиваемая клиентом сумма
    double Rest1, Rest2; //остаток на счете до и после операции
    if (T.Authenticate(TrueKlient)) {//если клиент аутентифицирован
        Summ=T.GetTSum(Sum);//получаем сумму запрашиваемую клиентом
    if (Summ!=0){//если введена не 0-вая сумма
        Rest1=TrueKlient.GetAccount().GetBalance(); //получаем остаток до снятия денег
        Rest2=TrueKlient.GetAccount().WDMoney(Summ);//получаем остаток после снятия денег
        cout<<Rest2;
    if (Rest2!=Rest1) cout<<"Операция успешна"<<endl;
    else cout<<"Операция не может быть выполнена"<<endl;;}}}
 
метод работает, в него передается объект. Метод работает с этим объектом, но после завершения сам объект не изменился и баланс счета остался таким же. Может есть какой-либо способ передачи объекта или идея как сделать так, что бы сам передаваемый в функцию объект, после завершения получал нужные значения.
 
[size="1"][color="grey"][I]Добавлено через 1 минуту[/I][/color][/size]
Вот код всей программы.
#include <iostream>
#include <iomanip>
#include <string.h>
#include <fstream>
#include <iostream>
#include <locale>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <stdio.h>
#include <conio.h>
using namespace std;
 
struct terminal
{
    char surname[20];
    int Password;
    int Summ;
};
 
class TAccount//класс счет
{
private:
    int Code;//код счета
    double Sum;//кол-во денег на счете
public:
    double WDMoney(double Summ);//снять деньги
    double GetBalance();//получить баланс счета
    int GetCode();
    void SetCode(int Code2);
    void SetSum(double Sum2);
 
};
int TAccount::GetCode()
{
    return Code;
}
double TAccount::WDMoney(double Summ)//снять деньги
{
    //вернуть остаток
    if (Sum>=Summ) Sum=(Sum-Summ);
    return Sum;
    }
double TAccount::GetBalance()//получить баланс счета
{
    //вернуть сумму счета
    return Sum;
}
void TAccount::SetCode(int Code2)
{
    Code=Code2;
}
void TAccount::SetSum(double Sum2)
{
    Sum=Sum2;
}
 
class TKlient//класс Клиент
{
private:
    int Code;//код клиента
    int Password;//пароль клиента
    TAccount Acct;//счет клиента
public:
    
    int GetCode();//получить код клиента
    TAccount GetAccount();//получить счет клиента
    double GetPassword();//получить пароль клиента
    void SetCode(char Code2);
    void SetPassword(int Password2);
    void Get();
 
};
 
void TKlient::SetPassword(int Password2)
{
    Password=Password2;
}
 
void TKlient::Get()//получить информацию о клиенте
{
    //Здесь должен выполняться запрос к платежной системе
    //примерно такие данные должны возвращаться:
    
    Password=21312;//пароль
    Code=12345;//код карты клиента
    
    Acct.SetCode(12345);//код счета
    Acct.SetSum(1110.50);//cумма денег на счете
}
 
int TKlient::GetCode()//получить код клиента
{
    //вернуть код клиента
    return Code;
}
 
double TKlient::GetPassword()//получить пароль клиента
{
    //вернуть пароль клиента
    return Password;
}
 
TAccount TKlient::GetAccount()//получить счет клиента
{
    //вернуть счет клиента
    return Acct;
}
 
 
 
class TManager //управляющий класс
{
private:
    
public:
    int GetTCode();//получить код карты
    int GetTPassword();//получить пароль карты
    double GetTSum(int Sum);//получить запрашиваемую сумму
    void WithdrawMoney(int Sum, TKlient& TrueTKlient);//снять деньги
    void GetBalance(TKlient TrueKlient);//получить баланс счета
    bool Authenticate(TKlient TrueTKlient);//проверить подленность
};
 
int TManager::GetTCode()//получить код карты
{
    //считывание как бы с банковской карты
    return 12345;
}
int TManager::GetTPassword()//получить пароль клиента
{
    //Здесь информация считывается с терминала
    return 12345;
}
double TManager::GetTSum(int Sum) //получить запрашиваемую сумму
{
    //Здесь информация должна считываться с терминала
   return Sum;
}
bool TManager::Authenticate(TKlient TrueTKlient)//проверить подлинность
{
    TManager Term;
    double KlientCode;
    double TCode;
    double KlientPass;
    double TrueKlientPassword;
    KlientCode=TrueTKlient.GetCode();//получаем код карты клиента
    TCode=TrueTKlient.GetAccount().GetCode();
    KlientPass=TrueTKlient.GetPassword();//получаем пароль, введенный клиентом
    TrueKlientPassword=Term.GetTPassword();//получаем пароль из платежной сисмы
    if ((TrueKlientPassword==KlientPass)&&(KlientCode==TCode))  return true;//если пароли совпадают
    else return false;
}
void TManager::WithdrawMoney(int Sum, TKlient& TrueKlient)//снять деньги
{
    TManager T;
    double Summ;//запрашиваемая клиентом сумма
    double Rest1, Rest2; //остаток на счете до и после операции
    if (T.Authenticate(TrueKlient)) {//если клиент аутентифицирован
        Summ=T.GetTSum(Sum);//получаем сумму запрашиваемую клиентом
    if (Summ!=0){//если введена не 0-вая сумма
        Rest1=TrueKlient.GetAccount().GetBalance(); //получаем остаток до снятия денег
        Rest2=TrueKlient.GetAccount().WDMoney(Summ);//получаем остаток после снятия денег
        cout<<Rest2;
    if (Rest2!=Rest1) cout<<"Операция успешна"<<endl;
    else cout<<"Операция не может быть выполнена"<<endl;;}}}
 
void TManager::GetBalance(TKlient TrueKlient)//получить баланс счета
{
    TManager T;
    double Summ;
    
    if (T.Authenticate(TrueKlient)==true)
    {
    Summ=TrueKlient.GetAccount().GetBalance();
    cout<<"Остаток на счету равен:"<<Summ<<endl;
    }}
 
int main()
{
    
    setlocale(LC_ALL, "Russian");
    cout<<"---------------------------БАНКОМАТ----------------------------"<<endl;
    TKlient PolzKlient;//объект пользователь
    PolzKlient.Get();
    int buf;
    int i=3;bool flag=false;
    TManager Manager;
    int choose;
    while(Manager.Authenticate(PolzKlient)!=true&&i>=0)
    {
    cout<<"Введите пароль:"; cin>>buf; PolzKlient.SetPassword(buf);
    if(Manager.Authenticate(PolzKlient)==true) { cout<<"Авторизация прошла успешно"<<endl; flag=true;}
    else cout<<"Неверный пароль, осталось "<<i<<" попытки"<<endl; i--;}
    for(;;){
    if (flag=true){ cout<<"Выберите необходимую операцию:"<<endl<<"1.Выдача наличных."<<endl<<"2.Остаток на счету."<<endl<<"3.Выход"<<endl;}cin>>choose;
    switch(choose)
    {
    case 1:buf=0; cout<<"Введите необходимую сумму:"; cin>>buf; Manager.WithdrawMoney(buf, PolzKlient);cout<<endl; break;
    case 2:Manager.GetBalance(PolzKlient);cout<<endl;cout<<endl; break;
    case 3:break;
        
    default: cout<<"error sory"<<endl;break;
        
    }}
 
 
    
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2012, 18:45     Редактирование объекта
Посмотрите здесь:

C++ редактирование файла
Как правильно вызывать функцию объекта из другой функции того же объекта? C++
C++ Требуется ли при удалении объекта посредством delete указывать тип объекта?
При возврате объекта из функции пишет, что для объекта не определен констуктор копирования C++
C++ Редактирование файлов
C++ Передача объекта методу другого объекта другого класса
В строке первого объекта класса слово MAX длины заменить на слово MAX длины второго объекта класса C++
Создание объекта в функции и возврат объекта из нее C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alt_Shift
 Аватар для Alt_Shift
50 / 50 / 2
Регистрация: 28.05.2012
Сообщений: 161
29.05.2012, 18:47     Редактирование объекта #2
тег [ CPP][/CPP] (кнопочка С++ на панельке) используйте, читабельнее же будет.
OlegRuno
2 / 2 / 0
Регистрация: 28.05.2012
Сообщений: 38
30.05.2012, 01:14  [ТС]     Редактирование объекта #3
Цитата Сообщение от Alt_Shift Посмотреть сообщение
тег [ CPP][/CPP] (кнопочка С++ на панельке) используйте, читабельнее же будет.
сделано

Добавлено через 5 минут
Цитата Сообщение от OlegRuno Посмотреть сообщение
сделано
Ребята Ребята)

Добавлено через 6 часов 16 минут
upup ребят пиши любые идеи решения.
Yandex
Объявления
30.05.2012, 01:14     Редактирование объекта
Ответ Создать тему
Опции темы

Текущее время: 01:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru