目录
一、分包概况:
二、USER包
1.AMain类:主函数所在
2.User类:构造账号属性
3.PasswordOperate包:用于登录,注册,修改密码,查看账号操作
(1)Login类:登录类
(2)Register类:注册类
(3)RevisePassword类:修改密码类
(4)ShowPassword类:查看密码类
4.Console包:放用户操作台和管理员操作台
(1)ConsoleAdministrators类 :管理员操作台
(2)ConsoleUser类:用户操作台
5.Face包:界面包,编辑各个界面
(1)FaceLogon类:登录界面
(2)FaceAdministrators类:管理员操作台界面
(3)FaceUser类:用户操作台界面:
三、OPERATE包
1.Add类:
2.Delete类:
3.Revise类:
4.Seek类:
5.Show类:
四、STUDENT包
五、运行结果
一、分包概况:
二、USER包
1.AMain类:主函数所在
package USERS;
import java.util.ArrayList;
import java.util.Scanner;
import USERS.Face.*;
import USERS.PasswordOperate.*;
public class AMain {//主函数
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
ArrayList<User> list = new ArrayList<>();//储存账号密码的集合
list.add(new User("康茹", "20021127"));
list.add(new User("小白", "12345678"));
//初始化账号密码,以便于待会的登录操作
FaceLogon.menu();//打印登录界面,调用FaceLogon中的menu方法
while (true) {
System.out.println("请输入您的选择:");
String num = in.next();
switch (num) {
case "1":
Register.register(list);//跳到注册页面
break;
case "2":
Login.login(list);//跳到登录页面
break;
case "3":
RevisePassword.revisePassword(list);//忘记密码,重置密码
break;
case "4":
ShowPassword.showPassword(list);//查看账号信息
break;
case "5":
System.out.println("感谢你的使用!");//退出操作
System.exit(0);
default:
System.out.println("无此操作!");//无此操作
break;
}
}
}
}
2.User类:构造账号属性
package USERS;
public class User {//构造账号的属性
private String username;//用户名
private String password;//密码
public void setUsername(String username) {
this.username = username;
}
public String getUsername() {
return username;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return password;
}
public User() {
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
}
3.PasswordOperate包:用于登录,注册,修改密码,查看账号操作
(1)Login类:登录类
package USERS.PasswordOperate;
import java.util.ArrayList;
import java.util.Scanner;//调用输入包
import USERS.User;
import USERS.Console.ConsoleAdministrators;
import USERS.Console.ConsoleUser;
public class Login {
public static void login(ArrayList<User> list) {
Scanner in = new Scanner(System.in);
for (int i = 0; i < 3; i++) {
System.out.println("请输入用户名:");
String username = in.next();
// 判断用户名是否已经注册
int index = getIndex(list, username);//调用getIndex方法遍历账号数组
if (index == -1) {
System.out.println("该用户名未注册!");
return;
}
System.out.println("请输入密码:");
String password = in.next();
// 验证用户名和密码是否正确
User user = new User(username, password);
boolean flag = checkNameAndPwd(list, user);
if (!flag) {
if (i == 2) {
System.out.println("当前账号被锁定!");
} else {
System.out.println("登录失败,用户名或密码错误,您还有" + (2 - i) + "次机会!");
}
} else {
while (true) {
System.out.println("请输入你的身份:1.管理员 2.用户");
String id = in.next();
if (id.equals("1")) {
System.out.println("请输入管理员密钥:");
while (true) {
int key = in.nextInt();
if (key == 123456) {
ConsoleAdministrators.console();
} else {
System.out.println("密钥错误,请重新输入:");
}
}
} // 登录成功,跳转到控制台
else if (id.equals("2")) {
ConsoleUser.console();
} else {
System.out.println("输入错误,请重新输入:");
}
}
}
}
}
// 验证用户名和密码
public static boolean checkNameAndPwd(ArrayList<User> list, User userInfo) {
for (int i = 0; i < list.size(); i++) {
User user = list.get(i);
if (user.getUsername().equals(userInfo.getUsername())
&& user.getPassword().equals(userInfo.getPassword())) {
return true;
}
}
return false;
}
// 遍历数组,判断用户是否存在
private static int getIndex(ArrayList<User> list, String username) {
for (int i = 0; i < list.size(); i++) {
boolean flag = list.get(i).getUsername().equals(username);
if (flag) {
return i;
}
}
return -1;
}
}
(2)Register类:注册类
package USERS.PasswordOperate;
import java.util.ArrayList;
import java.util.Scanner;
import USERS.User;
public class Register {
public static void register(ArrayList<User> list) {
Scanner in = new Scanner(System.in);
// 键盘录入用户名
String username;
while (true) {
System.out.println("请输入用户名:");
username = in.next();
boolean flag = contains(list, username);// 判断是否唯一
if (flag) {
System.out.println("用户名已存在,请重新输入:");
} else {
System.out.println("用户名:(" + username + ")可用");
break;
}
}
// 键盘录入密码
String password;
while (true) {
System.out.println("请输入密码:");
password = in.next();
System.out.println("请确认密码:");
String password2 = in.next();
if (password.equals(password2)) {
System.out.println("两次密码一致!");
break;
} else {
System.out.println("两次密码输入不一致,请重新输入:");
}
}
User user = new User(username, password);
list.add(user);
System.out.println("注册成功!");
}
// 判断用户名是否唯一
private static boolean contains(ArrayList<User> list, String username) {
return getIndex(list, username) >= 0;
}
// 遍历数组,判断用户是否存在
private static int getIndex(ArrayList<User> list, String username) {
for (int i = 0; i < list.size(); i++) {
boolean flag = list.get(i).getUsername().equals(username);
if (flag) {
return i;
}
}
return -1;
}
}
(3)RevisePassword类:修改密码类
package USERS.PasswordOperate;
import java.util.ArrayList;
import java.util.Scanner;
import USERS.User;
public class RevisePassword {
public static void revisePassword(ArrayList<User> list) {
Scanner in = new Scanner(System.in);
System.out.println("请输入用户名:");
String username = in.next();
int index = getIndex(list, username);
if (index == -1) {
System.out.println("当前用户名未被注册!");
return;
}
User user = list.get(index);// 获取要修改的用户对象
String password;
while (true) {
System.out.println("请输入新的密码:");
password = in.next();
System.out.println("请确认新的密码:");
String password2 = in.next();
if (password.equals(password2)) {
break;
} else {
System.out.println("两次密码不一致,请重新输入!");
}
}
user.setPassword(password);
System.out.println("修改成功!");
}
// 获取用户对象对应的索引,判断用户是否存在
private static int getIndex(ArrayList<User> list, String username) {
for (int i = 0; i < list.size(); i++) {
boolean flag = list.get(i).getUsername().equals(username);
if (flag) {
return i;
}
}
return -1;
}
}
(4)ShowPassword类:查看密码类
package USERS.PasswordOperate;
import java.util.ArrayList;
import java.util.Scanner;
import USERS.User;
public class ShowPassword {
public static void showPassword(ArrayList<User> list) {
Scanner in = new Scanner(System.in);
System.out.println("此功能为管理员权限,请输入管理员密码:");
int password = in.nextInt();
if (password == 123456) {
System.out.println("密码正确!");
for (int i = 0; i < list.size(); i++) {
User user = list.get(i);
System.out.println("账号:" + user.getUsername() + " 密码:" + user.getPassword());
}
return;
} else {
System.out.println("密码错误!");
return;
}
}
}
4.Console包:放用户操作台和管理员操作台
(1)ConsoleAdministrators类 :管理员操作台
package USERS.Console;
import java.util.ArrayList;
import java.util.Scanner;//调用输入包
import OPERATE.*;
import STUDENT.Student;
import USERS.Face.*;
public class ConsoleAdministrators {//管理员控制台
public static void console() {
Scanner in = new Scanner(System.in);
FaceAdministrators.menu();
ArrayList<Student> list2 = new ArrayList<Student>();
while (true) {
System.out.println("请选择需要进行的操作:");
int num = in.nextInt();
switch (num) {
case 1:
Add.addStudent(list2);// 增加操作,传入list动态数组
break;
case 2:
Delete.deleteStudent(list2);// 删除操作,传入list动态数组
break;
case 3:
Revise.reviseStudent(list2);// 修改操作,传入list动态数组
break;
case 4:
Seek.findStudent(list2);// 查找操作,传入list动态数组
break;
case 5:
Show.showStudent(list2);// 展示操作,传入list动态数组
break;
case 6:
System.out.println("感谢你的使用!");
System.exit(0);
}
System.out.println("1.增加 2.删除 3.修改 4.查询 5.展示 6.退出");// 方便下一步知晓操作
}
}
}
(2)ConsoleUser类:用户操作台
package USERS.Console;
import java.util.ArrayList;
import java.util.Scanner;//调用输入包
import OPERATE.*;
import STUDENT.Student;
import USERS.Face.*;
public class ConsoleAdministrators {//管理员控制台
public static void console() {
Scanner in = new Scanner(System.in);
FaceAdministrators.menu();
ArrayList<Student> list2 = new ArrayList<Student>();
while (true) {
System.out.println("请选择需要进行的操作:");
int num = in.nextInt();
switch (num) {
case 1:
Add.addStudent(list2);// 增加操作,传入list动态数组
break;
case 2:
Delete.deleteStudent(list2);// 删除操作,传入list动态数组
break;
case 3:
Revise.reviseStudent(list2);// 修改操作,传入list动态数组
break;
case 4:
Seek.findStudent(list2);// 查找操作,传入list动态数组
break;
case 5:
Show.showStudent(list2);// 展示操作,传入list动态数组
break;
case 6:
System.out.println("感谢你的使用!");
System.exit(0);
}
System.out.println("1.增加 2.删除 3.修改 4.查询 5.展示 6.退出");// 方便下一步知晓操作
}
}
}
5.Face包:界面包,编辑各个界面
(1)FaceLogon类:登录界面
package USERS.Face;
public class FaceLogon {
public static void menu() {
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("-------------------------------------");
}
}
(2)FaceAdministrators类:管理员操作台界面
package USERS.Face;
public class FaceAdministrators {
public static void menu() {
System.out.println("欢迎来到学生成绩管理系统!");
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("******6.退出生成绩管理系统");
}
}
(3)FaceUser类:用户操作台界面:
package USERS.Face;
public class FaceUser {
public static void menu() {
System.out.println("欢迎来到学生成绩管理系统!");
System.out.println("****请选择所需要的操作****");
System.out.println("******1.查询学生信息******");
System.out.println("******2.退出生成绩管理系统");
}
}
三、OPERATE包
1.Add类:
package OPERATE;
import java.util.ArrayList;
import java.util.Scanner;
import STUDENT.Student;//导入STUDENT包中的Student文件
public class Add {
public static void addStudent(ArrayList<Student> list) {
Scanner in = new Scanner(System.in);
System.out.println("请输入要添加的学生学号");
String id = in.nextLine();
System.out.println("请输入要添加的学生姓名");
String name = in.nextLine();
System.out.println("请输入要添加的学生成绩");
double score = in.nextDouble();
Student student = new Student(id, name, score);//采用有参构造赋值
list.add(student);
System.out.println("添加成功!");
}
}
2.Delete类:
package OPERATE;
import java.util.ArrayList;
import java.util.Scanner;
import STUDENT.Student;//导入STUDENT包中的Student文件
public class Delete {
public static void deleteStudent(ArrayList<Student> list) {
Scanner in = new Scanner(System.in);
System.out.println("请输入你要删除的学生学号");
String id = in.next();
for (int i = 0; i < list.size(); i++) {// 遍历动态数组
if (list.get(i).getId().equals(id)) {
list.remove(i);
}
}
System.out.println("删除成功!");
}
}
3.Revise类:
package OPERATE;
import java.util.ArrayList;
import java.util.Scanner;
import STUDENT.Student;//导入STUDENT包中的Student文件
public class Revise {
public static void reviseStudent(ArrayList<Student> list) {
Scanner in = new Scanner(System.in);
System.out.println("请输入要修改学生学号");
String id = in.next();
System.out.println("请输入学生的新姓名");
String name = in.next();
System.out.println("请输入学生的新成绩");
double score = in.nextDouble();
Student student = new Student(id, name, score);
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getId().equals(id)) {
list.set(i, student);
break;
}
}
System.out.println("修改成功!");
}
}
4.Seek类:
package OPERATE;
import java.util.ArrayList;
import java.util.Scanner;
import STUDENT.Student;//导入STUDENT包中的Student文件
public class Seek {
public static void findStudent(ArrayList<Student> list) {
Scanner in = new Scanner(System.in);
System.out.println("请输入你要查找的学生学号");
String id = in.next();
for (int i = 0; i < list.size(); i++) {// 遍历动态数组
if (list.get(i).getId().equals(id)) {
System.out.println("查询成功!");
System.out.println("该学生学号:" + list.get(i).getId() + " 该学生名字:" + list.get(i).getName() + " 该学生成绩:"
+ list.get(i).getScore());
}
}
}
}
5.Show类:
package OPERATE;
import java.util.ArrayList;
import STUDENT.Student;//导入STUDENT包中的Student文件
public class Show {
public static void showStudent(ArrayList<Student> list) {
System.out.println("查询成功!");
for (int i = 0; i < list.size(); i++) {// 遍历动态数组
System.out.println(
"学号:" + list.get(i).getId() + " 姓名:" + list.get(i).getName() + " 成绩" + list.get(i).getScore());
}
System.out.println("一共有 " + list.size() + " 个学生信息");
}
}
四、STUDENT包
package STUDENT;
public class Student {
String id;
String name;
double score;
public Student() {
}
public Student(String id, String name, double score) {
this.id = id;
this.name = name;
this.score = score;
}
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 double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
}
五、运行结果
/*
* 运行结果
* ----------欢迎来到登录界面-----------
* 1. 用户注册 *
* 2. 用户登录 *
* 3. 忘记密码 *
* 4. 查看账号信息 *
* 5. 退出系统 *
* -------------------------------------
* 请输入您的选择:
* 1
* 请输入用户名:
* 康茹
* 用户名已存在,请重新输入:
* 请输入用户名:
* 张三
* 用户名:(张三)可用
* 请输入密码:
* 123456
* 请确认密码:
* 123456
* 两次密码一致!
* 注册成功!
* 请输入您的选择:
* 1
* 请输入用户名:
* 张三
* 用户名已存在,请重新输入:
* 请输入用户名:
* 李四
* 用户名:(李四)可用
* 请输入密码:
* 123456
* 请确认密码:
* 123456
* 两次密码一致!
* 注册成功!
* 请输入您的选择:
* 4
* 此功能为管理员权限,请输入管理员密码:
* 123456
* 密码正确!
* 账号:康茹 密码:20021127
* 账号:小白 密码:12345678
* 账号:张三 密码:123456
* 账号:李四 密码:123456
* 请输入您的选择:
* 2
* 请输入用户名:
* 康茹
* 请输入密码:
* 20021127
* 请输入你的身份:1.管理员 2.用户
* 1
* 请输入管理员密钥:
* 123456
* 欢迎来到学生成绩管理系统!
**** 请选择所需要的操作****
****** 1.添加学生信息******
****** 2.删除学生信息******
****** 3.修改学生信息******
****** 4.查询学生信息******
****** 5.显示学生信息******
****** 6.退出生成绩管理系统
* 请选择需要进行的操作:
* 1
* 请输入要添加的学生学号
* 2022400001
* 请输入要添加的学生姓名
* 康茹
* 请输入要添加的学生成绩
* 520
* 添加成功!
* 1.增加 2.删除 3.修改 4.查询 5.展示 6.退出
* 请选择需要进行的操作:
* 5
* 查询成功!
* 学号:2022400001 姓名:康茹 成绩520.0
* 一共有 1 个学生信息
* 1.增加 2.删除 3.修改 4.查询 5.展示 6.退出
* 请选择需要进行的操作:
* 4
* 请输入你要查找的学生学号
* 2022400001
* 查询成功!
* 该学生学号:2022400001 该学生名字:康茹 该学生成绩:520.0
* 1.增加 2.删除 3.修改 4.查询 5.展示 6.退出
* 请选择需要进行的操作:
* 6
* 感谢你的使用!
*/