1、实体类:
package com.wyq.print;
import java.io.Serializable;
public class TestEntity implements Serializable{
private String userName;//用户名
private String 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;
}
public TestEntity(String userName, String password) {
super();
this.userName = userName;
this.password = password;
}
public TestEntity() {
super();
}
}
2、接口层:
package com.wyq.print;
public interface UserDao {
public boolean register(TestEntity u);
public boolean login(TestEntity u);
}
3、类实现接口层:
package com.wyq.print;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class TestDaoImpl implements UserDao {
Scanner sc = new Scanner(System.in);
private static List<TestEntity> listUser = new ArrayList<TestEntity>();
private static File f = new File("user.bat");
static {
if (!f.exists()) {
listUser.add(new TestEntity("admin", "admin"));
// 将集合写进文件
Write();
}
read();
}
@Override
public boolean register(TestEntity u) {
if (checkName(u.getUserName())) {
// 可以注冊
listUser.add(u);// 添加到集合中
// 再將集合寫進文件
Write();
return true;
}
return false;
}
/**
* 用于将磁盘上序列化的对象进行反序列化
*/
private static void read() {
// 创建对象
ObjectInputStream ois =null;
try {
ois = new ObjectInputStream(new FileInputStream(f));
// 读取数据
listUser = (List<TestEntity>) ois.readObject();
// 关闭
ois.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 用于将集合写进文件
*/
private static void Write() {
// 创建对象流对象
ObjectOutputStream oos =null;
try {
oos = new ObjectOutputStream(new FileOutputStream(f));
oos.writeObject(listUser);
oos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public boolean login(TestEntity u) {
for (TestEntity et : listUser) {
if (et.getUserName().equals(u.getUserName()) && et.getPassword().equals(u.getPassword())) {
return true;
}
}
return false;
}
private boolean checkName(String userName) {
for (TestEntity te : listUser) {
if (te.getUserName().equals(userName)) {
return false;// 用戶名相同,則不允許注冊
}
}
return true;
}
}
4、测试类
package com.wyq.print;
import java.util.Scanner;
public class Test {
Scanner sc = new Scanner(System.in);
//使用多态,接口new实现类
UserDao ud = new TestDaoImpl();
private String cmpwd;
public void mainMenu(){
while(true){
System.out.println("1.登录\t2.注册\t3.退出");
int choice = sc.nextInt();
switch (choice) {
case 1:
login();
continue;
case 2:
register();
continue;
case 3:
System.out.println("謝謝使用,退出。");
continue;
default:
System.out.println("對不起,選擇的業務不存在。");
break;
}
}
}
private void register() {
System.out.println("請輸入用戶名:");
String userName = sc.next();
System.out.println("請輸入密碼:");
String password = sc.next();
System.out.println("請輸入確認密碼:");
String cmpwd = sc.next();
while(!cmpwd.equals(password)){
System.out.println("請輸入密碼:");
password = sc.next();
System.out.println("請輸入確認密碼:");
cmpwd = sc.next();
}
//封裝成用戶對象
TestEntity te =new TestEntity(userName, password);
//調用數據訪問層,實現類中的方法
System.out.println(ud.register(te)?"註冊成功":"用戶名不能重複");
}
/**
* 封裝成用戶對象
*/
private void login() {
System.out.println("青输入用户名:");
String userName = sc.next();
System.out.println("请输入密码:");
String password = sc.next();
//封裝成用戶對象
//进行初始化参数
TestEntity te =new TestEntity(userName, password);
//調用數據訪問層,實現類中的方法
System.out.println(ud.login(te)?"登陸成功":"登陸失敗");
}
public static void main(String[] args) {
Test t = new Test();
t.mainMenu();
}
}
总结:通过list集合,将参数分装成对象的形式进行传递