新冠病毒登记表

/*题目:新型冠病毒登记表
    1,研究的对象是人
    2,人与人是一对一的可以用线性表来表示
    3,对象包括姓名,年龄,体温 
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 10
#define OVER -2
#define OK 1
#define ADD 10

typedef struct People{
    char ID[20];
    char name[10];
    float head;//体温 
}People;
typedef People ElemType;
typedef struct SqList{
    ElemType *elem;
    int length;
    int listsize;
}SqList;
//初始化
typedef int Status;
Status InitList(SqList &L)
{
    L.elem = (ElemType *)malloc(MAX * sizeof(ElemType));
    if(!L.elem)
    {
        printf("申请失败\n");
        exit(OVER);
    }
    L.length = 0;
    L.listsize = MAX;
    return OK;
 } 
 //添加
 Status ListInsert(SqList &L,int i,ElemType e)
 {
     if(i < 1 || i > L.length + 1)
     {
         printf("查无此人\n");
         exit(OVER);
    }
    if(L.length >= L.listsize)
    {
        ElemType *newbase = (ElemType *)realloc(L.elem,(L.listsize + ADD) * sizeof(ElemType));
        L.elem = newbase;
        L.listsize += ADD;
    }
    ElemType *q,*p;
    q = &L.elem[i - 1];
    for(p = &L.elem[L.length - 1];p >= q;p --)
    {
        *(p + 1) = *p;
    }
    *q = e;
    L.length ++;
    return OK;
  } 
 //查询
 Status GetElem(SqList L,int i,ElemType &e)
 {
     if(i < 1 || i > L.length)
     {
         printf("系统查无此人\n");
         exit(OVER);
     }
     e = L.elem[i - 1];
  } 
  //删除
  Status ListDelete(SqList &L,int i,ElemType &e)
  {
      if(i < 1 || i > L.length)
     {
         printf("系统查无此人\n");
         exit(OVER);
     }
     ElemType *q,*p;
     e = L.elem[i - 1];
     p = &L.elem[i - 1];
     for(q = p + 1;q <= &L.elem[L.length - 1];q ++)
     {
         *(q - 1) = *q;
     }
     L.length --;
     return OK;
      
   } 
   //登陆 
   int Yan(char User[],char Pass[],char USer[],char PAss[])
   {
       int count = 0;
       if(strcmp(USer,User) == 0 && strcmp(PAss,Pass) == 0)
       {
           count = 1;
    }
    return count;
   }
int main()
{
    SqList L;
    int i;
    int j;
    //int num;//人数 
    char User[20];
    char USer[20];//初始化 
    char PAss[20];//初始化 
    char Pass[20];
    int k ;//人数 
    int money = 100;
    int temp;//位置
    int choice;
    ElemType e;
    i = InitList(L);
    printf("**********<<<<新型冠病毒登记表>>>>**************\n");
    printf("友情提示:如果密码或用户名输入错误3次系统将自动退出\n");
    printf("该系统是一个付费系统,使用一个项目10元,如果是新用户我们会送100元\n");
    printf("余额:%d\n",money);
    printf("请注册:\n");
    printf("请输入用户名:");
    scanf("%s",USer);
    printf("请输入密码:");
    scanf("%s",PAss);
    printf("恭喜你,注册成功,开始登录吧\n");
    printf("请记住你的用户名和密码\n");
    system("cls");
    printf("**********<<<<新型冠病毒登记表>>>>**************\n");
    printf("友情提示:如果密码或用户名输入错误3次系统将自动退出\n");
    printf("该系统是一个付费系统,使用一个项目10元,如果是新用户我们会送100元\n");
    printf("余额:%d\n",money);
    for(j = 0;j < 3;j ++)
    {
        
        printf("请输入用户名:");
        scanf("%s",User);
        printf("请输入密码:");
        scanf("%s",Pass);
        if(Yan(User,Pass,USer,PAss) == 1)
        {
            printf("恭喜你登陆成功\n");
            
            
        
    
    if(i == 1)
    { 
    
    printf("线性表初始化成功\n");
    printf("由于本系统较小只能支持(1 - 9)个人请输入你要存放几个人的个人信息:");
    scanf("%d",&k);
    //printf("请输入5个人的基本信息\n");
    printf("年龄\t姓名\t体温\n");
    for(i = 1;i <= k;i ++)
    {
        scanf("%s %s %f",e.ID,e.name,&e.head);
        ListInsert(L,i,e);
    }
    while(money > 0)
    {
    
    printf("功能如下:\n");
    printf("1,查看登记表当前状态\n");
    printf("2,在登记表中执行插入操作\n");
    printf("3,在登记表中执行删除操作\n");
    printf("4,退出系统\n");
    printf("请输入你的选择:");
    scanf("%d",&choice);
    money -= 10;
    switch(choice)
    {
        case 1:
            printf("年龄\t姓名\t体温\n");
            for(i = 1;i <= k;i ++)
            {
                GetElem(L,i,e);
                 printf("%s\t%s\t%.1f\n",e.ID,e.name,e.head);
            }
              printf("余额:%d\n",money);
            break;
        case 2:
            printf("请输入你要插入的位置:");
            scanf("%d",&temp);
            printf("年龄\t姓名\t体温\n");
            scanf("%s %s %f",e.ID,e.name,&e.head);
            ListInsert(L,temp,e);
            k ++;
              printf("余额:%d\n",money);
            
            break;
        case 3:
            printf("请输入删除的位置:");
            scanf("%d",&temp);
            ListDelete(L,temp,e);
            printf("删除的数据:\n");
            printf("年龄\t姓名\t体温\n");
            printf("%s\t%s\t%.1f\n",e.ID,e.name,e.head);
            k --;
            printf("余额:%d\n",money);
            
            break;
        case 4:
              printf("余额:%d\n",money);
            exit(OVER);
            break;
            
    }
    }
    printf("请查看你的余额:%d\n",money);
    printf("项目\n");
    printf("1,充100元\n");
    printf("2,充200元\n");
    printf("3,没钱\n");
    printf("请输入你的选择:");
    scanf("%d",&choice);
    switch(choice)
    {
        case 1:
            money += 100;
            break;
        case 2:
            money += 200;
            break;
        case 3:
            exit(OVER);
            break;
    }
    /*
    printf("年龄\t姓名\t体温\n");
    for(i = 1;i <= 3;i ++)
    {
        GetElem(L,i,e);
        printf("%s %s %.1f\n",e.ID,e.name,e.head);
    }
    
    scanf("%d",&temp);
    ListDelete(L,temp,e);
    printf("年龄\t姓名\t体温\n");
    printf("%s %s %.1f\n",e.ID,e.name,e.head);*/
   
 }
 else
 {
     printf("申请空间失败\n");
     printf("请查看你的余额:%d\n",money);
     
 }
}
printf("你还有%d次机会\n",3 - j - 1);
}
if(j == 3)
{
    printf("输入错误三次,强制退出系统\n");
    exit(OVER);
}
    
}

 

上一篇:【第八周】编程——线性表


下一篇:C++ Set和Multiset