• 【Java】学生管理系统-登录、注册、CRUD(附完整代码)


    代码

    1. public class Student {
    2. private String id;
    3. private String name;
    4. private int age;
    5. private String address;
    6. public Student() {
    7. }
    8. public Student(String id, String name, int age, String address) {
    9. this.id = id;
    10. this.name = name;
    11. this.age = age;
    12. this.address = address;
    13. }
    14. public String getId() {
    15. return id;
    16. }
    17. public void setId(String id) {
    18. this.id = id;
    19. }
    20. public String getName() {
    21. return name;
    22. }
    23. public void setName(String name) {
    24. this.name = name;
    25. }
    26. public int getAge() {
    27. return age;
    28. }
    29. public void setAge(int age) {
    30. this.age = age;
    31. }
    32. public String getAddress() {
    33. return address;
    34. }
    35. public void setAddress(String address) {
    36. this.address = address;
    37. }
    38. }
    1. import java.util.ArrayList;
    2. import java.util.Random;
    3. import java.util.Scanner;
    4. public class App {
    5. public static void main(String[] args) {
    6. ArrayList user = new ArrayList<>();
    7. System.out.println("录入数据中...");
    8. User u1 = new User("zhangsan", "123", "610302195607011642", "13669125183");
    9. User u2 = new User("lisi", "456", "620502196006248385", "13363222321");
    10. User u3 = new User("wangwu", "789", "512731188706034846", "13765642332");
    11. User u4 = new User("zhaoliu", "123456", "140725184710194731", "13464323579");
    12. user.add(u1);
    13. user.add(u2);
    14. user.add(u3);
    15. user.add(u4);
    16. System.out.println("录入完毕");
    17. String username;
    18. String password;
    19. String id;
    20. String phoneNumber;
    21. Scanner sc1 = new Scanner(System.in);
    22. while (true) {
    23. System.out.println("欢迎来到学生管理系统");
    24. System.out.println("请选择操作1登录 2注册 3忘记密码");
    25. int select = sc1.nextInt();
    26. switch (select) {
    27. case 1:
    28. while (true) {
    29. System.out.println("登录");
    30. System.out.println("请输入用户名:(输入-1,则返回登录界面)");
    31. username = sc1.next();
    32. if (username.equals("-1")) {
    33. break;
    34. }
    35. if (login(username, user)) {
    36. System.out.println("登录成功");
    37. // StudentSytstem studentSytstem = new StudentSytstem();
    38. StudentSytstem.start();
    39. // showAll(user);
    40. break;
    41. } else {
    42. System.out.println("登录失败");
    43. System.out.println("-----------------------------------------");
    44. }
    45. }
    46. break;
    47. case 2:
    48. while (true) {
    49. System.out.println("注册");
    50. System.out.println("请输入用户名:(输入-1,则返回登录界面)");
    51. username = sc1.next();
    52. if (!usernameRule(username)) {
    53. System.out.println("username格式错误");
    54. System.out.println("用户名唯一" + "\n" +
    55. "用户名长度必须在3~15位之间" + "\n" +
    56. "只能是字母加数字的组合,但是不能是纯数字");
    57. System.out.println("-----------------------------------------");
    58. continue;
    59. }
    60. if (username.equals("-1")) {
    61. break;
    62. }
    63. if (register(username, user)) {
    64. System.out.println("注册成功");
    65. printList(user);
    66. System.out.println("-----------------------------------------");
    67. break;
    68. } else {
    69. System.out.println("删除失败");
    70. System.out.println("-----------------------------------------");
    71. }
    72. }
    73. break;
    74. case 3:
    75. while(true) {
    76. System.out.println("忘记密码");
    77. System.out.println("请输入username:(输入-1,则返回登录界面)");
    78. username = sc1.next();
    79. if (username.equals("-1")) {
    80. break;
    81. }
    82. if(forgetPassword(username, user)) {
    83. System.out.println("修改成功");
    84. System.out.println("-----------------------------------------");
    85. break;
    86. } else {
    87. System.out.println("修改失败");
    88. System.out.println("-----------------------------------------");
    89. }
    90. }
    91. break;
    92. case 4:
    93. System.out.println("谢谢使用,再见!");
    94. System.exit(0);
    95. break;
    96. default:
    97. System.out.println("没有这个选项");
    98. break;
    99. }
    100. }
    101. }
    102. private static void printList(ArrayList user) {
    103. System.out.println(String.format(
    104. String.format("%-16s |", "姓名") +
    105. String.format("%-8s |", "密码") +
    106. String.format("%-18s |", "身份证号") +
    107. String.format("%-8s |", "手机号码")));
    108. for (int i = 0; i < user.size(); i++) {
    109. System.out.print(String.format("%-16s |", user.get(i).getUsername()));
    110. System.out.print(String.format("%-8s |", user.get(i).getPassword()));
    111. System.out.print(String.format("%-18s |", user.get(i).getId()));
    112. System.out.print(String.format("%-8s |", user.get(i).getPhoneNumber()));
    113. System.out.println();
    114. }
    115. }
    116. public static boolean login(String username, ArrayList user) {
    117. Scanner sc2 = new Scanner(System.in);
    118. /*
    119. * // 生成四位随机数字的验证码,取消注释
    120. * Random random = new Random();
    121. * int randomNumber = random.nextInt(9000) + 1000;
    122. */
    123. for (int i = 0; i < user.size(); i++) {
    124. if (username.equals(user.get(i).getUsername())){
    125. System.out.println("请输入密码:");
    126. String password = sc2.next();
    127. // 生成四位随机数字的验证码,替换下一行代码
    128. // String generate_code = String.valueOf(randomNumber);
    129. String generate_code = getCode();
    130. System.out.println("验证码为:" + generate_code);
    131. System.out.println("请输入验证码:");
    132. String code = sc2.next();
    133. if (user.get(i).getPassword().equals(password) && generate_code.equals(code)) {
    134. System.out.println("密码或验证码错误!");
    135. return true;
    136. }
    137. }
    138. }
    139. System.out.println("用户不存在");
    140. return false;
    141. }
    142. public static boolean register(String username, ArrayList user) {
    143. for (int i = 0; i < user.size(); i++) {
    144. if (username.equals(user.get(i).getUsername())){
    145. System.out.println("用户名已存在,不能录入");
    146. return false;
    147. }
    148. }
    149. Scanner sc3 = new Scanner(System.in);
    150. String password1, password2;
    151. while (true) {
    152. System.out.println("请输入password:");
    153. password1 = sc3.next();
    154. System.out.println("请重新输入一次password:");
    155. password2 = sc3.next();
    156. if (password1.equals(password2)) {
    157. break;
    158. }
    159. System.out.println("两次输入的password不一样,请重新输入");
    160. }
    161. while (true) {
    162. System.out.println("请输入id:");
    163. String id = sc3.next();
    164. if (!idRule(id)) {
    165. System.out.println("id格式错误,请重新输入id:");
    166. continue;
    167. }
    168. System.out.println("请输入phoneNumber:");
    169. String phoneNumber = sc3.next();
    170. if (!phoneNumberRule(phoneNumber)) {
    171. System.out.println("phoneNumber格式错误,请重新输入phoneNumber:");
    172. continue;
    173. }
    174. User u = new User(username, password1, id, phoneNumber);
    175. user.add(u);
    176. return true;
    177. }
    178. }
    179. public static boolean forgetPassword(String username, ArrayList user) {
    180. Scanner sc4 = new Scanner(System.in);
    181. for (int i = 0; i < user.size(); i++) {
    182. if (!username.equals(user.get(i).getUsername())){
    183. System.out.println("用户名不存在,不能修改密码");
    184. return false;
    185. } else {
    186. while (true) {
    187. System.out.println("请输入id:");
    188. String id = sc4.next();
    189. if (!idRule(id)) {
    190. System.out.println("id格式错误");
    191. continue;
    192. }
    193. System.out.println("请输入phoneNumber:");
    194. String phoneNumber = sc4.next();
    195. if (!phoneNumberRule(phoneNumber)) {
    196. System.out.println("phoneNumber格式错误");
    197. continue;
    198. }
    199. if (id.equals(user.get(i).getId()) && phoneNumber.equals(user.get(i).getPhoneNumber())) {
    200. System.out.println("请输入要修改的password:");
    201. String new_password =sc4.next();
    202. user.get(i).setPassword(new_password);
    203. return true;
    204. }
    205. }
    206. }
    207. }
    208. System.out.println("账号信息不匹配,修改失败");
    209. return false;
    210. }
    211. // 到len为止全是数字
    212. public static boolean isNumber(String target, int len) {
    213. boolean flag = true;
    214. for (int i = len;--i>=0;){
    215. if (!Character.isDigit(target.charAt(i))){
    216. flag = false;
    217. }
    218. }
    219. if (flag)
    220. return true;
    221. return false;
    222. }
    223. /*
    224. * 不使用正则表达式,判断用户名
    225. */
    226. public static boolean usernameRule(String username) {
    227. int length = username.length();
    228. if ((length >= 3 && length <= 15) && !(isNumber(username, length))){
    229. return true;
    230. }
    231. return false;
    232. }
    233. public static boolean idRule(String id) {
    234. int length = id.length();
    235. if (length == 18
    236. && !(id.charAt(0) == '0')
    237. && isNumber(id, 17)
    238. && ((isNumber(String.valueOf(id.charAt(17)), 1)) || id.endsWith("X") || id.endsWith("x"))) {
    239. return true;
    240. }
    241. return false;
    242. }
    243. public static boolean phoneNumberRule(String phoneNumber) {
    244. int length = phoneNumber.length();
    245. if (length == 11
    246. && !(phoneNumber.startsWith("0"))
    247. && isNumber(phoneNumber, 11)) {
    248. return true;
    249. }
    250. return false;
    251. }
    252. private static String getCode() {
    253. //1.创建一个集合添加所有的大写和小写字母
    254. ArrayList list = new ArrayList<>();
    255. for (int i = 0; i < 26; i++) {
    256. list.add((char) ('a' + i));
    257. list.add((char) ('A' + i));
    258. }
    259. StringBuilder sb = new StringBuilder();
    260. //2.要随机抽取4个字符
    261. Random r = new Random();
    262. for (int i = 0; i < 4; i++) {
    263. //获取随机索引
    264. int index = r.nextInt(list.size());
    265. //利用随机索引获取字符
    266. char c = list.get(index);
    267. //把随机字符添加到sb当中
    268. sb.append(c);
    269. }
    270. //3.把一个随机数字添加到末尾
    271. int number = r.nextInt(10);
    272. sb.append(number);
    273. //4.如果我们要修改字符串中的内容
    274. //先把字符串变成字符数组,在数组中修改,然后再创建一个新的字符串
    275. char[] arr = sb.toString().toCharArray();
    276. //拿着最后一个索引,跟随机索引进行交换
    277. int randomIndex = r.nextInt(arr.length);
    278. //最大索引指向的元素 跟随机索引指向的元素交换
    279. char temp = arr[randomIndex];
    280. arr[randomIndex] = arr[arr.length - 1];
    281. arr[arr.length - 1] = temp;
    282. return new String(arr);
    283. }
    284. }

    1. import java.util.ArrayList;
    2. import java.util.Random;
    3. import java.util.Scanner;
    4. public class App {
    5. static ArrayList user = new ArrayList<>();
    6. static {
    7. System.out.println("录入数据中...");
    8. User u1 = new User("zhangsan", "123", "610302195607011642", "13669125183");
    9. User u2 = new User("lisi", "456", "620502196006248385", "13363222321");
    10. User u3 = new User("wangwu", "789", "512731188706034846", "13765642332");
    11. User u4 = new User("zhaoliu", "123456", "140725184710194731", "13464323579");
    12. user.add(u1);
    13. user.add(u2);
    14. user.add(u3);
    15. user.add(u4);
    16. System.out.println("录入完毕");
    17. }
    18. public static void main(String[] args) throws InterruptedException {
    19. String username;
    20. String password;
    21. String id;
    22. String phoneNumber;
    23. Scanner sc1 = new Scanner(System.in);
    24. while (true) {
    25. System.out.println("欢迎来到学生管理系统");
    26. System.out.println("请选择操作1登录 2注册 3忘记密码");
    27. int select = sc1.nextInt();
    28. switch (select) {
    29. case 1:
    30. while (true) {
    31. System.out.println("登录");
    32. System.out.println("请输入用户名:(输入-1,则返回登录界面)");
    33. username = sc1.next();
    34. if (username.equals("-1")) {
    35. break;
    36. }
    37. if (login(username, user)) {
    38. System.out.println("登录成功");
    39. // StudentSytstem studentSytstem = new StudentSytstem();
    40. StudentSytstem.start();
    41. // showAll(user);
    42. break;
    43. } else {
    44. System.out.println("登录失败");
    45. System.out.println("-----------------------------------------");
    46. }
    47. }
    48. break;
    49. case 2:
    50. while (true) {
    51. System.out.println("注册");
    52. System.out.println("请输入用户名:(输入-1,则返回登录界面)");
    53. username = sc1.next();
    54. if (!usernameRule(username)) {
    55. System.out.println("username格式错误");
    56. System.out.println("用户名唯一" + "\n" +
    57. "用户名长度必须在3~15位之间" + "\n" +
    58. "只能是字母加数字的组合,但是不能是纯数字");
    59. System.out.println("-----------------------------------------");
    60. continue;
    61. }
    62. if (username.equals("-1")) {
    63. break;
    64. }
    65. if (register(username, user)) {
    66. System.out.println("注册成功");
    67. System.out.println("-----------------------------------------");
    68. break;
    69. } else {
    70. System.out.println("删除失败");
    71. System.out.println("-----------------------------------------");
    72. }
    73. }
    74. break;
    75. case 3:
    76. while(true) {
    77. System.out.println("忘记密码");
    78. System.out.println("请输入username:(输入-1,则返回登录界面)");
    79. username = sc1.next();
    80. if (username.equals("-1")) {
    81. break;
    82. }
    83. if(forgetPassword(username, user)) {
    84. System.out.println("修改成功");
    85. System.out.println("-----------------------------------------");
    86. break;
    87. } else {
    88. System.out.println("修改失败");
    89. System.out.println("-----------------------------------------");
    90. }
    91. }
    92. break;
    93. case 4:
    94. System.out.println("谢谢使用,再见!");
    95. System.exit(0);
    96. break;
    97. default:
    98. System.out.println("没有这个选项");
    99. break;
    100. }
    101. }
    102. }
    103. public static boolean login(String username, ArrayList user) throws InterruptedException {
    104. Scanner sc2 = new Scanner(System.in);
    105. /*
    106. * // 生成四位随机数字的验证码,取消注释
    107. * Random random = new Random();
    108. * int randomNumber = random.nextInt(9000) + 1000;
    109. */
    110. for (int i = 0; i < user.size(); i++) {
    111. if (username.equals(user.get(i).getUsername())){
    112. for (int j = 0; j < 3; j++) {
    113. System.out.println("请输入密码:");
    114. String password = sc2.next();
    115. // 生成四位随机数字的验证码,替换下一行代码
    116. // String generate_code = String.valueOf(randomNumber);
    117. String generate_code = getCode();
    118. System.out.println("验证码为:" + generate_code);
    119. System.out.println("请输入验证码:");
    120. String code = sc2.next();
    121. if (user.get(i).getPassword().equals(password) && generate_code.equals(code)) {
    122. return true;
    123. }
    124. if (j == 2) {
    125. System.out.println("当前系统被锁定3秒");
    126. Thread.sleep(3000);
    127. } else {
    128. System.out.println("用户名、密码或验证码错误,还剩下" + (2 - j) + "次机会");
    129. }
    130. }
    131. }
    132. }
    133. System.out.println("当前用户" + username + "不存在,请先注册");
    134. return false;
    135. }
    136. public static boolean register(String username, ArrayList user) {
    137. for (int i = 0; i < user.size(); i++) {
    138. if (username.equals(user.get(i).getUsername())){
    139. System.out.println("用户名已存在,不能反复注册");
    140. return false;
    141. }
    142. }
    143. Scanner sc3 = new Scanner(System.in);
    144. String password1, password2;
    145. while (true) {
    146. System.out.println("请输入password:");
    147. password1 = sc3.next();
    148. System.out.println("请重新输入一次password:");
    149. password2 = sc3.next();
    150. if (password1.equals(password2)) {
    151. break;
    152. }
    153. System.out.println("两次输入的password不一样,请重新输入");
    154. }
    155. while (true) {
    156. System.out.println("请输入id:");
    157. String id = sc3.next();
    158. if (!idRule(id)) {
    159. System.out.println("id格式错误,请重新输入id:");
    160. continue;
    161. }
    162. System.out.println("请输入phoneNumber:");
    163. String phoneNumber = sc3.next();
    164. if (!phoneNumberRule(phoneNumber)) {
    165. System.out.println("phoneNumber格式错误,请重新输入phoneNumber:");
    166. continue;
    167. }
    168. User u = new User(username, password1, id, phoneNumber);
    169. user.add(u);
    170. System.out.println(
    171. String.format("%-16s|", "姓名") +
    172. String.format("%-8s|", "密码") +
    173. String.format("%-18s|", "身份证号") +
    174. String.format("%-8s|", "手机号码"));
    175. System.out.print(String.format("%-16s|", username));
    176. System.out.print(String.format("%-8s|", password1));
    177. System.out.print(String.format("%-18s|", id));
    178. System.out.print(String.format("%-8s", phoneNumber));
    179. System.out.println();
    180. return true;
    181. }
    182. }
    183. public static boolean forgetPassword(String username, ArrayList user) {
    184. Scanner sc4 = new Scanner(System.in);
    185. for (int i = 0; i < user.size(); i++) {
    186. if (!username.equals(user.get(i).getUsername())){
    187. System.out.println("用户名不存在,不能修改密码,请先注册");
    188. return false;
    189. } else {
    190. while (true) {
    191. System.out.println("请输入id:");
    192. String id = sc4.next();
    193. if (!idRule(id)) {
    194. System.out.println("id格式错误");
    195. continue;
    196. }
    197. System.out.println("请输入phoneNumber:");
    198. String phoneNumber = sc4.next();
    199. if (!phoneNumberRule(phoneNumber)) {
    200. System.out.println("phoneNumber格式错误");
    201. continue;
    202. }
    203. if (id.equals(user.get(i).getId()) && phoneNumber.equals(user.get(i).getPhoneNumber())) {
    204. System.out.println("请输入要修改的password:");
    205. String new_password =sc4.next();
    206. // 如果想要校验密码,仿照上面的就行,这里不重复了
    207. user.get(i).setPassword(new_password);
    208. return true;
    209. }
    210. }
    211. }
    212. }
    213. System.out.println("账号信息不匹配,修改失败");
    214. return false;
    215. }
    216. // 到len为止全是数字
    217. public static boolean isNumber(String target, int len) {
    218. boolean flag = true;
    219. for (int i = len;--i>=0;){
    220. if (!Character.isDigit(target.charAt(i))){
    221. flag = false;
    222. }
    223. }
    224. if (flag)
    225. return true;
    226. return false;
    227. }
    228. /*
    229. * 不使用正则表达式,判断用户名
    230. */
    231. public static boolean usernameRule(String username) {
    232. int length = username.length();
    233. if ((length >= 3 && length <= 15) && !(isNumber(username, length))){
    234. return true;
    235. }
    236. return false;
    237. }
    238. public static boolean idRule(String id) {
    239. int length = id.length();
    240. if (length == 18
    241. && !(id.charAt(0) == '0')
    242. && isNumber(id, 17)
    243. && ((isNumber(String.valueOf(id.charAt(17)), 1)) || id.endsWith("X") || id.endsWith("x"))) {
    244. return true;
    245. }
    246. return false;
    247. }
    248. public static boolean phoneNumberRule(String phoneNumber) {
    249. int length = phoneNumber.length();
    250. if (length == 11
    251. && !(phoneNumber.startsWith("0"))
    252. && isNumber(phoneNumber, 11)) {
    253. return true;
    254. }
    255. return false;
    256. }
    257. private static String getCode() {
    258. //1.创建一个集合添加所有的大写和小写字母
    259. ArrayList list = new ArrayList<>();
    260. for (int i = 0; i < 26; i++) {
    261. list.add((char) ('a' + i));
    262. list.add((char) ('A' + i));
    263. }
    264. StringBuilder sb = new StringBuilder();
    265. //2.要随机抽取4个字符
    266. Random r = new Random();
    267. for (int i = 0; i < 4; i++) {
    268. //获取随机索引
    269. int index = r.nextInt(list.size());
    270. //利用随机索引获取字符
    271. char c = list.get(index);
    272. //把随机字符添加到sb当中
    273. sb.append(c);
    274. }
    275. //3.把一个随机数字添加到末尾
    276. int number = r.nextInt(10);
    277. sb.append(number);
    278. //4.如果我们要修改字符串中的内容
    279. //先把字符串变成字符数组,在数组中修改,然后再创建一个新的字符串
    280. char[] arr = sb.toString().toCharArray();
    281. //拿着最后一个索引,跟随机索引进行交换
    282. int randomIndex = r.nextInt(arr.length);
    283. //最大索引指向的元素 跟随机索引指向的元素交换
    284. char temp = arr[randomIndex];
    285. arr[randomIndex] = arr[arr.length - 1];
    286. arr[arr.length - 1] = temp;
    287. return new String(arr);
    288. }
    289. }

    1. import java.util.ArrayList;
    2. import java.util.Scanner;
    3. public class StudentSytstem {
    4. private static final String ADD_STUDENT = "1";
    5. private static final String DELE_STUDENT = "2";
    6. private static final String UPDATE_STUDENT = "3";
    7. private static final String QUERY_STUDENT = "4";
    8. private static final String ALL_STUDENT = "5";
    9. private static final String LOGIN = "6";
    10. private static final String EXIT = "7";
    11. static ArrayList student = new ArrayList<>();
    12. static {
    13. System.out.println("录入数据中...");
    14. Student s1 = new Student("001", "张三", 23, "南京");
    15. Student s2 = new Student("002", "李四", 24, "北京");
    16. Student s3 = new Student("003", "王五", 25, "广州");
    17. Student s4 = new Student("004", "赵六", 26, "深圳");
    18. student.add(s1);
    19. student.add(s2);
    20. student.add(s3);
    21. student.add(s4);
    22. System.out.println("录入完毕");
    23. }
    24. public static void start() throws InterruptedException {
    25. ArrayList student = new ArrayList<>();
    26. System.out.println("录入数据中...");
    27. Student s1 = new Student("001", "张三", 23, "南京");
    28. Student s2 = new Student("002", "李四", 24, "北京");
    29. Student s3 = new Student("003", "王五", 25, "广州");
    30. Student s4 = new Student("004", "赵六", 26, "深圳");
    31. student.add(s1);
    32. student.add(s2);
    33. student.add(s3);
    34. student.add(s4);
    35. System.out.println("录入完毕");
    36. Scanner sc = new Scanner(System.in);
    37. String id;
    38. String name;
    39. int age;
    40. String address;
    41. while(true) {
    42. System.out.println(
    43. "--------------欢迎来到学生管理系统-----------------" + "\n" +
    44. "1:添加学生" + "\n" +
    45. "2:删除学生" + "\n" +
    46. "3:修改学生" + "\n" +
    47. "4:查询学生" + "\n" +
    48. "5:所有学生" + "\n" +
    49. "6:返回登录界面" + "\n" +
    50. "7:退出系统" + "\n" +
    51. "请输入您的选择:");
    52. int select = sc.nextInt();
    53. switch (select) {
    54. case ADD_STUDENT:
    55. while(true) {
    56. System.out.println("添加");
    57. System.out.println("请输入id:(输入-1,则返回主菜单)");
    58. id = sc.next();
    59. if (id.equals("-1")) {
    60. break;
    61. }
    62. if (addStudent(id, student)) {
    63. System.out.println("添加成功");
    64. showAll(student);
    65. break;
    66. } else {
    67. System.out.println("添加失败");
    68. }
    69. }
    70. break;
    71. case DELE_STUDENT:
    72. while (true) {
    73. System.out.println("删除");
    74. System.out.println("请输入id:(输入-1,则返回主菜单)");
    75. id = sc.next();
    76. if (id.equals("-1")) {
    77. break;
    78. }
    79. if (deleteStudent(id, student)) {
    80. System.out.println("删除成功");
    81. showAll(student);
    82. break;
    83. } else {
    84. System.out.println("删除失败");
    85. }
    86. }
    87. break;
    88. case UPDATE_STUDENT:
    89. while(true) {
    90. System.out.println("修改");
    91. System.out.println("请输入id:(输入-1,则返回主菜单)");
    92. id = sc.next();
    93. if (id.equals("-1")) {
    94. break;
    95. }
    96. if(updateStudent(id, student)) {
    97. System.out.println("修改成功");
    98. showAll(student);
    99. break;
    100. } else {
    101. System.out.println("修改失败");
    102. }
    103. }
    104. break;
    105. case QUERY_STUDENT:
    106. while(true) {
    107. System.out.println("查询");
    108. System.out.println("请输入id:(输入-1,则返回主菜单)");
    109. id = sc.next();
    110. if (id.equals("-1")) {
    111. break;
    112. }
    113. if (queryStudent(id, student) != null) {
    114. Student s = queryStudent(id, student);
    115. System.out.println("id\t\t\t姓名\t\t年龄\t\t家庭住址");
    116. System.out.print(s.getId() + "\t");
    117. System.out.print(s.getName() + "\t\t");
    118. System.out.print(s.getAge() + "\t\t");
    119. System.out.print(s.getAddress());
    120. System.out.println();
    121. break;
    122. } else {
    123. System.out.println("查找失败");
    124. }
    125. }
    126. break;
    127. case ALL_STUDENT:
    128. System.out.println("所有学生");
    129. showAll(student);
    130. break;
    131. case LOGIN:
    132. System.out.println("返回登录界面");
    133. String[] args = {""};
    134. App.main(args);
    135. case EXIT:
    136. System.out.println("退出系统");
    137. System.exit(0);
    138. default:
    139. System.out.println("没有这个选项");
    140. break;
    141. }
    142. }
    143. }
    144. private static Student queryStudent(String id, ArrayList student) {
    145. if (student.size() == 0) {
    146. System.out.println("当前无学生信息,请添加后再查询");
    147. return null;
    148. }
    149. for (int i = 0; i < student.size(); i++) {
    150. if (id.equals(student.get(i).getId())) {
    151. Student s = student.get(i);
    152. return s;
    153. }
    154. }
    155. return null;
    156. }
    157. private static boolean updateStudent(String id, ArrayList student) {
    158. Scanner sc = new Scanner(System.in);
    159. for (int i = 0; i < student.size(); i++) {
    160. if (id.equals(student.get(i).getId())) {
    161. System.out.println(student.get(i).getName());
    162. System.out.println("请输入修改的姓名:");
    163. String new_name = sc.next();
    164. System.out.println(student.get(i).getAge());
    165. System.out.println("请输入修改的年龄:");
    166. int new_age = sc.nextInt();
    167. System.out.println(student.get(i).getAddress());
    168. System.out.println("请输入修改的地址:");
    169. String new_address = sc.next();
    170. Student s = new Student(id, new_name, new_age, new_address);
    171. student.set(i, s);
    172. return true;
    173. }
    174. }
    175. System.out.println("id不存在");
    176. return false;
    177. }
    178. private static boolean deleteStudent(String id, ArrayList student) {
    179. for (int i = 0; i < student.size(); i++) {
    180. if (id.equals(student.get(i).getId())) {
    181. student.remove(i);
    182. return true;
    183. }
    184. }
    185. return false;
    186. }
    187. private static boolean addStudent(String id, ArrayList student) {
    188. for (int i = 0; i < student.size(); i++) {
    189. if (id.equals(student.get(i).getId())){
    190. System.out.println("id已存在,不能录入");
    191. return false;
    192. }
    193. }
    194. Scanner sc = new Scanner(System.in);
    195. System.out.println("请输入name:");
    196. String name = sc.next();
    197. System.out.println("请输入age:");
    198. int age = sc.nextInt();
    199. System.out.println("请输入address:");
    200. String address = sc.next();
    201. Student s = new Student(id, name, age, address);
    202. student.add(s);
    203. return true;
    204. }
    205. private static void showAll(ArrayList student) {
    206. if (student.size() == 0) {
    207. System.out.println("当前无学生信息,请添加后再查询");
    208. return;
    209. }
    210. for (int i = 0; i < student.size(); i++) {
    211. if (i == 0) {
    212. System.out.println(String.format("%-8s |", "id") + String.format("%-16s |", "姓名") + String.format("%-8s |", "年龄") + String.format("%-8s |", "家庭住址"));
    213. }
    214. System.out.print(String.format("%-8s |", student.get(i).getId()));
    215. System.out.print(String.format("%-16s |", student.get(i).getName()));
    216. System.out.print(String.format("%-8d |", student.get(i).getAge()));
    217. System.out.print(String.format("%-8s |", student.get(i).getAddress()));
    218. System.out.println();
    219. }
    220. }
    221. }

    需求

    • 为学生管理系统书写一个登陆、注册、忘记密码的功能。
    • 只有用户登录成功之后,才能进入到学生管理系统中进行增删改查操作。
    • 采取控制台的方式去书写学生管理系统。

    学生类

    属性:id、姓名、年龄、家庭住址

    用户类

    属性:用户名、密码、身份证号码、手机号码

    学生管理系统登录界面

    注册功能

    1,用户名需要满足以下要求

    验证要求:

    • 用户名唯一
    • 用户名长度必须在3~15位之间
    • 只能是字母加数字的组合,但是不能是纯数字

    2,密码键盘输入两次,两次一致才可以进行注册

    3,身份证号码需要验证

    验证要求:

    • 长度为18位
    • 不能以0为开头
    • 前17位,必须都是数字
    • 最为一位可以是数字,也可以是大写X或小写x

    4,手机号验证

    • 验证要求:
    • 长度为11位
    • 不能以0为开头
    • 必须都是数字

    登录功能

    1,键盘录入用户名

    2,键盘录入密码

    3,键盘录入验证码

            验证要求:

    • 用户名如果未注册,直接结束方法,并提示:用户名未注册,请先注册
    • 判断验证码是否正确,如不正确,重新输入
    • 再判断用户名和密码是否正确,有3次机会
    登录成功

    密码错误3次

    用户不存在 

    忘记密码

    1,键盘录入用户名,判断当前用户名是否存在,如不存在,直接结束方法,并提示:未注册

    2,键盘录入身份证号码和手机号码

    3,判断当前用户的身份证号码和手机号码是否一致,

    • 如果一致,则提示输入密码,进行修改。
    • 如果不一致,则提示:账号信息不匹配,修改失败。

    验证码规则

    • 长度为5
    • 由4位大写或者小写字母和1位数字组成,同一个字母可重复
    • 数字可以出现在任意位置
    • 比如:aQa1K

    添加功能

    键盘录入每一个学生信息并添加,需要满足以下要求:

    • id唯一

    删除功能

    键盘录入要删除的学生id,需要满足以下要求:

    • id存在删除

    • id不存在,需要提示不存在,并回到初始菜单

    修改功能

    键盘录入要修改的学生id,需要满足以下要求

    • id存在,继续录入其他信息

    • id不存在,需要提示不存在,并回到初始菜单

    查询功能

    打印所有的学生信息,需要满足以下要求

    • 如果没有学生信息,提示:当前无学生信息,请添加后再查询

    • 如果有学生信息,需要按照格式输出。

    待更新

    1、正则表达式——>判断格式

    2、数据的永久化存储——>登录次数过多,锁定账号 

    更新

    2023/10/24 加入静态代码块

    结论

    系统有较好的健壮性,对于大部分异常输入都会处理。如果发现有未处理的地方,请在评论区告诉我,我会尽快修改,谢谢!

  • 相关阅读:
    Docker镜像打包示例
    Android mtk 系统应用改为可卸载,恢复出厂可恢复
    极空间变身监控录像机,搭配Onvif摄像头,实现实时观看和录制视频回放功能
    [gstreamer] overview of gstreamer
    《canvas》之第1章 canvas概述
    Cmake常用命令(二)
    Linux创建用户及sumba服务器创建用户
    C++中指针的概念和声明
    【设计模式】Java设计模式 - 模板模式
    zabbix添加监控项及邮件报警
  • 原文地址:https://blog.csdn.net/have_to_be/article/details/133930220