ورود

نسخه کامل مشاهده نسخه کامل : يه سوال



ppp1486
29-05-2009, 21:29
هيچ كس ميتونه اين برنامه c رو به ++c تبديل كنه برنامه فايلي هست در مورد تبديل فايلها فقط كمك كنيد
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream.h>
#include<string.h>
typedef struct {
char na[10];
char fa[15];
long stno;
float ave;
}student;
void add()
{
char *s;
student stu;
FILE *fp;
fp=fopen("stu.dat","a");
if(!fp)
{
cout<<"\n can not open file ";
getch();
exit(0);
}
cout<<"\n enter a name ";
gets(stu.na);
cout<<"\n enter a famil ";
gets(stu.fa);
cout<<"\n enter a stno ";
gets(s);
stu.stno=atol(s);
cout<<"\n enter a ave ";
gets(s);
stu.ave=atof(s);
fwrite(&stu,sizeof(student),1,fp);
fclose(fp);
}
//*****************
void list()
{
student stu;
FILE *fp;
fp=fopen("stu.dat","r");
if(!fp)
{
cout<<"\n can not open file ";
getch();
exit(0);
}
fread(&stu,sizeof(student),1,fp);
while(!feof(fp))
{
cout<<"\n ";
cout<<stu.na<<" ";
cout<<stu.fa<<" ";
cout<<stu.stno<<" ";
cout<<stu.ave<<" ";
fread(&stu,sizeof(student),1,fp);
}
fclose(fp);
}
//*********************
void sort()
{
student stu[100],temp;
int i,j,k=0;
FILE *fp;
fp=fopen("stu.dat","r+");
if(!fp)
{
cout<<"\n can not open file ";
getch();
exit(0);
}
fread(stu+k,sizeof(student),1,fp);
while(!feof(fp))
{
k++;
fread(stu+k,sizeof(student),1,fp);
}
for(i=0;i<k;i++)
for(j=i+1;j<k;j++)
if(strcmpi(stu[i].fa,stu[j].fa)>0)
{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
rewind(fp);
fwrite(stu,sizeof(student),k,fp);
fclose(fp);
}
//**********************
void del()
{
char *s;
student stu[100],temp;
int flag=0,k=0;
long stno;
FILE *fp;
fp=fopen("stu.dat","r");
if(!fp)
{
cout<<"\n can not open file ";
getch();
exit(0);
}
cout<<"\n enter a stno for del ";
gets(s);
stno=atol(s);
fread(&temp,sizeof(student),1,fp);
while(!feof(fp))
{
if(temp.stno==stno)
flag=1;
else
stu[k++]=temp;
fread(&temp,sizeof(student),1,fp);
}
fclose(fp);
if(flag==0)
cout<<"\n not found ";
fp=fopen("stu.dat","w");
if(!fp)
{
cout<<"\n can not open file ";
getch();
exit(0);
}
fwrite(stu,sizeof(student),k,fp);
fclose(fp);
}
//*********************
void update()
{
char *s;
student stu[100],temp;
int flag=0,k=0;
long stno;
FILE *fp;
fp=fopen("stu.dat","r+");
if(!fp)
{
cout<<"\n can not open file ";
getch();
exit(0);
}
cout<<"\n enter a stno for update ";
gets(s);
stno=atol(s);
fread(&temp,sizeof(student),1,fp);
while(!feof(fp))
{
if(temp.stno==stno)
{
flag=1;
cout<<"\n enter a new stno ";
gets(s);
temp.stno=atol(s);
}
stu[k++]=temp;
fread(&temp,sizeof(student),1,fp);
}
rewind(fp);
if(flag==0)
cout<<"\n not found ";

fwrite(stu,sizeof(student),k,fp);
fclose(fp);
}
//********************
void main()
{
clrscr();
char ch;
while(1)
{
cout<<"\n enter a for add s for";
cout<<"\n sort l for list u for update d for del";
ch=getche();
switch(ch)
{
case 'a':
case'A':
add();
list();
break;
case 'l':
case'L':
list();
break;
case 'd':
case'D':
del();
list();
break;
case 's':
case'S':
sort();
list();
break;
case 'u':
case'U':
update();
list();
break;
}
cout<<" Do you continue? n for no ";
ch=getche();
cout<<"\n";
if(ch=='n' || ch=='N')
break;
}
getch();
}

warmaster
29-05-2009, 23:30
تویه cpp دیگه لازم نیست فایل تعریف کنی

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
به عنوان مثال دستور read در بالا میاد به اندازه ی struct student از تو فایل می خونه و میریزه تو متغیر stu که از نوع struct studen تعریف شده