A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

//刚学的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;
                }       
        }
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马