这个系统比较常用,很适合练手。

有四部分组成

1.student 的类 也就是  Javabean

2.登陆系统的源代码   也就是main方法里面。

3.user的类 也就是  javabean

4.学生管理系统的方法


1和3这两个没什么好说的就是简单的两个类 

1.student类

package student;

public class Student { private String id;

private String name;

private int age;

private String add;

public Student() {

}

public Student(String id, String name, int age, String add) {

this.id = id;
this.name = name;
this.age = age;
this.add = add;
}

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 getAdd() {
return add;
}

public void setAdd(String add) {
this.add = add;
}

}

2.user的类源代码

package student;

public class User {

private String username;
private String password;
private String personID;
private String phonenmuber;

public User() {

}

public User(String username, String password, String personID, String phonenmuber) {
super();
this.username = username;
this.password = password;
this.personID = personID;
this.phonenmuber = phonenmuber;
}

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 getPhonenmuber() {
return phonenmuber;
}

public void setPhonenmuber(String phonenmuber) {
this.phonenmuber = phonenmuber;
}

}

3.登录系统源代码

package student;

import java.util.Scanner;

import java.util.ArrayList;

import java.util.Random;

public class denglu {

public static void main(String[] args) {
ArrayList<User>list = new ArrayList<>(); //切记,千万不要放到while里面
loop:while(true) {
System.out.println("欢迎来到登录页面");
System.out.println("请选择>:1.登录 2.注册 3.忘记密码");
Scanner sc = new Scanner(System.in);
String choose = sc.next();

switch(choose) {

case "1":{
denglu(list);
break;
}
case "2":{
zhuce(list);
break;
}
case "3":{
forget(list);
break;
}
case "4":{
System.out.println("谢谢你的使用,再见");
break loop;

}
default:{
System.out.println("没有这个选向,请重新输入");
}

}

}

}

private static void denglu(ArrayList<User>list) {

Scanner sc = new Scanner(System.in);
for(int i= 0 ;i<3 ; i++) {

System.out.println("请输入用户名>:");
String username = sc.next();
//判断是否已经注册。
boolean flag = contain(list,username);

if(flag) {
System.out.println("用户名" + username + "还没有注册,请先注册");
return ;// return 有两个作用 1. 返回值 2.结束方法.
}
System.out.println("请输入密码");
String password = sc.next();

while(true) {
String rightCode = getCode();
System.out.println("当前正确验证码为" + rightCode);
System.out.println("请输入验证码");
String code = sc.next();
//注意 验证码的比较是忽略大小写的 所以可以用 equalsIgnoreCase() 来比较。
if(code.equalsIgnoreCase(rightCode)){
System.out.println("验证码正确");
break;
}else {
System.out.println("验证码错误,请重新输入");
continue;
}

}

//封装思想
//我们可以吧一些零散的数据,封装成一个对象。
//以后传递数据的时候,只要传递一个整体就行。
User userInfo = new User(username,password,null,null);//因为下面只需要传递两个 所以后两个传递设置为空
boolean result = checkUserInfo(list,userInfo);
if(result) {
System.out.println("登录成功,可以进行新乡学院管理系统的操作>");
StudentSystem ss = new StudentSystem();
ss.startStudentSystem();
break;
}else {
System.out.println("登录失败,账号或者密码错误>");
if(i == 2) {
System.out.println("当前整账号" + username + "被锁定,请联系赵孟硕帮你解开");
return;
}
}
}
}

private static void zhuce(ArrayListlist )

{ User u = new User(); //把用户信息添加到集合里面 //身份证,手机号,名字

while(true) {

Scanner sc =new Scanner(​​System.in​​); System.out.println("请输入用户名>:");

String username = sc.next();

//用户名唯一 //长度必须为3到15之间 //不能时纯数字要有字母。

boolean flag = checkName(username);

boolean flag1 = contain(list,username);

if(!flag1) {

System.out.println("用户名重复,请重新输入");

continue;//注意这个continue千万不能省略, }

if(flag) {
System.out.println("用户创建完成。");
u.setUsername(username);
break;
}else{
System.out.println("创建用户失败,请重新输入>:");
}
}

while(true) {

System.out.println("请输入创建的密码>:");
Scanner sc =new Scanner(System.in);
String mima1 = sc.next();
System.out.println("请再一次确认创建的密码>:");
String mima2 = sc.next();
boolean flag = makeMima(mima1, mima2);
if(flag) {
System.out.println("创建密码成功,请记住你的密码");
u.setPassword(mima2);
break;
}else {
System.out.println("创建失败,请重新输入>:");
}
}

while(true) {
System.out.println("请输入身份证号>:");
Scanner sc = new Scanner(System.in);
String ID = sc.next();
boolean flag = containsID(ID);
if(flag) {
System.out.println("身份证输入正确,请进行下一步操作>:");
u.setPersonID(ID);
break;
}else{
System.out.println("身份证输错误,请重新输入>:");

}

}

while(true) {
System.out.println("请输入手机号>:");
Scanner sc = new Scanner(System.in);
String phonenum = sc.next();
boolean flag = checknum(phonenum);
if(flag) {

System.out.println("手机号输入正确,请进行下一步操作>:");
u.setPhonenmuber(phonenum);
break;
}else {
System.out.println("手机号输入错误,请考虑清楚再重新输入>:");
}

}
//把创建好的对象添加到集合里面。
list.add(u);
System.out.println("注册成功");

System.out.println("账号" +"\t" +"密码" +"\t" + "身份证号码" + "\t"+"\t"+ "手机号");
printList(list);

} private static boolean checkName(String username) {

int len = username.length();
//用户名的长度只能再3到15之间。
if(len < 3 && len>15) {
return false;
}
//只能是数字加字母或者纯字母,但是不能是纯数字。
for(int i = 0 ;i<username.length() ; i++) {

char c = username.charAt(i);
if(!((c>='a' && c<='z')||(c>='A' && c<'z')||(c>='0' && c<='9'))) {
return false;

}

}

for(int j = 0 ; j<username.length() ; j++) {

char c = username.charAt(j);
if(!((c>='a' && c<='z')||(c>='A' && c<'z'))) {
return false;
}
}
return true;
}

private static boolean makeMima(String mima1,String mima2) {

if(!(mima1.equals(mima2))) {
return false;
}

return true;
}

private static boolean containsID(String ID) {

if(ID.length()!=18) {
return false;
}
if(ID.startsWith("0")) {
return false;
}

for(int i = 0 ; i< ID.length()-1 ; i++) { //注意因为这是身份证的前17位 所以要减一。

char c = ID.charAt(i);
if(!(c >='0' && c<='9')) {
return false;
}

}
char c1 = ID.charAt(ID.length()-1);
if(!((c1 >= '0' && c1<= '9')||(c1=='X')||( c1=='x'))) {
return false;
}
return true;
}

private static boolean checknum(String phonenum) {

if(phonenum.length()!=11) {
return false;
}
if(phonenum.startsWith("0")) {
return false;
}

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

char c = phonenum.charAt(i);
if((c < '0' && c >'9')){
return false;
}
}
return true;
}


private static void printList( ArrayList<User>list) {
for(int i = 0 ; i<list.size() ; i++) {
User u3 = list.get(i);
System.out.println(u3.getUsername()+ "\t" + u3.getPassword()+"\t" + u3.getPersonID()+"\t" + u3.getPhonenmuber());


}
}

private static boolean contain(ArrayList<User>list,String username) {
for(int i = 0 ;i<list.size() ; i++) {
User u1 = list.get(i);
String name1 = u1.getUsername();
if(name1.equals(username)) {

return false;
}
}
return true;
}

//生成一个验证码
private static String getCode() {
//创建一个集合,添加所有大小写字母。
//getCode();s
ArrayList<Character>list = new ArrayList<>();
for(int i = 0 ;i<26 ; i++) {

list.add((char)('a'+i)); // 26个小写字母
list.add((char)('A'+i)); // 26个大写字母
}

//随机抽取四个字符
Random r = new Random();
StringBuilder sb = new StringBuilder(); //创建一个小盒子 这个盒子很实用。
for(int i =0 ; i<4 ; i++) {
int index = r.nextInt(list.size());
char c = list.get(index);
sb.append(c);

}

//System.out.println(sb);
//生成一个随机数,然后添加到这个小盒子,
int number = r.nextInt(10);
sb.append(number);

//把字符串转换为字符数组然后在数组里面进行修改,然后在创建一个新字符串
char[] arr = sb.toString().toCharArray();

//拿最后的索引,和随机索引进行交换。

int randomNum = r.nextInt(arr.length);

char temp = arr[randomNum];
arr[randomNum] = arr[arr.length-1];
arr[arr.length-1] = temp;

//作用就是把字符数组转换为字符串。
new String(arr);

return new String(arr);
}

private static boolean checkUserInfo(ArrayList<User>list,User userInfo) {

for(int i =0 ;i<list.size() ; i++) {
User user = list.get(i);
if(user.getUsername().equals(userInfo.getUsername()) && user.getPassword().equals(userInfo.getPassword()))
return true;
}
return false;
}

private static void forget(ArrayListlist ) {

Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名>:");
String username = sc.next();
boolean flag = contain(list,username);
if(flag) {
System.out.println("用户名未注册,请先注册>:");
return;
}

//键盘录入手机号和身份证号
System.out.println("请输身份证号码>:");
String personID = sc.next();
System.out.println("请输入手机号>:");
String phoneNumber = sc.next();

//判断身份证号码信息之前先找到该信息才能进行比较。
int dex = findIndex(list,username);
User user = list.get(dex);
//比较手机号和身份证号就行
if(!(user.getPersonID().equals(personID) && user.getPhonenmuber().equals(phoneNumber))) {
System.out.println("身份证号码或者手机号码错误,不能修改密码>");
return;
//注意哦 为什么要取反判断,因为不取反的话,把下面的while循环加入到这个里面会是代码看着更麻烦,不利于整体阅读。
}

//当前代码执行到这个位置说明剩下的只有直接修改就行。
while(true) {
System.out.println("请输入密码");
String password = sc.next();
System.out.println("请再次输入密码");
String newpassword = sc.next();
if(password.equals(newpassword)) {
System.out.println("密码修改成功");
break;
}else {
System.out.println("两次密码输入不一致,请重新输入>:");
continue;
}
}
}

private static int findIndex( ArrayListlist,String username) {

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

User user = list.get(i);

if(user.getUsername().equals(username)) {

return i;

}  
}
return -1;

}

}

