基于C++的诊所医院管理系统

视频如下:

基于C++的诊所医院管理系统

下载点一下下面超链接
点此去下载
基于C++的诊所管理系统
1、普通用户登录,可以查看自身的病例,以及医生的信息(如姓名、性别、年龄、诊费、科室、职称)并且可以实现预约医生
2、医生登录,可以进行增加患者信息(添加患者信息:姓名、性别、年龄,所诊断医生的诊费、医药费),和查看患者信息,添加患者账(:如姓名、性别、年龄、主治医师、诊费、医药费)
3、管理员登录可以添加医生信息(如姓名、性别、年龄、诊费、科室、职称)
,最后可以对接其他医院的系统实现信息共享

总体流程图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第1章 绪论
1.1研究背景
随着经济的迅速发展,人们的生活水平得到显著提高。医疗服务行业也在人们生活中占据了最重要的一环,随着医改的实施,看病难,看病贵的问题得到了解决,所以为了存储患者信息以及医生信息,为了小型诊所管理的正规化,方便化,诊所信息管理系统在此背景下诞生。
面对发展的需要通过专门的管理系统来系统化、规化以及高效地实现小型诊所管理。并且随着计算机技术的快速发展,计算机的应用逐渐普及和深入,同时计算机软件的需求特日益增长,C++语言是当前最流行的和实用的计算机程序语言。
模拟诊所信息管理系统就是对存储患者信息以及医生信息在个人PC上的编程实现。本系统采用了用户身份的注册、登陆、增加信息、查询信息、帐单信息以及统计所有患者的总费用等功能。并分析在现实生活中遇到的问题并得到解决。
1.2国内外现状简评
1、国外研究状况
根据查询得到的资料来看,60 年代初美国、日本、欧洲各国开始建立医院信息系统。70 年代,HIS 进入大发展时期,美日欧各国的医院,特别是大学医院及医学中心纷纷开发 HIS,成为医药信息学的形成和发展的基础。70-80 年代,美国的 HIS 产业已有很大发展。日本的 HIS 开发和应用从 70 年代初开始。多数日本医院是 80 年代以后开始进行HIS 工作的,但发展十分迅猛,规模相当大,是以大型机为中心的医院计算机系统。欧洲的 HIS 发展比美国稍晚,大多数是 70 年代中期和 80 年代开始。欧洲 HIS 的特点是实现了一些区域信息系统。总之发达国家的 HIS 系统无疑是领跑者并且在三十多年的发展后,有较高的覆盖率,诸如 IBM 医疗系统解决方案之类的产品,已经成功应用于世界各地。
2、国内研究状况
第一,刘钰鑫,在其硕士论文《个人管理系统》中,采用了统一建模语言作为分析设计描述语言。并依据国内个体诊所的实际情况进行了大量的调研工作,获取并整理了诊所相关的需求,建立了系统的用例模型,对系统的功能进行了划分,并且最终建立和实现了系统管理、门诊管理、财务管理、库房管理、网上交流几个子系统。它的主要工作是构建了一个基于框架的个体诊所管理系统简称。主要描述了系统管理和门诊管理两个子系统的需求分析,设计,实现过程。该系统的特色是具有丰富的功能和良好的扩展性,通过灵活的角色方问控制,可对用户一角色一权限自由设定,可以适应各种类型的人群操作,能够适应不同人员组成,不同业务规模,甚至不同业务种类的诊所方便的使用。
第二,乔元斌,在其硕士论文《个体诊所管理系统的设计与实现》,系统设计制作过程中,专注于解决用户所关心的领域中的问题。使用了多种模型与用户交流,通过反复的修正模型,最终得到贴近用户愿望的实现。它业务角度考虑,诊所会有诊疗活动,诊疗活动围绕着患者和医生来进行,医生的诊疗过程是一个对病历完善的过程。还有从辅助业务的角度考虑,系统会有方便医生和工作人员录入病历、物品等信息的模板管理。再从管理的角度考虑,系统还需要权限管理,使各种不同权限的人只能操作自己应该管理的信息。数据分析部分会使用其他几个部分提供的信息,诊所管理者在这里可以从数据上看出诊所经营的好坏,工作人员的劳动状况,患者对诊所的满意度等。它在这些分析的基础上,对系统进行各个功能模块的划分与组织。
第三,宋海东,在其硕士论文《基于Web的诊所管理系统的设计与实现》中,深入探讨了基于的应用系统开发过程及其相关技术,并且结合实际工程项目中诊所管理系统的功能需求和业务流程分析,运用动态网页、数据库、数据结构、网络通信等技术,设计了诊所管理系统解决方案重点解决了系统体系结构、预约管理、诊所内部管理及系统安全等关键问题。综合运用开发技术,提出了建立基于叮架构的系统层分布式体系结构,并将系统的业务逻辑划分为层、业务外观层、业务规则层、数据实体层和数据访问层等五个独立的层。在具体实现过程中,采用设计模式,建立统一的接口类,有效地满足了诊所管理系统的规模需求和将来业务增长的需要。
第四,陈海鸥,在其硕士论文《面向小型诊所的医疗管理系统设计与实现》中,从需求分析、总体架构设计、详细设计跟部署应用等各个方面详细的介绍医疗管理系统的设计与开发。系统使用 B/S 架构,采用 J2EE 中成熟的 SSH 集成框架,并结合了 Ehcache, Quartz, Jquey, Ajax 等技术开发。它的系统包含:就诊、挂号、工作单、病人病历信息、药库管理、诊疗方案管理、疾病管理、人员管理、数据挖掘、日志查看、财务查看、配置等多个模块。
第五,张艳哲,在其硕士论文《小型口腔诊所管理系统的研究与分析》中,首先,阐述在什么背景下作的研究,针对需要解决的问题进行阐述,对本文存在的意义及重要性进行论述;其次,对本系统的需求进行了详细的分析,涵盖了功能、业务和数据几大需求,列出了小型口腔诊所管理系统的流程图及其优化图、功能图、用例图、概念围、缩略图和实体关系图,并进行了详细叙述;列举了若干数据库表结构,对数据库进行了详细设计,包括患者信息、医务人员信息、挂号收费信息、诊疗护理记录、病历入库查询记录、用户权限记录等;再次,对本论文的内容进行总结,指出论文中仍存在的不足之处,并对下一步工作作出安排。
第六,汪天青,在其硕士论文《经方诊疗管理系统的软件开发》中,采用 Visual Basic
架构,同时使用 Access 作为数据库储存和迁移工具,并结合医患管理制度,实现了一个包括就病人登记、处方系统、换班系统等模块在内的中小型医院信息管理系统,实现了不同员工登录、患者挂号登记、患者信息查询、医生出具处理处方及划价等功能。
第七,孙梁栋的《个人诊所药房管理信息系统的设计与实现》中,讲解系统的开发过程和功能,同时论述了一些特殊问题的解决方法。
第八,汪天青,李海波的《针对中小型中医院诊疗系统的软件开发思路》,主要探讨了开发这个系统的目的,然后从国内外来分析它的研究情况,接着来讨论其理论和实际的意义,最好探讨了该论文存在不足的地方。
1.3研究思路与方法
研究思路:查阅书籍资料和电子资料,深入学习相关理论,及回顾相关知识点。网上查阅诊所管理系统的理论研究,了解现存规模以及使用情况等基本信息。将搜集到资料进一步汇总,后期并对自己着手的系统进行分析研究。 初步制定研究计划,逐渐开始对系统的开发工作。针对开发过程中遇到的问题,试自己解决,解决不了及时寻求老师以及同学的帮。对完成的系统进行测试

