病人信息管理系统

#include<stdio.h>
#include<string.h>
//界面
void jiemian()
{
    printf("******************************************\n");
    printf("***      欢迎使用医疗管理系统          ***\n");
    printf("******************************************\n");
    printf("———请根据如下提示进行你需要的操作———\n");
    printf("添加患者信息请输入:1\n");
    printf("\n");
    printf("查询患者信息请输入:2\n");
    printf("\n");
    printf("查看所有患者信息请输入:3\n");
    printf("\n");
    printf("删除患者信息请输入:4\n");
    printf("\n");
    printf("修改患者信息请输入:5\n");
    printf("\n");
    printf("退出患者信息请输入:0\n");
    printf("\n");


}
//添加患者信息
typedef struct Patient
{
    //房间号
    int id;//病人序号
    char name[999];//病人名字
    int age;//病人岁数
    char sex[999];//病人性别
    char tele[12];//家人联系方式


}Patient;
 int  Input_Patient(Patient patient[100],int i)
{
    
    while (1)

    {
        printf("请输入%d号病人的信息\n", i);
        printf("请输入病人名字:》》》");
        scanf_s("%s", patient[i-1].name);//这里注意要放进结构体数组中要用i-1
        printf("请输入病人年龄:》》》");
        while (1)
        {
            scanf_s("%d", &patient[i-1].age);
            if (patient[i-1].age > 0 && patient[i-1].age <= 120)
            {
                break;
            }
            else
            {
                printf("数据不合理请重新输入病人年龄》》》");
            }
                
        }
        printf("请输入病人性别:》》》");
        scanf_s("%s", &(patient[i-1].sex));
        printf("请输入病人家属联系方式》》》");
        scanf_s("%s", &(patient[i - 1].tele));
        printf("储存完毕。");
        
        printf("请选择:\n");
        printf("1.继续输入病人信息\n");
        printf("0.退出\n");
        int p = 1;
        scanf_s("%d", &p);
    /*    if (p == 1)
        {
            continue;
        }
        else
            return i;*/
        if (p==1)
        {
            i++;
        }
        else
        {
            return i;//已经输入的患者的个数
        }


    }
}

 //搜查患者信息
 void Se_patient(Patient patient[100], int count)
 {
     printf("请输入要搜查患者的名字》》》");
     char name1[50];
     scanf_s("%s", name1);
     int p = 0;//标记患者不存在
     int i;
     for (i = 0; i < count; i++)
     {
         if (strcmp(name1, patient[i].name) == 0)
         {
             p = 1;
             break;
         }
         else
         {
             continue;
         }

     }
     if (p == 0)
     {
         printf("该患者不存在");
         return;
     }
     else
     {
         printf("该患者为第%d号患者 ", i + 1);
         printf("姓名:%s|年龄:%d|性别:%s|家属联系方式:%s\n", patient[i].name, patient[i].age, patient[i].sex,patient[i].tele);
         printf("__________________________\n");
         printf("请输入任意数字退出界面");
         int q;
         scanf_s("%d", &q);
         return;
     }
 }

