学生管理系统实现增删改查

学生管理系统实现增删改查



前言

学生管理系统通过集合实现学生信息添加,修改,删除,查找,输出所有信息等功能。


一、代码块

import java.util.ArrayList;
import java.util.Scanner;

public class test {
    static Scanner sc = new Scanner(System.in);
    public static void main(String[] args) {
        kaishi();
    }
    public static void kaishi(){
        jiekou jk = new chuli();
        while(true){
            System.out.println("===========学生管理系统==============");
            System.out.println("\t1,添加新学生信息");
            System.out.println("\t2,删除学生信息");
            System.out.println("\t3,修改学生信息");
            System.out.println("\t4,查询学生信息");
            System.out.println("\t5,输出所有学生信息");
            System.out.println("\t6,退出系统");
            int key = sc.nextInt();
            switch(key){
                case 1:
                    if (jk.add()) System.out.println("添加成功");
                    else System.out.println("添加失败");
                    break;
                case 2:
                    if(jk.rmove()) System.out.println("删除成功");
                    else System.out.println("删除失败");
                    break;
                case 3:
                    if(jk.updata()) System.out.println("修改成功");
                    else System.out.println("修改失败");
                    break;
                case 4:
                    jk.show();
                    break;
                case 5:
                    jk.print();
                    break;
                case 6:
                    System.out.println("退出成功");
                    return;
                default:
                    System.out.println("输入有误");
            }
        }
    }
}

interface jiekou{
    boolean add();       //添加
    boolean rmove();     //删除
    boolean updata();    //修改
    void show();         //查询
    void print();        //输出
}
class chuli implements jiekou{
    Scanner sc = new Scanner(System.in);
    public ArrayList<Student> arr = new ArrayList<>();
    //构造方法
    public chuli(){
        arr.add(new Student("aierken","nan",18,"19199467744" ,"xinjiang"));
        arr.add(new Student("nijia","nan",18,"19199466445" ,"shandong"));
        arr.add(new Student("aier","nv",25,"19199557744" ,"beijing"));
        arr.add(new Student("ken","nv",36,"19199467744" ,"xinjiang"));
        arr.add(new Student("aier","nv",25,"19199557744" ,"beijing"));
    }
    //添加
    @Override
    public boolean add(){
        try{
            System.out.println("-------添加学生信息--------");
            System.out.print("\t请输入学生姓名:");
            String name = sc.next();
            System.out.print("\t请输入学生性别:");
            String bl = sc.next();
            System.out.print("\t请输入学生年龄:");
            int age = sc.nextInt();
            System.out.print("\t请输入学生电话:");
            String phone = sc.next();
            System.out.print("\t请输入学生地址:");
            String address = sc.next();
            arr.add(new Student(name,bl,age,phone,address));
            return true;
        }catch(Exception e){
            sc.next();
            System.out.println("输入格式有误");
        }
        return false;
    }
    //删除
    @Override
    public boolean rmove(){
        System.out.println("-------删除学生信息--------");
        System.out.print("\t请输入要删除的学生姓名:");
        String name = sc.next();
        Student[] stunum = chazhao(name);
        int num = stunum.length;
        if(num!=0){
            if (num == 1){
                arr.remove(stunum[0]);
                return true;
            }
            System.out.println("您要删除哪一个?(请输入序号)");
            int key = sc.nextInt();
            if(key<=num){
                arr.remove(stunum[key-1]);
                return true;
            }
            System.out.println("输入有误");
        }
        return false;
    }
    //修改    查询要修改的学生
    @Override
    public boolean updata() {
        System.out.println("-------修改学生信息--------");
        System.out.print("\t请输入要修改的学生姓名:");
        String name = sc.next();
        Student[] stunum = chazhao(name);
        int num = stunum.length;
        if(num!=0){
            if (num == 1){
                arr.add(xiugai(stunum[0]));
                arr.remove(stunum[0]);
                return true;
            }
            System.out.println("您要修改哪一个?(请输入序号)");
            int key = sc.nextInt();
            if(key<=num){
                arr.add(xiugai(stunum[0]));
                arr.remove(stunum[0]);
                return true;
            }
            System.out.println("输入有误");
        }
        return false;
    }
    //查询
    @Override
    public void show(){
        System.out.println("---------查询学生信息--------");
        System.out.print("请输入要查询的学生姓名:");
        String name = sc.next();
        chazhao(name);
    }
    //输出所有
    @Override
    public void print(){
        System.out.println("----------输出所有学生信息----------");
        for (Student stu:arr){
            System.out.println(stu.toString());
        }
    }

