首先管理员注册后登录,可进入学生管理系统
package 学生管理系统;
public class User {
private String name;
private String password;
private String idnum;
private String iphonenum;
public User() {
}
public User(String name, String password, String idnum, String iphonenum) {
this.name = name;
this.password = password;
this.idnum = idnum;
this.iphonenum = iphonenum;
}
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 getIdnum() {
return idnum;
}
public void setIdnum(String idnum) {
this.idnum = idnum;
}
public String getIphonenum() {
return iphonenum;
}
public void setIphonenum(String iphonenum) {
this.iphonenum = iphonenum;
}
}
package 学生管理系统;
public class Student {
private String id;
private String name;
private int age;
private String address;
public Student() {
super();
}
public Student(String id, String name, int age, String address) {
super();
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
public String getId() {
return id;
}
public void setId(String id) {
this.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;
}
}
package 学生管理系统;
import java.util.*;
public class TestResult {
public static void main(String[] args) {
ArrayList<User> ARR = new ArrayList<User>();
User u=new User("001","jiang","123456789123456789","12345678900");
ARR.add(u);
while(true) {
System.out.println("-------欢迎来到学生管理系统--------");
System.out.println("请选择操作 1登录 2注册 3忘记密码");
Scanner sc = new Scanner(System.in);
String choose = sc.next();
switch(choose) {
//登录
case "1":{
boolean flag=land(ARR);
loop: while(flag) {
ArrayList<Student> arr =new ArrayList<Student>();
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 choose1 = sc.next();
switch(choose1) {
case "1": { setStudent(arr); break;}
case "2": { removeStudent(arr); break;}
case "3": { alterStudent(arr); break;}
case "4": { seeStudent(arr); break;}
case "5": { break loop; }
default : System.out.println("没有这个选项,请重新输入!!");
}
}
}
break;
}
//注册
case "2":{ login(ARR); break; }
//忘记密码
case "3":{ forget(ARR); break; }
default: System.out.println("没有该选项,请重新输入!!!");
}
}
}
//注册
public static void login(ArrayList<User> ARR) {
User u =new User();
//用户名
while(true) {
System.out.println("请输入用户名:");
Scanner sc = new Scanner(System.in);
String name = sc.next();
boolean flag = checkName(ARR,name);
if(flag==true) {
System.out.println("用户名已存在,请重新输入!!!");
}
else if(name.length()>=3 && name.length()<=15 && returnlatternum(name)>0) {
u.setName(name);
System.out.println("用户名添加成功!!!");
break;
}
else {
System.out.println("用户名已有误,请重新输入!!!");
}
}
//密码
while(true) {
System.out.println("请输入密码:");
Scanner sc = new Scanner(System.in);
String password1 = sc.next();
System.out.println("请再次输入密码:");
String password2 = sc.next();
if(password1.equals(password2)) {
u.setPassword(password1);
System.out.println("密码设置成功!!!");
break;
}
else {
System.out.println("两次密码输入不一致,请重新输入!!!");
}
}
//身份证
while(true) {
System.out.println("请输入身份证号:");
Scanner sc = new Scanner(System.in);
String idnum = sc.next();
boolean flag = checknum(idnum,17);
char ch=idnum.charAt(idnum.length()-1);
if(idnum.length()==18 && flag==true && idnum.charAt(0) !='0' && ( ( ch>='0'&&ch<='9') || ch=='x'||ch=='X' )) {
u.setIdnum(idnum);
System.out.println("身份证号添加成功!!!");
break;
}
else {
System.out.println("身份证号输入有误,请重新输入!!!");
}
}
//手机号
while(true) {
System.out.println("请输入手机号:");
Scanner sc = new Scanner(System.in);
String iphonenum = sc.next();
boolean flag = checknum(iphonenum,11);
if(flag==true && iphonenum.length()==11 && iphonenum.charAt(0) !='0') {
u.setIphonenum(iphonenum);
System.out.println("手机号号添加成功!!!");
break;
}
else {
System.out.println("手机号格式错误,请重新输入!!!");
}
}
ARR.add(u);
//测试代码
/*User uu = ARR.get(0);
System.out.println(uu.getName() +" "+ uu.getPassword() +" "+uu.getIdnum() +" "+uu.getIphonenum());*/
}
//登录
public static boolean land(ArrayList<User> ARR) {
System.out.println("--------欢迎使用学生管理系统,请登录:---------");
Scanner sc =new Scanner(System.in);
int count=0;
System.out.println("请输入用户名:");
String name =sc.next();
boolean flag=checkName(ARR,name);
if(flag==false) {
System.out.println("用户名未注册,请先注册!!!");
}
else {
System.out.println("请输入验证码:");
String yzm=makeCode();
System.out.println(yzm);
String yzm1 =sc.next();
if(yzm.equals(yzm1)==false ) {
System.out.println("验证码输入错误!!!");
}
else {
while(count<3) {
System.out.println("请输入密码:");
String password =sc.next();
String rightpassword=getRightPassword(ARR,name);
if(password.equals(rightpassword)) {
System.out.println("登录成功!!!!");
return true;
}
else {
count++;
System.out.println("密码输入错误还剩"+(3-count)+"次机会!!!");
}
}
}
}
return false;
}
//忘记密码
public static void forget(ArrayList<User> ARR) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入用户名");
String name=sc.next();
boolean flag = checkName(ARR,name);
if(flag) {
int index=getArrIndex(ARR,name);
User u1=ARR.get(index);
System.out.println("请输入身份证号:");
String idnum = sc.next();
String rightidnum=u1.getIdnum();
System.out.println("请输入手机号:");
String iphonenum = sc.next();
String rightiphonenum=u1.getIphonenum();
if(idnum.equals(rightidnum) && iphonenum.equals(rightiphonenum)) {
System.out.println("验证完成,请输入新的密码");
String newpassword = sc.next();
u1.setPassword(newpassword);
ARR.set(index, u1);
System.out.println("密码修改成功!!!");
}
else {
System.out.println("账号信息不匹配,修改失败");
}
}
else {
System.out.println("该用户名未注册!!!");
}
}
//返回字母个数
public static int returnlatternum(String str) {
int count=0;
for (int i = 0; i < str.length(); i++) {
char c=str.charAt(i);
if( (c>='a' && c<='z') || (c>='A' && c<='Z')) {
count++;
}
}
return count;
}
//判断用户名是否存在
public static boolean checkName(ArrayList<User> arr,String name) {
for(int i = 0; i < arr.size(); i++) {
User stu = arr.get(i);
if(stu.getName().equals(name)) {
return true;
}
}
return false;
}
//检查前n位是否全为数字
public static boolean checknum(String str,int n) {
for(int i = 0 ; i < n ; i++ ) {
char c = str.charAt(i);
if(c<'0' || c>'9') {
return false;
}
}
return true;
}
//生成一个5位验证码4位字母1位数字
public static String makeCode() {
String str="";
char[] c = new char[52];
Random r = new Random();
c[0]='a';
for(int i=1;i<c.length;i++) {
if(i<26) {
c[i] = (char)(96+i);
}
else {
c[i] = (char)(65+i-26);
}
}
for (int i = 0; i < 4; i++) {
int index =r.nextInt(52);
str= str + c[index];
}
str=str+(char)(r.nextInt(10)+48);
String result=getcLurtter(str);
return str;
}
//打乱字符串
public static String getcLurtter(String str) {
char[] c= new char[str.length()];
for (int i = 0; i < str.length(); i++) {
c[i]=str.charAt(i);
}
char k;
Random r = new Random();
for (int i = 0; i < str.length(); i++) {
int h=r.nextInt(str.length());
k=c[i];
c[i]=c[h];
c[h]=k;
}
String result=new String(c);
return result;
}
//返回正确的密码
public static String getRightPassword(ArrayList<User> ARR,String name) {
User u=new User();
for (int i = 0; i < ARR.size(); i++) {
u=ARR.get(i);
if(u.getName().equals(name)) {
return u.getPassword();
}
}
return "0"; //这行代码不会被执行
}
//返回name在ARR中的索引
public static int getArrIndex(ArrayList<User> ARR,String name) {
User u=new User();
for (int i = 0; i < ARR.size(); i++) {
u=ARR.get(i);
if(u.getName().equals(name)) {
return i;
}
}
return -1; //这行代码不会被执行
}
//添加学生
public static void setStudent(ArrayList<Student> arr) {
Student stu = new Student();
Scanner sc = new Scanner(System.in);
while(true) {
System.out.println("请输入id:");
String id = sc.next();
boolean flag=checkId(arr,id);
if(flag == true) {
System.out.println("Id:"+id+"已存在,请重新输入");
}
else if(flag == false) {
stu.setId(id);break;
}
}
System.out.println("请输入姓名:");
String name = sc.next();
stu.setName(name);
System.out.println("请输入年龄:");
int age = sc.nextInt();
stu.setAge(age);
System.out.println("请输入地址:");
String address = sc.next();
stu.setAddress(address);
arr.add(stu);
System.out.println("添加成功!!!");
}
//删除学生
public static void removeStudent(ArrayList<Student> arr) {
System.out.println("请输入要删除学生的ID:");
Scanner sc = new Scanner(System.in);
String id=sc.next();
boolean flag=checkId(arr,id);
if(flag) {
int index = returnIndex(arr,id);
arr.remove(index);
}
else System.out.println("ID不存在");
}
//查询学生
public static void seeStudent(ArrayList<Student> arr) {
System.out.println("id\t姓名\t年龄\t地址");
for (int i = 0; i < arr.size(); i++) {
Student stu1 = arr.get(i);
System.out.println(stu1.getId()+"\t"+stu1.getName()+"\t"+stu1.getAge()+"\t"+stu1.getAddress());
}
}
//修改学生
public static void alterStudent(ArrayList<Student> arr) {
Student stu=new Student();
System.out.println("请输入要修改的学生的ID:");
Scanner sc = new Scanner(System.in);
String id=sc.next();
boolean flag=checkId(arr,id);
if(flag) {
int index = returnIndex(arr,id);
System.out.println("请输入新的姓名:");
String name = sc.next();
stu.setName(name);
System.out.println("请输入新的年龄:");
int age=sc.nextInt();
stu.setAge(age);
System.out.println("请输入新的地址:");
String address = sc.next();
stu.setAddress(address);
arr.set(index,stu);
}
else {
System.out.println("ID不存在!!!");
}
}
//判断ID是否存在
public static boolean checkId(ArrayList<Student> arr,String id) {
for(int i = 0; i < arr.size(); i++) {
Student stu = arr.get(i);
if(stu.getId().equals(id)) {
return true;
}
}
return false;
}
//返回索引
public static int returnIndex(ArrayList<Student> arr,String id) {
for(int i=0;i<arr.size();i++) {
Student stu = arr.get(i);
if(stu.getId().equals(id)) {
return i;
}
}
return -1;
}
}