第七次实验课代码
添加C04~C07
This commit is contained in:
11
C07 StaticAndEnum/C07 StaticAndEnum.iml
Normal file
11
C07 StaticAndEnum/C07 StaticAndEnum.iml
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
52
C07 StaticAndEnum/src/CaptchaUtils.java
Normal file
52
C07 StaticAndEnum/src/CaptchaUtils.java
Normal file
@@ -0,0 +1,52 @@
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 验证码工具类
|
||||
*/
|
||||
public class CaptchaUtils { // final修饰类:不能被继承
|
||||
// 【任务1】静态常量:字符集(全局固定)
|
||||
static final String CHAR_SET="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||
|
||||
// 【任务2】静态常量:验证码长度(全局固定)
|
||||
static final int CAPTCHA_LENGTH=4;
|
||||
|
||||
// 【任务3】私有构造方法:禁止创建实例(工具类无需实例化)
|
||||
private CaptchaUtils(){
|
||||
}
|
||||
|
||||
/**
|
||||
* 【任务4】
|
||||
* 静态方法:generateCaptcha 生成随机验证码
|
||||
* @return String 返回生成的随机验证码字符串
|
||||
*/
|
||||
public static String generateCaptcha(){
|
||||
Random random = new Random();
|
||||
//生成随机验证码
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for(int i=0;i<CAPTCHA_LENGTH;i++){
|
||||
//生成随机数索引
|
||||
int index = random.nextInt(CHAR_SET.length());
|
||||
//根据索引获取随机字符
|
||||
sb.append(CHAR_SET.charAt(index));
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
/**
|
||||
* 【任务5】
|
||||
* 静态方法:verifyCaptcha 验证验证码
|
||||
* @param inputCaptcha 用户输入的验证码
|
||||
* @param systemCaptcha 系统生成的验证码
|
||||
* @return boolean 验证结果,true表示验证通过,false表示验证失败
|
||||
*/
|
||||
public static boolean verifyCaptcha(String inputCaptcha,String systemCaptcha){
|
||||
return inputCaptcha.equalsIgnoreCase(systemCaptcha);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
for(int i=0;i<10;i++)
|
||||
System.out.println(generateCaptcha());
|
||||
|
||||
System.out.println(CaptchaUtils.verifyCaptcha(generateCaptcha(), generateCaptcha()));
|
||||
}
|
||||
|
||||
}
|
||||
72
C07 StaticAndEnum/src/LoginStatus.java
Normal file
72
C07 StaticAndEnum/src/LoginStatus.java
Normal file
@@ -0,0 +1,72 @@
|
||||
/**
|
||||
* 登录状态枚举类
|
||||
* 用final保证状态信息不可变,用static提供工具方法
|
||||
*/
|
||||
public enum LoginStatus {
|
||||
// 【任务3】枚举实例:状态码和描述
|
||||
// 成功登录
|
||||
SUCCESS(200,"登录成功"),
|
||||
// 密码错误
|
||||
PASSWORD_ERROR(901,"密码错误"),
|
||||
// 验证码错误
|
||||
CAPTCHA_ERROR(902,"验证码错误"),
|
||||
// 用户不存在
|
||||
USER_NOT_FOUND(903,"用户不存在");
|
||||
|
||||
|
||||
|
||||
// 【任务1】定义 final修饰的属性:确保状态信息不可修改
|
||||
private final int code;
|
||||
private final String msg;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 【任务2】
|
||||
* 构造函数,用于创建LoginStatus实例
|
||||
* @param code 状态码
|
||||
* @param msg 状态消息
|
||||
*/
|
||||
LoginStatus(int code, String msg) {
|
||||
this.code = code;
|
||||
this.msg = msg;
|
||||
}
|
||||
|
||||
// 静态方法:根据状态码获取枚举实例(static工具方法)
|
||||
/**
|
||||
* 【任务4】
|
||||
* 静态方法: getByCode 根据状态码获取对应的登录状态枚举值
|
||||
* @param code 状态码
|
||||
* @return LoginStatus 对应的LoginStatus枚举值,如果找不到匹配的状态码则返回null
|
||||
*/
|
||||
public static LoginStatus getByCode(int code){
|
||||
for(LoginStatus status:values()){
|
||||
if(status.code==code){
|
||||
return status;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// getter方法(final属性无需setter)
|
||||
/**
|
||||
* 【任务5】
|
||||
* 方法: getCode 获取code值
|
||||
*
|
||||
* @return int code值
|
||||
*/
|
||||
public int getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
/**
|
||||
* 任务【6】
|
||||
* 方法: getMsg 获取消息内容
|
||||
*
|
||||
* @return String 返回当前对象的消息字符串
|
||||
*/
|
||||
public String getMsg() {
|
||||
return msg;
|
||||
}
|
||||
}
|
||||
|
||||
55
C07 StaticAndEnum/src/Test.java
Normal file
55
C07 StaticAndEnum/src/Test.java
Normal file
@@ -0,0 +1,55 @@
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Test {
|
||||
public static void main(String[] args) {
|
||||
Scanner scanner = new Scanner(System.in);
|
||||
while (true) {
|
||||
// 1. 生成验证码并展示
|
||||
String systemCaptcha = CaptchaUtils.generateCaptcha(); // 调用静态方法
|
||||
System.out.println("【登录】验证码:" + systemCaptcha);
|
||||
|
||||
// 2. 输入用户信息
|
||||
System.out.print("请输入用户名:");
|
||||
String username = scanner.nextLine();
|
||||
System.out.print("请输入密码:");
|
||||
String password = scanner.nextLine();
|
||||
System.out.print("请输入验证码:");
|
||||
String inputCaptcha = scanner.nextLine();
|
||||
|
||||
// 3. 验证登录(模拟业务逻辑)
|
||||
LoginStatus status = checkLogin(username, password, inputCaptcha, systemCaptcha);
|
||||
|
||||
// 4. 【任务2】输出登录结果:打印具体的登录结果和状态码
|
||||
System.out.println("\n登录结果:" + status.getMsg() + "(状态码:" + status.getCode() + ")");
|
||||
System.out.println("===================================\n");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 【任务1】
|
||||
* 静态方法: checkLogin 模拟登录验证逻辑
|
||||
* @param String username 用户名
|
||||
* @param String password 密码
|
||||
* @param String inputCaptcha 用户输入的验证码
|
||||
* @param String systemCaptcha 系统生成的验证码
|
||||
* @return LoginStatus 登录状态枚举,表示验证结果
|
||||
*/
|
||||
|
||||
public static LoginStatus checkLogin(String username, String password, String inputCaptcha, String systemCaptcha) {
|
||||
//admin 123456
|
||||
// 1.校验验证码是否正确
|
||||
if (!CaptchaUtils.verifyCaptcha(inputCaptcha, systemCaptcha)) {
|
||||
return LoginStatus.CAPTCHA_ERROR;
|
||||
}
|
||||
// 2.校验用户名是否正确
|
||||
if(!username.equals("admin")){
|
||||
return LoginStatus.USER_NOT_FOUND;
|
||||
}
|
||||
// 3.校验密码是否正确
|
||||
if(!password.equals("123456")){
|
||||
return LoginStatus.PASSWORD_ERROR;
|
||||
}
|
||||
// 如果以上验证都通过,返回成功状态
|
||||
return LoginStatus.SUCCESS;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user