    //修改方法    对值进行修改并返回
    public Student xiugai(Student stu){
        System.out.println("请输入修改选项:");
        System.out.println("\t1,姓名:"+"\n"+
                            "\t2,年龄:"+"\n"+
                            "\t3,电话:"+"\n"+
                            "\t4,地址:");
        int key = sc.nextInt();
        switch(key){
            case 1:
                System.out.print("请输入新名:");
                stu.setName(sc.next());
                break;
            case 2:
                System.out.print("请输入年龄:");
                stu.setAge(sc.nextInt());
                break;
            case 3:
                System.out.print("请输入电话:");
                stu.setPhone(sc.next());
                break;
            case 4:
                System.out.print("请输入地址:");
                stu.setAddress(sc.next());
                break;
            default:
                System.out.println("输入有误");
        }
        return stu;
    }
    //查找方法      查找给定的学生信息并返回
    public Student[] chazhao(String name){
        Student[] stunum = new Student[arr.size()];
        int num = 0;
        for (Student stu : arr){
            if(name.equals(stu.getName())){
                stunum[num] = stu;
                num++;
            }
        }
        System.out.println("共找到"+num+"个"+name);
        System.out.println();
        Student[] students = new Student[num];
        for(int i=0;i<num;i++){
            System.out.println((i+1)+","+stunum[i].toString());
            students[i] = stunum[i];
        }
        return students;
    }
}

class Student{
    private String name;    //姓名
    final String bl;     //性别
    private int age;    //年龄
    private String phone;   //电话
    private String address;     //地址
    public Student(String name,String bl,int age,String phone,String address){
        this.name = name;
        this.bl = bl;
        this.age = age;
        this.phone = phone;
        this.address = address;
    }

    @Override
    public String toString() {
        return "姓名=" + name + "\t" +
                ", 性别=" + bl +
                ", 年龄=" + age +
                ", 电话=" + phone + "\t"  +
                ", 地址=" + address + "\t" ;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    /*public String isBl() {
        return bl;
    }
    public void setBl(String bl) {
        this.bl = bl;
    }*/
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    /*public String getPhone() {
        return phone;
    }*/
    public void setPhone(String phone) {
        this.phone = phone;
    }
    /*public String getAddress() {
        return address;
    }*/
    public void setAddress(String address) {
        this.address = address;
    }
}

二、代码分析

1.代码思路

代码是由简单工厂类思路编写,在编写好学生类之后,再编写一个jiekou类接口:
接口有 添加 删除 修改 查询 输出所有 等方法
这些方法由chuli类实现
在主类编写一个kaishi方法,在方法中处理用户的选择以及操作反馈。

2,学生类

在学生类定义属性,get set方法以及重写toString方法

class Student{
    private String name;    //姓名
    final String bl;     //性别
    private int age;    //年龄
    private String phone;   //电话
    private String address;     //地址
    public Student(String name,String bl,int age,String phone,String address){
        this.name = name;
        this.bl = bl;
        this.age = age;
        this.phone = phone;
        this.address = address;
    }

    @Override
    public String toString() {
        return "姓名=" + name + "\t" +
                ", 性别=" + bl +
                ", 年龄=" + age +
                ", 电话=" + phone + "\t"  +
                ", 地址=" + address + "\t" ;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    /*public String isBl() {
        return bl;
    }
    public void setBl(String bl) {
        this.bl = bl;
    }*/
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    /*public String getPhone() {
        return phone;
    }*/
    public void setPhone(String phone) {
        this.phone = phone;
    }
    /*public String getAddress() {
        return address;
    }*/
    public void setAddress(String address) {
        this.address = address;
    }
}

3,接口

在接口编写 添加 删除 修改 查询 输出所有 等方法,让chuli类实现接口

interface jiekou{
    boolean add();       //添加
    boolean rmove();     //删除
    boolean updata();    //修改
    void show();         //查询
    void print();        //输出
}

4,chuli类