1.文献研究法:通过中国知网、万方数据、掌桥科研等多种网络平台以及利用学校图书馆阅读大量刊物书籍,收集诊所管理系统的理论研究的有关资料,为论文提供强有力的理论依据。
2. 分析法:通过选取一些前人研究的诊所管理系统进行分析,然后初步分析自己所要开发的基于C++的诊所管理系统,然后根据系统功能要求,可以将问题解决分为以下步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系;(3)根据问题描述,设计系统的类层次;(4)完成类层次中各个类的描述;(5)完成类中各个成员函数的定义;(6)完成系统的应用模块;(7)功能调试(8)完成系统。
第2章 需求分析
2.1社会领域分析/非功能领域分析
诊所管理系统实际上类似于医院信息系统(Hospital Information System),他是贯穿诊所的业务和业务流程的信息管理系统。按照学术界公认的 Morris F.Collen所给的定义,应该是:利用电子计算机和通讯设备,为医院所属各部门提供病人诊疗信息 ( Patient Care Information) 和行政管理信息(Administration Information)的收集(Collect)、存储(Store)、处理(Process) 、提取(Retrieve)和数据交换(Communicate) 的能力并满足所有用户 ( Authorized Users)的功能需求的平台。
2.2 功能领域分析
诊疗活动围绕着患者和医生来进行,医生的诊疗过程是一个对病历完善的过程。还有从辅助业务的角度考虑,系统会有方便医生和工作人员录入病历、物品等信息的模板管理。再从管理的角度考虑,系统还需要权限管理,使各种不同权限的人只能操作自己应该管理的信息。在这些分析的基础上,对系统进行各个功能模块的划分与组织。
第3章 系统设计
3.1 开发环境
Dev-cpp
3.2 开发原则
1、开闭原则(Open Close Principle)
开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类。
2、里氏代换原则(Liskov Substitution Principle)
里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。
3、依赖倒转原则(Dependence Inversion Principle)
这个是开闭原则的基础,具体内容:真对接口编程,依赖于抽象而不依赖于具体。
4、接口隔离原则(Interface Segregation Principle)
这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。所以上文中多次出现:降低依赖,降低耦合。
5、迪米特法则(最少知道原则)(Demeter Principle)
为什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。
让每一个函数模块单独成一个体系:

