HM266 管理类三件事
HM266 管理类三件事
来源: 第 266 集 演讲比赛流程管理系统-演讲比赛管理类创建
难度: 普及-
时间限制: 1s
空间限制: 64MB
题目描述
整场比赛不能全写在 main 里。要单独建一个管理类 SpeechManager,用面向对象把流程拢在一起。这个类只做三件事:
- 菜单交互:给用户界面,让他选开始比赛、查看记录、清空记录或退出。
- 流程控制:抽签、比赛、显示晋级人员都由它调度。
- 文件读写:本届比完后写入后缀名为
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:菜单交互draw、contest、show:流程控制里的抽签、比赛、显示晋级save、load:文件读写
输出格式
若两个文件名不是 speechManager.h 与 speechManager.cpp(必须恰好这对,顺序也要一致),输出一行 BAD_SPLIT。
否则若 \(pragmaFlag \ne 1\),输出一行 NEED_ONCE。
否则若 \(bodyInHeader = 1\),输出一行 BODY_IN_HEADER。
否则先输出一行 READY,随后对每个 \(op\) 输出一行类别:
ctor→CTORdtor→DTORmenu→MENUdraw/contest/show→FLOWsave/load→FILE
行末换行。保证合法时 \(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
- 通过率
- ?
- 上传者