  1. chuli类实现接口jiekou
  2. 在处理类中定义容器,并把新添加的学生类添加到容器中。
  3. 编写构造方法,在构造方法中添加几个学生信息。
  4. 在实现接口jiekou的同时再编写两个方法,为实现接口方法使用。
class chuli implements jiekou{
    Scanner sc = new Scanner(System.in);
    public ArrayList<Student> arr = new ArrayList<>();
    //构造方法
    public chuli(){
        arr.add(new Student("aierken","nan",18,"19199465744" ,"xinjiang"));
        arr.add(new Student("nijia","nan",18,"19199466445" ,"shandong"));
        arr.add(new Student("aier","nv",25,"19199557744" ,"beijing"));
        arr.add(new Student("ken","nv",36,"19199435744" ,"xinjiang"));
        arr.add(new Student("aier","nv",25,"19199557744" ,"beijing"));
    }
    //添加
    @Override
    public boolean add(){
        try{
            System.out.println("-------添加学生信息--------");
            System.out.print("\t请输入学生姓名:");
            String name = sc.next();
            System.out.print("\t请输入学生性别:");
            String bl = sc.next();
            System.out.print("\t请输入学生年龄:");
            int age = sc.nextInt();
            System.out.print("\t请输入学生电话:");
            String phone = sc.next();
            System.out.print("\t请输入学生地址:");
            String address = sc.next();
            arr.add(new Student(name,bl,age,phone,address));
            return true;
        }catch(Exception e){
            sc.next();
            System.out.println("输入格式有误");
        }
        return false;
    }
    //删除
    @Override
    public boolean rmove(){
        System.out.println("-------删除学生信息--------");
        System.out.print("\t请输入要删除的学生姓名:");
        String name = sc.next();
        Student[] stunum = chazhao(name);
        int num = stunum.length;
        if(num!=0){
            if (num == 1){
                arr.remove(stunum[0]);
                return true;
            }
            System.out.println("您要删除哪一个?(请输入序号)");
            int key = sc.nextInt();
            if(key<=num){
                arr.remove(stunum[key-1]);
                return true;
            }
            System.out.println("输入有误");
        }
        return false;
    }
    //修改    查询要修改的学生
    @Override
    public boolean updata() {
        System.out.println("-------修改学生信息--------");
        System.out.print("\t请输入要修改的学生姓名:");
        String name = sc.next();
        Student[] stunum = chazhao(name);
        int num = stunum.length;
        if(num!=0){
            if (num == 1){
                arr.add(xiugai(stunum[0]));
                arr.remove(stunum[0]);
                return true;
            }
            System.out.println("您要修改哪一个?(请输入序号)");
            int key = sc.nextInt();
            if(key<=num){
                arr.add(xiugai(stunum[0]));
                arr.remove(stunum[0]);
                return true;
            }
            System.out.println("输入有误");
        }
        return false;
    }
    //查询
    @Override
    public void show(){
        System.out.println("---------查询学生信息--------");
        System.out.print("请输入要查询的学生姓名:");
        String name = sc.next();
        chazhao(name);
    }
    //输出所有
    @Override
    public void print(){
        System.out.println("----------输出所有学生信息----------");
        for (Student stu:arr){
            System.out.println(stu.toString());
        }
    }

    //修改方法    对值进行修改并返回
    public Student xiugai(Student stu){
        System.out.println("请输入修改选项:");
        System.out.println("\t1,姓名:"+"\n"+
                            "\t2,年龄:"+"\n"+
                            "\t3,电话:"+"\n"+
                            "\t4,地址:");
        int key = sc.nextInt();
        switch(key){
            case 1:
                System.out.print("请输入新名:");
                stu.setName(sc.next());
                break;
            case 2:
                System.out.print("请输入年龄:");
                stu.setAge(sc.nextInt());
                break;
            case 3:
                System.out.print("请输入电话:");
                stu.setPhone(sc.next());
                break;
            case 4:
                System.out.print("请输入地址:");
                stu.setAddress(sc.next());
                break;
            default:
                System.out.println("输入有误");
        }
        return stu;
    }
    //查找方法      查找给定的学生信息并返回
    public Student[] chazhao(String name){
        Student[] stunum = new Student[arr.size()];
        int num = 0;
        for (Student stu : arr){
            if(name.equals(stu.getName())){
                stunum[num] = stu;
                num++;
            }
        }
        System.out.println("共找到"+num+"个"+name);
        System.out.println();
        Student[] students = new Student[num];
        for(int i=0;i<num;i++){
            System.out.println((i+1)+","+stunum[i].toString());
            students[i] = stunum[i];
        }
        return students;
    }
}

5, 在主类中,kaishi方法

