//刚学的io读写硬盘文件.这样就真的实现永久保存用户名跟密码啦.刚起步,写得不好.请大家更正:lol //选项很简单 只是一个注册和登陆框架.我自己是用在自己写的图书管理系统的.你们想添加什么功能自己动手哟~!
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.Arrays;
import java.util.Scanner;
// 创建一个用户类
class User{
private String name; //名字
private String password; //密码
public User(String name, String password) {
super();
this.name = name;
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
//重写toString方法.中间加一个字符是为了后面的切割字符串数组用的
@Override
public String toString() {
return name+","+password ;
}
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
User u = (User)obj;
return this.name.equals(u.name);
}
}
class Demo3用IO实现登陆注册功能 {
//设置扫描器为静态的,让所有方法都能调用
static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) throws IOException {
while(true){
System.out.println("选择功能 A登陆 B注册");
String str = scanner.next();
if("a".equalsIgnoreCase(str)){
loginUser();
}else if("b".equalsIgnoreCase(str)){
addUser();
}else{
System.out.println("输出有误...");
}
}
}
//登陆用户
public static void loginUser() throws IOException{
//找到目标文件,就是你存放User类用户名密码的txt文件.是可以改变的
File files = new File("F:\\Java homework\\workspac\\day19\\user.txt");
out:while(true){
System.out.println("请输入用户名");
String name = scanner.next();
System.out.println("请输入密码");
String password = scanner.next();
//用User类保存
User user = new User(name,password);
//转换成String类型,用于后面的比较字符串
String str1 = user.toString();
//建通道,读取数据
FileReader fileReader = new FileReader(files);
//建缓字符冲数组
BufferedReader bufferedReader = new BufferedReader(fileReader);
String count =null;
//一行一行的读取,因为登陆是要用户密码都匹配的
while((count=bufferedReader.readLine())!=null){
//把一行的数据转成字符串类型,就能和转换User后的字符串比较了
String str3 = count.toString();
//判断是否匹配
if(str1.equals(str3)){
System.out.println("登陆成功");
return; //登陆成功后其实就应该实现其他的功能了,你们自己添加就是从这里开始啦,
} //因为是框架我就return了
}
System.out.println("不存在用户或密码错误..");
//关闭资源
bufferedReader.close();
//登陆失败是继续尝试还是返回上一句,给用户一个选择
System.out.println("返回请按B..任意键继续");
String s = scanner.next();
if("b".equalsIgnoreCase(s)){
return;
}
}
}
//注册用户
public static void addUser() throws IOException{
//找文件
File files = new File("F:\\Java homework\\workspac\\day19\\user.txt");
//创建一个文件.
files.createNewFile(); //这个boolean类型.如果不存在文件就会帮你新建一个,如果存在文件返回false,文件也不会创建了.
out:while(true){
System.out.println("用户名");
String name = scanner.next();
//注册用户名的时候判断是否重名.先读取txt文件
FileReader fileReader = new FileReader(files);
BufferedReader bufferedReader =new BufferedReader(fileReader);
String count = null;
while((count=bufferedReader.readLine())!=null){
//转为字符串数组,因为重写toString方法,用户名和密码用逗号隔开,所以这里可以用逗号来切割
String[] s1=count.split(",");
//0号索引值就是用户名,转成字符串跟你输入的字符串比较
String ss = s1[0];
//判断
if(ss.equals(name)){
System.out.println("用户名重复..返回请按B..任意键继续.");
String s = scanner.next();
if("b".equalsIgnoreCase(s)){
return;
}
//continue out到最外面的while循环才能继续输入名字
continue out;
}
}
fileReader.close();
//不重名后才开始执行下面的语句
System.out.println("密码");
String password = scanner.next();
User user = new User(name,password);
//转成字符串.用字符流输入
String str = user.toString();
//System.out.println(str);
//建通道
FileWriter fileWriter = new FileWriter(files,true);
//建缓冲字符组
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
//写入
bufferedWriter.write(str);
System.out.println("添加成功");
//换行
bufferedWriter.newLine();
//关闭资源
bufferedWriter.close();//关闭了资源才会把数据写到文本上去,不要问我为什么,这个是它的特性...
return;
}
}
}
|
|