JAVA 控制台式简单学生选课系统

学校要求做个小作业,查了好多资料都找不到能参考的,只好自己写了一套,供给需要的同学进行参考。

仅供参考

编写一个基于命令行的选课系统,系统包含一个主菜单
//1、录入课程信息(可以反复多次录入多个课程信息)
//2、录入学生信息(可以反复多次录入多个学生信息)
//3、学生选课(显示所有课程信息列表,录入学号,课程编号,即可以完成选课操作)
//4、查询(输入学号,输出该学生学号、姓名,所选课程情况汇总列表,总学分总计,以及还需选修学分)
//5、退出系统
//数据主要内容如下
//课程信息--课程编号,课程名称,学分,授课老师名,已选课人数,课程容量。
//学生信息--学号、姓名、专业、所选课程,所选课程总学分,应选学分。

Main函数:

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        Students student[] = new Students[100];//创建学生类数组用于存放学生信息

        List list = new ArrayList();//创建一个集合,用于存放课程信息的数组,无长度限制!!

        List list1 = new ArrayList();//创建一个集合,用于存放学生信息的数组,无长度限制!!

        List list2 = new ArrayList();//创建一个集合,用于存放学生所选的课程

        Course course[] = new Course[100];//创建课程类数组用于存放课程

        loop:
        while (true) {
            //主界面编写
            System.out.println("---------学生选课系统---------");
            System.out.println("\t\t1.录入学生信息     \t");
            System.out.println("\t\t2.录入课程信息    \t");
            System.out.println("\t\t3.学生选课界面\t");
            System.out.println("\t\t4.查询学生选课信息\t");
            System.out.println("\t\t5.退出该程序\t");
            System.out.println("-----\t请输入你需要的操作:\t----");

            String choose = sc.next();
            switch (choose) {
                case "1" -> add(student, list1);//1.录入学生信息   传入学生数组还有学生信息集合
                case "2" -> add1(course, list);//2.录入课程信息   传入课程数组还有课程信息集合
                case "3" -> Selection(course, student, list, list1, list2);//3.学生选课界面 把所有集合和数组传入
                case "4" -> check(course, student, list, list1, list2);//4.查询学生选课信息 把所有集合和数组传入
                case "5" -> {
                    System.out.println("成功退出系统!");
                    break loop;
                }
                default -> System.out.println("没有该选项!!请重新输入:");
            }

        }

    }

}

方法区:

public class methods {

    
    // 增加学生基本信息
    public static Students addStudents() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学生的学号:");
        int id = sc.nextInt();
        Students s = new Students();
        s.setId(id);//设置学生id
        System.out.println("请输入学生姓名:");
        String name = sc.next();
        s.setName(name);
        System.out.println("请输入学生的专业:");
        String major = sc.next();
        s.setMajor(major);

        s.setScore1(20);//应选学分:20分
        s.setScore(0);//初始学分 0分
        s.setCourses("");//初始课程 无

