Java项目练习——学生管理系统
1. 整体结构
代码实现了基本的学生管理系统功能,包括登录、注册、忘记密码、添加、删除、修改和查询学生信息。
使用了ArrayList来存储用户和学生信息。
使用了Scanner类来处理用户输入。
2. 主要功能模块
登录 (logIn):验证用户名和密码,支持验证码校验。
注册 (register):验证用户名、密码、身份证号和手机号。
忘记密码 (forgetPassword):通过用户名、身份证号和手机号验证后修改密码。
管理学生信息 (Manage):提供添加、删除、修改和查询学生信息的功能。
如果有问题,希望大家指正
Student_JavaBean
package student_Management_System;
public class Student_JavaBean {
private String id;
private String name;
private int age;
private String address;
public Student_JavaBean() {
}
public Student_JavaBean(String id, String name, int age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
/**
* 获取
* @return id
*/
public String getId() {
return id;
}
/**
* 设置
* @param id
*/
public void setId(String id) {
this.id = id;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return age
*/
public int getAge() {
return age;
}
/**
* 设置
* @param age
*/
public void setAge(int age) {
this.age = age;
}
/**
* 获取
* @return address
*/
public String getAddress() {
return address;
}
/**
* 设置
* @param address
*/
public void setAddress(String address) {
this.address = address;
}
}
User_JavaBean
package student_Management_System;
public class User_JavaBean {
//属性:用户名、密码、身份证号码、手机号码
private String username;
private String password;
private String idCard;
private String phone;
public User_JavaBean() {
}
public User_JavaBean(String username, String password, String idCard, String phone) {
this.username = username;
this.password = password;
this.idCard = idCard;
this.phone = phone;
}
/**
* 获取
* @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 idCard
*/
public String getIdCard() {
return idCard;
}
/**
* 设置
* @param idCard
*/
public void setIdCard(String idCard) {
this.idCard = idCard;
}
/**
* 获取
* @return phone
*/
public String getPhone() {
return phone;
}
/**
* 设置
* @param phone
*/
public void setPhone(String phone) {
this.phone = phone;
}
}
主函数
package student_Management_System;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class Student {
public static void main(String[] args) {
ArrayList<Student_JavaBean>list=new ArrayList<>();
ArrayList<User_JavaBean> user=new ArrayList<>();
Scanner sc=new Scanner(System.in);
while(true) {
System.out.println("欢迎来到学生管理系统");
System.out.println("请选择操作1登录 2注册 3忘记密码 4退出");
int choose_up = sc.nextInt();
switch (choose_up) {
case 1: {
logIn(user,list);
break;
}
case 2:
register(user);
searchUsername(user);
break;
case 3:
// 1,键盘录入用户名,判断当前用户名是否存在,如不存在,直接结束方法,并提示:未注册
// 2,键盘录入身份证号码和手机号码
// 3,判断当前用户的身份证号码和手机号码是否一致,
// 如果一致,则提示输入密码,进行修改。
// 如果不一致,则提示:账号信息不匹配,修改失败。
forgetPassword(user);
break;
case 4:
return;
default:
System.out.println("输入错误");
break;
}
}
}
public static void logIn(ArrayList<User_JavaBean>user,ArrayList<Student_JavaBean>list) {
//用户名如果未注册,直接结束方法,并提示:用户名未注册,请先注册
//判断验证码是否正确,如不正确,重新输入
//再判断用户名和密码是否正确,有3次机会
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入用户名");
String username = sc.next();
boolean flag = checkHava(user,username);
if (flag) {
int count = 2;
while (count >= 0) {
System.out.println("请输入密码");
String password = sc.next();
int flag2 = (index(user, username));
if (flag2 >= 0) {
if (user.get(index(user, username)).getPassword().equals(password)) {
break;
}
System.out.println("密码错误还有" + count + "次机会");
if (count == 0) {
return;
}
count--;
}
}
break;
}
else {
System.out.println("登录失败,用户名不存在,请按下其它数字键重新输入,按下0退出程序");
int temp = sc.nextInt();
if (temp == 0) {
return;
}
}
}
while (true) {
System.out.println("请输入验证码");
String newVerificationCode = verificationCode();
System.out.println(newVerificationCode);
String verificationCode = sc.next();
if (verificationCode.equals(newVerificationCode)) {
break;
}
}
System.out.println("登录成功");
Manage(list);
}
public static void Manage(ArrayList<Student_JavaBean>list){
Scanner sc=new Scanner(System.in);
while (true) {
int choose = menu(sc);
switch (choose) {
case 1:
add(list);
break;
case 2:
delete(list);
break;
case 3:
upData(list);
break;
case 4:
search(list);
break;
case 5:
System.out.println("退出");
return;
default:
System.out.println("输入错误重新输入");
break;
}
}
}
public static void forgetPassword(ArrayList<User_JavaBean> user) {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入用户名");
String username = sc.next();
int index = index(user, username);
if (index == -1) {
System.out.println("用户名不存在,请按下其它数字键重新输入,按下0退出程序");
int temp = sc.nextInt();
if (temp == 0) {
return;
}
continue;
}
while (true) {
System.out.println("输入用户的身份证号");
String IdCard = sc.next();
if (user.get(index).getIdCard().equals(IdCard)) {
break;
} else {
System.out.println("身份证号不匹配,请按下其它数字键重新输入,按下0退出程序");
int temp = sc.nextInt();
if (temp == 0) {
return;
}
}
}
while (true) {
System.out.println("请输入用户的手机号");
String phone = sc.next();
if (user.get(index).getPhone().equals(phone)) {
break;
} else {
System.out.println("手机号不匹配,请按下其它数字键重新输入,按下0退出程序");
int temp = sc.nextInt();
if (temp == 0) {
return;
}
}
}
System.out.println("请输入新密码");
String newPassword = sc.next();
user.get(index).setPassword(newPassword);
System.out.println("修改成功");
return;
}
}
public static int index(ArrayList<User_JavaBean>user,String temp){
for (int i = 0; i < user.size(); i++) {
if(user.get(i).getUsername().equals(temp)){
return i;
}
}
return -1;
}
public static boolean checkHava(ArrayList<User_JavaBean>user,String username)
{
for (int i = 0; i < user.size(); i++) {
if(user.get(i).getUsername().equals(username)){
return true;
}
}
System.out.println("用户未注册,请先注册");
return false;
}
public static String verificationCode()
{
Random random=new Random();
char[] zLen =new char[5];
for (int i = 0; i < zLen.length-1; i++) {
int flag=random.nextInt(2);
if(flag==0) {
zLen[i] = (char) (random.nextInt(25) + 65);
}
else{
zLen[i] = (char) (random.nextInt(26) + 97);
}
}
zLen[zLen.length-1]=(char)(random.nextInt(10)+'0');
for (int i = 0; i < zLen.length; i++) {
char temp=zLen[i];
int j=random.nextInt(zLen.length);
zLen[i]=zLen[j];
zLen[j]=temp;
}
return new String(zLen);
}
public static void searchUsername(ArrayList<User_JavaBean>user){
System.out.println("用户名 身份证号\t\t\t 密码\t 手机\t");
for (int i = 0; i < user.size(); i++) {
System.out.println(user.get(i).getUsername()+" "+user.get(i).getIdCard()+" "+user.get(i).getPassword()+" "+user.get(i).getPhone());
}
}
public static void register(ArrayList<User_JavaBean>user){
//用户名长度必须在3~15位之间
//只能是字母加数字的组合,但是不能是纯数字
// 2,密码键盘输入两次,两次一致才可以进行注册。
// 3,身份证号码需要验证。
// 验证要求:
// 长度为18位
// 不能以0为开头
// 前17位,必须都是数字
// 最为一位可以是数字,也可以是大写X或小写x
// 4,手机号验证。
// 验证要求:
// 长度为11位
// 不能以0为开头
// 必须都是数字
Scanner sc=new Scanner(System.in);
User_JavaBean uj=new User_JavaBean();
while(true) {
System.out.println("请输入用户名(3-15位之间,只能字母加数字,但不能是纯数字)");
String username = sc.next();
boolean flag = checkUsername(username);
if (flag) {
uj.setUsername(username);
break;
} else {
System.out.println("注册失败,用户名输入错误,请按下其它数字键重新输入,按下0退出程序");
if(sc.nextInt()==0){
return;
}
}
}
while(true){
System.out.println("输入密码");
String password=sc.next();
if(checkPassword(password)){
uj.setPassword(password);
break;
}
else{
System.out.println("两次密码输入不相同,请按下其它数字键重新输入,按下0退出程序");
if(sc.nextInt()==0){
return;
}
}
}
while(true){
System.out.println("输入身份证号");
String inCard=sc.next();
if(checkInCard(inCard)){
uj.setIdCard(inCard);
break;
}
else{
System.out.println("身份证号输入格式错误,请按下其它数字键重新输入,按下0退出程序");
if(sc.nextInt()==0){
return;
}
}
}
while(true){
System.out.println("输入手机号");
String phone=sc.next();
if(checkPhone(phone))
{
uj.setPhone(phone);
break;
}
else{
System.out.println("手机号输入格式错误,请按下其它数字键重新输入,按下0退出程序");
if(sc.nextInt()==0){
return;
}
}
}
user.add(uj);
System.out.println("注册成功!");
}
public static boolean checkPassword(String password){
Scanner sc=new Scanner(System.in);
System.out.println("请再次输入密码");
String newPassword=sc.next();
if(password.equals(newPassword)){
return true;
}
System.out.println("两次输入不相同");
return false;
}
public static boolean checkPhone(String Phone){
//4,手机号验证。
// 验证要求:
// 长度为11位
// 不能以0为开头
// 必须都是数字
char first=Phone.charAt(0);
char []temp=new char[Phone.length()];
int count=0;
if(Phone.length()==11)
{
if(first!='0')
{
for (int i = 0; i < Phone.length(); i++) {
temp[i]=Phone.charAt(i);
if(temp[i]>='0'&&temp[i]<='9')
{
count++;
}
}
return count == 11;
}
}
return false;
}
public static boolean checkInCard(String inCard){
// 验证要求:
// 长度为18位
// 不能以0为开头
// 前17位,必须都是数字
// 最为一位可以是数字,也可以是大写X或小写x
if(inCard.length()==18)
{
char first=inCard.charAt(0);
char []temp=new char[inCard.length()];
char end=inCard.charAt(17);
if(first!='0'){
for (int i = 0; i < inCard.length()-1; i++) {
temp[i]=inCard.charAt(i);
if(temp[i]>='0'&&temp[i]<='9')
{
if(end>='0'&&end<='9'||end=='x'||end=='X'){
return true;
}
}
}
}
}
System.out.println("身份证输入有误");
return false;
}
public static boolean checkUsername(String pwd)
{
Scanner sc=new Scanner(System.in);
int len=pwd.length();
if(len<3||len>15)
{
return false;
}
int count=0;
for (int i = 0; i < pwd.length(); i++) {
char c=pwd.charAt(i);
if(!(c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z' || c >= '0' && c <= '9'))//判断是否是在允许的范围内
{
System.out.println("范围不正确");
return false;
}
}
for (int i = 0; i < pwd.length(); i++) {
char c=pwd.charAt(i);//判断是否是纯数字
if(c>='0'&&c<='9'){
count++;
}
}
if(count==pwd.length()){
System.out.println("不能是纯数字");
return false;
}
return true;
}
public static boolean checkId(ArrayList<Student_JavaBean>list,String id)
{
for (int i = 0; i < list.size(); i++) {
if(list.get(i).getId().equals(id)){
return true;
}
}
return false;
}
public static void delete(ArrayList<Student_JavaBean>list)
{
Scanner sc=new Scanner(System.in);
System.out.println("请输入需要删除的id");
String id=sc.next();
boolean flag=checkId(list,id);
if(!flag){
System.out.println("该id不存在");
return;
}
for (int i = 0; i < list.size(); i++) {
if(list.get(i).getId().equals(id)){
list.remove(i);
break;
}
}
System.out.println("删除成功");
}
public static void upData(ArrayList<Student_JavaBean>list) {
Scanner sc = new Scanner(System.in);
Student_JavaBean sj=new Student_JavaBean();
System.out.println("请输入需要修改的id");
String id = sc.next();
boolean flag=checkId(list,id);
if(!flag){
System.out.println("不存在该id");
return;
}
System.out.println("请输入修改类型:1.id 2.姓名 3.年龄 4.地址");
int type=sc.nextInt();
switch (type) {
case 1: {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getId().equals(id)) {
System.out.println("输入新的id");
String newId = sc.next();
sj.setId(newId);
list.get(i).setId(newId);
System.out.println("修改成功");
break;
}
}
break;
}
case 2: {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getId().equals(id)) {
System.out.println("输入新的姓名");
String newName = sc.next();
sj.setName(newName);
list.get(i).setName(newName);
System.out.println("修改成功");
break;
}
}
break;
}
case 3: {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getId().equals(id)) {
System.out.println("输入新的年龄");
int newAge = sc.nextInt();
sj.setAge(newAge);
list.get(i).setAge(newAge);
System.out.println("修改成功");
break;
}
}
break;
}
case 4:
{
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getId().equals(id)) {
System.out.println("输入新的地址");
String newAddress = sc.next();
sj.setAddress(newAddress);
list.get(i).setAddress(newAddress);
System.out.println("修改成功");
break;
}
}
break;
}
default:
System.out.println("输入有误");
break;
}
}
public static void search(ArrayList<Student_JavaBean> list)
{
if(list.size()==0)
{
System.out.println("当前无学生信息,请添加后再查询");
}
else{
System.out.println("id\t\t姓名\t年龄\t地址\t");
for (int i = 0; i < list.size(); i++) {
Student_JavaBean su=list.get(i);
System.out.println(su.getId()+"\t"+su.getName()+"\t"+su.getAge()+"\t"+su.getAddress()+"\t");
}
}
}
public static void add(ArrayList<Student_JavaBean>list){
Student_JavaBean s=new Student_JavaBean();
Scanner sc=new Scanner(System.in);
System.out.println("输入id:");
String id=sc.next();
s.setId(id);
boolean flag=checkId(list,id);
if(flag){
System.out.println("该id已存在");
return;
}
System.out.println("输入姓名:");
String name=sc.next();
s.setName(name);
System.out.println("输入年龄:");
int age=sc.nextInt();
s.setAge(age);
System.out.println("输入地址:");
String address=sc.next();
s.setAddress(address);
list.add(s);
System.out.println("添加成功");
}
public static int menu(Scanner sc)
{
int choose;
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.print("\"请输入您的选择:\"");
choose=sc.nextInt();
return choose;
}
}