/*题目:新型冠病毒登记表 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); } }