学校要求做个小作业,查了好多资料都找不到能参考的,只好自己写了一套,供给需要的同学进行参考。
仅供参考
编写一个基于命令行的选课系统,系统包含一个主菜单 //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; } }