病人就医管理系统.docx
- 文档编号:26292334
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:17
- 大小:82.63KB
病人就医管理系统.docx
《病人就医管理系统.docx》由会员分享,可在线阅读,更多相关《病人就医管理系统.docx(17页珍藏版)》请在冰豆网上搜索。
病人就医管理系统
一、设计题目
编写一个程序定义行医类,反映病人到医院看病,排队看医生的情况,在病人排队过程中,主要发生两件事:
(1)病人到达诊室,将病历本交给护士,排到等待队列中候诊。
(2)护士从等待队列中取出一位病人的病历,该病人进入诊室就诊。
要求程序采用菜单方式,其选项及功能说明如下:
(1)排队------输入病人的病历号,加入到病人排队队列中
(2)就诊-------病人排队队列中最前面的病人就诊,并将其从队列中删除。
(3)查看排队------从队首到队尾列出所有的排队病人的病历号。
(4)下班---------退出运行。
二、需求分析
1)运行环境(软、硬件环境)
软件:
MicrosoftVisualStudio//MicrosoftVisualC++6.0;
硬件:
计算机硬件系统(包括键盘等)
2)输入的形式和输入值的范围
输入形式:
通过键盘键入测试数据
输入值范围:
①字符型(char)医生,护士
②字符数组病人病历号
3)输出的形式描述
输入通过显示计算机屏显示,医生选择相应功能之后,显示屏会显示出各种对应信息。
4)功能描述
病人到诊室,交给护士自己的病历表之后,护士登记病人的病历号,同时纳入队列中进行排队等待。
当等到该病历号的病人进入诊室进行就诊时,系统删除前一位病人的病历号,同时下一位病人进入等待就诊阶段。
如此反复,当时间到达下班时间之后,系统停止运行,医生操作退出系统!
此过程中,医生可以随时调动系统数据,查看需要就诊的病人病历号及病人人数,此过程使用队列的遍历函数予以实现。
5)测试数据
分别选择验证相应功能的数据进行实验数据测试。
测试排队功能数据:
(选择1)
病历号:
100,101,102,103
测试输入错误时,系统显示:
(选择12)
测试就诊功能数据:
(选择2)
测试查看队列功能数据:
(选择3)
测试下班功能数据:
(选择4)
三、概要设计
1)抽象数据类型定义描述
(对各类的成员及成员函数进行抽象描述,参见书或ppt及实验)
①template
classNode
{
public:
Tdata;//数据域
Node
};
②template
classLinkQueue
{
public:
LinkQueue();//构造函数,初始化一个空的链队列
~LinkQueue(){};//析构函数,释放链队中各结点的存储空间
voidInQueue(Tx);//将元素x入队
TOutQueue();//将队头元素出队
TGetQueue();//取链队列的队头元素
intEmpty(){
if(front==NULL)
return1;
return0;};//判断链队列是否为空
voidTraverse();//遍历函数
private:
Node
};
2)功能模块设计(如主程序模块设计)
①头文件
②类:
第一,结点类;
第二,链队列类;
第三,行医类:
③主函数
3)模块层次调用关系图
四、详细设计
实现概要设计中定义的所有的类的定义及类中成员函数,并对主要的模块写出伪码算法。
结点类:
template
classNode
{
public:
Tdata;//数据域
Node
};
链队列类:
template
classLinkQueue
{
public:
LinkQueue();//构造函数,初始化一个空的链队列
~LinkQueue(){};//析构函数,释放链队中各结点的存储空间
voidInQueue(Tx);//将元素x入队
TOutQueue();//将队头元素出队
TGetQueue();//取链队列的队头元素
intEmpty()
{
if(front==NULL)
return1;
return0;
};//判断链队列是否为空
voidTraverse();//遍历函数
private:
Node
};
template
LinkQueue
:
LinkQueue()
{
front=rear=NULL;
}
template
voidLinkQueue
:
InQueue(Tx)
{
Node
s=newNode
s->data=x;//申请一个数据域为x的结点s
s->next=NULL;
if(front==NULL)//空队列,新结点既是队头,又是队尾
{front=rear=s;}
else
{rear->next=s;//将结点s插入到队尾
rear=s;
}
}
template
TLinkQueue
:
OutQueue()
{
Node
if(front==NULL)
{
cout<<"队空"< exit(0); } p=front; x=p->data;//暂存队头元素 front=front->next;//将队头元素所在结点摘链 if(front==NULL) rear=front; deletep; returnx; } template voidLinkQueue : Traverse() { Node p=front; cout<<"正在排队的病人显示: "< while(p! =NULL) { cout< p=p->next; } cout< } 行医类: classHospitalize { private: LinkQueue public: Hospitalize(){};//无参数的构造函数 ~Hospitalize(){};//析构函数 voidStandInALine();//排队 voidCure();//就诊 voidDisplay();//查看排队 }; voidHospitalize: : StandInALine() { intnum;//病历号 cout<<"请输入病历号: "; cin>>num;//输入排队病人 queue.InQueue(num);//将病历号加入到病人排队队列中 } voidHospitalize: : Cure() { if(queue.Empty()) { cout<<"现已没有病人在排队了!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 病人 就医 管理 系统