Student
public class Student {
private int sid;
private String name;
private int age;
private String addrss;
public Student() {
}
public Student(int sid, String name, int age, String address) {
this.sid = sid;
this.name = name;
this.age = age;
this.addrss = address;
}
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddrss() {
return addrss;
}
public void setAddrss(String addrss) {
this.addrss = addrss;
}
}
User
public class User {
private String name;
private String password;
private String pNumber;
public String getUName() {
return name;
}
public String getPassword() {
return password;
}
public String getNumber() {
return pNumber;
}
public void setUName(String uName) {
this.name = uName;
}
public void setPassword(String password) {
this.password = password;
}
public void setNumber(String number) {
this.pNumber = number;
}
}
App(登陆界面)
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class APP {
public static void main(String[] args) {
ArrayList<User> users = new ArrayList<>();
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("欢迎来到学生管理系统");
System.out.println("1,登录 2,注册 3,忘记密码");
String select = sc.next();
switch (select) {
case "1":
//
logInApp(users);
break;
case "2":
registerApp(users);
break;
case "3":
break;
}
}
}
public static void logInApp(ArrayList<User> users) {
Scanner sc = new Scanner(System.in);
int i = 0;
while (true) {
System.out.println("请输入用户名");
String inName = sc.next();
if(!checkUserName(users, inName)) {
System.out.println("用户名未注册,请先注册");
continue;
}
System.out.println("请输入密码");
String inPassword = sc.next();
int d =returnUserIndex(users, inName);
System.out.println(d);
String s = users.get(d).getPassword();
System.out.println(s);
boolean b = users.get(d).getPassword().equalsIgnoreCase(inPassword);
System.out.println(b);
if(!checkUserInfo(users, inPassword, inName)) {
// if(!checkUserInfo(users, inName, inPassword)) {//错到姥姥家了,注意参数位置是否正确!!
System.out.println("密码错误,还剩" + (2-i) + "次机会");
i++;
if(i == 3) {
System.out.println("密码错误,已自动冻结,请寻找管理员解封账号");
return;
}
}else{
System.out.println("请输入验证码");
String rightCode = checkCode();
System.out.println("当前正确的验证码为:" + rightCode);
String code = sc.next();
boolean flag = code.equalsIgnoreCase(rightCode);
if(flag) {
System.out.println("登陆成功");
demoStudent ds = new demoStudent();
ds.startStudentSystem();
}else{
System.out.println("验证码验证错误!");
return;
}
}
}
}
public static String checkCode() {
//要点:
//1.ArrayList<Character> codeSeed为Character类的集合对象,里面存放的是验证码种子
//2.StringBuilder sb为从验证码容器里取出的五位验证码.
//StringBuilder单独一种类型.可以以toString方法(是objectl类里的方法)转换为String
//再toCharArray()方法转换为更易操作的字符串数组
//3.return new String(arr);//返回最开始的字符串而不是字符数组
//1.创建一个集合添加所有的大写和小写字母
ArrayList<Character> codeSeed = new ArrayList<>();//Character容器?
Random r = new Random();
StringBuilder sb = new StringBuilder();
for(int i = 0; i < 26; i++) {
codeSeed.add((char)('a' + i));
codeSeed.add((char)('b' + i ));
}
for(int i = 0;i < 4; i++) {
int rIndex = r.nextInt(codeSeed.size());
sb.append(codeSeed.get(rIndex));
}
sb.append(r.nextInt(10));
// System.out.println(sb);
// System.out.println(sb.getClass());
// System.out.println(sb.getClass().toString());
// System.out.println(sb.toString());
//4.如果我们要修改字符串中的内容
//先把字符串变成字符数组,在数组中修改,然后再创建一个新的字符串
char[] arr = sb.toString().toCharArray();
int RandomIdex = r.nextInt(arr.length);//
char temp = arr[arr.length-1];//因为时字符数组,所以使用char型temp而不是int型
arr[arr.length-1] = arr[RandomIdex];//ength-1 不会越界
arr[RandomIdex] = temp;//arr[two]与char temp交换,而不是arr[temp]
return new String(arr);//返回最开始的字符串而不是字符数组
}
public static void registerApp(ArrayList<User> users) {
User user = new User();
Scanner sc = new Scanner(System.in);
while(true) {
System.out.println("请输入用户名");
String name = sc.next();
//检查用户名格式
if(name.length() >= 3 && name.length() <= 15) {
}else{
System.out.println("用户名长度必须在3~15位之间 ");
continue;//while循环中的跳步操作:continue直接到while循环开头
}
int flag = 0;
for(int i = 0; i < name.length(); i++) {
char a = name.charAt(i);
if((a >= 'a' && a <= 'z') || (a >= 'A' && a <= 'Z')) {
flag++;
}
}
if(flag==0) {
System.out.println("只能是字母加数字的组合,但是不能是纯数字");
continue;
}
//检查重名
if(checkUserName(users,name)) {
System.out.println("该用户名已存在,请重新输入");
}else{
user.setUName(name);
break;
}
}
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 personId = sc.next();
if(cheakPersonId(users,personId)) {
break;
}
}
while(true) {
System.out.println("请输入手机号验证");
String phoneNumber = sc.next();
if(cheakPhoneNumber(users,phoneNumber)) {
user.setNumber(phoneNumber);
break;
}else{
System.out.println("格式错误!");
}
}
users.add(user);
System.out.println("注册成功!");
printUsers(users);
}
public static boolean cheakPersonId(ArrayList<User> users, String personId) {
if(personId.length() != 18 || personId.charAt(0) == '0') {
System.out.println("请检查格式:身份证18位且不能以0为开头");
return false;
}
for(int i = 0; i<personId.length()-1; i++) {
if(personId.charAt(i) >'9' && personId.charAt(i) < '0') {
System.out.println("请检查格式:前17位,必须都是数字");
return false;
}
}
if(!(personId.charAt(17) <='9' && personId.charAt(17)>='0'
|| personId.charAt(17) == 'x'
|| personId.charAt(17) =='X')) {
return false;
}
return true;
}
public static boolean cheakPhoneNumber(ArrayList<User> users, String phoneNumber) {
if(phoneNumber.length() != 11 || phoneNumber.charAt(0) == '0') {
return false;
}
for(int i = 0; i < phoneNumber.length(); i++) {
if(phoneNumber.charAt(i) >'9' || phoneNumber.charAt(i) < '0') {
System.out.println("请检查格式:必须全为数字");
return false;
}
}
return true;
}
private static boolean checkUserName(ArrayList<User> users,String userName) {
String name = userName;
User user = new User();
for (int i = 0; i < users.size(); i++) {
if(users.get(i).getUName().equals(name)) {
return true;
}
}
return false;
}
private static int returnUserIndex(ArrayList<User> users,String userName) {
String name = userName;
User user = new User();
for (int i = 0; i < users.size(); i++) {
if(users.get(i).getUName().equals(name)) {
return i;
}
}
return -1;
}
private static void printUsers(ArrayList<User> users) {
for(int i = 0; i < users.size(); i++) {
System.out.println(users.get(i).getUName());
System.out.println(users.get(i).getNumber());
System.out.println(users.get(i).getPassword());
}
}
private static boolean checkUserInfo(ArrayList<User> users,String inPassword,String Name) {
int index = returnUserIndex(users, Name);
if(users.get(index).getPassword().equalsIgnoreCase(inPassword)) {
return true;
}else {
return false;
}
}
}
////inPassword != users.get(returnUserIndex(users, Name)).getPassword()//) {遗骸
demoStudent(主界面)
import java.util.ArrayList;
import java.util.Scanner;
public class demoStudent {
public static void startStudentSystem() {
ArrayList<Student> list = new ArrayList<>();
loop : while(true) { //loop标识符,用于break跳出大循环
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的选择");
System.out.println("1,添加学生");
System.out.println("2,删除学生");
System.out.println("3,修改学生");
System.out.println("4,查询学生");
System.out.println("5,退出 ");
String select = sc.next();
switch(select) {
case "1" :
//添加学生
addStudent(list);
break;
case "2" :
//删除学生
deleteStudent(list);
break;
case "3" :
//修改学生
alterStudent(list);
break;
case "4":
//查询学生
checkStudent(list);
break;
case "5":
// break loop;
System.exit(0);//停止虚拟机运行
default:
System.out.println("没有这个选项!");
}
}
}
public static void addStudent(ArrayList<Student>list) {
System.out.println("请输入学生id,学生姓名,学生年龄,学生所在地");
Scanner sc = new Scanner(System.in);
while(true) {
int id = sc.nextInt();
if(isExsit(list, id)) {
System.out.println("此id已被占用,请重新输入");
}else{
String name = sc.next();
int age = sc.nextInt();
String address = sc.next();
Student s = new Student(id,name,age,address);//构造函数载入数据,第二中方法可用setName方法
list.add(s);//把学生添加到集合里(容器)
System.out.println("学生信息添加成功");
break;
}
}
}
public static void deleteStudent(ArrayList<Student>list) {
System.out.println("请输入你要删除的学生的id号");
Scanner sc = new Scanner(System.in);
int id = sc.nextInt();
if(isExsit(list, id)) {
int index = returnIndex(list,id);
list.remove(index);//利用list内的remove方法直接删除指定位置的数据
System.out.println("删除成功");
}
}
public static void alterStudent(ArrayList<Student>list) {
System.out.println("请输入修改的学生id");
Scanner sc = new Scanner(System.in);
int id = sc.nextInt();
if(isExsit(list, id)) {
int index = returnIndex(list,id);
System.out.println("请输入姓名,年龄,地址");
String name = sc.next();
int age = sc.nextInt();
String address = sc.next();
Student s = new Student();
s = list.get(index);
s.setSid(id);
s.setName(name);
s.setAge(age);
s.setAddrss(address);
System.out.println("修改完成");
}
}
public static boolean isExsit(ArrayList<Student>list,int id) {
// for(int i = 0; i < list.size(); i++) {
// Student s = list.get(i);
// if(s.getSid() == id) {
// return true;
// }
// }
// return false;
return returnIndex(list,id) >= 0;//纯粹的开发经验
}
public static int returnIndex(ArrayList<Student>list,int id) {
int index = 0;//index其实可以省略,返回用i;
for(int i = 0; i < list.size(); i++) {
Student s = list.get(i);
if (s.getSid() == id) {
return index;
}else{
index++;
}
}
return -1;
}
public static void checkStudent(ArrayList<Student>list) {
if(list.size() == 0 ) {
System.out.println("暂无学生信息");
return;
}
for(int i = 0; i < list.size(); i++) {
Student student = list.get(i);//创建学生对象接受ArrayList内的get出的studdentt
System.out.println("学生id为"+student.getSid()+"姓名为:"+student.getName()+"年龄为:"+student.getAge()+"地址为:"+student.getAddrss());
}//在遍历自定义类的数组时,使用类内方法get函数拼接展示
}
}