通訊錄小專案

2021-08-01 14:57:41 字數 3938 閱讀 4822

可以儲存1000人的資訊,

個人資訊包括姓名、**、住址、年齡、性別。

提供方法:

1、新增聯絡人資訊

2、刪除指定聯絡人資訊

3、查詢指定聯絡人資訊

4、修改指定聯絡人資訊

5、顯示所有聯絡人資訊

6、清空所有聯絡人資訊

7、以名字排序所有聯絡人

1、從檔案讀取和向檔案寫入資訊

fopen、fclose、fscanf、fprintf

2、動態開闢空間儲存聯絡人資訊

malloc、realloc、free

3、新增按位址排序

offsetof、qsort、strcmp

4、轉移表

函式指標陣列

tel.h

#ifndef __tel_h__

#define __tel_h__

#include

#include

#include

#include

#include

#include

#include

#define name 20

#define *** 5

#define phone 11

#define address 20

#define expansion 5

struct contact

;struct addressbook

;void init_addressbook(struct addressbook* );

void read_file(struct addressbook*, file*);

void add_contact(struct addressbook*);

void delete_contact(struct addressbook*);

void lookup_contact(struct addressbook*);

void modify_contact(struct addressbook*);

void show_contact(struct addressbook*);

void empty_contact(struct addressbook*);

void sort_contact(struct addressbook*);

void write_file(struct addressbook*, file*);

#endif //__tel_h__

text.c
#define _crt_secure_no_warnings 1

#include "tel.h"

void menu()

int main()

; //上面是乙個轉移表——函式指標陣列的定義和賦值

unsigned

int input = 0;

do while (input);

stream = fopen("text.txt", "w");

write_file(&list, stream);

fclose(stream);

free(list.contacts);

list.contacts = null;

return

0;}

maillist.c
#define _crt_secure_no_warnings 1

#include "tel.h"

void read_file(struct addressbook* plist, file* stream)

int i;

for (i=0; i < plist->num; i++)

}void init_addressbook(struct addressbook* plist)

static

struct contact* find_contact(struct addressbook* plist)

; printf("please enter name >:\n");

scanf("%s", name);

for (i = 0; i < plist->sz; i++)

return null;

}static

void expand(struct addressbook* plist)

void empty_contact(struct addressbook* plist)

void add_contact(struct addressbook* plist)

printf("please enter name >:\n");

scanf("%s", plist->contacts[plist->sz].name);

printf("please enter *** >:\n");

scanf("%s", plist->contacts[plist->sz].***);

printf("please enter age >:\n");

scanf("%d", &plist->contacts[plist->sz].age);

printf("please enter phone number >:\n");

scanf("%s", plist->contacts[plist->sz].phone);

printf("please enter address >:\n");

scanf("%s", plist->contacts[plist->sz].address);

plist->sz++;

}void delete_contact(struct addressbook* plist)

int i = (char*)(&plist->contacts[plist->sz]) - (char*)con;

char* dest = (char*)con;

char* src = (char*)(con + 1);

while (i--)

plist->sz--;

}void lookup_contact(struct addressbook* plist)

printf("%-20s%-10s%-10s%-15s%-20s\n", \

"name", "***", "age", "phone", "address");

printf("%-20s%-10s%-10d%-15s%-20s\n", con->name, \

con->***, con->age, con->phone, con->address);

}void modify_contact(struct addressbook* plist)

else

}void show_contact(struct addressbook* plist)

printf("%-20s%-10s%-10s%-15s%-20s\n",\

"name", "***", "age", "phone", "address");

int i;

for (i = 0; i < plist->sz; i++)

}void empt_contact(struct addressbook* plist)

static

int compare_name(const

void* name1, const

void* name2)

static

int compare_address(const

void* name1, const

void* name2)

void sort_contact(struct addressbook* plist)

void write_file(struct addressbook* plist, file* stream)

}

C語言通訊錄小專案

include include include include 定義節點 struct node 建立頭節點 int init struct node pheader return 0 bzero pnode,sizeof struct node 清理堆空間 pnode name 20 對於字元陣列...

C語言小專案 通訊錄

通訊錄全部採用c語言實現,用鍊錶實現增加 刪除 修改 查詢等功能,還有命令解析函式 將輸入分解成主命令 姓名 聯絡人資訊是儲存在檔案中,每次程式執行和結束時都會讀取檔案中的資訊。節點裡定義的都是指標,增加新節點時要開闢新的記憶體,刪除節點時要記得及時釋放記憶體,防止記憶體溢位。標頭檔案 標頭檔案中是...

C語言小專案 通訊錄系統

專案要求 實現乙個通訊錄 通訊錄可以用來儲存1000個人的資訊,每個人的資訊包括 姓名 性別 年齡 住址 提供方法 新增聯絡人資訊 刪除指定聯絡人資訊 查詢指定聯絡人資訊 修改指定聯絡人資訊 顯示所有聯絡人資訊 清空所有聯絡人 以名字排序所有聯絡人 這個系統我們分為三個部分來實現 contact.h...