Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 01.05.2011
Сообщений: 30
1

Нужна проверка кода (система обмена сообщениями)

28.04.2013, 06:52. Просмотров 600. Ответов 2
Метки нет (Все метки)

есть код C++,компилируется в Mingw/bin при помощи g++. Данный код представляет собой систему обмена сообщениями. Идеальный случай,когда юзер не допускает ошибок при вводе регистрационных данных.
проблема в написании проверки ввода этих самых данных

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
#include "iostream"
#include "locale.h"
#include <string>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
struct user
{
    string surn;
    string name;
    string login;
    string password;
    string messg;
    string chislo_msg;//кол-во сообщений
};
struct message
{
    string text;
    string recipient;//получатель
    string trans;//отправитель
};
 
//БД системы
class System_DB
{
    public:
struct user users[100];
struct message messages[100];
    int messageInc;
    int userInc;
    System_DB(){messageInc=0;userInc=0;};
    void newuser();
    void enter();//проверить свои сообщения
    void send();//отправить сообщение
    void help();//основное меню
    void switch_();//переключатель
    void list();//список пользователей
};
 
//Список операций ситемы
void System_DB::help()
{   
    cout<<endl<<endl<<"Информационная система мгновенного обмена сообщениями:"<<endl;
    cout<<"Зарегистрироваться в системе  - введите 1"<<endl;
    cout<<"Проверить свои сообщения - введите 2"<<endl;
    cout<<"Отправить сообщение - введите 3"<<endl;
    cout<<"Вывести список пользователей - введите 4"<<endl;
    cout<<"Выйти из системы - введите 5"<<endl;
}
//регистрация пользователя
void System_DB:: newuser()
{
string answer;
    cout<<"\n\nВведите информацию о себе\n";
    cout<<"    Фамилия:  ";
    cin>>users[userInc].surn;
    cout<<"    Имя:  ";
    cin>>users[userInc].name;
    cout<<"    Логин:  ";
    cin>>users[userInc].login;
    cout<<"    Пароль:  ";
    cin>>users[userInc].password;
    userInc++;
        
m:  cout<<"\n\nПродолжить создание профилей? [yes/no]  ";
    cin>>answer;
    if((answer=="yes") || (answer=="y") || (answer=="Yes") || (answer=="Y") )
    {
        newuser();
    }
    else
        if((answer=="no") || (answer=="n") || (answer=="No") || (answer=="N") )
        {   help();
            switch_();
        }
        else
        {   
            cout<<"\nОшибка ввода. Повторите попытку";
            goto m;
        }
        
        help();
        switch_();
}
//список пользователей
void System_DB:: list()
{
for(int i=0; i<userInc; i++)
    {
        cout<<"Фамилия:"<<users[i].surn;
        cout<<endl;
        cout<<"Имя:"<<users[i].name;
        cout<<endl;
        cout<<"Логин:"<<users[i].login;
        cout<<endl; 
        cout<<endl;         
    }
}
//переключатель основного меню
void System_DB::switch_()
{
    int x;
    cin>>x;
    switch(x)
    {
        case 0:   help();                            break;
        case 1:   newuser();                         break;
        case 2:   enter();                           break;
        case 3:   send();                            break;
        case 4:   list();                            break;
        case 5:   cout<<"\nGood Bye!\n"; exit(0);            break;
        default:  cout<<"Ошибка ввода. Повторите выбор.\n";  switch_(); break;
    }
    cout<<"\n";
}
//проверка сообщений
void System_DB:: enter()//в этой функции ДОЛЖНА БЫТЬ ПРОВЕРКА ВВОДА ДАННЫХ
{
    string strinuser;
    cout<<"\n\nВведите логин и пароль\n"<<endl;
    cout<<"Логин:";
    cin>>strinuser; 
    string pass;
    cout<<"Пароль:";
    cin>>pass;
    cout<<endl;
    for(int i=0; i<userInc; i++)
    {
        if(strinuser==users[i].login && pass==users[i].password)
        {   
        cout<<"Вы прошли идентификацию!"<<endl<<endl;
        for(int j=0;j<messageInc;j++)
            {
            if(users[i].login==messages[j].recipient)
                {
                cout<<"Ваше сообщение:"<<messages[j].text<<endl;       
                cout<<"Отправитель:"<<messages[j].trans<<endl;   
                cout<<endl; 
                }
            }
        }
    }
    help();
    switch_();
}
//отправка сообщений
void System_DB :: send() //в этой функции ДОЛЖНА БЫТЬ ПРОВЕРКА ВВОДА ДАННЫХ
{
    cout<<"\n\nВведите логин пользователя, который хочет написать:   "<<endl;
    string strinuser;
    cout<<"    Логин:  ";
    cin>>strinuser; 
    string pass;
    cout<<"    Пароль:  ";
    cin>>pass;
    for(int i=0; i<userInc; i++)
    { 
    if(strinuser==users[i].login && pass==users[i].password)
        {   
            messages[messageInc].trans=users[i].login;
            string thelogin;
            p: cout<<"\n\nВведите логин пользователя, которому хотите написать:   ";
            cin>>thelogin;
            for(int i=0; i<userInc; i++)
                {
                    if(thelogin==users[i].login)
                    {   
                        cout<<"Пользователь найден"<<endl;
                        string answer;
                        cout<<"\n\nВведите текст сообщения\n";
                        cout<<"    Сообщение:  ";
                        cin>>messages[messageInc].text;
                        messages[messageInc].recipient=users[i].login;
                        messageInc++;
                    }
                }
        }       
    
    }
    help();
    switch_();
}
 
