登录系统

因为前两天写IO的学生管理系统,导致我想模仿着写一个登录系统。

因为暂时没有学到页面部分,所以想象着登录页面开始写。

该页面包括:用户注册、登录;管理员登录(管理员账号密码已固定)然后就是管理员能够进行的增删查改操作

package com.java1;
//定义用户信息类
public class LoginUser {
	private String username;
	private String password;
	public LoginUser() {
	
	}
	public LoginUser(String username, String password) {
		this.username = username;
		this.password = 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;
	}
	}


package com.java1;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

//编写一个用户登录系统
public class UserLoginManage {
	public static void main(String[] args) throws IOException {
		String fileName = "users.txt";
		
		while(true){
		System.out.println("----欢迎来到我的世界----");
		System.out.println("1、注册新用户");
		System.out.println("2、用户登录");
		System.out.println("3、管理员登录");
		System.out.println("4、退出");
		System.out.println("------------");
		
		//输入选择
		Scanner sc=new Scanner(System.in);
		System.out.println("输入相应序号,进行操作");
		String choice=sc.nextLine();
		switch(choice){
		case"1":
			//注册方法
			userRegister(fileName);
			break;
		case"2":
			//用户登录
			loginUser(fileName);
			break;
		case"3":
			//管理员登录
			managerLogin(fileName);
			break;
		case"4":
			//退出
			System.out.println("感谢使用,再会!");
			System.exit(0);
		default:
			System.out.println("输入有误,重新输入(1-4)");
			break;
		}
	}
}
	//编写写入文件方法
	public static void writeData(String fileName, ArrayList<LoginUser> array)
            throws IOException {
        // 创建输出缓冲流对象
        BufferedWriter bw = new BufferedWriter(new FileWriter(fileName));
        for (int x = 0; x < array.size(); x++) {
        	LoginUser s = array.get(x);
            StringBuilder sb = new StringBuilder();
            sb.append(s.getUsername()).append(",").append(s.getPassword());
            bw.write(sb.toString()); //把从数组中读取出来的数据 拼接在StringBuilder中 然后以字符串的形式写入文件中
            bw.newLine();//换行
            bw.flush();//刷新
        }
        bw.close();//释放资源
    }
	//编写读取文件方法
	 public static void readData(String fileName, ArrayList<LoginUser> array)
	            throws IOException {
	        // 创建输入缓冲流对象
	        BufferedReader br = new BufferedReader(new FileReader(fileName));
	        String line;
	        while ((line = br.readLine()) != null) {
	            String[] datas = line.split(",");
	            LoginUser s = new LoginUser();
	            s.setUsername(datas[0]);
	            s.setPassword(datas[1]);
	            array.add(s);
	        }
	        br.close();
	    }
	
	//编写addUser注册新用户方法
	    public static void userRegister(String fileName) throws IOException {
	    	System.out.println("欢迎加入我们,请按照提示进行操作");
	       //调用用户信息添加方法
	    	addUser(fileName);
	    }
	    
	    //编写用户登录方法
	    public static void loginUser(String fileName) throws IOException{
	    	 //创建集合对象
	        ArrayList<LoginUser> array = new ArrayList<LoginUser>();
	        //从文件中把数据读取到集合中
	        readData(fileName, array);
	        Scanner sc = new Scanner(System.in);
	        
	        for(int i=0;i<2;i++){
	        System.out.println("请输入账号");
	        String name=sc.nextLine();
	        System.out.println("请输入密码");
	        String psd=sc.nextLine();
	        
	        //判断输入的账号密码和文件中存储的是否一致
	        for(int j=0;j<array.size();j++){
	        	LoginUser s=array.get(j);
	        	if(s.getUsername().equals(name)&&s.getPassword().equals(psd)){
	        		System.out.println("登录成功");
	        		break;
	        	}
	        	else{
	        		if((i-1)==0){
						System.out.println("账号已经被锁定");
					}
					else{
						System.out.println("登录失败,你还有"+(1-i)+"次机会");
					}
	        	}
	        }
	    }
	    }
	    
	    //编写管理员登录方法
	    public static void managerLogin(String fileName) throws IOException{
	    	String fileNameu = "users.txt";
	    	//定义管理员账号密码
			String Uname="yxt";
			String Upassword="17730";
	    	Scanner sc=new Scanner(System.in);
			
			
				System.out.println("请输入用户名");
				String nam=sc.nextLine();
				System.out.println("请输入密码");
				String psd=sc.nextLine();
				
				if(Uname.equals(nam)&&Upassword.equals(psd)){
					System.out.println("登录成功");
					
					System.out.println("欢迎您,管理员");
					while(true){
						System.out.println("1、 查看所有用户信息");
			            System.out.println("2 、添加用户信息");
			            System.out.println("3 、删除用户信息");
			            System.out.println("4 、修改用户信息");
			            System.out.println("5 、退出");
						System.out.println("------------");
						
						  System.out.println("请输入你的选择:");
				          
				            String choiceString = sc.nextLine();
				            
				            switch(choiceString) {
				            case "1":
				                //查看所有用户
				                findAllUser(fileNameu);
				                break;
				            case "2":
				                //添加用户
				                addUser(fileName);
				                break;
				            case "3":
				                //删除用户
				                deleteUser(fileName);
				                break;
				            case "4":
				                //修改用户
				                updateUser(fileName);
				                break;
				            case "5":
				            default:
				                System.out.println("谢谢你的使用");
				                System.exit(0); //JVM退出
				                break;
				            }
				        }
					
				}
				else{
					System.out.println("您不是管理员,请选择“用户登录”");
					}
	    }
	    
