/*****************************************************
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;
}