在昨天的学生管理系统的基础上,我们进行了升级,增添的功能如下
- 用户认证升级:通过引入注册、登录、忘记密码功能,加强对用户身份的验证,提高系统的安全性。
- 功能完善:新增注册、忘记密码功能,并对原有的添加、删除、修改、查询功能进行优化,确保功能的稳定性和实用性。
- 操作流程优化:优化用户操作流程,简化用户操作步骤,提高系统的易用性和用户满意度
首先我们需要增加一个user类
public class user {
private String suename;
private String password;
private String IDinfo;
private String phonenumber;
public user() {
}
public user(String suename, String password, String IDinfo, String phonenumber) {
this.suename = suename;
this.password = password;
this.IDinfo = IDinfo;
this.phonenumber = phonenumber;
}
/**
* 获取
* @return suename
*/
public String getSuename() {
return suename;
}
/**
* 设置
* @param suename
*/
public void setSuename(String suename) {
this.suename = suename;
}
/**
* 获取
* @return password
*/
public String getPassword() {
return password;
}
/**
* 设置
* @param password
*/
public void setPassword(String password) {
this.password = password;
}
/**
* 获取
* @return IDinfo
*/
public String getIDinfo() {
return IDinfo;
}
/**
* 设置
* @param IDinfo
*/
public void setIDinfo(String IDinfo) {
this.IDinfo = IDinfo;
}
/**
* 获取
* @return phonenumber
*/
public String getPhonenumber() {
return phonenumber;
}
/**
* 设置
* @param phonenumber
*/
public void setPhonenumber(String phonenumber) {
this.phonenumber = phonenumber;
}
public String toString() {
return "user{suename = " + suename + ", password = " + password + ", IDinfo = " + IDinfo + ", phonenumber = " + phonenumber + "}";
}
}
其次是我们昨天已经创建好的学生类
public class user {
private String suename;
private String password;
private String IDinfo;
private String phonenumber;
public user() {
}
public user(String suename, String password, String IDinfo, String phonenumber) {
this.suename = suename;
this.password = password;
this.IDinfo = IDinfo;
this.phonenumber = phonenumber;
}
/**
* 获取
* @return suename
*/
public String getSuename() {
return suename;
}
/**
* 设置
* @param suename
*/
public void setSuename(String suename) {
this.suename = suename;
}
/**
* 获取
* @return password
*/
public String getPassword() {
return password;
}
/**
* 设置
* @param password
*/
public void setPassword(String password) {
this.password = password;
}
/**
* 获取
* @return IDinfo
*/
public String getIDinfo() {
return IDinfo;
}
/**
* 设置
* @param IDinfo
*/
public void setIDinfo(String IDinfo) {
this.IDinfo = IDinfo;
}
/**
* 获取
* @return phonenumber
*/
public String getPhonenumber() {
return phonenumber;
}
/**
* 设置
* @param phonenumber
*/
public void setPhonenumber(String phonenumber) {
this.phonenumber = phonenumber;
}
public String toString() {
return "user{suename = " + suename + ", password = " + password + ", IDinfo = " + IDinfo + ", phonenumber = " + phonenumber + "}";
}
}
最后是实现功能的主体
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class subject {
public static void main(String[] args) {
ArrayList<user> ulist = new ArrayList<>();
M:while (true) {
System.out.println("------欢迎来到学生管理系统------");
System.out.println("请选择操作");
System.out.println("1:登录 2:注册 3:忘记密码");
Scanner sc = new Scanner(System.in);
String choice = sc.next();
switch (choice) {
case "1" -> {
login(ulist);
break ;
}
case "2" -> sign(ulist);
case "3" -> forgetpassword(ulist);
default -> System.out.println("无效输入");
}
}
}
public static ArrayList<user> login(ArrayList<user> ulist) {
//验证验证码
char[] d = {'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 'd', 'f'
, 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm', 'Q', 'W', 'E'
, 'R', 'T', 'Y', 'U', 'I',
'O', 'P', 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Z', 'X', 'C', 'V', 'B', 'N', 'M'};
char[] S = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'};
while (true) {
String yzm = "";
Random R = new Random();
int a = R.nextInt(5);//数字出现的位置
for (int i = 0; i < 5; i++) {
if (i == a) {
yzm += S[a];
} else {
//随机字母的序列
int x = R.nextInt(52);
yzm += d[x];
}
}
System.out.println("-------" + yzm + "-------");
System.out.println("请输入您看到的验证码");
Scanner sw = new Scanner(System.in);
String inyzm = sw.next();
if (inyzm.equals(yzm)) {
break;
} else {
continue;
}
}
boolean aaa = true;
//验证用户名
AC:while (aaa) {
System.out.println("请输入您的用户名");
Scanner sc = new Scanner(System.in);
String usename = sc.next();
//对已有的list进行遍历,判断用户名是否存在
for (int i = 0; i < ulist.size(); i++) {
boolean flage = ulist.get(i).getSuename().equals(usename);
if (flage) {
System.out.println("用户名验证正确,请输入密码");
break AC;
}
}
System.out.println("用户名未注册,请先注册");
aaa = false;
break;
}
//验证密码
eee:
while (aaa) {
System.out.println("请输入您的密码");
Scanner sc = new Scanner(System.in);
String password = sc.next();
//对已有的list进行遍历,判断用户名是否存在
int count = 0;
for (int i = 0; i < ulist.size(); i++) {
count++;
boolean flage = ulist.get(i).getPassword().equals(password);
if (flage) {
System.out.println("密码正确");
head();
break eee;
}
}
if (count == 3) {
System.out.println("密码错误次数过多,请稍后再试");
aaa = false;
break eee;
}
}//密码判定成功
return ulist;
}
//用户名的创建
public static ArrayList<user> sign(ArrayList<user> ulist) {
Scanner sc = new Scanner(System.in);
user u1 = new user();
boolean aaa = true;
b:
while (aaa) {
System.out.println("请创建您的用户名");
String usename = sc.next();
for (int i = 0; i < ulist.size(); i++) {
boolean flage = ulist.get(i).getSuename().equals(usename);
if (flage) {
System.out.println("用户名已存在,请重新输入");
continue;
}
}
if (usename.length() < 3 || usename.length() > 15) {
System.out.println("您输入的长度不合法,长度需在3~15位之间");
continue;
}
//到此,长度合法
int scount = 0;
int ccount = 0;
for (int i = 0; i < usename.length(); i++) {
char c = usename.charAt(i);
if (c >= '0' && c <= '9') {
scount++;
}
if (c >= 'a' && c <= 'z') {
ccount++;
}
}
if (scount == usename.length() || ccount == usename.length()) {
System.out.println("用户名必须由数字和字母两种构成,请重新输入");
continue;
}
//到此用户名完全合法
aaa = false;
u1.setSuename(usename);
}
//密码部分
boolean bbb = true;
c:
while (bbb) {
System.out.println("请创建您的密码");
String pass = sc.next();
System.out.println("请确认您的密码");
String scurepass = sc.next();
if (scurepass.equals(pass)) {
u1.setPassword(pass);
bbb = false;
} else {
System.out.println("两次输入的密码不一致,请重新输入");
continue;
}
}
boolean ccc = true;
while (ccc) {
System.out.println("请输入您的身份证号");
String ID = sc.next();
if (ID.length() != 18) {
System.out.println("长度不合法,必须为16位有效证件");
continue;
}
if (ID.charAt(0) == '0') {
System.out.println("身份证第一位需为非零元素");
continue;
}
int count2 = 0;
for (int i = 0; i < ID.length() - 1; i++) {
if (ID.charAt(i) >= '0' && ID.charAt(i) <= '9') {
count2++;
}
}
if (count2 != ID.length() - 1) {
System.out.println("身份证输入有误,前17为必须由数字组成");
continue;
}
char last = ID.charAt(ID.length() - 1);
if ((last >= '0' && last <= '9') || last == 'x' || last == 'X') {
System.out.println("身份证验证成功");
} else {
System.out.println("身份证最后一位非法");
continue;
}
u1.setIDinfo(ID);
ccc = false;
}
ddd:
while (true) {
System.out.println("请输入11位的手机号");
String number = sc.next();
if (number.charAt(0) == '0') {
System.out.println("手机号第一位不能为0");
continue;
}
if (number.length() != 11) {
System.out.println("手机号长度非法");
continue;
}
for (int i = 0; i < number.length(); i++) {
char c = number.charAt(i);
if (c > '9' && c < '0') {
System.out.println("手机号必须全部是数字");
continue ddd;
}
}
u1.setPhonenumber(number);
break ddd;
}
//到此手机号验证成功
System.out.println("账户已经成功创建");
ulist.add(u1);
return ulist;
//注册功能全部实现
}
public static ArrayList<user> forgetpassword(ArrayList<user> ulist) {
boolean F = true;
ttt:while (F) {
if (ulist.size()==0) {
System.out.println("系统暂未保存任何数据");
break ;
}
System.out.println("请输入您注册时的用户名");
Scanner sc = new Scanner(System.in);
String usename = sc.next();
for (int i = 0; i < ulist.size(); i++) {
boolean flage = ulist.get(i).getSuename().equals(usename);
if (flage) {
System.out.println("请输入身份证");
String ID = sc.next();
System.out.println("请输入手机号");
String number = sc.next();
if (ID.equals(ulist.get(i).getIDinfo())&&number.equals(ulist.get(i).getPhonenumber())) {
System.out.println("请输入新密码");
String newPassword = sc.next();
ulist.get(i).setPassword(newPassword);
System.out.println("密码重置成功");
break ttt;
}
} else {
System.out.println("用户名不存在");
F = false;
}
}
}
return ulist;
}
public static void head() {
ArrayList<studengt> slist = new ArrayList<>();
Scanner sc = new Scanner(System.in);
a:
while (true) {
System.out.println("-------欢迎来到学生管理系统-----");
System.out.println("1:添加学生");
System.out.println("2:删除学生");
System.out.println("3:修改学生");
System.out.println("4:查询学生");
System.out.println("5:退出");
System.out.println("请输入您的选择");
String select = sc.next();
switch (select) {
case "1" -> add(slist);
case "2" -> delete(slist);
case "3" -> update(slist);
case "4" -> query(slist);
case "5" -> {
System.out.println("退出");
break a;
}
case "admis" -> System.out.println(slist);
default -> System.out.println("404 NotFound");
}
}
}
public static ArrayList<studengt> add(ArrayList<studengt> slist) {
Scanner sadd = new Scanner(System.in);
System.out.println("请输入学生id");
String id = sadd.next();
System.out.println("请输入学生姓名");
String name = sadd.next();
System.out.println("请输入学生年龄");
int age = sadd.nextInt();
System.out.println("请输入学生家庭住址");
String address = sadd.next();
studengt s = new studengt(id, name, age, address);
slist.add(s);
System.out.println("学生添加成功");
return slist;
}
public static ArrayList<studengt> delete(ArrayList<studengt> slist) {
System.out.println("请输入需要删除的id");
Scanner dsc = new Scanner(System.in);
String id = dsc.next();
for (int i = 0; i < slist.size(); i++) {
boolean flage = slist.get(i).getId().equals(id);
if (flage) {
System.out.println(slist.get(i) + "已删除");
slist.remove(i);
return slist;
}
}
System.out.println("学生信息不存在");
return slist;
}
public static boolean query(ArrayList<studengt> slist) {
if (slist.size() == 0) {
System.out.println("系统暂无数据");
return false;
}
System.out.println("请输入查询的id");
Scanner usc = new Scanner(System.in);
String id = usc.next();
//根据id获取到这个学生的信息
for (int i = 0; i < slist.size(); i++) {
boolean flage = slist.get(i).getId().equals(id);
if (flage) {
System.out.println(slist.get(i));
return true;
}
}
System.out.println("查无此人");
return false;
}
public static ArrayList<studengt> update(ArrayList<studengt> slist) {
System.out.println("请输入需要修改的id");
Scanner usc = new Scanner(System.in);
String id = usc.next();
for (int i = 0; i < slist.size(); i++) {
boolean flage = slist.get(i).getId().equals(id);
if (flage) {
System.out.println("请输入修改后的学生姓名");
String newName = usc.next();
slist.get(i).setName(newName);
System.out.println("请输入修改后的学生年龄");
int newAge = usc.nextInt();
slist.get(i).setAge(newAge);
System.out.println("请输入修改后的学生地址");
String newAdderss = usc.next();
slist.get(i).setAddress(newAdderss);
System.out.println("修改后的学生信息如下");
System.out.println(slist.get(i));
return slist;
}
}
System.out.println("需要修改的id不存在,请重新输入");
return slist;
}
}
欢迎大家对代码的不足或者是错误进行指出,评论区都会看到