超级简单的学生管理系统
学习java也有半个月了,基于自己现在学的东西,去写了一个学生管理系统,利用集合(ArrayList这个东西我看也有人叫他链表).
Student类:
public class Student {
private String id;
private String name;
private char sex;
private int age;
private String jiguan;
private int xuefen=100;
private String shuom="无";
public Student() {
}
public Student(String id, String name, char sex, int age, String jiguan) {
this.id = id;
this.name = name;
this.sex = sex;
this.age = age;
this.jiguan = jiguan;
}
public String getShuom() {
return shuom;
}
public void setShuom(String shuom) {
this.shuom = shuom;
}
public int getXuefen() {
return xuefen;
}
public void setXuefen(int xuefen) {
this.xuefen = xuefen;
}
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 char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getJiguan() {
return jiguan;
}
public void setJiguan(String jiguan) {
this.jiguan = jiguan;
}
}
StudentText类
package com.heima.it;
import sun.security.rsa.RSAUtil;
import java.util.ArrayList;
import java.util.Scanner;
public class Text {
public static void main(String[] args) {
ArrayList<Student> students = new ArrayList<>();
ArrayList<Student> restudents = new ArrayList<>();
String[][] a = {{"张三", "123456789"}, {"李四", "987654321"}, {"王五", "369258"}, {"测试者", "123456"}};
String[] b = {"123456789", "2987654321", "369258", "123456"};
Scanner in = new Scanner(System.in);
String PASS = "-1";
while (true) {
System.out.println("********欢迎来到学生管理系统*********");
System.out.println("* 1.登录 *");
System.out.println("* 2.注册 *");
System.out.println("* 3.退出 *");
System.out.println("**********************************");
String xz = in.next();
switch (xz) {
case "1":
if(denglu(in, b, PASS)){
zhuyemian(students,restudents);
}
break;
case "2":
PASS = zhuce(a);
if (PASS.equals("0")) {
break;
}
break;
case "3":
System.out.println("退出");
System.exit(0);
}
}
}
private static void zhuyemian(ArrayList<Student> students, ArrayList<Student> restudents) {
while (true) {
System.out.println("_______________________________");
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("| 7 退出程序 |");
System.out.println("-------------------------------");
System.out.print("请输入您的选择:");
Scanner in = new Scanner(System.in);
String a1 = in.next();
switch (a1) {
case "1":
luru(students);
break;
case "2":
shanchu(students, restudents);
break;
case "3":
xiugai(students);
break;
case "4":
chakan(students);
break;
case "5":
huifu(students, restudents);
break;
case "6":
jixiao(students);
break;
case "7":
System.out.println("退出程序");
System.out.println("-----------感谢您的使用,再见----------");
System.exit(0);
default:
System.out.println("输入命令不合法,请重新输入:");
}
}
}
/*
第一模块:学生信息录入!
*/
public static void luru(ArrayList A) {
lo:
while (true) {
Scanner in = new Scanner(System.in);
System.out.println("----学生信息录入----");
Student student = new Student();
System.out.print(" 请输入学生姓名(返回主页面请输入return):");
String name = in.next();
if ("return".equals(name)) {
return;
}
student.setName(name);
System.out.print(" 请输入学生性别:");
student.setSex(in.next().charAt(0));
System.out.print(" 请输入学生年龄:");
student.setAge(in.nextInt());
System.out.print(" 请输入学生的籍贯:");
student.setJiguan(in.next());
String id;
System.out.print(" 请输入学生的学号:");
while (true) {//检测学号重复
id = in.next();
if (xuehao(A, id)) {
student.setId(id);
break;
} else {
System.out.print("您输入的学号重复,请检查后重新输入:");
}
}
A.add(student);
System.out.println("录入成功!!");
System.out.println("请问还要继续录入吗?(Y/N)");
io:
while (true) {
char a = in.next().charAt(0);
switch (a) {
case 'Y':
case 'y':
break io;
case 'N':
case 'n':
break lo;
default:
System.out.println("非法输入,请重新输入:");
}
}
}
}
/*
第二模块 删除学生***************************************************************************
*/
public static void shanchu(ArrayList<Student> A, ArrayList<Student> B) {
lo:
while (true) {
if (A.size() == 0) {
System.out.println(" *库中尚未有学生数据,请先录入学生信息*");
System.out.println(" 请按任意键返回主页面");
Scanner in = new Scanner(System.in);
String gjr = in.next();
return;
} else {
Scanner in = new Scanner(System.in);
System.out.print("请输入您要删除的学生的学号(返回请输入return):");
String a = in.next();//***************************************************************************************
if ("return".equals(a)) {
return;
}
boolean b = true;//用于下面判断用户输入学号是否合法
for (int i = 0; i < A.size(); i++) {//遍历学生集合
if (a.equals(A.get(i).getId())) {//取出每个对象中的学号于输入值对比
B.add(A.get(i));
A.remove(i);
System.out.println("删除成功");
b = false;
}
}
if (b) {
System.out.println("您输入的学号有误,请确认后重新输入");
} else {
System.out.println("请问还要继续删除吗?(Y/N)");//*****************************************大小写判定(解决)
io:
while (true) {
String f = in.next();
switch (f) {
case "Y":
case "y":
break io;
case "n":
case "N":
break lo;
default:
System.out.println("非法输入,请重新输入:");
}
}
}
}
}
}
/*
第三模块:修改学生************************************************************************
*/
public static void xiugai(ArrayList<Student> A) {
if (A.size() == 0) {
System.out.println(" *库中尚未有学生数据,请先录入学生信息*");
System.out.println(" 请按任意键返回主页面");
Scanner in = new Scanner(System.in);
String gjr = in.next();
} else {
System.out.println(" ****学生信息修改****");
while (true) {
Scanner in = new Scanner(System.in);
System.out.println("---------------学生信息表---------------");
System.out.println("--------------------------------------");
System.out.println("姓名 年龄 性别 籍贯 学号");
for (int i = 0; i < A.size(); i++) {
System.out.println(A.get(i).getName() + "\t\t " + A.get(i).getAge() + "\t\t " + A.get(i).getSex() + "\t\t " + A.get(i).getJiguan() + "\t\t" + A.get(i).getId());
}
System.out.println("-------------------------------------");
System.out.println();
System.out.println("请输入你要修改的学生信息的学号(返回请按return):");
String id = in.next();//*******************************************学号判断是否存在且是否合理
if ("return".equals(id)) {
return;
}
boolean T = true;
for (int i = 0; i < A.size(); i++) {
if (id.equals(A.get(i).getId())) {
T = false;
System.out.print("请输入新姓名:");
A.get(i).setName(in.next());
System.out.print("请输入新性别:");
A.get(i).setSex(in.next().charAt(0));
System.out.print("请输入新籍贯:");
A.get(i).setJiguan(in.next());
System.out.print("请输入新年龄:");
A.get(i).setAge(in.nextInt());
System.out.print("请输入新学号:");
while (true) { //检测学号重复
id = in.next();
if (A.get(i).getId().equals(id) || xuehao(A, id)) {
A.get(i).setId(id);
break;
} else {
System.out.print("您输入的学号重复,请检查后重新输入:");
}
}
System.out.println("修改成功!");
System.out.println("请问还要继续修改吗?(Y/N)");
if (extracted()) {
break;
} else {
return;
}
}
}
if (T) {
System.out.println("非法输入!请按任意键返回重新输入");
String gjr = in.next();
}
}
}
}
/*
第四模块:查看学生信息
*/
public static void chakan(ArrayList<Student> A) {
if (A.size() != 0) {
System.out.println("_________________________________________________");
System.out.println("----------------------学生信息---------------------");
System.out.println("姓名 年龄 性 别 籍贯 学号");
for (int i = 0; i < A.size(); i++) {
System.out.println(A.get(i).getName() + "\t\t " + A.get(i).getAge() + "\t\t " + A.get(i).getSex() + "\t\t " + A.get(i).getJiguan() + "\t " + A.get(i).getId());
}
System.out.println("---------------------------------------------------");
System.out.println(" 请按任意键返回主页面");
Scanner in = new Scanner(System.in);
String gjr = in.next();
} else {
System.out.println(" *库中尚未有学生数据,请先录入学生信息*");
System.out.println(" 请按任意键返回主页面");
Scanner in = new Scanner(System.in);
String gjr = in.next();
}
}
/*
模块五:学生数据恢复
*/
public static void huifu(ArrayList<Student> A, ArrayList<Student> B) {
while (true) {
if (B.size() == 0) {
System.out.println(" 暂无数据可恢复!");
System.out.println(" 请按任意键返回主页面");
Scanner in = new Scanner(System.in);
String gjr = in.next();
return;
} else {
Scanner in = new Scanner(System.in);
System.out.println("姓名 年龄 性 别 籍贯 学号");
for (int i = 0; i < B.size(); i++) {
System.out.println(B.get(i).getName() + "\t\t " + B.get(i).getAge() + "\t\t " + B.get(i).getSex() + "\t\t " + B.get(i).getJiguan() + "\t\t" + B.get(i).getId());
}
System.out.print("请输入您要恢复的学生信息的学号:");
String id = in.next();
if (!(xuehao(A, id))) {//判断学号是否在学生集合中已存在;
System.out.println("您输入的学号冲突,请先修改学号再进行操作");
System.out.println(" 请输入任意键返回主页面");//存在
String gjr = in.next();
return;
} else {
boolean t = true;
for (int i = 0; i < B.size(); i++) {
if (B.get(i).getId().equals(id)) {//寻找对应学号先进恢复
A.add(B.get(i));
t = false;
System.out.println(" 数据恢复成功!!!");
B.remove(i);
System.out.println("是否继续进行数据恢复(Y/N)");
if (extracted()) {
break;
} else {
return;
}
}
}
if (t) {
System.out.println("查找失败!");
}
}
}
}
}
/*
模块六:学分绩效
*/
public static void jixiao(ArrayList<Student> A) {
Scanner in = new Scanner(System.in);
if (A.size() == 0) {
System.out.println("库中尚未存储学生信息,无法查看,请按任意键返回主页面");
String gjr = in.next();
return;
}
while (true) {
System.out.println("=============学生学分信息记录======================");
System.out.println("姓名\t \t学号\t \t学分\t \t说明");
for (int i = 0; i < A.size(); i++) {
System.out.println(A.get(i).getName() + "\t\t" + A.get(i).getId() + "\t" + A.get(i).getXuefen() + "\t\t" + A.get(i).getShuom());
}
System.out.println("--------------------------------------------------");
System.out.print("请输入你要修改的学生学号:");
String id = in.next();
if (!(xuehao(A, id))) {
for (int i = 0; i < A.size(); i++) {
if (id.equals(A.get(i).getId())) {
System.out.print("请输入新学分(当前学分:" + A.get(i).getXuefen() + ")");
A.get(i).setXuefen(in.nextInt());
System.out.println("请输入此次修改学分的补充说明:");
A.get(i).setShuom(in.next());
}
}
System.out.print(" 正在保存");
say("....");
System.out.println();
System.out.println(" 保存成功!");
System.out.println("是否继续修改学分(Y/N)");
if (!extracted()) {
return;
}
} else {
System.out.println("学号输入有误,请检查后重新输入!");
System.out.println("程序将于三秒后自动跳转");
say(" ");
}
}
}
/*
注册模块
*/
private static String zhuce(String[][]a) {
while (true) {
Scanner in = new Scanner(System.in);
System.out.println("****************注册**************");
System.out.print("请输入您的姓名(返回请输入return):");
String name = in.next();
if (name.equals("return")) {
return "0";
}
System.out.print("请输入您的工号:");
String pass = in.next();
System.out.print(" 信息匹配中");
say(".......");
System.out.println();
boolean t = true;//标记一下,如果下面双条件全部符合就把他改成错,这样后面语句就可以依旧这个判断是否符合条件
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {//双重循环去遍历双条件符合的用户
if (a[i][j].equals(name) && a[i][j + 1].equals(pass)) {
System.out.println(" 匹配成功!");
t = false;
while (true) {
System.out.print("请设置您的密码:");
String pass1 = in.next();
System.out.print("请在次确认您的密码:");
String pass2 = in.next();
if (pass1.equals(pass2)) {
System.out.println("您的账户已被激活!程序将在三秒后跳转主页");
say(" ");
return pass1;
} else {
System.out.println("您输入的两次密码不同请重新输入");
}
}
}
}
}
if (t) {
System.out.println("您录入的信息有误,请确认后重试!");
}
}
}
/*
登录模块
*/
private static boolean denglu(Scanner in, String[] name, String pass) {
while (true) {
System.out.print(" 请输入账号:");
String usname = in.next();
System.out.print(" 请输入密码:");
String uspass = in.next();
for (int i = 0; i < name.length; i++) {
if (uspass.equals(pass) && usname.equals(name[i])) {
System.out.print("\t\t");
System.out.print("正在验证账号密码");
say("............");
System.out.println();
System.out.println(" 验证成功!");
System.out.print("\n\t\t");
System.out.print("正在登录");
say(".....");
System.out.println();
return true;
}
}
System.out.print("\t");
System.out.print("正在验证账号密码");
say("..............");
System.out.println();
System.out.println(" 验证失败!");
System.out.print("\n");
System.out.println(" 登录失败,请先返回主页面注册账号");
System.out.println(" 系统将于三秒钟后自动跳转");
say(" ");
System.out.println();
return false;
}
}
/*
睡眠输出
*/
static void say(String str) {
for (int i = 0; i < str.length(); i++) {
try {
java.lang.Thread.sleep(100);
} catch (Exception E) {
} finally {
System.out.print(str.charAt(i));
}
}
}
/*
选择方法
*/
private static boolean extracted() {
Scanner in = new Scanner(System.in);
while (true) {
String a = in.next();
switch (a) {
case "Y":
case "y":
return true;
case "n":
case "N":
return false;
default:
System.out.println("非法输入,请重新输入:");
}
}
}
/*
判断学生集合中学生对象中的学号是否重复;
*/
public static boolean xuehao(ArrayList<Student> A, String id) {
boolean t = true;
for (int i = 0; i < A.size(); i++) {
if (id.equals(A.get(i).getId())) {
t = false;
}
}
return t;
}
}
到这里也就到此为止了,程序复用性很差,有的地方我自己都感觉啰里啰嗦的,但是这是我写的第一个有点像的程序,以后会慢慢修改的!!
程序的实现了对学生的增删查改同时候加入了数据恢复的功能,还加上了一个学分扣除,虽然没啥用.
学生管理系统总不能谁都可以进去吧,我在前面还加入了登录模块,有登陆总不能没有注册吧,然后总不能谁都可以注册吧,毕竟学生管理系统,
所以我就设定了几个固定姓名和工号甩在数组里,注册的时候判断一下,对了就给你注册,错了就返回登录页面,注册成功之后工号就是你的账号,
密码是你重新设置的.emmm,基本的增删查改都是用了集合的对应方法,数据恢复就是在主方法里面再次定一个新集合,用来存储的被删除的学生
emmm,说白了就是,删了丢给新集合,恢复就是把新集合里面对应数据丢给学生集合,相互丢,我丢给你,我就没了,你丢给我你就没了.
每次进入功能模块的时候我都加了一个return,输入return就返回主页面,还做了一个判断,判断集合中是否有学生数据(用来存储的删除的学生集合也一样)
没有学生都会给出对应提示.
程序也还有好多东西没整,比如在学生类中定义了对应的类型,比如性别是char类型的,如果我输入"不明",程序直接嗝屁,这里应该加个判断,但是这里我没加
只是在输入对应命名的时候我做了非法输入重新输入的操作.然后就是复用性的问题了 ,说白了就是思路不明确想到哪里写哪里的,整个登录系统都是我在学生管理系统写好之后重新加上去的.然后就是后加的学分系统,学分系统进入之后我没有写return,就是说你丫进去了就必须对学生的分数进行修改.....非常的银性
最后 路漫漫其修远兮
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用