私は非常に簡単なATMマシンを作成しています。データベースからログイン情報を保存するには
最初は、ログインとパスワードについて尋ねられます。 パスワードが正しい場合、ユーザーはいくつかの操作を行うことができます。 1)撤退お金
は、問題は、私は1を選択)か、毎回2)または3)、プログラムが尋ねていること 2)証拠金 3)現在の値:
は、今では次のように事業を展開しています私は再びログインとパスワードについて。しかし、私は初めに一度だけ聞きたいです。
私はどこかのユーザーのログイン名/パスワードを保存し、いくつかの操作をしたいときにそれを読むことができるソリューションが必要です。
これは私のコードの一部です。
public class LoginVerification {
public static void login() throws Exception {
Scanner input = new Scanner(System.in);
System.out.println("Please enter USER ID:");
String userId = input.nextLine();
System.out.println("Please enter PIN CODE:");
String pass = input.nextLine();
try {
Connection con = ConnectionDB.getConnection();
String sql = "SELECT COUNT(*) FROM Info WHERE ClientID = ? AND ClientPass = ?";
PreparedStatement posted = con.prepareStatement(sql);
posted.setString(1, userId);
posted.setString(2, pass);
ResultSet resultSet = posted.executeQuery();
resultSet.next();
int rowCount = resultSet.getInt(1);
if (rowCount == 1) {
System.out.println("LOGIN SUCCESSFUL");
Helper.showMainMenu();
} else {
System.out.println("#LOGIN UNSUCCESSFUL, WRONG LOGIN OR PASSWORD");
System.out.println("\nTry again? \n1) yes \n2) no [quit]");
int choice = input.nextInt();
if (choice == 1) {
login();
} else {
System.exit(0);
}
}
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
そして、問題は以下の通りです。あなたが見ることができるように、私は別の方法でそれを行うことができないので、プログラムはログイン/パスについて再度尋ねています。あなたは、これがlogin()
で設定することができ、任意のページ
から使用/確認することができ 、ユーザーがログインされているかどうかを伝えるためにフラグを必要
public static void withdraw() throws Exception {
Scanner input = new Scanner(System.in);
System.out.println("please enter USER ID:");
String userId = input.nextLine();
System.out.println("please enter PIN CODE:");
String pass = input.nextLine();
System.out.println("how much you want to withdraw");
int money = input.nextInt();
try {
Connection con = ConnectionDB.getConnection();
String sql = "UPDATE BankDB.Info SET `Money`= `Money` - ? WHERE `ClientID`= ? AND `ClientPass` = ?";
PreparedStatement posted = con.prepareStatement(sql);
posted.setInt(1, money);
posted.setString(2, userId);
posted.setString(3, pass);
if (posted.executeUpdate() > 0) {
System.out.println("OPERATION SUCCESSFUL");
} else {
System.out.println("LOGIN UNSUCCESSFUL");
System.out.println("\nTry again? \n1) yes \n2) no [quit]");
int choice = input.nextInt();
if (choice == 1) {
withdraw();
} else {
System.exit(0);
}
}
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
フラグを使用し、必要に応じてチェックしてください – sForSujit
ログインしたら、そのユーザーのセッションを維持する必要があります。すなわち、ブール変数を設定することによって行われる。そして、すべての操作について、その変数が真であるかどうかをチェックする必要があります。しかし、あなたのコードを見て、それはあなたが正しい方法でやっているようには見えません。 – v1shnu
はローカル変数ではなく、クラスのフィールドとして 'userid'と' pass'を持っています。実際に操作する前にいくつかのシナリオで実際に –