嘻嘻,我也小改了一下!感兴趣的朋友看一下! #include<stdio.h> #include<stdlib.h> #define max 100
struct addr { int num; long ID; char Name[8]; long Call; char Adress[50]; }addr_list[max];
void init_list(void);//分配空间 void enter(void); // 加数据 void deletes(void);//删除 void list(void);//显示 int menu_select(void);//选择需要的服务 int find_free(void);//查找有剩余空间
int main(void) { int choice; init_list(); for(;;) {choice=menu_select(); switch(choice) { case 1 : enter();break; case 2 : deletes();break; case 3 : list();break; case 4 : exit(0); } } return 0 ; }
void init_list(void) { register int t; for(t=0;t<max;++t) { addr_list[t].num=0; } }
int menu_select(void) { int c=0; printf("请选择你需要地服务:\n"); printf("1.增加\n"); printf("2.删除\n"); printf("3.显示全部信息\n"); printf("4.退出\n"); next: scanf("%d",&c);
if(c!=1&&c!=2&&c!=3&&c!=4){ printf("对不起,输入错误,请重新输入:\n"); goto next;} else return c; }
void enter(void) {int slot; slot=find_free(); if(slot==-1) {printf("\n已经满了"); return; } addr_list[slot].num=slot; printf("请输入会员ID号(in number):\n"); scanf("%d",&addr_list[slot].ID); printf("\n请输入名字:"); scanf("%s",addr_list[slot].Name); printf("\n请输入电话号码(in number):"); scanf("%d",&addr_list[slot].Call); printf("\n请输入地址(最多25个字):"); scanf("%s",addr_list[slot].Adress); }
int find_free(void) { register int t; for(t=1;addr_list[t].num&&t<max;++t)//从第一个开始而不是第0个 if(t==max) return (-1); return t; }
void deletes(void) { int i,s=0; printf("请输入要删除项的num:"); scanf("%d",&s); if(s>=0&&s<max) { addr_list[s].num=0; addr_list[s].Name[0]='\0'; addr_list[s].ID='\0'; addr_list[s].Call='\0'; addr_list[s].Adress[0]='\0'; } for(i=s;i<max;i++) --addr_list[i+1].num;//将删除项后面的信息标号提前1 for(i=s;i<max;i++)//将后面的信息依次向前移动 addr_list[i]=addr_list[i+1]; }
void list(void) { register int t; for(t=1;t<max;++t) { if(addr_list[t].num!=0) {printf("num: %d\n",addr_list[t].num); printf("ID: %d\n",addr_list[t].ID); printf("name: %s\n",addr_list[t].Name); printf("Call: %d\n",addr_list[t].Call); printf("Adress: %s\n",addr_list[t].Adress); printf("\n\n"); } else{ printf("没有信息存在!\n");//如果没有信息存在打印此句话 break; } } }