应用题——用java浅做个课程表

课程表!!

文章目录:

一:课程表的创建

二:具体步骤:

  1. 类的创建
  1. 课程表数组的初始化
  1. 类方法的定义
  • select() 方法 选择录入方式
  • subject() 方法 显示所有课程
  • subject_sel() 课程选择
  • input() 批量录入
  • Locate() 定位选择
  • output() 输出课程表
  1. 在main函数中调用方法
5、 输出结果


一、类的创建

创建一个Board类表示课程,在后面创建主类时创建Board对象,并在类里面创建一下类方法。

class Board {

二、课程表数组的初始化

在Board类中初始化一个课程表数组,确定课程表的基本结构,在第一行和第一列后面添加\t保证每一格子的长度一致且不过度密集,用\t来填充空格,避免后面添加课程时因某些地方无课程而造成结构塌陷。

String[][] initials = {{"\t","1-2节\t","3-4节\t","5-6节\t","7-8节\t","9-10节"},
            {"星期一丨\t","\t","\t","\t","\t","\t"},
            {"星期二丨\t","\t","\t","\t","\t","\t"},
            {"星期三丨\t","\t","\t","\t","\t","\t"},
            {"星期四丨\t","\t","\t","\t","\t","\t"},
            {"星期五丨\t","\t","\t","\t","\t","\t"}};

三、类方法的定义

  • select()方法的创建

选择录入的方式,批量录入和单个录入,通过switch()方法来进行选择,将通过Scanner类键盘录入来作为switch的参数,并调用其对应的方法,结尾的break终止程序继续输出。

//    选择录入方法
    void select() {
        Scanner sr = new Scanner(System.in);
        System.out.println("---------------------------------");
        //  创建两种选择方式
        System.out.println("1、批量录入   2、单个录入"); 
        System.out.println("---------------------------------");
        System.out.print("请输入你想录入课程的方式:");
        //  选择
        switch(sr.nextInt()) {
        case 1:input();break;
        case 2:Locate();break;
        }
    }
  • subject() 方法

通过subject方法打印所有的课程及编号,供用户选择,\t确保输出格式工整。

void subject() {
        System.out.println("-----------------------------------");
        System.out.println("现有一下科目可选(请选择对应数字,选0则空):");
        System.out.println("1,离散数学\t   2,java编程\t  3,大学英语\n"
                + "4,中国近代史  5,思政\t  6,军训理论 \n"
                + "7,心理健康教育  8,体育\t  9,高等数学");
        System.out.println("-----------------------------------");
    }
  • subject_sel()方法

通过switch()方法来将用户数入的参数与一下课程编号进行匹配并返回对应的字符串,添加至课程表数组中。

    //  对课程进行选择
    static String subject_sel(int a) {
        switch(a) {
        case 1:return "离散数学\t";
        case 2:return "java编程\t";
        case 3:return "大学英语\t";
        case 4:return "中国近代史\t";
        case 5:return "思政\t";
        case 6:return "军训理论\t";
        case 7:return "心理健康教育";
        case 8:return "体育\t";
        case 9:return "高等数学\t";
        default:return "\t";
        }
    }
  • input()方法

批量录入课程,通过两个for循环来循环二维数组,并从数组的第二行第二列开始按照顺序不断输入课程编号并作为参数调用subject_sel()方法

    //    批量录入课程
    void input() {
        System.out.println("请按顺序输入所有课程编号:");
        Scanner sr = new Scanner(System.in);
    //  循环数组 
         for(int i=1;i<initials.length;i++) {
             for(int j=1;j<initials.length;j++) {
                 initials[i][j] = subject_sel(sr.nextInt());
             }  
         }
         System.out.println("---------------------------------");
    }
  • Locate()方法

定点录入课程,用subj来接收选择的课程编码,用row和col来接收添加课程的行与列,通过for循环来选出与之对应的元素位置,用if判断语句来辨别该元素是否重复录入,避免造成课程覆盖或多个课程出现的结果,最后通过while(true)不断进行循环该操作,通过if判断语句来判断是否结束循环,equals()方法来判断输入的字符串answer是否与字母“n”一致。

//  选择定位添加,单个课程录入
    void Locate() {
        Scanner sr = new Scanner(System.in);
        System.out.println("请输入你想添加的课程和时间段");
        while(true) {    
            System.out.print("添加的课程编码");
            int subj = sr.nextInt();
            System.out.print("添加的课程的时间段(行列表示):");
            int row = sr.nextInt();
            int col = sr.nextInt();
            //  定位添加课程的位置
            for(int i=1;i<initials.length;i++) {
                for(int j=1;j<initials.length;j++) {
                    
                    if(i==row&&j==col) {
                        if(initials[i][j].equals("\t")) {
                            initials[i][j] = subject_sel(subj);}
                        else {
                            System.out.println("同个时间段出现多个课程,请重新输出!!!");
                            continue;
                        }
                    }
                }
            }
            System.out.print("是否继续添加 y/n");
            String answer = sr.next();
            if(answer.equals("n")) {
                break;
            }
            
        }    
    }
  • output()方法

通过for循环来输出数组里的元素,用if来判断一行的结束,并进行转行,保证课程的完整结构。

void output(String[][]initial) {
        System.out.println("-------------------------------------------");
        for(int i=0;i<initial.length;i++) {
            for(int j=0;j<initial.length;j++) {
                System.out.print(initial[i][j]); 
                if(j==initial.length-1) {
                    System.out.println();
                }
             }
         }
        System.out.println("-------------------------------------------");
}

四、main函数

创建一个学生类,在学生类里的main函数new一个课程表对象bd,通过对象bd调用select方法来选择录入方式,再通过output打印课程表。

//    创建学生类
public class Student {
    
    public static void main(String[] args) {
        Board bd = new Board();
        bd.subject();    //课程目录
//        bd.input();     //单个录入
//        bd.Locate();  // 批量录入
        bd.select();    // 选择录入方式
        bd.output(bd.initials); // 打印数组

    }

}

五、输出结果

  • 单个录入

  • 批量录入

  • 1
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值