目录
一、学生管理系统:
1.创建学生对象Student的javabean类:
2.创建出学生管理系统 StudentSystem类:
1.addStudent方法:添加学生
2.ifOne方法,用来判断我们输入的学生id是否唯一(如果存在学生就不用再添加此学生):
3.queryStudent方法,把我们表中的所有学生显示出来
4.getIndex()如果想修改或者删除特定的学生,先获取要获取学生的索引
5.deletStudent()删除指定学生:
6.updateStudent()修改指定学生
二、注册系统
1.首先创建出User的javabean类
2.注册功能
2.contains()检查用户名是否存在:
2.登录功能
1.验证码生成的实现,getcode()
2.checkUserInfo()检查学生的信息是否正确
3.忘记密码功能
文章来源地址https://www.toymoban.com/news/detail-503874.html
一、学生管理系统:
1.创建学生对象Student的javabean类:
public class Student {
private String name;
private int id;
private String sex;
private String adress;
public Student() {
}
public Student(String name, int id, String sex, String adress) {
this.name = name;
this.id = id;
this.sex = sex;
this.adress = adress;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return id
*/
public int getId() {
return id;
}
/**
* 设置
* @param id
*/
public void setId(int id) {
this.id = id;
}
/**
* 获取
* @return sex
*/
public String getSex() {
return sex;
}
/**
* 设置
* @param sex
*/
public void setSex(String sex) {
this.sex = sex;
}
/**
* 获取
* @return adress
*/
public String getAdress() {
return adress;
}
/**
* 设置
* @param adress
*/
public void setAdress(String adress) {
this.adress = adress;
}
public String toString() {
return "Student{name = " + name + ", id = " + id + ", sex = " + sex + ", adress = " + adress + "}";
}
}
2.创建出学生管理系统 StudentSystem类:
import java.util.ArrayList;
import java.util.Scanner;
public class StudentSystem {
public void StartSystem() {
ArrayList<Student> list = new ArrayList<>();
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);
break;
case "2":
deleteStudent(list);
break;
case "3":
updateStudent(list);
break;
case "4":
queryStudent(list);
break;
case "5": {
System.out.println("退出");
System.exit(0);
break;
}
default:
System.out.println("没有这个选项");
}
}
}
此处还是使用最基础的switch-case进行不同功能的选择,并且此处的储存学生对象的容器选择用Arraylist容器进行书写,此处也可以用Student[]数组进行储存Student的对象!!
1.addStudent方法:添加学生
public static void addStudent(ArrayList<Student> list){//此处传入我们所创建出来的容器list Student s = new Student(); Scanner sc = new Scanner(System.in); System.out.println("请输入学生的id"); int id = 0; while(true) { id = sc.nextInt(); boolean flag = ifOne(list, id);//学生对象是否唯一,用ifOne()方法进行判断 if (flag) { System.out.println("id已经存在请重新录入"); }else{ s.setId(id); break; } } System.out.println("请输入学生的姓名"); String name = sc.next(); s.setName(name); System.out.println("请输入学生的性别"); String sex = sc.next(); s.setSex(sex); System.out.println("请输入学生的家庭住址"); String adress = sc.next(); s.setAdress(adress); list.add(s); System.out.println("添加成功"); }
2.ifOne方法,用来判断我们输入的学生id是否唯一(如果存在学生就不用再添加此学生):
public static boolean ifOne(ArrayList<Student> list,int id){ for (int i = 0; i < list.size(); i++) { Student s = list.get(i); int sid = s.getId(); if(sid==id){ return true; } } return false; }
3.queryStudent方法,把我们表中的所有学生显示出来
public static void queryStudent(ArrayList<Student> list){ if(list.size()==0){ System.out.println("当前无学生信息,请添加后查询"); return; } System.out.println("id\t\t姓名\t年龄\t家庭住址"); for (int i = 0; i < list.size(); i++) { Student stu = list.get(i); System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+stu.getSex()+"\t"+stu.getAdress()); } }
4.getIndex()如果想修改或者删除特定的学生,先获取要获取学生的索引
public static int getIndex(ArrayList<Student> list,int id){ for (int i = 0; i < list.size(); i++) { Student stu = list.get(i); int sid = stu.getId(); if (sid==id) { return i; } } return -1; } }
这里我们通过id来获取我们所需要要的索引
5.deletStudent()删除指定学生:
public static void deleteStudent(ArrayList<Student> list){ Scanner sc = new Scanner(System.in); System.out.println("请输入您要删除的学生的id"); int id = sc.nextInt(); int index = getIndex(list,id);//我们通过getIndex方法来获取所需要删除的下标 //直接删除:remove list.remove(index); }
6.updateStudent()修改指定学生
public static void updateStudent(ArrayList<Student> list){ Scanner sc = new Scanner(System.in); System.out.println("请输入您要修改的学生的id"); int id = sc.nextInt(); //再次获取下标 int index = getIndex(list,id); //开始修改学生的信息 System.out.println("请输入学生姓名"); list.get(index).setName(sc.next()); System.out.println("请输入学生id"); list.get(index).setId(sc.nextInt()); System.out.println("请输入学生性别"); list.get(index).setSex(sc.next()); System.out.println("请输入学生地址"); list.get(index).setAdress(sc.next()); System.out.println("修改成功"); }
学生管理系统制作完毕,接下来可以制作管理系统的登录系统。如果只需要学生管理系统,可以把 StudentSystem类中的的startSystem方法改成main方法,可以直接运行学生管理系统。
二、注册系统
1.首先创建出User的javabean类
package StudentManagerSys;
public class User {
private String userName;
private String passWord;
private String personId;
private String phoneNumber;
public User() {}
public User(String userName, String passWord, String personId, String phoneNumber) {
this.userName = userName;
this.passWord = passWord;
this.personId = personId;
this.phoneNumber = phoneNumber;
}
/**
* 获取
* @return userName
*/
public String getUserName() {
return userName;
}
/**
* 设置
* @param userName
*/
public void setUserName(String userName) {
this.userName = userName;
}
/**
* 获取
* @return passWord
*/
public String getPassWord() {
return passWord;
}
/**
* 设置
* @param passWord
*/
public void setPassWord(String passWord) {
this.passWord = passWord;
}
/**
* 获取
* @return personId
*/
public String getPersonId() {
return personId;
}
/**
* 设置
* @param personId
*/
public void setPersonId(String personId) {
this.personId = personId;
}
/**
* 获取
* @return phoneNumber
*/
public String getPhoneNumber() {
return phoneNumber;
}
/**
* 设置
* @param phoneNumber
*/
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String toString() {
return "User{userName = " + userName + ", passWord = " + passWord + ", personId = " + personId + ", phoneNumber = " + phoneNumber + "}";
}
}
2.注册功能
注册所需要的具体要求:
1.用户名有以下要求:
验证要求:
用户名唯一。
用户名长度必须在3-15位之间。
只能是字母加数字的组合,不能是纯数字。
2.键盘输入两次,两次一致可以注册。
3.身份证号码需要验证。
验证要求:
长度为18位。
不能以0开头。
前17位必须是数字。
最后一位可以是数字也可以是大写X或小写x
4.手机号验证:
验证要求:
长度为11位
不能以0开头
必须是纯数字
private static void register(ArrayList<User> list) {
Scanner sc = new Scanner(System.in);
String username;
while (true) {
System.out.println("请输入用户名");
username = sc.next();
// 用户名唯一。
// 用户名长度必须在3-15位之间。
// 只能是字母加数字的组合,不能是纯数字。
boolean flag = checkUsername (username);
if(!flag) {
System.out.println("用户名格式不满足请重新输入");
continue;
}
//校验用户名是否唯一
boolean flag1 = contains(list,username);
if(flag1){
System.out.println("用户名"+username+"重复,请重新输入");
continue;
}else
break;
}
//键盘录入密码
//两次输入的密码一致可成功注册
String password;
while (true) {
System.out.println("请输入要注册的密码");
password = sc.next();
System.out.println("请再输入一遍您的密码");
String aginPassword = sc.next();
if(!password.equals(aginPassword)){
System.out.println("两次密码输入不一致,请重新输入");
continue;
}else{
System.out.println("两次密码一致,继续录入");
break;
}
}
//键盘录入身份证号码
// 长度为18位。
// 不能以0开头。
// 前17位必须是数字。
// 最后一位可以是数字也可以是大写X或小写x
String personId;
while (true) {
System.out.println("请输入身份证号码");
personId = sc.next();
boolean flag2 = checkPersonId(personId);
if(flag2){
System.out.println("身份证号码满足要求");
break;
}else{
System.out.println("请重新输入");
continue;
}
}
//键盘录入手机号码
// 验证要求:
// 长度为11位
// 不能以0开头
// 必须是纯数字
String phoneNumber;
while (true) {
System.out.println("请输入手机号码");
phoneNumber = sc.next();
boolean flag3 = checkPhonenumber(phoneNumber);
if(flag3){
System.out.println("手机号满足要求");
break;
}else{
System.out.println("不满足要求,请重新输入");
continue;
}
}
User u = new User(username,password,personId,phoneNumber);
list.add(u);
System.out.println("注册成功");
}
1.checkUsername():检查用户名是否符合要求
private static boolean checkUsername(String username) {
int length = username.length();
if(length<3||length>15){
return false;
}
//只能是字母加数字的组合,不能是纯数字
//循环得到每一个字符,如果有一个不是字母或者数字,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 cnt = 0;
for (int i = 0; i <length; i++) {
char c = username.charAt(i);
if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) {
cnt++;
break;
}
}
return cnt>0;
}
2.contains()检查用户名是否存在:
private static boolean contains(ArrayList<User> list, String username) {
for (int i = 0; i < list.size(); i++) {
if(list.get(i).getUserName().equals(username)){
return true;
}
}
return false;
}
3.checkPersonId()检查身份证号是否符合要求:
private static boolean checkPersonId(String personId) {
int length = personId.length();
//不是0开头,并且18位
if(length!=18||personId.charAt(0)==0){
return false;
}
//判断前十七位
for (int i = 0; i < personId.length()-1; i++) {
if(!(personId.charAt(i)>='0'&&personId.charAt(i)<='9'))
{
return false;
}
}
if(!((personId.charAt(length-1)>='0'&&personId.charAt(length-1)<='9')||(personId.charAt(length-1)=='X'||personId.charAt(length-1)=='x')))
{
return false;
}
return true;
}
4.checkPhoneNumber()检查手机号是否符合要求:
private static boolean checkPhonenumber(String phoneNumber) {
int length = phoneNumber.length();
//不是0开头,并且18位
if(length!=11||phoneNumber.charAt(0)==0){
return false;
}
for (int i = 0; i < phoneNumber.length(); i++) {
if(!(phoneNumber.charAt(i)>='0'&&phoneNumber.charAt(i)<='9'))
{
return false;
}
}
return true;
}
2.登录功能
1.键盘录入用户名
2.键盘录入密码
3.键盘录入验证码
验证要求
用户名如果未注册,直接结束方法,并提示:用户名未注册,请先注册
判断验证码是否正确,如果不正确,请重新输入。
再判断用户名和密码是否正确,有3次机会
忘记密码
1.键盘录入用户名,判断当前用户名是否存在,如果不存在,直接结束,提示:未注册
2.键盘录入身份证号码和手机号码
3.判断当前用户的身份证号码和手机号码是否一致。
如果一致,提示输入密码,进行修改
如果不一致,账号信息不匹配,修改失败
验证码规则:
长度为5
由4位大写或者小写字母和1位数字组成,同一个字母可重复。
数字可以出现在任何位置
比如
aQa1k1
private static void login(ArrayList<User> list) {
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 3; i++) {
System.out.println("请输入用户名");
String username = sc.next();
boolean flag = contains(list, username);
if (!flag) {
System.out.println("用户名" + username + "未注册,请先注册再登录");
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;
}
}
//验证用户名密码是否正确
//封装思想,把一些零散的数据,封装成一个对象
//传递一个整体,不用传零散的数据
User userInfo = new User(username, password, null, null);
boolean flag1 = checkUserInfo(list, userInfo);
if (flag1) {
System.out.println("登录成功,可以开始使用学生管理系统");
StudentSystem ss = new StudentSystem();
ss.StartSystem();
} else {
if(i==2) {
System.out.println("当前账号"+username+"被锁定,请联系客服人员");
return;
}else{
System.out.println("用户名或密码错误,还剩下"+(2-i)+"次机会");
}
}
}
}
总共有三次登陆的机会,机会用完退出程序:用for循环控制。
切记不能把getcode重复使用,这样会与前面的rightCode不一致,导致验证码无论如何都是错误的,写成上方的形式
while (true) { String rightcode = getCode(); System.out.println("当前正确的验证码为" + getCode()); System.out.println("请输入验证码"); String code = sc.next(); if (code.equalsIgnoreCase(rightcode)) { System.out.println("验证码正确"); break; } else { System.out.println("验证码错误"); continue; } }
1.验证码生成的实现,getcode()
private 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);
}
}
先用Arraylist容器把所有的字母大小写存入list中,再通过StringBuilder将字母重新排序,单独的数字在进行交换,最后获得验证码字符串。
2.checkUserInfo()检查学生的信息是否正确
private static boolean checkUserInfo(ArrayList<User> list,User userInfo) {
for (int i = 0; i < list.size(); i++) {
if(list.get(i).getUserName().equals(userInfo.getUserName())&&list.get(i).getPassWord().equals(userInfo.getPassWord())){
return true;
}
}
return false;
}
登录成功就可以创建StudentSystem对象,调用startSystem方法,启动学生管理系统了!!
3.忘记密码功能
三、忘记密码
1.键盘录入用户名,判断当前用户名是否存在,如果不存在,直接结束方法,并提示未注册。
2.键盘录入身份证号和手机号码
3.判断当前用户的身份证号和手机号是否一致。
如果一致,提示输入密码,进行修改
如果不一致,提示:账号信息不匹配,修改失败
private static void forgetpassword(ArrayList<User> list) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名");
String username = sc.next();
boolean flag = contains(list,username);
if (!flag){
System.out.println("当前用户"+username+"未注册,请先注册");
return;
}
//键盘录入身份证号码和手机号码
System.out.println("请输入身份证号码");
String personId = sc.next();
System.out.println("请输入手机号码");
String phoneNumber = sc.next();
//判断是否和用户对象中的身份证号码和手机号码是否相同
//用户对象通过索引获取出来
int index = findIndex(list,username);
User user = list.get(index);
if(!(user.getPersonId().equalsIgnoreCase(personId)&&user.getPhoneNumber().equals(phoneNumber))){
System.out.println("身份证号或手机号输入不正确");
return;
}
//所有的数据验证成功,直接修改
String passWord;
while (true) {
System.out.println("请输入新的密码");
passWord =sc.next();
System.out.println("请重新输入一遍");
String aginPassword = sc.next();
if(passWord.equals(aginPassword)){
System.out.println("两次密码输入一致");
break;
}else{
System.out.println("输入不一致");
continue;
}
}
user.setPassWord(passWord);
System.out.println("密码修改成功!");
}
完整的代码:
Student类javabean类:
package StudentManagerSys;
public class Student {
private String name;
private int id;
private String sex;
private String adress;
public Student() {
}
public Student(String name, int id, String sex, String adress) {
this.name = name;
this.id = id;
this.sex = sex;
this.adress = adress;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return id
*/
public int getId() {
return id;
}
/**
* 设置
* @param id
*/
public void setId(int id) {
this.id = id;
}
/**
* 获取
* @return sex
*/
public String getSex() {
return sex;
}
/**
* 设置
* @param sex
*/
public void setSex(String sex) {
this.sex = sex;
}
/**
* 获取
* @return adress
*/
public String getAdress() {
return adress;
}
/**
* 设置
* @param adress
*/
public void setAdress(String adress) {
this.adress = adress;
}
public String toString() {
return "Student{name = " + name + ", id = " + id + ", sex = " + sex + ", adress = " + adress + "}";
}
}
User类的javabean类:
package StudentManagerSys;
public class User {
private String userName;
private String passWord;
private String personId;
private String phoneNumber;
public User() {}
public User(String userName, String passWord, String personId, String phoneNumber) {
this.userName = userName;
this.passWord = passWord;
this.personId = personId;
this.phoneNumber = phoneNumber;
}
/**
* 获取
* @return userName
*/
public String getUserName() {
return userName;
}
/**
* 设置
* @param userName
*/
public void setUserName(String userName) {
this.userName = userName;
}
/**
* 获取
* @return passWord
*/
public String getPassWord() {
return passWord;
}
/**
* 设置
* @param passWord
*/
public void setPassWord(String passWord) {
this.passWord = passWord;
}
/**
* 获取
* @return personId
*/
public String getPersonId() {
return personId;
}
/**
* 设置
* @param personId
*/
public void setPersonId(String personId) {
this.personId = personId;
}
/**
* 获取
* @return phoneNumber
*/
public String getPhoneNumber() {
return phoneNumber;
}
/**
* 设置
* @param phoneNumber
*/
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String toString() {
return "User{userName = " + userName + ", passWord = " + passWord + ", personId = " + personId + ", phoneNumber = " + phoneNumber + "}";
}
}
StudentSystem类:
package StudentManagerSys;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentSystem {
public void StartSystem() {
ArrayList<Student> list = new ArrayList<>();
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);
break;
case "2":
deleteStudent(list);
break;
case "3":
updateStudent(list);
break;
case "4":
queryStudent(list);
break;
case "5": {
System.out.println("退出");
System.exit(0);
break;
}
default:
System.out.println("没有这个选项");
}
}
}
//添加学生
public static void addStudent(ArrayList<Student> list){
Student s = new Student();
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生的id");
int id = 0;
while(true) {
id = sc.nextInt();
boolean flag = ifOne(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("请输入学生的性别");
String sex = sc.next();
s.setSex(sex);
System.out.println("请输入学生的家庭住址");
String adress = sc.next();
s.setAdress(adress);
list.add(s);
System.out.println("添加成功");
}
public static void deleteStudent(ArrayList<Student> list){
Scanner sc = new Scanner(System.in);
System.out.println("请输入您要删除的学生的id");
int id = sc.nextInt();
int index = getIndex(list,id);//我们通过getIndex方法来获取所需要删除的下标
//直接删除:remove
list.remove(index);
System.out.println("删除成功");
}
public static void updateStudent(ArrayList<Student> list){
Scanner sc = new Scanner(System.in);
System.out.println("请输入您要修改的学生的id");
int id = sc.nextInt();
//再次获取下标
int index = getIndex(list,id);
//开始修改学生的信息
System.out.println("请输入学生姓名");
list.get(index).setName(sc.next());
System.out.println("请输入学生id");
list.get(index).setId(sc.nextInt());
System.out.println("请输入学生性别");
list.get(index).setSex(sc.next());
System.out.println("请输入学生地址");
list.get(index).setAdress(sc.next());
System.out.println("修改成功");
}
//查询学生
public static void queryStudent(ArrayList<Student> list){
if(list.size()==0){
System.out.println("当前无学生信息,请添加后查询");
return;
}
System.out.println("id\t\t姓名\t年龄\t家庭住址");
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+stu.getSex()+"\t"+stu.getAdress());
}
}
public static boolean ifOne(ArrayList<Student> list,int id){
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
int sid = s.getId();
if(sid==id){
return true;
}
}
return false;
}
public static int getIndex(ArrayList<Student> list,int id){
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
int sid = stu.getId();
if (sid==id) {
return i;
}
}
return -1;
}
}
App类:
package StudentManagerSys;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class App {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<User> list = new ArrayList<>();
while (true) {
System.out.println("欢迎来到学生管理系统");
System.out.println("请选择:1登录 2.注册 3.忘记密码");
String choose = sc.next();
switch(choose){
case "1":
login(list);
break;
case "2":
register(list);
break;
case "3":
forgetpassword(list);
break;
case "4": {
System.out.println("感谢使用");
System.exit(0);
}
default:
System.out.println("没有此选项");
break;
}
}
}
private static void forgetpassword(ArrayList<User> list) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名");
String username = sc.next();
boolean flag = contains(list,username);
if (!flag){
System.out.println("当前用户"+username+"未注册,请先注册");
return;
}
//键盘录入身份证号码和手机号码
System.out.println("请输入身份证号码");
String personId = sc.next();
System.out.println("请输入手机号码");
String phoneNumber = sc.next();
//判断是否和用户对象中的身份证号码和手机号码是否相同
//用户对象通过索引获取出来
int index = findIndex(list,username);
User user = list.get(index);
if(!(user.getPersonId().equalsIgnoreCase(personId)&&user.getPhoneNumber().equals(phoneNumber))){
System.out.println("身份证号或手机号输入不正确");
return;
}
//所有的数据验证成功,直接修改
String passWord;
while (true) {
System.out.println("请输入新的密码");
passWord =sc.next();
System.out.println("请重新输入一遍");
String aginPassword = sc.next();
if(passWord.equals(aginPassword)){
System.out.println("两次密码输入一致");
break;
}else{
System.out.println("输入不一致");
continue;
}
}
user.setPassWord(passWord);
System.out.println("密码修改成功!");
}
private static int findIndex(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;
}
private static void register(ArrayList<User> list) {
Scanner sc = new Scanner(System.in);
String username;
while (true) {
System.out.println("请输入用户名");
username = sc.next();
// 用户名唯一。
// 用户名长度必须在3-15位之间。
// 只能是字母加数字的组合,不能是纯数字。
boolean flag = checkUsername (username);
if(!flag) {
System.out.println("用户名格式不满足请重新输入");
continue;
}
//校验用户名是否唯一
boolean flag1 = contains(list,username);
if(flag1){
System.out.println("用户名"+username+"重复,请重新输入");
continue;
}else
break;
}
//键盘录入密码
//两次输入的密码一致可成功注册
String password;
while (true) {
System.out.println("请输入要注册的密码");
password = sc.next();
System.out.println("请再输入一遍您的密码");
String aginPassword = sc.next();
if(!password.equals(aginPassword)){
System.out.println("两次密码输入不一致,请重新输入");
continue;
}else{
System.out.println("两次密码一致,继续录入");
break;
}
}
//键盘录入身份证号码
// 长度为18位。
// 不能以0开头。
// 前17位必须是数字。
// 最后一位可以是数字也可以是大写X或小写x
String personId;
while (true) {
System.out.println("请输入身份证号码");
personId = sc.next();
boolean flag2 = checkPersonId(personId);
if(flag2){
System.out.println("身份证号码满足要求");
break;
}else{
System.out.println("请重新输入");
continue;
}
}
//键盘录入手机号码
// 验证要求:
// 长度为11位
// 不能以0开头
// 必须是纯数字
String phoneNumber;
while (true) {
System.out.println("请输入手机号码");
phoneNumber = sc.next();
boolean flag3 = checkPhonenumber(phoneNumber);
if(flag3){
System.out.println("手机号满足要求");
break;
}else{
System.out.println("不满足要求,请重新输入");
continue;
}
}
User u = new User(username,password,personId,phoneNumber);
list.add(u);
System.out.println("注册成功");
}
private static boolean checkPhonenumber(String phoneNumber) {
int length = phoneNumber.length();
//不是0开头,并且18位
if(length!=11||phoneNumber.charAt(0)==0){
return false;
}
for (int i = 0; i < phoneNumber.length(); i++) {
if(!(phoneNumber.charAt(i)>='0'&&phoneNumber.charAt(i)<='9'))
{
return false;
}
}
return true;
}
private static boolean checkPersonId(String personId) {
int length = personId.length();
//不是0开头,并且18位
if(length!=18||personId.charAt(0)==0){
return false;
}
//判断前十七位
for (int i = 0; i < personId.length()-1; i++) {
if(!(personId.charAt(i)>='0'&&personId.charAt(i)<='9'))
{
return false;
}
}
if(!((personId.charAt(length-1)>='0'&&personId.charAt(length-1)<='9')||(personId.charAt(length-1)=='X'||personId.charAt(length-1)=='x')))
{
return false;
}
return true;
}
private static boolean contains(ArrayList<User> list, String username) {
for (int i = 0; i < list.size(); i++) {
if(list.get(i).getUserName().equals(username)){
return true;
}
}
return false;
}
//判断用户名是否符合要求
private static boolean checkUsername(String username) {
int length = username.length();
if(length<3||length>15){
return false;
}
//只能是字母加数字的组合,不能是纯数字
//循环得到每一个字符,如果有一个不是字母或者数字,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 cnt = 0;
for (int i = 0; i <length; i++) {
char c = username.charAt(i);
if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) {
cnt++;
break;
}
}
return cnt>0;
}
private static void login(ArrayList<User> list) {
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 3; i++) {
System.out.println("请输入用户名");
String username = sc.next();
boolean flag = contains(list, username);
if (!flag) {
System.out.println("用户名" + username + "未注册,请先注册再登录");
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;
}
}
//验证用户名密码是否正确
//封装思想,把一些零散的数据,封装成一个对象
//传递一个整体,不用传零散的数据
User userInfo = new User(username, password, null, null);
boolean flag1 = checkUserInfo(list, userInfo);
if (flag1) {
System.out.println("登录成功,可以开始使用学生管理系统");
StudentSystem ss = new StudentSystem();
ss.StartSystem();
} else {
if(i==2) {
System.out.println("当前账号"+username+"被锁定,请联系客服人员");
return;
}else{
System.out.println("用户名或密码错误,还剩下"+(2-i)+"次机会");
}
}
}
}
private static boolean checkUserInfo(ArrayList<User> list,User userInfo) {
for (int i = 0; i < list.size(); i++) {
if(list.get(i).getUserName().equals(userInfo.getUserName())&&list.get(i).getPassWord().equals(userInfo.getPassWord())){
return true;
}
}
return false;
}
//生成一个验证码
// 验证码规则:
// 长度为5
// 由4位大写或者小写字母和1位数字组成,同一个字母可重复。
// 数字可以出现在任何位置
private 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);
}
}
有帮助的话,大家可以点个赞鼓励一下,这也是我的第一个博客
文章来源:https://www.toymoban.com/news/detail-503874.html
到了这里,关于用JAVA实现一个学生管理系统和登录系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!