java入门练习——学生管理系统

学生管理系统
 

目录

学生管理系统

项目演示

设计思路

学生类

系统主界面编写

添加学生方法

查看学生方法

删除学生方法

修改学生方法

所有程序

主函数

学生类

效果展示


                                                            基础知识图

                                                           系统结构图

项目演示

设计思路

学生类

小技巧

通过快捷键 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

效果展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值