  1. 在方法中定义接口并创建处理类。
  2. 通过while循环判断用户选择,对用户选择进行处理并反馈处理结果。
public static void kaishi(){
    jiekou jk = new chuli();
    while(true){
        System.out.println("===========学生管理系统==============");
        System.out.println("\t1,添加新学生信息");
        System.out.println("\t2,删除学生信息");
        System.out.println("\t3,修改学生信息");
        System.out.println("\t4,查询学生信息");
        System.out.println("\t5,输出所有学生信息");
        System.out.println("\t6,退出系统");
        int key = sc.nextInt();
        switch(key){
            case 1:
                if (jk.add()) System.out.println("添加成功");
                else System.out.println("添加失败");
                break;
            case 2:
                if(jk.rmove()) System.out.println("删除成功");
                else System.out.println("删除失败");
                break;
            case 3:
                if(jk.updata()) System.out.println("修改成功");
                else System.out.println("修改失败");
                break;
            case 4:
                jk.show();
                break;
            case 5:
                jk.print();
                break;
            case 6:
                System.out.println("退出成功");
                return;
            default:
                System.out.println("输入有误");
        }
    }
}

5,显示效果

  • 主页
===========学生管理系统==============
	1,添加新学生信息
	2,删除学生信息
	3,修改学生信息
	4,查询学生信息
	5,输出所有学生信息
	6,退出系统
  • 添加学生
===========学生管理系统==============
	1,添加新学生信息
	2,删除学生信息
	3,修改学生信息
	4,查询学生信息
	5,输出所有学生信息
	6,退出系统
1
-------添加学生信息--------
	请输入学生姓名:kenken
	请输入学生性别:男
	请输入学生年龄:25
	请输入学生电话:19999999999
	请输入学生地址:新疆
添加成功
  • 删除学生

===========学生管理系统==============
	1,添加新学生信息
	2,删除学生信息
	3,修改学生信息
	4,查询学生信息
	5,输出所有学生信息
	6,退出系统
2
-------删除学生信息--------
	请输入要删除的学生姓名:aier
共找到2个aier

1,姓名=aier	, 性别=nv, 年龄=25, 电话=19199557744	, 地址=beijing	
2,姓名=aier	, 性别=nv, 年龄=25, 电话=19199557744	, 地址=beijing	
您要删除哪一个?(请输入序号)
1
删除成功
  • 修改学生信息
===========学生管理系统==============
	1,添加新学生信息
	2,删除学生信息
	3,修改学生信息
	4,查询学生信息
	5,输出所有学生信息
	6,退出系统
3
-------修改学生信息--------
	请输入要修改的学生姓名:kenken
共找到1个kenken

1,姓名=kenken	, 性别=, 年龄=25, 电话=19999999999	, 地址=新疆	
请输入修改选项:
	1,姓名:
	2,年龄:
	3,电话:
	4,地址:
4
请输入地址:北京
修改成功
  • 查询学生信息
===========学生管理系统==============
   1,添加新学生信息
   2,删除学生信息
   3,修改学生信息
   4,查询学生信息
   5,输出所有学生信息
   6,退出系统
4
---------查询学生信息--------
请输入要查询的学生姓名:kenken
共找到1个kenken

1,姓名=kenken	, 性别=, 年龄=25, 电话=19999999999	, 地址=北京	
===========学生管理系统==============
   1,添加新学生信息
   2,删除学生信息
   3,修改学生信息
   4,查询学生信息
   5,输出所有学生信息
   6,退出系统
4
---------查询学生信息--------
请输入要查询的学生姓名:baba
共找到0个baba
  • 输出所有学生信息
===========学生管理系统==============
	1,添加新学生信息
	2,删除学生信息
	3,修改学生信息
	4,查询学生信息
	5,输出所有学生信息
	6,退出系统
5
----------输出所有学生信息----------
姓名=aierken	, 性别=nan, 年龄=18, 电话=19199467744	, 地址=xinjiang	
姓名=nijia	, 性别=nan, 年龄=18, 电话=19199466445	, 地址=shandong	
姓名=ken	, 性别=nv, 年龄=36, 电话=19199467744	, 地址=xinjiang	
姓名=aier	, 性别=nv, 年龄=25, 电话=19199557744	, 地址=beijing	
姓名=kenken	, 性别=, 年龄=25, 电话=19999999999	, 地址=北京	
  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值