2016-11-15 34 views
1

對不起,如果這個問題已經問過,但我試圖找到這個,我沒有得到任何符合我的問題。我的問題是如何驗證登錄數據基於.txt文件在Java gui(我使用netbeans)。 我有2個jFrame,第一個是MainMenu框架和註冊框架,我卡在MainMenu。在註冊類中將數據保存到.txt文件中沒有問題。這裏.txt文件的 樣本:如何在基於gui的文本文件驗證登錄數據

名稱:Gifhary年齡:20金額:2000帳號:1234密碼:布拉布拉

文件名是基於帳戶沒有。

這是我的註冊碼

package banksimulator; 

import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.util.ArrayList; 
import javax.swing.JOptionPane; 

public class Registration extends javax.swing.JFrame { 
static ArrayList name = new ArrayList(); 
static ArrayList age = new ArrayList(); 
static ArrayList amount = new ArrayList(); 
static ArrayList accountNo = new ArrayList(); 
static ArrayList password = new ArrayList(); 

/** 
* Creates new form Registration 
*/ 
public Registration() { 
    initComponents(); 
    this.setLocationRelativeTo(null); 
private void saveBtnActionPerformed(java.awt.event.ActionEvent evt) {           
    String content = "Name: "+txtName.getText()+" Age: "+txtAge.getText()+" Amount: "+txtAmount.getText()+" Account No: "+txtAccountNo.getText()+" Password: "+txtPassword.getText(); 
    try { 

     File file = new File("src/banksimulator/Registration/"+txtAccountNo.getText()+".txt"); 

     if (!file.exists()) { 
      file.createNewFile(); 


     FileWriter data = new FileWriter(file.getAbsoluteFile()); 
     BufferedWriter bw = new BufferedWriter(data); 
     bw.write(content); 
     bw.close(); 

     JOptionPane.showMessageDialog(this, "Data Is Saved"); 

     txtName.setText(""); 
     txtAge.setText(""); 
     txtAmount.setText(""); 
     txtAccountNo.setText(""); 
     txtPassword.setText(""); 
     } 
     else { 
      JOptionPane.showMessageDialog(this, "Account Number Is Already Used"); 
      txtAccountNo.setText(""); 
     } 
    } catch (IOException e) { 
    } 

    // TODO add your handling code here: 
}          

private void cancelBtnActionPerformed(java.awt.event.ActionEvent evt) {           
    this.dispose(); 
    MainMenu m = new MainMenu(); 
    m.setVisible(true); 
    // TODO add your handling code here: 
} 

我跳過「生成代碼」

一些默認代碼,這是MainMenu的

package banksimulator; 

import java.io.*; 
import javax.swing.*; 

/** 
* 
* @author Qodri 
*/ 
public class MainMenu extends javax.swing.JFrame { 



/** 
* Creates new form MainMenu 
*/ 
public MainMenu() { 
    initComponents(); 

    this.setLocationRelativeTo(null); 
} 
private void registrationBtnActionPerformed(java.awt.event.ActionEvent evt) {             
    this.dispose(); 
    Registration r = new Registration(); 
    r.setVisible(true); 

    // TODO add your handling code here: 
}            

private void logInBtnActionPerformed(java.awt.event.ActionEvent evt) {           
    String account = txtAccountNo.getText(); 
    String password = txtPassword.getText(); 


//My problem is here 


    // TODO add your handling code here: 
}  

數據需要MainMenu的是帳號和密碼 如果有人能幫助我,請。非常感謝你

回答

0

既然你可以將信息保存到一個文件,你應該知道如何讀回它。現在我假設你已經在一個名爲yourReader的函數中實現了這個功能,該函數從文件中獲取密碼字符串。從那裏,執行的其餘部分很簡單:

String account = txtAccountNo.getText(); 
String password = txtPassword.getText(); 
String correctPassword = yourReader("src/banksimulator/Registration/" + account + ".txt);//??? 
if(password.equals(correctPassword)){ 
    System.out.println("Login successful."); 
} 
else { 
    System.out.println("Hacker alert!"); 
} 

編輯:我會給你一個提示爲yourReader

String allLines = ..?; 
String searchString = "Password: "; 
String password = allLines.substring(allLines.indexOf(searchString) + searchString.length()); 
return password; 
+0

謝謝@ user1092688 但是,當我建立GUI成。 jar 它不會將數據保存到.txt文件 我已經通過查看帶有winRar的.jar文件來更改目標文件夾以保存.txt文件,在.jar文件中只有2個文件夾存在,banksimulator和META-INF 在第一個文件夾的目的地是(仍然由netbeans打開)「BankSimulator/sr 「/ modelsimulator/Registration /」 在.jar文件中是「banksimulator/Registration /」 –

+0

那是因爲你用'src/banksimulator/...'指定了一個**相對路徑**,你可以指定一個**絕對如果你想保存到絕對位置,路徑**即'C:\\ Users \\ Gifhary \\ Desktop'。如果要保存到.jar的當前位置,可以使用[此技術](http://stackoverflow.com/a/7603444/1092688) –

相關問題