因为前两天写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("修改用户信息成功");
}
}
}
比较浅薄,还望指正