C语言项目——患者信息管理系统

项目场景:

本系统能够方便、灵活地实现住院部患者基本数据的输入、查询和浏览功能。患者基本情况表至少应包含病人姓名、病人性别、入院时间、所属科室、病人基本状况、主治医生、病房号、病床号、备注等字段。


问题描述

通过编程实现患者信息的输入、存储、查找以及显示。


解决方案:

首先、定义菜单函数(用来打印菜单)

void caidan(void)//打印菜单函数
{
	printf("|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>|\n");
	printf("|___________________________________________________________________________|\n");
	printf("|                               1. 患者数据输入                             |\n");
	printf("|___________________________________________________________________________|\n");
	printf("|                               2. 患者数据查询                             |\n");
	printf("|___________________________________________________________________________|\n");
	printf("|                               3. 患者数据浏览                             |\n");
	printf("|___________________________________________________________________________|\n");
	printf("|                               0. 退出                                     |\n");
	printf("|___________________________________________________________________________|\n");
	printf("|                         》》》》 请选择》》》》                           |\n");
	printf("|___________________________________________________________________________|\n");
	printf("|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>|\n");
}

菜单中有4个选择项目,其中3个为系统主要功能,接下来要分别定义数据的输入、查询、浏览函数来实现其功能。

但是为了方便患者信息的输入和存储,我们应该先定义一个包含病人姓名、病人性别、入院时间、所属科室、病人基本状况、主治医生、病房号、病床号、备注的结构体来保存数据。又因为保存的数据不止一个,要保存多个患者的信息,所以应该定义结构体数组。

//定义结构体
struct huanzhexinxi
{
	char huanzhe_name[20];
	char huanzhe_sex[10];
	char ruyuyanshijian[30];
	char suoshukeshi[30];
	char jibenzhuangkuang[30];
	char zhuzhiyisheng[20];
	char bingfanghao[10];
	char chuanghao[10];
	char beizhu[100];
};
struct huanzhexinxi patient[100];//定义结构体数组,作为患者信息的存储目录

接下来就是输入、查询、浏览函数的定义:

void shuru(void)//数据输入
{
	
	printf("……………………请输入患者信息……………………\n");//对结构体数组的初始化
	printf("请输入患者姓名:");
	scanf("%s", patient[n].huanzhe_name);
	printf("请输入患者性别:");
	scanf("%s", patient[n].huanzhe_sex);
	printf("请输入入院时间:<格式:year.months.day>: ");
	scanf("%s", patient[n].ruyuyanshijian);
	printf("所属科室:");
	scanf("%s", patient[n].suoshukeshi);
	printf("基本状况:");
	scanf("%s", patient[n].jibenzhuangkuang);
	printf("主治医生:");
	scanf("%s", patient[n].zhuzhiyisheng);
	printf("病房号:");
	scanf("%s", patient[n].bingfanghao);
	printf("床号:");
	scanf("%s", patient[n].chuanghao);
	printf("备注:");
	scanf("%s", patient[n].beizhu);

	n++;//没输入一个患者的信息,n就增加 1 

	printf("……………………患者信息录入完成……………………\n");
	printf("是否继续添加患者信息 ? ( Y / N )\n");
	if (getch() == 'Y')//输入Y,继续执行if语句,继续调用shuru()函数,否则返回主菜单
		shuru();
	
}
void shuchu(void)//数据输出
{
	int mark = 0;
	int i = 0;
	char name[20];
	printf("》》》》…………按姓名查找…………》》》》》\n");
	printf("请输入您要查找的患者姓名:");
	scanf("%s", name);
	for (i = 0; i < n; i++)
	{
		if (strcmp(patient[i].huanzhe_name, name) == 0)//将输入name与系统中患者名字一一进行比对,相同返回值为 0
		{
			printf("^^………………以下是您要查找的患者信息………………^^\n");
			printf("患者姓名: %s\n",patient[i].huanzhe_name);

			printf("患者性别:%s\n", patient[i].huanzhe_sex);
			
			printf("入院时间: %s\n", patient[i].ruyuyanshijian);
			
			printf("所属科室:%s\n", patient[i].suoshukeshi);
			
			printf("基本状况:%s\n", patient[i].jibenzhuangkuang);
			
			printf("主治医生:%s\n", patient[i].zhuzhiyisheng);
			
			printf("病房号:%s\n", patient[i].bingfanghao);
			
			printf("床号:%s\n", patient[i].chuanghao);
			
			printf("备注:%s\n", patient[i].beizhu);
			printf("^^……………………………………………………………………^^\n");
			printf("\n\n……………………按任意键返回主菜单……………………\n");
			mark++;//作为一个标记,如果匹配到要查找的患者name,那么mark就不为0
			getch();
		}
	}
	if (mark == 0)//如果mark为0,说明没有匹配到要查找的name
	{
		printf("………………没有找到该患者信息………………\n");
		printf("………………按任意键返回主菜单………………\n");
		getchar();//getch();
		return;//返回主菜单
	}
	
}
void liulan(void)//数据浏览
{
	int i = 0;
	if (n != 0)
	{
		printf(">>>>>>您已经选择浏览数据>>>>>\n");
		printf(">>>>>>正在为您查询数据》》》》\n");
		printf("……………………请稍等…………………\n");
		printf(">>>>>>查询成功>>>>>>>>>\n");
		for (i = 0; i < n; i++)//依次输出患者信息
		{
			printf("^^………………以下是您要查找的患者【%d】的信息………………^^\n",i+1);
			printf("患者姓名: %s\n", patient[i].huanzhe_name);

			printf("患者性别:%s\n", patient[i].huanzhe_sex);

			printf("入院时间: %s\n", patient[i].ruyuyanshijian);

			printf("所属科室:%s\n", patient[i].suoshukeshi);

			printf("基本状况:%s\n", patient[i].jibenzhuangkuang);

			printf("主治医生:%s\n", patient[i].zhuzhiyisheng);

			printf("病房号:%s\n", patient[i].bingfanghao);

			printf("床号:%s\n", patient[i].chuanghao);

			printf("备注:%s\n", patient[i].beizhu);
			printf("^^……………………………………………………………………^^\n");
		}
	}
	else //无患者信息
	{
		printf("………………》》系统中无任何数据《《………………\n");
		printf("按任意键返回主菜单\n");
		getchar();
		return;	//返回主菜单
	}
}

