使用檔案實現通訊錄的儲存

2021-07-25 14:47:45 字數 4931 閱讀 4792

在使用動態儲存的時候發現每次程式結束儲存的資訊都會消失,但儲存在檔案中就輕鬆的解決了這個問題。

**實現:

#include

#include

#include

#define ok 1

#define error 0

typedef int elementtype;

typedef int status;

typedef struct node

node;

status menu(node* head);

status menuupdate(node* head);

status menudelete(node* head);

status menuquery(node* head);

int length(node* head);

status init(node** head);

status inserttail(node* head);

status deleteindex(node* head);

status deletename(node* head);

status deletephonenumber(node* head);

status updateindex(node* head);

status updatename(node* head);

status updatephone(node* head);

void queryindex(node* head);

void queryname(node* head);

void queryphonenumber(node* head, file* file);

void print(node* head);

void sort(node* head);

void read(node* head);

void write(node* head);

int main(int argc, char **argv)

read(head);

menu(head);

sort(head);

print(head);

write(head);

fclose(file);

return 0;

}//主選單

status menu(node* head)

case 2:

case 3:

case 4:

case 5:

default: printf("請重新輸入正確的操作指令\n");

}}return ok;

}//修改方式選單

status menuupdate(node* head)

case 2:

case 3:

}return ok;

}//刪除子選單

status menudelete(node* head)

case 2:

case 3:

}return ok;

}//查詢子選單

status menuquery(node* head)

case 2:

case 3:

}return ok;

}//初始化

status init(node** head)

*head = new;

(*head)->next = null;

return ok;

}//尾插法

status inserttail(node* head)

node* new = (node*)malloc(sizeof(node));

if(null == new)

head->next = new;

new->next = null;

printf("請輸入新增成員姓名:\n");

scanf("%s", new->name);

printf("請輸入成員性別:\n");

scanf("%s", new->***);

printf("請輸入成員年齡:\n");

scanf("%d", &new->age);

printf("請輸入成員手機號碼:\n");

scanf("%s", new->phonenumber);

fprintf(file, "%s\t", new->name);

fprintf(file, "%s\t", new->***);

fprintf(file, "%d\t", new->age);

fprintf(file, "%s\n", new->phonenumber);

printf("新增成功!\n");

return ok;

}//按照編號刪除

status deleteindex(node* head)

for(i = 0; i < index - 1; i++)

node* temp = head->next;

head->next = head->next->next;

free(temp);

temp = null;

printf("刪除成功!\n");

return ok;

}//按照姓名刪除

status deletename(node* head)

head = head->next;

}if(count == 0)

memset(temp, 0, 20);

printf("刪除成功!\n");

return ok;

}//按照手機號碼刪除

status deletephonenumber(node* head)

head = head->next;

}if(count == 0)

memset(temp, 0, 20);

printf("刪除成功!\n");

return ok;

}//根據編號修改對應資訊

status updateindex(node* head)

for(i = 0; i < index; i++)

printf("\n");

printf("1.只修改姓名\n");

printf("\n");

printf("2.只修改性別\n");

printf("\n");

printf("3.只修改年齡\n");

printf("\n");

printf("4.只修改手機號碼\n");

printf("\n");

printf("5.修改全部資訊\n");

printf("\n");

printf("請輸入數字\n");

scanf("%d\n", &shuzi);

switch(shuzi)

case 2:

case 3:

case 4:

case 5:

default :printf("請重新輸入\n");

}return ok;

}//根據姓名修改對應資訊

status updatename(node* head)

case 2:

case 3:

case 4:

case 5:

default :printf("請重新輸入\n");

}count++;}}

if(count == 0)

memset(temp, 0, 20);

return ok;

}//根據手機號碼修改對應資訊

status updatephone(node* head)

case 2:

case 3:

case 4:

case 5:

default :printf("請重新輸入\n");

} count++;}}

if(count == 0)

memset(number, 0, 20);

return ok;

}//按編號查詢

void queryindex(node* head)

for(i = 0; i < index - 1; i++)

printf("查詢資訊:\n");

printf("姓名:%s\t", head->next->name);

printf("性別:%s\t", head->next->***);

printf("年齡:%d\t", head->next->age);

printf("手機號碼:%s\n", head->next->phonenumber);

printf("--------------------------------------");

}//按姓名查詢

void queryname(node* head)

head = head->next;

}if(count == 0)

memset(temp, 0, 20);

}//按照手機號碼查詢

void queryphonenumber(node* head)

head = head->next;

}if(count == 0)

memset(temp, 0, 20);

}//根據姓名排序

void sort(node* head)

temp = temp->next;}}

}void print(node* head)

}int length(node* head)

return count;

}void read(node* head)//檔案讀入

fclose(file);

}void write(node* head)//檔案寫入

fclose(file);

}

通訊錄 檔案儲存

本文是基於動態儲存的通訊錄實現中加以修改 動態儲存實現通訊錄 增加資料寫入檔案函式 將資料寫入檔案 void writefile mindan book for int i 0 i book size i fclose fp 增加載入檔案資料儲存 void loadfile mindan book ...

通訊錄的實現

ifndef contacts h define contacts h define name length 20 define length 10 define tele length 11 define addr length 30 define max 1000 struct peoplein...

通訊錄 靜態實現

address.h ifndef address h define address h include include include include define max 10 這裡我為了除錯方便取了乙個較小的數值 enum op 姓名 性別 年齡 住址 typedef struct pesonm...