PDA

View Full Version : سوال: پروژه آژانس با visual c++



a-t-e-f-e-h
دوشنبه 14 فروردین 1391, 22:24 عصر
سلام
ببخشید ممکنه برای رفع اشکال این برنامه کمکم کنید
باید پروژه آژانس رو بنویسم(visual c++)
تا اینجا من کدی نوشتم که اطلاعات راننده رو save ,show,searchکنه ، ولی نمیدونم چرا در قسمت searchفقط اطلاعات اولین شماره ماشین رو پیدا میکنه و نفرات بعدی رو search نمیکنه
ممکنه راهنماییم کنید که مشکل این برنامه کجاست؟؟


#include<fstream>
#include<iostream>
#include<conio.h>
using namespace std;
void save();
//void delet();
void search();
//void edit();
void show();
struct driver
{
char fname[20];
char lname[20];
int codemelli;
int carnum;
};
int main()
{
system("cls");
int x;
while(1)
{
system("cls");
system ("color 1a");
cout<<"(1) SAVE DRIVER INFORMATION:"<<"\n" ;
cout<<"(2) DELETE DRIVER INFORMATION:"<<"\n" ;
cout<<"(3) SEARCH DRIVER INFORMATION:"<<"\n" ;
cout<<"(4) EDIT DRIVER INFORMATION:"<<"\n" ;
cout<<"(5) SHOW "<<"\n" ;
cout<<"(6) EXIT "<<"\n" ;
cout<<"\n\n\n";
cout<<"ENTER YOUR SELECTION(1_6):";
cin>>x;
switch(x)
{
case 1:
save();
break;
/* case 2:
delet();
break;*/
case 3:
search();
break;
/*case 4:
edit();
break;*/
case 5:
show();
break;
case 6:
exit(0);

default:
system("cls");
cout<<"enter a value number:";
_getch();
}
}
return 0;
}
//.................................................. ..........................
void save()
{
system("cls");
system("color 4d");
driver d;
int n;
ofstream file("a.dat",ios::binary|ios::app);
if(!file)
{
cout<<"CAN NOT OPEN THE FILE.";
getch();
return;
}
cout<<"ENTER NUMBER OF DRIVER:";
cin>>n;
for(int i=0;i<n;i++)
{
cout<<"ENTER DRIVER FNAME :\n";
cin>>d.fname;
cout<<"ENTER DRIVER LNAME :\n";
cin>>d.lname;
cout<<"ENTER CAR NUMBER :\n";
cin>>d.carnum;
cout<<"ENTER CODE MELLI :\n";
cin>>d.codemelli;
cout<<"\n\n";
file.write((char*)&d,sizeof(driver));
}
file.close();
getch();
}
//.................................................. ...............................
void show()
{
system("cls");
system("color 0f");
driver d;
ifstream file("a.dat",ios::binary|ios::in);
if(!file)
{
cout<<"can not open the file.\n";
getch();
return;
}

file.read((char*)&d,sizeof(driver));
while(!file.eof())
{

cout<<"**************************************\n";
cout<<d.fname<<" || "<<d.lname<<" || "<<d.carnum<<" || "<<d.codemelli<<"\n**************************************\n\n";
file.read((char*)&d,sizeof(driver));
}
file.close();
getch();
}
//.................................................. ..................................
void search()
{
system("cls");
system("color 1a");
driver d;
int number;
fstream file("a.dat",ios::in|ios::out|ios::binary);
if(!file)
{
cout<<"CAN NOT OPEN THE FILE.";
getch();
return;
}
cout<<"PLEASE ENTER CAR NUMBER FOR SEARCH:\n";
cin>>number;
file.read((char *)&d,sizeof(driver));
while(!file.eof())
{
if(d.carnum==number)
{
cout<<d.fname<<"\n"<<d.lname<<"\n"<<d.carnum<<"\n"<<d.codemelli<<endl;
file.read((char *)&d,sizeof(driver));
break;
}
else
{
cout<<"SORRY NOT FOUND.";
break;
}
}
getch();
file.close();
}
//.................................................. ....................