完整代码:

#define  _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>
//定义函数
void caidan(void);//打印菜单
void shuru(void);//数据输入
void shuchu(void);//数据输出
void liulan(void);//数据浏览
//定义结构体
struct huanzhexinxi
{
	char huanzhe_name[20];
	char huanzhe_sex[10];
	char ruyuyanshijian[30];
	char suoshukeshi[30];
	char jibenzhuangkuang[30];
	char zhuzhiyisheng[20];
	char bingfanghao[10];
	char chuanghao[10];
	char beizhu[100];
};
struct huanzhexinxi patient[100];//定义结构体数组,作为患者信息的存储目录

//定义全局变量n,以便记录录入患者总数
int n = 0;


int main()
{
	printf("》》》》》》》欢迎进入**医院住院部患者信息管理系统》》》》》》》》》》》》》》\n\n\n");
	printf("……………………………………按任意键继续……………………………………………\n\n\n");
	getchar(); 
	caidan();//打印菜单
	while (1)
	{
		int i = 0;
		printf("请选择:》》》:");
		scanf("%d", &i);
	
		switch (i)//选择模式
		{
		case 0: exit(0); break;
		case 1:     shuru();    break;//数据输入
		case 2:     shuchu();   break;//数据输出
		case 3:     liulan();   break;//数据浏览
		default:printf("》》》》》》》选择有误,请重新选择》》》》》》\n"); getchar();  break;
		}
	}
	return 0;
}

