7-9 学生选课信息管理 --笔记篇

题目

设计一个学生选课信息管理系统,从屏幕读入学生、课程信息,执行学生选课操作,并显示选课结果。要求如下:

(1)设计一个学生类Student,包括:

学号stuID、姓名stuName、学生对象的数量stuNum三个数据域;
一个无参构造方法,创建默认的学生,构造方法中输出“学生类无参构造方法”;
一个有参构造方法,创建指定学号stuID、姓名stuName的学生,构造方法中输出“学生类有参构造方法”;
所有数据域的访问器方法;
两个修改器方法,可以修改学号stuID、姓名stuName的值。
(2)设计一个课程类Course,包括:

课程编号cID、课程名cName、课程对象的数量cNum三个数据域;
一个无参构造方法,创建默认的课程,构造方法中输出“课程类无参构造方法”;
一个有参构造方法,创建指定课程编号cID、课程名cName的课程,构造方法中输出“课程类有参构造方法”;
所有数据域的访问器方法;
两个修改器方法,可以修改课程编号cID、课程名cName的值。
(3)设计一个学生选课类Schedule,包括:

学生列表stuList、课程列表cList、学生选课总数schNum三个数据域,两个列表的默认长度任意设定;
一个无参构造方法,创建默认的学生选课对象;
一个学生选课方法 addCourse(Student stu,Course course),实现学生stu选择课程course操作;
一个显示学生选课详情方法 displayCourse(),显示所有学生选课情况。
(4)测试类Main,要求:

情况1 test1:

① 使用无参构造方法建立二个学生对象;
② 查看学生对象总数
情况2 test2:

① 使用无参构造方法建立三门课程对象;
② 查看课程对象总数
情况3 test3:

① 使用有参构造方法建立一个学生对象;
② 使用无参构造方法建立二门课程对象;
③ 使用学生选课类进行课程选择,为学生选择这两门课程
④ 查看学生选课总数
⑤ 查看学生选课详情
情况4 test4:

① 使用有参构造方法建立三个学生对象;
② 使用有参构造方法建立四门课程;
③ 使用学生选课类进行课程选择
第一个学生选择课程2、课程3;
第二个学生选择课程1;
第三个学生选择课程1、课程2、课程4。
④ 查看选课信息
查看学生对象总数
查看课程对象总数
查看学生选课总数
查看学生选课详情
(5)程序框架示例:

import java.util.Scanner;

public class Test2 {

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int type = sc.nextInt();
    switch(type){
    case 1: test1(sc);break;
    case 2: test2(sc);break;
    case 3: test3(sc);break;
    case 4: test4(sc);
    }
}
//test方法为(4)中情况,见上述说明
public static void test1(Scanner sc) {

}
public static void test2(Scanner sc) {

}

public static void test3(Scanner sc) {

}
public static void test4(Scanner sc) {

}

}

// 学生类Student
class Student{

}

// 课程类Course
class Course{

}

// 学生选课类Schedule
class Schedule{

}
输入格式:
第一行数字代表测试情况,这里为测试情况3,见上述(4)中说明,为选课测试,第二行为学生信息,后面两行为课程信息,每行数据间使用空格分隔,如下所示:

3

01 Tom

c01 数据结构

c02 软件工程

其他测试情况格式设置相同,具体情况查看要求中的说明和输入样例。

输出格式:
每组输出占一行,每行如果有多个数据采用制表符分隔,如下所示:

学生类有参构造方法

课程类无参构造方法

课程类无参构造方法

学生选课的总数为:2

学生选课情况如下:

01 Tom c01 数据结构

01 Tom c02 软件工程

输入样例1:
在这里给出一组输入。例如:

1
01 Tom
02 Anne
输出样例1:
在这里给出相应的输出。例如:

学生类无参构造方法
学生类无参构造方法
学生总数为:2
输入样例2:
在这里给出一组输入。例如:

2
c01 数据结构
c02 软件工程
c03 Java基础
输出样例2:
在这里给出相应的输出。例如:

课程类无参构造方法
课程类无参构造方法
课程类无参构造方法
课程总数为:3
输入样例3:
在这里给出一组输入。例如:

3
01 Tom
c01 数据结构
c02 软件工程
输出样例3:
在这里给出相应的输出。例如:

学生类有参构造方法
课程类无参构造方法
课程类无参构造方法
学生选课的总数为:2
学生选课情况如下:
01	Tom	c01	数据结构
01	Tom	c02	软件工程
输入样例4:
在这里给出一组输入。例如:

4
01 Tom
02 Anne
03 Jame
c01 数据结构
c02 软件工程
c03 Java基础
c04 C语言
输出样例4:
在这里给出相应的输出。例如:

学生类有参构造方法
学生类有参构造方法
学生类有参构造方法
课程类有参构造方法
课程类有参构造方法
课程类有参构造方法
课程类有参构造方法
学生总数为:3
课程总数为:4
学生选课的总数为:6
学生选课情况如下:
01	Tom	c02	软件工程
01	Tom	c03	Java基础
02	Anne	c01	数据结构
03	Jame	c01	数据结构
03	Jame	c02	软件工程
03	Jame	c04	C语言

代码

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

