標籤:建構函式 register login 使用者登入 opened equals 資源 name sed
2017-09-16
這是我在部落格園的第一篇學習筆記。
Java小白,努力進階中...
今天學的是使用者登入註冊功能。
4個包:
itcast.cn.user包 User.java 使用者類,描述使用者基本資料,包括成員變數,無參建構函式,帶參構造(可有可無).get和set方法
1 package itcast.cn.day22; 2 /* 3 * 使用者基本描述包類 4 */ 5 6 public class User { 7 private int userName; 8 private int passWord; 9 public User(){10 super();11 }12 public User(int userName,int passWord){13 super();14 this.userName=userName;15 this.passWord=passWord; 16 }17 public int getUserName() {18 return userName;19 }20 public void setUserName(int userName) {21 this.userName = userName;22 }23 public int getPassWord() {24 return passWord;25 }26 public void setPassWord(int passWord) {27 this.passWord = passWord;28 }29 30 }
tcast.cn.uerDao包 UserDao.java 定義一個介面,聲明登入註冊功能
1 public interface UserDao { 2 2 public abstract boolean islogin( String userName, String passWord);3 3 public abstract void register(User user);4 4 }View Code
itcast.cn.userDaoImpl包 UserDaoImpl.java 實現UserDao介面,具體描述登入註冊方法。
需要注意的是:在登入方法中,傳回值boolean flag = true 即登入成功
在實現過程中需要注意的一點是:全域變數br,bw的聲明一定要放在try大括弧外
IO版本實現方法代碼如下:
1 public class UserDaoImpl implements UserDao{ 2 3 @Override 4 public boolean islogin(String userName, String passWord) { 5 boolean flag = false; 6 BufferedReader br = null; 7 try { 8 br = new BufferedReader(new FileReader("user,txt")); 9 String line = null;10 11 while((line=br.readLine())!=null){12 String[] datas = line.split("=");13 if(datas[0].equals(userName)&&datas[1].equals(passWord)){14 flag = true;15 break;16 }17 }18 } 19 catch (FileNotFoundException e) {20 //e.printStackTrace();21 System.out.println("使用者資訊擷取失敗");22 }catch (IOException e) {23 //e.printStackTrace();24 System.out.println("使用者登入失敗");25 }26 if(br!=null){27 try {28 br.close();29 } catch (IOException e) {30 //e.printStackTrace();31 System.out.println("使用者釋放資源失敗");32 }33 }34 return flag;35 }36 37 @Override38 public void register(User user) {39 BufferedWriter bw = null; 40 try {41 bw = new BufferedWriter(new FileWriter("user.txt"));42 bw.write(user.getUserName()+"="+user.getPassWord());43 bw.newLine();44 } catch (IOException e) {45 //e.printStackTrace();46 System.out.println("註冊失敗");47 }finally{48 if(bw!=null){49 try {50 bw.close();51 } catch (IOException e) {52 //e.printStackTrace();53 System.out.println("註冊釋放資源失敗");54 }55 }56 }57}58 }
itcast.cn.usertest包 UserTest類 測試類別
在這個類中,存在一個未解決的問題:
scanner函數無法一個一個的輸入,另外構造方法中的(true)需要多看。
1 package itcast.cn.day22; 2 3 import java.util.Scanner; 4 5 public class UserTest { 6 public static void main(String[] args) { 7 //歡迎介面 8 while(true){ 9 UserDao ud = new UserDaoImpl();10 System.out.println("*****歡迎進入*****");11 System.out.println("登入請輸入1");12 System.out.println("註冊請輸入2");13 System.out.println("返回請輸入3");14 15 System.out.println("請輸入你的選擇:");16 Scanner sc = new Scanner(System.in);17 int choice = sc.nextInt();18 switch(choice){19 case 1:20 System.out.println("*****登入介面*****************");21 //Scanner sc1 = new Scanner(System.in);22 System.out.println("請輸入使用者名稱:");23 String userName = sc.nextLine();24 System.out.println("請輸入密碼:");25 String passWord = sc.nextLine();26 27 boolean flag = ud.islogin(userName, passWord);28 if(flag){29 System.out.println("登入成功");30 break;31 }else{32 System.out.println("使用者名稱或密碼錯誤");33 }34 35 case 2:36 System.out.println("*****註冊介面****************");37 System.out.println("請輸入使用者名稱:");38 String userName1 = sc.nextLine();39 System.out.println("請輸入密碼:");40 String passWord1 = sc.nextLine();41 42 User user = new User();43 user.getUserName();44 user.getPassWord();45 ud.register(user);46 System.out.println("註冊成功");47 break;48 case 3:49 default:50 System.out.println("謝謝使用,歡迎下次再來");51 System.exit(0);52 break;53 }54 }55 }56 }
IO版的使用者登入註冊案例(Java)