当前位置:编程学习 > C#/ASP.NET >>

通讯录管理程序样例

通讯录管理程序
目  标:编写程序,建立一个通讯录,存放有姓名、电话号码、住址等,具备输入、查找、添加、修改及删除等功能。
要  求:具备菜单功能或详细的提示功能,至少具备数据输入、输出、查询、删除、文件保存、文件读入中的两项功能。能力强的同学可以设计表格化输出。熟练掌握文件或结构体的操作,
#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;
     }
     /*来源:http://www.125pc.com*/
     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);
     } --------------------编程问答-------------------- 参考,http://blog.csdn.net/bdmh/article/details/6112631 --------------------编程问答-------------------- 不知道楼主的目的,这是c#版.
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,