模拟用户登录

这是一个Java程序,实现了用户登录和密码修改的功能。用户可以选择登录或改密,登录时验证用户名和密码,改密时需要输入原密码并验证,然后设置新密码。程序通过Scanner读取用户输入,并使用FileInputStream读取文件中的用户数据。
摘要由CSDN通过智能技术生成
package Test;

import java.io.*;

import java.util.Scanner;

public class test2 {
    private static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) throws IOException {
        File file = new File("user");
        System.out.println("***********登录(1)********");
        System.out.println("***********改密码(2)******");
        System.out.println("***********退出(other)******");
        int i = scanner.nextInt();
        switch (i) {
            case 1:
                Login(file);
                break;
            case 2:
                Alert(file);
                break;
            default:System.exit(0);
        }


    }

    private static void Login(File file) throws IOException {
        String s = "";
        s = getFile(file);
        //获取用户输入的用户名和密码
        StringBuilder user = new StringBuilder();


        System.out.println("请输入用户名:");
        String name = scanner.next();
        user.append(name).append(",");
        System.out.println("请输入密码;");
        String admin = scanner.next();
        user.append(admin);
        //判断库中是否含有输入的用户名和密码
        if (s.contains(user)) {
            System.out.println("登录成功!");
        } else {
            System.out.println("用户名或密码错误!");
        }
    }

    /*模拟用户修改密码,让用户输入用户名,去文本文件中匹配是否有该用户名,
    如果不存在则输出用户名错误,如果存在则可以修改密码,首先要先输入原密码,
    如果原密码不正确则输出密码错误,如果密码正确则可以输入新密码,完成真正的密码修改。*/
    private static void Alert(File file) throws IOException {
        String s = getFile(file);
        System.out.println("请输入用户名:");
        String name = scanner.next();
        if (s.contains(name)) {
            System.out.println("请输入原密码:");
            String admin = scanner.next();
            //把输入的密码形成字符串
            StringBuilder builder = new StringBuilder();
            builder.append(name).append(",").append(admin);
            if (s.contains(builder)) {
                //获取密码前字节数
                int i = s.indexOf(admin);
                String sub = s.substring(0, i);
                int by = sub.getBytes().length;

                System.out.println("请输入新密码:");
                String newAdmin = scanner.next();
                RandomAccessFile accessFile = new RandomAccessFile(file, "rw");
                accessFile.seek(by);
                accessFile.write(newAdmin.getBytes());
                System.out.println("密码更改成功!");
            }
        } else {
            System.out.println("用户名错误!");
        }
    }

    private static String getFile(File file) throws IOException {
        //获取库用户名和密码
        String root = "";
        //使用文件输入流获取库内容
        FileInputStream inputStream = new FileInputStream(file);
        byte[] bytes = new byte[1024];
        int len;
        while ((len = inputStream.read(bytes)) != -1) {
            String s = new String(bytes, 0, len);
            root = s;
        }
        inputStream.close();
        return root;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

两年半的JAVA练习生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值