1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 typedef struct list{ 5 struct list *next; 6 char name[30];//用戶名稱 7 char addr[50];//地址 8 char num[8];//號碼 9 }user; 10 11 void insert(user *h); 12 void edit(user *h); 13 void del(user *h); 14 void S_byName(user *h); 15 void S_byNum(user *h); 16 void display(user *h); 17 18 int main() 19 { 20 int flag; 21 user *head=(user *)malloc(sizeof(user)); 22 head->next=NULL; 23 while(1) 24 { 25 printf("電話號碼目錄系統\n"); 26 printf(" 1、添加新電話用戶信息\n"); 27 printf(" 2、修改電話用戶信息\n"); 28 printf(" 3、刪除已有電話用戶信息\n"); 29 printf(" 4、根據用戶名查詢電話信息\n"); 30 printf(" 5、根據電話號碼查詢用戶信息\n"); 31 printf(" 6、顯示全部用戶信息\n"); 32 printf(" 7、退出\n"); 33 printf("請選擇:"); 34 scanf("%d",&flag); 35 if(flag==1) 36 insert(head); 37 else if(flag==2) 38 edit(head); 39 else if(flag==3) 40 del(head); 41 else if(flag==4) 42 S_byName(head); 43 else if(flag==5) 44 S_byNum(head); 45 else if(flag==6) 46 display(head); 47 else if(flag==7) 48 return 0; 49 else 50 printf("輸入有誤,請重新選擇!\n"); 51 } 52 } 53 void insert(user *h) 54 { 55 user *p=(user *)malloc(sizeof(user)); 56 p->next=h->next; 57 h->next=p; 58 printf("請輸入新增用戶名稱(最多30個字):"); 59 scanf("%s",p->name); 60 printf("請輸入新增用戶的家庭住址(最多50字):"); 61 scanf("%s",p->addr); 62 printf("請輸入新增用戶的電話號碼(8位數):"); 63 scanf("%s",p->num); 64 printf("新用戶記錄成功添加:%s %s %s\n\n",p->name,p->addr,p->num); 65 } 66 void edit(user *h) 67 { 68 char name[30]; 69 int flag=0; 70 user *lh=h->next; 71 printf("輸入要修改用戶的名稱:"); 72 scanf("%s",name); 73 while(lh) 74 { 75 if(strcmp(name,lh->name)==0) 76 { 77 flag=1; 78 printf("請輸入新的名稱(30字以內):"); 79 scanf("%s",lh->name); 80 printf("請輸入新的地址(50字以內):"); 81 scanf("%s",lh->addr); 82 printf("請輸入新的號碼(8位):"); 83 scanf("%s",lh->num); 84 printf("用戶記錄修改成功:%s %s %s\n\n",lh->name,lh->addr,lh->num); 85 break; 86 } 87 lh=lh->next; 88 } 89 if(!flag) 90 printf("不存在這樣的用戶\n\n"); 91 } 92 void S_byName(user *h) 93 { 94 char name[30]; 95 int flag=0; 96 user *lh=h->next; 97 printf("輸入要查找的用戶名稱:"); 98 scanf("%s",name); 99 while(lh) 100 { 101 if(strcmp(name,lh->name)==0) 102 { 103 flag=1; 104 printf("用戶信息為:%s %s %s\n\n",lh->name,lh->addr,lh->num); 105 break; 106 } 107 lh=lh->next; 108 } 109 if(!flag) 110 printf("用戶名不存在\n\n"); 111 } 112 void S_byNum(user *h) 113 { 114 char num[30]; 115 int flag=0; 116 user *lh=h->next; 117 printf("輸入要查找的電話號碼:"); 118 scanf("%s",num); 119 while(lh) 120 { 121 if(strcmp(num,lh->num)==0) 122 { 123 flag=1; 124 printf("用戶信息為:%s %s %s\n\n",lh->name,lh->addr,lh->num); 125 break; 126 } 127 lh=lh->next; 128 } 129 if(!flag) 130 printf("找不到匹配的號碼\n\n"); 131 } 132 void display(user *h) 133 { 134 user *lh=h->next; 135 int i=1; 136 while(lh) 137 { 138 printf("第%d條用戶信息:%s %s %s\n",i,lh->name,lh->addr,lh->num); 139 lh=lh->next; 140 i++; 141 } 142 printf("\n"); 143 } 144 void del(user *h) 145 { 146 char name[30]; 147 int flag=0; 148 user *lh=h; 149 printf("輸入要刪除的用戶名稱:"); 150 scanf("%s",name); 151 while(lh->next) 152 { 153 if(strcmp(name,lh->next->name)==0) 154 { 155 flag=1; 156 printf("刪除用戶成功:%s %s %s\n\n",lh->next->name,lh->next->addr,lh->next->num); 157 lh->next=lh->next->next; 158 break; 159 } 160 lh=lh->next; 161 } 162 if(!flag) 163 printf("用戶名不存在\n\n"); 164 }