int main()
{
    setlocale(LC_ALL, "");
    System_DB user1;
    user1.help();
    user1.switch_();
    return 0;
}
Добавлено через 13 часов 36 минут
когда делаю таким образом:
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
#include "iostream"
#include "locale.h"
#include <string>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
struct user
{
    string surn;
    string name;
    string login;
    string password;
    string messg;
    string chislo_msg;//кол-во сообщений
};
struct message
{
    string text;
    string recipient;//получатель
    string trans;//отправитель
};
 
//БД системы
class System_DB
{
    public:
struct user users[100];
struct message messages[100];
    int messageInc;
    int userInc;
    System_DB(){messageInc=0;userInc=0;};
    void newuser();
    void enter();//проверить свои сообщения
    void send();//отправить сообщение
    void help();//основное меню
    void switch_();//переключатель
    void list();//список пользователей
};
 
//Список операций ситемы
void System_DB::help()
{   
    cout<<endl<<endl<<"Информационная система мгновенного обмена сообщениями:"<<endl;
    cout<<"Зарегистрироваться в системе  - введите 1"<<endl;
    cout<<"Проверить свои сообщения - введите 2"<<endl;
    cout<<"Отправить сообщение - введите 3"<<endl;
    cout<<"Вывести список пользователей - введите 4"<<endl;
    cout<<"Выйти из системы - введите 5"<<endl;
}
//регистрация пользователя
void System_DB:: newuser()
{
string answer;
    cout<<"\n\nВведите информацию о себе\n";
    cout<<"    Фамилия:  ";
    cin>>users[userInc].surn;
    cout<<"    Имя:  ";
    cin>>users[userInc].name;
    cout<<"    Логин:  ";
    cin>>users[userInc].login;
    cout<<"    Пароль:  ";
    cin>>users[userInc].password;
    userInc++;
        
m:  cout<<"\n\nПродолжить создание профилей? [yes/no]  ";
    cin>>answer;
    if((answer=="yes") || (answer=="y") || (answer=="Yes") || (answer=="Y") )
    {
        newuser();
    }
    else
        if((answer=="no") || (answer=="n") || (answer=="No") || (answer=="N") )
        {   help();
            switch_();
        }
        else
        {   
            cout<<"\nОшибка ввода. Повторите попытку";
            goto m;
        }
        
        help();
        switch_();
}
//список пользователей
void System_DB:: list()
{
for(int i=0; i<userInc; i++)
    {
        cout<<"Фамилия:"<<users[i].surn;
        cout<<endl;
        cout<<"Имя:"<<users[i].name;
        cout<<endl;
        cout<<"Логин:"<<users[i].login;
        cout<<endl; 
        cout<<endl;         
    }
}
//переключатель основного меню
void System_DB::switch_()
{
    int x;
    cin>>x;
    switch(x)
    {
        case 0:   help();                            break;
        case 1:   newuser();                         break;
        case 2:   enter();                           break;
        case 3:   send();                            break;
        case 4:   list();                            break;
        case 5:   cout<<"\nGood Bye!\n"; exit(0);            break;
        default:  cout<<"Ошибка ввода. Повторите выбор.\n";  switch_(); break;
    }
    cout<<"\n";
}
//проверка сообщений
void System_DB:: enter()
{
    string strinuser;
    cout<<"\n\nВведите логин и пароль\n"<<endl;
    cout<<"Логин:";
    cin>>strinuser; 
    string pass;
    cout<<"Пароль:";
    cin>>pass;
    cout<<endl;
    for(int i=0; i<userInc; i++)
    {
        if(strinuser==users[i].login && pass==users[i].password)
        {   
        cout<<"Вы прошли идентификацию!"<<endl<<endl;
        for(int j=0;j<messageInc;j++)
            {
            if(users[i].login==messages[j].recipient)
                {
                cout<<"Ваше сообщение:"<<messages[j].text<<endl;       
                cout<<"Отправитель:"<<messages[j].trans<<endl;   
                cout<<endl; 
                }
            }
        }
    }
    help();
    switch_();
}
//отправка сообщений
void System_DB :: send()
{
    cout<<"\n\nВведите логин пользователя, который хочет написать:   "<<endl;
    string strinuser;
    [B]n: [/B]cout<<"    Логин:  ";
    cin>>strinuser; 
    string pass;
    cout<<"    Пароль:  ";
    cin>>pass;
    for(int i=0; i<userInc; i++)
    { 
    if(strinuser==users[i].login && pass==users[i].password)
        {   
            messages[messageInc].trans=users[i].login;
            string thelogin;
            [B]p:[/B] cout<<"\n\nВведите логин пользователя, которому хотите написать:   ";
            cin>>thelogin;
            for(int i=0; i<userInc; i++)
                {
                    if(thelogin==users[i].login)
                    {   
                        cout<<"Пользователь найден"<<endl;
                        string answer;
                        cout<<"\n\nВведите текст сообщения\n";
                        cout<<"    Сообщение:  ";
                        cin>>messages[messageInc].text;
                        messages[messageInc].recipient=users[i].login;
                        messageInc++;
                    }
                    [B]else
                        cout<<"Пользователь не найден! Повторите попытку"<<endl;
                        goto p;[/B]
                }
        }       
    [B]else
        cout<<"Пользователь не найден! Повторите попытку"<<endl;
        goto n;[/B]
    }
    help();
    switch_();
}
 
