#ASC999. 实验室数据库管理一下

实验室数据库管理一下

题目:实验室数据库管理一下

数据说明

每名成员包含:姓名、学号、性别、分组、生日、技能列表。需要支持录入与多类查询/排序指令。

输入格式

  1. 第一行:整数 n(1 ≤ n ≤ 1000)。
  2. 接下来 n 行,字段以空格分隔,字段自身不含空格
name studentID gender group yyyy/mm/dd k skill1 skill2 ... skillk
  • name:长度 1–50。
  • studentID正好 8 位数字字符串全局唯一
  • gender:仅为
  • group:非负整数。
  • yyyy/mm/dd:四位年/两位月/两位日(例如 2005/10/01)。
  • k:技能个数,0 ≤ k ≤ 50。若 k=0,该行以 ... yyyy/mm/dd 0 结束。
  • skill1..skillk:每个为 1–50 字符的字符串。
  1. 之后一行:整数 q(1 ≤ q ≤ 2000)。
  2. 接下来 q 行,每行一条指令(大小写固定,无多余空格):
  • Check_name X
  • Check_StudentID X
  • Check_Birthday yyyy/mm/dd
  • Check_group G
  • Get S
  • Sort_Birthday

说明:XS 为字符串,G 为非负整数。

匹配与比较规则

  • 全部为精确匹配且区分大小写

    • Check_name Xname == X
    • Check_StudentID XstudentID == X
    • Check_Birthday D:生日等于 D
    • Check_group Ggroup == G
    • Get S:技能列表中存在任一等于 S 的技能
  • studentID 在输入数据中保证唯一。若出现非法数据导致多条命中,同样按下述“多人输出排序”规则输出全部命中。

输出格式

  • 成员完整信息统一为一行(字段间一个空格):
name studentID gender group yyyy/mm/dd k skill1 skill2 ... skillk
  • 对每条指令:

    • 若命中 ≥1 人,**按“多人输出排序”**逐行输出。

    • 若无命中,输出对应提示词一行:

      • Check_nameSorry, ASC could not find this Name.
      • Check_StudentIDSorry, ASC could not find this StudentID.
      • Check_BirthdaySorry, ASC could not find this Birthday.
      • Check_groupSorry, ASC could not find this Group.
      • GetSorry, ASC could not find this Skill.
    • Sort_Birthday:输出全部 n 人,按“多人输出排序”。

多人输出排序

当需要输出多人的时候(包括 Sort_Birthday 及各类查询命中多条)统一采用:

  1. 生日从“年轻到年老”:日期者在前(先比年,年大者在前;年同再比月;月同再比日)。
  2. 若生日相同:按 studentID 字典序升序

其他约定

  • 仅使用标准输入输出。
  • 字段合法性已由数据保证,无需额外校验。
  • 程序应使用结构体与指针组织数据;建议动态内存与排序实现。

样例输入

12
张粤折 24060001 男 0 2005/10/01 4 STM32 HAL Keil CubeMX
理文炫 23060002 男 0 2005/10/02 3 IMU CCD Python
陈德华 23040003 男 0 2005/09/30 2 STC-ISP STC32
张希望 24060004 女 1 2006/03/02 3 STM32 IMU FOC
折纸鸢 23060005 女 1 2005/12/31 5 RT1021 OpenART MicroPython ChatGPT GithubCopilot
于小羊 23040006 女 1 2005/12/30 1 Python
陈贾伟 24060007 男 2 2006/03/05 2 TC264 CCD
秒神界 23060008 男 2 2005/10/01 3 Search Code Python
雨菲羊 23040009 女 2 2005/10/01 4 STM32 HAL IMU Keil
涨潮 24060010 男 3 2006/01/15 2 STC32 STC-ISP
徐云舒 23060011 女 3 2005/11/01 3 ChatGPT GithubCopilot Python
哈吉风 23040012 男 3 2005/10/02 0
11
Check_name 张粤折
Check_name 纸飞机
Check_StudentID 23040003
Check_StudentID 23049999
Check_Birthday 2005/10/01
Check_group 2
Check_group 9
Get STM32
Get GithubCopilot
Get Rust
Sort_Birthday

样例输出

张粤折 24060001 男 0 2005/10/01 4 STM32 HAL Keil CubeMX
Sorry, ASC could not find this Name.
陈德华 23040003 男 0 2005/09/30 2 STC-ISP STC32
Sorry, ASC could not find this StudentID.
雨菲羊 23040009 女 2 2005/10/01 4 STM32 HAL IMU Keil
秒神界 23060008 男 2 2005/10/01 3 Search Code Python
张粤折 24060001 男 0 2005/10/01 4 STM32 HAL Keil CubeMX
陈贾伟 24060007 男 2 2006/03/05 2 TC264 CCD
雨菲羊 23040009 女 2 2005/10/01 4 STM32 HAL IMU Keil
秒神界 23060008 男 2 2005/10/01 3 Search Code Python
Sorry, ASC could not find this Group.
张希望 24060004 女 1 2006/03/02 3 STM32 IMU FOC
雨菲羊 23040009 女 2 2005/10/01 4 STM32 HAL IMU Keil
张粤折 24060001 男 0 2005/10/01 4 STM32 HAL Keil CubeMX
折纸鸢 23060005 女 1 2005/12/31 5 RT1021 OpenART MicroPython ChatGPT GithubCopilot
徐云舒 23060011 女 3 2005/11/01 3 ChatGPT GithubCopilot Python
Sorry, ASC could not find this Skill.
陈贾伟 24060007 男 2 2006/03/05 2 TC264 CCD
张希望 24060004 女 1 2006/03/02 3 STM32 IMU FOC
涨潮 24060010 男 3 2006/01/15 2 STC32 STC-ISP
折纸鸢 23060005 女 1 2005/12/31 5 RT1021 OpenART MicroPython ChatGPT GithubCopilot
于小羊 23040006 女 1 2005/12/30 1 Python
徐云舒 23060011 女 3 2005/11/01 3 ChatGPT GithubCopilot Python
哈吉风 23040012 男 3 2005/10/02 0
理文炫 23060002 男 0 2005/10/02 3 IMU CCD Python
雨菲羊 23040009 女 2 2005/10/01 4 STM32 HAL IMU Keil
秒神界 23060008 男 2 2005/10/01 3 Search Code Python
张粤折 24060001 男 0 2005/10/01 4 STM32 HAL Keil CubeMX
陈德华 23040003 男 0 2005/09/30 2 STC-ISP STC32