#include <stdio.h>
#include <stdlib.h>
typedef struct
{
char name[20]; //姓名
char number[20]; //电话号码
char wechat[20]; //微信号
char email[20];
}information; //初始化要录入的个人信息的所有内容
typedef struct node
{
information data;
struct node *next;
}Elem,*Link;
int Init(Link elem[13],Link elem2[13],int t)
{
Link j,k,L,m;
int i,p,q,r,a,b,c,d,e;
for(i=0;i<t;i++)
{
L=(Link)malloc(sizeof(Elem)); //定义一个结点
L->next=NULL;
printf("请输入第%d个人的姓名:",i+1);
scanf("%s",&L->data.name);
printf("请输入第%d个人的电话号码:",i+1);
scanf("%s",&L->data.number);
printf("请输入第%d个人的微信号:",i+1);
scanf("%s",&L->data.wechat);
printf("请输入第%d个人的邮箱号:",i+1);
scanf("%s",&L->data.email);
p=strlen(L->data.name); //用名字存储
q=L->data.name[p-1];
r=q%13; //将初始化录入的人的姓名的最后一个字的ASCII码值对13求余,得到的结果存入相应的位置
if(elem[r]->next==NULL)
{
elem[r]->next=L;
L->next=NULL;
}
else
{
for(j=elem[r];j->next!=NULL;j=j->next);
j->next=L;
L->next=NULL;
}
//将用名字存储的方式得到的结点存入相应的位置
a=strlen(L->data.number); //用电话号码存储
d=L->data.number[a-1];
e=L->data.number[a-2]; //d,e分别获取电话号码的最后一位和倒数第二位
b=d+10*e;
c=b%13; //通过计算他们的ASCII码值对13求余的结果存到相应的位置
m=(Link)malloc(sizeof(Elem));
m->next=NULL;
m=L;
if(elem2[c]->next==NULL)
{
elem2[c]->next=m;
m->next=NULL;
}
else
{
for(k=elem2[c];k->next!=NULL;k=k->next);
k->next=m;
m->next=NULL;
}
}
//将结点存入相应的位置
printf("------------------信息录入完成!-----------------\n");
printf("\n");
return 0;
}
int Init2(Link elem[13],Link elem2[13]) //文件读写初始化
{
Link j,k,L,m;
char st[20];
FILE *fp;
int i,p,q,r,a,b,c,d,e,t;
if((fp=fopen("d:\\test.txt","r"))==NULL)
{
printf("打开失败!\n");
getchar();
exit(0);
}
for(i=1;i<=3;i++)
{
L=(Link)malloc(sizeof(Elem));
L->next=NULL;
fgets(st,20,fp);
电话簿管理系统
最新推荐文章于 2023-04-23 18:23:55 发布