这段程序的结构体与数组应该怎么描述呢报告里咋写啊

#include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> #define SIZE 50 struct Contacts_type { char name[20]; long long phone_number; char type[20]; char attach[50]; } Car[SIZE]; int main(); void save(); void load() ; void input(); void output(); void search(); void search1();
void search2(); void contact(); void insert(); void change(); void change1(); void change2(); void change3(); void change7(); void del(); void del1(); void del2(); void save() { FILE *fp; int i; if((fp=fopen("contacts.dat","wb"))==NULL) { printf("cannot open file\n");return; } for(i=0;i<SIZE;i++) if(fwrite(&Car[i],sizeof(struct Contacts_type),1,fp)!=1) printf("file write error\n"); fclose(fp); } void load() { FILE *fp; int i; if((fp=fopen("contacts.dat","rb"))==NULL) { printf("cannot open file\n");return;
} for(i=0;i<SIZE;i++) fread(&Car[i],sizeof(struct Contacts_type),1,fp); fclose(fp); } void input() { system("cls"); int i=0,j,m=0,n; while(1) { printf("姓 名:");scanf("%s",Car[i].name);getchar(); printf("\n手机号:");scanf("%lld",&Car[i].phone_number);getchar(); printf("\n分 类:");scanf("%s",Car[i].type);getchar(); printf("\n备 注:");scanf("%s",Car[i].attach);getchar(); save(); load(); save();i++; printf("\n输入1继续,输入0返回上一级菜单:"); scanf("%d",&j); printf("\n"); if(j==0)break; } } void output() { system("cls"); int i,n,sum=0; load(); for(i=0;i<SIZE;i++) { if(Car[i].phone_number==0)break;//只读取已存储的数据 else { printf(" —————————————\n"); printf(" 姓 名:%s\n 分 类:%s\n 手机号:%lld 备 注:%s\n",Car[i].name,Car[i].type,Car[i].phone_number,Car[i].attach); } } sum=i; printf(" —————————————\n"); printf("一共%d个联系人\n\n输入0返回:",sum); scanf("%d",&n); if(n==0)main(); } void search() { system("cls"); int n; while(1) { printf(" —————————————\n"); printf(" 个人通讯录管理系统 \n"); printf(" 1.按姓名查询 \n"); printf(" 2.按分类查询 \n"); printf(" 0.返回上一级 \n"); printf(" —————————————\n\n"); printf("请输入您的选择:"); scanf("%d",&n); switch(n) { case 1:search1();break; case 2:search2();break; case 0:main(); } } } void search1() { system("cls"); int n,mark=0,i=SIZE; char find_name[20]; load(); printf(" —————————————\n"); printf(" +按姓名查找+ \n\n"); printf(" 请输入要查找的姓名:"); scanf("%s",find_name); printf("\n +查询结果+\n"); for(n=0;n<i;n++) { if(strcmp(find_name,Car[n].name)==0) { printf(" 姓 名:%s\n 分 类:%s\n 手机号:%lld 备 注:%s\n",Car[n].name,Car[n].type,Car[n].phone_number,Car[n].attach); mark++; } } if(mark==0) printf("查无此人\n"); printf(" —————————————\n按任意键返回菜单"); getch(); search(); } void search2() { system("cls"); int n,mark=0,i=SIZE; char find_type[20]; load(); printf(" —————————————\n"); printf(" +按分类查找+ \n\n"); printf(" 请输入要查找的分类:"); scanf("%s",find_type); printf("\n +查询结果+\n"); for(n=0;n<i;n++) { if(strcmp(find_type,Car[n].type)==0) { printf(" 姓 名:%s\n 分 类:%s\n 手机号:%lld 备 注:%s\n",Car[n].name,Car[n].type,Car[n].phone_number,Car[n].attach); printf(" —————————————\n"); mark++; } } if(mark==0) printf("暂无此分类\n按任意键返回菜单"); getch(); search(); } void insert() { system("cls"); FILE *fp; int i,j; load(); fp=fopen("contacts.dat","r+"); for(i=0;i<SIZE;i++) { if(Car[i].phone_number==0)//找到没有存储数据的空位 { printf(" —————————————\n"); printf(" 请输入需要增加的联系人信息:\n"); printf(" —————————————\n"); printf("姓 名:");scanf("%s",Car[i].name);getchar(); printf("\n手机号:");scanf("%lld",&Car[i].phone_number);getchar(); printf("\n分 类:");scanf("%s",Car[i].type);getchar(); printf("\n备 注:");scanf("%s",Car[i].attach);getchar(); save(); load(); save(); printf("\n+增加成功+\n输入1继续,输入0返回:"); printf("\n"); scanf("%d",&j); if(j==0)break; } } fclose(fp); printf("按任意键返回菜单"); getch(); main(); } void contact() { system("cls"); char c_name[20]; int n,m,mark=0,i=SIZE; FILE *fp; load(); fp=fopen("contacts.dat","r+"); printf(" —————————————\n"); printf("请输入要通信的联系人:"); scanf("%s",c_name); for(n=0;n<i;n++) { if(strcmp(c_name,Car[n].name)==0) { mark++; printf("\n 姓 名:%s\n 分 类:%s\n 手机号:%lld 备 注:%s\n\n",Car[n].name,Car[n].type,Car[n].phone_number,Car[n].attach); printf("确认请按1,返回请按0:"); scanf("%d",&m); if(m==0)return; } } if(mark==0)printf("查无此人\n"); fclose(fp);
printf("按任意键返回菜单\n"); getch(); main(); } void change() { system("cls"); int n; while(1) { printf(" —————————————\n"); printf(" 个人通讯录管理系统 \n"); printf(" 1.修改姓名 \n"); printf(" 2.修改分类\n"); printf(" 3.修改手机号\n"); printf(" 4.修改备注\n"); printf(" 0.返回上一级 \n"); printf(" —————————————\n\n"); printf("请输入您的选择:"); scanf("%d",&n); switch(n) { case 1:change1();break; case 2:change2();break; case 3:change3();break; case 4:change7();break; case 0:main(); } } } void change1() { system("cls"); FILE *fp; char change_name[20],new_name[20]; int i=SIZE,n=0,a,mark=0; load(); fp=fopen("contacts.dat","r+"); printf(" —————————————\n"); printf("请输入想要修改的联系人:"); scanf("%s",change_name); for(n=0;n<i;n++) { if(strcmp(Car[n].name,change_name)==0) { printf("\n 姓 名:%s\n 分 类:%s\n 手机号:%lld 备 注:%s\n\n",Car[n].name,Car[n].type,Car[n].phone_number,Car[n].attach); printf("确认请按1,返回请按0:"); scanf("%d",&a); if(a==0)return; else { printf("\n请输入新的名字:"); scanf("%s",new_name); strcpy(Car[n].name,new_name); save(); printf("\n+修改成功+\n"); mark++; break; }
}
} if(mark==0) printf("查无此人\n"); fclose(fp);
printf("按任意键返回菜单"); getch(); change(); } void change2() { system("cls"); FILE *fp; char change_name[20],new_type[20]; int i=SIZE,n=0,a,mark=0; load(); fp=fopen("contacts.dat","r+"); printf(" —————————————\n"); printf("请输入想要修改的联系人:"); scanf("%s",change_name); for(n=0;n<i;n++) { if(strcmp(Car[n].name,change_name)==0) { printf("\n 姓 名:%s\n 分 类:%s\n 手机号:%lld 备 注:%s\n\n",Car[n].name,Car[n].type,Car[n].phone_number,Car[n].attach); printf("确认请按1,返回请按0:"); scanf("%d",&a); if(a==0)return; else { printf("\n请输入新的分类:"); scanf("%s",new_type); strcpy(Car[n].type,new_type);save(); printf("\n+修改成功+\n"); mark++;break; }
}
} if(mark==0) printf("查无此人\n按任意键返回菜单"); fclose(fp);
getch(); change(); } void change3() { system("cls"); FILE *fp; char change_name[20]; long long new_phone; int i=SIZE,n=0,a,mark=0; load(); fp=fopen("contacts.dat","r+"); printf(" —————————————\n"); printf("请输入想要修改的联系人:"); scanf("%s",change_name); for(n=0;n<i;n++) { if(strcmp(Car[n].name,change_name)==0) { printf("\n 姓 名:%s\n 分 类:%s\n 手机号:%lld 备 注:%s\n\n",Car[n].name,Car[n].type,Car[n].phone_number,Car[n].attach); printf("确认请按1,返回请按0:"); scanf("%d",&a); if(a==0)return; else { printf("\n请输入新的手机号:"); scanf("%lld",&new_phone); if(Car[n].phone_number!=new_phone) { Car[n].phone_number=new_phone;save(); printf("\n+修改成功+\n"); } else printf("新旧号码相同,无需修改"); mark++;break; }
}
} if(mark==0) printf("查无此人\n按任意键返回菜单"); fclose(fp);
getch(); change(); } void change7() { system("cls"); FILE *fp; char change_name[20],new_attach[20]; int i=SIZE,n=0,a,mark=0; load(); fp=fopen("contacts.dat","r+"); printf(" —————————————\n"); printf("请输入想要修改的联系人:"); scanf("%s",change_name); for(n=0;n<i;n++) { if(strcmp(Car[n].name,change_name)==0) { printf("\n 姓 名:%s\n 分 类:%s\n 手机号:%lld 备 注:%s\n\n",Car[n].name,Car[n].type,Car[n].phone_number,Car[n].attach); printf("确认请按1,返回请按0:"); scanf("%d",&a); if(a==0)return; else { printf("\n请输入新的分类:"); scanf("%s",new_attach); strcpy(Car[n].attach,new_attach);save(); printf("\n+修改成功+\n"); mark++;break; }
}
} if(mark==0) printf("查无此人\n按任意键返回菜单"); fclose(fp); getch();
change();
} void del() { system("cls"); int n; while(1) { printf(" —————————————\n"); printf(" 个人通讯录管理系统 \n"); printf(" 1.删除单项 \n"); printf(" 2.删除全部\n"); printf(" 0.返回\n"); printf(" —————————————\n\n"); printf("请输入您的选择:"); scanf("%d",&n); switch(n) { case 1:del1();break; case 2:del2();break; case 0:main(); } } } void del1() { system("cls"); FILE *fp; int n,j,num,i=SIZE,a,vis=-1; char del_name[20]; fp=fopen("contacts.dat","r+"); printf(" —————————————\n"); printf("请输入要删除的联系人姓名:"); scanf("%s",del_name); for(n=0;n<i;n++) { if(strcmp(Car[n].name,del_name)==0) { printf("\n 姓 名:%s\n 分 类:%s\n 手机号:%lld 备 注:%s\n\n",Car[n].name,Car[n].type,Car[n].phone_number,Car[n].attach); vis=n; break; } } for(j=0;j<i;j++) { if(Car[j].phone_number==0)break; } if(vis==-1) { printf("查无此人\n"); printf(" —————————————\n"); fclose(fp); printf("按任意键返回菜单"); getch(); del(); } else { printf("确认删除请按1,返回请按0:"); scanf("%d",&num); if(num==0)del(); else { for(n=vis;n<j;n++) { Car[n]=Car[n+1]; save(); } printf("+删除成功+\n"); fclose(fp); printf("按任意键返回菜单"); getch(); del(); }
} } void del2() { FILE *fp; int n; printf(" —————————————\n"); printf("再次确认:删除所有内容\n确认请按1,返回请按0:"); scanf("%d",&n); if(n==0)del(); else fp=fopen("contacts.dat","w"); printf("\n+删除成功+\n"); printf(" —————————————\n"); save(); fclose(fp); printf("按任意键返回菜单"); getch(); del(); } int main() { system("cls"); int a=0; while(1) { printf(" —————————————\n"); printf(" 个人通讯录管理系统 \n"); printf(" 1.录入 \n"); printf(" 2.显示 \n"); printf(" 3.查询 \n"); printf(" 4.通讯 \n"); printf(" 5.增加 \n"); printf(" 6.修改 \n"); printf(" 7.删除 \n");
printf(" 0.退出 \n"); printf(" —————————————\n\n"); printf(" 请输入您的选择:"); scanf("%d",&a); switch(a) { case 1:input();break; case 2:output();break; case 3:search();break; case 4:contact();break; case 5:insert();break; case 6:change();break; case 7:del();break; case 0:printf("\t\t\t\n"); printf("\t\t\t"); system("pause"); exit(0); } } }

//定义联系人结构体
struct Contacts_type 
{ 
    char name[20];          //姓名 
    long long phone_number; //手机号
    char type[20]; //分类
    char attach[50]; //备注
} Car[SIZE];     //声明一个联系人结构体数组