c语言求救!!!!!!

1、设一个通信录由以下几项数据信息构成:
数据项 类型

姓名 字符串
地址 字符串
邮政编码 字符串
电话号码 字符串
试为通信录数据定义类型和定义通信录变量, 实现功能:存取、显示、删除记录、查询记录等功能。
2、要求:界面友好,易于操作
高手,再给我一个这个题目的程序吧

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct student *ST;
struct student
{
char stN[20];
char stVal[128];
char stNo[10];
char stTel[12];
ST next;
};
ST head = NULL;
int ShowNode()
{
char no[20] = {0};
ST t;

printf("输入姓名:");
scanf("%s", no);
for (t = head; t; t = t->next)
{
if (!memcmp(t->stN, no, strlen(no)))
{
printf("姓名:%s, 地址:%s 邮编:%s 电话:%s\n", t->stN, t->stVal, t->stNo, t->stTel);
return 0;
}
}
printf("无此人信息\n");
return 0;
}

int ChangeNode()
{
char no[20];
ST t;

printf("输入姓名:");
scanf("%s", no);
for (t = head; t; t = t->next)
{
if (!memcmp(t->stN, no, strlen(no)))
{
printf("输入新的记录:\n");
printf("地址:");
scanf("%s", t->stVal);
printf("邮编:");
scanf("%s", t->stNo);
printf("英语成绩:");
scanf("%s", t->stTel);
return 0;
}
}
printf("无此人信息\n");
return 0;
}

int InsertNode()
{
ST t;
t = (ST)malloc(sizeof *t);
printf("输入姓名:");
scanf("%s", t->stN);
printf("输入地址:");
scanf("%s", t->stVal);
printf("输入邮编:");
scanf("%s", t->stNo);
printf("输入电话:");
scanf("%s", t->stTel);
t->next = head;
head = t;
return 0;
}

int DelNode()
{
ST x, y;
char no[20] = {0};

printf("输入姓名:");
scanf("%s", no);
for (x = y = head; x; y = x, x = x->next)
{
if (!memcmp(x->stN, no, strlen(no)))
{
if (x ==y)
{
x = head = head->next;
y->next = NULL;
free(y);
return 0;
}
else
{
y->next = x->next;
x->next = NULL;
free(x);
return 0;
}
}
}
printf("无此学生\n");
return 0;
}

int main(void)
{
int i;
while(1)
{
printf("查询记录:1\n"
"更改记录:2\n"
"插入记录:3\n"
"删除记录:4\n"
"退出:5\n");
scanf("%d", &i);
if (1==i)
{
ShowNode();
}
else if(2==i)
{
ChangeNode();
}
else if(3==i)
{
InsertNode();
}
else if(4==i)
{
DelNode();
}
else if(5==i)
{
break;
}
else
{
printf("输入错误!请重新输入!\n");
continue;
}
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网