void caidan(void)//打印菜单函数
{
	printf("|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>|\n");
	printf("|___________________________________________________________________________|\n");
	printf("|                               1. 患者数据输入                             |\n");
	printf("|___________________________________________________________________________|\n");
	printf("|                               2. 患者数据查询                             |\n");
	printf("|___________________________________________________________________________|\n");
	printf("|                               3. 患者数据浏览                             |\n");
	printf("|___________________________________________________________________________|\n");
	printf("|                               0. 退出                                     |\n");
	printf("|___________________________________________________________________________|\n");
	printf("|                         》》》》 请选择》》》》                           |\n");
	printf("|___________________________________________________________________________|\n");
	printf("|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>|\n");
}
void shuru(void)//数据输入
{
	
	printf("……………………请输入患者信息……………………\n");//对结构体数组的初始化
	printf("请输入患者姓名:");
	scanf("%s", patient[n].huanzhe_name);
	printf("请输入患者性别:");
	scanf("%s", patient[n].huanzhe_sex);
	printf("请输入入院时间:<格式:year.months.day>: ");
	scanf("%s", patient[n].ruyuyanshijian);
	printf("所属科室:");
	scanf("%s", patient[n].suoshukeshi);
	printf("基本状况:");
	scanf("%s", patient[n].jibenzhuangkuang);
	printf("主治医生:");
	scanf("%s", patient[n].zhuzhiyisheng);
	printf("病房号:");
	scanf("%s", patient[n].bingfanghao);
	printf("床号:");
	scanf("%s", patient[n].chuanghao);
	printf("备注:");
	scanf("%s", patient[n].beizhu);

	n++;//没输入一个患者的信息,n就增加 1 

	printf("……………………患者信息录入完成……………………\n");
	printf("是否继续添加患者信息 ? ( Y / N )\n");
	if (getch() == 'Y')//输入Y,继续执行if语句,继续调用shuru()函数,否则返回主菜单
		shuru();
	
}


void shuchu(void)//数据输出
{
	int mark = 0;
	int i = 0;
	char name[20];
	printf("》》》》…………按姓名查找…………》》》》》\n");
	printf("请输入您要查找的患者姓名:");
	scanf("%s", name);
	for (i = 0; i < n; i++)
	{
		if (strcmp(patient[i].huanzhe_name, name) == 0)//将输入name与系统中患者名字一一进行比对,相同返回值为 0
		{
			printf("^^………………以下是您要查找的患者信息………………^^\n");
			printf("患者姓名: %s\n",patient[i].huanzhe_name);

			printf("患者性别:%s\n", patient[i].huanzhe_sex);
			
			printf("入院时间: %s\n", patient[i].ruyuyanshijian);
			
			printf("所属科室:%s\n", patient[i].suoshukeshi);
			
			printf("基本状况:%s\n", patient[i].jibenzhuangkuang);
			
			printf("主治医生:%s\n", patient[i].zhuzhiyisheng);
			
			printf("病房号:%s\n", patient[i].bingfanghao);
			
			printf("床号:%s\n", patient[i].chuanghao);
			
			printf("备注:%s\n", patient[i].beizhu);
			printf("^^……………………………………………………………………^^\n");
			printf("\n\n……………………按任意键返回主菜单……………………\n");
			mark++;//作为一个标记,如果匹配到要查找的患者name,那么mark就不为0
			getch();
		}
	}
	if (mark == 0)//如果mark为0,说明没有匹配到要查找的name
	{
		printf("………………没有找到该患者信息………………\n");
		printf("………………按任意键返回主菜单………………\n");
		getchar();//getch();
		return;//返回主菜单
	}
	
}
void liulan(void)//数据浏览
{
	int i = 0;
	if (n != 0)
	{
		printf(">>>>>>您已经选择浏览数据>>>>>\n");
		printf(">>>>>>正在为您查询数据》》》》\n");
		printf("……………………请稍等…………………\n");
		printf(">>>>>>查询成功>>>>>>>>>\n");
		for (i = 0; i < n; i++)//依次输出患者信息
		{
			printf("^^………………以下是您要查找的患者【%d】的信息………………^^\n",i+1);
			printf("患者姓名: %s\n", patient[i].huanzhe_name);

			printf("患者性别:%s\n", patient[i].huanzhe_sex);

			printf("入院时间: %s\n", patient[i].ruyuyanshijian);

			printf("所属科室:%s\n", patient[i].suoshukeshi);

			printf("基本状况:%s\n", patient[i].jibenzhuangkuang);

			printf("主治医生:%s\n", patient[i].zhuzhiyisheng);

			printf("病房号:%s\n", patient[i].bingfanghao);

			printf("床号:%s\n", patient[i].chuanghao);

			printf("备注:%s\n", patient[i].beizhu);
			printf("^^……………………………………………………………………^^\n");
		}
	}
	else //无患者信息
	{
		printf("………………》》系统中无任何数据《《………………\n");
		printf("按任意键返回主菜单\n");
		getchar();
		return;	//返回主菜单
	}
}

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值