用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;
}
}
运行结果:
用Java实现简单的学生管理系统相关推荐
- java做一个客房管理系统定制_管理皮孩子很难?来,教你一个java设计简单的学生管理系统...
前言: 孩子不听话,那就系统的管理起来,啊哈哈哈哈 学生成绩管理系统 要求: 完善Student类,Student类包含学号.姓名.年级.专业.三门功课的成绩(英语.高数.计算机)的成员变量,完善成绩 ...
- JAVA swing实现简单的学生管理系统
JAVA swing实现简单的学生管理系统 基本功能介绍 本系统实现了一个简单而实用的学生管理系统,通过这个学生管理系统我们可以进行一些基本的学生管理操作,它可以进行简单的添加学生.删除学生.修改学生 ...
- java实现简单的学生信息管理系统
java实现简单的学生信息管理系统(无界面) 学生类实体: package com.edu.imau.wcy;public class Stu {private String stuNum;//学号p ...
- Android——一个简单的学生管理系统
一个简单的学生管理系统 效果演示 实现功能总览 代码 效果演示 随手做的一个小玩意,还有很多功能没有完善,倘有疏漏,万望海涵. 实现功能总览 实现了登录.注册.忘记密码.成绩查询.考勤情况.课表查看. ...
- java学生课程设计报告,Java课程设计报告学生管理系统
Java课程设计报告学生管理系统 JAVAJAVA 程序设计程序设计 课程设计报告课程设计报告 课课 题题 学生信息管理系统学生信息管理系统 姓姓 名名 学学 号号 设计时间设计时间 2014.6.2 ...
- python小项目实例流程-Python小项目:快速开发出一个简单的学生管理系统
原标题:Python小项目:快速开发出一个简单的学生管理系统 本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: ...
- python小项目案例-Python小项目:快速开发出一个简单的学生管理系统
本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: 包括: 学校信息的管理 教师信息的管理 学生信息的管理 根据A ...
- python项目开发实例-Python小项目:快速开发出一个简单的学生管理系统
本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: 包括: 学校信息的管理 教师信息的管理 学生信息的管理 根据A ...
- 用java实现简单的银行管理系统
用java实现简单的银行管理系统 页面代码之一: mvc设计模式,分包 分包图片 简单效果演示: 登陆主页面 注册页面 登录: 功能页面! 存款 转账 查看近期流水账单! 页面代码之一: packag ...
- 基于Java的简单零食商城管理系统
标题# 基于Java的简单零食商城管理系统 专业团队开发,接受定制 联系VX:Alfalfa-cx 专属源码网站欢迎浏览:http://www.eqicode.com/Code/Index.html ...
最新文章
- 最新Pycharm开发工具安装步骤,四大步骤就能学会
- android layerlist bitmap,android – 在LayerListDrawable中更改Bitmap Drawable
- python输入输出有问题_python – Modbus错误:[输入/输出]无从远程...
- HTTP 知识点之一:头部解释(转)
- 正则表达式入门教程经典Javascript正则表达式(share)
- [工具]将xml文件转换为html显示
- 开始学习 PixiJS
- 关于URL编码/javascript/js url 编码
- html5swf小游戏源码,FLASH打方块小游戏及as3代码
- 百度 bos php,GitHub - SwimmingTiger/BOSFS: PHP流包装器:百度开放云对象存储文件系统(BCE BOS File System)...
- php极光短信接口接入
- java jstl 配置_jstl的tld配置
- 8.2计算各商品销售金额
- 机器学习中的概念---输入空间、标记空间、样本空间、假设空间、版本空间
- 记录chrome 浏览器 本地ip 地址报 CORS 错误
- 20190831每日一句 超越你的舒适区,突破自我,继续前进!
- 腾讯与360之间引起的反思
- 【综述阅读】Graph Neural Networks for Recommender Systems: Challenges, Methods, and Directions
- 2016年计算机二级应用试题,计算机二级office真题及答案
- 最好用的五大开源入侵检测工具