一个小小的练习,仅供参考,没有那么高大上,小白在线。
学生管理系统升级版实现
1.需求
2.分析
3.代码实现
4.输出结果
5.小结
一、需求
为学生管理系统书写一个登陆、注册、忘记密码的功能。
只有用户登录成功之后,才能进入到学生管理系统中进行增删改查操作。
二、分析
登录界面:
System.out.println("欢迎来到学生管理系统");
System.out.println("请选择操作1登录 2注册 3忘记密码");
用户类:
属性:用户名、密码、身份证号码、手机号码
注册功能:
1,用户名需要满足以下要求:
验证要求:
用户名唯一
用户名长度必须在3~15位之间
只能是字母加数字的组合,但是不能是纯数字
2,密码键盘输入两次,两次一致才可以进行注册。
3,身份证号码需要验证。
验证要求:
长度为18位
不能以0为开头
前17位,必须都是数字
最为一位可以是数字,也可以是大写X或小写x
4,手机号验证。
验证要求:
长度为11位
不能以0为开头
必须都是数字
登录功能:
1,键盘录入用户名
2,键盘录入密码
3,键盘录入验证码
验证要求:
用户名如果未注册,直接结束方法,并提示:用户名未注册,请先注册
判断验证码是否正确,如不正确,重新输入
再判断用户名和密码是否正确,有3次机会
忘记密码:
1,键盘录入用户名,判断当前用户名是否存在,如不存在,直接结束方法,并提示:未注册
2,键盘录入身份证号码和手机号码
3,判断当前用户的身份证号码和手机号码是否一致,
如果一致,则提示输入密码,进行修改。
如果不一致,则提示:账号信息不匹配,修改失败。
验证码规则:
长度为5
由4位大写或者小写字母和1位数字组成,同一个字母可重复
数字可以出现在任意位置
比如:
aQa1K
三、代码实现
定义用户类
package day_12;
public class user {
private String userName;
private String password;
private String userId;
private String phoneNumber;
public user() {
}
public user(String userName, String password, String userId, String phoneNumber) {
this.userName = userName;
this.password = password;
this.userId = userId;
this.phoneNumber = phoneNumber;
}
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;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
}
定义学生类
package day_12;
public class student {
private String name;
private String id;
private String address;
private int age;
private String major;
public student() {
}
public student(String name, String id, String address, int age, String major) {
this.name = name;
this.id = id;
this.address = address;
this.age = age;
this.major = major;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
}
再Text类中定义Main方法进行代码实现
package day_12;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class TextStudent {
public static void main(String[] args) {
ArrayList<user> list = new ArrayList<>();
while (true) {
System.out.println("----------欢迎来到学生管理系统----------");
System.out.println("请选择你的操作:1.登录,2.注册,3.忘记密码,4.退出");
System.out.println("------------------------------------");
Scanner input = new Scanner(System.in);
String choose = input.next();
switch (choose) {
case "1" -> denRu(list);
case "2" -> zhuCe(list);
case "3" -> forgetPassword(list);
case "4" -> {
System.out.println("谢谢使用!!");
System.exit(0);
}
default -> System.out.println("没有这个选项,请重新输入你的选项!!");
}
}
}
public static void denRu(ArrayList<user> list) {
if (list.size() == 0) {
System.out.println("请先注册再登录!!");
return;
}
int count = 3;
Scanner input = new Scanner(System.in);
System.out.println("请输入用户名:");
String userName = input.next();
boolean flag1 = false;
boolean flag2 = false;
while (true) {
System.out.println("请输入密码:");
String password = input.next();
System.out.println("请输入验证码:");
String Code = Code();
System.out.println(Code);
String code = input.next();
for (int i = 0; i < list.size(); i++) {
user u = list.get(i);
if (u.getUserName().equals(userName)) {
flag2 = true;
if (!u.getPassword().equals(password)) {
count--;
if (count > 0) {
System.out.println("密码错误,请重新输入密码!!");
}
flag1 = true;
break;
} else {
if (!Code.equals(code)) {
while (true) {
System.out.println("验证码不正确,请重新输入验证码!!");
Code = Code();
System.out.println(Code);
code = input.next();
if (!Code.equals(code)) {
continue;
} else {
break;
}
}
}
}
}
}
if (count == 0) {
System.out.println("请重新登录!!");
return;
}
if (flag1) {
System.out.println("你还剩下" + count + "次机会输入密码");
continue;
}
if (!flag2) {
System.out.println("用户名不存在,请注册后再登录!!");
return;
}
break;
}
System.out.println("登陆成功!!");
Student();
}
public static void zhuCe(ArrayList<user> list) {
Scanner input = new Scanner(System.in);
user u = new user();
while (true) {
System.out.println("请输入用户名:(用户名在3-15位之间的数字加字母组合)");
String userName = input.next();
if (!checkUserName(userName)) {
System.out.println("你输入的用户名格式不正确,请重新输入!!");
continue;
}
u.setUserName(userName);
if (contains(list, userName) >= 0) {
System.out.println("该用户名已存在,请重新输入!!");
continue;
} else {
list.add(u);
break;
}
}
while (true) {
System.out.println("请输入你的密码:");
String password1 = input.next();
System.out.println("请确认你的密码:");
String password2 = input.next();
if (password1.equals(password2)) {
u.setPassword(password1);
break;
} else {
System.out.println("你输入的密码不一样,请重新输入!!");
continue;
}
}
while (true) {
System.out.println("请输入你的身份证号码:");
String userId = input.next();
if (check(userId)) {
System.out.println("身份证号合法");
u.setUserId(userId);
break;
} else {
System.out.println("身份证不合法,请重新输入!!");
}
}
while (true) {
System.out.println("请输入你的手机号码:");
String phoneNumber = input.next();
if (!checkPhoneNumber(phoneNumber)) {
System.out.println("你输入的手机号码不合法,请重新输入!!");
continue;
}
u.setPhoneNumber(phoneNumber);
System.out.println("手机号合法,恭喜你账号" + u.getUserName() + "注册成功!!");
break;
}
}
public static void forgetPassword(ArrayList<user> list) {
Scanner input = new Scanner(System.in);
System.out.println("请输入用户名:");
String username = input.next();
boolean flag = true;
for (int i = 0; i < list.size(); i++) {
user u = list.get(i);
if (u.getUserName().equals(username)) {
flag = false;
System.out.println("请输入你的身份证号码:");
String userId = input.next();
System.out.println("请输入你的手机号码:");
String phoneNumber = input.next();
if (u.getPhoneNumber().equals(phoneNumber) && u.getUserId().equals(userId)) {
System.out.println("请输入新密码:");
String newPassword = input.next();
u.setPassword(newPassword);
} else {
System.out.println("账号信息不匹配,修改密码失败!!");
}
}
}
if (flag) {
System.out.println("该账号未注册!!");
return;
}
System.out.println("修改密码成功!!");
}
private static boolean checkUserName(String username) {
if (!(username.length() >= 3 && username.length() <= 15)) {
return false;
}
for (int i = 0; i < username.length(); i++) {
char c = username.charAt(i);
if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9'))) {
return false;
}
}
int count = 0;
for (int i = 0; i < username.length(); i++) {
char c = username.charAt(i);
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
count++;
break;
}
}
return count > 0;
}
public static int contains(ArrayList<user> list, String userName) {
for (int i = 0; i < list.size(); i++) {
user u = list.get(i);
if (u.getUserName().equals(userName)) {
return i;
}
}
return -1;
}
public static boolean check(String str) {
if (str == null) {
return false;
}
char[] arr = str.toCharArray();
if (arr.length == 18) {
for (int i = 1; i < arr.length - 1; i++) {
if (!(arr[i] >= '0' && arr[i] <= '9')) {
return false;
}
}
if (!(arr[0] > '0' && arr[0] <= '9')) {
return false;
}
if (!(arr[arr.length - 1] >= '0' && arr[arr.length - 1] <= '9')) {
if (arr[arr.length - 1] == 'X' || arr[arr.length - 1] == 'x') {
return true;
}
return false;
}
} else {
return false;
}
return true;
}
public static boolean checkPhoneNumber(String phoneNumber) {
if (phoneNumber == null) {
return false;
}
if (phoneNumber.length() == 11) {
char[] arr = phoneNumber.toCharArray();
if (!(arr[0] > '0' && arr[0] <= '9')) {
return false;
}
for (int i = 1; i < arr.length; i++) {
if (!(arr[i] >= '0' && arr[i] <= '9')) {
return false;
}
}
} else {
return false;
}
return true;
}
public static String Code() {
char[] ch = new char[52];
for (int i = 0; i < ch.length; i++) {
if (i < 26) {
ch[i] = (char) (i + 65);
} else {
ch[i] = (char) (i + 97 - 26);
}
}
Random r = new Random();
int index;
StringBuilder str = new StringBuilder();
for (int i = 0; i < 5; i++) {
index = r.nextInt(ch.length);
str.append(ch[index]);
}
String newStr = str.toString();
char[] arr = newStr.toCharArray();
int num = r.nextInt(48, 57);
int arrIndex = r.nextInt(arr.length);
arr[arrIndex] = (char) num;
String result = new String(arr);
return result;
}
public static void Student() {
ArrayList<student> newList = new ArrayList<>();
Scanner input = new Scanner(System.in);
while (true) {
System.out.println("----------欢迎使用学生管理系统----------");
System.out.println("请输入你的选项: 1.添加学生信息 2.删除学生信息 3.修改学生信息 4.查询学生信息 5.返回 6.退出");
System.out.println("------------------------------------");
String choose = input.next();
switch (choose) {
case "1" -> addStudent(newList);
case "2" -> deleteStudent(newList);
case "3" -> updateStudent(newList);
case "4" -> showStudent(newList);
case "5" -> {
return;
}
case "6" -> {
System.out.println("谢谢使用!!");
System.exit(0);
}
}
}
}
public static void showStudent(ArrayList<student> newList) {
if (newList.size() == 0) {
System.out.println("无学生信息!!");
return;
}
for (int i = 0; i < newList.size(); i++) {
student stu = newList.get(i);
System.out.println("\t\t姓名\t\t\t" + "学号\t\t\t" + "家庭住址\t\t\t" + "年龄\t\t\t" + "专业");
System.out.println("\t\t" + stu.getName() + "\t\t" + stu.getId() + "\t\t" + stu.getAddress() + "\t\t"
+ stu.getAge() + "\t\t" + stu.getMajor());
}
}
public static void updateStudent(ArrayList<student> newList) {
Scanner input = new Scanner(System.in);
System.out.println("请输入你要修改学生信息的学生学号:");
String id = input.next();
boolean flag = false;
for (int i = 0; i < newList.size(); i++) {
student stu = newList.get(i);
if (stu.getId().equals(id)) {
flag = true;
System.out.println("请输入学生姓名:");
String newName = input.next();
stu.setName(newName);
System.out.println("请输入学生的家庭住址:");
String newAddress = input.next();
stu.setAddress(newAddress);
System.out.println("请输入学生的年龄:");
int newAge = input.nextInt();
stu.setAge(newAge);
System.out.println("请输入学生的专业:");
String newMajor = input.next();
stu.setMajor(newMajor);
newList.set(i, stu);
System.out.println("学生信息修改成功!!");
}
}
if (!flag) {
System.out.println("学生信息不存在!!");
return;
}
}
public static void deleteStudent(ArrayList<student> newList) {
Scanner input = new Scanner(System.in);
System.out.println("请输入你要删除学生的学号:");
String id = input.next();
boolean flag = false;
for (int i = 0; i < newList.size(); i++) {
student stu = newList.get(i);
if (stu.getId().equals(id)) {
flag = true;
newList.remove(i--);
System.out.println("学生信息删除成功!!");
}
}
if (!flag) {
System.out.println("学号不存在,删除失败!!");
return;
}
}
public static void addStudent(ArrayList<student> newList) {
Scanner input = new Scanner(System.in);
System.out.println("请输入学生的姓名:");
String stuName = input.next();
String stuId = null;
while (true) {
System.out.println("请输入学生的学号:");
stuId = input.next();
if (!checkStuId(newList, stuId)) {
System.out.println("该学号已存在,请重新输入学的学号!!");
continue;
}
break;
}
System.out.println("请输入学生的家庭住址:");
String stuAddress = input.next();
System.out.println("请输入学生的年龄:");
int stuAge = input.nextInt();
System.out.println("请输入学生的专业:");
String stuMajor = input.next();
student stu = new student(stuName, stuId, stuAddress, stuAge, stuMajor);
newList.add(stu);
System.out.println("学生信息添加成功!!");
}
public static boolean checkStuId(ArrayList<student> newList, String id) {
for (int i = 0; i < newList.size(); i++) {
student stu = newList.get(i);
if (stu.getId().equals(id)) {
return false;
}
}
return true;
}
}
四、输出结果
五、小结
*作为java小白,这对于我们来说还是有一定难度的,这让我了解到哪些纯软件的东西写起来需要进过很长时间的沉淀和调试的过程
*代码中的几个用来判断的方法需要注意的是,方法的返回值类型特别是验证码的生成,需要用到随机数
*再Main方法中也有很多需要注意的点,比如用户的id是否已存在,如果不存在需要先进行注册,当程序运行到不是自己想要的结果时,需要及时的进行调试