📄 新建 文本文档.txt
字号:
#include<stdio.h>
#include<string.h>
#include<time.h>
#define bool int
#define ture 1
#define false 0
#define LEN sizeof(struct Telephone)
struct Telephone /*存放个体信息*/
{
char name[20];
char phone[13];
char mobile[12];
struct Telephone * next;
};
typedef struct Telephone tel;
tel * head=NULL;
time_t now;
void ShowMenu();
void Find();
void Display();
void AddItem();
void ModifyItem();
void RemoveItem();
void SaveAndFree();
void Open();
tel * FindItem(); /*查找条目*/
int main()
{
char x;
bool quit = false;
Open();
while(! quit)
{
ShowMenu();
scanf("%s",&x);
switch(x)
{
case'0':
quit = ture;
SaveAndFree();
break;
case'1':
AddItem();
break;
case'2':
ModifyItem();
break;
case'3':
RemoveItem();
break;
case'4':
Find();
break;
case'5':
Display();
break;
default:
break;
}
}
return 0;
}
/*菜单显示*/
void ShowMenu()
{
printf("\n***********************************\n");
printf("1.添加条目\n");
printf("2.修改条目\n");
printf("3.删除条目\n");
printf("4.查找条目\n");
printf("5.全部条目\n");
printf("0.退出\n");
printf("***********************************\n");
printf("请选择");
}
/*增加条目*/
void AddItem()
{
tel * p1=NULL,* p2=NULL;
p1=(tel *)malloc(sizeof(tel));
printf("输入姓名:\n");
scanf("%s,p1->name");
printf("输入住宅电话:\n");
scanf("%s,p1->phone");
printf("输入移动电话:\n");
scanf("%s,p1->mobile");
p1->next=NULL;
if(NULL==head)
{
head=(tel *)malloc(sizeof(tel));
head->next=p1;
}else
{
for(p2=head;p2->next!=NULL;p2=p2->next);
p2->next=p1;
}
now=time(NULL);
printf("The current date and time is:%s",ctime(&now));
}
/*查找用户*/
void Find()
{
tel *p=FindItem();
if(NULL==p)
printf("对不起,没有找到该用户!\n");
else
printf("找到该用户:\n姓名:%s住宅电话:%s移动电话:%s\n",p->next->name,p->next->phone,p->next->mobile);
}
/*查找条目*/
tel *FindItem()
{
char name[20];
tel *p=NULL;
printf("请输入姓名!\n");
scanf("%s",name);
if(head==NULL)
{
printf("电话簿中没有记录,请输入记录后再使用本功能!\n");
return NULL;
}
for(p=head;p->next!=NULL;p=p->next)
if(!strcmp(p->next->next,name)) /*判断其他节点*/
return p;
return NULL;
}
/*显示所有条目*/
void Display()
{
tel *p=NULL;
if(head==NULL)
{
printf("电话簿中没有记录,请输入记录后再使用本功能!\n");
return;
}
for(p=head->next;p!=NULL;p=p->next)
printf("找到该用户:\n姓名:%s住宅电话:%s移动电话:%s\n",p->next->name,p->next->phone,p->next->mobile);
}
/*修改条目*/
void ModifyItem()
{
tel *p=FindItem();
if(NULL==p)
printf("对不起,没有找到该用户!\n");
else
{
printf("要修改用户的信息:\n:姓名:%s住宅电话:%s移动电话:%s\n",p->next->name,p->next->phone,p->next->mobile);
printf("请输入新的姓名:\n");
scanf("%s",p->next->name);
printf("请输入新的住宅电话:\n");
scanf("%s",p->next->phone);
printf("请输入新的移动电话:\n");
scanf("%s",p->next->mobile);
p->next->next=NULL;
}
}
/*删除条目*/
void RemoveItem()
{
tel *temp=NULL;
tel *p=FindItem();
if(NULL==p)
printf("对不起,没有找到该用户!\n");
else
{
printf("删除的用户信息:\n姓名:%s移动电话:%s\n",p->next->name,p->next->phone,p->next->mobile);
temp=p->next;
p->next=p->next->next;
free(temp);
}
}
/*输出信息到文件,并释放连标空间*/
void SaveAndFree()
{
tel *p=NULL;
FILE *fp;
char *filename="book.txt";
if(head==NULL)
{
printf("\n记录为空!\n");
return;
}
else
p=head->next;
if((fp=fopen(filename,"w"))==NULL) /*出错检测*/
{
printf("\n打不开文件!\n");
return;
}
while(p!=NULL)
{
fprintf(fp,"%s\t %s\t %s\t\n",p->name,p->phone,p->mobile);
p=p->next;
}
printf("保存完毕!\n");
fclose(fp);
/**释放链表空间**/
for(;head->next!=NULL;)
{
p=head->next;
head->next=head->next->next;
free(p);
}
free(head);
}
/*读取文件信息输入到链表*/
void Open()
{
FILE *fp;
tel *p1=NULL,* p2=NULL,* temp=NULL;
if((fp=fopen("book.txt","r"))==NULL)
{
printf("\n*******这是一个新的电话簿******");
return;
}
head=(tel *)malloc(sizeof(tel));
head->next=NULL;
temp=p2=head;
while(!feof(fp))
{
p1=(tel *)malloc(LEN);
temp=p2;
p2->next=p1;
p2=p1;
fscanf(fp,"%s%s%s",p1->name,p1->phone,p1->mobile);
}
temp->next=NULL;
fclose(fp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -