HM292 登录接口封装
HM292 登录接口封装
来源: 第 292 集 机房预约系统-登录函数接口封装
难度: 普及-
时间限制: 1s
空间限制: 64MB
题目描述
在入口文件里封装全局函数 login(fileName, type):第一个参数是要读的文件名,第二个参数是身份类型——\(1\) 学生,\(2\) 教师,\(3\) 管理员。主菜单选 \(1\) 时调用 login(STUDENT_FILE, 1),选 \(2\) 时 login(TEACHER_FILE, 2),选 \(3\) 时 login(ADMIN_FILE, 3)。三个宏分别展开为 student.txt、teacher.txt、admin.txt。
函数内部先准备一个身份基类指针 Identity* person,初值空指针,用来在验证成功后以多态方式指向具体派生对象(本问验证分支尚未填写,指针保持为空)。
然后用读方式打开 fileName。若文件不存在:输出 文件不存在 并立即返回,后面不再读。
文件存在时再接收登录信息:
- 类型 \(1\):先读学号(提示语义为学号);
- 类型 \(2\):先读职工号(提示语义为职工号);
- 类型 \(3\):管理员没有编号,不读这一项。
无论哪种身份,都还要读用户名和密码。接着按类型进入学生 / 教师 / 管理员三条验证分支。本问三条分支都还是空的,因此只要文件存在,最后一律走到失败路径,输出 验证登录失败。类型不是 \(1,2,3\) 时同样输出 验证登录失败,且不去打开文件。
用内存模拟“哪些文件存在”。先给出已存在的文件名列表,再给出若干次登录尝试。每次尝试先输出打开的文件名(若有打开),再输出读到的编号语义与字段,最后输出失败信息。
输入格式
第一行一个整数 \(k\),表示已存在的文件个数。
接下来 \(k\) 行,每行一个文件名。
下一行一个整数 \(q\)。
接下来 \(q\) 行:
- 类型为 \(1\) 或 \(2\):
type id name pwd - 类型为 \(3\):
type name pwd - 其他类型:一行一个整数
type
输出格式
对每次尝试:
- 类型不是 \(1,2,3\):只输出一行
验证登录失败; - 对应文件不存在:只输出一行
文件不存在; - 否则第一行输出打开的文件名;第二行:学生为
学号 id,教师为职工号 id,管理员为无编号;第三行输出name pwd;第四行验证登录失败。
样例
输入 #1
2
student.txt
admin.txt
4
1 1 Zhang 123
2 1 Wang 123
3 admin 123
4
输出 #1
student.txt
学号 1
Zhang 123
验证登录失败
文件不存在
admin.txt
无编号
admin 123
验证登录失败
验证登录失败
输入 #2
1
teacher.txt
2
2 8 Zhao 111
1 1 Zhang 123
输出 #2
teacher.txt
职工号 8
Zhao 111
验证登录失败
文件不存在
说明
\(0 \le k \le 5\),\(1 \le q \le 100\)。本问故意不做核对:即使姓名密码将来能对上,现在也必须输出失败,因为三条验证分支还是空实现。
信息
- ID
- 1291
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者