6、合成复用原则(Composite Reuse Principle)
原则是尽量使用合成/聚合的方式,而不是使用继承。

3.3 系统功能
诊所管理系统的五个基本功能:输入、存储、处理、输出和控制。
输入功能:信息系统的输入功能决定于系统所要达到的目的及系统的能力和信息环境的许可。输入的信息有医生(号码、姓名、性别、年龄、诊费、专业)和患者(号码、姓名、性别、年龄、疫苗信息、诊费和医药费)。
存储功能:存储功能指的是系统存储各种信息资料和数据的能力。将文件存储在文本中(check.txt、doc.txt、parient.txt、病历.txt)。
处理功能:增、查、删、减 。
输出功能:信息系统的各种功能都是为了保证最终实现最佳的输出功能。
控制功能:对构成系统的各种信息处理设备进行控制和管理,对整个信息加工、处理、传输、输出等环节通过各种程序进行控制。
3.4 系统可行性分析
主要考虑以下几项内容:
开发风险:在给定的限制范围内,能否设计出系统,并实现必须的功能和性能?
资源可用性:是否有充足的熟练技术人员可以支配?其他必要的资源(软件和硬件)对建造系统可用么?
技术条件:相关的技术条件是否能够支持系统的开发?

最终得出一个在技术层面上的决策基础:可行,还是不可行!
能动态地表示系统的配置并能进行评估,要求配置项很容易理解和操纵、并且与现实操作足够接近。
程序应该尽可能全面的包括所有相关的因素,并且应体现结果的可重复性。
程序应该关注那些关键问题的因素,并且抑制和回避那些不重要的因素。
程序设计应该足够简单,以允许快速实现。
模型设计应该易于修改和/或扩展。

1 对现有系统的分析
传统人工的方式管理文件档案存在着许多缺点,如效率低、保密性差等。另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
2 对建议技术的可行性分析
2.1 技术上的可行性
此次系统开发使用C++语言,该语言简单易学,又增强了可视化、数据库及Internet编程功能,很容易就可以进行系统开发。因此系统开发工具可以采用devcpp进行开发。该软件简单易懂,应用广泛,比较适合新手上路使用。
2.2 管理上的可行性
因为系统主要应用于诊所内部,而不具备网络查找功能,因此在实现时可以做成单机版,对管理员赋予数据录入、查询、修改以及对数据库的清零等功能。
3 社会因素的分析
随着科学技术的不断提高,计算机科学日渐成熟,作为计算机应用的一部分,使用计算机对诊所信息进行管理,具有着手工管理所无法比拟的优点。这些优点能够极大提高患者档案管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。该软件的开发不会侵犯国家、集体和他人的利益。

第4章 系统开发与调试
4.1 系统的主要功能界面介绍
进入系统,要进行登录,登录界面有三部分组成:管理员(唯一)、医生、患者。医生信息只有管理员有权限进行操作。对于患者信息管理员和医生都有权限,可以进行增删改查,按条件检索,对患者生成病历并转院。患者可以选择查询自己和医生的信息,但是都无权修改。可以选择医生进行预约,选择接种疫苗的时间,将信息保存。
4.2 系统实现
登录验证操作,如图所示

