网站的登录界面是怎么做的,seo怎么提升关键词的排名,信宜手机网站建设公司,关于网站建设的图片素材一、登录
用户类#xff1a;属性#xff1a;用户名、密码、身份证号码、手机号码
1、欢迎页面 System.out.println(欢迎来到学生管理系统); System.out.println(请选择操作1登录 2注册 3忘记密码); 代码实现#xff1a; //欢迎页面public static…一、登录
用户类属性用户名、密码、身份证号码、手机号码
1、欢迎页面 System.out.println(欢迎来到学生管理系统); System.out.println(请选择操作1登录 2注册 3忘记密码); 代码实现 //欢迎页面public static void welcome(ArrayListUser list){while (true) {System.out.println(欢迎来到学生管理系统);System.out.println(请选择操作:1登录 2注册 3忘记密码);//1.创建一个Scanner对象Scanner sc new Scanner(System.in);//获取输入的信息System.out.println(请输入操作);String operation sc.next();switch (operation){case 1 - login(list);case 2 - register(list);case 3 - forgetPassword(list);default - System.out.println(请输入1-3数字中的一个);}}}
2、注册功能
①变量的作用范围只在所属的大括号范围内有效。
要想在外面也有效就要提升作用范围可以将变量定义在大括号外面。
②如果同时要满足很多条件时怎么做
正向考虑即满足条件时一步步往下但是这样有一个弊端就是if-else可能会嵌套过深当增加新的条件时代码不易维护。
反向考虑即什么时候不满足条件return false直接结束方法的运行。
1用户名
满足以下3个条件
①用户名唯一
②用户名长度必须在3~15位之间
③只能是字母加数字的组合但是不能是纯数字。
对于用户名的判断先验证格式再验证唯一性。因为验证唯一性需要连接数据库比较耗费资源。
对于要求3我写的这个方法是判断是否存在大小写字母以此来说明不是纯数字这是因为我知道输入的时候会是字母和数字的组合但是实际过程中是有可能会输入其他字符的所以要加入输入的字符串只能是字母和数字的组合这个要求的实现。 //判断用户名是否满足要求3public static boolean check3(String username){for (int i 0; i username.length(); i) {char c username.charAt(i);if((c a) (c z)){return true;}if((c A) (c Z)){return true;}}return false;}
实现验证用户名只能是字母和数字的组合的方法check31当出现除字母和数字以外的字符时return false遍历完所有字符都没有return false说明只有数字和字母。 public static boolean check31(String username) {for (int i 0; i username.length(); i) {//依次获取每一个字符char c username.charAt(i);//取反说明当条件为假时return false//((c a) (c z))表示c是字符a-z之间的一个//而条件什么时候为假即字符不是大小写英文字母和数字中的任意一个if (!(((c a) (c z)) || ((c A) (c Z)) || ((c 0) (c 9)))) {return false;}return true;}
然后加上是否有大小写字母的的方法check32与刚开始的实现是一样的只不过将判断大写和小写合并到一起了。 //判断是否有大小写字母存在public static boolean check32(String username){for (int i 0; i username.length(); i) {char c username.charAt(i);if ((((c a) (c z)) || ((c A) (c Z)))) {return true;}}return false;}
Ⅰ、输入用户名的判断
①在判断用户名的长度时可以将username.length()提取处理赋给一个变量提高效率。
在下面这个代码中应用的正向考虑 //判断用户名是否合法public static boolean checkUsername(ArrayListUser list, String username) {int length username.length();if ((3 length) (length 15)) {if (check31(username)) {if (check32(username)){return true;}}}return false;}
这里是修改后的代码应用了视频中的反向考虑思想 Ⅱ、用户名的输入 while (true) {//获取输入的用户名System.out.println(请输入用户名);String username sc.next();//首先验证用户名的格式if (checkUsername(list, username)) {//满足条件时进行用户唯一性的判断if (contains(list, username)) {//将输入的用户名与用户对象进行绑定user.setUsername(username);break;} else {System.out.println(输入的用户名已存在);}} else {System.out.println(用户名不合法请重新输入);}}
这里if有两层嵌套其实还可以但是也可以修改为反向考虑的代码这里就不写了。
关于后面的密码、身份证号和手机号等代码的反向考虑的修改就不赘述了。
2密码
密码键盘输入两次两次一致才可以进行注册。
Ⅰ、密码的输入和判断 while (true) {//获取输入的密码System.out.println(请输入密码);String password1 sc.next();System.out.println(请再次输入密码);String password2 sc.next();//将输入的密码与用户对象进行绑定if (password1.equals(password2)) {user.setPassword(password1);break;} else {System.out.println(两次输入的密码不一致请重新输入);}}
3身份证号
身份证号码验证要求
①长度为18位
②不能以0为开头
③前17位必须都是数字
④最为一位可以是数字也可以是大写X或小写x。
Ⅰ、输入身份证号的判断
public static boolean checkID(String ID) {//获取ID的长度int length ID.length();//判断长度是否为18if (length 18) {//判断开头是否为0if (ID.charAt(0) ! 0) {//获取最后一位char c1 ID.charAt(length - 1);if (((c1 0) (c1 9)) || (c1 X) || (c1 x)) {//循环遍历前17位for (int i 0; i length - 1; i) {char c2 ID.charAt(i);if ((c2 0) (c2 9)) {return true;}}}}}return false;}
Ⅱ、身份证号的输入 while (true) {//获取输入的身份证号System.out.println(请输入身份证号);String ID sc.next();//将输入的密码与用户对象进行绑定if (checkID(ID)) {user.setID(ID);break;} else {System.out.println(输入的身份证号不合法请重新输入);}}
4手机号
验证要求
①长度为11位
②不能以0为开头
③必须都是数字
Ⅰ、输入手机号的判断 public static boolean checkPhoneNumber(String phoneNumber) {//获取手机号的长度int length phoneNumber.length();//判断长度是否为11if (length 11) {//判断开头是否为0if (phoneNumber.charAt(0) ! 0) {//循环遍历前11位for (int i 0; i length; i) {char c2 phoneNumber.charAt(i);if ((c2 0) (c2 9)) {return true;}}}}return false;}
对于要求② 不仅可以使用phoneNumber.charAt(0)获取0位置的索引还可以使用startWith方法验证是否以0开头。
Ⅱ、手机号的输入 while (true) {//获取输入的手机号System.out.println(请输入手机号);String phoneNumber sc.next();//将输入的密码与用户对象进行绑定if (checkPhoneNumber(phoneNumber)) {user.setID(phoneNumber);break;} else {System.out.println(输入的手机号不合法请重新输入);}}
然后将数据添加到集合中并提示添加成功 list.add(user);System.out.println(添加成功);
3、登录
1键盘录入用户名
2键盘录入密码
3键盘录入验证码。
验证要求
用户名如果未注册直接结束方法并提示用户名未注册请先注册
判断验证码是否正确如不正确重新输入
再判断用户名和密码是否正确有3次机会。
验证码要求
1长度为5
2由4位大写或者小写字母和1位数字组成同一个字母可重复
3数字可以出现在任意位置。
比如
aQa1K
1生成验证码
刚开始我是把把52个大小写英文字母存到数组中一个一个打出来的很傻。 // 生成验证码public static String createCaptcha() {//首先把52个大小写英文字母存到数组中String[] s {A, B, C, D, E, F, G,H, I, J, K, L, M, N,O, P, Q, R, S, T,U, V, W, X, Y, Z,a, b, c, d, e, f, g,h, i, j, k, l, m, n,o, p, q, r, s, t,u, v, w, x, y, z};//创建一个sb对象用来存字符串StringBuilder sb new StringBuilder();//随机选择数组中的字母循环4次生成4个Random r new Random();for (int i 0; i 4; i) {int index r.nextInt(s.length);sb.append(s[index]);}//生成数字int number r.nextInt(10);//生成数字插入的位置int position r.nextInt(5);sb.insert(position, number);String captcha sb.toString();return captcha;}
利用ASCII码添加大小写英文字母这是修改了的代码 // 生成验证码public static String createCaptcha() {//创建一个sb对象用来存52个大小写英文字母StringBuilder sb1 new StringBuilder();for (int i 0; i 26; i) {char c1 (char) (a i);sb1.append(c1);char c2 (char) (A i);sb1.append(c2);}String string sb1.toString();//创建一个sb对象用来存字符串StringBuilder sb2 new StringBuilder();//随机选择数组中的字母循环4次生成4个Random r new Random();for (int i 0; i 4; i) {int index r.nextInt(string.length());sb2.append(string.charAt(index));}//生成数字int number r.nextInt(10);//生成数字插入的位置int position r.nextInt(5);sb2.insert(position, number);String captcha sb2.toString();return captcha;}
2判断用户名和密码是否正确 //判断用户名和密码是否正确public static boolean checkUsername_Password(ArrayListUser list, String username, String password){for (int i 0; i list.size(); i) {User user list.get(i);if ((username.equals(user.getUsername())) (password.equals(user.getPassword()))){return true;}}return false;}
由于这个方法传递的参数比较多提供一种封装的思想可以将属性封装到一个对象中进行传递。 //判断用户名和密码是否正确public static boolean checkUserInfo(ArrayListUser list, User user1){String username user1.getUsername();String password user1.getPassword();for (int i 0; i list.size(); i) {User user2 list.get(i);if ((username.equals(user2.getUsername())) (password.equals(user2.getPassword()))){return true;}}return false;} 这个整个登录代码的实现
1、首先输入用户名、密码、验证码
2、判断用户名是否存在不存在则提示用户名未注册请先注册
3、进行验证码的校验
4、用户名和密码的判断 //登录public static void login(ArrayListUser list) {//1.创建一个Scanner对象Scanner sc new Scanner(System.in);for (int i 0; i 3; i) {//获取输入的信息System.out.println(请输入用户名);String username sc.next();System.out.println(请输入密码);String password sc.next();//生成验证码String captcha1 createCaptcha();System.out.println(生成的验证码为 captcha1);System.out.println(请输入验证码);String captcha2 sc.next();//将此对象的username与集合中所有对象的username进行判断boolean flag contains(list, username);if (!flag) {System.out.println(用户名未注册请先注册);break;} else {if (captcha1.equals(captcha2)) {if (checkUername_Password(list, username, password)) {System.out.println(登录成功);break;} else {System.out.println(用户名和密码输入错误);}} else {System.out.println(验证码不正确);}}}}关于这段代码
if (!flag) { System.out.println(用户名未注册请先注册); break; }
取反说明flag为假时执行if后面的语句。
由于嵌套的比较深进行修改 可以看到减少了else语句的存在。
4、修改密码
1键盘录入用户名判断当前用户名是否存在如不存在直接结束方法并提示未注册
2键盘录入身份证号码和手机号码
3判断当前用户的身份证号码和手机号码是否一致
如果一致则提示输入密码进行修改。
如果不一致则提示账号信息不匹配修改失败。
思路如下
1、首先判断用户是否存在
2、然后判断身份证号和手机号是否正确
3、如果正确则修改密码。 //忘记密码public static void forgetPassword(ArrayListUser list) {//1.创建一个Scanner对象Scanner sc new Scanner(System.in);//获取输入的用户名System.out.println(请输入用户名);String username sc.next();boolean flag contains(list, username);if (!flag) {System.out.println(请先注册);return;} else {//获取输入的身份证号System.out.println(请输入身份证号);String ID sc.next();//获取输入的手机号System.out.println(请输入手机号);String phoneNumber sc.next();//获取当前用户对象int index getIndex(list, username);User user list.get(index);//当用户的身份证号和手机号一致时if ((ID.equals(user.getID())) (phoneNumber.equals(user.getPhonenumber()))) {while (true) {//获取输入的密码System.out.println(请输入密码);String password1 sc.next();System.out.println(请再次输入密码);String password2 sc.next();//将输入的密码与用户对象进行绑定if (password1.equals(password2)) {user.setPassword(password1);break;} else {System.out.println(两次输入的密码不一致请重新输入);}}} else {System.out.println(账号信息不匹配修改失败);}}}
这是应用反向考虑的思想修改后的代码 二、增删改查
初始菜单 -------------欢迎来到黑马学生管理系统----------------
1添加学生
2删除学生
3修改学生
4查询学生
5退出
请输入您的选择: 学生类
属性id、姓名、年龄、家庭住址
分析
1、创建一个mainOrder方法
2、键盘录入用户的选择
3、用switch语句进行判断 //初始菜单public static void mainOrder(ArrayListStudent list){System.out.println(-------------欢迎来到黑马学生管理系统----------------\n 1添加学生\n 2删除学生\n 3修改学生\n 4查询学生\n 5退出);//1.创建一个Scanner对象Scanner sc new Scanner(System.in);//获取输入的信息System.out.println(请输入您的选择:);int num sc.nextInt();switch (num){case 1 - add(list);case 2 - remove(list);case 3 - update(list);case 4 - select(list);case 5 - exit();default - System.out.println(请输入1-5中的一个);}//当操作完成后再次回到mainOrder(list);}
当操作完成之后再次希望再次回到操作这里使用递归实现的视频中是用while(true)循环实现的。
break和continue用法区别
1break跳出for或者while循环
2continue跳出第i次遍历进行第i1次遍历
对于退出有两种方法
①使用System.exit(0);结束虚拟机的运行进行退出
②跳出最外层循环break loop;
break一般是跳出离得最近的循环当有多层循环而我们想指定跳出某个循环时可以给这个循环起一个别名然后break 别名就可以跳出这个循环了。
代码如下 //初始菜单public static void mainOrder(ArrayListStudent list){//给外层的while循环起一个别名looploop:while (true) {System.out.println(-------------欢迎来到黑马学生管理系统----------------\n 1添加学生\n 2删除学生\n 3修改学生\n 4查询学生\n 5退出);//1.创建一个Scanner对象Scanner sc new Scanner(System.in);//获取输入的信息System.out.println(请输入您的选择:);int num sc.nextInt();switch (num){case 1 - add(list);case 2 - remove(list);case 3 - update(list);case 4 - select(list);case 5 - {System.out.println(已退出学生管理系统);//break loop指跳出while循环//break loop;System.exit(0);}default - System.out.println(请输入1-5中的一个);}}}
添加功能
键盘录入每一个学生信息并添加需要满足以下要求 id唯一 //添加public static void add(ArrayListStudent list) {//1.创建一个Scanner对象Scanner sc new Scanner(System.in);while (true) {//获取输入的信息System.out.println(请输入id);String id sc.next();System.out.println(请输入姓名);String name sc.next();System.out.println(请输入年龄);int age sc.nextInt();System.out.println(请输入家庭住址);String address sc.next();//将输入的信息与学生对象进行绑定Student student new Student();student.setId(id);student.setName(name);student.setAge(age);student.setAddress(address);//将此对象的id与集合中所有对象的id进行判断boolean flag contains(list, id);if (flag) {System.out.println(此id已存在请重新输入id);} else {list.add(student);System.out.println(添加成功);break;}}}
查询功能
打印所有的学生信息需要满足以下要求 如果没有学生信息提示当前无学生信息请添加后再查询 如果有学生信息需要按照以下格式输出。不用过于纠结对齐的问题 //查询public static void select(ArrayListStudent list){if(list.size() 0){System.out.println(当前无学生信息请添加后再查询);}else {System.out.println(id\t姓名\t年龄\t家庭住址);for (int i 0; i list.size(); i) {Student student list.get(i);System.out.println(student.getId() \t student.getName() \t student.getAge() \t student.getAddress());}}}
删除功能
键盘录入要删除的学生id需要满足以下要求 id存在删除 id不存在需要提示不存在并回到初始菜单 //删除public static void remove(ArrayListStudent list) {//1.创建一个Scanner对象Scanner sc new Scanner(System.in);while (true) {//获取输入的信息System.out.println(请输入id);String id1 sc.next();//是否包含boolean flag contains(list, id1);if (flag) {int index getIndex(list,id1);list.remove(index);System.out.println(删除成功);break;}else {System.out.println(此id不存在请重新输入id);}}}修改功能
键盘录入要修改的学生id需要满足以下要求 id存在继续录入其他信息 id不存在需要提示不存在并回到初始菜单 //修改public static void update(ArrayListStudent list){//1.创建一个Scanner对象Scanner sc new Scanner(System.in);String id1 null;String id2 null;while (true) {//获取输入的信息System.out.println(请输入要修改学生的id);id1 sc.next();System.out.println(请输入修改后学生的id);id2 sc.next();if(!id1.equals(id2)){break;} else {System.out.println(修改后的id与修改之前的重复请重新输入);}}//是否包含boolean flag contains(list, id1);if (flag) {int index getIndex(list,id1);Student student list.get(index);student.setId(id2);System.out.println(修改成功);}else {System.out.println(此id不存在请重新输入id);}}这是完整的登录代码
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;public class test03 {public static void main(String[] args) {ArrayListUser list new ArrayList();welcome(list);}//欢迎页面public static void welcome(ArrayListUser list) {while (true) {System.out.println(欢迎来到学生管理系统);System.out.println(请选择操作:1登录 2注册 3忘记密码);//1.创建一个Scanner对象Scanner sc new Scanner(System.in);//获取输入的信息System.out.println(请输入操作);String operation sc.next();switch (operation) {case 1 - login(list);case 2 - register(list);case 3 - forgetPassword(list);default - System.out.println(请输入1-3数字中的一个);}}}//注册public static void register(ArrayListUser list) {//1.创建一个Scanner对象Scanner sc new Scanner(System.in);User user new User();while (true) {//获取输入的用户名System.out.println(请输入用户名);String username sc.next();//首先验证用户名的格式if (checkUsername(list, username)) {//满足条件时进行用户唯一性的判断if (!contains(list, username)) {//将输入的用户名与用户对象进行绑定user.setUsername(username);break;} else {System.out.println(输入的用户名已存在);}} else {System.out.println(用户名不合法请重新输入);}}while (true) {//获取输入的密码System.out.println(请输入密码);String password1 sc.next();System.out.println(请再次输入密码);String password2 sc.next();//将输入的密码与用户对象进行绑定if (password1.equals(password2)) {user.setPassword(password1);break;} else {System.out.println(两次输入的密码不一致请重新输入);}}while (true) {//获取输入的身份证号System.out.println(请输入身份证号);String ID sc.next();//将输入的密码与用户对象进行绑定if (checkID(ID)) {user.setID(ID);break;} else {System.out.println(输入的身份证号不合法请重新输入);}}while (true) {//获取输入的手机号System.out.println(请输入手机号);String phoneNumber sc.next();//将输入的密码与用户对象进行绑定if (checkPhoneNumber(phoneNumber)) {user.setPhonenumber(phoneNumber);break;} else {System.out.println(输入的手机号不合法请重新输入);}}list.add(user);System.out.println(添加成功);}//登录public static void login(ArrayListUser list) {//1.创建一个Scanner对象Scanner sc new Scanner(System.in);for (int i 0; i 3; i) {//获取输入的信息//输入可以从用户名开始//这里我希望在信息输入完成之后再进行判断System.out.println(请输入用户名);String username sc.next();System.out.println(请输入密码);String password sc.next();//生成验证码String captcha1 createCaptcha();System.out.println(生成的验证码为 captcha1);System.out.println(请输入验证码);String captcha2 sc.next();// 先验证验证码再进行用户名和密码的判断// 1、验证码只给一次的验证机会if (!(captcha1.equalsIgnoreCase(captcha2))){System.out.println(验证码不正确);continue;}//走到这里说明没有结束这次循环也就是验证码验证正确//2、然后将此对象的username与集合中所有对象的username进行判断boolean flag contains(list, username);// 不存在if (!flag) {System.out.println(用户名未注册请先注册);break;}// 走到这一步说明用户名存在// 将username和password封装到对象中进行传递User user new User(username, password, null, null);// 检查用户名和密码是否正确if (checkUserInfo(list, user)) {System.out.println(登录成功);Test02.studentSystem();break;} else {System.out.println(用户名和密码输入错误);}}}//忘记密码public static void forgetPassword(ArrayListUser list) {//1.创建一个Scanner对象Scanner sc new Scanner(System.in);//获取输入的用户名System.out.println(请输入用户名);String username sc.next();boolean flag contains(list, username);if (!flag) {System.out.println(请先注册);return;}//获取输入的身份证号System.out.println(请输入身份证号);String ID sc.next();//获取输入的手机号System.out.println(请输入手机号);String phoneNumber sc.next();//获取当前用户对象int index getIndex(list, username);User user list.get(index);//当用户的身份证号和手机号不一致时if (!((ID.equals(user.getID())) (phoneNumber.equals(user.getPhonenumber())))) {System.out.println(账号信息不匹配修改失败);//通过return结束方法return;}//走到这一步说明用户的身份证号和手机号一致while (true) {//获取输入的密码System.out.println(请输入新的密码);String password1 sc.next();System.out.println(请再次输入密码);String password2 sc.next();//将输入的密码与用户对象进行绑定if (password1.equals(password2)) {user.setPassword(password1);break;} else {System.out.println(两次输入的密码不一致请重新输入);}}}//根据username判断此用户是否存在public static boolean contains(ArrayListUser list, String username) {return getIndex(list, username) 0;}//返回id的索引public static int getIndex(ArrayListUser list, String username) {for (int i 0; i list.size(); i) {User user list.get(i);if (username.equals(user.getUsername())) {return i;}}return -1;}//判断用户名是否合法public static boolean checkUsername(ArrayListUser list, String username) {int length username.length();if ((3 length) || (length 15)) {return false;}if (!check31(username)) {return false;}if (!check32(username)) {return false;}return true;}//检查是否是数字和字母的组合public static boolean check31(String username) {for (int i 0; i username.length(); i) {//依次获取每一个字符char c username.charAt(i);//((c a) (c z))表示c是字符a-z之间的一个if (!(((c a) (c z)) || ((c A) (c Z)) || ((c 0) (c 9)))) {return false;}}return true;}//判断是否有大小写字母存在public static boolean check32(String username) {for (int i 0; i username.length(); i) {char c username.charAt(i);if ((((c a) (c z)) || ((c A) (c Z)))) {return true;}}return false;}public static boolean checkID(String ID) {//获取ID的长度int length ID.length();//判断长度是否为18if (length 18) {//判断开头是否为0if (ID.charAt(0) ! 0) {//获取最后一位char c1 ID.charAt(length - 1);if (((c1 0) (c1 9)) || (c1 X) || (c1 x)) {//循环遍历前17位for (int i 0; i length - 1; i) {char c2 ID.charAt(i);if ((c2 0) (c2 9)) {return true;}}}}}return false;}public static boolean checkPhoneNumber(String phoneNumber) {//获取手机号的长度int length phoneNumber.length();//判断长度是否为11if (length 11) {//判断开头是否为0if (phoneNumber.charAt(0) ! 0) {//循环遍历前11位for (int i 0; i length; i) {char c2 phoneNumber.charAt(i);if ((c2 0) (c2 9)) {return true;}}}}return false;}// 生成验证码public static String createCaptcha() {//创建一个sb对象用来存52个大小写英文字母StringBuilder sb1 new StringBuilder();for (int i 0; i 26; i) {char c1 (char) (a i);sb1.append(c1);char c2 (char) (A i);sb1.append(c2);}String string sb1.toString();//创建一个sb对象用来存字符串StringBuilder sb2 new StringBuilder();//随机选择数组中的字母循环4次生成4个Random r new Random();for (int i 0; i 4; i) {int index r.nextInt(string.length());sb2.append(string.charAt(index));}//生成数字int number r.nextInt(10);//生成数字插入的位置int position r.nextInt(5);sb2.insert(position, number);String captcha sb2.toString();return captcha;}//判断用户名和密码是否正确public static boolean checkUserInfo(ArrayListUser list, User user1) {String username user1.getUsername();String password user1.getPassword();for (int i 0; i list.size(); i) {User user2 list.get(i);if ((username.equals(user2.getUsername())) (password.equals(user2.getPassword()))) {return true;}}return false;}
}
这是完整的增删改查代码
import java.util.ArrayList;
import java.util.Scanner;public class Test02 {public static void studentSystem() {//创建一个容器ArrayListStudent list new ArrayList();mainOrder(list);}//当这些操作成功的时候希望可以给出提示//添加public static void add(ArrayListStudent list) {//1.创建一个Scanner对象Scanner sc new Scanner(System.in);while (true) {//获取输入的信息System.out.println(请输入id);String id sc.next();System.out.println(请输入姓名);String name sc.next();System.out.println(请输入年龄);int age sc.nextInt();System.out.println(请输入家庭住址);String address sc.next();//将输入的信息与学生对象进行绑定Student student new Student();student.setId(id);student.setName(name);student.setAge(age);student.setAddress(address);//将此对象的id与集合中所有对象的id进行判断boolean flag contains(list, id);if (flag) {System.out.println(此id已存在请重新输入id);} else {list.add(student);System.out.println(添加成功);break;}}}//删除public static void remove(ArrayListStudent list) {//1.创建一个Scanner对象Scanner sc new Scanner(System.in);while (true) {//获取输入的信息System.out.println(请输入id);String id1 sc.next();//是否包含boolean flag contains(list, id1);if (flag) {int index getIndex(list,id1);list.remove(index);System.out.println(删除成功);break;}else {System.out.println(此id不存在请重新输入id);}}}//修改public static void update(ArrayListStudent list){//1.创建一个Scanner对象Scanner sc new Scanner(System.in);String id1 null;String id2 null;while (true) {//获取输入的信息System.out.println(请输入要修改学生的id);id1 sc.next();System.out.println(请输入修改后学生的id);id2 sc.next();if(!id1.equals(id2)){break;} else {System.out.println(修改后的id与修改之前的重复请重新输入);}}//是否包含boolean flag contains(list, id1);if (flag) {int index getIndex(list,id1);Student student list.get(index);student.setId(id2);System.out.println(修改成功);}else {System.out.println(此id不存在请重新输入id);}}//查询public static void select(ArrayListStudent list){if(list.size() 0){System.out.println(当前无学生信息请添加后再查询);}else {System.out.println(id\t姓名\t年龄\t家庭住址);for (int i 0; i list.size(); i) {Student student list.get(i);System.out.println(student.getId() \t student.getName() \t student.getAge() \t student.getAddress());}}}//根据id判断容器是否包含public static boolean contains(ArrayListStudent list, String id) {return getIndex(list,id) 0;}//返回id的索引public static int getIndex(ArrayListStudent list, String id) {for (int i 0; i list.size(); i) {Student s list.get(i);if (id.equals(s.getId())) {return i;}}return -1;}//初始菜单public static void mainOrder(ArrayListStudent list){//给外层的while循环起一个别名looploop:while (true) {System.out.println(-------------欢迎来到黑马学生管理系统----------------\n 1添加学生\n 2删除学生\n 3修改学生\n 4查询学生\n 5退出);//1.创建一个Scanner对象Scanner sc new Scanner(System.in);//获取输入的信息System.out.println(请输入您的选择:);int num sc.nextInt();switch (num){case 1 - add(list);case 2 - remove(list);case 3 - update(list);case 4 - select(list);case 5 - {System.out.println(已退出学生管理系统);//break loop指跳出while循环//break loop;System.exit(0);}default - System.out.println(请输入1-5中的一个);}}}
}经过上述功能的实现有一点感悟
1、首先是数据的永久化存储是放到数据库中的例如MySQL
2、取出数据库中的数据之后要封装到对象中这就用到了之后的框架例如Mybatis。