import cn.xiaodi.dao.domain.User;
public interface UserDao {
//登录的功能
public abstract boolean userLogin(String userName , String password) ;
//注册的功能
public abstract void userRegist(User user);
}
public class UserDaoImp implements UserDao {
static{
//创建file对象
File file = new File("E:\\小迪好.txt");
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public boolean userLogin(String userName, String password) {
//登录的功能
boolean flag = false ;
//创建高效输入流对象
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("E:\\小迪好.txt"));
//频繁的读写
String line = null ;
try {
while ((line = br.readLine()) != null) {
String[] splits = line.split("----");
if (splits[0].equals(userName) && splits[1].equals(password)) {
flag = true;
break ;
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return flag ;
}
@Override
public void userRegist(User user) {
/**
* 注册: 我们需要将用户的数据通过流对象写入到一个文本文件中
* 我们现在接受的是一个User对象,而到目前为止我们没有学到对应的流把一个对象直接写入到文本文件中.
* 但是我们可以将用户的信息存储到文本文件中.而这个用户的信息有哪些呢?
* 有用户名和密码. 存储的时候我们如何进行存储.我们在存储的时候应该让一个用户的数据占一行.
* 在存储用户名和密码的时候可以指定一个规则: 比如: 用户名=密码
*/
//创建高效输出流对象
BufferedWriter bw = null ;
try {
bw = new BufferedWriter(new FileWriter("E:\\小迪好.txt" , true));
//判断注册时是否已经存在该用户名
if (!UserDaoImp.print(user)) {
String userInfo = user.getUserName() + "----" + user.getPassword();
bw.write(userInfo);
bw.newLine();
bw.flush();
System.out.println("恭喜你注册成功!!!");
}else{
System.out.println("该用户名已存在!!!");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//注册的功能
public static boolean print(User user){
boolean flag = false ;
//创建一个高效输入流对象
BufferedReader br = null ;
try {
br = new BufferedReader(new FileReader("E:\\小迪好.txt"));
String line = null ;
while ((line = br.readLine()) != null) {
String[] strs = line.split("----");
if ((strs[0].equals(user.getUserName()))) {
flag = true ;
break ;
}
}
}catch(IOException e) {
e.printStackTrace();
}finally{
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return flag ;
}
}
//用户类
public class User {
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 User(String userName, String password) {
super();
this.userName = userName;
this.password = password;
}
public User() {
super();
}
}
//测试类
public class UserTest {
public static void main(String[] args) {
while(true){
System.out.println("------------欢迎使用------------");
System.out.println("1: 登录");
System.out.println("2: 注册");
System.out.println("3: 退出");
// 创建键盘录入对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的选择: ");
String myChoice = sc.nextLine() ;
//创建对象
UserDao userDao = new UserDaoImp();
//选择
switch(myChoice){
case "1" :
System.out.println("------------欢迎登录------------");
System.out.println("请您输入用户名: ");
String loginUserName = sc.nextLine() ;
System.out.println("请您输入密码: ");
String loginPassword = sc.nextLine() ;
//调用方法
boolean flag = userDao.userLogin(loginUserName, loginPassword);
if (flag) {
System.out.println("请问是否玩猜数字小游戏: y/n");
String result = sc.nextLine();
if ("y".equalsIgnoreCase(result)) {
GuessNumGame.startGame() ;
} else {
System.out.println("欢迎下次再来!!!");
}
} else {
System.out.println("用户名或密码错误!!!");
}
System.exit(0);
case "2" :
System.out.println("------------欢迎注册------------");
System.out.println("请您输入用户名: ");
String registUserName = sc.nextLine() ;
System.out.println("请您输入密码: ");
String registPassword = sc.nextLine() ;
//创建user对象并将数据封装到user中
User user = new User();
user.setUserName(registUserName);
user.setPassword(registPassword);
//调用注册的功能
userDao.userRegist(user);
break;
case "3" :
default :
System.out.println("欢迎下次再来!");
System.exit(0) ;
}
}
}
}
//猜数字小游戏类
public class GuessNumGame {
/**
* 构造方法私有化
*/
private GuessNumGame() {}
/**
* 猜数字小游戏
*/
public static void startGame(){
// 给出提示
System.out.println("猜数字小游戏开始了.....");
// 生成一个随机数
int num = (int)(Math.random() * 100) + 1 ;
// 键盘录入数据
Scanner sc = new Scanner(System.in) ;
while(true){
System.out.println("请您输入一个数据: ");
int guessNum = sc.nextInt() ;
if(guessNum > num){
System.out.println("对不起,大了!");
}else if(guessNum < num){
System.out.println("对不起,小了!");
}else {
System.out.println("恭喜您猜中了!!!");
break ;
}
}
}
}
|
|