50 lines
3.5 KiB
Markdown
50 lines
3.5 KiB
Markdown
``` txt
|
||
his-project/
|
||
├── CMakeLists.txt # 根构建配置
|
||
├── data/ # 原始数据目录(评测时展示的文件)
|
||
│ ├── patients.txt # 【存储JSON数组的文本文件】至少30条记录
|
||
│ ├── doctors.txt
|
||
│ ├── wards.txt # 病房信息
|
||
│ └── medicines.txt # 药品库
|
||
├── include/ # 头文件目录 (.h / .hpp)
|
||
│ ├── models/ # 1. 纯数据实体层 (Entity)
|
||
│ │ ├── patient.h
|
||
│ │ ├── doctor.h
|
||
│ │ └── medicine.h
|
||
│ ├── utils/ # 2. 底层工具与驱动层
|
||
│ │ ├── linked_list.hpp # 【核心】全手写的泛型链表 template<T>
|
||
│ │ ├── file_manager.h # 文件读写封装
|
||
│ │ └── e2hang_json.h # 你的 C++20 JSON 解析库头文件
|
||
│ ├── core/ # 3. 核心业务层 (his-core)
|
||
│ │ ├── his_context.h # 全局上下文(持有所有内存链表的实例)
|
||
│ │ ├── patient_service.h # 处理挂号、看诊等纯逻辑
|
||
│ │ └── report_service.h # 报表统计算法
|
||
│ └── cli/ # 4. 交互表现层 (his-cli)
|
||
│ ├── repl_shell.h # 交互式命令行主循环
|
||
│ └── format_printer.h # 负责把链表数据打印成漂亮的 ASCII 表格
|
||
├── src/ # 源文件目录 (.cpp) => 源文件目录 (实现)
|
||
│ ├── main.cpp # 程序唯一入口:负责初始化、启动 REPL 和退出保存
|
||
│ ├── models/ # 实体类方法实现
|
||
│ │ ├── patient.cpp # 患者属性操作及 JSON 序列化实现
|
||
│ │ ├── doctor.cpp # 医生属性操作
|
||
│ │ ├── ward.cpp # 病房/床位逻辑实现
|
||
│ │ └── medicine.cpp # 药品多名称匹配逻辑实现
|
||
│ ├── core/ # his-core:核心业务实现 (无输入输出)
|
||
│ │ ├── his_context.cpp # 全局单例:管理所有内存链表的加载与保存
|
||
│ │ ├── patient_service.cpp # 实现挂号、诊疗记录、病历生成逻辑 [cite: 38]
|
||
│ │ ├── inpatient_service.cpp # 实现住院分配、床位流转逻辑 [cite: 38]
|
||
│ │ ├── pharmacy_service.cpp # 实现处方发药、库存增减、入库逻辑 [cite: 38]
|
||
│ │ └── report_service.cpp # 实现多维度报表统计与数据分析算法
|
||
│ ├── utils/ # 基础设施实现
|
||
│ │ ├── file_manager.cpp # 处理 .txt 文件的物理读写
|
||
│ │ ├── input_sanitizer.cpp # 【鲁棒性核心】针对“测试工程师”的输入清洗
|
||
│ │ └── e2hang_json.cpp # 你的 C++20 JSON 解析库实现
|
||
│ └── cli/ # his-cli:命令行交互实现
|
||
│ ├── repl_shell.cpp # 交互式 Shell 主循环 (Read-Eval-Print Loop)
|
||
│ ├── command_parser.cpp # 指令分发器:将输入映射到对应的 Service 函数
|
||
│ └── table_printer.cpp # 美化工具:将结果格式化为 ASCII 表格输出
|
||
└── tests/ # 测试用例目录(专门对付“测试工程师”)
|
||
├── test_linked_list.cpp # 必须先确保链表绝对可靠
|
||
└── test_core_logic.cpp # 灌入异常数据测试业务层鲁棒性
|
||
```
|