您的位置:首页 > 房产 > 家装 > 义乌哪里做网站好_代理记账公司哪家好_seo优化排名教程百度技术_关于seo如何优化

义乌哪里做网站好_代理记账公司哪家好_seo优化排名教程百度技术_关于seo如何优化

2025/2/25 10:05:52 来源:https://blog.csdn.net/2301_80071187/article/details/145788298  浏览:    关键词:义乌哪里做网站好_代理记账公司哪家好_seo优化排名教程百度技术_关于seo如何优化
义乌哪里做网站好_代理记账公司哪家好_seo优化排名教程百度技术_关于seo如何优化

在这里插入图片描述
(以下内容全部来自上述课程)

1.要求及思路

1.总体框架

请添加图片描述

2.注册

请添加图片描述

3.登录

请添加图片描述

4.忘记密码

请添加图片描述

2.代码

1.javabean

public class User1 {private String username;private String password;private String personID;private String phoneNumber;public User1() {}public User1(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 "User1{username = " + username + ", password = " + password + ", personID = " + personID + ", phoneNumber = " + phoneNumber + "}";}
}

2.测试类

1.注册
1.检查用户名是否唯一
private static boolean checkUsernameIsExist(String username, ArrayList<User1> list) {//遍历集合,获取每一个用户名,和输入的用户名进行比较for (int i = 0; i < list.size(); i++) {User1 user = list.get(i);String name = user.getUsername();if (name.equals(username)) {return true;}}return false;}
2.检查用户名格式是否正确
 private static boolean checkUsername (String username){//用户名必须是3-15位的数字和字母int length = username.length();if (length < 3 || length > 15) {System.out.println("用户名必须是5-15位的数字和字母");return false;}//用户名必须是数字和字母组成int count = 0;for (int i = 0; i < username.length(); i++) {char c = username.charAt(i);if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {count++;break;}}//用户名满足要求return count > 0;}
3.检查身份证号格式是否正确
private static boolean checkPersonID(String personID) {//身份证号必须是18位的数字和字母int length = personID.length();if (length != 18) {System.out.println("身份证号必须是18位的数字和字母");return false;}//不能以0开头if (personID.startsWith("0")) {System.out.println("身份证号不能以0开头");return false;}//前17位必须是数字for (int i = 0; i < personID.length() - 1; i++) {char c = personID.charAt(i);if (!(c >= '0' && c <= '9')) {System.out.println("身份证号前17位必须是数字");return false;}}//最后一位可以是数字或者大写X或者小写xchar c = personID.charAt(personID.length() - 1);if ((c >= '0' && c <= '9') || (c == 'X') || (c =='x')) {return true;} else {return false;}}
4.检查手机格式是否正确
 private static boolean checkPhoneNumber(String phoneNumber) {//手机号必须是11位的数字int length = phoneNumber.length();if (length!= 11) {System.out.println("手机号必须是11位的数字");return false;}//不能以0开头if (phoneNumber.startsWith("0")) {System.out.println("手机号不能以0开头");return false;} else {return true;}}
5.注册完整代码
 //注册public static void register(ArrayList<User1> list) {System.out.println("注册");User1 user = new User1();//1.键盘录入用户名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;}//用户名格式正确,需要验证是否唯一boolean flag2 = checkUsernameIsExist(username, list);if (flag2) {//用户名已存在System.out.println("用户名"+username+"已经存在,请重新输入:");} else {//不存在,可用System.out.println("用户名"+username+"可以使用");}break;}//2.键盘录入密码String password ;while (true) {System.out.println("请输入密码:");password = sc.next();System.out.println("请再次输入密码:");String password2 = sc.next();if (password.equals(password2)) {System.out.println("密码输入正确");break;} else {System.out.println("密码输入错误,请重新输入:");continue;}}//3.键盘录入身份证号String personID ;while (true) {System.out.println("请输入身份证号:");personID = sc.next();boolean flag3 = checkPersonID(personID);if (flag3) {System.out.println("身份证号格式正确");break;} else {System.out.println("身份证号格式不正确,请重新输入:");continue;}}//4.键盘录入手机号String phoneNumber ;while (true) {System.out.println("请输入手机号:");phoneNumber = sc.next();boolean flag4 = checkPhoneNumber(phoneNumber);if (flag4) {System.out.println("手机号格式正确");break;} else {System.out.println("手机号格式不正确,请重新输入:");continue;}}//将用户对象添加到集合中User1 user1 = new User1(username, password, personID, phoneNumber);list.add(user1);System.out.println("注册成功");}
2.登录
1.检查用户名和密码是否正确
private static boolean checkUserInfo(User1 userInfo, ArrayList<User1> list) {//遍历集合,判断用户是否存在,如果不存在登陆失败for (int i = 0; i < list.size(); i++) {User1 user = list.get(i);if (user.getUsername().equals(userInfo.getUsername()) && user.getPassword().equals(userInfo.getPassword())) {return true;}}return false;}
2.生成随机验证码
public static String getRandomCode() {//1.创建一个集合添加所有的大写字母和小写字母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();//2.随机抽取4个字母Random r = new Random();String code = "";for (int i = 0; i < 4; i++) {//获取随机索引int index = r.nextInt(list.size());//获取随机字符char c = list.get(index);//添加到字符串中sb.append(c);}//3.把一个随机数字添加到末尾int number = r.nextInt(10);sb.append(number);//4.如果我们要修改字符串中的内容//先把字符串变成字符数组,在数组中修改,然后把字符数组变成字符串char[] chars = sb.toString().toCharArray();//拿着最后一个索引,跟随机索引进行交换int index2 = r.nextInt(chars.length);char temp = chars[index2];chars[index2] = chars[chars.length - 1];chars[chars.length - 1] = temp;//5.把字符数组变成字符串String result = new String(chars);return result;}
登录完整代码
private static void login(ArrayList<User1> list) {System.out.println("登录");Scanner sc = new Scanner(System.in);//1.键盘录入用户名while (true) {System.out.println("请输入用户名:");String username = sc.next();//判断用户名是否存在boolean result = checkUsernameIsExist(username, list);if (!result) {System.out.println("用户名"+username+"不存在,请先注册再登录");return;}//2.输入密码和验证码System.out.println("请输入密码:");String password = sc.next();while (true) {//输入验证码String rightcode = getRandomCode();System.out.println("验证码:"+rightcode);System.out.println("请输入验证码:");String code = sc.next();//比较验证码String randomCode = getRandomCode();if (code.equalsIgnoreCase(rightcode)) {System.out.println("验证码正确");break;} else {System.out.println("验证码错误");return;}}//3.判断用户名和密码是否正确//封装思想的应用://我们把一些零散的数据,封装成一个对象//以后传递参数的时候,只要传递一个整体就可以了,不需要管这些零散的数据User1 userInfo = new User1(username, password,null,null);if (checkUserInfo(userInfo, list)) {System.out.println("登录成功,欢迎使用学生管理系统");} else {System.out.println("用户名或密码错误");}}}
3.忘记密码
1.根据用户名和身份证号和手机号查找用户的索引
private static int findUserIndex(String username, ArrayList<User1> list) {for (int i = 0; i < list.size(); i++) {User1 user = list.get(i);if (user.getUsername().equals(username)) {return i;}}return -1;}
2.忘记密码整体代码
private static void forgetPassword(ArrayList<User1> list) {System.out.println("忘记密码");Scanner sc = new Scanner(System.in);System.out.println("请输入用户名:");String username = sc.next();boolean flag = checkUsernameIsExist(username, list);if (!flag) {System.out.println("用户名"+username+"不存在,请先注册再登录");return;}System.out.println("请输入身份证号:");String personID = sc.next();System.out.println("请输入手机号:");String phoneNumber = sc.next();//比较用户名和身份证号和手机号是否正确int index = findUserIndex(username, list);User1 user = list.get(index);if (user.getPhoneNumber().equals(phoneNumber) && user.getPersonID().equalsIgnoreCase(personID)) {System.out.println("用户名或身份证号或手机号错误");return;}//修改密码String password;while (true) {System.out.println("请输入新密码:");password = sc.next();System.out.println("请再次输入新密码:");String password2 = sc.next();if (password.equals(password2)) {System.out.println("两次密码一致,修改成功");break;} else {System.out.println("密码输入错误,请重新输入:");continue;}}//修改密码user.setPassword(password);System.out.println("密码修改成功");}

3.测试类完整代码

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;public class StudentUpdate {public static void main(String[] args) {//1.登录界面System.out.println("欢迎使用学生管理系统");System.out.println("请选择操作:1.登录 2.注册 3.忘记密码 4.退出");ArrayList<User1> list = new ArrayList<>();Scanner sc = new Scanner(System.in);String choose = sc.next();while (true) {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("输入有误");}//重新获取输入System.out.println("请选择操作:1.登录 2.注册 3.忘记密码 4.退出");choose = sc.next();}}//注册public static void register(ArrayList<User1> list) {System.out.println("注册");User1 user = new User1();//1.键盘录入用户名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;}//用户名格式正确,需要验证是否唯一boolean flag2 = checkUsernameIsExist(username, list);if (flag2) {//用户名已存在System.out.println("用户名"+username+"已经存在,请重新输入:");} else {//不存在,可用System.out.println("用户名"+username+"可以使用");}break;}//2.键盘录入密码String password ;while (true) {System.out.println("请输入密码:");password = sc.next();System.out.println("请再次输入密码:");String password2 = sc.next();if (password.equals(password2)) {System.out.println("密码输入正确");break;} else {System.out.println("密码输入错误,请重新输入:");continue;}}//3.键盘录入身份证号String personID ;while (true) {System.out.println("请输入身份证号:");personID = sc.next();boolean flag3 = checkPersonID(personID);if (flag3) {System.out.println("身份证号格式正确");break;} else {System.out.println("身份证号格式不正确,请重新输入:");continue;}}//4.键盘录入手机号String phoneNumber ;while (true) {System.out.println("请输入手机号:");phoneNumber = sc.next();boolean flag4 = checkPhoneNumber(phoneNumber);if (flag4) {System.out.println("手机号格式正确");break;} else {System.out.println("手机号格式不正确,请重新输入:");continue;}}//将用户对象添加到集合中User1 user1 = new User1(username, password, personID, phoneNumber);list.add(user1);System.out.println("注册成功");}//检查用户名格式是否正确private static boolean checkUsername (String username){//用户名必须是3-15位的数字和字母int length = username.length();if (length < 3 || length > 15) {System.out.println("用户名必须是5-15位的数字和字母");return false;}//用户名必须是数字和字母组成int count = 0;for (int i = 0; i < username.length(); i++) {char c = username.charAt(i);if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {count++;break;}}//用户名满足要求return count > 0;}//检查用户名是否唯一private static boolean checkUsernameIsExist(String username, ArrayList<User1> list) {//遍历集合,获取每一个用户名,和输入的用户名进行比较for (int i = 0; i < list.size(); i++) {User1 user = list.get(i);String name = user.getUsername();if (name.equals(username)) {return true;}}return false;}//检查身份证号格式是否正确private static boolean checkPersonID(String personID) {//身份证号必须是18位的数字和字母int length = personID.length();if (length != 18) {System.out.println("身份证号必须是18位的数字和字母");return false;}//不能以0开头if (personID.startsWith("0")) {System.out.println("身份证号不能以0开头");return false;}//前17位必须是数字for (int i = 0; i < personID.length() - 1; i++) {char c = personID.charAt(i);if (!(c >= '0' && c <= '9')) {System.out.println("身份证号前17位必须是数字");return false;}}//最后一位可以是数字或者大写X或者小写xchar c = personID.charAt(personID.length() - 1);if ((c >= '0' && c <= '9') || (c == 'X') || (c =='x')) {return true;} else {return false;}}//检查手机号格式是否正确private static boolean checkPhoneNumber(String phoneNumber) {//手机号必须是11位的数字int length = phoneNumber.length();if (length!= 11) {System.out.println("手机号必须是11位的数字");return false;}//不能以0开头if (phoneNumber.startsWith("0")) {System.out.println("手机号不能以0开头");return false;} else {return true;}}//登录private static void login(ArrayList<User1> list) {System.out.println("登录");Scanner sc = new Scanner(System.in);//1.键盘录入用户名while (true) {System.out.println("请输入用户名:");String username = sc.next();//判断用户名是否存在boolean result = checkUsernameIsExist(username, list);if (!result) {System.out.println("用户名"+username+"不存在,请先注册再登录");return;}//2.输入密码和验证码System.out.println("请输入密码:");String password = sc.next();while (true) {//输入验证码String rightcode = getRandomCode();System.out.println("验证码:"+rightcode);System.out.println("请输入验证码:");String code = sc.next();//比较验证码String randomCode = getRandomCode();if (code.equalsIgnoreCase(rightcode)) {System.out.println("验证码正确");break;} else {System.out.println("验证码错误");return;}}//3.判断用户名和密码是否正确//封装思想的应用://我们把一些零散的数据,封装成一个对象//以后传递参数的时候,只要传递一个整体就可以了,不需要管这些零散的数据User1 userInfo = new User1(username, password,null,null);if (checkUserInfo(userInfo, list)) {System.out.println("登录成功,欢迎使用学生管理系统");} else {System.out.println("用户名或密码错误");}}}//检查用户名和密码是否正确private static boolean checkUserInfo(User1 userInfo, ArrayList<User1> list) {//遍历集合,判断用户是否存在,如果不存在登陆失败for (int i = 0; i < list.size(); i++) {User1 user = list.get(i);if (user.getUsername().equals(userInfo.getUsername()) && user.getPassword().equals(userInfo.getPassword())) {return true;}}return false;}//生成随机验证码public static String getRandomCode() {//1.创建一个集合添加所有的大写字母和小写字母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();//2.随机抽取4个字母Random r = new Random();String code = "";for (int i = 0; i < 4; i++) {//获取随机索引int index = r.nextInt(list.size());//获取随机字符char c = list.get(index);//添加到字符串中sb.append(c);}//3.把一个随机数字添加到末尾int number = r.nextInt(10);sb.append(number);//4.如果我们要修改字符串中的内容//先把字符串变成字符数组,在数组中修改,然后把字符数组变成字符串char[] chars = sb.toString().toCharArray();//拿着最后一个索引,跟随机索引进行交换int index2 = r.nextInt(chars.length);char temp = chars[index2];chars[index2] = chars[chars.length - 1];chars[chars.length - 1] = temp;//5.把字符数组变成字符串String result = new String(chars);return result;}//忘记密码private static void forgetPassword(ArrayList<User1> list) {System.out.println("忘记密码");Scanner sc = new Scanner(System.in);System.out.println("请输入用户名:");String username = sc.next();boolean flag = checkUsernameIsExist(username, list);if (!flag) {System.out.println("用户名"+username+"不存在,请先注册再登录");return;}System.out.println("请输入身份证号:");String personID = sc.next();System.out.println("请输入手机号:");String phoneNumber = sc.next();//比较用户名和身份证号和手机号是否正确int index = findUserIndex(username, list);User1 user = list.get(index);if (user.getPhoneNumber().equals(phoneNumber) && user.getPersonID().equalsIgnoreCase(personID)) {System.out.println("用户名或身份证号或手机号错误");return;}//修改密码String password;while (true) {System.out.println("请输入新密码:");password = sc.next();System.out.println("请再次输入新密码:");String password2 = sc.next();if (password.equals(password2)) {System.out.println("两次密码一致,修改成功");break;} else {System.out.println("密码输入错误,请重新输入:");continue;}}//修改密码user.setPassword(password);System.out.println("密码修改成功");}//根据用户名和身份证号和手机号查找用户的索引private static int findUserIndex(String username, ArrayList<User1> list) {for (int i = 0; i < list.size(); i++) {User1 user = list.get(i);if (user.getUsername().equals(username)) {return i;}}return -1;}
}

3.总结思考

1.总体框架

这个其实比较好思考,switch直接分几个板块,然后再分别写方法类。
难的是具体代码的实现,需要用到的条件判断,关系语句,还有各种循环嵌套。
尤其是continue,break,return各自运用的时候。(是的,总踩坑。)
while(true)一定要记得break,否则下面的代码就会报错。(无法到达此语句)

2.具体细节

调用的API必须明白同类不同名之间的不同,比如equals和另外一个不区分大小写的。
心里必须清楚自己所命名的各个变量表示的真实含义,比较做判断的时候避免误用。
条件语句中,重要的是字符之间的表现形式:都是数字,必须有字母,大小写什么的。
结束后能重新输入,就需要用到while(true)。
循环结束后才能进行判断的,需要在循环外返回。
flag作为判断值,要自己弄明白true和false各具体代表什么,不同板块需要换不同的名称表示判断值。
还有,方法类中不要加输出语句。(痛)

3.最后

总之就是多动脑。
写不出来就画个图,然后想想每个变量之间的联系。
每个代码块感觉可以变成简单的算法题,所以又拆开复制了一遍。
其实每个大的系统都是由这种基础的代码块拼凑成的。
(终于搞完了,谢天谢地)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com