HM266 管理类三件事

HM266 管理类三件事

HM266 管理类三件事

来源: 第 266 集 演讲比赛流程管理系统-演讲比赛管理类创建

难度: 普及-

时间限制: 1s

空间限制: 64MB

题目描述

整场比赛不能全写在 main 里。要单独建一个管理类 SpeechManager,用面向对象把流程拢在一起。这个类只做三件事:

  1. 菜单交互:给用户界面,让他选开始比赛、查看记录、清空记录或退出。
  2. 流程控制:抽签、比赛、显示晋级人员都由它调度。
  3. 文件读写:本届比完后写入后缀名为 csv 的文件;查看往届时再把文件读回来。

类要拆成两个文件:头文件 speechManager.h 做声明,源文件 speechManager.cpp 做实现。头文件第一行写 #pragma once,防止重复包含。头文件里通常先包含 <iostream>using namespace std;

构造函数和析构函数即使暂时是空的,也要自己写出来:在 .h 里**只声明**,在 .cpp 里写出空实现,并加上 SpeechManager:: 作用域。不要在头文件里写函数体。

读入工程拆分信息和若干成员调用,先检查架子是否合法,再按调用顺序输出每一动作的类别。

输入格式

第一行两个不含空白的文件名 \(hName\)、\(cppName\)。

第二行一个整数 \(pragmaFlag\):\(1\) 表示头文件写了 #pragma once,其它值表示没写。

第三行一个整数 \(bodyInHeader\):\(0\) 表示构造/析构只在头文件声明,\(1\) 表示有人把函数体写进了头文件。

第四行一个整数 \(q\)(\(1 \le q \le 100\))。

接下来 \(q\) 行,每行一个字符串 \(op\),表示一次调用:

  • ctor:构造函数
  • dtor:析构函数
  • menu:菜单交互
  • drawcontestshow:流程控制里的抽签、比赛、显示晋级
  • saveload:文件读写

输出格式

若两个文件名不是 speechManager.hspeechManager.cpp(必须恰好这对,顺序也要一致),输出一行 BAD_SPLIT

否则若 \(pragmaFlag \ne 1\),输出一行 NEED_ONCE

否则若 \(bodyInHeader = 1\),输出一行 BODY_IN_HEADER

否则先输出一行 READY,随后对每个 \(op\) 输出一行类别:

  • ctorCTOR
  • dtorDTOR
  • menuMENU
  • draw / contest / showFLOW
  • save / loadFILE

行末换行。保证合法时 \(op\) 只是上述几种。

样例

输入 #1

speechManager.h speechManager.cpp
1
0
5
ctor
menu
draw
save
dtor

输出 #1

READY
CTOR
MENU
FLOW
FILE
DTOR

输入 #2

manager.h manager.cpp
1
0
1
ctor

输出 #2

BAD_SPLIT

说明

样例 1 按规范拆成 .h / .cpp,头文件有 #pragma once 且只有声明,因此可以按三件事给调用分类。样例 2 文件名不对,即使其它项都对也直接 BAD_SPLIT。构造和析构要自己写,不要完全依赖编译器默认生成。

信息

ID
1265
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者