这个系统比较常用,很适合练手。
有四部分组成
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行左右。这个只是最基本的源代码没有任何感情只有代码,后续再补充这个。