62_综合实例

//_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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值