Member 14045850 Ответов: 2

Мне нужно создать мини-код банкомата, и я не могу понять, с чего начать?


На данный момент я планирую сделать 5 предустановленных счетов и добавить деньги на счет, я новичок в методах, поэтому я действительно не могу понять, как проверить вводимые пользователем данные с помощью методов( и я должен использовать методы)

Что я уже пробовал:

импорт java.util.*;
открытый класс Банк {

публичный статический пустота главный(строка[] аргументы) {
// Todo автоматически сгенерированные заглушки метода
Вход сканера=новый сканер (System.in);
int счетчик=0;
int dig=0;
int pin=0;
System.out.println("Добро пожаловать в банкомат");
если(счетчик==0)
{
System.out.println("введите последние 4 цифры номера вашего счета");
копать=вход.nextInt();
проверка(копать,счетчик);
}
иначе если(счетчик==1)
{
System.out.println("введите pin-код");
пинкод ввода.nextInt();
}
проверка(копать,счетчик);
}

статические логические проверки(инт копать,не) {
// Todo автоматически сгенерированные заглушки метода
инт акк[]={1234,2345,3456,4567,5678};
для(int x=0;x<5;x++)
{
if(acc[x]==dig)
{
счетчик+=1;
основной(нулевой);
вернуть true;
}
еще
{
System.out.println("неверный ввод");
главная(счетчик);
}
}
возвращает 0;

}

}

MadMyche

Вы должны использовать только один класс, или вам разрешено несколько?

Member 14045850

Нет я не думаю что мы можем использовать несколько классов

2 Ответов

Рейтинг:
0

Richard MacCutchan

Использование методов, чтобы сделать что-нибудь, во многом одно и то же во всех случаях. Определите имя метода, входные и выходные параметры. Таким образом, чтобы подтвердить номер счета, вы можете иметь что-то вроде:

bool isValidAccount(int accountNumber) {
    bool answer = false; // default condition
    // do whatever is necessary to check the account
    // and set answer = true if it is valid

    return answer;
}

int account = // get the account number
if (isValidAccount(account) {
    // yes, it is valid
}
else {
    // not valid
}


Member 14045850

Итак, в том месте, где вы хотите, чтобы я попросил ввести данные пользователя?

Richard MacCutchan

Не обязательно, обычно лучше держать ввод/вывод отдельно от проверки. Это позволит выполнять и другие действия; например, если метод isValidAccount возвращает false, вам нужно дать пользователю некоторое указание на то, что он ошибается, и попросить другое значение.

CPallini

5.

Member 14045850

?

CPallini

Я поддержал решение Ричарда.

Richard MacCutchan

За что я вам очень благодарен ... снова.

Skandan Vecham

все ваше решение-спасибо вам.

Richard MacCutchan

Я думаю, что этот комментарий предназначался для операции, а не для меня.

MadMyche

Это было... слишком утомительно, когда я написал это, обернул все это в новое решение

Рейтинг:
0

MadMyche

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

Q' Do you have to use only one class, or are you allowed multiple?
A' No i don't think we can use multiple classes

Как только у вас есть все требования, затем составьте высокоуровневый план/план операций, которые будут необходимы
1 Display "Welcome" screen

2 User Information
-2A AccountNumber, PIN, Balance
-2B Get user credentials: Account number and PIN
-2C Authenticate user

3 Banking Functions
-3A Balance
-3B Withdrawal
-3C Deposit
Этот список может быть неполным для вас, или в нем может быть слишком много для ваших требований.
Каждый из основных пунктов мог станьте отдельным классом, если это необходимо. По большей части, каждый элемент внизу будет выполнен с помощью метода
#2A-это исключение, и это только данные. Наверное, это должен быть отдельный класс.

Теперь перейдем к вашему фактическому коду. Моя рекомендация состояла бы в том, чтобы аутентифицировать как номер счета, так и PIN-код одновременно; используя метод, аналогичный имени пользователя и паролю. Для этого есть 2 причины безопасности

Первый-это угадывание и защита грубой силой. Эта статистика основана на 4-значный счет и 4-значный PIN-код
1 - отдельные "валидации" будут иметь только 20 000 комбинаций (2*10^4)
2 - расчесывание в одну аутентификацию будет составлять 100 000 000 комбинаций (1*10^8)

Второй вывод вытекает из этого - если у вас есть 2 отдельных сообщения обратной связи, человек, пытающийся войти, будет знать, как только он получит правильный Acct или правильный PIN-код, а затем получит половину комбинации 1:20 000. Если вы вернули двусмысленное сообщение "номер счета и/или PIN-код неверны", они остаются в цикле 1:100 000 000, который имеет (возможно) 5000 x безопасность.