⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cfile.cpp

📁 AA制消费管理系统 要深入学习C++面向对象编程的同学可以看看。
💻 CPP
字号:
#include "CFile.h"
#include "CAccManager.h"
#include <ctype.h>
#include <windows.h>
#include <stdio.h> 
#include <string>
#include <iostream>

#include <fstream>

using namespace std;


extern CAccManager acc_admin;


bool CFile::saveToFile()
{
	


	int acc_num = acc_admin.getCount();
	int acc_useNum =acc_admin.getUseAbleCount();

	ofstream outToFile;
	//remove(m_strFileName.c_str());
	outToFile.open(m_strFileName.c_str(),ios::out|ios::binary);

	if(!outToFile)
	{
		cout<<"sorry! can not creat file"<<endl;
		system("pause");
		return false;
		
	}
	else
	{
		CAccount *p;
		outToFile.write( (char*)&acc_num, sizeof(int)   );
		outToFile.write( (char*)&acc_useNum, sizeof(int)   );
		for(p=( acc_admin.getVeAcc().begin() );p!=(   acc_admin.getVeAcc().end()  );p++)
		{
				int len;
				bool temp_flag=p->GetAccFlags();
				double temp_balance=p->GetBalance();
				len=p->GetName().size();
				outToFile.write( (char*)(&len),sizeof(int)     );
				outToFile.write( p->GetName().c_str(),  len);
				len=p->GetSex().size();
				outToFile.write(  (char*)(&len), sizeof(int)                       );
				outToFile.write(  p->GetSex().c_str(),len);
				len=p->GetPhone().size();
				outToFile.write(  (char*)(&len), sizeof(int)                       );
				outToFile.write(  p->GetPhone().c_str(),len);
				len=p->GetBirthday().size();
				outToFile.write(  (char*)(&len), sizeof(int)                       );
				outToFile.write(  p->GetBirthday().c_str(),len);
				outToFile.write(   (char*)(&temp_flag) ,sizeof(bool)      );
				outToFile.write(   (char*) (&temp_balance),sizeof(double)     );

		}

		
		CAddMoneyInfo *p1;
		int addinfo_num = acc_admin.getCount1();
		outToFile.write( (char*)&addinfo_num, sizeof(int)   );
		for(p1=( acc_admin.getVeAddMoneyInfo().begin() );p1!=(   acc_admin.getVeAddMoneyInfo().end()  );p1++)
		{
				int len;

				double temp_money=p1->getMoney();
				len=p1->getName().size();
				outToFile.write( (char*)(&len),sizeof(int)     );
				outToFile.write( p1->getName().c_str(),  len);

				len=p1->getDate().size();
				outToFile.write(  (char*)(&len), sizeof(int)                       );
				outToFile.write(  p1->getDate().c_str(),len);
				len=p1->getExplain().size();
				outToFile.write(  (char*)(&len), sizeof(int)                       );
				outToFile.write(  p1->getExplain().c_str(),len);

				outToFile.write(   (char*) (&temp_money),sizeof(double)     ); 	
		}

		int consuminfo_num = acc_admin.getCount2();
		CConsumInfo *p2;
		outToFile.write( (char*)&consuminfo_num, sizeof(int)   );
		for(p2=( acc_admin.getVeConsumInfo().begin() );p2!=(   acc_admin.getVeConsumInfo().end()  );p2++)
		{
				int len;
				int temp_consumNum = p2->getConsumTotalNum();
				
				double temp_amount = p2->getAmount();
				len=p2->getDate().size();
				outToFile.write( (char*)(&len),sizeof(int)     );
				outToFile.write( p2->getDate().c_str(),  len);

				len=p2->getConsumId().size();
				outToFile.write(  (char*)(&len), sizeof(int)                       );
				outToFile.write(  p2->getConsumId().c_str(),len);
				len=p2->getExplain().size();
				outToFile.write(  (char*)(&len), sizeof(int)                       );
				outToFile.write(  p2->getExplain().c_str(),len);

				outToFile.write(   (char*) &temp_amount,sizeof(double)     );
				outToFile.write(   (char*) &temp_consumNum,sizeof(int)    );					



		}


	outToFile.close();		
	
	}
	return true;

}
/////////////////////////////////////////////////////
bool CFile::loadFromFile()
{

	ifstream inFile;
	inFile.open(m_strFileName.c_str(),ios::in|ios::binary);
	if(!inFile)
	{
		cout<<"can not open file"<<endl;
		cout<<"please choose 7 from mainmenu to restore the data!"<<endl;
		system("pause");
		return false;
		
	}
	else
	{
		

		int acc_count = 0;
		int acc_num = 0;
		int acc_useNum = 0;
		inFile.read( (char*)&acc_num, sizeof(int)   );
		inFile.read( (char*)&acc_useNum, sizeof(int)   );
		acc_admin.getVeAcc().clear();
		
	
		acc_admin.setCount(acc_count);
		for(int i = 0;i<acc_num;i++)
		{
		

			CAccount acc_temp;
			int len = 0;
			char temp_name[512];
			char temp_sex[512];
			char temp_birthday[512];	
			char temp_phone[512];
			double temp_balance;
			bool temp_flag;
		
			inFile.read( (char*)&len, sizeof(int)   );
			inFile.read( temp_name ,   len     );
			temp_name[len]='\0';
			inFile.read(  (char*)&len,sizeof(int)    );
			inFile.read(   temp_sex,    len    );
			temp_sex[len]='\0';
			inFile.read(  (char*)&len,sizeof(int)    );
			inFile.read(   temp_phone,    len    );
			temp_phone[len]='\0';
			inFile.read(  (char*)&len,sizeof(int)    );
			inFile.read(   temp_birthday,    len    );
			temp_birthday[len]='\0';
			inFile.read(   (char*)&temp_flag,  sizeof(bool) );
			inFile.read(   (char*)&temp_balance,sizeof(double));

			acc_temp.SetName(temp_name);
			acc_temp.SetSex(temp_sex);
			acc_temp.SetPhone(temp_phone);
			acc_temp.SetBirthday(temp_birthday);
			acc_temp.SetAccFlags(temp_flag);
			acc_temp.SetBalance(temp_balance);
			acc_admin.addToVector(acc_temp);
		
		}
		acc_admin.setUseAbleCount(acc_useNum);


		int add_count = 0;
		int add_num =0;
		inFile.read( (char*) &add_num, sizeof(int)  );
		acc_admin.getVeAddMoneyInfo().clear();
		acc_admin.setCount1(add_count);
		for( int i1 = 0;i1<add_num;i1++)
		{
			CAddMoneyInfo addMoney_temp;
			int len = 0;
			char temp_name[512];
			char temp_date[512];
			char temp_explain[512];
			double temp_money;

			inFile.read( (char*)&len, sizeof(int)   );
			inFile.read( temp_name ,   len     );
			temp_name[len]='\0';
			inFile.read(  (char*)&len,sizeof(int)    );
			inFile.read(   temp_date,    len    );
			temp_date[len]='\0';
			inFile.read(  (char*)&len,sizeof(int)    );
			inFile.read(   temp_explain,    len    );
			temp_explain[len]='\0';
			inFile.read(   (char*)&temp_money,sizeof(double));
			addMoney_temp.setName(temp_name);
			addMoney_temp.setDate(temp_date);
			addMoney_temp.setExplain(temp_explain);
			addMoney_temp.setMoney(temp_money);
			acc_admin.addToInfoVector(addMoney_temp);
		}



		int consum_count = 0;
		int consum_num = 0;
		inFile.read( (char*) &consum_num, sizeof(int) );
		acc_admin.getVeConsumInfo().clear();
		acc_admin.setCount2(consum_count);
		for(int i2 = 0;i2<consum_num;i2++)
		{
			CConsumInfo consum_temp;
			int len = 0;
			char temp_date[512];
			char temp_consumid[512];
			char temp_explain[512];
			int temp_consumTotalNum = 0;
			double temp_amount = 0.0;
			inFile.read( (char*)&len, sizeof(int)   );
			inFile.read( temp_date ,   len     );
			temp_date[len]='\0';
			inFile.read(  (char*)&len,sizeof(int)    );
			inFile.read(   temp_consumid,    len    );
			temp_consumid[len]='\0';
			inFile.read(  (char*)&len,sizeof(int)    );
			inFile.read(   temp_explain,    len    );
			temp_explain[len]='\0';

			inFile.read(   (char*)&temp_amount,sizeof(double));
			inFile.read(  (char*)&temp_consumTotalNum,sizeof(int)   );

			consum_temp.setDate(temp_date);
			consum_temp.setExplain(temp_explain);
			consum_temp.setAmount(temp_amount);
			consum_temp.setConsumTotalNum(temp_consumTotalNum);
			consum_temp.setConsumId(temp_consumid);
			acc_admin.addToConsumVectoor(consum_temp);

		}

		inFile.close();
	}
	return true;

}
//////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////






