Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
karnel1
7 / 0 / 1
Регистрация: 15.09.2012
Сообщений: 8
#1

Консольное приложение. Имитация входа в систему. - C++

26.11.2012, 22:57. Просмотров 1337. Ответов 8
Метки нет (Все метки)

Требуется написать программу для имитации входа в систему, которая будет запрашивать пароль и выдавать приглашение только в случае совпадения введенного пароля с заранее определенным в программе, а в случае ошибки выдавать сообщение об ошибке и просьбе повторить ввод. После 3 ошибок программа должна выдать сообщение о попытке несанкционированного доступа и завершить работу.

Пока что сделал простой набросок где программа должна сравнивать правильный ли введен логик,но не могу понять где допустил ошибки ибо всегда выводиться failed.Вот собственно сам код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <iostream.h>
 
int main()
    {
        char c[5];
        char b[]="Denis";
        cout<<"Login:";
        cin>>c;
        cout<<c<<"\n";
        if (c==b) 
                {cout<<"Complete"<<"\n";}
                else
                
                                {cout<<"failed"<<"\n";}
                
                            
        system("pause");
        return 0;
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2012, 22:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Консольное приложение. Имитация входа в систему. (C++):

консольное приложение (при запуске приложение открывалось на весь экран) - C++
Как сделать, чтобы при запуске приложение открывалось на весь экран?

Создайте имитацию входа в систему! - C++
Создайте имитацию входа в систему, которая будет запрашивать пароль и выводить приглашение только в случае совпадения введенного пароля с...

Программа имитации входа в систему - C++
Всем привет! Нам на иформатике задали написать программу, что имитирует вход в систему: Создайте имитацию входа в систему, которая...

Консольное приложение - C++
как можно поставить обработчики на нажатие клавишь ctrl+c и того типа

Консольное приложение на С++ - C++
Задание такое: 1. Розробити функцію, що повертає абсолютне значення частки від ділення першого Желательно вот по этому примеру: ...

Консольное приложение на С++ - C++
народ помогите плиз решить проблему написал игру под консоль. типа змейки как добавить функцию типа рестарт (если проиграл или выиграл)...

8
NoMasters
Псевдослучайный
1764 / 1107 / 73
Регистрация: 13.09.2011
Сообщений: 3,143
26.11.2012, 23:00 #2
Сравниваются указатели, а не строки(man strcmp). А ещё у вас программа может попортить данные и/или упасть, если пользователь введёт больше от пяти символов.
1
MaRKerNSK
24 / 11 / 1
Регистрация: 26.11.2012
Сообщений: 110
Записей в блоге: 2
26.11.2012, 23:11 #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
#include <iostream>
#include <string>
 
int main (void)
{
    using namespace std;
    string pass = "Password", bufPas;
    for (int i=0; i<=3; i++)
    {
        cout<<"Enter password:";
        cin>>bufPas;
        if (bufPas==pass)
        {
            system("CLS");
            cout<<"True";
            system("pause>>void");
            return 0; 
        } else
            cout<<"No!"<<endl;
    }
    cout<<"Error 3 false!";
    system("pause>>void");
    return 0;
}
0
NeonLost
Пес войны
75 / 86 / 3
Регистрация: 23.02.2012
Сообщений: 653
26.11.2012, 23:29 #4
это довольно глупо так писать, если хоть немного позаботьться о безопастности, то предложил бы хранить пароль в md5 и подумать об эксепшенах, и получить что-то вроде этого...)
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
#include <iostream>
#include <limits>
#include <string>
#include "md5.h"
using namespace std;
 
int main(){
    const int PASSWORD_LENGTH=10;
    const char * CORRECT_PASSWORD="130f1a8e9e102707f3f91b010f151b0b";
    char *md5buf;
 
    char buf[PASSWORD_LENGTH];
    setlocale( LC_ALL,"Russian" );
 
    cin.exceptions(istream::failbit | istream::badbit);
    
    do {
        try {
            cout << "Введите пароль: ";
            cin.getline(buf, PASSWORD_LENGTH);
            md5buf=new char[md5(buf).size()+1];
            strcpy (md5buf, md5(buf).c_str());
        }
        catch ( istream::failure e ) 
    {
            system("cls");
            cerr << "Пароль должен быть короче, нажмите Enter, чтобы попробывать еще раз..." << endl;
            cin.clear();
            cin.ignore(numeric_limits<streamsize>::max(), '\n');    
            getchar();
    }
        system("cls");
    } while ( strcmp(md5buf, CORRECT_PASSWORD) );
    delete[] md5buf;
     /*что-то делаем, если пароль верный*/
     getchar();
     return 0;
}
останется только счетчик прикрутить...если в лом искать, я могу класс md5 дать
0
MaRKerNSK
24 / 11 / 1
Регистрация: 26.11.2012
Сообщений: 110
Записей в блоге: 2
26.11.2012, 23:36 #5
Согласен если заботиться о безопасности и тд и тп, то да) а я предложил самый короткий самый простой и понятный вариант)) просили то - "Имитация входа в систему" я такое то и написал))
0
NeonLost
Пес войны
75 / 86 / 3
Регистрация: 23.02.2012
Сообщений: 653
26.11.2012, 23:50 #6
я бы вошел в твою систему спустя 1 минуту...)
0
MaRKerNSK
24 / 11 / 1
Регистрация: 26.11.2012
Сообщений: 110
Записей в блоге: 2
26.11.2012, 23:55 #7
Я знаю)) так передо мной и не ставили задачу сделать систему с защитой)) Лично я бы это ещё всё ООПэшно сделал) да и проверку через сервер, чтобы проверка шла на серверной части)) =)
0
Venzo
27.11.2012, 00:03
  #8

Не по теме:

а человек всего лишь попросил указать ошибку, а ему уже решения... не интересно ведь будет. Ну да ладно

0
NeonLost
Пес войны
75 / 86 / 3
Регистрация: 23.02.2012
Сообщений: 653
27.11.2012, 00:55 #9
а по сути ошибка вот в чем...)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <iostream.h>
 using namespace std;
int main()
    {
        char c[6];
        char b[]="Denis\0";
        cout<<"Login:";
        cin>>c;
        cout<<c<<"\n";
        if (!strcmp(c, b)) 
                {cout<<"Complete"<<"\n";}
                else
                
                                {cout<<"failed"<<"\n";}
                
                            
        system("pause");
        return 0;
    }
0
27.11.2012, 00:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2012, 00:55
Привет! Вот еще темы с ответами:

Консольное приложение - C++
Здравствуйте! Имеется консольное приложение, которое при наборе команды &quot;start&quot; выполняет запуск программы. Проблема в том, что пока я...

консольное приложение - C++
Помогите разобраться с задачкой! Написать на С++ код консольного приложения, реализующий в главной функции ввод с клавиатуры в...

Графическое приложение: имитация движения самолёта - C++
Ребят, помогите создать имитацию движения самолёта ,управление которого совершается с помощью клавиатуры

Консольное приложение, история - C++
А можно как-нибудь сделать так, чтобы у консольного приложения была более длинная история? Мне надо вывести на экран много информации (в...


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

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

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