public class Main{
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int type = sc.nextInt();
        switch(type){
            case 1: test1(sc);break;
            case 2: test2(sc);break;
            case 3: test3(sc);break;
            case 4: test4(sc);
        }
    }
    //test方法为(4)中情况,见上述说明
    public static void test1(Scanner sc) {
        Student p1=new Student();
        Student p2=new Student();
        String n1=sc.next();
        String n2=sc.next();
        p1.setStuID(n1);
        p1.setStuName(n2);
        String n3=sc.next();
        String n4=sc.next();
        p2.setStuID(n3);
        p2.setStuName(n4);
        System.out.print("学生总数为:"+Student.stuNum);
    }
    public static void test2(Scanner sc) {
        Course course1 = new Course();
        String c1=sc.next();
        String c2=sc.next();
        course1.setcID(c1);
        course1.setcID(c2);
        Course course2 = new Course();
        String c3=sc.next();
        String c4=sc.next();
        course2.setcID(c3);
        course2.setcID(c4);
        Course course3 = new Course();
        String c5=sc.next();
        String c6=sc.next();
        course3.setcID(c5);
        course3.setcID(c6);
        System.out.println("课程总数为:" + Course.cNum);

    }
    public static void test3(Scanner sc) {
        String s_u=sc.next();
        String s_n=sc.next();
        Student pp1=new Student(s_u,s_n);

        Course course1 = new Course();
        String c1=sc.next();
        String c2=sc.next();
        course1.setcID(c1);
        course1.setcName(c2);
        Course course2 = new Course();
        String c3=sc.next();
        String c4=sc.next();
        course2.setcID(c3);
        course2.setcName(c4);

        Schedule schedule = new Schedule();
        schedule.addCourse(pp1, course1);
        schedule.addCourse(pp1, course2);

        System.out.println("学生选课的总数为:" + Schedule.schNum);

        schedule.displayCourse();
    }
    public static void test4(Scanner sc) {
        String s_u1=sc.next();
        String s_n2=sc.next();
        Student pp1=new Student(s_u1,s_n2);
        String s_u3=sc.next();
        String s_n4=sc.next();
        Student pp2=new Student(s_u3,s_n4);
        String s_u5=sc.next();
        String s_n6=sc.next();
        Student pp3=new Student(s_u5,s_n6);

        String c_n1=sc.next();
        String c_n2=sc.next();
        Course cc1=new Course(c_n1,c_n2);

        String c_n3=sc.next();
        String c_n4=sc.next();
        Course cc2=new Course(c_n3,c_n4);

        String c_n5=sc.next();
        String c_n6=sc.next();
        Course cc3=new Course(c_n5,c_n6);

        String c_n7=sc.next();
        String c_n8=sc.next();
        Course cc4=new Course(c_n7,c_n8);

        Schedule schedule = new Schedule();
        schedule.addCourse(pp1,cc2);
        schedule.addCourse(pp1,cc3);
        schedule.addCourse(pp2,cc1);
        schedule.addCourse(pp3,cc1);
        schedule.addCourse(pp3,cc2);
        schedule.addCourse(pp3,cc4);

        System.out.println("学生总数为:"+Student.stuNum);
        System.out.println("课程总数为:" + Course.cNum);
        System.out.println("学生选课的总数为:" + Schedule.schNum);
        schedule.displayCourse();


    }
}
class Student{
    String stuID;
    String stuName;
    static int stuNum=0;
    Student(){
        System.out.println("学生类无参构造方法");stuNum++;
    }
    Student(String stuID,String stuName){
        System.out.println("学生类有参构造方法");
        this.stuID=stuID;
        this.stuName=stuName;
        stuNum++;
    }
    public String getStuID() {
        return stuID;
    }
    public String getStuName() {
        return stuName;
    }
    public int getStuNum() {
        return stuNum;
    }
    public void setStuID(String stuID) {
        this.stuID = stuID;
    }
    public void setStuName(String stuName) {
        this.stuName = stuName;
    }
}

// 课程类Course
class Course{
    String cID;
    String cName;
    static int cNum = 0;

    public Course() {
        System.out.println("课程类无参构造方法");
        cNum++;
    }

    public Course(String cID, String cName) {
        System.out.println("课程类有参构造方法");
        this.cID = cID;
        this.cName = cName;
        cNum++;
    }
    public String getcID() {
        return cID;
    }
    public String getcName() {
        return cName;
    }
    public int getcNum() {
        return cNum;
    }
    public void setcID(String cID) {
        this.cID = cID;
    }
    public void setcName(String cName) {
        this.cName = cName;
    }
}
// 学生选课类Schedule
class Schedule{
    List<Student> stuList = new ArrayList<>();
    List<Course> cList = new ArrayList<>();
    static int schNum = 0;
    public void addCourse(Student stu,Course course){
        stuList.add(stu);
        cList.add(course);
        schNum++;
    }
    public void displayCourse() {
 System.out.println("学生选课情况如下:");
        for (int i = 0; i < stuList.size(); i++) {
            System.out.printf("%s\t%s\t%s\t%s\n",stuList.get(i).getStuID(),stuList.get(i).getStuName(),cList.get(i).getcID(),cList.get(i).getcName());
        }
    }
}

笔记

  1. 冗杂的低质量题目。偷懒的可以直接打印输出。
  2. 类 --数量属性 创建static 构造方法中自增。
  3. 列表类写法
  4. 默认的无参数构造方法 可不写,一旦写了就要2个(有参数)都写
  5. 无参创建指定 需要setvalue()

你可能感兴趣的:(java篇,笔记,java,前端)