基本学生管理系统
package control;
import java.util.ArrayList;
import java.util.Scanner;
public class control {
public static void main(String[] args) {
ArrayList<user> list = new ArrayList<>();
looper:
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("请输入对应请求:");
Scanner sc = new Scanner(System.in);
String choose = sc.next();
switch (choose) {
case "1" -> addStudent(list);
case "2" -> deleteStudent(list);
case "3" -> updateStudent(list);
case "4" -> queryStudent(list);
case "5" -> {
System.out.println("退出");
break looper;
}
default -> System.out.println("无效请求");
}
}
}
public static void addStudent(ArrayList<user> list) {
user s = new user();
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入学生id:");
String id = sc.next();
boolean flag = contains(list, id);
if (flag) {
System.out.println("id已存在,请重试");
} else {
s.setId(id);
break;
}
}
System.out.println("请输入学生姓名:");
String name = sc.next();
s.setName(name);
System.out.println("请输入学生年龄:");
int age = sc.nextInt();
s.setAge(age);
System.out.println("请输入学生住址:");
String address = sc.next();
s.setAddress(address);
list.add(s);
System.out.println("添加完成");
}
public static void deleteStudent(ArrayList<user> list) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入要删除的id:");
String stu = sc.next();
int index = getIndex(list, stu);
if (index >= 0){
list.remove(index);
System.out.println("已成功删除");
}else {
System.out.println("id不存在");
}
}
public static void updateStudent(ArrayList<user> list) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入修改学生id:");
String id = sc.next();
int index = getIndex(list, id);
if(index == -1){
System.out.println("输入id不存在");
return;
}
user user = list.get(index);
System.out.println("请输入要修改的学生姓名:");
String newname = sc.next();
user.setName(newname);
System.out.println("请输入要修改的学生年龄:");
int newage = sc.nextInt();
user.setAge(newage);
System.out.println("请输入要修改的学生地址:");
String newAddress = sc.next();
user.setAddress(newAddress);
System.out.println("学生信息修改完成");
}
public static void queryStudent(ArrayList<user> list) {
if (list.size() == 0) {
System.out.println("查无此人,请重试");
return;
}
System.out.println("id\t姓名\t年龄\t家庭住址");
for (int i = 0; i < list.size(); i++) {
user stu = list.get(i);
System.out.println(stu.getId() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t" + stu.getAddress());
}
}
public static boolean contains(ArrayList<user> list, String id) {
/*for (int i = 0; i < list.size(); i++) {
user stu = list.get(i);
String sid = stu.getId();
if(sid.equals(id)){
return true;
}
}
return false;*/
return getIndex(list, id) >= 0;
}
public static int getIndex(ArrayList<user> list, String id) {
for (int i = 0; i < list.size(); i++) {
user stu = list.get(i);
String sid = stu.getId();
if (sid.equals(id)) {
return i;
}
}
return -1;
}
}
升级学生管理系统
要求
登录界面:
System.out.println("欢迎来到学生管理系统");
System.out.println("请选择操作:");
System.out.println("1.登录");
System.out.println("2.注册");
System.out.println("3.忘记密码");
System.out.println("4.退出");
System.out.println("请输入选择:");
用户类:
属性:用户名、密码、身份证、手机号码
注册功能:
1.用户名需要满足一下要求:
验证要求
用户名唯一
用户名长度必须在3~15位之间
只能是字母加数字的组合,但不能是纯数字
2.密码键盘输入两次,两次一致才可以进行注册
3.身份证号码需要验证
验证要求:
长度为18位
不能以0为开头
前17位,必须都是数字
最后一位可以是数字,也可以是大小写X
4.手机号验证
验证要求:
长度为11位
不能以0开头
必须都是数字
登录功能:
1.键盘录入用户名
2.键盘录入密码
3.键盘录入验证码
验证要求:
用户名如果未注册,直接结束方法,并提示:用户名未注册,请先注册
判断验证码是否正确,如不正确,重新输入
再判断用户名和密码是否正确,有3次机会
忘记密码
1.键盘录入用户名,判断当前用户名是否存在,如不存在,直接结束方法,并提示:未注册
2.键盘录入身份证号码和手机号码
3.判断当前用户的身份证号码和手机号码是否一致
如果一致,则提示输入密码,进行修改
如果不一致,则提示:账号信息不匹配,修改失败
验证码规则
长度为5
由4位大写或者小写字母和1位数字组成,同一个字母可重复
数字出现在任意位置
代码如下
package control;
public class Student {
private String name;
private String password;
private String id;
private String phone;
public Student() {
}
public Student(String name, String password, String id, String phone) {
this.name = name;
this.password = password;
this.id = id;
this.phone = phone;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
package control;
import one.phone;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("欢迎来到学生管理系统");
System.out.println("请选择操作:");
System.out.println("1.登录");
System.out.println("2.注册");
System.out.println("3.忘记密码");
System.out.println("4.退出");
System.out.println("请输入选择:");
String index = sc.next();
switch (index) {
case "1" -> login(list);
case "2" -> register(list);
case "3" -> password(list);
case "4" -> {
System.out.println("退出");
System.exit(0);
}
default -> System.out.println("无效选择");
}
}
}
private static void password(ArrayList<Student> list) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名:");
String username = sc.next();
boolean flag = contain(list, username);
if (!flag) {
System.out.println("当前用户不存在");
return;
}
System.out.println("请输入身份证号码:");
String personID = sc.next();
System.out.println("请输入手机号码:");
String phoneNumber = sc.next();
int index = findIndex(list, username);
Student stu = list.get(index);
if (!(stu.getId().equalsIgnoreCase(personID) && stu.getPhone().equals(phoneNumber))) {
System.out.println("身份证号码或者手机号码输入有误");
return;
}
String passwordNew;
while (true) {
System.out.println("请输入新的密码:");
passwordNew = sc.next();
System.out.println("请再次输入新的密码:");
String passwordAgain = sc.next();
if (passwordNew.equals(passwordAgain)) {
System.out.println("两次输入密码一致");
break;
} else {
System.out.println("两次输入密码不一致");
continue;
}
}
stu.setPassword(passwordNew);
System.out.println("密码修改完成");
}
private static int findIndex(ArrayList<Student> list, String username) {
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
if (stu.getName().equals(username)) {
return i;
}
}
return -1;
}
private static void login(ArrayList<Student> list) {
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 3; i++) {
System.out.println("请输入用户名:");
String username = sc.next();
//判断用户名是否存在
boolean are = contain(list, username);
if (!are) {
System.out.println("用户未注册");
return;
}
System.out.println("请输入密码:");
String password = sc.next();
//验证码判断
while (true) {
String rightCode = getCode();
System.out.println("当前正确的验证码为:" + rightCode);
System.out.println("请输入验证码:");
String code = sc.next();
if (code.equalsIgnoreCase(rightCode)) {
System.out.println("验证码正确");
break;
} else {
System.out.println("验证码错误");
continue;
}
}
Student userInfo = new Student(username, password, null, null);
boolean result = checkuserInfo(list, userInfo);
if (result) {
System.out.println("登录成功");
break;
} else {
System.out.println("登录失败,用户名或者密码错误");
if (i == 2) {
System.out.println("当前账号已锁定");
return;
} else {
System.out.println("用户名或密码错误还剩下" + (2 - i) + "次机会");
}
}
}
}
private static boolean checkuserInfo(ArrayList<Student> list, Student userInfo) {
for (int i = 0; i < list.size(); i++) {
Student student = list.get(i);
if (student.getName().equals(userInfo.getName()) && student.getPassword().equals(userInfo.getPassword())) {
return true;
}
}
return false;
}
public static void register(ArrayList<Student> list) {
Scanner sc = new Scanner(System.in);
String name;
String password;
String id;
String phone;
//验证字母加数字的组合
System.out.println("请输入用户名:");
while (true) {
//输入用户名
name = sc.next();
//返回值为true,代表格式正确
boolean flag = checkusername(name);
if (flag) {
//验证唯一性
int index = contains(list, name);
if (index >= 0) {
System.out.println("用户名已存在,请重试");
} else {
break;
}
} else {
System.out.println("用户名输入不合法,请重试");
}
}
//密码判断
System.out.println("请输入密码:");
while (true) {
password = sc.next();
System.out.println("请再次输入密码:");
String passwordAgain = sc.next();
if (password.equals(passwordAgain)) {
break;
} else {
System.out.println("密码不一致,请重试");
}
}
//身份证判断
System.out.println("请输入身份证号码:");
while (true) {
id = sc.next();
//号码18位
if (id.length() == 18) {
//首位不为0
boolean flag = id.startsWith("0");
if (flag) {
System.out.println("身份证号码不合法,请重试");
} else {
//判断最后一位
char d = id.charAt(id.length() - 1);
if ((d >= '0' && d <= '9') || (d == 'X') || (d == 'x')) {
//数字判断
boolean sid = trueoffalse(id);
if (sid) {
break;
} else {
System.out.println("身份证号码不合法,请重试");
}
} else {
System.out.println("身份证号码不合法,请重试");
}
}
} else {
System.out.println("身份证号码不合法,请重试");
}
}
//电话号码判断
System.out.println("请输入手机号码:");
while (true) {
phone = sc.next();
//长度判断
int length = phone.length();
if (length == 11) {
//首位判断
char c = phone.charAt(0);
if (c == '0') {
System.out.println("手机号码输入不合法,请重试");
} else {
//数字判断
boolean num = number(phone);
if (num) {
break;
} else {
System.out.println("手机号码输入不合法,请重试");
}
}
} else {
System.out.println("手机号码输入不合法,请重试");
}
}
Student stu = new Student(name, password, id, phone);
list.add(stu);
System.out.println("注册成功");
//集合遍历
printlist(list);
}
private static void printlist(ArrayList<Student> list) {
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
System.out.println(stu.getName() + ", " + stu.getPassword() + ", " + stu.getId() + ", " + stu.getPhone());
}
}
private static boolean number(String phone) {
for (int i = 0; i < phone.length(); i++) {
char c = phone.charAt(i);
if (!(c >= '0' && c <= '9')) {
return false;
}
}
return true;
}
private static boolean trueoffalse(String id) {
//判断是否全为数字
for (int i = 0; i < id.length() - 1; i++) {
char c = id.charAt(i);
//不为数字
if (!(c >= '0' && c <= '9')) {
return false;
}
}
return true;
}
private static boolean checkusername(String name) {
int num = name.length();
if (num < 3 || num > 15) {
return false;
}
for (int i = 0; i < name.length(); i++) {
char c = name.charAt(i);
if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9'))) {
return false;
}
}
int count = 0;
int count2 = 0;
for (int i = 0; i < name.length(); i++) {
char c = name.charAt(i);
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
count++;
}
if (c >= '0' && c <= '9') {
count2++;
}
}
if (!(count > 0 && count2 > 0)) {
return false;
}
return true;
}
//唯一性比较
public static int contains(ArrayList<Student> list, String id) {
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
String sid = stu.getId();
if (sid.equals(id)) {
return i;
}
}
return -1;
}
public static boolean contain(ArrayList<Student> list, String username) {
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
String sid = stu.getName();
if (sid.equals(username)) {
return true;
}
}
return false;
}
//验证码生成
public static String getCode() {
ArrayList<Character> list = new ArrayList<>();
for (int i = 0; i < 26; i++) {
list.add((char) ('a' + i));
list.add((char) ('A' + i));
}
StringBuilder sb = new StringBuilder();
Random r = new Random();
for (int i = 0; i < 4; i++) {
//产生随机数
int index = r.nextInt(list.size());
//随机获取值
char c = list.get(index);
//拼接
sb.append(c);
}
//生成随机数字
int number = r.nextInt(10);
sb.append(number);
//字符转换
char[] arr = sb.toString().toCharArray();
int randomIndex = r.nextInt(arr.length);
//交换位置
char temp = arr[randomIndex];
arr[randomIndex] = arr[arr.length - 1];
arr[arr.length - 1] = temp;
return new String(arr);
}
}
Tips
以上学习内容均来自于B站黑马程序员