CFile::CFile()
{

	m_strFileName="default_data.dat";






}
/////////////////////////////////////////////////////
CFile::~CFile()
{





}
/////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////
string & CFile::GetFileName()
{

	return m_strFileName;

}
void CFile::setFileName(string _filename )
{

	m_strFileName = _filename;
}
/////////////////////////////////////////////////////////////////////////////////
string &CFile::makeFileName()
{

	    SYSTEMTIME sys; 

        GetLocalTime( &sys );
		static string fileName;
		fileName="";
	
		char temp_year[10];
		char temp_month[10];
		char temp_day[10];
		char temp_hour[10];
		char temp_min[10];
		char temp_second[10];
		itoa(sys.wYear,temp_year,10);
		itoa(sys.wMonth,temp_month,10);
		itoa(sys.wDay,temp_day,10);
		itoa(sys.wHour,temp_hour,10);
		itoa(sys.wMinute,temp_min,10);
		itoa(sys.wSecond,temp_second,10);
		
		
		fileName+=temp_year;
		fileName+='-';
		fileName+=temp_month;
		fileName+='-';
		fileName+=temp_day;
		fileName+='_';
		fileName+=temp_hour;
		fileName+='-';
		fileName+=temp_min;
		fileName+='-';
		fileName+=temp_second;
		fileName+=".bak";

		return fileName;




	
}
//////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////
bool  CFile::backUpData(string str_path)
{
	string path_filename;
	path_filename+=str_path;
	path_filename+=makeFileName();
	setFileName( path_filename );
	if(saveToFile()==false)
	{
		return false;
	}
	return true;
}

//////////////////////////////////////////////////////////////////////////
bool CFile::restoreData(string str_path)
{
	setFileName(str_path);
	if(loadFromFile()==false )
	{
		return false;
	}
	return true;
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -