62_综合实例

来源:互联网 发布:软件开源有什么用 编辑:程序博客网 时间:2024/05/21 18:45
//_62_综合实例//_62_main.cpp//简单的通讯录程序#include <stdio.h>#include <stdlib.h>#define MAX 100struct 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;}

0 0
原创粉丝点击