学生管理系统
在一所学校中,对学生人员流动的管理是很麻烦的,本案例要求编写一个学生管理系统,实现对学生信息的
添加、删除、修改和查询
功能。每个功能的具体要求如下:
系统的首页
用于显示系统所有的操作,并根据用户在控制台的输入选择需要使用的功能。
查询功能
用户选择该功能后,在控制台打印所有学生的信息。
添加功能
用户选择该功能后,要求用户在控制台输入学生学号、姓名、年龄和居住地的基本信息。在输入学号时,判断学号是否被占用,如果被占用则添加失败,并给出相应提示;反之则提示添加成功。
删除功能
用户选择该功能后,提示用户在控制台输入需要删除学生的学号,如果用户输入的学号存在则提示删除成功,反之则提示删除失败。
修改功能
用户选择该功能后,提示用户在控制台输入需要修改的学生学号、姓名、年龄和居住地学生信息,并使用输入的学生学号判断是否有此人,如果有则修改原有的学生信息,反正则提示需要修改的学生信息不存在。
退出功能
用户选择该功能后,程序正常关闭。
本案例要求使用List集合存储自定义的对象,使用List集合的中常用方法实现相关的操作。
分析:
由于java是一个面向对象的语言,在此系统中我们将整个学生管理系统分为三个层次,一是学生类,而是管理学生的管理类,里面定义了一些增删改查学生类的方法,三是对此系统进行测试的测试类,学生类的定义比较简单,下面主要讲一下管理类的增删改查基本操作,我们通过定义两个容器一个ArrayList存储学生类,一个存储学生的学号,方便再添加删除修改前判断学生系统中之前是否存在这个学生
学生类的实现:
分析:学生类中定义了一些基本的学生属性,并通过get set函数对各属性进行了封装,方便日后其他类访问该类的私有成员,该类也重写了object类的toString函数,方便查询输出学生类的相关信息
package com.project001.studentmanage;
/**
* @ProjectName vote
* @ClassName Student
* @Description //
* @Email 2992794262@qq.com
* @Author ASUS
* @Date 2021/9/26
**/
public class Student {
//学号 姓名 性别 年龄 居住地
private int id;
private String name;
private int age;
private String sex;
private String residence;
public int getId() {
return id;
}
public void setId(int 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) {
//对年龄封装
if ( age>0 && age<100){
this.age = age;
}
else{
System.out.println("你输入的年龄有误");
}
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getResidence() {
return residence;
}
public void setResidence(String residence) {
this.residence = residence;
}
@Override//重写toString函数
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", residence='" + residence + '\'' +
'}';
}
}
管理类分析: 下面主要讲一下管理类的增删改查基本操作,我们通过定义两个容器一个ArrayList存储学生类,一个存储学生的学号,方便再添加删除修改前判断学生系统中之前是否存在这个学生
//装学生类的容器arrayList
static ArrayList<Student> arrayList=new ArrayList<Student>();
//装学生学号的容器idList
static ArrayList<Integer> idList=new ArrayList<Integer>();
添加功能:
/*
* @Author Mulan
* @Email 2992794262@qq.com
* @ClassName Manage
* @Description //TODO 添加学生信息
* @Date 17:48 2021/9/26
**/
public static void add(){
System.out.println("--------------添加学生信息-------- ");
Student s=new Student();
System.out.print("学号:");
int id=input.nextInt();
//如果学生的学号没有被占用,就开始存入学生信息
if (!idList.contains(id)){
//将学生学号存入容器,保证学号的唯一性
idList.add(id);
//设置学生的学号
s.setId(id);
System.out.print("姓名:");s.setName(input.next());
System.out.print("性别:");s.setSex(input.next());
System.out.print("年龄:");s.setAge(input.nextInt());
System.out.print("居住地:");s.setResidence(input.next());
arrayList.add(s);
System.out.print("添加已完成......是否退出 回到主界面? (y/n)");
String a=input.next();
//继续添加学生信息
if (a.equals("n")){
add();
}
//回到主界面
else
{
Test.main(null);
}
}
else{
System.out.println("该学号被占用......请重新输入");
add();
}
}
删除功能:
/*
* @Author Mulan
* @Email 2992794262@qq.com
* @ClassName Manage
* @Description //TODO //根据学号迭代删除学生信息
* @Date 17:49 2021/9/26
**/
public static void remove() {
System.out.println("------------删除学生信息----------");
System.out.print("请输入要删除学生的学号 : ");
int id = input.nextInt();
//声明迭代器i 当心并发异常
Iterator i = idList.iterator();
//要删除的学号在学号容器中,则可删除该学生
if (idList.contains(id)){
while (i.hasNext()) {
if (i.next().equals(id)) {
i.remove();
break;
}
}
}
//删除的学生不在学号容器中
else {
System.out.println("删除失败......学号不存在,请重新输入");
remove();
}
//删除学生容器里的学生对象
for (int j=0;j<arrayList.size();j++) {
if (arrayList.get(j).getId()==id){
arrayList.remove(j);
break;
}
}
System.out.println("删除已完成......是否回退出 回到主界面? (y/n)");
String a = input.next();
// 删除学生信息
if (a.equals("n")) {
remove();
}
//回到主界面
else {
Test.main(null);
}
}
修改功能:
/*
* @Author Mulan
* @Description //TODO 根据学号修改学生信息 ps:删除学号容器的原学号,
* 新学号加入到学号容器中,当前学生类的学号等相关信息发生改变,
* 但学生没有被删除,只是相关信息发生了改变
* @Date 2021/9/26
* @Param
* @return
**/
public static void alter() {
System.out.println("------------修改学生信息----------");
System.out.print("请输入学生原学号 : ");
int id = input.nextInt();
//将原学生学号删除
//声明迭代器i 当心并发异常
Iterator i = idList.iterator();
//学号在学号容器中,删除学号容器中的学号
if (idList.contains(id)){
while (i.hasNext()) {
if (i.next().equals(id)) {
i.remove();
break;
}
}
}
//学号不在学号容器中
else {
System.out.println("要修改的学生不存在......请重新输入学号");
alter();
}
//遍历学生列表
for (Student s : arrayList) {
//要修改的学生存在
if (s.getId()==id) {
System.out.print("新学号: ");
int newId = input.nextInt();
//加入新学号
idList.add(newId);
s.setId(newId);
System.out.print("新姓名:");s.setName(input.next());
System.out.print("新性别:"); s.setSex(input.next());
System.out.print("新年龄:");s.setAge(input.nextInt());
System.out.print("新居住地:");s.setResidence(input.next());
System.out.print("修改已完成......是否退出 回到主界面? (y/n)");
String a = input.next();
//继续修改学生信息
if (a.equals("n")) {
alter();
}
//回到主界面
else {
Test.main(null);
}
}
}
}
查询功能:
/*
* @Author Mulan
* @Email 2992794262@qq.com
* @ClassName Manage
* @Description //TODO 查询所有学生信息
* @Date 18:45 2021/9/26
*
*
**/
public static void query(){
int num=1;
for (Student s:arrayList ) {
System.out.println(num+"."+s);
num++;
}
System.out.print("查询已完成......输入y回到主界面");
String a = input.next();
//回到主界面
if (a.equals("y")) {
Test.main(null);
}
}
管理类的完整代码:
package com.project001.studentmanage;
import java.sql.SQLOutput;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
/**
* @ProjectName vote
* @ClassName Manage
* @Description //管理学生的类
* @Email 2992794262@qq.com
* @Author ASUS
* @Date 2021/9/26
**/
public class Manage {
//装学生类的容器arrayList
static ArrayList<Student> arrayList=new ArrayList<Student>();
//装学生学号的容器idList
static ArrayList<Integer> idList=new ArrayList<Integer>();
static Scanner input=new Scanner(System.in);
/*
* @Author Mulan
* @Email 2992794262@qq.com
* @ClassName Manage
* @Description //TODO 添加学生信息
* @Date 17:48 2021/9/26
**/
public static void add(){
System.out.println("--------------添加学生信息-------- ");
Student s=new Student();
System.out.print("学号:");
int id=input.nextInt();
//如果学生的学号没有被占用,就开始存入学生信息
if (!idList.contains(id)){
//将学生学号存入容器,保证学号的唯一性
idList.add(id);
//设置学生的学号
s.setId(id);
System.out.print("姓名:");s.setName(input.next());
System.out.print("性别:");s.setSex(input.next());
System.out.print("年龄:");s.setAge(input.nextInt());
System.out.print("居住地:");s.setResidence(input.next());
arrayList.add(s);
System.out.print("添加已完成......是否退出 回到主界面? (y/n)");
String a=input.next();
//继续添加学生信息
if (a.equals("n")){
add();
}
//回到主界面
else
{
Test.main(null);
}
}
else{
System.out.println("该学号被占用......请重新输入");
add();
}
}
/*
* @Author Mulan
* @Email 2992794262@qq.com
* @ClassName Manage
* @Description //TODO //根据学号迭代删除学生信息
* @Date 17:49 2021/9/26
**/
public static void remove() {
System.out.println("------------删除学生信息----------");
System.out.print("请输入要删除学生的学号 : ");
int id = input.nextInt();
//声明迭代器i 当心并发异常
Iterator i = idList.iterator();
//要删除的学号在学号容器中,则可删除该学生
if (idList.contains(id)){
while (i.hasNext()) {
if (i.next().equals(id)) {
i.remove();
break;
}
}
}
//删除的学生不在学号容器中
else {
System.out.println("删除失败......学号不存在,请重新输入");
remove();
}
//删除学生容器里的学生对象
for (int j=0;j<arrayList.size();j++) {
if (arrayList.get(j).getId()==id){
arrayList.remove(j);
break;
}
}
System.out.println("删除已完成......是否回退出 回到主界面? (y/n)");
String a = input.next();
// 删除学生信息
if (a.equals("n")) {
remove();
}
//回到主界面
else {
Test.main(null);
}
}
/*
* @Author Mulan
* @Description //TODO 根据学号修改学生信息 ps:删除学号容器的原学号,
* 新学号加入到学号容器中,当前学生类的学号等相关信息发生改变,
* 但学生没有被删除,只是相关信息发生了改变
* @Date 2021/9/26
* @Param
* @return
**/
public static void alter() {
System.out.println("------------修改学生信息----------");
System.out.print("请输入学生原学号 : ");
int id = input.nextInt();
//将原学生学号删除
//声明迭代器i 当心并发异常
Iterator i = idList.iterator();
//学号在学号容器中,删除学号容器中的学号
if (idList.contains(id)){
while (i.hasNext()) {
if (i.next().equals(id)) {
i.remove();
break;
}
}
}
//学号不在学号容器中
else {
System.out.println("要修改的学生不存在......请重新输入学号");
alter();
}
//遍历学生列表
for (Student s : arrayList) {
//要修改的学生存在
if (s.getId()==id) {
System.out.print("新学号: ");
int newId = input.nextInt();
//加入新学号
idList.add(newId);
s.setId(newId);
System.out.print("新姓名:");s.setName(input.next());
System.out.print("新性别:"); s.setSex(input.next());
System.out.print("新年龄:");s.setAge(input.nextInt());
System.out.print("新居住地:");s.setResidence(input.next());
System.out.print("修改已完成......是否退出 回到主界面? (y/n)");
String a = input.next();
//继续修改学生信息
if (a.equals("n")) {
alter();
}
//回到主界面
else {
Test.main(null);
}
}
}
}
/*
* @Author Mulan
* @Email 2992794262@qq.com
* @ClassName Manage
* @Description //TODO 查询所有学生信息
* @Date 18:45 2021/9/26
*
*
**/
public static void query(){
int num=1;
for (Student s:arrayList ) {
System.out.println(num+"."+s);
num++;
}
System.out.print("查询已完成......输入y回到主界面");
String a = input.next();
//回到主界面
if (a.equals("y")) {
Test.main(null);
}
}
}
最后当然就是进行测试的测试类啦,比较简单,直接上代码,主要就是通过一个while死循环,一直让用户选择功能,想退出的时候调用系统的退出函数就可以啦
package com.project001.studentmanage;
import java.util.Scanner;
/**
* @ProjectName vote
* @ClassName Test
* @Description //
* @Email 2992794262@qq.com
* @Author ASUS
* @Date 2021/9/26
**/
public class Test {
public static void main(String[] args) {
while (true){
System.out.println("------------------------------------------");
System.out.println("1.添加学生信息");
System.out.println("2.删除学生信息");
System.out.println("3.修改学生信息");
System.out.println("4.查询学生信息");
System.out.println("0.退出系统");
System.out.println("------------------------------------------");
System.out.print("please input your choose :");
Scanner input=new Scanner(System.in);
int n=input.nextInt();
switch (n){
case 1:Manage.add(); //Manage.queryAll(Manage.arrayList);
case 2:Manage.remove();
case 3:Manage.alter();
case 4:Manage.query();
case 0:System.exit(0);
}
}
}
}
具体运行视频见以下bilibili链接
https://www.bilibili.com/video/BV1wv411G7qg?pop_share=1