#include
#include
#include
#include
struct record
{char id[20];/**/
char hm[20];/**/
char xh[10];/**/
double jj;/**/
int sl;/**/
char name[10];/**/
int bz; /**/
struct record *next;};
struct record INFO[500];
int NUM;
int r;
FILE *fp;
void new_record(); //
void browse(); //
void append(); //
void delet(); //
void modi(); //
void search(); //
void cout(); //
int main()
{
int choice=1;
while(choice)
{
system("cls");
printf("\n\n");
printf("\n\t\t---------------------------\n");
printf("\n\t\t :****** ");
printf("\n\t\t V20140614 \n");
printf("\n\t\t┏━━━━━━━━━━━━━━━━━━┓");
printf("\n\t\t┃ ┃");
printf("\n\t\t┃*****************1-***********┃");
printf("\n\t\t┃*****************2-***********┃");
printf("\n\t\t┃*****************3-***********┃");
printf("\n\t\t┃*****************4-***********┃");
printf("\n\t\t┃*****************5-***********┃");
printf("\n\t\t┃*****************6-***********┃");
printf("\n\t\t┃*****************7-***********┃");
printf("\n\t\t┃*****************0-*************┃");
printf("\n\t\t┃ ┃");
printf("\n\t\t┗━━━━━━━━━━━━━━━━━━━━━┛");
printf("\n\t\t:");
scanf("%1d",choice);
if(choice!=1NUM==0)
if ((fp=fopen("INFO.dat","r"))!=NULL)
while (fread(INFO[NUM],1,sizeof(struct record),fp))
NUM++;
else {printf("");continue;}
switch (choice)
{
case 0:
exit(0);
case 1:
new_record();
break;
case 2:
browse();
break;
case 3:
append();
break;
case 4:
delet();
break;
case 5:
modi();
break;
case 6:
search();
break;
case 7:
cout();
break;
}
}
}
void new_record()
{
char c;
system("cls");
printf("\n\t\t*************************");
printf("\n\t\t:");
scanf("%s",INFO[NUM].id);
printf("\n\t\t:");
scanf("%s", INFO[NUM].hm);
printf("\n\t\t:");
scanf("%s", INFO[NUM].xh);
printf("\n\t\t:");
scanf("%lf", INFO[NUM].jj);
printf("\n\t\t:");
scanf("%d", INFO[NUM].sl);
printf("\n\t\t:");
scanf("%s", INFO[NUM].name);
printf("\n\t\t(y/n):");
getchar();
NUM++;
scanf("%c", c);
if (c == 'y')
{INFO[NUM].next=INFO[NUM+1];
new_record();}
else
INFO[NUM].next=NULL;
fp=fopen("INFO.dat","w");
fwrite(INFO,sizeof(struct record),NUM,fp);
return;
}
void browse()
{
int i,j;
int p[1000];
char cid[20];
//
for(i=0;i INFO[i].bz=1;
for(i=0;i {
for(j=0;j if(INFO[j].bz) { strcpy(cid,INFO[j].id);p[i]=j;}
for(j=0;j if(strcmp(INFO[j].id,cid)<0INFO[j].bz)p[i]=j;
INFO[p[i]].bz=0;
}
system("cls");
if (NUM != 0)
{
printf("\n\t-------------------");
printf("\n\n\t\t\t\t\t \t \t \n");
for(i = 0; i < NUM; i++)
{
printf("\t%d\t%s\t%s\t%s\t%f\t%d\t%s\n",i + 1,INFO[p[i]].id,INFO[p[i]].hm,INFO[p[i]].xh,INFO[p[i]].jj,INFO[p[i]].sl,INFO[p[i]].name);
}
getchar();
printf("\n\t\t-----------------------------------------");
}
else
printf("\n\t\t,!");
printf("\n\n\t\t :");
getchar();
return;
}
void append()
{
char c;
system("cls");
printf("\n\t\t*************************");
printf("\n\t\t:");
scanf("%s",INFO[NUM].id);
printf("\n\t\t:");
scanf("%s", INFO[NUM].hm);
printf("\n\t\t:");
scanf("%s", INFO[NUM].xh);
printf("\n\t\t:");
scanf("%lf", INFO[NUM].jj);
printf("\n\t\t:");
scanf("%d", INFO[NUM].sl);
printf("\n\t\t:");
scanf("%s", INFO[NUM].name);
printf("\n\t\t(y/n):");
getchar();
INFO[NUM-1].next=INFO[NUM];
scanf("%c", c);
if (c == 'y')
{
INFO[NUM].next=INFO[NUM+1];
new_record();}
else
INFO[NUM].next=NULL;
NUM++;
fp=fopen("INFO.dat","w");
fwrite(INFO,sizeof(struct record),NUM,fp);
return;
}
void delet()
{
char cid[20];
int i,p=0;
system("cls");
printf("\n\t\t*************************");
printf("\n\t\t:%d",NUM);
scanf("%s",cid);
for(i=0;i if(strcmp(INFO[i].id,cid)==0){p=1;break;}
if(p)
{
for(;i {strcpy(INFO[i].id,INFO[i+1].id);
strcpy(INFO[i].hm,INFO[i+1].hm);
strcpy(INFO[i].xh,INFO[i+1].xh);
INFO[i].jj=INFO[i+1].jj;
INFO[i].sl=INFO[i+1].sl;
strcpy(INFO[i].name,INFO[i+1].name);
INFO[i].next=INFO[i+1];
}
INFO[i].next=NULL;
fp=fopen("INFO.dat","w");
fwrite(INFO,sizeof(struct record),i,fp);
NUM--;
}
else printf("\n\t\t\n");
getchar();
return;
}
void modi()
{
char cid[20];
int i,p=0;
system("cls");
printf("\n\t\t*************************");
printf("\n\t\t:%d",NUM);
scanf("%s",cid);
for(i=0;i if(strcmp(INFO[i].id,cid)==0){p=1;break;}
if(p)
{
system("cls");
printf("\n\t\t*************************");
printf("\n\t\t:");
scanf("%s",INFO[i].id);
printf("\n\t\t:");
scanf("%s", INFO[i].hm);
printf("\n\t\t:");
scanf("%s", INFO[i].xh);
printf("\n\t\t:");
scanf("%lf", INFO[i].jj);
printf("\n\t\t:");
scanf("%d", INFO[i].sl);
printf("\n\t\t:");
scanf("%s", INFO[i].name);
printf("\n\t\t\n");
getchar();
fp=fopen("INFO.dat","w");
fwrite(INFO,sizeof(struct record),i,fp);
}
else printf("\n\t\t\n");
getchar();
return;
}
void search()
{
int choice=1,p=0,i;
char cid[20];
while(choice)
{
system("cls");
printf("\n\n");
printf("\n\t\t---------------------------\n");
printf("\n\t\t :****** \n");
printf("\n\t\t┏━━━━━━━━━━━━━━━┓");
printf("\n\t\t┃ ┃");
printf("\n\t\t┃***************1-***********┃");
printf("\n\t\t┃***************2-***********┃");
printf("\n\t\t┃***************3-***********┃");
printf("\n\t\t┃***************4-*********┃");
printf("\n\t\t┃***************0-*************┃");
printf("\n\t\t┃ ┃");
printf("\n\t\t┗━━━━━━━━━━━━━━━━━━━━┛");
printf("\n\t\t:");
scanf("%1d",choice);
if(choice)
{system("cls");
printf("\n\t\t*************************");
printf("\n\t\t:");
scanf("%s",cid);}
switch (choice)
{
case 0: continue;
case 1:
system("cls");
if (NUM != 0)
{
printf("\n\t-------------------");
printf("\n\n\t\t\t\t\t \t \t \n");
for(i = 0; i < NUM; i++)
{
if(strcmp(INFO[i].id,cid)==0)
printf("\t%d\t%s\t%s\t%s\t%f\t%d\t%s\n",i + 1,INFO[i].id,INFO[i].hm,INFO[i].xh,INFO[i].jj,INFO[i].sl,INFO[i].name);
}
printf("\n\t\t-----------------------------------------");
getchar();
}
break;
case 2:
system("cls");
if (NUM != 0)
{
printf("\n\t-------------------");
printf("\n\n\t\t\t\t\t \t \t \n");
for(i = 0; i < NUM; i++)
{
if(strcmp(INFO[i].hm,cid)==0)
printf("\t%d\t%s\t%s\t%s\t%f\t%d\t%s\n",i + 1,INFO[i].id,INFO[i].hm,INFO[i].xh,INFO[i].jj,INFO[i].sl,INFO[i].name);
}
printf("\n\t\t-----------------------------------------");
getchar();
}
break;
case 3:
system("cls");
if (NUM != 0)
{
printf("\n\t-------------------");
printf("\n\n\t\t\t\t\t \t \t \n");
for(i = 0; i < NUM; i++)
{
if(strcmp(INFO[i].xh,cid)==0)
printf("\t%d\t%s\t%s\t%s\t%f\t%d\t%s\n",i + 1,INFO[i].id,INFO[i].hm,INFO[i].xh,INFO[i].jj,INFO[i].sl,INFO[i].name);
}
printf("\n\t\t-----------------------------------------");
getchar();
}
break;
case 4:
system("cls");
if (NUM != 0)
{
printf("\n\t-------------------");
printf("\n\n\t\t\t\t\t \t \t \n");
for(i = 0; i < NUM; i++)
{
if(strcmp(INFO[i].name,cid)==0)
printf("\t%d\t%s\t%s\t%s\t%f\t%d\t%s\n",i + 1,INFO[i].id,INFO[i].hm,INFO[i].xh,INFO[i].jj,INFO[i].sl,INFO[i].name);
}
printf("\n\t\t-----------------------------------------");
getchar();
}
break;
default:printf("\n\t\t,!");
}
getchar();
}
}
void cout()
{
int choice=1,p=0,i;
double t=0;
char cid[20];
while(choice)
{t=0;
system("cls");
printf("\n\n");
printf("\n\t\t---------------------------\n");
printf("\n\t\t :****** \n");
printf("\n\t\t┏━━━━━━━━━━━━━━━┓");
printf("\n\t\t┃ ┃");
printf("\n\t\t┃***************1-***********┃");
printf("\n\t\t┃***************2-*********┃");
printf("\n\t\t┃***************0-*************┃");
printf("\n\t\t┃ ┃");
printf("\n\t\t┗━━━━━━━━━━━━━━━━━━━━┛");
printf("\n\t\t:");
scanf("%1d",choice);
switch (choice)
{
case 0: continue;
case 1:
system("cls");
printf("\n\t\t**********************");
printf("\n\t\t:");
scanf("%s",cid);
for(i=0;i if(strcmp(INFO[i].id,cid)==0)
{p=1;
t=t+INFO[i].jj*INFO[i].sl;
break;}
if(p)
{
printf("\n\n\t\t %s %f \n",cid,t);
}
else printf("\n\n\t\t\n");
getchar(); getchar();
break;
case 2:
system("cls");
printf("\n\t\t**********************");
printf("\n\t\t:");
scanf("%s",cid);
for(i=0;i if(strcmp(INFO[i].name,cid)==0)
{p=1;
t=t+INFO[i].jj*INFO[i].sl;
break;}
if(p)
{
printf("\n\n\t\t %s%f\n",cid,t);
}
else printf("\n\n\t\t\n");
getchar(); getchar();
break;
}
}
getchar();
}