学生管理系统--java基础练习
学生管理系统(练习)
需求:
为学生管理系统书写一个登陆、注册、忘记密码的功能。
只有用户登录成功之后,才能进入到学生管理系统中进行增删改查操作。
分析:
登录界面:
System.out.println("欢迎来到学生管理系统");
System.out.println("请选择操作1登录 2注册 3忘记密码");
用户类:
属性:用户名、密码、身份证号码、手机号码
注册功能:
1,用户名需要满足以下要求:
验证要求:
用户名唯一
用户名长度必须在3~15位之间
只能是字母加数字的组合,但是不能是纯数字
2,密码键盘输入两次,两次一致才可以进行注册。
3,身份证号码需要验证。
验证要求:
长度为18位
不能以0为开头
前17位,必须都是数字
最为一位可以是数字,也可以是大写X或小写x
4,手机号验证。
验证要求:
长度为11位
不能以0为开头
必须都是数字
登录功能:
1,键盘录入用户名
2,键盘录入密码
3,键盘录入验证码
验证要求:
用户名如果未注册,直接结束方法,并提示:用户名未注册,请先注册
判断验证码是否正确,如不正确,重新输入
再判断用户名和密码是否正确,有3次机会
忘记密码:
1,键盘录入用户名,判断当前用户名是否存在,如不存在,直接结束方法,并提示:未注册
2,键盘录入身份证号码和手机号码
3,判断当前用户的身份证号码和手机号码是否一致,
如果一致,则提示输入密码,进行修改。
如果不一致,则提示:账号信息不匹配,修改失败。
验证码规则:
长度为5
由4位大写或者小写字母和1位数字组成,同一个字母可重复
数字可以出现在任意位置
比如:
aQa1K
学生管理系统
需求:
采取控制台的方式去书写学生管理系统。
分析:
初始菜单:
"-------------欢迎来到黑马学生管理系统----------------"
"1:添加学生"
"2:删除学生"
"3:修改学生"
"4:查询学生"
"5:退出"
"请输入您的选择:"
学生类:
属性:id、姓名、年龄、家庭住址
添加功能:
键盘录入每一个学生信息并添加,需要满足以下要求:
- id唯一
删除功能:
键盘录入要删除的学生id,需要满足以下要求:
- id存在删除
- id不存在,需要提示不存在,并回到初始菜单
修改功能:
键盘录入要修改的学生id,需要满足以下要求
- id存在,继续录入其他信息
- id不存在,需要提示不存在,并回到初始菜单
查询功能:
打印所有的学生信息,需要满足以下要求
- 如果没有学生信息,提示:当前无学生信息,请添加后再查询
- 如果有学生信息,需要按照以下格式输出。(不用过于纠结对齐的问题)
id 姓名 年龄 家庭住址
11 张三 23 贵州
22 李四 24 重庆
完整代码实现
User.class 用户类
属性:用户名、密码、身份证号码、手机号码
import java.util.Objects;
public class User {
private String userName;
private String password;
private String personId;
private String phone;
public User() {
}
public User(String userName, String password, String personId, String phone) {
this.userName = userName;
this.password = password;
this.personId = personId;
this.phone = phone;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPersonId() {
return personId;
}
public void setPersonId(String personId) {
this.personId = personId;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return Objects.equals(userName, user.userName) &&
Objects.equals(password, user.password) &&
Objects.equals(personId, user.personId) &&
Objects.equals(phone, user.phone);
}
@Override
public int hashCode() {
return Objects.hash(userName, password, personId, phone);
}
@Override
public String toString() {
return "User{" +
"userName='" + userName + '\'' +
", password='" + password + '\'' +
", personId='" + personId + '\'' +
", phone='" + phone + '\'' +
'}';
}
}
Management.class
管理员类
- 其中包括 登录、注册、忘记密码三个功能
- 登录、注册、忘记密码时添加了一些条件校验主要用于练习(详细条件如上需求分析)
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
/**
* 管理员类
* 其中包括 登录、注册、忘记密码三个功能
* 登录、注册、忘记密码时添加了一些条件校验主要用于练习
*/
public class Management {
ArrayList<User> arrayList = new ArrayList<>();
StudentSystem studentSystem = new StudentSystem();
Scanner sc = new Scanner(System.in);
String name;
String pwd;
String personNum;
String phone;
/**
* 注册
*/
public void registered() {
while (true) {
System.out.println("请输入用户名:");
name = sc.next();
boolean flag = judgeUserName(arrayList,name);
boolean cantance = cantance(arrayList, name);
if(cantance){
System.out.println("用户名已存在,请重新输入");
continue;
}
if(flag){
System.out.println("用户名输入正确");
break;
}else{
System.out.println("用户名输入错误,请重新输入");
System.out.println("提示:用户名长度必须在3~15位之间,只能是字母加数字的组合,但是不能是纯数字");
continue;
}
}
while (true) {
System.out.println("请输入密码:");
pwd = sc.next();
System.out.println("请确认密码:");
String surePwd = sc.next();
if(pwd.equals(surePwd)){
System.out.println("密码输入正确");
break;
}else{
System.out.println("两次密码输入不一致,请重新输入");
continue;
}
}
//身份证号
while (true) {
System.out.println("请输入身份证号:");
personNum = sc.next();
boolean f = jupgePersonNum(personNum);
if(f){
System.out.println("身份证输入正确");
break;
}else {
System.out.println("身份证号输入不正确,请重新输入");
System.out.println("提示:长度为18位,不能以0为开头前17位,必须都是数字,最为一位可以是数字,也可以是大写X或小写x");
continue;
}
}
//手机号验证
while (true) {
System.out.println("请输入手机号码:");
phone = sc.next();
boolean ff = jupegPhone(phone);
if(ff){
System.out.println("手机号码输入正确");
break;
}else {
System.out.println("手机号码输入格式不正确,请重新输入");
System.out.println("提示:长度为11位,不能以0为开头,必须都是数字");
continue;
}
}
User user = new User(name,pwd,personNum,phone);
arrayList.add(user);
}
/**
* 判断手机号是否正确
* @param phone
* @return
*/
private boolean jupegPhone(String phone) {
if(phone.length() != 11) return false;
char c = phone.charAt(0);
if(c == '0') return false;
for (int i = 0; i < phone.length(); i++) {
if(!(phone.charAt(i)>=0&&phone.charAt(i)<='9')){
return false;
}
}
return true;
}
/**
* 判断身份证号是否正确
* @param personNum
* @return
*/
private boolean jupgePersonNum(String personNum) {
if(personNum.length() != 18) return false;
char c = personNum.charAt(0);
if(c == '0') return false;
String substring = personNum.substring(0, 16);
for (int i = 0; i < substring.length(); i++) {
if(!(substring.charAt(i)>='0'&&substring.charAt(i)<='9')){
return false;
}
}
char c1 = personNum.charAt(17);
if(!((c1>='0'&&c1<='9')||c1 == 'X' ||c1 == 'x') ) return false;
return true;
}
private boolean cantance(ArrayList<User> arrayList, String name) {
for (int i = 0; i < arrayList.size(); i++) {
if(arrayList.get(i).getUserName().equals(name)){
return true;
}
}
return false;
}
/**
* 用户名判断
* @param arrayList
* @param name
* @return
*/
private boolean judgeUserName(ArrayList<User> arrayList, String name) {
if(name.length() < 3 || name.length() > 15){
return false;
}
for (int i = 0; i < name.length(); i++) {
char c = name.charAt(i);
if(!((c>='a'&&c<='z')||(c>='A'&&c<='Z')||(c>='0'&&c<='9'))){
return false;
}
}
int cut = 0;
for (int i = 0; i < name.length(); i++) {
char ch = name.charAt(i);
if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z'){
cut++;
break;
}
}
if(cut <= 0) return false;
return true;
}
/**
* 登录
*/
public void login() {
String name;
String pwd;
//String judge;
boolean ff = false;
int cut = 3;
while (true) {
System.out.println("请输入用户名:");
name = sc.next();
boolean cantance = cantance(arrayList, name);
if(!cantance){
System.out.println("该账号未被注册,请先完成注册");
//registered();
return;
}
System.out.println("请输入密码:");
pwd = sc.next();
cut--;
ff = judgeUser(arrayList,name,pwd);
if(!ff){
System.out.println("用户名或密码错误,请重新输入,您还有"+cut+"次机会");
if(cut == 0){
System.out.println("您的账户已被冻结!");
return;
}
continue;
}else{
System.out.println("用户名或密码输入正确");
break;
}
}
while (true) {
System.out.println("请输入验证码");
String judge = judgeVerificationCode();
System.out.println(judge);
String verificationCode = sc.next();
if(verificationCode.equalsIgnoreCase(judge)){
System.out.println("验证码输入正确");
if(ff) {
System.out.println("登录成功");
studentSystem.studentSystem();
}
break;
}else{
System.out.println("验证码输入错误,请重新输入");
continue;
}
}
}
/**
* 生成验证码
* @return
*/
private String judgeVerificationCode() {
Random rd = new Random();
StringBuilder str = new StringBuilder();
for (int i = 0; i < 5; i++) {
str.append((char)('a'+rd.nextInt(26)));
str.append((char)('A'+rd.nextInt(26)));
}
char[] chars = str.toString().toCharArray();
StringBuilder res = new StringBuilder();
for (int i = 0; i < 4; i++) {
res.append(chars[rd.nextInt(chars.length)]);
}
//System.out.println(res);
int i = rd.nextInt(10);
res.append(i);
char[] charArray = res.toString().toCharArray();
char temp;
temp = charArray[charArray.length - 1];
charArray[charArray.length - 1] = charArray[rd.nextInt(charArray.length-1)];
charArray[rd.nextInt(charArray.length)] = temp;
StringBuilder resultStr = new StringBuilder();
for (int k = 0; k < charArray.length; k++) {
resultStr.append(charArray[k]);
}
return resultStr.toString();
}
/**
* 判断用户是否存在
* @param arrayList
* @param name
* @param pwd
* @return
*/
private boolean judgeUser(ArrayList<User> arrayList, String name, String pwd) {
for (int i = 0; i < arrayList.size(); i++) {
if((arrayList.get(i).getUserName().equals(name) && arrayList.get(i).getPassword().equals(pwd))){
return true;
}
}
return false;
}
/**
* 忘记密码
*/
public void forgetPassword() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名:");
String name = sc.next();
boolean cantance = cantance(arrayList, name);
if(!cantance){
System.out.println("用户名不存在");
return;
}
System.out.println("请输入身份证号:");
String personId = sc.next();
System.out.println("请输入手机号码");
String phone = sc.next();
boolean f =false;
for (int i = 0; i < arrayList.size(); i++) {
if(personId.equals(arrayList.get(i).getPersonId()) && phone.equals(arrayList.get(i).getPhone())){
System.out.println("请输入新密码:");
arrayList.get(i).setPassword(sc.next());
f = true;
break;
}
}
if(f == false){
System.out.println("账号信息不匹配修改失败!");
}
}
}
Student.class
学生类:
属性:id、姓名、年龄、家庭住址
import java.util.Objects;
public class Student {
private String id;
private String name;
private int age;
private String address;
public Student() {
}
public Student(String id, String name, int age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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 getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Student{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", age=" + age +
", address='" + address + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return age == student.age &&
Objects.equals(id, student.id) &&
Objects.equals(name, student.name) &&
Objects.equals(address, student.address);
}
@Override
public int hashCode() {
return Objects.hash(id, name, age, address);
}
}
Management.class
- 学生管理系统
- 简单摸拟学生管理系统,实现对学生信息的管理(增删改查)
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
/**
* 学生管理系统
* 简单摸拟学生管理系统,实现对学生信息的管理(增删改查)
*/
public class StudentSystem {
Scanner sc = new Scanner(System.in);
ArrayList<Student> students = new ArrayList<>();
Main homePage = new Main();
public void studentSystem() {
studentSystemMenu();
}
/**
* 系统主页
*/
private void studentSystemMenu() {
System.out.println("-------------------欢迎来到学生管理系统-------------------------");
System.out.println("1:添加学生");
System.out.println("2:查询学生");
System.out.println("3:修改学生");
System.out.println("4:删除学生");
System.out.println("5:返回首页");
System.out.println("6:退出系统");
System.out.println("请输入您的选择");
switch (sc.nextInt()){
case 1:
addStudent();
break;
case 2:
selectStudent();
break;
case 3:
updateStudent();
case 4:
deleteStudent();
break;
case 5:
homePage.home();
break;
case 6:
System.exit(0);
break;
}
}
//删除学生
private void deleteStudent() {
System.out.println("请输入id:");
String id = sc.next();
boolean flag = judegId(id);
if(!flag){
System.out.println("该学生不存在!");
studentSystem();
return;
}
int index = 0;
for (int i = 0; i < students.size(); i++) {
if(id.equals(students.get(i).getId())){
students.remove(i);
break;
}
}
System.out.println("删除成功");
studentSystem();
}
//修改学生
private void updateStudent() {
System.out.println("请输入需要修改信息的学生id: ");
String id = sc.next();
boolean flag = judegId(id);
if(!flag){
System.out.println("该学生不存在!");
studentSystem();
return;
}
Student student = new Student();
int index = 0;
for (int i = 0; i < students.size(); i++) {
if(id.equals(students.get(i).getId())){
index = i;
}
}
System.out.println("请选择要修改的内容:");
System.out.println("1:修改姓名");
System.out.println("2:修改年龄");
System.out.println("3:修改家庭住址");
System.out.println("4:修改全部信息");
switch (sc.nextInt()) {
case 1:
System.out.println("请输入姓名:");
students.get(index).setName(sc.next());
break;
case 2:
System.out.println("请输入年龄");
students.get(index).setAge(sc.nextInt());
break;
case 3:
System.out.println("请输入家庭地址");
students.get(index).setAddress(sc.next());
break;
case 4:
System.out.println("请输入姓名:");
students.get(index).setName(sc.next());
System.out.println("请输入年龄");
students.get(index).setAge(sc.nextInt());
System.out.println("请输入家庭地址");
students.get(index).setAddress(sc.next());
break;
}
studentSystem();
}
//查询学生
private void selectStudent() {
if(students.size() == 0){
System.out.println("当前无学生信息,请添加后再查询");
}
System.out.println("id\t\t姓名\t年龄\t家庭住址");
for (Student student : students) {
System.out.println(student.getId()+"\t\t"+student.getName()+"\t"+student.getAge()+"\t"+student.getAddress());
}
studentSystem();
}
//添加学生
private void addStudent() {
System.out.println("请输入学号:");
String id = sc.next();
boolean flag = judegId(id);
if(flag){
System.out.println("该学生已存在!");
studentSystem();
return;
}
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(id,name,age,address);
//判断id是否唯一
students.add(student);
System.out.println("添加成功");
studentSystem();
}
//判断id是否存在
private boolean judegId(String id) {
for (int i = 0; i < students.size(); i++) {
if(id.equals(students.get(i).getId())){
return true;
}
}
return false;
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Main main = new Main();
main.home();
}
public void home(){
System.out.println("欢迎来到学生管理系统");
Management management = new Management();
while (true) {
System.out.println("请选择操作1 注册 2 登录 3忘记密码");
Scanner sc = new Scanner(System.in);
switch (sc.nextInt()) {
case 1:
management.registered();
System.out.println("注册成功:");
break;
case 2:
management.login();
break;
case 3:
management.forgetPassword();
System.out.println("密码修改成功");
break;
}
}
}
}