?? 新建 文本文檔.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 + -