用java语言编写出一个学生管理系统
功能要求:
1,增添学生(学号,班级,性别,姓名);询问是否继续进行增加操作,否进入菜单
2,查询学生(查询学号输出该学生所有信息;查询姓名输出该学生所有信息;输入班级,打印该班级的所有同学);后续操作返回菜单
3,输入学号后,先判断是否有该学生后执行删除操作,删除对应学生的所有信息;并且询问是否继续进行删除操作,否返回菜单。
输入学号修改学生信息;
程序要求:
1:利用java类的对象,继承和接口相关知识,进行增删改查。
(1)、其中要求用接口实现删除和修改操作。
(2)、需要继承抽象类,抽象类中有增删该查的抽象方法。
2:程序需要有菜单
类似:*****************************
增加学生
删除学生

******************************
※主要看功能
2:代码整洁。要求带有注释。

解决方案 »

  1.   

    package cn.qn.demo01;import java.util.Arrays;//学号,班级,性别,姓名
    public class Student extends Clazz implements Method {// 学生类继承抽象类班级 用来提取抽象方法
    static int id;
    static int clazz;
    static String sex;
    static String name;
    public Student() {
    super();
    }
    public Student(int id, int clazz, String sex, String name) {// 创建一个学生的构造方法
    super();
    this.id = id;
    this.clazz = clazz;
    this.sex = sex;
    this.name = name;
    }
    static Student[] arr = new Student[10];
    static int count;
    // public void init() {
    // Student[]arr=new Student[10];
    // arr[0]=new Student(24,1,'女',"啊嘛");
    // }
    // }
    public void addStudent(Student s) {
    for (int i = 0; i < arr.length; i++) {// 遍历数组
    if (arr.length == count) {
    arr = Arrays.copyOf(arr, arr.length + 1);// 如果数组长度等于预先设置的count 就把数组长度加一个再复制成一个新的arr
    }
    }
    arr[count] = s;// 此时count就代表了这个数组最后的哪个元素下标 这个对象s被添加到数组里的最后一位
    count++;// 下一次再添加的时候 数组里就多出一个null位置 放新的添加元素
    }
    public void removeStudent(int id) {
    int index = -1;
    for (int i = 0; i < count; i++) {
    if (arr[i].id == id) {
    index = i;// 遍历数组 找到这个id对应的数组里的元素 并把这个元素的下标赋值给index
    break;
    }
    }
    if (index == -1) {// 说实话从这里开始我也不是很明白了
    return;
    }
    System.arraycopy(arr, count + 1, arr, index, count - index - 1);// 这个赋值新的数组也理解不通
    count--;
    } public boolean updateStudent(Student s) {
    for (int i = 0; i < count; i++) {
    if (arr[i].id == s.id) {// 遍历数组 找到这个数组里id与输入参数s的id相同的元素
    arr[i] = s;
    return true;
    }
    }
    return false;
    } public Student queryStudent(int id) {
    for (int i = 0; i < count; i++) {
    if (arr[i].id == id) {
    return arr[i];// 同上 遍历 找到相同的元素 这个元素就是我们要找的学生对象 然后返回学生对象.
    }
    }
    return null;
    }
    }
    package cn.qn.demo01;public abstract class Clazz implements Method{
    public abstract void addStudent(Student s);
    public abstract void removeStudent(int id);
    public abstract boolean updateStudent(Student s);
    public abstract Student queryStudent(int id);
    }
    package cn.qn.demo01;public interface Method {
    void removeStudent(int id);
    Student queryStudent(int id); 
    }package cn.qn.demo01;import java.util.Scanner;public class Test extends Student {
    public static void main(String[] args) {
    Student s = new Student();
    Scanner sc = new Scanner(System.in);
    xh: while (true) {
    System.out.println("***********************************");
    System.out.println("=============班级管理系统=============");
    System.out.println("1.当前班级学生列表\n2.增添学生\n3.删除学生\n4.修改学生信息\n5.退出系统");
    System.out.println("***********************************");
    System.out.println();
    switch (sc.nextInt()) {
    case 1:
    System.out.println("输入1:当前班级学生列表\n学号\t班级\t性别\t年龄");
    // s.init();
    for (int i = 0; i < count; i++) {
    System.out.println(arr[i].id + "\t" + arr[i].clazz + "\t" + arr[i].sex + "\t" + arr[i].name);
    }
    break;
    case 2:
    System.out.println("输入2:增添学生");
    System.out.println("是否继续进行添加学生操作:1.是\t2.否(返回菜单)");
    if (sc.nextInt() == 1) {
    System.out.println("请输入添加学生学号");
    s.id = sc.nextInt();
    System.out.println("请输入添加学生班级");
    s.clazz = sc.nextInt();
    System.out.println("请输入添加学生性别");
    s.sex = sc.next();
    System.out.println("请输入添加学生姓名");
    s.name = sc.next();
    Student s1 = new Student(s.id, s.clazz, s.sex, s.name);
    s.addStudent(s1);
    System.out.println("添加学生完成!");
    break;
    } else if (sc.nextInt() == 2) {
    break;
    }
    case 3:
    System.out.println("输入3:删除学生");
    System.out.println("请输入学生id");
    s.removeStudent(sc.nextInt());
    System.out.println("删除学生完成!");
    break;
    case 4:
    System.out.println("输入4:修改学生信息");
    System.out.println("请输入要修改学生的学号");
    // s.id=sc.nextInt();
    s.queryStudent(sc.nextInt());
    System.out.println("请输入要修改后的学号:");
    s.updateStudent(s.queryStudent(sc.nextInt()));
    System.out.println("修改学生完成!");
    break;
    case 5:
    System.out.println("退出系统");
    break xh;
    }
    }
    }
    }
    我尽力了 我也是才学完面向对象的小白 早上刚好看到你的问题 想着当一道练习题来做一下 
    我这个代码问题很多 咱们两个本着交流探讨学习的目的一起分析一下吧首先
    ①题里说以班级划分 我没有做 现在是以所有的学生作为一个数组 感觉要是再以班级划分 应该要把当前集合再放到一个大数组中 或者用二维数组  想了一下感觉自己有点整不过来②添加和删除不知道哪里出了问题 添加的话会把上一次添加的数据 覆盖   删除的话只能删除最后一个数据 没办法根据id来删除③修改把我自己都给修懵逼了....其实我网上找到答案都是用集合来做的 但是我还没有学到集合.....
      

  2.   

    兄弟 不知道你学到哪一部分了.. 我今天刚刚简单学了一下集合..
    然后我才发现.....
    数组..是用来放基本数据类型的...也就是通常的int double String boolean等.....
    集合 是用来放引用数据类型的...类class  接口interface  数组....
    刚学的集合第一章节 差不多就是教了 add remove 等方法...也就是往集合里添加 删除元素 如果这样的话 用数组的只是来解决上面这道题  emmmm  感觉应该也不是解不出来.. 但是应该不是我这种小白能驾驭的了的..
    感觉就像 我现在只学了加法... 然而你要我解决 5的三次方....  虽然也能解出来 但是很费劲 而且如果加法掌握的不好 中间也会很容易出错 我前几天也发了个求助帖 是超市系统 和你这题如出一辙! 等我把集合学明白了再用集合来做 哈哈哈哈
      

  3.   

    还是失败了..  看来还是只学到了 皮毛..从增加那里 如果集合里是空的 第二步添加学生 都进不去.. 用迭代器直接就结束了 因为集合里什么都没有 如果给集合预先设置一个 都为初始值的元素 也只能添加一次 第二次还会改掉第一次 而且变的更奇怪了 而且不知道为什么 使用迭代器设置完第一个之后 循环回去直接报错..package cn.qn.demo03;import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;
    import java.util.Scanner;public class Test extends Student {
        public static void main(String[] args) {
            Collection<Student> col = new ArrayList<Student>();
            Student s1 = new Student(0, 0, null, null);
            col.add(s1);
            Scanner sc = new Scanner(System.in);
            xh:
            while (true) {
                System.out.println("***********************************");
                System.out.println("=============班级管理系统=============");
                System.out.println("1.当前班级学生列表\n2.增添学生\n3.删除学生\n4.修改学生信息\n5.退出系统");
                System.out.println("***********************************");
                System.out.println();
                switch (sc.nextInt()) {
                    case 1:
                        System.out.println("输入1:当前班级学生列表\n学号\t班级\t性别\t年龄");
    // s.init();
                        for (int i = 0; i < col.size(); i++) {
                            System.out.println(col.toString());
                        }
                        break;
                    case 2:
                        System.out.println("输入2:增添学生");
                        System.out.println("是否继续进行添加学生操作:1.是\t2.否(返回菜单)");
                        if (sc.nextInt() == 1) {
                            Iterator<Student> it = col.iterator();
                            while (it.hasNext()) {
                                Student a = it.next();
                                System.out.println("请输入添加学生学号");
                                a.setId(sc.nextInt());
                                System.out.println("请输入添加学生班级");
                                a.setClazz(sc.nextInt());
                                System.out.println("请输入添加学生性别");
                                a.setSex(sc.next());
                                System.out.println("请输入添加学生姓名");
                                a.setName(sc.next());
                                col.add(a);
                                System.out.println("添加学生完成!");
                                break;
                            }                            break;
                            } else if (sc.nextInt() == 2) {
                                break;
                            }
                            case 3:
                                System.out.println("输入3:删除学生");
                                System.out.println("请输入学生学号");
                                Iterator<Student> it = col.iterator();
                                while (it.hasNext()) {
                                    Student a = it.next();
                                    for (Student r : col) {
                                        if (r.getId() == sc.nextInt()) {
                                            it.remove();
                                        }
                                    }
                                }
                                System.out.println("删除学生完成!");
                                break;
    //                case 4:
    //                    System.out.println("输入4:修改学生信息");
    //                    System.out.println("请输入要修改学生的学号");
    //// s.id=sc.nextInt();
    //                    s.queryStudent(sc.nextInt());
    //                    System.out.println("请输入要修改后的学号:");
    //                    s.updateStudent(s.queryStudent(sc.nextInt()));
    //                    System.out.println("修改学生完成!");
    //                    break;
                            case 5:
                                System.out.println("退出系统");
                                break xh;
                        }
                }
            }
        }
      

  4.   

    package cn.qn.demo01;
     
    import java.util.Arrays;
     
    //学号,班级,性别,姓名
    public class Student extends Clazz implements Method {// 学生类继承抽象类班级 用来提取抽象方法
        static int id;
        static int clazz;
        static String sex;
        static String name;
        public Student() {
            super();
        }
        public Student(int id, int clazz, String sex, String name) {// 创建一个学生的构造方法
            super();
            this.id = id;
            this.clazz = clazz;
            this.sex = sex;
            this.name = name;
        }
        static Student[] arr = new Student[10];
        static int count;
    //    public void init() {
    //        Student[]arr=new Student[10];
    //            arr[0]=new Student(24,1,'女',"啊嘛");
    //        }
    //    }
        public void addStudent(Student s) {
            for (int i = 0; i < arr.length; i++) {// 遍历数组
                if (arr.length == count) {
                    arr = Arrays.copyOf(arr, arr.length + 1);// 如果数组长度等于预先设置的count 就把数组长度加一个再复制成一个新的arr
                }
            }
            arr[count] = s;// 此时count就代表了这个数组最后的哪个元素下标 这个对象s被添加到数组里的最后一位
            count++;// 下一次再添加的时候 数组里就多出一个null位置 放新的添加元素
        }
        public void removeStudent(int id) {
            int index = -1;
            for (int i = 0; i < count; i++) {
                if (arr[i].id == id) {
                    index = i;// 遍历数组 找到这个id对应的数组里的元素 并把这个元素的下标赋值给index
                    break;
                }
            }
            if (index == -1) {// 说实话从这里开始我也不是很明白了
                return;
            }
            System.arraycopy(arr, count + 1, arr, index, count - index - 1);// 这个赋值新的数组也理解不通
            count--;
        }
     
        public boolean updateStudent(Student s) {
            for (int i = 0; i < count; i++) {
                if (arr[i].id == s.id) {// 遍历数组 找到这个数组里id与输入参数s的id相同的元素
                    arr[i] = s;
                    return true;
                }
            }
            return false;
        }
     
        public Student queryStudent(int id) {
            for (int i = 0; i < count; i++) {
                if (arr[i].id == id) {
                    return arr[i];// 同上 遍历 找到相同的元素 这个元素就是我们要找的学生对象 然后返回学生对象.
                }
            }
            return null;
        }
    }
      

  5.   

    经过这几天对集合的学习 有了个初步认识... 不过还是被专项的集合题虐的死去活来...
    不过对这道题也有了新的认识..
    重新做了一下.package demo05;//学生类
    public class Student {
        private int id;
        private int clazz;
        private String sex;
        private String name;    public int getId() {
            return id;
        }    public void setId(int id) {
            this.id = id;
        }    public int getClazz() {
            return clazz;
        }    public void setClazz(int clazz) {
            this.clazz = clazz;
        }    public String getSex() {
            return sex;
        }    public void setSex(String sex) {
            this.sex = sex;
        }    public String getName() {
            return name;
        }    public void setName(String name) {
            this.name = name;
        }    public Student(int id, int clazz, String sex, String name) {
            this.id = id;
            this.clazz = clazz;
            this.sex = sex;
            this.name = name;
        }
    }
    package demo05;import java.util.ArrayList;
    import java.util.Iterator;//学生管理类
    public class EmpStudent {
        private ArrayList<Student> lst = null;    public EmpStudent() {
            lst = new ArrayList();
        }    //加入学生
        public void add(Student student) {
            lst.add(student);
        }    //查询学号学生
        public void showInfo(int id) {
            for (Student student : lst) {
                if (student.getId() == id) {
                    System.out.printf("姓名:%s\t\t性别%s\t\t班级%d\t\t学号%d\n", student.getName(), student.getSex(), student.getClazz(), student.getId());
                }
            }
        }    //查询姓名学生
        public void showName(String name) {
            for (Student student : lst) {
                if (student.getName().equals(name)) {
                    System.out.printf("姓名:%s\t\t性别%s\t\t班级%d\t\t学号%d\n", student.getName(), student.getSex(), student.getClazz(), student.getId());            }
            }
        }    //查询班级学生
        public void showClazz(int clazz) {
            for (Student student : lst) {
                if (student.getClazz() == clazz) {
                    System.out.printf("姓名:%s\t\t性别%s\t\t班级%d\t\t学号%d\n", student.getName(), student.getSex(), student.getClazz(), student.getId());
                }
            }
        }    //判断删除学生
        public void removeStudent(int id) {
            Iterator<Student> it = lst.iterator();
            while (it.hasNext()) {
                Student st = it.next();
                if (st.getId() == id) {
                    it.remove();
                    System.out.printf("已将学生%s删除!\n", st.getName());
                }
            }
        }    //修改信息
        public void update(int id, String newname, int newclazz, String newsex) {
            Iterator<Student> it = lst.iterator();
            while (it.hasNext()) {
                Student st = it.next();
                if (st.getId() == id) {
                    st.setName(newname);
                    st.setClazz(newclazz);
                    st.setSex(newsex);
                    System.out.printf("修改成功!\n");
                }
            }
        }    //学生列表
        public void stulist() {
            for (Student student : lst) {
                System.out.printf("%s\t\t%s\t\t\t%d\t\t\t%d\n",student.getName(),student.getSex(),student.getClazz(),student.getId());
            }
        }
    }
    package demo05;import java.util.Scanner;public class Test {
        public static void main(String[] args) {
            EmpStudent empStudent = new EmpStudent();
            Scanner sc = new Scanner(System.in);
            xh:
            while (true) {
                System.out.printf("================学生管理系统================\n");
                System.out.printf("1.添加学生\n2.输入学号查询学生\n3.输入姓名查询学生\n4.查询班级学生\n5.删除学生\n6.修改学生信息\n7.学生列表\n8.退出系统\n");
                System.out.printf("============================================\n");
                switch (sc.nextInt()) {
                    case 1:
                        System.out.printf("请输入学生学号");
                        int a = sc.nextInt();
                        System.out.printf("请输入学生班级");
                        int b = sc.nextInt();
                        System.out.printf("请输入学生性别");
                        String c = sc.next();
                        System.out.printf("请输入学生姓名");
                        String d = sc.next();
                        Student s1 = new Student(a, b, c, d);
                        empStudent.add(s1);
                        break;
                    case 2:
                        System.out.printf("请输入学生学号");
                        empStudent.showInfo(sc.nextInt());
                        break;
                    case 3:
                        System.out.printf("请输入学生姓名");
                        empStudent.showName(sc.next());
                        break;
                    case 4:
                        System.out.printf("请输入班级:");
                        empStudent.showClazz(sc.nextInt());
                        break;
                    case 5:
                        System.out.printf("请输入学生学号:");
                        empStudent.removeStudent(sc.nextInt());
                        break;
                    case 6:
                        System.out.printf("请输入要修改的学生学号:");
                        int r = sc.nextInt();
                        System.out.printf("请输入修改的姓名");
                        String n = sc.next();
                        System.out.printf("请输入修改的班级");
                        int z = sc.nextInt();
                        System.out.printf("请输入修改的性别");
                        String h = sc.next();
                        empStudent.update(r, n, z, h);
                        break;
                    case 7:
                        System.out.printf("姓名\t\t性别\t\t班级\t\t学号\n");
                        empStudent.stulist();
                        break;
                    case 8:
                        break xh;
                }
            }
        }
    }