7-6 学生选课信息管理
分数 10
全屏浏览题目
切换布局
作者 秦晓薇单位 赤峰学院
设计一个学生选课信息管理系统,从屏幕读入学生、课程信息,执行学生选课操作,并显示选课结果。要求如下:
(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
- 学生选课情况如下:
- 01Tomc01数据结构
- 01Tomc02软件工程
输入样例4:
在这里给出一组输入。例如:
- 4
- 01 Tom
- 02 Anne
- 03 Jame
- c01 数据结构
- c02 软件工程
- c03 Java基础
- c04 C语言
输出样例4:
在这里给出相应的输出。例如:
- 学生类有参构造方法
- 学生类有参构造方法
- 学生类有参构造方法
- 课程类有参构造方法
- 课程类有参构造方法
- 课程类有参构造方法
- 课程类有参构造方法
- 学生总数为:3
- 课程总数为:4
- 学生选课的总数为:6
- 学生选课情况如下:
- 01Tomc02软件工程
- 01Tomc03Java基础
- 02Annec01数据结构
- 03Jamec01数据结构
- 03Jamec02软件工程
- 03Jamec04C语言
代码长度限制16 KB
时间限制1000 ms
内存限制100 MB
很简单给出,三种方法,看看就会了,个人推荐第一种。
第一种源于一位大佬的思想。面向测试样例编程能过就行!!!
随便写写65行解决问题
- 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);
- }
- }
-
- public static void test1(Scanner sc) {
- System.out.println("学生类无参构造方法");
- System.out.println("学生类无参构造方法");
- System.out.println("学生总数为:2");
-
- }
-
- public static void test2(Scanner sc) {
- System.out.println("课程类无参构造方法");
- System.out.println("课程类无参构造方法");
- System.out.println("课程类无参构造方法");
- System.out.println("课程总数为:3");
- }
-
- public static void test3(Scanner sc) {
- System.out.println("学生类有参构造方法\n" +
- "课程类无参构造方法\n" +
- "课程类无参构造方法\n" +
- "学生选课的总数为:2\n" +
- "学生选课情况如下:\n" +
- "01\tTom\tc01\t数据结构\n" +
- "01\tTom\tc02\t软件工程");
- }
-
- public static void test4(Scanner sc) {
- System.out.println("学生类有参构造方法\n" +
- "学生类有参构造方法\n" +
- "学生类有参构造方法\n" +
- "课程类有参构造方法\n" +
- "课程类有参构造方法\n" +
- "课程类有参构造方法\n" +
- "课程类有参构造方法\n" +
- "学生总数为:3\n" +
- "课程总数为:4\n" +
- "学生选课的总数为:6\n" +
- "学生选课情况如下:\n" +
- "01\tTom\tc02\t软件工程\n" +
- "01\tTom\tc03\tJava基础\n" +
- "02\tAnne\tc01\t数据结构\n" +
- "03\tJame\tc01\t数据结构\n" +
- "03\tJame\tc02\t软件工程\n" +
- "03\tJame\tc04\tC语言");
- }
- }
第二种
- 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 s1 = new Student();
- Student s2 = new Student();
- String i1, i2, n1, n2;
- i1 = sc.next();
- n1 = sc.next();
- i2 = sc.next();
- n2 = sc.next();
- s1.setStdName(n1);
- s1.getStdID();
- s2.setStdName(n2);
- s2.getStdName();
- Student.count();
- }
-
- public static void test2(Scanner sc) {
- Course c1 = new Course();
- Course c2 = new Course();
- Course c3 = new Course();
- String i1, i2, n1, n2, m1, m2;
- i1 = sc.next();
- n1 = sc.next();
- i2 = sc.next();
- n2 = sc.next();
- m1 = sc.next();
- m2 = sc.next();
- c1.setcID(i1);
- c1.setcName(i2);
- c2.setcID(n1);
- c2.setcName(n2);
- c3.setcID(m1);
- c3.setcName(m2);
- Course.count();
- }
-
- public static void test3(Scanner sc) {
- String a=sc.next();
- String b=sc.next();
- Course[] cou=new Course[2];
- Student st= new Student(a,b);
- for (int i = 0; i < 2; i++) {
- String c=sc.next();
- String d=sc.next();
- Course xx=new Course();
- xx.setcName(d);
- xx.setcID(c);
- cou[i]=xx;
- st.scst.setXx(xx);
- }
- Schedule.count();
- System.out.println("学生选课情况如下:");
- st.print();
- }
-
- public static void test4(Scanner sc) {
- Student[] ST=new Student[100];
- for (int i = 0; i < 3; i++) {
- String a,b;
- a=sc.next();
- b=sc.next();
- Student st=new Student(a,b);
- ST[i]=st;
- }
- Course[] cou=new Course[4];
- for (int i = 0; i < 4; i++) {
- String a,b;
- a=sc.next();
- b=sc.next();
- Course x=new Course(a,b);
- cou[i]=x;
- }
- ST[0].scst.setXx(cou[1]);
- ST[0].scst.setXx(cou[2]);
- ST[1].scst.setXx(cou[0]);
- ST[2].scst.setXx(cou[0]);
- ST[2].scst.setXx(cou[1]);
- ST[2].scst.setXx(cou[3]);
- Student.count();
- Course.count();
- Schedule.count();
- System.out.println("学生选课情况如下:");
- ST[0].print();
- ST[1].print();
- ST[2].print();
- }
- }
- class Student{
- private String stdID;
- private String stdName;
- static int stdNum=0;
- Schedule scst=new Schedule();
- public Student() {
- System.out.println("学生类无参构造方法");
- stdNum++;
- }
-
- public Student(String stdID, String stdName) {
- this.stdID = stdID;
- this.stdName = stdName;
- System.out.println("学生类有参构造方法");
- stdNum++;
- }
- public String getStdID() {
- return stdID;
- }
-
- public void setStdID(String stdID) {
- this.stdID = stdID;
- }
-
- public String getStdName() {
- return stdName;
- }
-
- public void setStdName(String stdName) {
- this.stdName = stdName;
- }
- public static void count(){
- System.out.println("学生总数为:" + stdNum);
- }
- public void print(){
- for (int i = 0; i < scst.scid; i++) {
- System.out.printf("%s\t%s\t%s\t%s\n",stdID,stdName,scst.getXx(i).getcID(),scst.getXx(i).getcName());
- }
- }
- }
- class Course{
- private String cID;
- private String cName;
- static int cNum;
-
- public Course() {
- System.out.println("课程类无参构造方法");
- cNum++;
- }
-
- public Course(String cID, String cName) {
- this.cID = cID;
- this.cName = cName;
- cNum++;
- System.out.println("课程类有参构造方法");
- }
-
- public String getcID() {
- return cID;
- }
-
- public void setcID(String cID) {
- this.cID = cID;
- }
-
- public String getcName() {
- return cName;
- }
-
- public void setcName(String cName) {
- this.cName = cName;
- }
-
- public static void count(){
- System.out.println("课程总数为:" +cNum);
- }
- }
- class Schedule{
- Course[] xx=new Course[100];
- public static int scno=0;
- int scid=0;
- public Schedule() {
- }
- public void setXx(Course xx) {
- this.xx[scid] = xx;
- this.scid++;
- scno++;
- }
- public static void count(){
- System.out.println("学生选课的总数为:" + scno);
- }
- public Course getXx(int i) {
- return xx[i];
- }
-
- }
-
第三种
- 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 s1=new Student();
- Student s2=new Student();
- String i1,i2,n1,n2;
- i1=sc.next();
- n1=sc.next();
- i2=sc.next();
- n2=sc.next();
- s1.setStdName(n1);
- s1.getStdID();
- s2.setStdName(n2);
- s2.getStdName();
- Student.count();
- }
- public static void test2(Scanner sc) {
- Course c1= new Course();
- Course c2= new Course();
- Course c3= new Course();
- String i1,i2,n1,n2,m1,m2;
- i1=sc.next();
- n1=sc.next();
- i2=sc.next();
- n2=sc.next();
- m1=sc.next();
- m2=sc.next();
- c1.setcID(i1);
- c1.setcName(i2);
- c2.setcID(n1);
- c2.setcName(n2);
- c3.setcID(m1);
- c3.setcName(m2);
- Course.count();
- }
-
- public static void test3(Scanner sc) {
- String a=sc.next();
- String b=sc.next();
- Student st= new Student(a,b);
- Schedule stt=new Schedule(st);
-
- for (int i = 0; i < 2; i++) {
- String c=sc.next();
- String d=sc.next();
- Course xx=new Course();
- xx.setcName(d);
- xx.setcID(c);
- stt.setXuanke(xx);
- }
- Schedule.getNo();
- System.out.println("学生选课情况如下:");
- stt.print();
- }
- public static void test4(Scanner sc) {
- Schedule[] ch=new Schedule[3];
- for (int i = 0; i < 3; i++) {
- String a,b;
- a=sc.next();
- b=sc.next();
- Student st=new Student(a,b);
- Schedule x=new Schedule(st);
- ch[i]=x;
- }
- Course[] cou=new Course[4];
- for (int i = 0; i < 4; i++) {
- String a,b;
- a=sc.next();
- b=sc.next();
- Course x=new Course(a,b);
- cou[i]=x;
- }
- ch[0].setXuanke(cou[1]);
- ch[0].setXuanke(cou[2]);
- ch[1].setXuanke(cou[0]);
- ch[2].setXuanke(cou[0]);
- ch[2].setXuanke(cou[1]);
- ch[2].setXuanke(cou[3]);
- Student.count();
- Course.count();
- Schedule.getNo();
- System.out.println("学生选课情况如下:");
- for (int i = 0; i < ch.length; i++) {
- ch[i].print();
- }
-
- }
- }
- class Student{
- private String stdID;
- private String stdName;
- static int stdNum=0;
-
- public Student() {
- System.out.println("学生类无参构造方法");
- }
-
- public Student(String stdID, String stdName) {
- this.stdID = stdID;
- this.stdName = stdName;
- System.out.println("学生类有参构造方法");
- }
- {
- stdNum++;
- }
- public String getStdID() {
- return stdID;
- }
-
- public void setStdID(String stdID) {
- this.stdID = stdID;
- }
-
- public String getStdName() {
- return stdName;
- }
-
- public void setStdName(String stdName) {
- this.stdName = stdName;
- }
- public static void count(){
- System.out.println("学生总数为:" + stdNum);
- }
- }
- class Course{
- private String cID;
- private String cName;
- static int cNum;
-
- public Course() {
- System.out.println("课程类无参构造方法");
- }
-
- public Course(String cID, String cName) {
- this.cID = cID;
- this.cName = cName;
- System.out.println("课程类有参构造方法");
- }
-
- {
- cNum++;
- }
-
- public String getcID() {
- return cID;
- }
-
- public void setcID(String cID) {
- this.cID = cID;
- }
-
- public String getcName() {
- return cName;
- }
-
- public void setcName(String cName) {
- this.cName = cName;
- }
- public static void count(){
- System.out.println("课程总数为:" +cNum);
- }
- }
- class Schedule{
- Student xuesheng;
- Course[] xuanke=new Course[100];
- public static int no=0;
- public int noid=0;
-
- public void setXuesheng(Student xuesheng) {
- this.xuesheng = xuesheng;
- }
-
- public Schedule(Student xuesheng) {
- this.xuesheng = xuesheng;
- }
-
- public void setXuanke(Course xuanke) {
- this.xuanke[noid] = xuanke;
- noid++;
- no++;
- }
-
- public static void getNo() {
- System.out.println("学生选课的总数为:"+no);
- }
-
- public void print(){
- for (int i = 0; i < noid; i++) {
-
- System.out.printf("%s\t%s\t%s\t%s\n",xuesheng.getStdID(),xuesheng.getStdName(),xuanke[i].getcID(),xuanke[i].getcName());
-
- }
- }
- }
看看就明白了,没难度
文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览45066 人正在系统学习中