案例需求:
针对目前我们的所学内容,完成一个综合案例:学生管理系统。该系统主要功能如下:
添加学生:通过键盘录入学生信息,添加到集合中
删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除
修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改
查看学生:将集合中的学生对象信息进行展示 退出系统:结束程序
实现步骤
- 定义学生类,包含以下成员变量
private String sid // 学生id
private String name // 学生姓名
private String age // 学生年龄
private String address // 学生所在地
2. 学生管理系统主界面的搭建步骤
循环完成功能结束后再次回到主界面
3. 学生管理系统的添加学生功能实现步骤
3.1 定义一个方法,接收ArrayList集合
3.2 方法内完成添加学生的功能
①键盘录入学生信息
②根据录入的信息创建学生对象
③将学生对象添加到集合中
④提示添加成功信息
3.3 在添加学生的选项里调用添加学生的方法
注意:id唯一
4. 学生管理系统的查看学生功能实现步骤
4.1 定义一个方法,接收ArrayList集合
4.2 方法内遍历集合,将学生信息进行输出
4.3 在查看所有学生选项里调用查看学生方法
注意:如果没有学生信息,提示:当前无学生信息,请添加后再查询
如果有学生信息,需要按照以下格式输出。(不用过于纠结对齐的问题)
5. 学生管理系统的删除学生功能实现步骤
5.1 定义一个方法,接收ArrayList集合
5.2 方法中接收要删除学生的学号
5.3 遍历集合,获取每个学生对象
5.4 使用学生对象的学号和录入的要删除的学号进行比较,如果相同,则将当前学生对象从集合中删除
5.5 在删除学生选项里调用删除学生的方法
注意:id存在删除
id不存在,需要提示不存在,并回到初始菜单
6. 学生管理系统的修改学生功能实现步骤
6.1 定义一个方法,接收ArrayList集合
6.2 方法中接收要修改学生的学号
6.3 通过键盘录入学生对象所需 的信息,并创建对象
6.4 遍历集合,获取每一个学生对象。并和录入的修改学生学号进行比较.如果相 同,则使用新学生对象替换当前学生对象
6.5 在修改学生选项里调用修改学生的方法
注意:id存在,继续录入其他信息
id不存在,需要提示不存在,并回到初始菜单
7. 退出系统
注意:不准使用静态全局变量的写法
-----------------欢迎来到百里半学生管理系统-------------------
1:添加学生
2:删除学生
3:修改学生
4:查询学生
5:退出
请输入您的选择:
4
当前无学生信息,请添加后再查询
-----------------欢迎来到百里半学生管理系统-------------------
1:添加学生
2:删除学生
3:修改学生
4:查询学生
5:退出
请输入您的选择:
1
请输入学生的id
1001
请输入学生的姓名
李帅
请输入学生的年龄
18
请输入学生的家庭住址
湖北武汉
学生信息添加成功
-----------------欢迎来到百里半学生管理系统-------------------
1:添加学生
2:删除学生
3:修改学生
4:查询学生
5:退出
请输入您的选择:
1
请输入学生的id
1001
id已经存在,请重新录入
请输入学生的id
1002
请输入学生的姓名
史帅
请输入学生的年龄
18
请输入学生的家庭住址
湖北武汉
学生信息添加成功
-----------------欢迎来到百里半学生管理系统-------------------
1:添加学生
2:删除学生
3:修改学生
4:查询学生
5:退出
请输入您的选择:
2
请输入要删除的id
1003
id不存在,删除失败,请重新输入
请输入要删除的id
1002
id为:1002的学生删除成功
-----------------欢迎来到百里半学生管理系统-------------------
1:添加学生
2:删除学生
3:修改学生
4:查询学生
5:退出
请输入您的选择:
4
id 姓名 年龄 家庭住址
1001 李帅 18 湖北武汉
-----------------欢迎来到百里半学生管理系统-------------------
1:添加学生
2:删除学生
3:修改学生
4:查询学生
5:退出
请输入您的选择:
3
请输入要修改学生的id
1004
要修改的id1004不存在,请重新输入
请输入要修改学生的id
1001
请输入要修改的学生姓名
真帅
请输入要修改的学生年龄
18
请输入要修改的学生家庭住址
湖北武汉
学生信息修改成功
-----------------欢迎来到百里半学生管理系统-------------------
1:添加学生
2:删除学生
3:修改学生
4:查询学生
5:退出
请输入您的选择:
4
id 姓名 年龄 家庭住址
1001 真帅 18 湖北武汉
-----------------欢迎来到百里半学生管理系统-------------------
1:添加学生
2:删除学生
3:修改学生
4:查询学生
5:退出
请输入您的选择:
5
退出
需求:
为学生管理系统书写一个登录、注册、忘记密码的功能。
只有用户登录成功之后,才能进入到学生管理系统中进行增删改查操作。
分析:
登录界面:
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
public class Student {
private String sid; // 学生id
private String name; // 学生姓名
private String age; // 学生年龄
private String address; // 学生所在地
public Student() {
}
public Student(String sid, String name, String age, String address) {
this.sid = sid;
this.name = name;
this.age = age;
this.address = address;
}
/**
* 获取
* @return sid
*/
public String getSid() {
return sid;
}
/**
* 设置
* @param sid
*/
public void setSid(String sid) {
this.sid = sid;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return age
*/
public String getAge() {
return age;
}
/**
* 设置
* @param age
*/
public void setAge(String age) {
this.age = age;
}
/**
* 获取
* @return address
*/
public String getAddress() {
return address;
}
/**
* 设置
* @param address
*/
public void setAddress(String address) {
this.address = address;
}
public String toString() {
return "Student{sid = " + sid + ", name = " + name + ", age = " + age + ", address = " + address + "}";
}
}
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class StudentTest {
public static int count = 0;
public static int acount = 0;
public static StringBuilder sb1 = new StringBuilder();
public static ArrayList<Admin> list1 = new ArrayList<Admin>();
public static ArrayList<Student> list = new ArrayList<Student>();
static Scanner sc = new Scanner(System.in);
public static int a;
public static int choose(int c){
while (!sc.hasNextInt()){
// sc.nextLine();
System.out.println("请输入整数");
sc.nextLine();
}
while (true){
a = sc.nextInt();
if (a < 1 || a >c){
System.out.println("请输入1-"+c+"的整数");
sc.nextLine();
}else
return a;
}
}
public static void add(){
list.add(new Student());
System.out.println("请输入学生id");
list.get(count).setSid(sc.next());
System.out.println("请输入学生姓名");
list.get(count).setName(sc.next());
System.out.println("请输入学生年龄");
list.get(count).setAge(sc.next());
System.out.println("请输入学生所在地");
list.get(count).setAddress(sc.next());
count++;
}
public static void show(){
if (list.isEmpty()){
System.out.println("库内无信息");
return;
}
System.out.println("id\t\t姓名\t\t年龄\t\t家庭住址");
for (int i = 0; i < list.size()-1; i++) {
for(int j = 0; j < list.size() - 1 - i; j++){
Student u1=list.get(j);
Student u2=list.get(j+1);
if(u1.getSid().compareTo(u2.getSid()) > 0){
list.set(j,u2);
list.set(j+1,u1);
}
}
}
// 遍历
for (Student s : list) {
System.out.println(s.getSid()+"\t\t"+s.getName()+"\t\t"+s.getAge()+"\t\t"+s.getAddress());
}
}
public static void delete(){
if (count == 0){
System.out.println("库内无信息");
return;
}
System.out.println("请输入要删除的学生id");
list.remove(choose(count) - 1);
System.out.println("删除成功");
count--;
show();
}
public static void edit(){
show();
if (list.isEmpty())
return;
System.out.println("请输入您需要修改的学生id");
int a = choose(count);
System.out.println("请输入学生id");
list.get(a - 1).setSid(sc.next());
System.out.println("请输入学生姓名");
list.get(a - 1).setName(sc.next());
System.out.println("请输入学生年龄");
list.get(a - 1).setAge(sc.next());
System.out.println("请输入学生所在地");
list.get(a - 1).setAddress(sc.next());
System.out.println("修改成功");
show();
}
public static void menu() {
while (true) {
System.out.println("1:添加学生\n" + "2:删除学生\n" + "3:修改学生\n" + "4:查询学生\n" + "5:退出\n" + "请输入您的选择:");
switch (choose(5)){
case 5-> {
LogIn();
}
case 1->add();
case 4->show();
case 2->delete();
case 3->edit();
}
}
}
public static StringBuilder verificationCode(){
/*Random r = new Random();
for (int i = 0; i < 5; i++) {
int num = r.nextInt(62);
String datas = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
sb.append(datas.charAt(num));
}
return sb;*/
Random r = new Random();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 4; i++) {
int num = r.nextInt(52);
String datas = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
sb.append(datas.charAt(num));
}
int num = r.nextInt(10);
sb.append(num);
// System.out.println(sb);
char[] arr = new char[5];
for (int i = 0; i < 5; i++) {
arr[i] = sb.charAt(i);
}
for (int i = 0; i < arr.length; i++) {
int index = r.nextInt(arr.length);
char temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
for (int i = 0; i < arr.length; i++) {
sb1.append(arr[i]);
}
return sb1;
}
public static void adminLogIn(){
if (acount == 0){
System.out.println("请注册");
signIn();
}
for (int j = 0; j < 3; j++) {
System.out.println("请输入用户名");
String as1 = sc.next();
System.out.println("请输入密码");
String as2 = sc.next();
System.out.println("请输入验证码");
System.out.println(verificationCode());
String ss = String.valueOf(sb1);
String as3 = sc.next();
for (int i = 0; i < list1.size(); i++) {
if (as1.equals(list1.get(i).getUsername()) && as2.equals(list1.get(i).getPassword()) && as3.equalsIgnoreCase(ss)) {
System.out.println("登录成功");
menu();
return;
}
}
System.out.println("请检查您的输入,还有"+(2 - j)+"次机会");
}
}
public static void userNameDetermination(String us){
int a = 0;
int b = 0;
int p = 0;
for (int i = 0; i < list1.size(); i++) {
if (us.equals(list1.get(i).getUsername())){
b++;
}
}
if (us.length() >= 3 && us.length() <= 15)
for (int i = 0; i < us.length(); i++) {
if ((us.charAt(i) >= 65 && us.charAt(i) <= 90 ) || (us.charAt(i) >= 97 && us.charAt(i) <= 122))
a = 1;
if (us.charAt(i) >= 48 && us.charAt(i) <= 57)
p++;
}
if (b != 1){
System.out.println("用户名已存在,请登录");
adminLogIn();
}else if (a == 1 && p != 0){
System.out.println("录入成功");
} else if (a == 0) {
System.out.println("用户名长度必须在3~15位之间 \n" + "只能是字母加数字的组合,但是不能是纯数字");
list1.get(acount).setUsername(sc.next());
userNameDetermination(list1.get(acount).getUsername());
}
}
public static void passwordAuthentication(String us){
System.out.println("请确定密码");
String ss = sc.next();
if (!ss.equals(us)){
System.out.println("输入前后不一致");
list1.get(acount).setPassword(sc.next());
passwordAuthentication(list1.get(acount).getPassword());
}
}
public static void idVerification(String us){
if (us.charAt(0) != '0' && us.length() == 18 && (us.charAt(17) == 'X' || (us.charAt(17) >= '0' && us.charAt(17) <= '9'))) {
for (int i = 0; i < 17; i++) {
if (us.charAt(i) > '9') {
System.out.println("输入错误重新输入");
list1.get(acount).setIdentityCardNumber(sc.next());
idVerification(list1.get(acount).getIdentityCardNumber());
}
}
System.out.println("录入成功");
}else {
System.out.println("输入错误重新输入");
list1.get(acount).setIdentityCardNumber(sc.next());
idVerification(list1.get(acount).getIdentityCardNumber());
}
}
public static void mobilePhoneNumberVerification(String us) {
if (us.charAt(0) != '0' && us.length() == 11) {
for (int i = 0; i < 11; i++) {
if (us.charAt(i) >= 48 && us.charAt(i) <= 57) {
}
else {
System.out.println("输入错误重新输入");
list1.get(acount).setMobilePhoneNumber(sc.next());
mobilePhoneNumberVerification(list1.get(acount).getMobilePhoneNumber());
}
}
System.out.println("录入成功");
}else {
System.out.println("输入错误重新输入");
list1.get(acount).setMobilePhoneNumber(sc.next());
mobilePhoneNumberVerification(list1.get(acount).getMobilePhoneNumber());
}
}
public static void signIn(){
list1.add(new Admin());
System.out.println("请输入用户名");
list1.get(acount).setUsername(sc.next());
userNameDetermination(list1.get(acount).getUsername());
System.out.println("请输入密码");
list1.get(acount).setPassword(sc.next());
passwordAuthentication(list1.get(acount).getPassword());
System.out.println("请输入身份证号码");
list1.get(acount).setIdentityCardNumber(sc.next());
idVerification(list1.get(acount).getIdentityCardNumber());
System.out.println("请输入手机号");
list1.get(acount).setMobilePhoneNumber(sc.next());
mobilePhoneNumberVerification(list1.get(acount).getMobilePhoneNumber());
acount++;
}
public static void forgotPassword(){
System.out.println("请输入用户名");
String s = sc.next();
String ssfz;
String ssjh;
for (int i = 0; i < list1.size(); i++) {
if (s.equals(list1.get(i).getUsername())){
System.out.println("请输入身份证号码");
ssfz = sc.next();
System.out.println("请输入手机号");
ssjh = sc.next();
if ((ssfz.equals(list1.get(i).getIdentityCardNumber() )&&( ssjh.equals(list1.get(i).getMobilePhoneNumber())))){
System.out.println("密码为:"+list1.get(i).getPassword());
System.out.println("请修改密码");
list1.get(i).setPassword(sc.next());
passwordAuthentication(list1.get(i).getPassword());
adminLogIn();
return;
}else
System.out.println("账号信息不匹配,修改失败。");
}
}
System.out.println("未注册");
signIn();
}
public static void LogIn(){
System.out.println("请选择操作:\n1登录 \n2注册 \n3忘记密码");
switch (choose(3)){
case 1->adminLogIn();
case 2->signIn();
case 3->forgotPassword();
}
}
public static void main(String[] args) {
System.out.println("-----------------欢迎来到百里半学生管理系统-------------------");
while (true){
LogIn();
}
}
}