题目: 大型医院挂号系统设计
功能:
该系统包括,登记病员信息,根据所挂科室及普通号或专家号分别按诊室对病人进行排队。每个病员按照排队次序在各自的队列中等待就诊,系统及时显示各诊室的排队情况。
科室:至少有科室:普内,普外,消化内科,心脏内科,心脏外科等
诊室:一个诊室是属于某一个科室,一个科室至少有两个诊室,一个诊室中可以有若干个医师(不少于2个不超过5个),一周内的每天出针医师可以不相同。
医师:每个医师属于某一个科室,固定在某一个诊室上班,但他们并不是每天都出诊,在一周内每个人都有自己的出诊时间,但一天每个诊室只有一名医师在岗。每个医师有自己的职称,职称不同挂号费用不同。职称与挂号费用:主任医师10元,副主任医师8元,主治医师及以下圴为5元。
病员信息:姓名、性别、年龄、家庭住址,电话。
规则:看病次序按先来先服务的原则,开始是初始分为空队。所有功能均以菜单方式展示。
(1)有新病人来,按其想要挂的科室给其分配一个诊室,或者由病人选择诊室。再按其病情紧急状况,若紧急则直接插入所挂诊室的队头。若非紧急,则正常入队尾,等待看病。
(2)可以查看所有科室的所有诊室的当日值班班医师名单
(3)若某个病人决定不再等待放弃看病,允许从队列中删除之。
(4)可以实现各种病人信息查询以及科室排序信息查询
(5)可以查询某一病人在队列中次序
(6)下班时间到,显示各科室各诊室队列中的排队人数。
(7)各科室当天就诊人数统计
(8)统计当天各科室的挂号收费情况。
(9)降序显示不同科室当天门诊病人数。
除上述功能外可以自行扩充。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 病员结构体
typedef struct Patient {
char name[50]; // 姓名
char gender[10]; // 性别
int age; // 年龄
char address[100]; // 家庭住址
char phone[20]; // 电话
} Patient;
// 科室结构体
typedef struct Department {
char name[50]; // 科室名称
char rooms[5][50]; // 诊室名称
int numRooms; // 诊室数量
char doctors[5][50]; // 医师姓名
char workDays[7][50]; // 工作日
int numDoctors; // 医师数量
} Department;
// 全局变量
Patient patientQueue[10][100]; // 病人队列,最多10个科室,每个科室最多100个病人
int queueSize[10]; // 每个科室队列大小
Department departments[10]; // 科室数组,最多10个科室
int numDepartments = 0; // 科室数量
// 初始化科室信息
void initializeDepartments() {
// 初始化科室,包括诊室和医师信息
//strcpy(departments[numDepartments].zc, "普内");
strcpy(departments[numDepartments].name, "普内");
strcpy(departments[numDepartments].rooms[0], "诊室A");
strcpy(departments[numDepartments].rooms[1], "诊室B");
strcpy(departments[numDepartments].rooms[2], "诊室C");
strcpy(departments[numDepartments].doctors[0], "张医生主任医师");
strcpy(departments[numDepartments].doctors[1], "李医生主治医师");
strcpy(departments[numDepartments].doctors[2], "王医生副主任医师");
departments[numDepartments].numRooms = 3;
departments[numDepartments].numDoctors = 3;
numDepartments++;
strcpy(departments[numDepartments].name, "内科");
strcpy(departments[numDepartments].rooms[0], "诊室A");
strcpy(departments[numDepartments].rooms[1], "诊室B");
strcpy(departments[numDepartments].rooms[2], "诊室C");
strcpy(departments[numDepartments].doctors[0], "张医生主任医师");
strcpy(departments[numDepartments].doctors[1], "李医生主治医师");
strcpy(departments[numDepartments].doctors[2], "王医生副主任医师");
departments[numDepartments].numRooms = 3;
departments[numDepartments].numDoctors = 3;
numDepartments++;
strcpy(departments[numDepartments].name, "消化内科");
strcpy(departments[numDepartments].rooms[0], "诊室A");
strcpy(departments[numDepartments].rooms[1], "诊室B");
strcpy(departments[numDe