学生管理系统
目录
基础知识图
系统结构图
项目演示
设计思路
学生类
小技巧
通过快捷键 alt+insert 选择 快速添加构造函数和get、set方法
package com.studentManager;
public class Student {
private String name;
private String stunum;
private int age;
private String livePlace;
public Student(){}
public Student(String name,String stunum,int age,String livePlace){
this.name = name;
this.age = age;
this.stunum = stunum;
this.livePlace = livePlace;
}
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public void setStunum(String stunum){
this.stunum = stunum;
}
public void setLivePlace(String livePlace){
this.livePlace = livePlace;
}
public String getName(){
return name;
}
public String getStunum(){
return stunum;
}
public String getLivePlace(){
return livePlace;
}
public int getAge(){
return age;
}
public void show(){
System.out.println(" 姓名 年龄 学号 居住地");
System.out.println(name+" "+age+" "+stunum+" "+livePlace);
}
}
系统主界面编写
难点:退出switch方法采用 System.exit(0) 退出JVM
System.out.println("----欢迎登录学生管理系统----");
System.out.println(">>>请选择以下功能<<<");
int key = 0;
while(true){
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("_________");
Scanner sckey = new Scanner(System.in);
key = sckey.nextInt();
switch (key){
case 1:
getStuMan(stuMan);
break;
case 2:
addStu(stuMan);
break;
case 3:
rmStu(stuMan);
break;
case 4:
changeStu(stuMan);
break;
case 5:
System.exit(0); //jvm 退出
}
}
添加学生方法
//首先需要在系统开始创建ArrayList数据结构存储student
//方便起见我新增了一些学生做初始化
ArrayList<Student> stuMan = new ArrayList<Student>();
stuMan.add(new Student("一口午马","12019131311",24,"青岛"));
stuMan.add(new Student("arch","12019131320",23,"银川"));
stuMan.add(new Student("蕉太狼","12019131328",26,"上海"));
方法——新增学生
public static ArrayList<Student> addStu(ArrayList<Student> stuMan){
//新增学生部分
Scanner sc = new Scanner(System.in);
System.out.println("请输入新增学生的数据:");
//装载数据
System.out.print("姓名:");
String name = sc.nextLine();
System.out.print("年龄:");
int age = sc.nextInt();
Scanner scstunum = new Scanner(System.in);
System.out.print("学号:");
String stunum = scstunum.nextLine();
System.out.print("居住地:");
String livePlace = scstunum.nextLine();
// 存储如ArrayList
stuMan.add(new Student(name,stunum,age,livePlace));
System.out.println("新表如下");
getStuMan(stuMan);
return stuMan;
在系统switch加入我们新增的方法
switch (key){
case 1:
getStuMan(stuMan);
break;
case 2:
addStu(stuMan);
break;
case 3:
rmStu(stuMan);
break;
case 4:
changeStu(stuMan);
break;
case 5:
System.exit(0); //jvm 退出
}
存在一个奇怪的问题,我无法理解。
查看学生方法
public static ArrayList<Student> getStuMan(ArrayList<Student> stuMan){
//查看学生表部分
System.out.println("id 姓名 年龄 学号 居住地");
for(int i=0;i<stuMan.size();i++){
Student stu = stuMan.get(i);
System.out.println(i+" "+stu.getName()+" "+stu.getAge()+"岁 "+stu.getStunum()+" "+stu.getLivePlace());
}
return stuMan;
}
记得在主系统添加方法
switch (key){
case 1:
getStuMan(stuMan);
break;
case 2:
addStu(stuMan);
break;
case 3:
rmStu(stuMan);
break;
case 4:
changeStu(stuMan);
break;
case 5:
System.exit(0); //jvm 退出
}
删除学生方法
我在原本的方法上加了id删除 可以方便直接删除数据
public static ArrayList<Student> rmStu(ArrayList<Student> stuMan){
//删除学生
System.out.println("请选择删除的学生依据:");
System.out.println("1.id");
System.out.println("2.学号");
int i;
//留个坑 其实所有都可以当依据 懒得写 还有多数据查询等问题
while (true){
Scanner sc = new Scanner(System.in);
i = sc.nextInt();
if (i==1||i==2){
break;
}
System.out.println("请选择删除的学生依据:");
System.out.println("1.id");
System.out.println("2.学号");
}
if (i==1){
//删除对应的id的学生数据
System.out.println("请输入删除的学生id:");
Scanner sc = new Scanner(System.in);
int index = sc.nextInt();
System.out.println("您确定删除:");
stuMan.get(index).show();
stuMan.remove(index);
}
else if (i==2){
//删除对应学号的学生数据
System.out.println("请输入删除的学生学号:");
Scanner sc = new Scanner(System.in);
String stunum = sc.nextLine();
int index = -1;
for (int j=0;j<stuMan.size();j++){
if (stunum.equals(stuMan.get(j).getStunum())){
index=j;
System.out.println("index :"+index);
break;
}
}
System.out.println("您确定删除:");
stuMan.get(index).show();
stuMan.remove(index);
}
System.out.println("新表如下");
getStuMan(stuMan);
return stuMan;
}
修改学生方法
新增了选择修改 修改改为通过id判断
public static ArrayList<Student> changeStu(ArrayList<Student> stuMan){
System.out.println("请输入修改的学生id:");
Scanner sc = new Scanner(System.in);
int index = sc.nextInt();
System.out.println("您确定修改:");
stuMan.get(index).show();
System.out.println("您确定修改哪个字段?");
System.out.println("1.姓名");
System.out.println("2.年龄");
System.out.println("3.学号");
System.out.println("4.居住地");
Scanner scstu = new Scanner(System.in);
int choise = scstu.nextInt();
switch (choise){
case 1:
Scanner scname = new Scanner(System.in);
System.out.println("请输入姓名:");
String name = scname.nextLine();
stuMan.get(index).setName(name);
break;
case 2:
Scanner scage = new Scanner(System.in);
System.out.println("请输入年龄:");
int age = scage.nextInt();
stuMan.get(index).setAge(age);
break;
case 3:
Scanner scstunum = new Scanner(System.in);
System.out.println("请输入学号:");
String stunum = scstunum.nextLine();
stuMan.get(index).setStunum(stunum);
break;
case 4:
Scanner scliveplace = new Scanner(System.in);
System.out.println("请输入居住地:");
String livepalce = scliveplace.nextLine();
stuMan.get(index).setName(livepalce);
break;
}
System.out.println("您修改如下:");
stuMan.get(index).show();
System.out.println("新表如下");
getStuMan(stuMan);
return stuMan;
}
所有程序
主函数
package com.studentManager;
import java.util.ArrayList;
import java.util.Scanner;
public class mainSM {
public static void main(String[] args) {
System.out.println("----欢迎登录学生管理系统----");
System.out.println(">>>请选择以下功能<<<");
// 新建空表 初始化
ArrayList<Student> stuMan = new ArrayList<Student>();
stuMan.add(new Student("一口午马","12019131311",24,"青岛"));
stuMan.add(new Student("arch","12019131320",23,"银川"));
stuMan.add(new Student("蕉太狼","12019131328",26,"上海"));
int key = 0;
while(true){
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("_________");
Scanner sckey = new Scanner(System.in);
key = sckey.nextInt();
switch (key){
case 1:
getStuMan(stuMan);
break;
case 2:
addStu(stuMan);
break;
case 3:
rmStu(stuMan);
break;
case 4:
changeStu(stuMan);
break;
case 5:
System.out.println("欢迎使用,再见");
System.exit(0); //jvm 退出
}
}
}
public static ArrayList<Student> getStuMan(ArrayList<Student> stuMan){
//查看学生表部分
System.out.println("id 姓名 年龄 学号 居住地");
for(int i=0;i<stuMan.size();i++){
Student stu = stuMan.get(i);
System.out.println(i+" "+stu.getName()+" "+stu.getAge()+"岁 "+stu.getStunum()+" "+stu.getLivePlace());
}
return stuMan;
}
public static ArrayList<Student> addStu(ArrayList<Student> stuMan){
//新增学生部分
Scanner sc = new Scanner(System.in);
System.out.println("请输入新增学生的数据:");
//装载数据
System.out.print("姓名:");
String name = sc.nextLine();
System.out.print("年龄:");
int age = sc.nextInt();
Scanner scstunum = new Scanner(System.in);
System.out.print("学号:");
String stunum = scstunum.nextLine();
System.out.print("居住地:");
String livePlace = scstunum.nextLine();
// 存储如ArrayList
stuMan.add(new Student(name,stunum,age,livePlace));
System.out.println("新表如下");
getStuMan(stuMan);
return stuMan;
}
public static ArrayList<Student> rmStu(ArrayList<Student> stuMan){
//删除学生
System.out.println("请选择删除的学生依据:");
System.out.println("1.id");
System.out.println("2.学号");
int i;
//留个坑 其实所有都可以当依据 懒得写 还有多数据查询等问题
while (true){
Scanner sc = new Scanner(System.in);
i = sc.nextInt();
if (i==1||i==2){
break;
}
System.out.println("请选择删除的学生依据:");
System.out.println("1.id");
System.out.println("2.学号");
}
if (i==1){
System.out.println("请输入删除的学生id:");
Scanner sc = new Scanner(System.in);
int index = sc.nextInt();
System.out.println("您确定删除:");
stuMan.get(index).show();
stuMan.remove(index);
}
else if (i==2){
System.out.println("请输入删除的学生学号:");
Scanner sc = new Scanner(System.in);
String stunum = sc.nextLine();
int index = -1;
for (int j=0;j<stuMan.size();j++){
if (stunum.equals(stuMan.get(j).getStunum())){
index=j;
System.out.println("index :"+index);
break;
}
}
System.out.println("您确定删除:");
stuMan.get(index).show();
stuMan.remove(index);
}
System.out.println("新表如下");
getStuMan(stuMan);
return stuMan;
}
public static ArrayList<Student> changeStu(ArrayList<Student> stuMan){
System.out.println("请输入修改的学生id:");
Scanner sc = new Scanner(System.in);
int index = sc.nextInt();
System.out.println("您确定修改:");
stuMan.get(index).show();
System.out.println("您确定修改哪个字段?");
System.out.println("1.姓名");
System.out.println("2.年龄");
System.out.println("3.学号");
System.out.println("4.居住地");
Scanner scstu = new Scanner(System.in);
int choise = scstu.nextInt();
switch (choise){
case 1:
Scanner scname = new Scanner(System.in);
System.out.println("请输入姓名:");
String name = scname.nextLine();
stuMan.get(index).setName(name);
break;
case 2:
Scanner scage = new Scanner(System.in);
System.out.println("请输入年龄:");
int age = scage.nextInt();
stuMan.get(index).setAge(age);
break;
case 3:
Scanner scstunum = new Scanner(System.in);
System.out.println("请输入学号:");
String stunum = scstunum.nextLine();
stuMan.get(index).setStunum(stunum);
break;
case 4:
Scanner scliveplace = new Scanner(System.in);
System.out.println("请输入居住地:");
String livepalce = scliveplace.nextLine();
stuMan.get(index).setName(livepalce);
break;
}
System.out.println("您修改如下:");
stuMan.get(index).show();
System.out.println("新表如下");
getStuMan(stuMan);
return stuMan;
}
}
学生类
package com.studentManager;
public class Student {
private String name;
private String stunum;
private int age;
private String livePlace;
public Student(){}
//采用快捷键Alt+insert constructor 全选快速实现构造方法
public Student(String name,String stunum,int age,String livePlace){
this.name = name;
this.age = age;
this.stunum = stunum;
this.livePlace = livePlace;
}
//采用快捷键Alt+insert getter setter 快速生成get set方法!!
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getStunum() {
return stunum;
}
public void setStunum(String stunum) {
this.stunum = stunum;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getLivePlace() {
return livePlace;
}
public void setLivePlace(String livePlace) {
this.livePlace = livePlace;
}
public void show(){
System.out.println(" 姓名 年龄 学号 居住地");
System.out.println(name+" "+age+"岁 "+stunum+" "+livePlace