目录
学生管理系统
需求:
分析:
初始菜单:
学生类:
添加功能:
删除功能:
修改功能:
查询功能:
设计图
学生管理系统(基础版)独立开发
所用方法
代码:
Student类:
StudentSystem类
代码解释:
Student类
StudentSystem类
用户交互
关键点
学生管理系统升级版
需求:
分析:
登录界面:
用户类:
注册功能:
登录功能:
忘记密码:
验证码规则:
设计图
学生管理系统(升级版)独立开发
所用方法
代码:
Student类:
StudentSystem类
User类
App类
代码解释:
学生管理系统
Student` 类
StudentSystem` 类
用户登录注册系统
User` 类
App` 类
学生管理系统
需求:
采取控制台的方式去书写学生管理系统。
分析:
初始菜单:
"-------------欢迎来到黑马学生管理系统----------------"
"1:添加学生"
"2:删除学生"
"3:修改学生"
"4:查询学生"
"5:退出"
"请输入您的选择:"
学生类:
属性:id、姓名、年龄、家庭住址
添加功能:
键盘录入每一个学生信息并添加,需要满足以下要求:
- id唯一
删除功能:
键盘录入要删除的学生id,需要满足以下要求:
- id存在删除
- id不存在,需要提示不存在,并回到初始菜单
修改功能:
键盘录入要修改的学生id,需要满足以下要求
- id存在,继续录入其他信息
- id不存在,需要提示不存在,并回到初始菜单
查询功能:
打印所有的学生信息,需要满足以下要求
- 如果没有学生信息,提示:当前无学生信息,请添加后再查询
- 如果有学生信息,需要按照以下格式输出。(不用过于纠结对齐的问题)
id 姓名 年龄 家庭住址
heima001 张三 23 南京
heima002 李四 24 北京
heima003 王五 25 广州
heima004 赵六 26 深圳
设计图
学生管理系统(基础版)独立开发
所用方法
-
写完一个分支,就测试一下,验证代码是否出错
-
99%的汗水+1%天赋
代码:
Student类:
package com.mohuanan.student;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) {this.id = id;this.name = name;this.age = age;this.address = address;}//set get 方法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;}
}
StudentSystem类
package com.mohuanan.student;import java.util.ArrayList;
import java.util.Scanner;public class StudentSystem {public static void main(String[] args) {//创建一个集合 存储Student的对象ArrayList<Student> list = new ArrayList<>();//初始菜单界面loop: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);//next() 提高容错率String choose = sc.next();switch (choose) {//case 的常量是字符""case "1":addStudent(list);break;case "2":deleteStudent(list);break;case "3":amendStudent(list);break;case "4":queryStudent(list);break;case "5":System.out.println("您已退出学生管理系统");//第一种方法 指定退出 while循环break loop;//第二种方法 使用//exit()是System类中的一个静态方法,用于终止当前正在运行的Java虚拟机(JVM)//System.exit(0)中的0是一个整数参数,它表示程序正常退出的状态码//System.exit(0);default:System.out.println("没有这个选项");}}}//添加学生public static void addStudent(ArrayList<Student> list) {//创建Scanner对象Scanner sc = new Scanner(System.in);//创建Student对象Student stu = new Student();//键盘录入idSystem.out.println("请输入您要添加的学生的id");String id = sc.next();//判断id是否唯一boolean flag = judgeStudentId(list, id);if (flag) {//存在这个学生System.out.println("您输入的学生的id已经存在,请重新输入");//返回主菜单return;} else {//不存在这个学生//添加到Student对象里stu.setId(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);//将Student对象添加到集合里list.add(stu);}//提示添加成功System.out.println("添加成功");}//删除学生public static void deleteStudent(ArrayList<Student> list) {//键盘录入要删除的学生的idScanner sc = new Scanner(System.in);System.out.println("请输入您要删除的学生的id");String id = sc.next();int result = indexStudentId(list, id);if (result >= 0) {//id存在 删除list.remove(result);//提示System.out.println("删除成功");} else {//不存在System.out.println("该学生不存在,请核对后在删除");//回到主界面return;}}//修改学生public static void amendStudent(ArrayList<Student> list) {//录入要修改学生的idScanner sc = new Scanner(System.in);System.out.println("请输入您要修改学生的id");String id = sc.next();int result = indexStudentId(list,id);if(result>=0){//存在这个学生//录入其他的信息 并修改System.out.println("请输入要修改学生的姓名");String name = sc.next();list.get(result).setName(name);System.out.println("请输入要修改学生的年龄");int age = sc.nextInt();list.get(result).setAge(age);System.out.println("请输入要修改学生的地址");String address = sc.next();list.get(result).setAddress(address);//提示修改成功System.out.println("修改成功");}else{//不存在System.out.println("您输入的要修改学生的id不存在");return;}}//查询学生public static void queryStudent(ArrayList<Student> list) {//输出系统所有的学生的信息//没有学生信息if (list.size() == 0) {System.out.println("当前无学生信息,请添加后查询");//返回主菜单return;}//有学生信息 打印所有的学生信息//表头System.out.println("id\t\t\t姓名\t\t年龄\t\t家庭住址");for (int i = 0; i < list.size(); i++) {Student stu = list.get(i);System.out.println(stu.getId() + "\t\t\t" + stu.getName() + "\t " + stu.getAge() + "\t " + stu.getAddress());}}//id唯一 存在id : true ,不存在: falsepublic static boolean judgeStudentId(ArrayList<Student> list, String id) {//调用 indexStudentId();方法int flag = indexStudentId(list, id);//flag<0 即==-1 返还 false//因为 索引必定是>=0的if (flag == -1) {return false;} else {return true;}}//返回所要查询的id 的下标 存在: 返回下标 ,不存在: -1public static int indexStudentId(ArrayList<Student> list, String id) {for (int i = 0; i < list.size(); i++) {//拿到集合里的每一个 id 加以判断Student stu = list.get(i);//因为是 比较引用数据类型里的内容 所以用equals()方法if (stu.getId().equals(id)) {return i;}}//没有找到 返回 -1return -1;}
}
代码解释:
这段代码是一个简单的Java学生管理系统,包含添加、删除、修改和查询学生信息的功能。它使用了Java的基础语法和集合框架(ArrayList
),并通过控制台输入输出与用户交互。下面是对代码主要部分的解释:
Student类
- 作用:定义了学生的基本信息,包括学生的
id
、name
、age
和address
。 - 属性:私有属性,只能通过类内部的方法访问和修改。
- 构造方法:提供了两个构造方法,一个是无参构造方法,另一个是带有所有属性参数的构造方法。
- Getter和Setter方法:用于获取和设置学生对象的属性值。
StudentSystem类
- 主要功能:实现了一个简单的文本界面学生管理系统,包括添加学生、删除学生、修改学生信息和查询所有学生信息的功能。
- 主要方法:
main
方法:程序的入口点,循环显示菜单选项,根据用户输入选择不同的操作。addStudent
方法:向系统中添加一个新的学生信息。deleteStudent
方法:根据学生的id
删除学生信息。amendStudent
方法:根据学生的id
修改学生信息。queryStudent
方法:显示系统中所有学生的信息。judgeStudentId
方法:检查给定的学生id
是否已经存在于系统中。indexStudentId
方法:返回给定学生id
在列表中的索引位置,如果不存在则返回-1。
用户交互
- 系统通过控制台输出菜单选项,并通过
Scanner
类读取用户的输入来选择不同的操作。 - 根据用户选择,系统会调用相应的方法执行操作,并显示操作结果或者提示信息。
关键点
- 数据存储:此系统使用
ArrayList<Student>
来存储所有学生信息。这是一个简单的内存存储方案,程序结束时数据会丢失。 - 唯一性检查:在添加和修改学生信息时,系统会检查学生的
id
是否唯一。 - 循环和选择:系统使用
while
循环和switch
语句来实现反复显示菜单和处理用户的选择。 - 程序退出:用户选择退出时,循环会被
break loop;
语句终止,程序正常结束。注释中提到的System.exit(0);
也可以用来立即终止程序,但在这个场景下选择了更温和的循环退出方式。
这个学生管理系统是一个很好的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
设计图
学生管理系统(升级版)独立开发
所用方法
-
写完一个分支,就测试一下,验证代码是否出错
-
99%的汗水+1%天赋
代码:
Student类:
package com.mohuanan.student;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) {this.id = id;this.name = name;this.age = age;this.address = address;}//set get 方法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;}
}
StudentSystem类
package com.mohuanan.student;import java.util.ArrayList;
import java.util.Scanner;public class StudentSystem {public static void main(String[] args) {//创建一个集合 存储Student的对象ArrayList<Student> list = new ArrayList<>();//初始菜单界面loop: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);//next() 提高容错率String choose = sc.next();switch (choose) {//case 的常量是字符""case "1":addStudent(list);break;case "2":deleteStudent(list);break;case "3":amendStudent(list);break;case "4":queryStudent(list);break;case "5":System.out.println("您已退出学生管理系统");//第一种方法 指定退出 while循环break loop;//第二种方法 使用//exit()是System类中的一个静态方法,用于终止当前正在运行的Java虚拟机(JVM)//System.exit(0)中的0是一个整数参数,它表示程序正常退出的状态码//System.exit(0);default:System.out.println("没有这个选项");}}}//添加学生public static void addStudent(ArrayList<Student> list) {//创建Scanner对象Scanner sc = new Scanner(System.in);//创建Student对象Student stu = new Student();//键盘录入idSystem.out.println("请输入您要添加的学生的id");String id = sc.next();//判断id是否唯一boolean flag = judgeStudentId(list, id);if (flag) {//存在这个学生System.out.println("您输入的学生的id已经存在,请重新输入");//返回主菜单return;} else {//不存在这个学生//添加到Student对象里stu.setId(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);//将Student对象添加到集合里list.add(stu);}//提示添加成功System.out.println("添加成功");}//删除学生public static void deleteStudent(ArrayList<Student> list) {//键盘录入要删除的学生的idScanner sc = new Scanner(System.in);System.out.println("请输入您要删除的学生的id");String id = sc.next();int result = indexStudentId(list, id);if (result >= 0) {//id存在 删除list.remove(result);//提示System.out.println("删除成功");} else {//不存在System.out.println("该学生不存在,请核对后在删除");//回到主界面return;}}//修改学生public static void amendStudent(ArrayList<Student> list) {//录入要修改学生的idScanner sc = new Scanner(System.in);System.out.println("请输入您要修改学生的id");String id = sc.next();int result = indexStudentId(list,id);if(result>=0){//存在这个学生//录入其他的信息 并修改System.out.println("请输入要修改学生的姓名");String name = sc.next();list.get(result).setName(name);System.out.println("请输入要修改学生的年龄");int age = sc.nextInt();list.get(result).setAge(age);System.out.println("请输入要修改学生的地址");String address = sc.next();list.get(result).setAddress(address);//提示修改成功System.out.println("修改成功");}else{//不存在System.out.println("您输入的要修改学生的id不存在");return;}}//查询学生public static void queryStudent(ArrayList<Student> list) {//输出系统所有的学生的信息//没有学生信息if (list.size() == 0) {System.out.println("当前无学生信息,请添加后查询");//返回主菜单return;}//有学生信息 打印所有的学生信息//表头System.out.println("id\t\t\t姓名\t\t年龄\t\t家庭住址");for (int i = 0; i < list.size(); i++) {Student stu = list.get(i);System.out.println(stu.getId() + "\t\t\t" + stu.getName() + "\t " + stu.getAge() + "\t " + stu.getAddress());}}//id唯一 存在id : true ,不存在: falsepublic static boolean judgeStudentId(ArrayList<Student> list, String id) {//调用 indexStudentId();方法int flag = indexStudentId(list, id);//flag<0 即==-1 返还 false//因为 索引必定是>=0的if (flag == -1) {return false;} else {return true;}}//返回所要查询的id 的下标 存在: 返回下标 ,不存在: -1public static int indexStudentId(ArrayList<Student> list, String id) {for (int i = 0; i < list.size(); i++) {//拿到集合里的每一个 id 加以判断Student stu = list.get(i);//因为是 比较引用数据类型里的内容 所以用equals()方法if (stu.getId().equals(id)) {return i;}}//没有找到 返回 -1return -1;}
}
User类
package com.mohuanan.student;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;}//set get 方法public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getPersonId() {return personId;}public void setPersonId(String personId) {this.personId = personId;}public String getPhoneNumber() {return phoneNumber;}public void setPhoneNumber(String phoneNumber) {this.phoneNumber = phoneNumber;}
}
App类
package com.mohuanan.student;import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;public class App {public static void main(String[] args) {//创建一个集合 存储User对象ArrayList<User> list = new ArrayList<>();//主菜单while (true) {System.out.println("欢迎来到学生管理系统");System.out.println("请选择操作1登录 2注册 3忘记密码 4退出");Scanner sc = new Scanner(System.in);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("没有这个选项");}}}//忘记密码private static void forgetPassword(ArrayList<User> list) {//键盘录入用户名Scanner sc = new Scanner(System.in);System.out.println("请输入您的用户名");String username = sc.next();boolean flag = checkUsername(username);if(!flag){//用户名不存在System.out.println("用户名"+username+"未注册");//直接结束方法return;}//用户名存在System.out.println("请输入您的身份证号");String personId = sc.next();System.out.println("请输入您的手机号码");String phoneNumber = sc.next();//判断用户名和手机号码是否一致//根据用户名找到他在集合里的索引int index = indexUsername(list,username);User u = list.get(index);if(u.getPersonId().equals(personId) && u.getPhoneNumber().equals(phoneNumber)){//一致System.out.println("请输入您修改的密码");String amendPassword = sc.next();//修改密码u.setPassword(amendPassword);System.out.println("修改成功");}else{//不一致System.out.println("账号信息不匹配,修改失败");}}//注册private static void register(ArrayList<User> list) {Scanner sc = new Scanner(System.in);//声明放在循环的外面String username;while (true) {System.out.println("请输入用户名");username = sc.next();//判断用户名的合法boolean flag1 = checkUsername(username);if (!flag1) {//不合法System.out.println("用户名不合法,请重新输入");continue;}//合法//判断用户名的唯一性int index = indexUsername(list, username);if (index >= 0) {System.out.println(username + "这个用户名已经存在,请重新输入");continue;} else {System.out.println(username + "这个用户名可用");break;}}//录入密码String fristPassword;while (true) {System.out.println("请输入第一次的密码");fristPassword = sc.next();System.out.println("请输入第二次的密码");String secondPassword = sc.next();if (fristPassword.equals(secondPassword)) {break;} else {//两次密码不一致System.out.println("两次密码不一致,请重新输入");continue;}}//验证身份证号String personId;while (true) {System.out.println("请输入身份证号");personId = sc.next();boolean flag = checkpersonId(personId);if (flag) {break;} else {System.out.println("身份证号格式不对,请重新输入");continue;}}//验证手机号码String phoneNumber;while (true) {System.out.println("请输入您的手机号码");phoneNumber = sc.next();boolean flag = checkPhoneNumber(phoneNumber);if (flag) {//合法的手机号码break;} else {System.out.println("手机号码的格式不合法,请重新输入");continue;}}//前面都验证成功//创建User对象User u = new User(username, fristPassword, personId, phoneNumber);//添加到集合里面list.add(u);//提示System.out.println("注册成功");}//验证手机号码private static boolean checkPhoneNumber(String phoneNumber) {//长度11if (phoneNumber.length() != 11) {return false;}//不能以0开头char c = phoneNumber.charAt(0);if (c == '0') {return false;}//必须都是数字for (int i = 0; i < phoneNumber.length(); i++) {//遍历 只要有一个不为数字 就返回falsechar t = phoneNumber.charAt(i);if (!(t >= '0' && t <= '9')) {return false;}}//最后都满足了return true;}//验证身份证号private static boolean checkpersonId(String personId) {if (personId.length() != 18) {return false;}//前面17位必须是数字 注意这里-1for (int i = 0; i < personId.length() - 1; i++) {//i 是索引char c = personId.charAt(i);//有一位不满足 就返回falseif (!(c >= '0' && c <= '9')) {return false;}}//最后一位可以是数字 x Xchar endChar = personId.charAt(personId.length() - 1);if ((endChar >= '0' && endChar <= '9') || (endChar == 'x') || (endChar == 'X')) {return true;} else {return false;}}//登录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();//判断用户名是否注册int index = indexUsername(list, username);if (index < 0) {System.out.println("用户名" + username + "未注册,请先注册");//结束return;}System.out.println("请输入您的密码");String password = sc.next();//判断验证码 每输入一次 验证码更新一次while (true) {String rightAuthCode = createAuthCode();System.out.println("正确的验证码: " + rightAuthCode);System.out.println("请输入验证码");String inputAuthCode = sc.next();//验证码不区分 大小写if (rightAuthCode.equalsIgnoreCase(inputAuthCode)) {//验证码正确break;} else {System.out.println("验证码错误,请重新输入");continue;}}//创建User对象 用于checkUserInfo();User u = new User(username, password, null, null);boolean flag = checkUserInfo(list, u);if (flag) {//用户名和密码正确System.out.println("登录成功");System.out.println("可以开始使用学生管理系统");//创建一个StudentSystem对象 以便去调用StudentSystemStudentSystem ss = new StudentSystem();//调用对象里的方法ss.startStudentSystem();break;}if (i == 2) {System.out.println("用户名为" + username + "已被锁定,请联系广西老板莫华南");//结束方法return;}System.out.println("密码或用户名错误,请重新输入,剩下"+(2-i)+"次机会");}}//判断用户名和密码private static boolean checkUserInfo(ArrayList<User> list, User u) {//找到username所对应的下标int index = indexUsername(list, u.getUsername());//使用index比较密码User newUser = list.get(index);if (newUser.getPassword().equals(u.getPassword()) && newUser.getUsername().equals(u.getUsername())) {//用户名和密码相同return true;} else {//用户名和密码不相同return false;}}//生成验证码private static String createAuthCode() {//创建一个集合 存储大小写字母ArrayList<Character> list = new ArrayList<>();//给集合赋值for (int i = 0; i < 26; i++) {//大写//强制转化为char类型list.add((char) ('A' + i));//小写//强制转化为char类型list.add((char) ('a' + i));}//创建Random对象Random r = new Random();//创建StringBuilder对象 用于字符串的拼接StringBuilder sb = new StringBuilder();//4个字母for (int i = 0; i < 4; i++) {//设置r的范围int index = r.nextInt(list.size());//添加到StringBuilder对象里sb.append(list.get(index));}//一个数字int num = r.nextInt(10);sb.append(num);//把数字随机插入//因为字符串是不可改变的 所以转化为字符数组 进行操作char[] arr = sb.toString().toCharArray();//将最后一个字符和随机的字符进行 交换int randomIndex = r.nextInt(arr.length);char temp = arr[arr.length - 1];arr[arr.length - 1] = arr[randomIndex];arr[randomIndex] = temp;//使用String里的构造方法(将字符数组转化为字符串)return new String(arr);}//验证用户名的合法性private static boolean checkUsername(String username) {//长度3-15if (!(username.length() >= 3 && username.length() <= 15)) {return false;}//只能是字母加数字的组合for (int i = 0; i < username.length(); i++) {char c = username.charAt(i);//有一个不满足就返回falseif (!((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9'))) {return false;}}//但是不能全是数字//统计字母的个数int count = 0;for (int i = 0; i < username.length(); i++) {//遍历拿到每一个 i: 索引char c = username.charAt(i);if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) {count++;//找到一个就退出break;}}return count > 0;}//用户名唯一private static int indexUsername(ArrayList<User> list, String username) {//遍历 判断for (int i = 0; i < list.size(); i++) {//拿到里面的每一个User对象User u = list.get(i);if (u.getUsername().equals(username)) {//存在这个用户名 返回对应的下标return i;}}//没有找到 则返回-1 因为索引都是>=0的return -1;}
}
代码解释:
学生管理系统
Student` 类
这是一个简单的Java Bean,包含了学生的基本信息:id
、name
、age
和address
,以及对应的构造方法和getter/setter方法。这些方法允许在其他类中访问和修改Student
对象的私有属性。
StudentSystem` 类
这个类是学生管理系统的核心,提供了一个文本界面供用户与系统交互,并实现了添加、删除、修改和查询学生的功能。
startStudentSystem
方法:显示主菜单,根据用户的输入选择不同的操作。使用了switch
语句来处理不同的选项,并用ArrayList<Student>
来存储学生信息。addStudent
方法:允许用户添加新的学生信息。首先检查学生ID的唯一性,如果ID已存在,则提示用户重新输入;否则,将新学生添加到列表中。deleteStudent
方法:通过学生ID来删除学生信息。如果找到了对应的ID,就从列表中删除该学生。amendStudent
方法:允许用户修改现有学生的信息。用户输入学生ID,如果找到了对应的学生,就允许修改其信息。queryStudent
方法:显示所有学生的信息。如果列表为空,则提示当前无学生信息。judgeStudentId
和indexStudentId
方法:辅助方法,用于检查学生ID的唯一性和获取学生ID在列表中的索引。
用户登录注册系统
User` 类
与Student
类似,这是一个简单的Java Bean,包含了用户的用户名、密码、身份证号和手机号码,以及对应的构造方法和getter/setter方法。
App` 类
这个类提供了用户登录注册系统的入口,实现了登录、注册、忘记密码和退出系统的功能。
login
方法:允许用户登录系统。用户需要输入用户名和密码,还有一个验证码的校验步骤。如果登录成功,用户将进入学生管理系统。register
方法:允许用户注册新账户。需要输入用户名、密码、身份证号和手机号码,并对这些信息进行格式和合法性校验。forgetPassword
方法:如果用户忘记了密码,可以通过验证身份证号和手机号码来重置密码。checkPhoneNumber
、checkpersonId
、checkUserInfo
、createAuthCode
、checkUsername
和indexUsername
方法:辅助方法,用于校验用户信息的合法性、生成验证码、检查用户名和密码的正确性等。
这个系统通过控制台输入和输出与用户交互,使用Scanner
类读取用户输入。整个系统通过在内存中的ArrayList
管理用户和学生信息,没有使用数据库。这意味着一旦程序停止运行,所有添加或修改的信息将会丢失。