Java学生管理系统升级版

主函数:

import StudentPackageshengjiban.Student;

import StudentPackageshengjiban.User;

import java.nio.channels.ScatteringByteChannel;

import java.util.ArrayList;

import java.util.Random;

import java.util.Scanner;

public class testUser {

public static void main(String[] args) {

ArrayList<Student> list1 = new ArrayList<>();

ArrayList<User> list = new ArrayList<>();

loop1:

while (true) {

System.out.println("-------------欢迎来到学生管理系统--------");

System.out.println("请输入你的选择");

System.out.println("【1】登陆 【2】注册 【3】忘记密码 【输入其他】退出");

Scanner sc = new Scanner(System.in);

//输入选择的数字

int shuzi = sc.nextInt();

switch (shuzi) {

case 1:

System.out.println("请输入用户名");

String user = sc.next();

//判断是否成功登陆

boolean u = sign_in(list, user);

//登陆成功返回true

if (u) {

System.out.println("登陆成功");

loop2:while(true){

System.out.println("-----------欢迎进入学生管理系统---------");

System.out.println("【1】添加学生信息 【2】删除学生信息");

System.out.println("【3】修改学生信息 【4】查看学生信息");

System.out.println("【5】退出系统");

System.out.println("请输入你的选择:");

int n = sc.nextInt();

switch(n){

case 1:

//添加学生信息

System.out.println("请输入学生id:");

String id = sc.next();

add_student(list1,id);

System.out.println("添加成功");

break ;

case 2:

//删除学生信息

System.out.println("请输入需要删除的id号:");

String id2 = sc.next();

shanchu_student(list1,id2);

break ;

case 3:

//修改学生信息

System.out.println("请输入需要修改的学生id");

String id3 = sc.next();

xiugai_student(list1,id3);

break ;

case 4:

//查看学生信息

System.out.println("请输入学生id:");

String id1 = sc.next();

find_student(list1,id1);

break ;

default:

//退出系统

break loop1;

}

}

} else {

break;

}

case 2:

System.out.println("请输入用户名");

String user1 = sc.next();

boolean a = register(list, user1);

if (a) {

//验证码判断

boolean y = chansheng_yanzhengma();

if (y) {

System.out.println("恭喜你,注册成功");

break;

} else {

System.out.println("验证码输入错误");

}

} else {

System.out.println("注册失败");

break;

}

case 3:

System.out.println("请输入用户名:");

String m = sc.next();

boolean b = forget(list, m);

//密码修改成功返回true,失败返回false

if (b) {

System.out.println("密码修改成功");

break;

} else {

System.out.println("密码修改失败");

break;

}

default:

break loop1;

}

}

}

//用户登陆操作

public static boolean sign_in(ArrayList<User> list, String user) {

boolean flag = check_user(list, user);

Scanner sc = new Scanner(System.in);

//true为用户名存在,继续登陆

if (flag) {

System.out.println("请输入密码:");

String mima = sc.next();

//返回密码判断

boolean m = check_password(list, user, mima);

//判断密码是否正确,正确返回true

if (m) {

System.out.println("请输入身份证号:");

String id_number = sc.next();

//判断身份证号

Boolean i = check_id_number(list, user, id_number);

//如果身份证号正确,返回true

if (i) {

System.out.println("请输入手机号:");

String phone_number = sc.next();

//判断手机号是否正确

boolean p = check_phone_number(list, user, phone_number);

//如果手机号正确返回true

if (p) {

return true;

}

//如果手机号错误,返回false

else {

System.out.println("手机号输入错误");

return false;

}

}

//如果身份证号错误,返回false

else {

System.out.println("身份证号输入错误");

return false;

}

}

//如果密码错误,返回false

else {

System.out.println("密码输入错误");

return false;

}

}

//false为用户名不存在,请先注册

else {

System.out.println("用户名不存在,请先注册");

return false;

}

}

//查看用户名是否唯一

public static boolean check_user(ArrayList<User> list, String user) {

boolean flag = false;

for (int i = 0; i < list.size(); i++) {

if (list.get(i).getUser().equals(user)) {

//用户名存在返回true

flag = true;

}

}

//循环结束,返回false,用户名不存在

return flag;

}

//判断密码是否正确

public static boolean check_password(ArrayList<User> list, String user, String password) {

for (int i = 0; i < list.size(); i++) {

//用用户名去寻找索引

if (user.equals(list.get(i).getUser())) {

if (password.equals(list.get(i).getPassword())) {

//判断密码是否正确,如果正确返回true

return true;

}

}

}

//如果密码错误,返回false

return false;

}

//判断身份证号是否正确

public static boolean check_id_number(ArrayList<User> list, String user, String id_number) {

for (int i = 0; i < list.size(); i++) {

//用用户名去寻找索引

if (user.equals(list.get(i).getUser())) {

if (id_number.equals(list.get(i).getId_number())) {

//判断身份证号是否正确,如果正确返回true

return true;

}

}

}

//如果身份证号错误,返回false

return false;

}

//判断手机号是否正确

public static boolean check_phone_number(ArrayList<User> list, String user, String phone_number) {

for (int i = 0; i < list.size(); i++) {

//用用户名去寻找索引

if (user.equals(list.get(i).getUser())) {

if (phone_number.equals(list.get(i).getPhone_number())) {

//判断手机号是否正确,如果正确返回true

return true;

}

}

}

//如果手机号错误,返回false

return false;

}

//用户注册

public static boolean register(ArrayList<User> list, String user) {

User s = new User();

Scanner sc = new Scanner(System.in);

boolean flag = check_user(list, user);

//判断用户名是否以及唯一存在,存在返回true,不存在返回false

if (flag) {

System.out.println("用户名已经存在,请重新注册");

return false;

}

//用户名不存在,开始注册

else {

//判断用户名是否规范

//1、用户名唯一

//2、长度为3-15之间

//3、只能是数字加字母的组合,不能是存数字

boolean u = check_long_user(user);

//如果字符串长度在2-15之间,返回true

if (u) {

//判断是否是数字加字母的组合

boolean a = pan_user_number(user);

boolean b = pan_number_string(user);

//如果a,b都为true,说明数字和字母都存在

if (a && b) {

//将用户名存入集合

s.setUser(user);

//用户名输入成功

//接下来输入密码

System.out.println("请设置密码:");

String password1 = sc.next();

//两次输入一致

System.out.println("请再次输入密码:");

String password2 = sc.next();

//判断两次输入是否一致

if (password1.equals(password2)) {

//密码输入成功,存入集合

s.setPassword(password1);

//判断身份证是否符合

//长度为18,不能以零开头

//前十七为必须都是数字

//最后一位可以是数字或者大小写x

System.out.println("请输入身份证号:");

String id_number = sc.next();

//判断身份证号长度

if (id_number.length() == 18) {

//判断第一位是否为零

if (id_number.charAt(0) - 48 == 0) {

System.out.println("身份证号第一位不能为零");

return false;

} else {

//判断身份证号前十七位以及最后一位

boolean id = pan_id_number(id_number);

//如果符合,返回true

if (id) {

//身份证号符合,将其存入集合

s.setId_number(id_number);

//判断手机号是否符合

System.out.println("请输入手机号:");

String phone_number = sc.next();

//长度为11,不能以0开头

//必须都是数字

//判断手机号长度

if (phone_number.length() == 11) {

//判断手机号第一位

char c = phone_number.charAt(0);

if ((c - 48) == 0) {

System.out.println("输入错误,手机号第一位不能为零");

return false;

} else {

//手机号输入正确,存入集合

s.setPhone_number(phone_number);

list.add(s);

return true;

}

} else {

System.out.println("手机号长度输入错误");

return false;

}

} else {

System.out.println("身份证格式错误");

return false;

}

}

} else {

System.out.println("身份证号长度输入错误,请重新操作");

return false;

}

} else {

System.out.println("两次输入密码不一致,请重新操作");

return false;

}

} else {

System.out.println("用户名输入不规范,应该是数字加字母的组合");

return false;

}

} else {

return false;

}

}

}

//判断用户名长度

public static boolean check_long_user(String user) {

int long_user = user.length();

if (long_user >= 3 && long_user <= 15) {

return true;

} else if (long_user < 3) {

System.out.println("用户名长度小于3,不符合规范,请重新输入");

return false;

} else {

System.out.println("用户名长度大于15,不符合规范,请重新输入");

return false;

}

}

//判断用户名中是否含有数字

public static boolean pan_user_number(String user) {

for (int i = 0; i < user.length(); i++) {

char c = user.charAt(i);

int n = c - 48;

if (n >= 0 && n <= 9) {

//存在数字返回true

return true;

}

}

//循环结束,都没有找到数字,返回false

return false;

}

//判断用户名中是否含有字母

public static boolean pan_number_string(String user) {

for (int i = 0; i < user.length(); i++) {

char c = user.charAt(i);

if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {

//判断是否存在数字,如果存在返回true

return true;

}

}

//如果不存在,返回false

return false;

}

//判断身份证号前十七位是否都为数字

//判断身份证号最后一位

public static boolean pan_id_number(String id_number) {

boolean flag = false;

for (int i = 0; i < id_number.length() - 1; i++) {

flag = false;

char c = id_number.charAt(i);

int n = c - 48;

if (n >= 0 && n <= 9) {

//如果前十七位为数字,flag等于true

flag = true;

}

}

if (flag) {

flag = false;

char c1 = id_number.charAt(id_number.length() - 1);

if (((c1 - 48) >= 0 && (c1 - 48) <= 9) || c1 == 'X' || c1 == 'x') {

flag = true;

}

}

return flag;

}

//忘记密码功能

public static boolean forget(ArrayList<User> list, String user) {

Scanner sc = new Scanner(System.in);

boolean flag = check_user(list, user);

//用户名存在返回true,不存在返回false

if (flag) {

//用身份证号和手机号修改密码

System.out.println("请输入身份证号:");

String id_number = sc.next();

System.out.println("请输入手机号:");

String phone_number = sc.next();

boolean a1 = check_id_number(list, user, id_number);

boolean a2 = check_phone_number(list, user, phone_number);

if (a1) {

if (a2) {

//身份证号和手机号都输入正确,开始修改密码

for (int i = 0; i < list.size(); i++) {

if (list.get(i).getId_number().equals(id_number)) {

//用身份证号去寻找索引

System.out.println("请输入修改后的密码:");

String password1 = sc.next();

System.out.println("请再次确定你修改的密码:");

String password2 = sc.next();

if (password1.equals(password2)) {

list.get(i).setPassword(password1);

return true;

} else {

System.out.println("两次输入的密码不一样");

return false;

}

}

}

}

} else {

System.out.println("身份证号或者手机号输入错误");

return false;

}

}

System.out.println("该用户名未注册");

return false;

}

//产生验证码

public static boolean chansheng_yanzhengma() {

Scanner sc = new Scanner(System.in);

Random r = new Random();

String result = "";

String s = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";

for (int i = 0; i < 5; i++) {

int n = r.nextInt(53);

char c = s.charAt(n);

result = result + c;

}

int number = r.nextInt(10);

result = result + number;

//打乱顺序

result = daluan(result);

System.out.println("验证码为:" + result);

System.out.println("请输入验证码:");

String yanzhengma = sc.next();

if (yanzhengma.equals(result)) {

System.out.println("验证码输入成功");

return true;

} else {

return false;

}

}

//打乱顺序

public static String daluan(String result) {

Random r = new Random();

char[] arr = new char[result.length()];

for (int i = 0; i < result.length(); i++) {

arr[i] = result.charAt(i);

}

//产生一个随机数,利用索引交换位置

int n = r.nextInt(5);

char temp = arr[n];

arr[n] = arr[result.length() - 1];

arr[result.length() - 1] = temp;

String result1 = "";

for (int i = 0; i < arr.length; i++) {

result1 = result1 + arr[i];

}

return result1;

}

//添加学生信息

public static void add_student(ArrayList<Student> list,String id){

Scanner sc = new Scanner(System.in);

boolean flag = check_id(list,id);

Student s = new Student();

//id存在返回true

//id不存在返回false

if(flag){

System.out.println("当前添加id已经存在,请重新操作");

return;

}

else{

//存入id

s.setId(id);

System.out.println("请输入学生姓名:");

String name = sc.next();

s.setName(name);

System.out.println("请输入学生学号:");

String School_number = sc.next();

s.setShoolnumber(School_number);

System.out.println("请输入学生家庭住址:");

String address = sc.next();

s.setAddress(address);

list.add(s);

return;

}

}

//查询id是否存在

public static boolean check_id(ArrayList<Student> list,String id){

for (int i = 0; i < list.size(); i++) {

if(id.equals(list.get(i).getId())){

//id存在返回true

return true;

}

}

//id不存在返回false

return false;

}

//查看学生信息

public static void find_student(ArrayList<Student> list,String id){

boolean flag = true;

for (int i = 0; i < list.size(); i++) {

if(id.equals(list.get(i).getId())){

System.out.println("学生id为" + list.get(i).getId());

System.out.println("学生姓名为" + list.get(i).getName());

System.out.println("学生学号为" + list.get(i).getShoolnumber());

System.out.println("学生家庭住址为" + list.get(i).getAddress());

return;

}

else{

flag = false;

}

}

if(!flag){

System.out.println("该id不存在");

}

}

//删除学生信息

public static void shanchu_student(ArrayList<Student> list,String id){

//查看id是否存在,存在返回true,不存在返回false

boolean flag = check_id(list,id);

if(flag){

for (int i = 0; i < list.size(); i++) {

if (id.equals(list.get(i).getId())) {

list.remove(i);

return;

}

}

}

else{

System.out.println("该id不存在");

return;

}

}

//修改学生信息

public static void xiugai_student(ArrayList<Student> list,String id){

Scanner sc = new Scanner(System.in);

boolean flag = check_id(list,id);

if(flag){

for (int i = 0; i < list.size(); i++) {

if(id.equals(list.get(i).getId())){

System.out.println("请输入修改后的学生id:");

String new_id = sc.next();

list.get(i).setId(new_id);

System.out.println("请输入修改后的学生姓名:");

String new_name = sc.next();

list.get(i).setName(new_name);

System.out.println("请输入修改后的学生学号:");

String new_school_number = sc.next();

list.get(i).setShoolnumber(new_school_number);

System.out.println("请输入修改后的学生家庭住址:");

String new_adress = sc.next();

list.get(i).setAddress(new_adress);

return;

}

}

}

else{

System.out.println("该id不存在");

return;

}

}

}

用户类函数:

package StudentPackageshengjiban;

public class User {

private String user;

private String password;

private String id_number;

private String phone_number;

public User() {

}

public User(String user, String password, String id_number, String phone_number) {

this.user = user;

this.password = password;

this.id_number = id_number;

this.phone_number = phone_number;

}

public String getUser() {

return user;

}

public void setUser(String user) {

this.user = user;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getId_number() {

return id_number;

}

public void setId_number(String id_number) {

this.id_number = id_number;

}

public String getPhone_number() {

return phone_number;

}

public void setPhone_number(String phone_number) {

this.phone_number = phone_number;

}

}

学生类函数:

package StudentPackageshengjiban;

public class Student {

private String id;

private String name;

private String shoolnumber;

private String address;

public Student() {

}

public Student(String id, String name, String shoolnumber, String address) {

this.id = id;

this.name = name;

this.shoolnumber = shoolnumber;

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 String getShoolnumber() {

return shoolnumber;

}

public void setShoolnumber(String shoolnumber) {

this.shoolnumber = shoolnumber;

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

}

运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值