//_62_综合实例
//_62_main.cpp
//简单的通讯录程序
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
struct adress
{
char name[20];
char street[40];
char city[10];
char state[4];
unsigned long zip;
}addr_list[MAX];
void init_list();
void enter();
void dele();
void list();
void save();
void load();
int menu_select();
int find_free();
int main()
{
char choice;
init_list();
for(;;)
{
choice = menu_select();
switch(choice)
{
case 1:
enter();
break;
case 2:
dele();
break;
case 3: list();
break;
case 4:
save();
break;
case 5:
load();
break;
case 6:
exit(0);
default:
exit(1);
}
}
system("pause");
return 0;
}
void init_list()
{
register int t;
for(t=0;t<MAX;t++)
addr_list[t].name[0]='\0';//将所有通讯录中结构体名字初始化
}
void enter()
{
int slot;
char str[80];
slot = find_free();
if(slot == -1)
printf("\nList Full.");
printf("Enter name: ");
gets(addr_list[slot].name);
printf("Enter street: ");
gets(addr_list[slot].street);
printf("Enter city: ");
gets(addr_list[slot].city);
printf("Enter state: ");
gets(addr_list[slot].state);
printf("Enter zip: ");
gets(str);
addr_list[slot].zip = strtoul(str,'\0',10);
}
void dele()
{
register int solt;
char str[80];
printf("Enter record #:");
gets(str);
solt = atoi(str);
if(solt>=0&&solt<MAX)
addr_list[solt].name[0]='\0';
}
void list()
{
register int t;
for(t=0;t<MAX;t++)
{
if(addr_list[t].name[0])
{
printf("%s\n",addr_list[t].name);
printf("%s\n",addr_list[t].street);
printf("%s\n",addr_list[t].city);
printf("%s\n",addr_list[t].state);
printf("%s\n\n",addr_list[t].zip);
}
}
printf("\n\n");
}
void save()
{
FILE *fp;
register int i;
if((fp=fopen("maillist","wb"))==NULL)
printf("Can not open the file.\n");
for(i=0;i<MAX;i++)
if(*addr_list[i].name)
if(fwrite(&addr_list[i],sizeof(struct adress),1,fp)!=1)
printf("File write error");
fclose(fp);
}
void load()
{
FILE *fp;
register int i;
if((fp=fopen("maillist","rb"))==NULL)
printf("Can not open the file.\n");
init_list();
for(i=0;i<MAX;i++)
if(fread(&addr_list[i],sizeof(struct adress),1,fp)!=1)
{
if(feof(fp))
break;
printf("File read error.\n");
}
fclose(fp);
}
int menu_select()
{
char str[80];
int c;
printf("1. Enter a name\n");
printf("2. Delete a name\n");
printf("3. List the file\n");
printf("4. Sava the file\n");
printf("5. Load the file\n");
printf("6. Quit\n");
do{
printf("Enter your choice :");
gets(str);
c = atoi(str);//将字符串转换成整型数
}while(c<0||c>6);
return c;
}
int find_free()
{
register int t;
for(t=0;addr_list[t].name[0]&&t<MAX;t++);
if(t==MAX)
return -1;
return t;
}
62_综合实例
最新推荐文章于 2025-05-26 16:38:55 发布