代码如下:
void begin()
{

Information inf[1000];//用户信息的数组
int a,b = 0;//用户的个数
int c, e,g,x;//功能选择
char* u;//登录时用户名输入
char* p;//登录时密码输入
int did;
int a1, b1;//控制判断条件
system("color 0a");
	cout << "请先登录:\n";//功能选择
		cout<<"1.管理员登录 2.医生登录 3.患者登录"<<endl;
		cin>>g;
		switch(g){
		case 1:
		{	
		cout << "请输入用户名: ";
		u = (char*)malloc(20 * sizeof(char));
		cin >> u;
		cout << "请输入密码:  ";
		p = (char*)malloc(20 * sizeof(char));
		cin >> p;
		for (int z = 0; z <= a; z++)
		{
			b1 = inf[z].Login(u, p);
			if (b1 == 0) 
			{ 
			system("cls");
				cout << "Successfully loging in." << endl << "Welcome!" << endl;
				ShowMenu();
				break;
			}//登录成功
		}
		if (b1 == 1) cout << "不是管理员不能进" << endl;//登录失败
		b=0;
		break;
    	}
        case 2:{
        	CommHma *p=Info;
char name[MAX_NAME];
char id[MAX_ID]; 
printf(" ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┓ \n" );
printf(" ┃┃ 请输入用户名:┃┃\n\t\t\t\t\t->");
scanf("%s",name);
printf(" ┃┃ 请输入id密码:┃┃\n\t\t\t\t\t->");
scanf("%s",id);
while(p)
{
	if(strcmp(p->data.name,name)==0)
	if(strcmp(p->data.id,id)==0)
	    break;
	p=p->next;
}
if(!p)
{
    printf(" ┃┃     账密错误!     ┃┃\n");
    printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛ \n");
}
else{
	 pShowMenu() ; 
 } 
		}
		case 3:{
			CommHma *p=Info;
char pname[pMAX_NAME];
char pid[pMAX_ID]; 
printf(" ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┓ \n" );
printf(" ┃┃ 请输入用户名:┃┃\n\t\t\t\t\t->");
scanf("%s",pname);
printf(" ┃┃ 请输入id密码:┃┃\n\t\t\t\t\t->");
scanf("%s",pid);
while(p)
{
	if(strcmp(p->data.pname,pname)==0)
	if(strcmp(p->data.pid,pid)==0)
	    break;
	p=p->next;
}
if(!p)
{
    printf(" ┃┃     账密错误!     ┃┃\n");
    printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛ \n");
}
else{
	 parientview(); 
 } 
			}	 
	default: cout << "abnormal input" << endl;
	}
}

菜单代码:
void ShowMenu()
{
system(“color F0”); //改变背景为黑色,文字为淡黄色

int typeID=0;


while(1)
{
   system("cls");//清屏(清除屏幕之前显示内容)
   printf("  ┏━━━━━━━━━━━━━━━━━━┓ \n");     
   printf("  ┃     医生管理系统                 ┃ \n");
   printf("  ┃━━━━━━━━━━━━━━━━━━┃ \n");
   printf("  ┃     0-退出系统                     ┃ \n");  
   printf("  ┃     1-增加医生信息                 ┃ \n");  
   printf("  ┃     2-删除医生信息                 ┃ \n");  
   printf("  ┃     3-查找医生信息                 ┃ \n");  
   printf("  ┃     4-修改医生信息                 ┃\n");   
   printf("  ┃     5-输出医生信息                 ┃\n");  
   printf("  ┃     6-年龄信息                     ┃\n"); 
   printf("  ┃     7-患者管理                     ┃\n");  
   printf("  ┗━━━━━━━━━━━━━━━━━━┛ \n");
   printf("   请选择操作: ");
   scanf("%d",&typeID);
   
   if(typeID==EXIT)//程序退出前将医生信息写人文件
   {
      WriteFile();//退出系统
      Exit();
      break;
   }
   switch(typeID) 
  {

case INPUT: //增加医生信息
system(“cls”);
AddStu();
system(“pause”);//程序暂停
break;
case DELETE:
system(“cls”);
DeleteStu();//删除医生信息
system(“pause”);
break;
case SEARCH:
SearchStu();//查找医生信息
break;
case UPDATE:
system(“cls”);
UpdateStu();//更新医生信息
system(“pause”);
break;
case OUTPUT:
system(“cls”);
OutputStu();//输出所有信息
system(“pause”);
break;
case AGE:
system(“cls”);
findage();//查询年龄
system(“pause”);
case PShowMenu:
system(“cls”);
pShowMenu() ;
system(“pause”);
default:
printf(“输人有误!\n”);
system(“pause”);
break;
}
}
}

