#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
struct record
{
char id[10];
char name[20];
char phone[20];
char adress[40];
char postcode[10];
char e_mail[30];
}student[500];
int num=0;//å¤é¨åénum为æ件ä¸ç纪å½æ°
FILE *fp;
void mainmenu();//主èå
void newrecord();//æ°æ·»çºªå½
void searchmenu();//æ¥è¯¢èå
void searchbyid();//æå¦å·æ¥è¯¢
void searchbyname();//æå§åæ¥è¯¢
void searchbyphone();//æçµè¯æ¥è¯¢
void deletemenu();//å é¤èå
void deleteall();//å é¤ææ
void deleteone();//å é¤å个
void showall();//æ¾ç¤ºææ
void readfromfile();//读åæ件
void writetofile();//åå
¥æ件
void deletebyid();//æå¦å·å é¤
void deletebyname();//æå§åå é¤
void listbyid();//æå¦å·æåº
void listbyname();//æå§åæåº
void listmenu();//æåºèå
void main()
{
readfromfile();
while (1)
{
mainmenu();
}
}
void readfromfile()//ä»æ件导å
¥
{
if((fp=fopen("student.bin","rb"))==NULL)
{
printf("\n\t\té讯å½æ件ä¸åå¨");
if ((fp=fopen("student.bin","wb"))==NULL)
{
printf("\n\t\t建ç«å¤±è´¥");
exit(0);
}
else
{
printf("\n\t\té讯å½æ件已建ç«");
printf("\n\t\tæä»»æé®è¿å
¥ä¸»èå");
getch();
return;
}
exit(0);
}
fseek(fp,0,2); /*æ件ä½ç½®æé移å¨å°æ件æ«å°¾*/
if (ftell(fp)>0) /*æ件ä¸ä¸ºç©º*/
{
rewind(fp); /*æ件ä½ç½®æé移å¨å°æ件å¼å§ä½ç½®*/
for (num=0;!feof(fp) && fread(&student[num],sizeof(struct record),1,fp);num++);
printf("\n\t\tæ件导å
¥æå");
printf("\n\t\tæä»»æé®è¿å主èå");
getch();
return;
}
printf("\n\t\tæ件导å
¥æå");
printf("\n\t\té讯å½æ件ä¸æ ä»»ä½çºªå½");
printf("\n\t\tæä»»æé®è¿å主èå");
getch();
return;
}
void mainmenu()//主èå
{
char choic;
system("cls");
printf("\n\t\t******************** 主èå ********************");
printf("\n\t\t*********** 1-æ°æ·»çºªå½ 2-æ¥è¯¢èå ************");
printf("\n\t\t*********** 3-å é¤èå 4-è®°å½æåº ************");
printf("\n\t\t*********** 5-ä¿åéåº 6-ä¸ä¿åéåº***********");
printf("\n\t\t************************************************");
printf("\n\t\t请éæ©ï¼");
choic=getch();
switch (choic)
{
case '1':newrecord();break;
case '2':searchmenu();break;
case '3':deletemenu();break;
case '4':listmenu();break;
case '5':writetofile();break;
case '6':exit(0);
default:mainmenu();
}
}
void searchmenu()//æ¥è¯¢èå
{
char choic;
system("cls");
printf("\n\t\t******************* æ¥è¯¢èå *******************");
printf("\n\t\t********** 1-æ¾ç¤ºææ 2-æå¦å·æ¥è¯¢ ************");
printf("\n\t\t********** 3-æå§åæ¥è¯¢4-æçµè¯æ¥è¯¢ ************");
printf("\n\t\t********** 5-è¿å主èå ************");
printf("\n\t\t************************************************");
printf("\n\t\t请éæ©ï¼");
choic=getch();
switch (choic)
{
case '1':showall();break;
case '2':searchbyid();break;
case '3':searchbyname();break;
case '4':searchbyphone();break;
case '5':mainmenu();break;
}
}
void deletemenu()//å é¤èå
{
char choic;
if(num==0)
{
printf("\n\t\t对ä¸èµ·ï¼æ件ä¸æ ä»»ä½çºªå½");
printf("\n\t\tæä»»æé®è¿å主èå");
getch();
return;
}
system("cls");
printf("\n\t\t******************* å é¤èå *******************");
printf("\n\t\t*********** 1-å é¤ææ 2-å é¤å个 ***********");
printf("\n\t\t*********** 3-è¿å主èå ***********");
printf("\n\t\t************************************************");
printf("\n\t\t请éæ©ï¼");
choic=getch();
switch (choic)
{
case '1':deleteall();break;
case '2':deleteone();break;
case '3':mainmenu();break;
default:mainmenu();break;
}
}
void deleteall()//å é¤ææ
{
printf("\n\t\t确认å é¤?(y/n)");
if (getch()=='y')
{
fclose(fp);
if ((fp=fopen("student.bin","wb"))==NULL)
{
printf("\n\t\tä¸è½æå¼æ件ï¼å é¤å¤±è´¥");
readfromfile();
}
num=0;
printf("\n\t\t纪å½å·²å é¤ï¼æä»»æé®è¿å主èå");
getch();
return;
}
else
return;
}
void deletebyname()//æå§åå é¤
{
int a=0;
int findmark=0;
int j;
int deletemark=0;
int i;
char name[20];
printf("\n\t\t请è¾å
¥è¦å é¤å¦çå§åï¼");
scanf("%s",name);
for (i=a;i<num;i++)
{
if (strcmp(student[i].name,name)==NULL)
{
printf("\n\t\t以ä¸æ¯æ¨è¦å é¤çå¦ç纪å½ï¼");
findmark++;
printf("\n\t\t________________________________");
printf("\n\t\tå¦å·ï¼ %s",student[i].id);
printf("\n\t\tå§åï¼ %s",student[i].name);
printf("\n\t\tçµè¯ï¼ %s",student[i].phone);
printf("\n\t\tå°åï¼ %s",student[i].adress);
printf("\n\t\te-mailï¼%s",student[i].e_mail);
printf("\n\t\t________________________________");
printf("\n\t\tæ¯å¦å é¤?(y/n)");
if (getch()=='y')
{
for (j=i;j<num-1;j++) /*纪å½ç§»å¨ï¼ä»studæ°ç»ä¸å é¤ä¹*/
student[j]=student[j+1];
num--;
deletemark++;
printf("\n\t\tå é¤æå");
if((i+1)<num)
{
printf("\n\t\tæ¯å¦ç»§ç»å é¤ç¸åå§åçåå¦ä¿¡æ¯?(y/n)");
if (getch()=='y')
{
a=i;
continue;
}
}
printf("\n\t\tæ¯å¦ç»§ç»å é¤?(y/n)");
if (getch()=='y')
deletebyname();
return;
}
if((i+1)<num)
{
printf("\n\t\tæ¯å¦ç»§ç»å é¤ç¸åå§åçåå¦ä¿¡æ¯?(y/n)");
if (getch()=='y')
{
a=i;
continue;
}
}
}
else
continue;
}
if ((deletemark==0)&&(findmark==0))
{
printf("\n\t\t没æ该åå¦ç纪å½");
printf("\n\t\tæ¯å¦ç»§ç»å é¤?(y/n)");
if (getch()=='y')
deletebyid();
return;
return;
}
else if (findmark!=0)
{
printf("\n\t\t没æéåä¿¡æ¯");
printf("\n\t\t没æ该åå¦ç纪å½");
printf("\n\t\tæ¯å¦ç»§ç»å é¤?(y/n)");
if (getch()=='y')
deletebyid();
return;
return;
}
}
void deletebyid()//æå¦å·å é¤
{
int i,j;
int deletemark=0;
char id[20];
printf("\n\t\t请è¾å
¥è¦å é¤å¦çå¦å·ï¼");
scanf("%s",id);
if(num==0)
{
printf("\n\t\t对ä¸èµ·ï¼æ件ä¸æ ä»»ä½çºªå½");
printf("\n\t\tæä»»æé®è¿å主èå");
getch();
return;
}
for (i=0;i<num;i++)
{
if (strcmp(student[i].id,id)==NULL)
{
printf("\n\t\t以ä¸æ¯æ¨è¦å é¤çå¦ç纪å½ï¼");
printf("\n\t\tå¦å·ï¼ %s",student[i].id);
printf("\n\t\tå§åï¼ %s",student[i].name);
printf("\n\t\tçµè¯ï¼ %s",student[i].phone);
printf("\n\t\tå°åï¼ %s",student[i].adress);
printf("\n\t\te-mailï¼%s",student[i].e_mail);
printf("\n\t\tæ¯å¦å é¤?(y/n)");
if (getch()=='y')
{
for (j=i;j<num-1;j++) /*纪å½ç§»å¨ï¼ä»studæ°ç»ä¸å é¤ä¹*/
student[j]=student[j+1];
num--;
deletemark++;
printf("\n\t\tå é¤æå");
printf("\n\t\tæ¯å¦ç»§ç»å é¤?(y/n)");
if (getch()=='y')
deletebyid();
return;
}
else
return;
}
continue;
}
if (deletemark==0)
{
printf("\n\t\t没æ该åå¦ç纪å½");
printf("\n\t\tæ¯å¦ç»§ç»å é¤?(y/n)");
if (getch()=='y')
deletebyid();
return;
}
}
void newrecord()//æ·»å 纪å½
{
printf("\n\t\t**************** 请è¾å
¥å¦çä¿¡æ¯ ****************\n");
printf("\n\t\tè¾å
¥å¦å·:");
scanf("%s",&student[num].id);
printf("\n\t\tè¾å
¥å§å:");
scanf("%s",&student[num].name);
printf("\n\t\tè¾å
¥çµè¯å·ç :");
scanf("%s",&student[num].phone);
printf("\n\t\tè¾å
¥å°å:");
scanf("%s",&student[num].adress);
printf("\n\t\tè¾å
¥é®ç¼:");
scanf("%s",&student[num].postcode);
printf("\n\t\tè¾å
¥e-mail:");
scanf("%s",&student[num].e_mail);
num++;
printf("\n\t\tæ¯å¦ç»§ç»æ·»å ?(Y/N):");
if (getch()=='y')
newrecord();
return;
}
void showall()//æ¾ç¤ºææ
{
int i;
system("cls");
if(num!=0)
{
printf("\n\t\t*************** 以ä¸ä¸ºé讯å½ææä¿¡æ¯************");
for (i=0;i<num;i++)
{
printf("\n\t\tå¦å·ï¼ %s",student[i].id);
printf("\n\t\tå§åï¼ %s",student[i].name);
printf("\n\t\tçµè¯ï¼ %s",student[i].phone);
printf("\n\t\tå°åï¼ %s",student[i].adress);
printf("\n\t\té®ç¼ï¼ %s",student[i].postcode);
printf("\n\t\te-mailï¼%s",student[i].e_mail);
printf("\t\t");
if (i+1<num)
{
printf("\n\t\t__________________________");
system("pause");
}
}
printf("\n\t\t************************************************");
}
else
printf("\n\t\té讯å½ä¸æ ä»»ä½çºªå½");
printf("\n\t\tæä»»æé®è¿å主èåï¼");
getch();
return;
}
//æçµè¯æ¥è¯¢
void searchbyphone()
{
int mark=0;
int i;
int a=0;
printf("\n\t\t****************** æçµè¯æ¥æ¾ ******************");
char phone[10];
printf("\n\t\t请è¾å
¥å¦å·:");
scanf("%s",phone);
for(i=0;i<num;i++)
{
if (strcmp(student[i].phone,phone)==0)
{
printf("\n\t\t************** 以ä¸æ¯æ¨æ¥æ¾çå¦çä¿¡æ¯ **********");
printf("\n\t\tå¦å·ï¼ %s",student[i].id);
printf("\n\t\tå§åï¼ %s",student[i].name);
printf("\n\t\tçµè¯ï¼ %s",student[i].phone);
printf("\n\t\tå°åï¼ %s",student[i].adress);
printf("\n\t\te-mailï¼%s",student[i].e_mail);
printf("\n\t\t************************************************");
printf("\n\t\tæä»»æé®è¿å主èåï¼");
mark++;
getch();
return;
}
}
if (mark==0)
{
printf("\n\t\t没ææ¹å¦ççä¿¡æ¯");
printf("\n\t\tæä»»æé®è¿å主èå");
getch();
return;
}
}
void searchbyname()//æå§åæ¥è¯¢
{
int mark=0;
int i;
int a=0;
printf("\n\t\t***************** æå§åæ¥æ¾ *******************");
char name[20];
printf("\n\t\t请è¾å
¥å§å:");
scanf("%s",name);
for(i=a;i<num;i++)
{
if (strcmp(student[i].name,name)==0)
{
printf("\n\t\t************* 以ä¸æ¯æ¨æ¥æ¾çå¦çä¿¡æ¯ ***********");
printf("\n\t\tå¦å·ï¼ %s",student[i].id);
printf("\n\t\tå§åï¼ %s",student[i].name);
printf("\n\t\tçµè¯ï¼ %s",student[i].phone);
printf("\n\t\tå°åï¼ %s",student[i].adress);
printf("\n\t\te-mailï¼%s",student[i].e_mail);
printf("\n\t\t************************************************");
mark++;
if ((i+1)<num)
{
printf("\n\t\tæ¯å¦ç»§ç»æ¥æ¾ç¸åååçå¦çä¿¡æ¯ï¼(y/n)");
if (getch()=='y')
{
a=i;
continue;
}
else
return;
}
else
{
printf("\n\t\tæä»»æé®è¿å主èå");
getch();
return;
}
}
}
if(mark!=0)
{
printf("\n\t\t没æç¸åå§åçå¦ç纪å½");
printf("\n\t\tæä»»æé®è¿å主èå");
getch();
return;
}
else
{
printf("\n\t\t没æç¸åå§åçå¦ç纪å½");
printf("\n\t\tæä»»æé®è¿å主èå");
getch();
return;
}
}
void searchbyid()//æå¦å·æ¥è¯¢
{
int mark=0;
int i;
int a=0;
printf("\n\t\t****************** æå¦å·æ¥æ¾ ******************\n");
char id[10];
printf("\n\t\t请è¾å
¥å¦å·:");
scanf("%s",id);
for(i=0;i<num;i++)
{
if (strcmp(student[i].id,id)==0)
{
printf("\n\t\t************** 以ä¸æ¯æ¨æ¥æ¾çå¦çä¿¡æ¯ **********");
printf("\n\t\tå¦å·ï¼ %s",student[i].id);
printf("\n\t\tå§åï¼ %s",student[i].name);
printf("\n\t\tçµè¯ï¼ %s",student[i].phone);
printf("\n\t\tå°åï¼ %s",student[i].adress);
printf("\n\t\te-mailï¼%s",student[i].e_mail);
printf("\n\t\t************************************************");
printf("\n\t\tæä»»æé®è¿å主èåï¼");
mark++;
getch();
return;
}
}
if (mark==0)
{
printf("\n\t\t没ææ¹å¦ççä¿¡æ¯");
printf("\n\t\tæä»»æé®è¿å主èå");
getch();
return;
}
}
void writetofile()//åå
¥æ件
{
int i;
if ((fp=fopen("student.bin","wb"))==NULL)
{
printf("\n\t\tæ件æå¼å¤±è´¥");
}
for (i=0;i<num;i++)
{
if (fwrite(&student[i],sizeof(struct record),1,fp)!=1)
{
printf("\n\t\tåå
¥æ件é误!\n");
}
}
fclose(fp);
printf("\n\t\té讯å½æ件已ä¿å");
printf("\n\t\tæä»»æé®éåºç¨åº\n\t\t");
exit(0);
}
void deleteone()//å é¤å个
{
char choic;
printf("\n\t\t1-æå¦å·å é¤ 2-æå§åå é¤");
printf("\n\t\t请éæ©ï¼");
choic=getch();
switch (choic)
{
case '1':deletebyid();break;
case '2':deletebyname();break;
}
}
void listbyname()//æå§åæåº
{
int i,j;
struct record tmp;
for (i=1;i<num;i++)
{
if(strcmp(student[i].name,student[i-1].name)<0)
{
tmp=student[i];
j=i-1;
do
{
student[j+1]=student[j];
j--;
}while ((strcmp(tmp.name,student[j].name)<0&&j>=0));
student[j+1]=tmp;
}
}
printf("\n\t\tæåºæå,æ¯å¦æ¾ç¤º?(y/n)");
if (getch()=='y')
showall();
return;
}
void listbyid()//æå¦å·æåº
{
int i,j;
struct record tmp;
for (i=1;i<num;i++)
{
if(strcmp(student[i].id,student[i-1].id)<0)
{
tmp=student[i];
j=i-1;
do
{
student[j+1]=student[j];
j--;
}while ((strcmp(tmp.id,student[j].id)<0)&&j>=0);
student[j+1]=tmp;
}
}
printf("\n\t\tæåºæå,æ¯å¦æ¾ç¤º?(y/n)");
if (getch()=='y')
showall();
return;
}
void listmenu()//æåºèå
{
char choic;
if(num==0)
{
printf("\n\t\t对ä¸èµ·ï¼æ件ä¸æ ä»»ä½çºªå½");
printf("\n\t\tæä»»æé®è¿å主èå");
getch();
return;
}
system("cls");
printf("\n\t\t******************* æåºèå *******************");
printf("\n\t\t********** 1-æå¦å·æåº 2-æå§åæåº **********");
printf("\n\t\t********** 3-è¿å主èå **********");
printf("\n\t\t************************************************");
printf("\n\t\t请éæ©ï¼");
choic=getch();
switch(choic)
{
case '1':listbyid();break;
case '2':listbyname();break;
case '3':mainmenu();break;
default:mainmenu();break;
}
}
请é纳çæ¡ï¼æ¯ææä¸ä¸ã
温馨提示:答案为网友推荐,仅供参考