int main()
{
    setlocale(LC_ALL, "");
    System_DB user1;
    user1.help();
    user1.switch_();
    return 0;
}
он зацикливает ввод логина и отправку сообщения...помогите,что делаю не так?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2013, 06:52
Ответы с готовыми решениями:

Система обмена сообщениями
Здраствуйте форумчане! И так мне надо написать клиент-серверное сетевое приложение реализующее...

Система обмена сообщениями
Есть ли какая-нибудь система обмена мообщениями, которая одновременно реализует паттерны &quot;remote...

Продвинутая система обмена сообщениями на сайте?
Доброго времени суток! вот хочу написать хорошую систему обмена сообщениями на сайте на подобии как...

Пример кода для обмена сообщениями на протоколе UDP или TCP
В HELPе DElphi приведены примеры использования winsock, но они почему-то на С++(?!?). У меня еще...

2
163 / 119 / 46
Регистрация: 17.03.2013
Сообщений: 283
28.04.2013, 07:36 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
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
#include "iostream"
#include "locale.h"
#include <string>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
struct user
{
    string surn;
    string name;
    string login;
    string password;
    string messg;
    string chislo_msg;//кол-во сообщений
};
struct message
{
    string text;
    string recipient;//получатель
    string trans;//отправитель
};
 
//БД системы
class System_DB
{
    public:
struct user users[100];
struct message messages[100];
    int messageInc;
    int userInc;
    System_DB(){messageInc=0;userInc=0;};
    void newuser();
    void enter();//проверить свои сообщения
    void send();//отправить сообщение
    void help();//основное меню
    void switch_();//переключатель
    void list();//список пользователей
};
 