患者可以看到的界面,相关代码如下:
void parientview(){
int p;
static int n=0;
system(“cls”);
cout<<“1.查询病例 2.查询医生信息 3.预约医生 4.预约疫苗”;
cin>>p;
switch §
{
case 1:
{
pSearchStu();//查找患者信息
parientview();
}
case 2:{
SearchStu();//查找医生信息
parientview();
}
case 3:{
cout<<" 请选择预约方式"<<endl;
cout<<" 1,上门服务 2,门诊就医"<<endl;
int option_edit;
cin>>option_edit;
if(option_edit1){
doctor_yue();
cout<<“该项会收取费用多30块钱”<<endl;
other=30;
check_add();
n++;
}
if(option_edit
2){
doctor_yue();
check_add();
n++;
}
parientview();
}
case 4:{
int option_edit;
cout<<“可选择的时间:1.上午9-11点半,2.下午14-18点:”<<endl;
cin>>option_edit;
if(option_edit1){
int seit2;
cout<<“可选择的疫苗:1.狂犬病疫苗、2.乙肝疫苗、3.卡介苗、4.麻疹疫苗、5.宫颈癌疫苗:”<<endl;
parient_yimiao();
if(option_edit
2){
int seit3;
cout<<“可选择的疫苗:1.狂犬病疫苗、2.乙肝疫苗、3.卡介苗、4.麻疹疫苗、5.宫颈癌疫苗:”<<endl;
parient_yimiao();
}
parientview();
}
}
}
}
4.3 系统调试
1、测试目的
验证程序是否能完成需求,有无重大漏洞
2、测试项目
基于C++的诊所管理系统
3、测试方法
使用所有功能,观察是否运行,看文本读写操作是否正常,修改是否同步,检验登录系统。
4、测试结果
基本满足要求,但在运行到一步时直接结束了程序
5、系统漏洞
将此处if改成else完成修复
第5章 总结与展望
不知不觉大学已经接近尾声,说实话,自己学到太多东西,不是自己天赋有多好,只是自己还算勤奋。但有一天沉静下来仔细去钻研考究,才发现编程除了烦人的语法,改不完的Bug,不会做的练习题还有成功编译出属于自己的程序的那份喜悦,希望自己能更熟练地去掌握运用它。
以互联网为主要手段的现代远程教育己成为当今教育发展的趋势之一。在国内外不断蓬勃发展。而管理系统更是一大重要组成部分,因此,基于C++的管理系统的研究对于发展尤为重要。通过这段时间的设计与开发,总体上完成了以下几项工作:
1.研究了系统管理理论,参考了一些相关的文献资料,对管理系统有了一定的认识和了解。
2.在研究设计的基础之上对系统进行实现,该系统大体上实现了总体设计方案中所提到的功能。
3.对系统进行测试,在测试过程中解决还有一些尚未发现的问题。
展望
基于C++的诊所管理系统的设计与实现涉及多方面的理论、方法和技术,本系统还有许多新的问题需要解决,需要在实际应用中不断积累和完善,还需要做进一步的研究和开发。

参考文献
[1]刘钰鑫. 个人诊所管理系统[D].山东大学,2010.
[2]乔元斌. 个体诊所管理系统的设计与实现[D].吉林大学,2014.
[3]宋海东. 基于Web的诊所管理系统的设计与实现[D].大连理工大学,2005.
[4]陈海鸿. 面向小型诊所的医疗管理系统设计与实现[D].中山大学,2015.
[5]张艳哲. 小型口腔诊所管理系统的研究与分析[D].云南大学,2015.
[6]汪天青. 经方诊疗管理系统的软件开发[D].辽宁中医药大学,2011.
[7]孙梁栋. 个人诊所药房管理信息系统的设计与实现[J]. 电脑编程技巧与维护,2010,No.20204:26-27+39.
[8]汪天青,李海波. 针对中小型中医院诊疗系统的软件开发思路[J]. 中国民族民间医药,2011,v.20;No.15001:188+190.
[9]谭浩强.《C++程序设计(第三版)》 清华大学出版社, 2015年.
[10] Azuan N A A. Clinic Management System: Outpatient Management System[D]. KUKTEM, 2005.
[11]Teke A, Londh S, Oswal P, et al. Online Clinic Management System[J]. International Journal (Toronto, Ont.), 2019, 4(2).

致谢
首先,我要诚挚的感谢我的导师,在近一年的企业实习和毕业设计期间,都得到了xx老师的悉心指导,在论文的写作过程中,多次得到他的督促,并且他为我的论文提出了许多宝贵的修改意见。老师的严谨治学的态度与求实的工作作风及丰富的学识留给我深刻的印象,使我受益匪浅。
最后要感谢几年来给我们上课的老师与学院的各位工作人员,正是有他们的辛勤劳动,才使我今天有足够的能力完成整个项目,在此向他们表示真诚的谢意。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灵舒敲代码

我的公v是cxyy1106,欢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值