您的位置:首页 > 编程语言 > Java开发

练习一个简单的学生管理系统,不成熟,但是综合性很强

2017-08-29 23:38 435 查看
考试顺利通过







今天反复的练习了几遍整个代码,现在基本上已经根据题意就可以敲出来了,现在分享给大家,可能内容有点多,但是含金量报表哦


import java.util.ArrayList;

import java.util.Scanner;

/*

    分析学生管理系统的实现。

    1. 要管理的是学生,要先创建学生类。

    2. 要管理的学生不只一个,可以使用集合去存储。

    3. 给出欢迎提示。

    4. 给出菜单

    5. 键盘录入一个选择,去和菜单进行匹配。

        如果输入的是1. 查看所有学生

        如果输入的是2,添加学生

        如果输入的是3,删除学生

        如果输入的是4,就是修改学生

        如果输入的是5,就是退出程序

    

    因为3,4,5可能需要不停的去执行,所以要放入到一个死循环中。

 */

public class StudentManager {

    public static void main(String[] args) {

        //定义集合, 用来存储学生

        ArrayList<Student> list = new ArrayList<>();

        

        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 sc = new Scanner(System.in);

            int choose = sc.nextInt();

            //去和菜单进行匹配。 switch

            switch(choose) {

            case 1:

                //查看所有学生

                findAllStudent(list);

                break;

            case 2:

                //添加学生

                addStudent(list);

                break;

            case 3:

                //删除学生

                deleteStudent(list);

                break;

            case 4:

                //修改学生

                updateStudent(list);

                break;

            case 5:

                //退出程序

                //直接终止Java虚拟机 JVM

                System.out.println("程序结束");

                System.exit(0);//0 代表正常退出

                //break;

            default:

                System.out.println("您输入有误,请回去重新选择");

                break;

            }

        }

    }

    /*

     * 定义方法,修改学生

     * 参数:ArrayList<Student> list

     * 返回值类型:void

     */

    public static void updateStudent(ArrayList<Student> list) {

        /*

         * 一般修改也会根据唯一标识去修改,在这里根据id去修改学生的信息。

         *

         * 思路:

         * 1. 键盘录入一个要修改学生的id。

         * 2. 定义一个变量index,记录要修改学生的索引。最开始给出初始值-1,代表这个id是不存在的

         * 3. 遍历集合,拿到集合中的每一个学生

         * 4. 拿我们录入的id和遍历到的学生的id进行比较。如果相同,代表存在,就把这个学生的索引赋值给index。break

         * 5. index 为-1,代表这个id是不存在的, 返回菜单

         *         不为-1,id是存在的,就可以修改了

         *                     a. 键盘录入其他的信息

         *                     b. 根据这些信息创建学生对象。

         *                     c. 把刚刚创建的学生对象替换掉原来的学生对象就可了

         */

        //键盘录入一个要修改学生的id。

        Scanner sc = new Scanner(System.in);

        System.out.println("请您录入要修改学生的id");

        String id = sc.nextLine();

        //定义一个变量index,记录要修改学生的索引。最开始给出初始值-1,代表这个id是不存在的

        int index = -1;

        

        //遍历集合,拿到集合中的每一个学生

        for(int i = 0; i < list.size(); i++) {

            //拿到集合中的每一个学生对象

            Student stu = list.get(i);

            //拿我们录入的id和遍历到的学生的id进行比较。如果相同,代表存在,就把这个学生的索引赋值给index。break

            if(id.equals(stu.getId())) {

                //如果相同,代表存在,就把这个学生的索引赋值给index

                index = i;

                break;//找到之后,没有必要找了,就break中断for循环

            }

        }

        //index 为-1,说明这个id是不存在的,就返回主菜单

        if(index == -1) {

            System.out.println("您输入的学号不存在,请您返回菜单重新选择");

        } else {

            //不为-1,说明这个id是存在的,就可以进行修改了

            //键盘录入其他的信息

            System.out.println("请您录入姓名");

            String name = sc.nextLine();

            System.out.println("请您录入年龄");

            String age = sc.nextLine();

            System.out.println("请您录入地址");

            String address = sc.nextLine();

            

            //根据这些信息创建学生对象。

            Student stu = new Student(id, name, age, address);//这个就是要修改后的学生对象

            

      
4000
     //把stu替换原来的学生对象就可以了

            //要替换掉的学生的索引index,已经记录到了

            //set 直接拿新的替换掉旧的就可以了

            list.set(index, stu);

            System.out.println("修改成功");

        }

    }

    

    /*

     * 定义方法,根据学号去删除

     * 参数: ArrayList<Student> list

     * 返回值类型:void

     */

    public static void deleteStudent(ArrayList<Student> list) {

        //效果,假如录入的id不存,就返回主菜单

        /*

         * 思路:

         *     1. 删除会根据唯一标识去删除,在这里唯一标识是id,所以要键盘录入一个id去删除

         *  2. 定义index,记录这个id这个学生在集合中的索引。最开始给出初始值 -1

         *  3. 遍历集合,拿到集合中的每一个学生

         *  4. 判断我们输入的这个id和当前拿到的这个学生的id是否相等,如果相等代表这个id是存在,把这个学生所在的索引赋值index。break中断循环

         *  5. 如果index为-1,代表这个id在集合中不存在,返回功能菜单

         *             不为-1,说明这个id在集合中是存在的,就删除。根据索引删除。

         */

        //键盘录入一个id去删除

        Scanner sc = new Scanner(System.in);

        //请输入您要删除学生的学号

        System.out.println("请您录入一个要删除的学号");

        String id = sc.nextLine();

        //定义index,记录我们录入的id这个学生在集合中的索引

        int index = -1;//如果为-1代表不存在

        //遍历集合,拿到集合中的每一个学生

        for(int i = 0; i < list.size(); i++) {

            //拿到集合中的每一个学生

            Student stu = list.get(i);

            //判断我们输入的id和这个学生的id是否相等,如果相等代表这个id是存在的。就把当前学生的索引赋值index

            if(id.equals(stu.getId())) {

                index = i;

                break;//找到之后,没有必要再找了,使用break退出循环

            }

        }

        //index 为-1 代表没有此id,这个id不存在,就返回主菜单

        //        不为-1 id是存在,可以把这个id的学生給删除掉。根据索引删除

        if(index == -1) {

            System.out.println("这个id不存在,返回重试");

            //程序往下执行就会把方法执行完,执行完就会回到主菜单

        } else {

            //index 不为-1.id是存在,可以把这个id的学生給删除掉。根据索引删除

            

            //这个id的学生在集合中的索引是index

            //直接根据索引index删除就可以了,index就是我们录入id这个学生在集合中的索引

            list.remove(index);

            System.out.println("删除成功");

        }

        

    }

    

    /*

     * 定义方法,往集合中添加学生

     * 参数:ArrayList

     * 返回值:void

     */

    public static void addStudent(ArrayList<Student> list) {

        //往list集合添加学生对象就可以了

        /*

         * 思路:

         *     1. 键盘录入学生的信息

         *  2. 根据这些信息创建学生对象

         *  3. 把这个学生对象添加到集合

         */

        

        /*

         * 解决这个学号可以重复的问题。

         * 把键盘录入学号的操作放入到一个循环,因为不知道可能录入多少次,所以要把键盘录入学号的操作放入到死循环。

         * 1. 键盘录入学号

         * 2. 定义一个boolean类型标记flag,代表这个键盘录入的id是否存在,如果是true代表存在,给出初始值false

         * 3. 遍历集合,拿到集合中的每一个学生

         * 4. 判断这个学生的学号和我们录入的学号是否相等,如果相等,代表有重复的,就把flag改成true。break结束循环。

         * 5. 判断flag,如果为true代表有重复的,给出提示,再继续录入学号

         *                    false 代表这个学号不重复,可以键盘录入其他的一些数据

         */

        //键盘录入学生的信息

        Scanner sc = new Scanner(System.in);

        String id;//提取到外面

        while(true) {

            System.out.println("请您录入学号");

            id = sc.nextLine();

            //定义一个boolean类型标记flag,代表这个键盘录入的id是否存在,如果是true代表存在,给出初始值false

            boolean flag = false;//记录id是否重复

            //遍历集合,拿到集合中的每一个学生

            for(int i = 0; i < list.size(); i++) {

                //拿到集合中的每一个学生

                Student stu = list.get(i);

                //判断这个学生的学号和我们录入的学号是否相等

                if(id.equals(stu.getId())) {

                    //如果相等,代表有重复的,就把flag改成true。break结束循环。

                    flag = true;

                    break;//如果找到,就没有必要再找下去了

                }

            }

            //如果flag 是true代表有相同的.否则,就是没有重复

            if(flag) {//true

                System.out.println("您输入的id是重复的,请您重新录入");

            } else {

                break;//因为id不重复,我们没有必要下次循环录入id,直接break跳出while循环

            }

        }

        

        

        System.out.println("请您录入姓名");

        String name = sc.nextLine();

        System.out.println("请您录入年龄");

        String age = sc.nextLine();

        System.out.println("请您录入地址");

        String address = sc.nextLine();

        

        //根据学生信息创建学生对象

        Student s = new Student(id, name, age, address);

        //把这个学生对象添加到集合

        list.add(s);

    }

    

    /*

     * 定义方法,用来查看所有的学生

     * 参数: ArrayList

     * 返回值: void

     */

    public static void findAllStudent(ArrayList<Student> list) {

        //查看所有的学生,其实就是遍历集合

        //如果没有元素,给出提示,退出方法。

        if(list.size() == 0) {

            System.out.println("里面没有任何学生,请您回去添加数据");

            return;//结束这个方法。

        }

        

        System.out.println("学号\t姓名\t年龄\t地址");

        //如果有元素,就遍历集合,看一下集合中的每一个学生

        for(int i = 0; i < list.size(); i++) {

            //拿到每一个学生

            Student s = list.get(i);

            //输出学生对象的属性

            System.out.println(s.getId() + "\t" + s.getName() + "\t" + s.getAge() + "\t" + s.getAddress());//\t代表一个制表符,也就是一个tab键

        }

    }

}

============================================================================

package cn.itcast.demo05;

/*

 * 学生类

 * 属性

 *     学号

 *     姓名

 *     年龄

 *     地址

 */

public class Student {

    private String id;

    private String name;

    private String age;

    //批量改名 ctrl + 2 松手 按r

    private String address;

    

    public String getId() {

        return id;

    }

    public void setId(String id) {

        this.id = id;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public String getAge() {

        return age;

    }

    public void setAge(String age) {

        this.age = age;

    }

    public String getAddress() {

        return address;

    }

    public void setAddress(String address) {

        this.address = address;

    }

    

    

    public Student(String id, String name, String age, String address) {

        this.id = id;

        this.name = name;

        this.age = age;

        this.address = address;

    }

    public Student() {

    }

}

==============================================================================
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息