連結串列實現功能強大的通訊錄
阿新 • • 發佈:2019-01-25
/*****************************************************
copyright (C), Nanjing University of ZiJin
File name:txl.c
Author: CaoMengDe Version:0.1 Date: 2016-12-13 17:29
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define OK 1
#define ERROR 0
typedef int ElementType;
typedef int Status;
typedef struct node
{
char name[20];
ElementType age;
char sex[10];
char phonenumber[20];
struct node *next;
}Node;
Status Menu(Node* head);
Status Menuupdate(Node* head);
Status Menudelete(Node* head);
Status Menuquery(Node* head);
int Length(Node* head);
Status init(Node** head);
Status inserttail(Node* head);
Status deleteindex(Node* head);
Status deletename(Node* head);
Status deletephonenumber(Node* head);
Status updateindex(Node* head);
Status updatename(Node* head);
Status updatephone(Node* head);
void queryindex(Node* head);
void queryname(Node* head);
void queryphonenumber(Node* head);
void print(Node* head);
void sort(Node* head);
int main(int argc, char **argv)
{
int ret;
char flag;
Node* head;
ret = init(&head);
if(ERROR == ret)
{
return -1;
}
Menu(head);
sort(head);
print(head);
return 0;
}
//主選單
Status Menu(Node* head)
{
int number;
printf("歡迎來到Coder通訊錄!\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("q:退出選單\n");
printf("\n");
printf("請輸入指令\n");
while(scanf("%d", &number) == 1)
{
switch(number)
{
case 1:
{
inserttail(head);
break;
}
case 2:
{
Menudelete(head);
break;
}
case 3:
{
Menuupdate(head);
break;
}
case 4:
{
Menuquery(head);
break;
}
case 5:
{
printf("1:新增聯絡人\n");
printf("\n");
printf("2:刪除聯絡人\n");
printf("\n");
printf("3:修改聯絡人資訊\n");
printf("\n");
printf("4:查詢通訊錄資訊\n");
printf("\n");
printf("q:退出選單\n");
printf("\n");
printf("請輸入數字\n");
break;
}
default: printf("請重新輸入正確的操作指令\n");
}
}
return OK;
}
//修改方式選單
Status Menuupdate(Node* head)
{
int ret;
int number;
printf("1.根據編號進行修改\n");
printf("\n");
printf("2.根據姓名進行修改\n");
printf("\n");
printf("3.根據手機號碼進行修改\n");
printf("\n");
printf("請輸入你想選擇的功能號碼\n");
scanf("%d", &number);
switch(number)
{
case 1:
{
updateindex(head);
break;
}
case 2:
{
updatename(head);
break;
}
case 3:
{
updatephone(head);
break;
}
}
return OK;
}
//刪除子選單
Status Menudelete(Node* head)
{
int ret;
int number;
printf("1.根據編號進行刪除\n");
printf("\n");
printf("2.根據姓名進行刪除\n");
printf("\n");
printf("3.根據手機號碼進行刪除\n");
printf("\n");
printf("請輸入你想選擇的功能號碼\n");
scanf("%d", &number);
switch(number)
{
case 1:
{
deleteindex(head);
break;
}
case 2:
{
deletename(head);
break;
}
case 3:
{
deletephonenumber(head);
break;
}
}
return OK;
}
//查詢子選單
Status Menuquery(Node* head)
{
int number;
printf("1.根據編號進行查詢\n");
printf("\n");
printf("2.根據姓名進行查詢\n");
printf("\n");
printf("3.根據手機號碼進行查詢\n");
printf("\n");
printf("請輸入你想選擇的功能號碼\n");
scanf("%d", &number);
switch(number)
{
case 1:
{
queryindex(head);
break;
}
case 2:
{
queryname(head);
break;
}
case 3:
{
queryphonenumber(head);
break;
}
}
return OK;
}
//初始化
Status init(Node** head)
{
Node* new = (Node*)malloc(sizeof(Node));
if(NULL == new)
{
return ERROR;
}
*head = new;
(*head)->next = NULL;
return OK;
}
//尾插法
Status inserttail(Node* head)
{
while(head->next != NULL)
{
head = head->next;
}
Node* new = (Node*)malloc(sizeof(Node));
if(NULL == new)
{
return ERROR;
}
head->next = new;
new->next = NULL;
printf("請輸入新增成員姓名:\n");
scanf("%s", new->name);
printf("請輸入成員性別:\n");
scanf("%s", new->sex);
printf("請輸入成員年齡:\n");
scanf("%d", &new->age);
printf("請輸入成員手機號碼:\n");
scanf("%s", new->phonenumber);
printf("新增成功!\n");
return OK;
}
//按照編號刪除
Status deleteindex(Node* head)
{
int i, index;
printf("請輸入刪除第幾個\n");
scanf("%d", &index);
if(index < 1||index > Length(head))
{
printf("選擇範圍錯誤,重新輸入\n");
return ERROR;
}
for(i = 0; i < index - 1; i++)
{
head = head->next;
}
Node* temp = head->next;
head->next = head->next->next;
free(temp);
temp = NULL;
printf("刪除成功!\n");
return OK;
}
//按照姓名刪除
Status deletename(Node* head)
{
char temp[20];
int count = 0;
printf("請輸入想刪除的姓名\n");
scanf("%s", &temp);
while(head->next != NULL)
{
if(strcmp(head->next->name, temp) == 0)
{
Node* temp = head->next;
head->next = head->next->next;
free(temp);
temp = NULL;
count++;
}
head = head->next;
}
if(count == 0)
{
printf("沒有該成員資訊\n");
return ERROR;
}
memset(temp, 0, 20);
printf("刪除成功!\n");
return OK;
}
//按照手機號碼刪除
Status deletephonenumber(Node* head)
{
char temp[20];
int count = 0;
printf("請輸入想刪除的電話號碼\n");
scanf("%s", &temp);
while(head->next != NULL)
{
if(strcmp(head->next->phonenumber, temp) == 0)
{
Node* temp = head->next;
head->next = head->next->next;
free(temp);
temp = NULL;
count++;
}
head = head->next;
}
if(count == 0)
{
printf("沒有該成員資訊\n");
return ERROR;
}
memset(temp, 0, 20);
printf("刪除成功!\n");
return OK;
}
//根據編號修改對應資訊
Status updateindex(Node* head)
{
int i, index, shuzi;
printf("請輸入想修改資訊的編號\n");
scanf("%d", &index);
if(index < 1||index > Length(head))
{
printf("選擇範圍錯誤,重新輸入\n");
return ERROR;
}
for(i = 0; i < index; i++)
{
head = head->next;
}
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("請輸入數字\n");
scanf("%d\n", &shuzi);
switch(shuzi)
{
case 1:
{
scanf("%s", head->name);
printf("修改成功!\n");
break;
}
case 2:
{
scanf("%s", head->sex);
printf("修改成功!\n");
break;
}
case 3:
{
scanf("%d", &head->age);
printf("修改成功!\n");
break;
}
case 4:
{
scanf("%s", head->phonenumber);
printf("修改成功!\n");
break;
}
case 5:
{
getchar();
printf("請輸入新成員姓名:\n");
scanf("%s", head->name);
printf("請輸入新成員性別:\n");
scanf("%s", head->sex);
printf("請輸入新成員年齡:\n");
scanf("%d", &head->age);
printf("請輸入新成員手機號碼:\n");
scanf("%s", head->phonenumber);
printf("修改成功!\n");
break;
}
default :printf("請重新輸入\n");
}
return OK;
}
//根據姓名修改對應資訊
Status updatename(Node* head)
{
char temp[20];
int shuzi, count = 0;
printf("請輸入想修改資訊的姓名\n");
scanf("%s", &temp);
while(head->next != NULL)
{
head = head->next;
if(strcmp(head->name, temp) == 0)
{
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("請輸入數字\n");
scanf("%d\n", &shuzi);
switch(shuzi)
{
case 1:
{
scanf("%s", head->name);
printf("修改成功!\n");
break;
}
case 2:
{
scanf("%s", head->sex);
printf("修改成功!\n");
break;
}
case 3:
{
scanf("%d", &head->age);
printf("修改成功!\n");
break;
}
case 4:
{
scanf("%s", head->phonenumber);
printf("修改成功!\n");
break;
}
case 5:
{
getchar();
printf("請輸入新成員姓名:\n");
scanf("%s", head->name);
printf("請輸入新成員性別:\n");
scanf("%s", head->sex);
printf("請輸入新成員年齡:\n");
scanf("%d", &head->age);
printf("請輸入新成員手機號碼:\n");
scanf("%s", head->phonenumber);
printf("修改成功!\n");
break;
}
default :printf("請重新輸入\n");
}
count++;
}
}
if(count == 0)
{
printf("沒有該成員資訊\n");
return ERROR;
}
memset(temp, 0, 20);
return OK;
}
//根據手機號碼修改對應資訊
Status updatephone(Node* head)
{
char number[20];
int shuzi, count = 0;
printf("請輸入想修改資訊的手機號碼\n");
scanf("%s", &number);
while(head->next != NULL)
{
head = head->next;
if(strcmp(head->phonenumber, number) == 0)
{
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("請輸入數字\n");
scanf("%d\n", &shuzi);
switch(shuzi)
{
case 1:
{
scanf("%s", head->name);
printf("修改成功!\n");
break;
}
case 2:
{
scanf("%s", head->sex);
printf("修改成功!\n");
break;
}
case 3:
{
scanf("%d", &head->age);
printf("修改成功!\n");
break;
}
case 4:
{
scanf("%s", head->phonenumber);
printf("修改成功!\n");
break;
}
case 5:
{
getchar();
printf("請輸入新成員姓名:\n");
scanf("%s", head->name);
printf("請輸入新成員性別:\n");
scanf("%s", head->sex);
printf("請輸入新成員年齡:\n");
scanf("%d", &head->age);
printf("請輸入新成員手機號碼:\n");
scanf("%s", head->phonenumber);
printf("修改成功!\n");
}
default :printf("請重新輸入\n");
}
count++;
}
}
if(count == 0)
{
printf("沒有該成員資訊\n");
return ERROR;
}
memset(number, 0, 20);
return OK;
}
//按編號查詢
void queryindex(Node* head)
{
int i, index;
printf("請輸入想查詢資訊的編號:\n");
scanf("%d", &index);
if(index < 1||index > Length(head))
{
printf("選擇範圍錯誤,重新輸入\n");
}
for(i = 0; i < index - 1; i++)
{
head = head->next;
}
printf("查詢資訊:\n");
printf("姓名:%s\t", head->next->name);
printf("性別:%s\t", head->next->sex);
printf("年齡:%d\t", head->next->age);
printf("手機號碼:%s\n", head->next->phonenumber);
printf("--------------------------------------");
}
//按姓名查詢
void queryname(Node* head)
{
char temp[20];
int count = 0;
printf("請輸入想查詢資訊的姓名\n");
scanf("%s", &temp);
while(head->next != NULL)
{
if(strcmp(head->next->name, temp) == 0)
{
printf("查詢資訊:\n");
printf("姓名:%s\t", head->next->name);
printf("性別:%s\t", head->next->sex);
printf("年齡:%d\t", head->next->age);
printf("手機號碼:%s\n", head->next->phonenumber);
printf("--------------------------------------\n");
count++;
}
head = head->next;
}
if(count == 0)
{
printf("沒有該成員資訊\n");
}
memset(temp, 0, 20);
}
//按照手機號碼查詢
void queryphonenumber(Node* head)
{
char temp[20];
int count = 0;
printf("請輸入想查詢資訊的手機號碼\n");
scanf("%s", &temp);
while(head->next != NULL)
{
if(strcmp(head->next->phonenumber, temp) == 0)
{
printf("查詢資訊:\n");
printf("姓名:%s\t", head->next->name);
printf("性別:%s\t", head->next->sex);
printf("年齡:%d\t", head->next->age);
printf("手機號碼:%s\n", head->next->phonenumber);
printf("--------------------------------------\n");
count++;
}
head = head->next;
}
if(count == 0)
{
printf("沒有該成員資訊\n");
}
memset(temp, 0, 20);
}
//根據姓名排序
void sort(Node* head)
{
int i,j;
char n[20];
char t[20];
char s[10];
for( i = 0; i < Length(head) - 1; i++)
{
Node* temp = head;
for(j = 0; j < Length(head) - 1 - i;j++)
{
if(strcmp(temp->next->name , temp->next->next->name) > 0 )
{
strcpy(n, temp->next->name);
strcpy(temp->next->name, temp->next->next->name);
strcpy(temp->next->next->name, n);
strcpy(t, temp->next->phonenumber);
strcpy(temp->next->phonenumber, temp->next->next->phonenumber);
strcpy(temp->next->next->phonenumber, t);
strcpy(s, temp->next->sex);
strcpy(temp->next->sex, temp->next->next->sex);
strcpy(temp->next->next->sex, s);
int t = temp->next->age;
temp->next->age = temp->next->next->age;
temp->next->next->age = t;
}
temp = temp->next;
}
}
}
void print(Node* head)
{
while(head->next != NULL)
{
printf("姓名:%s\t", head->next->name);
printf("性別:%s\t", head->next->sex);
printf("年齡:%d\t", head->next->age);
printf("手機號碼:%s\n", head->next->phonenumber);
head = head->next;
}
}
int Length(Node* head)
{
int count = 0;
while(head->next != NULL)
{
count++;
head = head->next;
}
return count;
}
copyright (C), Nanjing University of ZiJin
File name:txl.c
Author: CaoMengDe Version:0.1 Date: 2016-12-13 17:29
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define OK 1
#define ERROR 0
typedef int ElementType;
typedef int Status;
typedef struct node
{
char name[20];
ElementType age;
char sex[10];
char phonenumber[20];
struct node *next;
}Node;
Status Menu(Node* head);
Status Menuupdate(Node* head);
Status Menudelete(Node* head);
Status Menuquery(Node* head);
int Length(Node* head);
Status init(Node** head);
Status inserttail(Node* head);
Status deleteindex(Node* head);
Status deletename(Node* head);
Status deletephonenumber(Node* head);
Status updateindex(Node* head);
Status updatename(Node* head);
Status updatephone(Node* head);
void queryindex(Node* head);
void queryname(Node* head);
void queryphonenumber(Node* head);
void print(Node* head);
void sort(Node* head);
int main(int argc, char **argv)
{
int ret;
char flag;
Node* head;
ret = init(&head);
if(ERROR == ret)
{
return -1;
}
Menu(head);
sort(head);
print(head);
return 0;
}
//主選單
Status Menu(Node* head)
{
int number;
printf("歡迎來到Coder通訊錄!\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("q:退出選單\n");
printf("\n");
printf("請輸入指令\n");
while(scanf("%d", &number) == 1)
{
switch(number)
{
case 1:
{
inserttail(head);
break;
}
case 2:
{
Menudelete(head);
break;
}
case 3:
{
Menuupdate(head);
break;
}
case 4:
{
Menuquery(head);
break;
}
case 5:
{
printf("1:新增聯絡人\n");
printf("\n");
printf("2:刪除聯絡人\n");
printf("\n");
printf("3:修改聯絡人資訊\n");
printf("\n");
printf("4:查詢通訊錄資訊\n");
printf("\n");
printf("q:退出選單\n");
printf("\n");
printf("請輸入數字\n");
break;
}
default: printf("請重新輸入正確的操作指令\n");
}
}
return OK;
}
//修改方式選單
Status Menuupdate(Node* head)
{
int ret;
int number;
printf("1.根據編號進行修改\n");
printf("\n");
printf("2.根據姓名進行修改\n");
printf("\n");
printf("3.根據手機號碼進行修改\n");
printf("\n");
printf("請輸入你想選擇的功能號碼\n");
scanf("%d", &number);
switch(number)
{
case 1:
{
updateindex(head);
break;
}
case 2:
{
updatename(head);
break;
}
case 3:
{
updatephone(head);
break;
}
}
return OK;
}
//刪除子選單
Status Menudelete(Node* head)
{
int ret;
int number;
printf("1.根據編號進行刪除\n");
printf("\n");
printf("2.根據姓名進行刪除\n");
printf("\n");
printf("3.根據手機號碼進行刪除\n");
printf("\n");
printf("請輸入你想選擇的功能號碼\n");
scanf("%d", &number);
switch(number)
{
case 1:
{
deleteindex(head);
break;
}
case 2:
{
deletename(head);
break;
}
case 3:
{
deletephonenumber(head);
break;
}
}
return OK;
}
//查詢子選單
Status Menuquery(Node* head)
{
int number;
printf("1.根據編號進行查詢\n");
printf("\n");
printf("2.根據姓名進行查詢\n");
printf("\n");
printf("3.根據手機號碼進行查詢\n");
printf("\n");
printf("請輸入你想選擇的功能號碼\n");
scanf("%d", &number);
switch(number)
{
case 1:
{
queryindex(head);
break;
}
case 2:
{
queryname(head);
break;
}
case 3:
{
queryphonenumber(head);
break;
}
}
return OK;
}
//初始化
Status init(Node** head)
{
Node* new = (Node*)malloc(sizeof(Node));
if(NULL == new)
{
return ERROR;
}
*head = new;
(*head)->next = NULL;
return OK;
}
//尾插法
Status inserttail(Node* head)
{
while(head->next != NULL)
{
head = head->next;
}
Node* new = (Node*)malloc(sizeof(Node));
if(NULL == new)
{
return ERROR;
}
head->next = new;
new->next = NULL;
printf("請輸入新增成員姓名:\n");
scanf("%s", new->name);
printf("請輸入成員性別:\n");
scanf("%s", new->sex);
printf("請輸入成員年齡:\n");
scanf("%d", &new->age);
printf("請輸入成員手機號碼:\n");
scanf("%s", new->phonenumber);
printf("新增成功!\n");
return OK;
}
//按照編號刪除
Status deleteindex(Node* head)
{
int i, index;
printf("請輸入刪除第幾個\n");
scanf("%d", &index);
if(index < 1||index > Length(head))
{
printf("選擇範圍錯誤,重新輸入\n");
return ERROR;
}
for(i = 0; i < index - 1; i++)
{
head = head->next;
}
Node* temp = head->next;
head->next = head->next->next;
free(temp);
temp = NULL;
printf("刪除成功!\n");
return OK;
}
//按照姓名刪除
Status deletename(Node* head)
{
char temp[20];
int count = 0;
printf("請輸入想刪除的姓名\n");
scanf("%s", &temp);
while(head->next != NULL)
{
if(strcmp(head->next->name, temp) == 0)
{
Node* temp = head->next;
head->next = head->next->next;
free(temp);
temp = NULL;
count++;
}
head = head->next;
}
if(count == 0)
{
printf("沒有該成員資訊\n");
return ERROR;
}
memset(temp, 0, 20);
printf("刪除成功!\n");
return OK;
}
//按照手機號碼刪除
Status deletephonenumber(Node* head)
{
char temp[20];
int count = 0;
printf("請輸入想刪除的電話號碼\n");
scanf("%s", &temp);
while(head->next != NULL)
{
if(strcmp(head->next->phonenumber, temp) == 0)
{
Node* temp = head->next;
head->next = head->next->next;
free(temp);
temp = NULL;
count++;
}
head = head->next;
}
if(count == 0)
{
printf("沒有該成員資訊\n");
return ERROR;
}
memset(temp, 0, 20);
printf("刪除成功!\n");
return OK;
}
//根據編號修改對應資訊
Status updateindex(Node* head)
{
int i, index, shuzi;
printf("請輸入想修改資訊的編號\n");
scanf("%d", &index);
if(index < 1||index > Length(head))
{
printf("選擇範圍錯誤,重新輸入\n");
return ERROR;
}
for(i = 0; i < index; i++)
{
head = head->next;
}
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("請輸入數字\n");
scanf("%d\n", &shuzi);
switch(shuzi)
{
case 1:
{
scanf("%s", head->name);
printf("修改成功!\n");
break;
}
case 2:
{
scanf("%s", head->sex);
printf("修改成功!\n");
break;
}
case 3:
{
scanf("%d", &head->age);
printf("修改成功!\n");
break;
}
case 4:
{
scanf("%s", head->phonenumber);
printf("修改成功!\n");
break;
}
case 5:
{
getchar();
printf("請輸入新成員姓名:\n");
scanf("%s", head->name);
printf("請輸入新成員性別:\n");
scanf("%s", head->sex);
printf("請輸入新成員年齡:\n");
scanf("%d", &head->age);
printf("請輸入新成員手機號碼:\n");
scanf("%s", head->phonenumber);
printf("修改成功!\n");
break;
}
default :printf("請重新輸入\n");
}
return OK;
}
//根據姓名修改對應資訊
Status updatename(Node* head)
{
char temp[20];
int shuzi, count = 0;
printf("請輸入想修改資訊的姓名\n");
scanf("%s", &temp);
while(head->next != NULL)
{
head = head->next;
if(strcmp(head->name, temp) == 0)
{
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("請輸入數字\n");
scanf("%d\n", &shuzi);
switch(shuzi)
{
case 1:
{
scanf("%s", head->name);
printf("修改成功!\n");
break;
}
case 2:
{
scanf("%s", head->sex);
printf("修改成功!\n");
break;
}
case 3:
{
scanf("%d", &head->age);
printf("修改成功!\n");
break;
}
case 4:
{
scanf("%s", head->phonenumber);
printf("修改成功!\n");
break;
}
case 5:
{
getchar();
printf("請輸入新成員姓名:\n");
scanf("%s", head->name);
printf("請輸入新成員性別:\n");
scanf("%s", head->sex);
printf("請輸入新成員年齡:\n");
scanf("%d", &head->age);
printf("請輸入新成員手機號碼:\n");
scanf("%s", head->phonenumber);
printf("修改成功!\n");
break;
}
default :printf("請重新輸入\n");
}
count++;
}
}
if(count == 0)
{
printf("沒有該成員資訊\n");
return ERROR;
}
memset(temp, 0, 20);
return OK;
}
//根據手機號碼修改對應資訊
Status updatephone(Node* head)
{
char number[20];
int shuzi, count = 0;
printf("請輸入想修改資訊的手機號碼\n");
scanf("%s", &number);
while(head->next != NULL)
{
head = head->next;
if(strcmp(head->phonenumber, number) == 0)
{
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("請輸入數字\n");
scanf("%d\n", &shuzi);
switch(shuzi)
{
case 1:
{
scanf("%s", head->name);
printf("修改成功!\n");
break;
}
case 2:
{
scanf("%s", head->sex);
printf("修改成功!\n");
break;
}
case 3:
{
scanf("%d", &head->age);
printf("修改成功!\n");
break;
}
case 4:
{
scanf("%s", head->phonenumber);
printf("修改成功!\n");
break;
}
case 5:
{
getchar();
printf("請輸入新成員姓名:\n");
scanf("%s", head->name);
printf("請輸入新成員性別:\n");
scanf("%s", head->sex);
printf("請輸入新成員年齡:\n");
scanf("%d", &head->age);
printf("請輸入新成員手機號碼:\n");
scanf("%s", head->phonenumber);
printf("修改成功!\n");
}
default :printf("請重新輸入\n");
}
count++;
}
}
if(count == 0)
{
printf("沒有該成員資訊\n");
return ERROR;
}
memset(number, 0, 20);
return OK;
}
//按編號查詢
void queryindex(Node* head)
{
int i, index;
printf("請輸入想查詢資訊的編號:\n");
scanf("%d", &index);
if(index < 1||index > Length(head))
{
printf("選擇範圍錯誤,重新輸入\n");
}
for(i = 0; i < index - 1; i++)
{
head = head->next;
}
printf("查詢資訊:\n");
printf("姓名:%s\t", head->next->name);
printf("性別:%s\t", head->next->sex);
printf("年齡:%d\t", head->next->age);
printf("手機號碼:%s\n", head->next->phonenumber);
printf("--------------------------------------");
}
//按姓名查詢
void queryname(Node* head)
{
char temp[20];
int count = 0;
printf("請輸入想查詢資訊的姓名\n");
scanf("%s", &temp);
while(head->next != NULL)
{
if(strcmp(head->next->name, temp) == 0)
{
printf("查詢資訊:\n");
printf("姓名:%s\t", head->next->name);
printf("性別:%s\t", head->next->sex);
printf("年齡:%d\t", head->next->age);
printf("手機號碼:%s\n", head->next->phonenumber);
printf("--------------------------------------\n");
count++;
}
head = head->next;
}
if(count == 0)
{
printf("沒有該成員資訊\n");
}
memset(temp, 0, 20);
}
//按照手機號碼查詢
void queryphonenumber(Node* head)
{
char temp[20];
int count = 0;
printf("請輸入想查詢資訊的手機號碼\n");
scanf("%s", &temp);
while(head->next != NULL)
{
if(strcmp(head->next->phonenumber, temp) == 0)
{
printf("查詢資訊:\n");
printf("姓名:%s\t", head->next->name);
printf("性別:%s\t", head->next->sex);
printf("年齡:%d\t", head->next->age);
printf("手機號碼:%s\n", head->next->phonenumber);
printf("--------------------------------------\n");
count++;
}
head = head->next;
}
if(count == 0)
{
printf("沒有該成員資訊\n");
}
memset(temp, 0, 20);
}
//根據姓名排序
void sort(Node* head)
{
int i,j;
char n[20];
char t[20];
char s[10];
for( i = 0; i < Length(head) - 1; i++)
{
Node* temp = head;
for(j = 0; j < Length(head) - 1 - i;j++)
{
if(strcmp(temp->next->name , temp->next->next->name) > 0 )
{
strcpy(n, temp->next->name);
strcpy(temp->next->name, temp->next->next->name);
strcpy(temp->next->next->name, n);
strcpy(t, temp->next->phonenumber);
strcpy(temp->next->phonenumber, temp->next->next->phonenumber);
strcpy(temp->next->next->phonenumber, t);
strcpy(s, temp->next->sex);
strcpy(temp->next->sex, temp->next->next->sex);
strcpy(temp->next->next->sex, s);
int t = temp->next->age;
temp->next->age = temp->next->next->age;
temp->next->next->age = t;
}
temp = temp->next;
}
}
}
void print(Node* head)
{
while(head->next != NULL)
{
printf("姓名:%s\t", head->next->name);
printf("性別:%s\t", head->next->sex);
printf("年齡:%d\t", head->next->age);
printf("手機號碼:%s\n", head->next->phonenumber);
head = head->next;
}
}
int Length(Node* head)
{
int count = 0;
while(head->next != NULL)
{
count++;
head = head->next;
}
return count;
}