7-12 学生选课信息管理

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

(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语言
代码长度限制
16 KB
时间限制
1000 ms
内存限制
100 MB

import java.util.ArrayList;}// 课程类Course
class Course{private String cID;private String cName;private 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 static int getcNum(){return cNum;}public void setcID(String cID){this.cID = cID;}public void setcName(String cName){this.cName = cName;}}// 学生选课类Schedule
class Schedule{private ArrayList<Student> stulist;private ArrayList<Course> courlist;private static int schesum = 0;public Schedule(){stulist = new ArrayList<>();courlist = new ArrayList<>();}public static int getSchesum(){return schesum;}public void addCourse(Student stu,Course course){stulist.add(stu);courlist.add(course);schesum++;}public void displayCourse(){for (int i = 0; i < stulist.size(); i++) {System.out.println(stulist.get(i).getstuID() + "\t" + stulist.get(i).getstuName() +"\t" + courlist.get(i).getcID() + "\t" + courlist.get(i).getcName());}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/238389.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qt连接hiki相机进行拍照保存

.pro QT工程pro文件模板变量&#xff08;TEMPLATE&#xff09;模板变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择&#xff1a; app - 建立一个应用程序的makefile。这是默认值&#xff0c;所以如果模板没有被指定&#xff0c;这个将被使用。 lib - …

直接将第三方数据插入到 Redis 中

Redis 是一个内存数据库&#xff0c;可以用于缓存和持久化数据。虽然常见的使用场景是将数据从关系型数据库&#xff08;如MySQL&#xff09;同步到 Redis 中进行缓存&#xff0c;但也可以直接将第三方数据插入到 Redis 中。 你可以通过编程语言的 Redis 客户端库&#xff08;…

计算机体系结构实验——Branch-Target Buffers

实验五 Branch-Target Buffers 本次实验的主要目的是加深对Branch-Target Buffers的理解。掌握使用Branch-Target Buffers减少或增加分支带来的延迟的情况。 实验内容&#xff1a; 将以下程序段修改为可利用WinMIPS64模拟器运行的程序。假设R3的初始值为R240 在使用forward…

业务逻辑漏洞有哪些?漏洞攻击防御及代码示例

文章目录 简介危害成因攻击防御代码示例1. 未经验证的重要操作2. 认证绕过3. 逻辑时间窗口漏洞4. 负载测试漏洞 修复 业务逻辑漏洞是指软件或系统的逻辑设计上的缺陷&#xff0c;这些缺陷可能被攻击者利用&#xff0c;从而导致意料之外的行为。下面是对业务逻辑漏洞的简介、危害…

基于 FFmpeg 的跨平台视频播放器简明教程(十二):Android SurfaceView 显示图片和播放视频

系列文章目录 基于 FFmpeg 的跨平台视频播放器简明教程&#xff08;一&#xff09;&#xff1a;FFMPEG Conan 环境集成基于 FFmpeg 的跨平台视频播放器简明教程&#xff08;二&#xff09;&#xff1a;基础知识和解封装&#xff08;demux&#xff09;基于 FFmpeg 的跨平台视频…

【LeetCode:2866. 美丽塔 II | 单调栈 + 前后缀数组】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

flink watermark 实例分析

WATERMARK 定义了表的事件时间属性&#xff0c;其形式为: WATERMARK FOR rowtime_column_name AS watermark_strategy_expression rowtime_column_name 把一个现有的列定义为一个为表标记事件时间的属性。该列的类型必须为 TIMESTAMP(3)/TIMESTAMP_LTZ(3)&#xff0c;且是 sche…

2023年12月GESP认证图形化编程四级真题试卷

2023年12月GESP认证Scratch图形化等级考试&#xff08;四级&#xff09;真题试卷 题目总数&#xff1a;27 总分数&#xff1a;100 选择题 第 1 题 单选题 现代计算机是指电子计算机&#xff0c;它所基于的是&#xff08; &#xff09;体系结构 A. 艾伦图灵 B. …

Valentina Studio Pro for Mac:高效数据库管理工具

作为一款强大而高效的数据库管理工具&#xff0c;Valentina Studio Pro for Mac在Mac平台上的表现无疑是令人印象深刻的。无论您是初学者还是专业数据库管理员&#xff0c;Valentina Studio Pro都能够满足您的需要&#xff0c;并提供一流的工具和功能来简化数据库管理的过程。 …

KBU808-ASEMI适配高端电源KBU808

编辑&#xff1a;ll KBU808-ASEMI适配高端电源KBU808 型号&#xff1a;KBU808 品牌&#xff1a;ASEMI 封装&#xff1a;KBU-4 最大平均正向电流&#xff1a;8A 最大重复峰值反向电压&#xff1a;800V 产品引线数量&#xff1a;4 产品内部芯片个数&#xff1a;4 产品内…

白酒企业巧用全返消费实现绝地翻盘,最后创收八亿营业额

凿壁偷光暗暗升级不如巧遇大师寻找直线道路。 每天五分钟解析一个商业模式&#xff0c;大家好我是商业模式开发啊浩。 凿壁偷光暗暗升级不如巧遇大师寻找直线道路&#xff0c;很多时候埋头苦干不一定能成功&#xff0c;做生意不得不说有时候就是投机取巧遇上高人指点打破现状寻…

Docker 编译OpenHarmony 4.0 release

一、背景介绍 1.1、环境配置 编译环境&#xff1a;Ubuntu 20.04OpenHarmony版本&#xff1a;4.0 release平台设备&#xff1a;RK3568 OpenHarmony 3.2更新至OpenHarmony 4.0后&#xff0c;公司服务器无法编译通过&#xff0c;总是在最后几十个文件时报错,错误码4000&#xf…

C#电源串口调试

目的 记录串口调试的遇到的一些问题以及相应的解决方法 1.串口定义:串口是计算机与其他硬件传输数据的通道&#xff0c;在计算机与外设通信时起到重要作用 2.串口通信的基础知识 C#中的串口通信类 C#使用串口通信类是SerialPort(),该类使用方法是 new 一个 SerialPort对象 为S…

【C语言】自定义类型:结构体深入解析(二)结构体内存对齐宏offsetof计算偏移量结构体传参

文章目录 &#x1f4dd;前言&#x1f320; 结构体内存对齐&#x1f309;内存对齐包含结构体的计算&#x1f320;宏offsetof计算偏移量&#x1f309;为什么存在内存对⻬?&#x1f320; 结构体传参&#x1f6a9;总结 &#x1f4dd;前言 本小节&#xff0c;我们学习结构的内存对…

R语言【cli】——通过cli_abort用 cli 格式的内容显示错误、警告或信息,内部调用cli_bullets和inline-makeup

cli_abort(message,...,call .envir,.envir parent.frame(),.frame .envir ) 先从那些不需要下大力气理解的参数入手&#xff1a; 参数【.envir】&#xff1a;进行万能表达式编译的环境。 参数【.frame】&#xff1a;抛出上下文。默认用于参数【.trace_bottom】&#xff…

Redis实现日榜|直播间榜单|排行榜|Redis实现日榜01

前言 直播间贡献榜是一种常见的直播平台功能&#xff0c;用于展示观众在直播过程中的贡献情况。它可以根据观众的互动行为和贡献值进行排名&#xff0c;并实时更新&#xff0c;以鼓励观众积极参与直播活动。 在直播间贡献榜中&#xff0c;每个观众都有一个对应的贡献值&#…

力扣日记12.21【二叉树篇】98. 验证二叉搜索树

力扣日记&#xff1a;【二叉树篇】98. 验证二叉搜索树 日期&#xff1a;2023.12.21 参考&#xff1a;代码随想录、力扣 98. 验证二叉搜索树 题目描述 难度&#xff1a;中等 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义…

啥?你还不道数据库?赶紧进来看吧!

操作系统&#xff1a; windows&#xff1a;win10、win11、win7、windows Server2016 Linux/Unix &#xff1a;红帽&#xff08;RedHat&#xff09;、Bebian、SUSE MacOS Linux系统&#xff1a;CantOS&#xff08;yum、dnf&#xff09;、Ubuntu&#xff08;apt、apt—get&am…

Ubuntu 常用命令之 df 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 在Ubuntu系统下&#xff0c;df命令是用来查看文件系统的磁盘空间占用情况的。df是disk free的缩写&#xff0c;这个命令可以获取硬盘被占用了多少空间&#xff0c;还有多少空间是可用的&#xff0c;硬盘的挂载点等信息。 df命令的…

【Python】matplotlib画图_饼状图

柱状图主要使用pie()函数&#xff0c;基本格式如下&#xff1a; plt.pie(x,explodeNone,labelsNone,colorsNone,autopctsNone,pctdistance0.6,shadowFalse,labeldistance1.1,staatangleNone,radiusNone,counterclockTrue,wedgepropsNone,textpropsNone,center(0,0),frameFalse…