error snapshot : https://rapidshare.com/files/3201989698/Capture5.JPG
code :
#include<fstream>
#include<conio.h>
#include<Windows.h>
#include<iostream>
using namespace std;
int ch_m;
HANDLE hConsole;
class budget
{
public :
float balance;
string due_name,loan_name;
int year,month;
float due_pay,loan_given;//due_pay due to be paid
budget()
{
balance=0;
month=1;
due_name="NO BODY";
loan_name="SAFE";
year=0;
balance = 0;
due_pay=0;
loan_given=0;
}
char get_data();
void show_data();
void budget_menu();
void balance_menu();
int yr()
{
return(year);
}
int mont()
{
return month;
}
};
void gotoxy(int x,int y)
{
HANDLE hConsoleOutput;
COORD dwCursorPosition;
cout.flush();
dwCursorPosition.X=x;
dwCursorPosition.Y=y;
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition
(hConsoleOutput,dwCursorPosition);
}
char budget :: get_data()
{
char ch_b;
gotoxy(5,2);
cout<<"Enter Month :";
cin>>month;
gotoxy(5,4);
cout<<"Enter year :";
cin>>year;
gotoxy(5,6);
cout<<"Enter your balance for the current month and year in Rs :";
cin>>balance;
do
{
gotoxy(6,9);
cout<<"Continue adding records?(y/n)\n";
cin>>ch_b;
}while(tolower(ch_b)!='n'&&tolower(ch_b)!='y');
return ch_b;
}
void budget :: show_data()
{
gotoxy(5,2);
cout<<"Month :"<<month;
gotoxy(5,4);
cout<<"Year :"<<year;
gotoxy(5,6);
cout<<"Your balance for the current month and year in RS :"<<balance;
_getch();
}
void budget:: budget_menu()
{
system("cls");
gotoxy(12,5);
cout<<"---------------------------------------";
gotoxy(12,6);
cout<<"Budget Menu";
gotoxy(12,7);
cout<<"---------------------------------------";
gotoxy(12,10);
cout<<"1) Balance";
gotoxy(12,12);
cout<<"2) Loan Given";
gotoxy(12,14);
cout<<"3) Due to be paid";
gotoxy(12,16);
cout<<"4) Exit";
gotoxy(14,17);
cout<<"Enter your choice\n";
cin>>ch_m;
switch(ch_m)
{
case 1:
balance_menu();
break;
default:
system("cls");
gotoxy(15,8);
cout<<"Wrong Input!!";
}
}
void write_balance()
{
system("cls");
budget b;
ofstream f1;
f1.open("balance.dat",ios::app|ios::binary);
char ch;
do{
ch = b.get_data();
f1.write((char*)&b,sizeof(b));
}while(tolower(ch)=='y');
f1.close();
}
void read_balance() //PROBLEM AFTER ENTERING THIS FUNCTION
{
system("cls");
budget b;
ifstream f1;
f1.open("balance.dat",ios::in|ios::binary);
while(f1.read((char*)&b,sizeof(b)))
{ b.show_data();
}
system("cls");
cout<<"No More Records To Display!!";
getch();
f1.close();
}
void budget :: balance_menu()
{
int ch_bm;//balance menu choice
char coni;//continue?
system("cls");
gotoxy(12,6);
cout<<"1) Add current month and year balance";
gotoxy(12,7);
cout<<"2) Modify a balance";
gotoxy(12,8);
cout<<"3) Search a balance";
gotoxy(12,9);
cout<<"4)Delete a Record";
gotoxy(12,10);
cout<<"5) Display all records";
gotoxy(12,11);
cout<<"6) Back to previous menu";
gotoxy(12,12);
cout<<"7) Exit";
gotoxy(14,15);
cout<<"Enter your choice\n";
cin>>ch_bm;
switch(ch_bm)
{
case 1 :write_balance();
break;
case 5:
read_balance();
break;
default :
system("cls");
gotoxy(15,8);
cout<<"Wrong Input!!";
}
if(ch_bm!=6)
{
system("cls");
gotoxy(15,8);
cout<<"Continue?";
cin>>coni;
if(tolower(coni)=='y')
{
balance_menu();
}
}
getch();
}
void main()
{
system("cls");
budget b;
b.budget_menu();
_getch();
}
最初にオプション 1/1 に移動してファイルを作成し、次に 1/5 に移動してコンテンツを読み取ります。ここでブレーク ポイント エラーが発生します。これまでは、読み取りと書き込みのオプションのみが含まれていました。
3週間経ちました..私はここで立ち往生しています
私は多くのことを試しました
私のコードは Turbo C++ では正常に動作しますが、vc++ では動作しません。このコードは予算のデータを保持するためのものです。問題のある関数は、コメントを使用して強調表示されます。