        //这里先不录入学生选的课程 这个放在一个独立的方法中
        //所选学分和应选学分同理。在上面的方法加以计算
        System.out.println("添加成功");
        return s;
    }

    //课程信息--课程编号,课程名称,学分,授课老师名,已选课人数,课程容量。
    public static Course addCourse() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入课程编号:");
        int id = sc.nextInt();
        Course s = new Course();
        s.setId(id);//设置学生id
        System.out.println("请输入课程名:");
        String name = sc.next();
        s.setName(name);
        System.out.println("请输入课程的学分:");
        int score = sc.nextInt();
        s.setScore(score);
        System.out.println("请输入授课老师名字:");
        String teacher = sc.next();
        s.setTeacher(teacher);
        System.out.println("请输入课程最大容纳学生人数:");
        int total = sc.nextInt();
        s.setTotal(total);
        //这这里先设置已选课人数为0已选课人数
        s.setMembers(0);


        //这里先不录入学生选的课程 这个放在一个独立的方法中
        //所选学分和应选学分同理。在上面的方法加以计算
        System.out.println("添加成功");
        return s;
    }

    //3、学生选课(显示所有课程信息列表,录入学号,课程编号,即可以完成选课操作)
    //方法需要传入各个数组和集合 要反复调用!
    public static void Selection(Course []course, Students student[], List list, List list1, List list2){
        Scanner sc = new Scanner(System.in);
        if(course[0] != null) {//简单的判断逻辑: 如果没有选课那么就要去录入
            //输出课程信息 方便使用者去看各个内容加以使用
            System.out.println("以下是所有课程信息,供参考选择");
            for (int i = 0; i < list.size(); i++) {
                System.out.println("编号"+course[i].getId()+" | "+course[i].getName() + " | 授课老师:" + course[i].getTeacher() + " | 课程学分:" + course[i].getScore() + "分 | 已选课人数:" + course[i].getMembers() + " | 允许选课人数:" + course[i].getTotal());
            }
        }else{
            System.out.println("当前没有课程录入,请去录入课程!");
        }

        //输出学生的信息 方便使用者看学号等信息
        if(student[0] != null) {//如果没有学生信息就要求去录入信息
            System.out.println("以下是所有学生信息,供参考选择");
            for (int i = 0; i < list1.size(); i++) {
                System.out.println("学号"+student[i].getId()+" | 学生姓名:"+student[i].getName() + " | 学生专业:" + student[i].getMajor() + " | 已选学分:" + student[i].getScore() + "分 | 应选:" + student[i].getScore1() + "分 | ");
            }
        }else{
            System.out.println("当前没有学生信息录入,请去录入课程!");
        }

        //开始选课,根据学生学号获取学生信息
        System.out.println("请输入需要录入课程的学生学号,以录入所选课程:");
        Integer m = sc.nextInt();//定义一个整形 以匹配学生类中所要应用的学生
        for (int i = 0; i < list1.size(); i++) {//遍历学生信息 获取所需的学生以进行操作
            if(m.equals(student[i].getId()) ){//student数组getId来匹配输入的参数,获得学生

                List studentList = new ArrayList();//创建一个数组,用于存放这个学生所选课程信息

                //在获得学生之后 接下来给这个学生选课
                System.out.println("请选择需要选择的课程编号:");
                Integer k = sc.nextInt();//定义一个整型 用于匹配
                for (int j = 0; j < list.size(); j++) {//之前在list里存放的课程信息 拿出来遍历
                    if(k.equals(course[j].getId())){//匹配
                        course[j].setMembers(course[j].getMembers()+1);//增加已选课人数

                        String s;//定义一个字符串 方便后面输出与君
                        s = student[i].getName()+"已选择"+course[j].getName();

                        String s1;
                        s1 = course[j].getName();//学生所选的课程

                        list2.add(s);//往学生所选课数组里添加选课信息

                        studentList.add(s1);//往对应学生数组里添加课程 ps:这是在方法里面定义的数组,专门用于存放这个方法中学生所选的课
                        String s2;
                        s2 = studentList.toString();//将上述集合转换成字符串类型,以便下面给学生所选的课参数赋值
                        student[i].setCourses(student[i].getCourses()+s2);//设置学生类中所选课程
                        student[i].setScore(student[i].getScore() + course[j].getScore());//设置学生所选的学分

                        System.out.println(s);//xxx 已选择 xxx课
                        System.out.println("选课完成!");


                    }
                }
            }
        }

    }




    //添加学生的操作方法
    public static void add(Students[] student,List list1){
        Scanner sc = new Scanner(System.in);
        while(true){
            System.out.println("请录入学生信息:");
            student[list1.size()]=methods.addStudents();//通过集合的数量计数,往对应索引增加参数
            list1.add(student[list1.size()]);//往学生集合中存入学生数组的内容

            System.out.println("是否结束录入?结束请按0,按任意键继续录入:");
            int a = sc.nextInt();
            if(a==0){
                break;
            }
        }
    }

    //添加课程的操作方法
    public static void add1(Course[] course,List list){
        Scanner sc = new Scanner(System.in);
        while(true){
            System.out.println("请录入课程信息:");
            course[list.size()]=methods.addCourse();//从集合获取数组索引元素位置
            list.add(course[list.size()]);


            System.out.println("是否结束录入?结束请按0,按任意键继续录入:");
            int a = sc.nextInt();
            if(a==0){
                break;
            }
        }
    }

    //4、查询(输入学号,输出该学生学号、姓名,所选课程情况汇总列表,总学分总计,以及还需选修学分)
    public static void check(Course []course,Students student[],List list,List list1,List list2){
        if(student[0] != null) {//先简单判断是否录入学生信息
            System.out.println("以下是所有学生信息,供参考选择");
            for (int i = 0; i < list1.size(); i++) {
                //输出所有存在的学生信息 方便下文去看
                System.out.println("学号"+student[i].getId()+" | 姓名:"+student[i].getName() + " | 专业:" + student[i].getMajor() + " | 已选学分:" + student[i].getScore() + "分 | 应选:" + student[i].getScore1() + "分 | ");
            }
        }else{
            System.out.println("当前没有学生信息录入,请去录入课程!");
        }

        System.out.println("请输入学生学号,查询该学生的选课信息:");
        Scanner sc = new Scanner(System.in);
        Integer m = sc.nextInt();//定义一个整形 用于通过索引匹配对应的学生数组
        for (int i = 0; i <list1.size() ; i++) {
            if(m.equals(student[i].getId())) {
                String s = "学生学号:"+student[i].getId()+" | 学生姓名:"+student[i].getName()+" | 已选"+student[i].getScore()+"分";
                String s1 = "所选课程:"+student[i].getCourses();
                String s2 = "还需选择学分"+(student[i].getScore1()-student[i].getScore())+"分";
                System.out.println(s);//学生信息
                System.out.println(s1);//所选课程
                System.out.println(s2);//还需选择学分


            }

        }


    }



}

定义的类:

public class Students {
    private int id;
    private String name;
    private String major;
    private String courses;
    private int score;//选的学分
    private int score1;//应选学分

    public Students() {
    }

    public Students(int id, String name, String major, String courses, int score, int score1) {
        this.id = id;
        this.name = name;
        this.major = major;
        this.courses = courses;
        this.score = score;
        this.score1 = score1;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMajor() {
        return major;
    }

    public void setMajor(String major) {
        this.major = major;
    }

    public String getCourses() {
        return courses;
    }

    public void setCourses(String courses) {
        this.courses = courses;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    public int getScore1() {
        return score1;
    }

    public void setScore1(int score1) {
        this.score1 = score1;
    }
}

public class Course {
    private int id;
    private String name;
    private int score;
    private String Teacher;
    private int members;
    private int total;


    public Course() {
    }

    public Course(int id, String name, int score, String teacher, int members, int total) {
        this.id = id;
        this.name = name;
        this.score = score;
        Teacher = teacher;
        this.members = members;
        this.total = total;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    public String getTeacher() {
        return Teacher;
    }

    public void setTeacher(String teacher) {
        Teacher = teacher;
    }

    public int getMembers() {
        return members;
    }

    public void setMembers(int members) {
        this.members = members;
    }

    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }
}

  • 6
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值