//Список операций ситемы
void System_DB::help()
{   
    cout<<endl<<endl<<"Информационная система мгновенного обмена сообщениями:"<<endl;
    cout<<"Зарегистрироваться в системе  - введите 1"<<endl;
    cout<<"Проверить свои сообщения - введите 2"<<endl;
    cout<<"Отправить сообщение - введите 3"<<endl;
    cout<<"Вывести список пользователей - введите 4"<<endl;
    cout<<"Выйти из системы - введите 5"<<endl;
}
//регистрация пользователя
void System_DB:: newuser()
{
string answer;
    cout<<"\n\nВведите информацию о себе\n";
    cout<<"    Фамилия:  ";
    cin>>users[userInc].surn;
    cout<<"    Имя:  ";
    cin>>users[userInc].name;
    cout<<"    Логин:  ";
    cin>>users[userInc].login;
    cout<<"    Пароль:  ";
    cin>>users[userInc].password;
    userInc++;
        
m:  cout<<"\n\nПродолжить создание профилей? [yes/no]  ";
    cin>>answer;
    if((answer=="yes") || (answer=="y") || (answer=="Yes") || (answer=="Y") )
    {
        newuser();
    }
    else
        if((answer=="no") || (answer=="n") || (answer=="No") || (answer=="N") )
        {   help();
            switch_();
        }
        else
        {   
            cout<<"\nОшибка ввода. Повторите попытку";
            goto m;
        }
        
        help();
        switch_();
}
//список пользователей
void System_DB:: list()
{
for(int i=0; i<userInc; i++)
    {
        cout<<"Фамилия:"<<users[i].surn;
        cout<<endl;
        cout<<"Имя:"<<users[i].name;
        cout<<endl;
        cout<<"Логин:"<<users[i].login;
        cout<<endl; 
        cout<<endl;         
    }
}
//переключатель основного меню
void System_DB::switch_()
{
    int x;
    cin>>x;
    switch(x)
    {
        case 0:   help();                            break;
        case 1:   newuser();                         break;
        case 2:   enter();                           break;
        case 3:   send();                            break;
        case 4:   list();                            break;
        case 5:   cout<<"\nGood Bye!\n"; exit(0);            break;
        default:  cout<<"Ошибка ввода. Повторите выбор.\n";  switch_(); break;
    }
    cout<<"\n";
}
//проверка сообщений
void System_DB:: enter()
{
    string strinuser;
    cout<<"\n\nВведите логин и пароль\n"<<endl;
    cout<<"Логин:";
    cin>>strinuser; 
    string pass;
    cout<<"Пароль:";
    cin>>pass;
    cout<<endl;
    for(int i=0; i<userInc; i++)
    {
        if(strinuser==users[i].login && pass==users[i].password)
        {   
        cout<<"Вы прошли идентификацию!"<<endl<<endl;
        for(int j=0;j<messageInc;j++)
            {
            if(users[i].login==messages[j].recipient)
                {
                cout<<"Ваше сообщение:"<<messages[j].text<<endl;        
                cout<<"Отправитель:"<<messages[j].trans<<endl;  
                cout<<endl; 
                }
            }
        }
    }
    help();
    switch_();
}
//отправка сообщений
void System_DB :: send()
{
    cout<<"\n\nВведите логин пользователя, который хочет написать:   "<<endl;
    string strinuser;
    n: cout<<"    Логин:  ";
    cin>>strinuser; 
    string pass;
    cout<<"    Пароль:  ";
    cin>>pass;
    for(int i=0; i<userInc; i++)
    { 
    if(strinuser==users[i].login && pass==users[i].password)
        {   
            messages[messageInc].trans=users[i].login;
            string thelogin;
            cout<<"\n\nВведите логин пользователя, которому хотите написать:   ";
            cin>>thelogin;
            for(int b=0; b<userInc; b++)
            {
                if(thelogin==users[b].login)
                {   
                    cout<<"Пользователь найден"<<endl;
                    string answer;
                    cout<<"\n\nВведите текст сообщения\n";
                    cout<<"    Сообщение:  ";
                    cin>>messages[messageInc].text;
                    messages[messageInc].recipient=users[b].login;
                    messageInc++;
                    break;
                }
            }
 
            cout<<"Пользователь не найден! Повторите попытку"<<endl;
            break;
        }       
    else
        cout<<"Пользователь не найден! Повторите попытку"<<endl;
        goto n;
    }
    help();
    switch_();
}
 
int main()
{
    setlocale(LC_ALL, "");
    System_DB user1;
    user1.help();
    user1.switch_();
    return 0;
}
отзыв [ссылка удалена]
0
2 / 2 / 0
Регистрация: 01.05.2011
Сообщений: 30
28.04.2013, 11:12  [ТС] 3
вопрос закрыт.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2013, 11:12

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Скрипт обмена сообщениями
Всем привет)никак не могу найти урок или скрипт для реализации обмена сообщениями на сайте, как...

Организация обмена сообщениями
Добрый день. Пишу программу для работы с устройством по последовательному порту. На Qt. Никак...

алгоритм обмена сообщениями
Здравствуйте Помогите в алгоритме для следующей задачи Нужно реализовать обмен сообщениями между...

Создание севрера обмена сообщениями
Здравствуйте Хочу создать сервер для обмена текстовыми сообщениями, нарыл в msdn код сервера и...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.