HM148 空工程两步搭

HM148 空工程两步搭

HM148 空工程两步搭

来源: 第 148 集 职工管理系统-创建项目

难度: 入门

时间限制: 1s

空间限制: 64MB

题目描述

做一个可编译的工程只要两步:先创建**空项目**,再往项目里**添加文件**。空项目建好后,左侧会分出三个目录:头文件、源文件、资源文件。程序入口必须放在源文件目录下的 .cpp 里;源文件若没写后缀,默认补上 .cpp。项目名称可以自定,不强制用某一个固定字符串。

请模拟这套脚手架,按命令维护当前工程,不能只打印一句“创建成功”:

  • NEW name:创建名为 name 的空项目,三个目录都为空。若已经创建过项目,输出 FAIL EXISTS
  • ADD kind file:把文件加入对应目录。kindH(头文件)、S(源文件)、R(资源文件)。若尚未 NEW,输出 FAIL NO_PROJECT。对源文件:若文件名里不含 .,先补后缀 .cpp 再加入。
  • LIST:输出当前项目名,以及三个目录各自的文件个数与按字典序排好的文件名。若尚未 NEW,输出 FAIL NO_PROJECT
  • ENTRY:判断源文件目录里是否至少有一个以 .cpp 结尾的文件(这才算有程序入口)。有则 ENTRY YES,否则 ENTRY NO。尚未 NEW 时输出 FAIL NO_PROJECT

输入格式

第一行一个整数 \(q\)(\(1 \le q \le 200\)),表示命令条数。

接下来 \(q\) 行,每行一条命令,格式见上。namefile 由字母、数字、下划线、点或中文组成,不含空白,长度 \(1\sim 64\)。

输出格式

对每条命令输出若干行,行末换行:

  • NEW 成功:CREATED、一个空格、项目名。
  • ADD 成功:ADDED、一个空格、种类字母、一个空格、实际加入的文件名(源文件可能已被补上 .cpp)。
  • LIST 成功:第一行 PROJECT、一个空格、项目名;随后三行依次为
    H cnt name1 name2 ...
    S cnt name1 name2 ...
    R cnt name1 name2 ...
    其中 cnt 为该目录文件数;cnt=0 时该行只有字母和 0,后面不再跟文件名。同一目录内文件名按字典序、以单个空格分隔。
  • ENTRY 与失败信息按题目描述原样输出。

样例

输入 #1

8
NEW PolyStaff
ADD S 职工管理系统.cpp
ADD H workerManager.h
ADD S workerManager
ADD R icon.ico
LIST
ENTRY
NEW Other

输出 #1

CREATED PolyStaff
ADDED S 职工管理系统.cpp
ADDED H workerManager.h
ADDED S workerManager.cpp
ADDED R icon.ico
PROJECT PolyStaff
H 1 workerManager.h
S 2 workerManager.cpp 职工管理系统.cpp
R 1 icon.ico
ENTRY YES
FAIL EXISTS

输入 #2

3
ADD S main.cpp
ENTRY
NEW EmptyApp

输出 #2

FAIL NO_PROJECT
FAIL NO_PROJECT
CREATED EmptyApp

说明

  • 必须先空项目、后加文件;入口文件属于源文件目录,后缀是 .cpp
  • ADD S helper 会变成 helper.cpp;已经写了 .cpp 的不再重复添加后缀。
  • 空项目的三个目录都可以暂时没有任何文件;此时 ENTRYNO

信息

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