jasmin.d
دوشنبه 05 فروردین 1392, 14:45 عصر
سلام خسته نباشید-سال نو مبارک باشه....
کسی میتونه به من کمک کنه؟این برنامه اطلاعت یک دانشجو رو از ورودی خوانده ودر فایل میریزه وقسمت بعدی شماره رکورد مورد نظر رو گرفته و مشخصات آن رکورد را چاپ میکند میتونید کد قسمتی که بخوام کل رکورد موجود در فایل رو بخونه چاپ کنه و یه قسمت دیگه برای این که لیست رکوردها رو معکوس کنه از اول به آخر بدون اسفاده از آرایه ای از رکوردها رو بهم بگید؟ممنون
#include "stdafx.h"
#include <stdio.h>
using namespace std;
#include <iostream>
#include "stdlib.h"
struct student
{
char name[20];
char stdNum[12];
};
void menu();
void clear( char a[] )
{
for( int i = 0 ; i < sizeof(a) ; i++ )
{
a[i] = '\0';
}
}
void setRecord()
{
FILE *fp;
fp = fopen( "records.txt" , "ab" );
if( fp == NULL)
{
cout << " Error! " << endl;
cin.get();
cin.get();
exit(0);
}
student test;
clear(test.name);
clear(test.stdNum);
cout << "Please Enter Student Name: ";
cin >> test.name;
cout << endl ;
cout << "Please Enter Student Number: ";
cin >> test.stdNum;
fwrite( &test , sizeof(test) , 1 , fp );
fclose(fp);
cout << "done!" << endl;
menu();
}
void showRecords()
{
FILE *fp;
fp = fopen("records.txt" , "rb");
if( fp == NULL )
{
cout << "Error On File!" << endl;
cin.get();
cin.get();
exit(0);
}
student test;
int i = 1;
while(fread( &test , sizeof(test) , 1 , fp ))// dar in barname zakhire kole rekord hastesh.va b in form zakhire taktak fildaha:(fwirte(&test , sizeof(test.name) , 1 , fp ))
{
printf("%d-%s\t%s\n" , i , test.name , test.stdNum );
i++;
fread( &test , sizeof( test ) , 1 , fp);
}
fclose(fp);
menu();
}
void showRecordByNum()
{
cout << "Enter Number Of Record:";
int recordNum = 0 ;
cin >> recordNum;
FILE *fp;
fp = fopen("records.txt" , "rb");
if( fp == NULL )
{
cout << "Error On File!" << endl;
cin.get();
cin.get();
exit(0);
}
student test;
fseek( fp, (recordNum - 1) * sizeof(test), 0);//fseek( fp , sizeof(test) , Seek_END)
fread( &test, sizeof(test), 1, fp);
printf("%d-%s\t%s\n" , recordNum , test.name , test.stdNum );
menu();
}
void menu()
{
cout << "A) Enter Student Record" << endl;
cout << "B) Show A Record By Number" << endl;
cout << "C) Exit" << endl;
char choice = NULL;
cin >> choice;
if ( choice == 'A' )
{
setRecord();
}
if( choice == 'B' )
{
showRecordByNum();
}
if( choice == 'C' )
{
exit(0);
}
else
{
cout << "Unrecongnized!" << endl << "Try Again." << endl;
menu();
}
}
int _tmain(int argc, _TCHAR* argv[])
{
menu();
return 0;
}
کسی میتونه به من کمک کنه؟این برنامه اطلاعت یک دانشجو رو از ورودی خوانده ودر فایل میریزه وقسمت بعدی شماره رکورد مورد نظر رو گرفته و مشخصات آن رکورد را چاپ میکند میتونید کد قسمتی که بخوام کل رکورد موجود در فایل رو بخونه چاپ کنه و یه قسمت دیگه برای این که لیست رکوردها رو معکوس کنه از اول به آخر بدون اسفاده از آرایه ای از رکوردها رو بهم بگید؟ممنون
#include "stdafx.h"
#include <stdio.h>
using namespace std;
#include <iostream>
#include "stdlib.h"
struct student
{
char name[20];
char stdNum[12];
};
void menu();
void clear( char a[] )
{
for( int i = 0 ; i < sizeof(a) ; i++ )
{
a[i] = '\0';
}
}
void setRecord()
{
FILE *fp;
fp = fopen( "records.txt" , "ab" );
if( fp == NULL)
{
cout << " Error! " << endl;
cin.get();
cin.get();
exit(0);
}
student test;
clear(test.name);
clear(test.stdNum);
cout << "Please Enter Student Name: ";
cin >> test.name;
cout << endl ;
cout << "Please Enter Student Number: ";
cin >> test.stdNum;
fwrite( &test , sizeof(test) , 1 , fp );
fclose(fp);
cout << "done!" << endl;
menu();
}
void showRecords()
{
FILE *fp;
fp = fopen("records.txt" , "rb");
if( fp == NULL )
{
cout << "Error On File!" << endl;
cin.get();
cin.get();
exit(0);
}
student test;
int i = 1;
while(fread( &test , sizeof(test) , 1 , fp ))// dar in barname zakhire kole rekord hastesh.va b in form zakhire taktak fildaha:(fwirte(&test , sizeof(test.name) , 1 , fp ))
{
printf("%d-%s\t%s\n" , i , test.name , test.stdNum );
i++;
fread( &test , sizeof( test ) , 1 , fp);
}
fclose(fp);
menu();
}
void showRecordByNum()
{
cout << "Enter Number Of Record:";
int recordNum = 0 ;
cin >> recordNum;
FILE *fp;
fp = fopen("records.txt" , "rb");
if( fp == NULL )
{
cout << "Error On File!" << endl;
cin.get();
cin.get();
exit(0);
}
student test;
fseek( fp, (recordNum - 1) * sizeof(test), 0);//fseek( fp , sizeof(test) , Seek_END)
fread( &test, sizeof(test), 1, fp);
printf("%d-%s\t%s\n" , recordNum , test.name , test.stdNum );
menu();
}
void menu()
{
cout << "A) Enter Student Record" << endl;
cout << "B) Show A Record By Number" << endl;
cout << "C) Exit" << endl;
char choice = NULL;
cin >> choice;
if ( choice == 'A' )
{
setRecord();
}
if( choice == 'B' )
{
showRecordByNum();
}
if( choice == 'C' )
{
exit(0);
}
else
{
cout << "Unrecongnized!" << endl << "Try Again." << endl;
menu();
}
}
int _tmain(int argc, _TCHAR* argv[])
{
menu();
return 0;
}