void browse()
{
int i,n;
int load();void printf_all();void printf_one(int i);void menu();
n=load();
printf_all();
for(i=0;i<n;i++)
{
if((i!=0)&&(i%5==0))
{
printf("\n\nPress any key to continue...");
getchar();
puts("\n\n");
}
printf_one(i);
}
printf("\tThere are %d record.\n",n);
printf("\nPress any key to back...");
getchar();
menu();
}
/公共函数/
void save(int n)/**用于实现把数据读入文件中/
{
FILE fp;
int i;
if((fp=fopen("record.txt","wb"))==NULL)
{
printf("\nCannot open file\n");
}
for(i=0;i<n;i++)
if(rec[i].num!=0)/不保存该数据,即实现了删除功能/
if(fwrite(&rec[i],sizeof(struct record),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
int load()//调用加载函数
{
FILE *fp;
int i;
if((fp=fopen("record.txt","rb"))==NULL)
{
printf("\nCannot open file\n");
return 0;
}
for(i=0;!feof(fp);i++)
fread(&rec[i],sizeof(struct record),1,fp);
fclose(fp);
return(i-1);
}
struct record st;//全局声明结构体st
int name_input(int i,int n)//姓名输出函数
{
int k,s1=0;
printf("name:");
scanf("%s",st.name);
for(k=0;k<n;k++)
if(k!=i&&strcmp(rec[k].name,st.name)==0)
{
puts("This record is exist.cancel this input!\n");
s1=1;break;
}
return(s1);
}
int phnum_input(int i,int n)//电话号码输出函数
{
int j,k,w1,s2=0;
do//调运do while语句判断,跳出循环
{
w1=0;
printf("phnum:");
scanf("%s",st.phnum);
for(j=0;st.phnum[j]!='\0';j++)
if(st.phnum[j]<'0'||st.phnum[j]>'9')//电话号位数
{
puts("Input error!Only be made up of(0-9).Please reinput!\n");
w1=1;break;//电话号位数正确,w1=1,执行下一个if语句
}
if(w1!=1)
for(k=0;k<n;k++)
if(k!=i&&strcmp(rec[k].phnum,st.phnum)==0)//判断数据是否已经存在 (string compare,比较两数大小(即序号),相等为0)
{
puts("This record is exist.cancel this input!\n");
s2=1;
break;
}
}while(w1==1);
return(s2);
}
int input(int i)//输入整个记录函数
{int w1,w2,w3=0;
int name_input(int i,int n);int phnum_input(int i,int n);
st.num=i+1;
w1=name_input(i,i);//s1
w2=phnum_input(i,i);//s2
printf("group:");
scanf("%s",st.group);
printf("e_mail:");
scanf("%s",st.e_mail);
if(w1!=1&&w2!=1)
{rec[i]=st;w3=1;}
return(w3);
}
int modify_data(int i,int n)//修改整条记录函数
{
int c,w1;void printf_all();void printf_one(int i);
do
{
puts("\nmodify by =>\n\n1).name 2).phnum 3)group 4).e_mail 5).all data 6).cancel and back");
printf("Which you needed?: []\b\b");
scanf("%d",&c);
if(c<1||c>6)
{
puts("\nChoice error!Please again!");
getchar();
}
}while(c>6||c<1);
do
{
switch(c)
{
case 1:printf("name:");scanf("%s",rec[i].name);break;
case 2:printf("phnum:");scanf("%s",rec[i].phnum);break;
case 3:printf("group:");scanf("%s",rec[i].group);break;
case 4:printf("e_mail:");scanf("%s",rec[i].e_mail);break;
case 5:input(i);break;
}
puts("\nNow:\n");
printf_all();
printf_one(i);
printf("\nAre you sure?\n\n\t1).Sure 2).No and remodify 3).Back without save in this time []\b\b");
scanf("%d",&w1);
}while(w1==2);
return(w1);
}
void printf_all()//显示数据结构项目函数
{
printf("\n\tnum\tname\tphnum\tgroup\t\te_mail\n\n");
}
void printf_one(int i)//显示一个记录函数
{
printf("\t%d %s %s %s %20s\n",rec[i].num,rec[i].name,rec[i].phnum,rec[i].group,rec[i].e_mail);
}
void printf_back() //一个任务结束后显示返回还是浏览的函数
{
int w;
void browse();
printf("\n\n\tSuccessful.\n\n");
printf("What do you want to do?\n\n\t1).Browse all now\t2).Back: []\b\b");
scanf("%d",&w);
if(w==1) browse();
else menu();
}