赞
踩
目录
2.ifOne方法,用来判断我们输入的学生id是否唯一(如果存在学生就不用再添加此学生):
3.queryStudent方法,把我们表中的所有学生显示出来
4.getIndex()如果想修改或者删除特定的学生,先获取要获取学生的索引
- 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 + "}";
- }
- }
- 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的对象!!
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("添加成功"); }
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 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 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来获取我们所需要要的索引
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); }
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方法,可以直接运行学生管理系统。
- 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 + "}";
- }
- }
注册所需要的具体要求:
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;
- }
- 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;
- }
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; } }
- 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将字母重新排序,单独的数字在进行交换,最后获得验证码字符串。
- 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方法,启动学生管理系统了!!
三、忘记密码
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);
- }
- }
有帮助的话,大家可以点个赞鼓励一下,这也是我的第一个博客
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。