C编写的通讯录

<C语言大全>中演示使用fread()与fwrite()方便的读/写大量数据而编写的通讯录

/*A simple mailing list example using an array of structures*/
#include<stdio.h>
#include<stdlib.h>

#define MAX 100

struct addr{
    char name[30];
    char street[40];
    char city[20];
    char state[3];
    unsigned long int zip;
}add_list[MAX];

void init_list(void),enter(void);
void delete(void),list(void);
void load(void),save(void);
int menu_select(void),find_free(void);

int main(void)
{
    char choice;
    init_list();/*initialize the structure array*/
    for(;;){
        choice=menu_select();
        switch(choice){
            case 1:enter();
                break;
            case 2:delete();
                break;
            case 3:list();
                break;
            case 4:save();
                break;
            case 5:load();
                break;
            case 6:exit(0);
            }
        }
        return 0;
}

/*Initialize the list*/
void init_list(void)
{
     register int t;
     for(t=0;t<MAX;++t)
         add_list[t].name[0]='0';
     }

/*Get a menu selection*/
int menu_select(void)
{
    char s[80];
    int c;
   
    printf("1.Enter a name/n");
    printf("2.Delete a name/n");
    printf("3.List the file/n");
    printf("4.Save the file/n");
    printf("5.Load the file/n");
    printf("6.Quit/n");
    do{
        printf("/nEnter your choice:");
        gets(s);
        c=atoi(s);
        }while(c<0||c>6);
      return c; 
    }

/*Input addresses into the list*/
void enter(void)
{
     int slot;
     char s[80];
    
     slot=find_free();
    
     if(slot==-1){
             printf("/nList Full");
             return;        
         }
     printf("Enter name:");
    
     gets(add_list[slot].name);
    
     printf("Enter street:");
     gets(add_list[slot].street);
    
     printf("Enter city:");
     gets(add_list[slot].city);
    
     printf("Enter state:");
     gets(add_list[slot].state);
    
     printf("Enter zip:");
     gets(s);
     add_list[slot].zip=strtoul(s,'/0',10);
     }

/*Find an unused structure*/
int find_free(void)
{
    register int t;
   
    for(t=0;add_list[t].name[0]&&t<MAX;++t);
   
    if(t==MAX)
        return -1;/*no slots free*/
    return t;
    }

/*Delete an address*/
void delete(void)
{
     register int slot;
     char s[80];
    
     printf("enter record # :");
     gets(s);
     slot=atoi(s);
     if(slot>=0&&slot<MAX)
         add_list[slot].name[0]='/0';
     }

/*Display the list on the screen*/
void list(void)
{
     register int t;
    
     for(t=0;t<MAX;++t){
         if(add_list[t].name[0]){
             printf("%s/n",add_list[t].name);
             printf("%s/n",add_list[t].street);
             printf("%s/n",add_list[t].city);
             printf("%s/n",add_list[t].state);
             printf("%s/n",add_list[t].zip);
             }
         }
         printf("/n/n");
     }

/*Save the list*/
void save(void)
{
     FILE *fp;
     register int i;
    
     if((fp=fopen("maillist","wb"))==NULL)
         printf("Cannot open file/n");
         return;
    
     for(i=0;i<MAX;i++)
         if(*add_list[i].name)
             if(fwrite(&add_list[i],sizeof(struct addr),1,fp)!=1)
                 printf("File write error/n");
     fclose(fp);
     }

/*Load the file*/
void load(void)
{
     FILE *fp;
     register int i;
    
     if((fp=fopen("maillist","rb"))==NULL){
         printf("Cannot open file/n");
         return;
     }
    
     init_list();
     for(i=0;i<MAX;i++)
         if(fread(&add_list[i],sizeof(struct addr),1,fp)!=1){
             if(feof(fp))break;
             printf("File read error/n");
         }
     fclose(fp);
     }

