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