大家好,今天我和大家分享一下用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;
}
}

运行结果:

用Java实现简单的学生管理系统相关推荐

  1. java做一个客房管理系统定制_管理皮孩子很难?来,教你一个java设计简单的学生管理系统...

    前言: 孩子不听话,那就系统的管理起来,啊哈哈哈哈 学生成绩管理系统 要求: 完善Student类,Student类包含学号.姓名.年级.专业.三门功课的成绩(英语.高数.计算机)的成员变量,完善成绩 ...

  2. JAVA swing实现简单的学生管理系统

    JAVA swing实现简单的学生管理系统 基本功能介绍 本系统实现了一个简单而实用的学生管理系统,通过这个学生管理系统我们可以进行一些基本的学生管理操作,它可以进行简单的添加学生.删除学生.修改学生 ...

  3. java实现简单的学生信息管理系统

    java实现简单的学生信息管理系统(无界面) 学生类实体: package com.edu.imau.wcy;public class Stu {private String stuNum;//学号p ...

  4. Android——一个简单的学生管理系统

    一个简单的学生管理系统 效果演示 实现功能总览 代码 效果演示 随手做的一个小玩意,还有很多功能没有完善,倘有疏漏,万望海涵. 实现功能总览 实现了登录.注册.忘记密码.成绩查询.考勤情况.课表查看. ...

  5. java学生课程设计报告,Java课程设计报告学生管理系统

    Java课程设计报告学生管理系统 JAVAJAVA 程序设计程序设计 课程设计报告课程设计报告 课课 题题 学生信息管理系统学生信息管理系统 姓姓 名名 学学 号号 设计时间设计时间 2014.6.2 ...

  6. python小项目实例流程-Python小项目:快速开发出一个简单的学生管理系统

    原标题:Python小项目:快速开发出一个简单的学生管理系统 本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: ...

  7. python小项目案例-Python小项目:快速开发出一个简单的学生管理系统

    本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: 包括: 学校信息的管理 教师信息的管理 学生信息的管理 根据A ...

  8. python项目开发实例-Python小项目:快速开发出一个简单的学生管理系统

    本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: 包括: 学校信息的管理 教师信息的管理 学生信息的管理 根据A ...

  9. 用java实现简单的银行管理系统

    用java实现简单的银行管理系统 页面代码之一: mvc设计模式,分包 分包图片 简单效果演示: 登陆主页面 注册页面 登录: 功能页面! 存款 转账 查看近期流水账单! 页面代码之一: packag ...

  10. 基于Java的简单零食商城管理系统

    标题# 基于Java的简单零食商城管理系统 专业团队开发,接受定制 联系VX:Alfalfa-cx 专属源码网站欢迎浏览:http://www.eqicode.com/Code/Index.html ...

最新文章

  1. 最新Pycharm开发工具安装步骤,四大步骤就能学会
  2. android layerlist bitmap,android – 在LayerListDrawable中更改Bitmap Drawable
  3. python输入输出有问题_python – Modbus错误:[输入/输出]无从远程...
  4. HTTP 知识点之一:头部解释(转)
  5. 正则表达式入门教程经典Javascript正则表达式(share)
  6. [工具]将xml文件转换为html显示
  7. 开始学习 PixiJS
  8. 关于URL编码/javascript/js url 编码
  9. html5swf小游戏源码,FLASH打方块小游戏及as3代码
  10. 百度 bos php,GitHub - SwimmingTiger/BOSFS: PHP流包装器:百度开放云对象存储文件系统(BCE BOS File System)...
  11. php极光短信接口接入
  12. java jstl 配置_jstl的tld配置
  13. 8.2计算各商品销售金额
  14. 机器学习中的概念---输入空间、标记空间、样本空间、假设空间、版本空间
  15. 记录chrome 浏览器 本地ip 地址报 CORS 错误
  16. 20190831每日一句 超越你的舒适区,突破自我,继续前进!
  17. 腾讯与360之间引起的反思
  18. 【综述阅读】Graph Neural Networks for Recommender Systems: Challenges, Methods, and Directions
  19. 2016年计算机二级应用试题,计算机二级office真题及答案
  20. 最好用的五大开源入侵检测工具

热门文章

  1. 中国大学MOOC创业基础题库及答案
  2. 别再杀他们祭天了!1024程序员日那些不得不吐槽的点
  3. App Store、Steam、Google Play等出海应用、游戏如何收款到国内账户
  4. Unity3D开发之制作序列帧动画
  5. ※ 冯·诺依曼体系结构——模拟 TOY 计算机(MOOC版)
  6. 2021泰迪杯数据分析技能赛B题解题思路分享
  7. 【服务治理】服务治理漫谈
  8. UE4 Websocket
  9. 添加Android手机 CA系统根证书
  10. cad2017单段线_CAD制图规定-2017最新版.doc