	    //编写查看所有用户信息方法
	    public static void findAllUser(String fileName) throws IOException  {
	        //创建集合对象
	        ArrayList<LoginUser> array = new ArrayList<LoginUser>();
	        //从文件中把数据读取到集合中
	        readData(fileName, array);
	        
	        //首先来判断集合中是否有数据,如果没有数据,就给出提示,并让该方法不继续往下执行
	        if(array.size() == 0) {
	            System.out.println("不好意思,目前没有用户信息可供查询,请回去重新选择你的操作");
	            return;
	        }
	        
	        //\t 其实就是一个tab键的位置
	        System.out.println("用户名\t\t密码");
	        for(int x=0; x<array.size(); x++) {
	           LoginUser s = array.get(x);
	            System.out.println(s.getUsername()+"\t"+s.getPassword());
	        }
	    }
	    
	    //编写添加用户方法
	    public static void addUser(String fileName) throws IOException {
	        //创建集合对象
	        ArrayList<LoginUser> array = new ArrayList<LoginUser>();
	        //从文件中把数据读取到集合中
	        readData(fileName, array);
	                
	        //创建键盘录入对象
	        Scanner sc = new Scanner(System.in);
	        
	        //为了让id能够被访问到,我们就把id定义在了循环的外面
	        String name;
	        
	        //为了让代码能够回到这里,用循环
	        while(true) {
	            System.out.println("请输入用户名:");
	            //String id = sc.nextLine();
	            name = sc.nextLine();
	            
	            //判断学号有没有被人占用
	            //定义标记
	            boolean flag = false;
	          
	            for(int x=0; x<array.size(); x++) {
	            	LoginUser s = array.get(x);
	                //获取该学生的学号,和键盘录入的学号进行比较
	                if(s.getUsername().endsWith(name)) {
	                    flag = true; //说明用户名被占用了
	                    break;
	                }
	            }
	            
	            if(flag) {
	                System.out.println("你输入的用户名已经被占用,请重新输入");
	            }else {
	                break; //结束循环
	            }
	        }
	        
	        
	        System.out.println("请输入密码:");
	        String password = sc.nextLine();
	       
	        //创建学生对象
	        LoginUser s = new LoginUser();
	        s.setUsername(name);
	        s.setPassword(password);
	        
	       
	        array.add(s);
	     
	        writeData(fileName, array);
	        
	        //给出提示
	        System.out.println("注册成功");
	    }
	    
	    //编写删除用户信息的方法
	    public static void deleteUser(String fileName) throws IOException {
	        //创建集合对象
	        ArrayList<LoginUser> array = new ArrayList<LoginUser>();
	        //从文件中把数据读取到集合中
	        readData(fileName, array);
	        
	
	        //创建键盘录入对象
	        Scanner sc = new Scanner(System.in);
	        System.out.println("请输入你要删除的用户名:");
	        String name = sc.nextLine();
	        
	        //我们必须给出学号不存在的时候的提示
	        
	        //定义一个索引
	        int index = -1;
	        
	        //遍历集合
	        for(int x=0; x<array.size(); x++) {
	           
	        	LoginUser s = array.get(x);
	   
	            if(s.getUsername().equals(name)) {
	                index = x;
	                break;
	            }
	        }
	        
	        if(index == -1) {
	            System.out.println("不好意思,你要删除的用户对应信息不存在,请回去重新你的选择");
	        }else {
	            array.remove(index);
	            //把集合中的数据重新写回到文件
	            writeData(fileName, array);
	            System.out.println("删除用户信息成功");
	        }
	        
	    }
	    
	    //编写修改用户信息方法
	    public static void updateUser(String fileName) throws IOException {
	        //创建集合对象
	        ArrayList<LoginUser> array = new ArrayList<LoginUser>();
	        //从文件中把数据读取到集合中
	        readData(fileName, array);
	        
	        
	        //创建键盘录入对象
	        Scanner sc = new Scanner(System.in);
	        System.out.println("请输入你要修改的用户名:");
	        String name = sc.nextLine();
	        
	        //定义一个索引
	        int index = -1;
	        
	        //遍历集合
	        for(int x=0; x<array.size(); x++) {
	            //获取每一个用户对象
	        	LoginUser s = array.get(x);
	            //拿用户对象的学号和键盘录入的学号进行比较
	            if(s.getUsername().equals(name)) {
	                index = x;
	                break;
	            }
	        }
	        
	        if(index == -1) {
	            System.out.println("不好意思,你要修改的用户对应信息不存在,请回去重新你的选择");
	        }else {
	            System.out.println("请输入用户密码:");
	            String password = sc.nextLine();
	            
	            
	            LoginUser s = new LoginUser();
	           s.setUsername(name);
	           s.setPassword(password);
	           
	            array.set(index, s);
	            //把集合中的数据重新写回到文件
	            writeData(fileName, array);
	            //给出提示
	            System.out.println("修改用户信息成功");
	        }
	    }
	    
	    }

比较浅薄,还望指正

猜你喜欢

转载自blog.csdn.net/RyanXTY/article/details/84925746