//打印患者信息
void Print_patient(Patient patient[100], int count)
{
    
    for (int c = 0; c < count; c++)
    {
        if (patient[c].age != 0)
        {
            printf("%d号患者的信息为\n", c + 1);
            printf("姓名:%s|年龄:%d|性别:%s|家属联系方式:%s\n", patient[c].name, patient[c].age, patient[c].sex, patient[c].tele);
            printf("___________________________________________________\n");
        }
    }
    int p = 0;

    
}
//查看所有患者信息
void Check_patient(Patient patient[100], int count)//count是存入的患者个数,作为下标应该-1
{
    int i = 0;
    int c = 0;
    if (patient[c].age == 0)
    {
        printf("当前无患者信息\n");
        printf("请输入任意数字退出界面》》》");
        scanf_s("%d", &i);
        return;
    }
    else
    {
        Print_patient(patient, count);
        printf("请输入任意数字退出界面》》》");
        scanf_s("%d", &i);
        return;
    }

}
//删除患者信息
//分支
void De_patient1(Patient patient[100], int g,int total)//这里的g是对应的数组下标,total是总下标数
{
    for (int i = g; i <= total; i++)
    {
        patient[i] = patient[i + 1];
    }
}
//主体
void De_patient(Patient patient[100], int count)
{
    int i;
    printf("以下是在院患者的信息\n ");
    int c = 0;
    if (patient[c].age == 0)
    {
        int j;
        printf("当前无患者信息\n");
        printf("请输入任意数字退出界面》》》");
        scanf_s("%d", &j);
        return;
    }
    else
    {
        Print_patient(patient, count);//第count个患者对应的下标是count-1
        printf("请输入要删除的患者的序号》》》");
        while (1)
        {
            scanf_s("%d", &i);//要删除的是数组下标为i-1的数据并且而将下标为i到count-1的数组的位置往前提一个
            if (i > 0 && i <= count)
            {
                De_patient1(patient, i - 1, count - 1);
                printf("已删除成功\n");
                break;
            }
            else
            {
                printf("当前序号无病人信息请重新输入》》》");
            }
        }
    }
}


//修改病人信息
void Amend_patient(Patient patient[100],int n)
{
    ////int i;
    //int p;
    //printf("以下是在院患者的信息\n ");
    //Print_patient(patient, n);
    //printf("\n");
    //printf("请输入要修改信息的病人的序号》》》");
    //scanf_s("%d", &i);
    //printf("第%d个患者的信息为:\n", i);
    //printf("姓名:%s\n",patient[i-1].name);
    //printf("性别:%s\n",patient[i-1].sex);
    //printf("年龄:%d\n", patient[i - 1].age);        
    while (1)
    {
    
        int i;
        int p;
        printf("以下是在院患者的信息\n ");
        int c = 0;
        if (patient[c].age == 0)
        {
            printf("当前无患者信息\n");
            printf("请输入任意数字退出界面》》》");
            scanf_s("%d", &i);
            return;
        }
        else
        {
            Print_patient(patient, n);
            printf("\n");
            printf("请输入要修改信息的病人的序号》》》");
            scanf_s("%d", &i);
            printf("第%d个患者的信息为:\n", i);
            printf("姓名:%s\n", patient[i - 1].name);
            printf("性别:%s\n", patient[i - 1].sex);
            printf("年龄:%d\n", patient[i - 1].age);
            printf("家属联系电话:%s\n", patient[i - 1].tele);
            printf("请输入你要修改的数据|1.姓名|2.性别|3.年龄|4.家属联系电话|》》》");
            scanf_s("%d", &p);
            switch (p)
            {
            case 1:
            {
                printf("请输入修改后患者姓名:");
                scanf_s("%s", &(patient[i - 1].name));
                break;
            }
            case 2:
            {
                printf("请输入修改后患者性别:");
                scanf_s("%s", &(patient[i - 1].sex));
                break;
            }
            case 3:
            {
                printf("请输入修改后患者年龄:");
                scanf_s("%d", &(patient[i - 1].age));

                break;
            }
            case 4:
            {
                printf("请输入修改后患者家属联系电话:");
                scanf_s("%s", &(patient[i - 1].tele));
            }
            }
            printf("修改成功\n");
            int q = 0;
            printf("是否继续修改(1.退出|0.继续修改)");
            scanf_s("%d", &q);
            if (q)
            {
                break;
            }
        }
    }
}

int main()
{
    Patient patient[100];
    
    int count = 0;
    int n = 0;
    while (1)
    {
        int p;
        jiemian();
        printf("请选择>>>");
        scanf_s("%d", &p);
        switch (p)
        {
        case 1:
            //这里count代表患者的个数
            n = Input_Patient(patient, ++count);//n返回的是登记的患者的个数,当作下标时应用n-1            
            break;
        case 2:
            Se_patient(patient,n);
        case 3:
            Check_patient(patient, n);
            break;
        case 4:
            De_patient(patient, n);
            break;
        case 5:
            Amend_patient(patient,n);
            break;
        case 0:
            break;
        default:
            printf("重新输入》》》\n");            
        }    
    }    
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值