这个软件用的不太好 ,有些代码没办法转成java类型的,比较不舒服。但是整体还行,有什么不懂的也可以留言  我经常看留言的

4.package student;

import java.util.Scanner;

import java.util.ArrayList;

public class StudentSystem {

public static void startStudentSystem() {

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


loop:while(true) {
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("请输入你的选择>:");
Scanner sc = new Scanner(System.in);
String choose = sc.next();

switch(choose) {
case "1": {
addStudent(list);
break;
}


case "2":{
deleteStudent(list);
break;
}

case "3":{
updataStudent(list);
break;
}

case "4":{
lookStudnet(list);
break;
}

case "5":{
System.out.println("退出系统");
break loop;
}

default:{
System.out.println("没有这个选项,请重新输入>:");
break;
}

}

}
}

public static void addStudent(ArrayList<Student>list) {

Student s = new Student();

System.out.println("添加学生");
Scanner sc = new Scanner(System.in);
while(true) {


System.out.println("添加学生的学号>:");

String id = sc.next();



boolean flag = contains(list,id);

if(flag) {
System.out.println("学生已经存在,请重新输入");

}else {
s.setId(id);
break;
}
}






System.out.println("请添加学生的名字>:");

String name= sc.next();

s.setName(name);



System.out.println("请添加学生的年龄>:");

int age = sc.nextInt();

s.setAge(age);

System.out.println("请添加学生的家庭地址>:");

String add = sc.next();

s.setAdd(add);

list.add(s);


System.out.println("学生信息添加成功");



}


public static void deleteStudent(ArrayList<Student>list) {


Scanner sc = new Scanner(System.in);
System.out.println("输入要删除学生的id>:");
String id = sc.next();
int num = getId(list,id);

if(num>=0) {

list.remove(num);
System.out.println("id为" + id + "的学生删除成功");


}else {
System.out.println("没有该学生,不用删除");
}

}


public static void updataStudent(ArrayList<Student>list) {
System.out.println("请输入要修改学生的学号>:");
Scanner sc = new Scanner(System.in);
String id = sc.next();
int dex = getId(list,id);
if(dex == -1) {
System.out.println("要修改的id" + id + "不存在,请重新输入");
return ;

}

Student stu = list.get(dex);

System.out.println("请输入要修改的选项>:");
System.out.println("----------------------------修改菜单---------------------:");
System.out.println("输入1表示修改id");
System.out.println("输入2表示修改名字");
System.out.println("输入3表示修改年龄");
System.out.println("输入4表示修改地址");


String choose = sc.next();
switch(choose) {

case "1":{
System.out.println("请输入要修改的id>:");
String id1 = sc.next();
stu.setId(id1);
System.out.println("id修改成功请进行下一步操作>:");
break;


}

case "2":{
System.out.println("请输入要修改的名字>:");
String name1 = sc.next();
stu.setName(name1);
System.out.println("名字修改成功请进行下一步操作>:");
break;


}
case "3":{
System.out.println("请输入要修改的年龄");
int age = sc.nextInt();
stu.setAge(age);
System.out.println("年龄修改成功请进行下一步操作>:");
break;

}

case "4":{
System.out.println("请输入要修改的地址");
String address = sc.next();
stu.setAdd(address);
System.out.println("地址修改成功请进行下一步操作>:");
break;
}

default:{
System.out.println("别乱输入,跟个虎逼似的,重新输入>:");
break;

}

}

}
public static void lookStudnet(ArrayList<Student>list) {



System.out.println("查询学生>");




if(list.size() == 0) {
System.out.println("没有这个学生,请添加后再查询");
return;
}

System.out.println("学号\t\t" + "姓名\t" + "年龄\t" + "地址");
for(int i= 0 ; i<list.size() ; i++) {
Student stu = list.get(i);

System.out.println(stu.getId()+ ":\t\t" + stu.getName() + ":\t" + stu.getAge() + ":\t" + stu.getAdd());

}

}

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

for(int i = 0 ; i<list.size() ; i++) {
Student st = list.get(i);
String wid = st.getId();

if(wid.equals(id)) {

return true;
}

}

return false;

}



public static int getId(ArrayList<Student>list,String id) {
for(int i = 0 ; i<list.size() ; i++) {
Student str = list.get(i);
String str1 = str.getId();
if(str1.equals(id)) {

return i;
}
}
return -1;
}

}

这个就是全部代码了,还行整体下来600行左右。这个只是最基本的源代码没有任何感情只有代码,后续再补充这个。