سلا احتمالا" این سورسش از یه جا گیر اوردم خودم روش فکر نکردم اما این کارو میکنم ببین به دردت میخوره تا یه جاهای نگاه کردم درست بود
include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include <io.h>
void add(void);
void search(void);
void list(void);
void delet(void);
void change(void);
void sort(void);
int i,j;
struct r {
char fam[20];
char nam[20];
char tel_no[10];
char adres[50];
}rec;
struct rs {
char fams[20];
char nams[20];
char tel_nos[10];
char adress[50];
}rec_s[100];
FILE *fp;
main()
{
int a,b;
char c='0',ch;
while(c!='7')
{
clrscr();
textcolor(3);
printf(" \n\n in the name of allah ");
printf("\n\n 1 . add");
printf("\n\n 2 . sort");
printf("\n\n 3 . search");
printf("\n\n 4 . change");
printf("\n\n 5 . delete");
printf("\n\n 6 . list");
printf("\n\n 7 . exit");
c=getch();
switch (c)
{
case '1':
add();
break;
case '2':
sort();
break;
case '3':
search();
break;
case '4':
change();
break;
case '5':
delet();
break;
case '6':
list();
break;
case '7':
exit(0);
break;
}
}
return 0;
}
/******************************* PROCEDURE ADD ******************************/
void add(void)
{
int i,j,n;
clrscr();
fp=fopen("tel.dat","a+");
printf("\n");
printf(" what record : ");
scanf("%i",&n);
for(i=0;i<n;i++)
{
printf("\n family %i :",i+1);
scanf("%s",&rec.fam);
printf("\n name %i :",i+1);
scanf("%s",&rec.nam);
printf("\n no telephon %i :",i+1);
scanf("%s",&rec.tel_no);
printf("\n adress %i :",i+1);
scanf("%s",&rec.adres);
fwrite(&rec,sizeof(r),1,fp);
}
fclose(fp);
getch();
return;
}
//************************** PROCEDURE LIST ********************************/
void list(void)
{
int i=5;
clrscr();
gotoxy(1,2);
printf("\n family name tel_no adress");
printf("\n**************************************** *******************************");
fp=fopen("tel.dat","r");
fread(&rec,sizeof(r),1,fp);
while (!feof(fp))
{
gotoxy(5,i);
printf(" %s",rec.fam);
gotoxy(25,i);
printf(" %s",rec.nam);
gotoxy(45,i);
printf(" %s",rec.tel_no);
gotoxy(62,i);
printf(" %s",rec.adres);
i+=2;
fread(&rec,sizeof(r),1,fp);
}
fclose(fp);
getch();
}
//************************* PROCEDURE SEARCH ********************************/
void search()
{
int ptr;
char m[20];
int i=6,d=1;
clrscr();
gotoxy(1,2);
printf("enter family for search :");
scanf("%s",&m);
gotoxy(2,4);
printf("\n family name tel_no adress");
printf("\n**************************************** *******************************");
fp=fopen("tel.dat","r");
fread(&rec,sizeof(r),1,fp);
while (!feof(fp))
{
ptr=strcmp(m,rec.fam);
if (ptr==0)
{
d=0;
gotoxy(5,i);
printf(" %s",rec.fam);
gotoxy(25,i);
printf(" %s",rec.nam);
gotoxy(45,i);
printf(" %s",rec.tel_no);
gotoxy(62,i);
printf(" %s",rec.adres);
i+=2;
}
fread(&rec,sizeof(r),1,fp);
}
fclose(fp);
if (d==1)
{
gotoxy(10,10);
printf("not found");
}
getch();
}
/*******************************end serach***********************************/
void change()
{
char m[20];
int i=7,d=1,b=0;
clrscr();
gotoxy(1,2);
printf("enter family for change :");
scanf("%s",&m);
gotoxy(2,4);
printf("\n name family tell adress");
printf("\n ************************************************** ****************");
fp=fopen("tel.dat","r+");
fread(&rec,sizeof(r),1,fp);
while (!feof(fp))
{
b++;
if(strcmp(m,rec.fam)==0)
{
d=0;
gotoxy(4,i);
printf(" %s",rec.nam);
gotoxy(21,i);
printf(" %s",rec.fam);
gotoxy(38,i);
printf(" %s",rec.tel_no);
gotoxy(60,i);
printf(" %s",rec.adres);
i+=1;
fseek(fp,(b-1)*sizeof(r),SEEK_SET);
gotoxy(19,10);
printf(" new data :\n");
gotoxy(1,12);
printf("name :");
scanf("%s",&rec.nam);
gotoxy(20,12);
printf("family :");
scanf(" %s",&rec.fam);
gotoxy(40,12);
printf("tel :");
scanf(" %s",&rec.tel_no);
gotoxy(60,12);
printf("adress :");
scanf(" %s",&rec.adres);
fwrite(&rec,sizeof(r),1,fp);
break;
}
fread(&rec,sizeof(r),1,fp);
}
fclose(fp);
}
/**************************end change****************************************/
void delet()
{
FILE *t;
int ptr,d,s;
char m[20],x;
int i=6,b=1;
clrscr();
gotoxy(1,2);
printf("enter family for del :");
scanf("%s",&m);
gotoxy(2,4);
printf("\n family name tel_no adress");
printf("\n**************************************** *******************************");
fp=fopen("tel.dat","r");
t=fopen("tel1.dat","w+");
d=filelength(fileno(fp))/sizeof(r);
for (s=0;s<d;s++)
{
fread(&rec,sizeof(r),1,fp);
ptr=strcmp(m,rec.fam);
if (ptr==0)
{
b=0;
gotoxy(5,i);
printf(" %s",rec.fam);
gotoxy(25,i);
printf(" %s",rec.nam);
gotoxy(45,i);
printf(" %s",rec.tel_no);
gotoxy(62,i);
printf(" %s",rec.adres);
i+=2;
printf("\nfor del (Y,N) :");
x=getche();
if ((x=='y') || (x=='Y'))
continue;
}
fwrite(&rec,sizeof(r),1,t);
}
fclose(fp);
fclose(t);
if (b==1)
{
gotoxy(10,10);
printf("not found");
}
if (remove("tel.dat")== 0)
rename("tel1.dat","tel.dat");
getch();
}
/************************end del**********************************************/
void sort()
{
/* int ptr;
char m[20];
int i=6,d=1;*/
int i=0;
while (!feof(fp))
{
fread(&rec,sizeof(r),1,fp);
strcpy(rec_s.fams,rec.fam);
strcpy(rec_s.nams,rec.nam);
strcpy(rec_s.tel_nos,rec.tel_no);
strcpy(rec_s[i++].adress,rec.adres);
}