用Java实现简单的学生管理系统

      大家好,今天我和大家分享一下用Java中的数组和ArrayList集合分别来实现简单的学生管理系统。过几期,我和大家分享一下用Java和数据库来实现学生管理系统。

       一个简单的学生管理系统应该包括:学生对象,对学生对象的操作(管理):添加学生信息、删除学生信息、修改学生信息和显示学生信息,还有一个界面显示。在进行增删改查操作时,我们可以返回一个boolean类型的值来判断增删改查操作是否成功。

首先我先用数组来实现简单的学生管理系统:

     学生类:就是一个实体类,只有学生的属性和相应的setter和getter方法还有构造器。这里我就只写学生属性。

public class Stu {
//学生学号
private int sno;
//学生姓名
private String name;
//学生性别
private String sex;
//学生年龄
private int age;
//学生学科
private String major;
}

       学生管理类我们对于数组的操作都是基于数组的索引,添加学生信息时,想要实现学生信息添加后,数组的索引要指向数组的下一个位置,我们就需要定义一个索引,在添加学生信息后索引就加1。

public class StuManage {
//储存学生对象的数组
private Stu[] stus = new Stu[10];
//数组的索引
private int index;

添加操作:因为我们定义的是一个定长的数组,所以要将考虑它是否已经装满数据。

//添加学生功能
public boolean addStu(Stu s) {
//判断数组是否已满
if (index > stus.length - 1) {
    return false;
}
stus[index++] = s;
return true;
}

删除操作由于不知道给定学号的学生在数组中的索引,所以我们要把数组中所有学生的学号拿出来和给定的学号来对比,找到给定学号的学生然后把他删除。删除数组的功能是基于数组拷贝,我们可以把要删除的地方后面的部分向前移动。注意要把数组的最后一位设置为空

//根据学生学号删除学生功能
public boolean deleteStu(int sno) {
for (int i = 0; i < stus.length; i++) {
    Stu s = stus[i];
    if (Objects.nonNull(s) && Objects.equals(sno, s.getSno())) {
        System.arraycopy(stus, i + 1, stus, i, stus.length - i - 1);
        index--;
        stus[stus.length-1]=null;
        return true;
    }
}
return false;
}

显示所有学生信息操作:就是把数组给遍历出来,在学生类中要重写toString方法,不然输出的会是地址。

//显示所有学生信息功能
public void showAllStu() {
for (Stu student : stus) {
    if (Objects.nonNull(student)) {
    System.out.println(student);
    }
}
}

修改操作:修改和删除一样,要根据学生的学号找到学生在数组中的索引,再修改学生信息。

//根据学生学号修改学生学科功能
public boolean modifyStu(int sno, String major) {
for (int i = 0; i < stus.length; i++) {
    Stu s = stus[i];
    if (Objects.nonNull(s) && Objects.equals(sno, s.getSno())) {
        s.setMajor(major);
        return true;
    }
}
return false;
}

显示单个学生信息操作:显示单个学生信息和修改还有删除一样。

//根据学生学号显示学生信息功能
public boolean showStuFromID(int sno) {
for (int i = 0; i < stus.length; i++) {
    Stu s = stus[i];
    if (Objects.nonNull(s) && Objects.equals(sno, s.getSno())) {
        System.out.println(s);
        return true;
}
}
return false;
}

测试类:

public class TestStu {
static Scanner sc = new Scanner(System.in);
//新建一个StuManage对象,后面方便调用里面的方法
static StuManage sm = new StuManage();
//下面用的输出语句多,我把它包装成方法
private static void msg(String msg) {
    System.out.println(msg);
}
public static void main(String[] args) {
    start();
}

显示界面:用switch来判断指令然后执行相应方法。

private static void start() {
msg("======学生成绩管理系统=====");
msg("[1] 添加学生信息");
msg("[2] 学生信息列表");
msg("[3] 删除指定学生信息");
msg("[4] 查询指定学生信息");
msg("[5] 修改指定学生的学科");
msg("[0] 退出系统");
msg("========================");
msg("请输入指令:");
int i = sc.nextInt();
switch (i) {
    case 1:
        addStu();
        break;
    case 2:
        showAll();
        break;
    case 3:
        delStu();
        break;
    case 4:
        showStuFromID();
        break;
    case 5:
        modify();
        break;
    case 0:
        msg("谢谢使用,再见!");
        System.exit(0);
        break;
    default:
        msg("指令错误,请重新输入");
        start();
        break;
}
}

输入指令后执行的方法:

/**
* 添加学生信息
*/
private static void addStu() {
msg("请输入学号:");
int sno = sc.nextInt();
msg("请输入姓名");
String name = sc.next();
msg("请输入性别");
String sex = sc.next();
msg("请输入年龄");
int age = sc.nextInt();
msg("请输入学科");
String major = sc.next();
//根据读取的学生信息创建学生对象
Stu s = new Stu(sno, name, sex, age, major);
    if (sm.addStu(s)) {
        msg("添加成功");
    } else {
        msg("容量存储不足");
    }
start();
/**
* 学生信息列表
*/
private static void showAll() {
    sm.showAllStu();
    start();
}
}
​
/**
* 删除指定学号的学生信息
*/
private static void delStu() {
msg("输出你想删除的学生学号");
int sno = sc.nextInt();
    if (sm.deleteStu(sno)) {
        msg("删除成功");
    } else {
        msg("删除失败");
    }
start();
}
/**
* 显示指定学号的学生信息
*/
private static void showStuFromID() {
msg("输出你想显示的学生学号");
int sno = sc.nextInt();
    if (sm.showStuFromID(sno)) {
        msg("显示成功");
    } else {
        msg("没有这名学生,显示失败");
    }
start();
}
/**
* 修改指定学号学生的学科
*/
private static void modify() {
msg("输出你想修改的学生学号");
int sno = sc.nextInt();
msg("输出你想修改的学科");
String major = sc.next();
    if (sm.modifyStu(sno,major)) {
        msg("修改成功");
    } else {
        msg("没有这名学生,修改失败");
    }
start();
}

使用ArrayList集合来实现简单的学生管理系统:学生类和测试类都和用数组实现的方法一样。

学生管理类:ArrayList集合的增删改查和数组的原理一样,只不过ArrayList集合做添加功能用add方法就行了(它的索引会自动加1),删除功能用remove方法(内部的实现还是基于数组的拷贝)。

public class StudentManage {
List<Stu> stus = new ArrayList<>();
​
//添加学生功能
public boolean addStu(Stu s) {
    stus.add(s);
    return true;
}
​
//根据学生学号删除学生功能
public boolean deleteStu(int sno) {
if (Objects.nonNull(stus)) {
    for (int i = 0; i < stus.size(); i++) {
        if (Objects.equals(sno, stus.get(i).getSno())) {
            stus.remove(i);
            return true;
        }
    }
}
return false;
}
    
//显示所有学生信息功能
public void showAllStu() {
if (Objects.nonNull(stus)) {
    for (Stu Stu : stus) {
    System.out.println(Stu);
    }
}
}
​
//根据学生学号修改学生学科功能
public boolean modifyStu(int sno, String major) {
if (Objects.nonNull(stus)) {
    for (int i = 0; i < stus.size(); i++) {
        if (Objects.equals(sno, stus.get(i).getSno())) {
        stus.get(i).setMajor(major);
        return true;
        }
    }
}
return false;
}
​
//根据学生学号显示学生信息功能
public boolean showStuFromID(int sno) {
if (Objects.nonNull(stus)) {
    for (int i = 0; i < stus.size(); i++) {
        if (Objects.equals(sno, stus.get(i).getSno())) {
        System.out.println(stus.get(i));
        return true;
        }
    }
}
return false;
}
}

运行结果:

 

 

 

 

 

 

 

 

 

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值