|
3鱼币
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<conio.h>
#define LEN sizeof(struct student)//用宏定义分配空间大小,是程序的可读性增强
struct student *creat(); //创建链表的声明
void print(struct student *head); //打印链表的声明
struct student *del(struct student *head); //需要删除ID号的通讯信息
void jiemian(); //将界面图像提取处理的功能函数声明
void chaxun(struct student *head); //查询通讯信息功能函数的声明
struct student *increase(struct student *head); //添加通讯信息功能函数的声明
struct student
{
int id;
char name[20];
char sex[20];
char cellphone[20];
char QQ[20];
struct student *next;
};
int n;//定义全局变量,作为结点数
void main()
{
struct student *stu,*p;
int a=1;
jiemian();
printf("$请建立通讯录信息,以输入ID号0结束通讯录信息的输入操作$\n");
stu=creat();
p=stu;
system("cls");
jiemian();
printf("亲,(*^__^*)请输入0-5操作数进行操作\n");
while(a!=0)
{
scanf("%d",&a);
switch (a)
{
case 4:print(p);break;
case 0: ; break;
case 3:del(p);break;
case 2:chaxun(p);break;
case 1:increase(p);break;
}
}
printf("\n\n");
system("pause");
}
void jiemian()
{
printf("****************************************************\n");
printf("*******----------welcome to you------------*********\n");
printf("*********欢迎使用文成哥通讯信息管理系统*************\n");
printf("★ ★\n");
printf("☆ ☆\n");
printf("★ 1.插入通讯录信息 ★\n");
printf("☆ 2.查询通讯录信息 ☆\n");
printf("★ 3.删除通讯录信息 ★\n");
printf("☆ 4.输出通讯录信息 ☆\n");
printf("★ 5.保存到文件 ★\n");
printf("☆ 0.退出通讯录系统 ☆\n");
printf("****************************************************\n");
}
struct student *creat()
{
struct student *head;
struct student *p1,*p2;
p1=p2=(struct student *)malloc(LEN);
printf("请输入ID号:");
scanf("%d",&p1->id);
printf("请输入姓名:");
scanf("%s",&p1->name);
printf("请输入性别:"); //输入数据对数据进行存储
scanf("%s",&p1->sex);
printf("请输入手机号码:");
scanf("%s",&p1->cellphone);
printf("请输入QQ: ");
scanf("%s",&p1->QQ);
head=NULL;
n=0;
while(p1->id)
{
n++;
if(n==1)
{
head = p1;//让头结点指向P1所指向的结点
}
else
{
p2->next = p1;
}
p2=p1;
p1=(struct student *)malloc(LEN);//为产生新的节点分配空间
printf("请输入ID号:");
scanf("%d",&p1->id);
if(p1->id==0)break;
printf("请输入姓名:");
scanf("%s",&p1->name);
printf("请输入性别:");
scanf("%s",&p1->sex);
printf("请输入手机号码:");
scanf("%s",&p1->cellphone);
printf("请输入QQ: ");
scanf("%s",&p1->QQ);
}
p2->next = NULL;
return head; //头节点地址返回给主函数
}
void chaxun(struct student *head)
{
struct student *p1,*p2;
int ID;
p1=head;
printf("请输入要查询的ID号:");
scanf("%d",&ID);
while(p1->id!=ID&&p1->next !=NULL)
{
p2 = p1;
p1 = p1->next;
}
if(p1->id ==ID)
printf("ID号:%d 姓名:%s 性别:%s 手机号码:%s QQ:%s\n",p1->id,p1->name,p1->sex,p1->cellphone,p1->QQ);
}
void print(struct student *head)
{
struct student *p;
p=head;
if(NULL!=head)
{
do
{
printf("ID号:%d 姓名:%s 性别:%s 手机号码:%s QQ:%s\n",p->id,p->name,p->sex,p->cellphone,p->QQ);
p=p->next;
}while(p);
}
}
struct student *del(struct student *head)
{
struct student *p1,*p2;
int num;
printf("请输入要删除的ID号");
scanf("%d",&num);
if(NULL==head)
{
printf("\nThis list is null!\n");
goto end;
}
p1=head;
while(p1->id!=num&&p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(num==p1->id)
{
if(p1==head)
{
head=p1->next;
}
else
{
p2->next=p1->next;
}
printf("\nDelete No: %d succeed!\n",num);
n=n-1;
}
else
{
printf("%d not been found!\n",num);
}
end:
return head;
}
struct student *increase(struct student *head)
{
struct student *p1,*p3;
p1=head;
p3=(struct student *)malloc(LEN);
printf("请输入要插入的通讯信息:\n");
printf("请输入ID号:");
scanf("%d",&p3->id);
printf("请输入姓名:");
scanf("%s",&p3->name);
printf("请输入性别:");
scanf("%s",&p3->sex);
printf("请输入手机号码:");
scanf("%s",&p3->cellphone);
printf("请输入QQ: ");
scanf("%s",&p3->QQ);
p3->next =p1;
head=p3;
printf("增添通讯录信息成功\n");
return head;
}
|
|