pe32_64
سه شنبه 15 فروردین 1391, 23:29 عصر
// drivers.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include<fstream>
#include<iostream>
#include<conio.h>
#include <windows.h>
using namespace std;
void save();
//void delet();
void search();
//void edit();
void show();
struct driver
{
char fname[20];
char lname[20];
int codemelli;
int carnum;
};
int main()
{
system("cls");

int x;
while(1)
{
system("cls");
system ("color 1a");
cout<<"(1) SAVE DRIVER INFORMATION:"<<"\n" ;
cout<<"(2) DELETE DRIVER INFORMATION:"<<"\n" ;
cout<<"(3) SEARCH DRIVER INFORMATION:"<<"\n" ;
cout<<"(4) EDIT DRIVER INFORMATION:"<<"\n" ;
cout<<"(5) SHOW "<<"\n" ;
cout<<"(6) EXIT "<<"\n" ;
cout<<"\n\n\n";
cout<<"ENTER YOUR SELECTION(1_6):";
cin>>x;
switch(x)
{
case 1:
save();
break;
/* case 2:
delet();
break;*/
case 3:
search();
break;
/*case 4:
edit();
break;*/
case 5:
show();
break;
case 6:
exit(0);

default:
system("cls");
cout<<"enter a value number:";
_getch();
}
}
return 0;
}
//.................................................. ..........................
void save()
{
system("cls");
system("color 4d");
driver d;
int n;
ofstream file("a.dat",ios::binary|ios::app);
if(!file)
{
cout<<"CAN NOT OPEN THE FILE.";
getch();
return;
}
cout<<"ENTER NUMBER OF DRIVER:";
cin>>n;
for(int i=0;i<n;i++)
{
cout<<"ENTER DRIVER FNAME :\n";
cin>>d.fname;
cout<<"ENTER DRIVER LNAME :\n";
cin>>d.lname;
cout<<"ENTER CAR NUMBER :\n";
cin>>d.carnum;
cout<<"ENTER CODE MELLI :\n";
cin>>d.codemelli;
cout<<"\n\n";
file.write((char*)&d,sizeof(driver));
SecureZeroMemory(&d,sizeof(d));
}
file.close();
getch();
}
//.................................................. ...............................
void show()
{
system("cls");
system("color 0f");
driver d;
ifstream file("a.dat",ios::binary|ios::in);
if(!file)
{
cout<<"can not open the file.\n";
getch();
return;
}
SecureZeroMemory(&d,sizeof(d));
file.read((char*)&d,sizeof(driver));
while(!file.eof())
{

cout<<"**************************************\n";
cout<<d.fname<<" || "<<d.lname<<" || "<<d.carnum<<" || "<<d.codemelli<<"\n******************************* *******\n\n";
SecureZeroMemory(&d,sizeof(d));
file.read((char*)&d,sizeof(driver));
}
file.close();
getch();
}
//.................................................. ..................................
void search()
{
system("cls");
system("color 1a");
driver d;
int number,fFound = 0;
fstream file("a.dat",ios::in| ios::binary);
if(!file)
{
cout<<"CAN NOT OPEN THE FILE.";
getch();
return;
}
cout<<"PLEASE ENTER CAR NUMBER FOR SEARCH:\n"\n"";
cin>>number;
do
{
SecureZeroMemory(&d,sizeof(d));
file.read((char *)&d,sizeof(driver));
if(d.carnum==number)
{
cout<<d.fname<<"\n"<<d.lname<<"\n"<<d.carnum<<"\n"<<d.codemelli<<"\n\n\n"<<endl;
fFound = 1;
continue;
}
if(!fFound)
{
cout<<"SORRY NOT FOUND.";
break;
}

}while(!file.eof());

getch();
file.close();
}

مشکل حل شد؟

a-t-e-f-e-h
چهارشنبه 16 فروردین 1391, 12:52 عصر
نه متاسفانه
باز هم فقط اولی رو پیدا میکنه
برای بقیه اینو اجرا میکنه

cout<<"SORRY NOT FOUND.";
واسه همین بازم بقیه رو پیدا نمیکنه
با این وجود برای اینکه وقت گذاشتید ممنونم

pe32_64
چهارشنبه 16 فروردین 1391, 14:36 عصر
تصحیح شد.

void search()
{
system("cls");
system("color 1a");
driver d;
int number,fFound = 0;
fstream file("a.dat",ios::in| ios::binary);
if(!file)
{
cout<<"CAN NOT OPEN THE FILE.";
getch();
return;
}
cout<<"PLEASE ENTER CAR NUMBER FOR SEARCH:\n";
cin>>number;
do
{
SecureZeroMemory(&d,sizeof(d));
file.read((char *)&d,sizeof(driver));
if(d.carnum==number)
{
cout<<d.fname<<"\n"<<d.lname<<"\n"<<d.carnum<<"\n"<<d.codemelli<<"\n\n\n"<<endl;
fFound = 1;
continue;
}
}while(!file.eof());
if(!fFound)
cout<<"SORRY NOT FOUND.";
getch();
file.close();
}

a-t-e-f-e-h
پنج شنبه 17 فروردین 1391, 17:51 عصر
سلام
بله درست شد
خیلی از لطفتون ممنونم
میتونم بپرسم این عبارت برای چی استفاده میشه؟؟
SecureZeroMemory(&d,sizeof(d));
اولین باره میبینم

pe32_64
جمعه 18 فروردین 1391, 18:49 عصر
این کار یک عادت خوبه:
این تابع می تونه حافظه رو تمییز کنه (با صفر کردن) که باعث میشه کمتر دچار اشکال بشین و خطا یابی رو آسونتر می کنه. تازه اگه اطلاعات حساس باشه ،برا امنیت باید انجام شه.
تو برنامه حافظه ی ساختارd تمییز شده، برای پر شدن مجدد.
اطلاعات بیشتر در مورد استفاده تابع:http://msdn.microsoft.com/en-us/library/windows/desktop/aa366877%28v=vs.85%29.aspx