使用者註冊登入案例分析以及簡單實現
阿新 • • 發佈:2019-02-03
使用者註冊登入案例
功能分析
本案例主要是使用者註冊和登入功能。根據使用者輸入的使用者名稱和密碼判斷使用者能否登入進去。使用者的資訊儲存在userInformation.txt檔案中。
分析順序如下:
1. 分包和建類
2. 實現功能
分包
主要分為四個包:
cn.edu.domain包,裡面定義一個User類,使用者有使用者名稱和密碼; cn.edu.dao,一個裡面的類為UserDao,UserDao寫一個操作介面,裡面定義登入和註冊功能; cn,edu.Impl包,UserDaoImpl用集合和檔案來實現,首先將檔案中的內容讀入到集合,然後利用集合的判斷功能判斷是否存在此使用者名稱和密碼,決定下一步是否將使用者名稱和密碼加入到檔案中; cn.edu.test包,主要是進行測試的類,UserTest類。
功能實現
使用者類實現:
package cn.edu.domain;
/*
* User 寫一個標準的使用者類
* 使用者名稱和密碼
*/
public class User {
// 兩個私有變數,使用者名稱和密碼
private String userName;
private String password;
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(String userName, String password) {
super ();
this.userName = userName;
this.password = password;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [userName=" + userName + ", password=" + password + "]";
}
}
UserDao.java實現:
package cn.edu.dao;
import java.io.File;
import java.io.IOException;
/*
* UserDao 寫一個操作介面,裡面定義登入和註冊功能
*/
public interface UserDao {
// 定義登入介面
public abstract boolean login(String userName, String password) throws IOException;
// 定義註冊介面
public abstract boolean register(String userName, String password) throws IOException;
}
UserDaoImpl主要功能的實現:
/*
* UserDaoImpl 寫具體的實現,用集合實現
*/
package cn.edu.dao.impl;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashSet;
import cn.edu.dao.UserDao;
/*
* UserDaoImpl 寫具體的實現,用集合實現
*/
public class UserDaoImpl implements UserDao {
public UserDaoImpl() {
}
public static File userInfo = new File("userInformation.txt");
@Override
public boolean login(String userName, String password) throws IOException {
boolean flag = false;
//使用者註冊的時候,如果檔案還沒有存在,則提醒使用者沒有此使用者
if (!userInfo.exists()) {
System.out.println("No such username.");
} else {
//通過將檔案中儲存的使用者資訊讀取到一個集合中;
//通過遍歷集合裡面的內容,判斷集合中的內容是否與使用者輸入的使用者名稱和密碼相同;
//如果有相同的,則提示登入成功,退出迴圈;
//如果沒有相同的,則提示登入失敗。
BufferedReader br = new BufferedReader(new FileReader(userInfo));
HashSet<String> hs = new HashSet<String>();
String username;
while ((username = br.readLine()) != null) {
hs.add(username);
}
br.close();
for (String ur : hs) {
if (hs.contains(userName + " " + password)) {
flag = true;
System.out.println("login successful");
break;
}
}
if (!flag) {
System.out.println("login fail");
}
}
return flag;
}
@Override
public boolean register(String userName, String password) throws IOException {
boolean flag = false;
//在註冊過程中,如果儲存使用者資訊的檔案沒有存在,則建立檔案;
if (!userInfo.exists()) {
userInfo.createNewFile();
}
/*
* 如果檔案已經存在,則首先將檔案中的資訊讀取到一個集合
* 然後迴圈遍歷集合中的內容,如果集合中沒有與使用者輸入的使用者名稱相同的,
* 則將使用者名稱和密碼儲存到檔案中,並提示使用者註冊成功;
* 如果已經有此使用者名稱存在,則提示使用者,該使用者名稱已經存在。
*/
BufferedReader br = new BufferedReader(new FileReader(userInfo));
BufferedWriter bw = new BufferedWriter(new FileWriter(userInfo, true));
HashSet<String> hs = new HashSet<String>();
String s;
while ((s = br.readLine()) != null) {
hs.add(s);
}
if (!hs.contains(userName + " " + password)) {
flag = true;
bw.write(userName + " " + password);
bw.newLine();
bw.flush();
System.out.println("Register successful");
} else {
System.out.println("The username is already exist.");
}
bw.close();
br.close();
return flag;
}
}
測試類:
package cn.edu.test;
import java.io.IOException;
import java.util.Scanner;
import cn.edu.dao.impl.UserDaoImpl;
/*
* UserTest 在測試類中寫程式碼進行測試
*/
public class UserTest {
public static void main(String[] args) throws IOException {
while (true) {// 只有當用戶成功登陸進去才結束迴圈
System.out.println("Please choose to login or register?");
System.out.println("login---register");
Scanner sc = new Scanner(System.in);
String choose = sc.nextLine();
UserDaoImpl udp = new UserDaoImpl();
// 判斷使用者是選擇登陸還是選擇註冊
if (choose.equals("login")) {// 使用者選擇登陸
System.out.println("username is ");
String user = sc.nextLine();
System.out.println("password is ");
String pass = sc.nextLine();
// 使用者登陸
boolean result = udp.login(user, pass);
//輸出登入結果
//System.out.println(result);
if (result)// 使用者登陸成功,則退出迴圈
break;
} else if (choose.equals("register")) {// 使用者選擇註冊
System.out.println("username is ");
String user = sc.nextLine();
System.out.println("password is ");
String pass = sc.nextLine();
// 使用者註冊
boolean isRegister = udp.register(user, pass);
//輸出註冊的結果是成功還是失敗
//System.out.println(isRegister);
}
}
}
}
至此,該使用者登陸註冊案例結束。這裡是使用檔案儲存使用者資訊,以後可以使用資料庫儲存使用者資訊,更便於查詢和更改使用者資訊。