项目场景:
本系统能够方便、灵活地实现住院部患者基本数据的输入、查询和浏览功能。患者基本情况表至少应包含病人姓名、病人性别、入院时间、所属科室、病人基本状况、主治医生、病房号、病床号、备注等字段。
问题描述
通过编程实现患者信息的输入、存储、查找以及显示。
解决方案:
首先、定义菜单函数(用来打印菜单)
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; //返回主菜单
}
}