### 回答1: 您好!通讯录管理系统是一个非常常见的应用程序,可以用于存储和管理联系人信息。在C语言中,可以使用结构体来表示联系人,并使用文件来保存和读取联系人数据。下面是一个简单的示例代码,可以用来实现通讯录管理系统: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_NAME_LEN 50 #define MAX_PHONE_LEN 20 #define MAX_CONTACTS 1000 #define DATA_FILE "contacts.dat" typedef struct { char name[MAX_NAME_LEN]; char phone[MAX_PHONE_LEN]; } Contact; int num_contacts = 0; Contact contacts[MAX_CONTACTS]; void save_contacts() { FILE* fp; fp = fopen(DATA_FILE, "wb"); if (fp == NULL) { printf("Error: Failed to open file.\n"); return; } fwrite(&num_contacts, sizeof(int), 1, fp); fwrite(contacts, sizeof(Contact), num_contacts, fp); fclose(fp); } void load_contacts() { FILE* fp; fp = fopen(DATA_FILE, "rb"); if (fp == NULL) { return; } fread(&num_contacts, sizeof(int), 1, fp); fread(contacts, sizeof(Contact), num_contacts, fp); fclose(fp); } void add_contact() { if (num_contacts == MAX_CONTACTS) { printf("Error: Maximum number of contacts reached.\n"); return; } Contact c; printf("Enter name: "); scanf("%s", c.name); printf("Enter phone number: "); scanf("%s", c.phone); contacts[num_contacts++] = c; printf("Contact added successfully.\n"); } void list_contacts() { printf("Name\t\tPhone\n"); for (int i = 0; i < num_contacts; i++) { printf("%s\t\t%s\n", contacts[i].name, contacts[i].phone); } } void search_contacts() { char name[MAX_NAME_LEN]; printf("Enter name to search: "); scanf("%s", name); int found = 0; for (int i = 0; i < num_contacts; i++) { if (strcmp(contacts[i].name, name) == 0) { printf("Name: %s\nPhone: %s\n", contacts[i].name, contacts[i].phone); found = 1; } } if (!found) { printf("Contact not found.\n"); } } void menu() { printf("1. Add contact\n"); printf("2. List contacts\n"); printf("3. Search contact\n"); printf("4. Quit\n"); } int main() { load_contacts(); int choice; while (1) { menu(); printf("Enter choice: "); scanf("%d", &choice); switch (choice) { case 1: add_contact(); break; case 2: list_contacts(); break; case 3: search_contacts(); break; case 4: save_contacts(); exit(0); default: printf("Invalid choice.\n"); } } return 0; } ``` 该代码使用了结构体`Contact`来表示联系人,每个联系人包含姓名和电话号码。程序最多可以存储1000个联系人,联系人数据存储在 ### 回答2: 通讯录管理系统是一种常见的应用程序,用于记录和管理联系人的信息。使用C语言编写通讯录管理系统可以实现以下功能: 1. 添加联系人:用户可以输入姓名、电话号码、电子邮件等信息来添加联系人到通讯录中。程序将联系人的信息保存到内存中的一个数据结构,如数组或链表。 2. 显示联系人:用户可以选择查看通讯录中的所有联系人信息。程序将遍历存储联系人信息的数据结构,并将每个联系人的信息逐一显示在屏幕上。 3. 搜索联系人:用户可以输入姓名或电话号码等关键词来搜索特定的联系人。程序将遍历通讯录中的每个联系人,并根据用户输入的关键词进行匹配,然后显示相应的联系人信息。 4. 删除联系人:用户可以选择删除通讯录中的某个联系人。程序将根据用户选择的联系人进行删除操作,并更新通讯录中的联系人列表。 5. 修改联系人:用户可以选择修改通讯录中的某个联系人的信息。程序将根据用户选择的联系人进行修改操作,并更新通讯录中的联系人信息。 6. 保存与加载:程序可以提供保存通讯录到文件以及从文件加载通讯录的功能。将通讯录保存到文件可以实现数据的持久化存储,下次运行程序时可以重新加载通讯录通讯录管理系统的实现可以通过定义结构体来表示联系人的信息,然后使用数组或链表来存储多个联系人。通过使用C语言的文件操作函数,可以方便地将通讯录保存到文件中,并在需要时加载数据。 编写通讯录管理系统需要熟悉C语言的基本语法,包括输入输出、条件语句、循环结构、数组和结构体等。同时,还需要了解数据结构和文件操作相关的知识。 通过以上的功能实现,使用C语言编写通讯录管理系统可以方便地添加、查看、搜索、删除和修改联系人信息,并具备保存与加载数据的功能,从而提高联系人信息的管理效率。 ### 回答3: 通讯录管理系统是一款可以存储和管理联系人信息的软件。使用C语言编写通讯录管理系统可以实现以下功能: 1. 添加联系人:用户可以输入联系人的姓名、电话号码、地址等信息,点击添加按钮后将联系人信息存储到通讯录中。 2. 查找联系人:用户可以输入联系人的姓名进行查找,系统会在通讯录中进行匹配,并将匹配到的联系人信息显示出来。 3. 修改联系人:用户可以选择要修改的联系人,并输入新的联系人信息进行修改。 4. 删除联系人:用户可以选择要删除的联系人,并从通讯录中删除该联系人的信息。 5. 显示所有联系人:用户可以选择显示通讯录中的所有联系人信息,系统将逐一显示所有联系人的姓名、电话号码、地址等信息。 为了实现通讯录管理系统,可以使用C语言中的结构体来定义联系人的数据结构,使用链表来存储联系人的信息。可以使用文件来保存通讯录数据,通过文件读写函数来实现数据的读取和存储。 在编写程序时,需要设计菜单界面和相应的功能模块,使用循环和条件判断语句来实现菜单的选择和功能的执行。通过函数的调用和参数传递来实现功能的具体实现。 除此之外,还可以对通讯录管理系统进行进一步的拓展,如添加分组功能、导入/导出联系人等。实现通讯录管理系统可以锻炼编程能力,对学习C语言也有很好的实践作用。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值