模块一(Main.java+User.java)
需求:
为学生管理系统书写一个登陆、注册、忘记密码的功能。
只有用户登录成功之后,才能进入到学生管理系统中进行增删改查操作。
登录界面:
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
模块二(StudentSystem.java+Student.java)
添加学生:
通过键盘录入学生信息,添加到集合中
删除学生:
通过键盘录入要删除学生的学号,将该学生对象从集合中删除
修改学生:
通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改
查看学生:
将集合中的学生对象信息进行展示
退出系统:
结束程序
User.java:
public class User {
private String name;
private String password;
private String ID;
private String PhoneNumber;
public User() {
}
public User(String name, String password, String ID, String phoneNumber) {
this.name = name;
this.password = password;
this.ID = ID;
PhoneNumber = phoneNumber;
}
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 getPhoneNumber() {
return PhoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
PhoneNumber = phoneNumber;
}
}
Student.java
public class Student {
private String Id;
private String name;
private int age;
private String address;
public Student() {
}
public Student(String id, String name, int age, String address) {
Id = id;
this.name = name;
this.age = age;
this.address = address;
}
public String getId() {
return Id;
}
public void setId(String id) {
Id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
StudentSystem.java
import java.util.ArrayList;
import java.util.Scanner;
class StudentSystem{
public static void StartSystem() {
Scanner scanner=new Scanner(System.in);
ArrayList<Student> list=new ArrayList<>();
while (true) {
menu();
int choice = scanner.nextInt();
if (choice == 1) {
AddStudent(list);
//添加学生
} else if (choice == 2) {
DeleteStudent(list);
//删除学生
} else if (choice == 3) {
AlterStudent(list);
//修改学生
} else if (choice == 4) {
inquiry(list);
//查询学生
} else if (choice == 5) {
//退出系统
System.exit(0);
} else {
System.out.println("输入错误,请重新输入");
}
}
}
public static void menu(){
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("请输入您的选择");
}
public static void AlterStudent(ArrayList<Student> list){
Scanner scanner=new Scanner(System.in);
System.out.println("请输入你要修改之前学生的ID:");
String id=scanner.next();
int index=Index(list,id);
if(index==-1){
System.out.println("ID不存在,修改失败");
}
else {
Student s=list.get(index);
//s.setId(id);
System.out.println("请输入你要修改之后学生的ID");
String NewId=scanner.next();
s.setId(NewId);
System.out.println("请输入你要修改之后学生的姓名:");
String name=scanner.next();
s.setName(name);
System.out.println("请输入你要修改之后学生的年龄:");
int age=scanner.nextInt();
s.setAge(age);
System.out.println("请输入你要修改之后学生的住址:");
String address=scanner.next();
s.setAddress(address);
System.out.println("修改成功");
}
}
public static void DeleteStudent(ArrayList<Student> list){
Scanner scanner=new Scanner(System.in);
System.out.println("请输入你要删除学生的ID:");
String id=scanner.next();
//boolean flag=id_exit(list,id);
int index=Index(list,id);
if(index==-1){
System.out.println("ID不存在,删除失败");
//return;
}
else{
/*System.out.println("请输入你要删除学生的姓名:");
String name=scanner.next();
System.out.println("请输入你要删除学生的年龄:");
int age=scanner.nextInt();
System.out.println("请输入你要删除学生的地址:");
String address=scanner.next();
Student S=new Student(id,name,age,address);
list.remove(S);
System.out.println("删除成功");
*/
list.remove(index);
System.out.println("删除成功");
}
}
public static void AddStudent(ArrayList<Student> list){
Scanner scanner=new Scanner(System.in);
System.out.println("请输入你要添加学生的ID:");
String id=scanner.next();
boolean flag=id_exit(list,id);
if(flag){
System.out.println("ID已存在,添加失败");
}
else {
System.out.println("请输入你要添加学生的姓名:");
String name=scanner.next();
System.out.println("请输入你要添加学生的年龄:");
int age=scanner.nextInt();
System.out.println("请输入你要添加学生的地址:");
String address=scanner.next();
Student S=new Student(id,name,age,address);
list.add(S);
System.out.println("添加成功");
}
}
public static boolean id_exit(ArrayList<Student> list,String id){
/* for (int i = 0; i < list.size(); i++) {
Student S=list.get(i);
if(S.getId().equals(id)){
return true;
}
}
return false;
*/
int index=Index(list,id);
if(index==-1){
return false;
}
else {
return true;
}
}
public static void inquiry(ArrayList<Student> list){
if(list.size()==0){
System.out.println("当前无学生信息,请添加后再查询");
}
else {
System.out.println("id\t\t姓名\t\t年龄\t\t家庭住址");
for (int i = 0; i <list.size(); i++) {
Student S=list.get(i);
System.out.println(S.getId()+"\t"+S.getName()+"\t"+S.getAge()+"\t"+S.getAddress());
}
}
}
public static int Index(ArrayList<Student> list,String id){
for (int i = 0; i < list.size(); i++) {
Student s=list.get(i);
if(s.getId().equals(id)){
return i;
}
}
return -1;
}
}
Main.java
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
ArrayList<User> list = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
while (true) {
menu();
int choice = scanner.nextInt();
if (choice == 1) {
login(list);
//登录
} else if (choice == 2) {
register(list);
//注册
} else if (choice == 3) {
ForgetPassword(list);
//忘记密码
} else {
System.out.println("输入错误");
}
}
}
//登录
public static void login(ArrayList<User> list) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入用户名:");
String name = scanner.next();
boolean flag = CheckNameNotExitImprove(list, name);
if (flag) {
System.out.println("用户名未注册,请先注册");
return;
}
System.out.println("请输入密码:");
String password = scanner.next();
String verification = CreateVerification();
while (true) {
System.out.println("验证码:" + verification);
System.out.println("请输入验证码:");
String InPutVerification = scanner.next();
boolean flag1 = ConfirmVerification(InPutVerification, verification);
if (flag1) {
break;
}
}
for (int i = 0; i < 3; i++) {
boolean flag2=CheckNameAndPassword(list,name,password);
if(flag2){
System.out.println("登陆成功");
StudentSystem ss=new StudentSystem();
ss.StartSystem();
//System.exit(0);
}
else {
if (i<2) {
System.out.printf("密码错误,你还有%d次机会,请重新输入", 2 - i);
System.out.println();
System.out.println("请重新输入密码:");
password = scanner.next();
}
}
}
System.out.println("你的账号被锁定,请联系客服:*******");
}
//注册
public static void register(ArrayList<User> list) {
Scanner scanner = new Scanner(System.in);
String name;
while (true) {
System.out.println("请输入用户名:");
name = scanner.next();
boolean flag1 = CheckNameNotExit(list, name);
boolean flag2 = CheckNameLong(name);
boolean flag3 = CheckNameType(name);
if (flag1 && flag2 && flag3) {
break;
}
}
String password;
while (true) {
System.out.println("请输入密码:");
password = scanner.next();
boolean flag = ConfirmPassword(password);
if (flag) {
break;
}
}
String ID;
while (true) {
System.out.println("请输入身份证号码:");
ID = scanner.next();
boolean flag1 = IdLong(ID);
boolean flag2 = IDFirst(ID);
boolean flag3 = IDDigital(ID);
boolean flag4 = IDEnd(ID);
if (flag1 && flag2 && flag3 && flag4) {
break;
}
}
String PhoneNumber;
while (true) {
System.out.println("请输入手机号:");
PhoneNumber = scanner.next();
boolean flag1 = PhoneNumberLong(PhoneNumber);
boolean flag2 = PhoneNumberFirst(PhoneNumber);
boolean flag3 = PhoneNumberAll(PhoneNumber);
if (flag1 && flag2 && flag3) {
break;
}
}
User user = new User(name, password, ID, PhoneNumber);
list.add(user);
System.out.println("注册成功");
}
//忘记密码
public static void ForgetPassword(ArrayList<User> list){
Scanner scanner=new Scanner(System.in);
System.out.println("请输入用户名:");
String name=scanner.next();
boolean flag1=CheckNameNotExitImprove(list,name);
if(flag1){
System.out.println("未注册");
return;
}
System.out.println("请输入身份证号码:");
String ID=scanner.next();
System.out.println("请输入手机号码:");
String PhoneNumber=scanner.next();
boolean flag2=CheckIDAndPhoneNumber(name,ID,PhoneNumber,list);
if(flag2){
System.out.println("请输入修改后的密码:");
String PassWord=scanner.next();
AlterPassWord(name,PassWord,list);
System.out.println("修改成功");
}else {
System.out.println("账号信息不匹配,修改失败");
}
}
public static void menu() {
System.out.println("欢迎来到学生管理系统");
System.out.println("请选择操作1登录 2注册 3忘记密码");
}
;
public static boolean CheckNameNotExit(ArrayList<User> list, String name) {
for (int i = 0; i < list.size(); i++) {
User u = list.get(i);
if (u.getName().equals(name)) {
System.out.println("用户名已存在,请重新输入");
return false;
}
}
return true;
}
public static boolean CheckNameNotExitImprove(ArrayList<User> list, String name) {
for (int i = 0; i < list.size(); i++) {
User u = list.get(i);
if (u.getName().equals(name)) {
return false;
}
}
return true;
}
public static boolean CheckNameLong(String name) {
int count = name.length();
if (count >= 3 && count <= 15) {
return true;
} else {
System.out.println("用户名不在3~15位之间,请重新输入");
return false;
}
}
public static boolean CheckNameType(String name) {
int NumberSize = 0;
int LetterSize = 0;
for (int i = 0; i < name.length(); i++) {
char a = name.charAt(i);
if (a >= '0' && a <= '9') {
NumberSize++;
} else if ((a >= 'A' && a <= 'Z') || (a >= 'a' && a <= 'z')) {
LetterSize++;
} else {
System.out.println("用户名为字母加数字组合,请重新输入");
return false;
}
}
if (LetterSize == 0) {
System.out.println("用户名不能为纯数字,请重新输入");
return false;
}
return true;
}
public static boolean ConfirmPassword(String password) {
Scanner scanner = new Scanner(System.in);
System.out.println("请再次输入你的密码:");
String ConfirmPassword = scanner.next();
if (!password.equals(ConfirmPassword)) {
System.out.println("两次输入的密码不一致,请重新设置密码");
return false;
}
return true;
}
public static boolean IdLong(String ID) {
int count = ID.length();
if (count != 18) {
System.out.println("身份证号不为18位,请重新输入");
return false;
}
return true;
}
public static boolean IDFirst(String ID) {
char IDFirst = ID.charAt(0);
if (IDFirst == '0') {
System.out.println("身份证号的首字母不能为0,请重新输入");
return false;
}
return true;
}
public static boolean IDDigital(String ID) {
for (int i = 0; i < ID.length() - 1; i++) {
char a = ID.charAt(i);
if (a < '0' || a > '9') {
System.out.println("身份证号的前17位为数字,请重新输入");
return false;
}
}
return true;
}
public static boolean IDEnd(String ID) {
char end = ID.charAt(ID.length() - 1);
if ((end >= '0' && end <= '9') || end == 'X' || end == 'x') {
return true;
}
System.out.println("身份证最后一位不为数字或大小写x,请重新输入");
return false;
}
public static boolean PhoneNumberLong(String PhoneNumber) {
int count = 0;
count = PhoneNumber.length();
if (count != 11) {
System.out.println("手机号长度不为11位,请重新输入");
return false;
}
return true;
}
public static boolean PhoneNumberFirst(String ID) {
char IDFirst = ID.charAt(0);
if (IDFirst == '0') {
System.out.println("手机号的首字母不能为0,请重新输入");
return false;
}
return true;
}
public static boolean PhoneNumberAll(String PhoneNumber) {
for (int i = 0; i < PhoneNumber.length(); i++) {
char a = PhoneNumber.charAt(i);
if (a < '0' || a > '9') {
System.out.println("手机号不全为数字,请重新输入");
return false;
}
}
return true;
}
public static String CreateVerification() {
char[] arr = new char[52];
char[] verification = new char[5];
for (int i = 0; i < 26; i++) {
arr[i] = (char) ('a' + i);
}
for (int i = 26; i < arr.length; i++) {
arr[i] = (char) ('A' + i - 26);
}
Random random = new Random();
for (int i = 0; i < verification.length - 1; i++) {
int index = random.nextInt(52);
verification[i] = arr[index];
}
int number = random.nextInt(10);
char CharNumber = (char) ('0' + number);
verification[4] = CharNumber;
int index = random.nextInt(5);
char swap = verification[4];
verification[4] = verification[index];
verification[index] = swap;
StringBuffer sb = new StringBuffer();
for (int i = 0; i < verification.length; i++) {
sb.append(verification[i]);
}
return sb.toString();
}
public static boolean ConfirmVerification(String InPutVerification, String verification) {
if (InPutVerification.equals(verification)) {
return true;
}
System.out.println("验证码输入错误,请重新输入");
return false;
}
public static boolean CheckNameAndPassword(ArrayList<User> list, String name, String password) {
for (int i = 0; i < list.size(); i++) {
User U = list.get(i);
if (U.getName().equals(name) && U.getPassword().equals(password)) {
return true;
}
}
return false;
}
public static boolean CheckIDAndPhoneNumber(String name,String ID,String PhoneNumber,ArrayList<User> list){
User user;
for (int i = 0; i < list.size(); i++) {
user=list.get(i);
if (user.getName().equals(name)&&user.getID().equals(ID)&&user.getPhoneNumber().equals(PhoneNumber)){
return true;
}
if (user.getName().equals(name)){
break;
}
}
return false;
}
public static void AlterPassWord(String name,String PassWord,ArrayList<User> list){
User u=list.get(0);
for (int i = 0; i < list.size(); i++) {
u=list.get(i);
if(u.getName().equals(name)){
break;
}
}
u.setPassword(PassWord);
}
}