#include <stdafx.h>
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <iomanip>
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
#include<wchar.h>
using namespace std;
string intto_String(int n)
{
int m = n;
char s[100];
char ss[100];
int i=0,j=0;
if (n < 0)// 澶勭悊璐熸暟
{
m = 0 - m;
j = 1;
ss[0] = '-';
}
while (m>0)
{
s[i++] = m % 10 + '0';
m /= 10;
}
s[i] = '\0';
i = i - 1;
while (i >= 0)
{
ss[j++] = s[i--];
}
ss[j] = '\0';
return ss;
}
class Financing
{
public:
string year;
string month;
string income;
string expense;
string surplus;
void addFinance(Financing finInfo);
void deleteFinance(int delectNum);
void updateIncome(int delectNum,string money);
void updateExpense(int delectNum,string money);
};
vector<Financing> vecFinance;
void Financing::addFinance(Financing finInfo)
{
vecFinance.push_back(finInfo);
}
void Financing::deleteFinance(int delectNum)
{
vecFinance.erase(vecFinance.begin()+delectNum-1);
}
void Financing::updateIncome(int delectNum,string money)
{
//鑾峰彇鏁版嵁
//Financing finance = vecFinance[delectNum-1];
vecFinance[delectNum-1].income = money;
int num = atoi(money.c_str())-atoi(vecFinance[delectNum-1].expense.c_str());
std::string s = intto_String(num);
vecFinance[delectNum-1].surplus=s;
}
void Financing::updateExpense(int delectNum,string money)
{
vecFinance[delectNum-1].expense = money;
int num = atoi(vecFinance[delectNum-1].income.c_str())-atoi(money.c_str());
std::string s = intto_String(num);
vecFinance[delectNum-1].surplus=s;
}
//鍒濆鍖栨暟鎹?
void initData()
{
//璇诲彇鏂囦欢
ifstream infile;
infile.open("FinancingInfo.txt");
string financingData;
Financing finance;
int i=1;
//寰幆璇诲彇鍏ㄩ儴鏁版嵁
while (infile >> financingData)
{
if(i >= 6) i=1;
if(i == 1) finance.year = financingData;
if(i == 2) finance.month = financingData;
if(i == 3) finance.income = financingData;
if(i == 4) finance.expense = financingData;
if(i == 5)
{
finance.surplus= financingData;
vecFinance.push_back(finance);
}
i++;
}
infile.close();
}
void saveFile()
{
// 浠ュ啓妯″紡鎵撳紑鏂囦欢
ofstream outfile;
outfile.open("FinancingInfo.txt");
string lineData;
//閬嶅巻鏌ヨ
vector<Financing>::iterator it;
for(it = vecFinance.begin() ; it != vecFinance.end() ; it++)
{
lineData = (*it).year+" "+(*it).month+" "+(*it).income+" "+(*it).expense+" "+(*it).surplus;
outfile<<lineData<<endl;
//cout<<(*it).year<<" "<<(*it).month<<" "<<(*it).income<<" "<<(*it).expense<<" "<<(*it).surplus<<endl;
}
outfile.close();
}
//鎸夌収骞存湀浠介檷搴忔帓鍒?
void des_Order()
{
int length = vecFinance.size();
for(int i=0;i<length;i++)
{
Financing it = vecFinance.at(i);
for(int j=i+1;j<length;j++)
{
Financing itj = vecFinance.at(j);
if(atoi(it.year.c_str())<atoi(itj.year.c_str())){
Financing temp = vecFinance.at(i);
vecFinance.at(i) = vecFinance.at(j);
vecFinance.at(j) = temp;
}
if(atoi(it.year.c_str())==atoi(itj.year.c_str()))
{
if(atoi(it.month.c_str())<atoi(itj.month.c_str())){
Financing temp = vecFinance.at(i);
vecFinance.at(i) = vecFinance.at(j);
vecFinance.at(j) = temp;
}
}
}
}
}
void OperationFinance()
{
des_Order();
//閬嶅巻鏌ヨ
vector<Financing>::iterator it;
int sum=1;
cout.fill(' '); //璁剧疆濉厖鏂瑰紡涓?锛?
//cout << setw(5) << endl;//鎺у埗杈撳嚭浣嶅涓?锛屽彸瀵归綈銆?
cout.setf(ios::right); //璁剧疆瀵归綈鏂瑰紡涓簂eft
cout.width(7); //璁剧疆瀹藉害涓?锛屼笉瓒崇敤绌烘牸濉厖
cout<<setw(6)<<"琛屽簭"<<setw(6)<<"骞存暟"<<setw(6)<<"鏈堟暟"<<setw(6)<<"鏀跺叆"<<setw(6)<<"鏀嚭"<<setw(6)<<"鍓╀綑"<<endl;
for(it = vecFinance.begin() ; it != vecFinance.end() ; it++)
{
cout<<setw(6)<<sum<<setw(6)<<(*it).year<<setw(6)<<(*it).month<<setw(6)<<(*it).income<<setw(6)<<(*it).expense<<setw(6)<<(*it).surplus<<endl;
sum++;
}
}
void statisticData()
{
int length = vecFinance.size();
int incomeSum=0;
int expenseSum=0;
int sum=1;
if(length == 0) return;
cout<<setw(6)<<"骞存暟"<<setw(6)<<"鏀跺叆"<<setw(6)<<"鏀嚭"<<setw(6)<<"鍓╀綑"<<endl;
int year = atoi(vecFinance.at(0).year.c_str());
for(int i=0;i<length;i++)
{
Financing it = vecFinance.at(i);
if(year == atoi(it.year.c_str()))
{
incomeSum +=atoi(it.income.c_str());
expenseSum +=atoi(it.expense.c_str());
}
if(year!=atoi(it.year.c_str()))
{
cout <<setw(6)<<year<<setw(6)<<incomeSum<<setw(6)<<expenseSum<<setw(6)<<incomeSum-expenseSum<<endl;
year = atoi(vecFinance.at(i).year.c_str());
incomeSum=atoi(it.income.c_str());
expenseSum=atoi(it.expense.c_str());
}
}
cout <<setw(6)<<year<<setw(6)<<incomeSum<<setw(6)<<expenseSum<<setw(6)<<incomeSum-expenseSum<<endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
initData();
int flag = 1;
do
{
cout<<" 娆㈣繋浣跨敤鈥滃搴处鍔♀€濈鐞嗙郴缁?<<endl<<endl;
cout<<" 1銆佹煡鐪嬭处鐩俊鎭?<<endl;
cout<<" 2銆佹坊鍔犺处鐩俊鎭?<<endl;
cout<<" 3銆佸垹闄よ处鐩俊鎭?<<endl;
cout<<" 4銆佷慨鏀硅处鐩俊鎭?<<endl;
cout<<" 5銆佺患鍚堜俊鎭粺璁?<<endl;
cout<<" 0銆侀€€鍑衡€滃搴处鍔♀€濈鐞嗙郴缁?<<endl<<endl;
cout<<"璇疯緭鍏ユ偍鐨勬搷浣滐細";
int operation_num;
cin>>operation_num;
switch(operation_num)
{
//鏌ョ湅鏁版嵁淇℃伅锛?
case 1:
{
OperationFinance();
}
break;
//娣诲姞淇℃伅
case 2:
{
Financing data;
cout<<"鎸夋暟鎹牸寮忚緭鍏ヤ俊鎭細";
cin>>data.year>>data.month>>data.income>>data.expense;
int num = atoi(data.income.c_str())-atoi(data.expense.c_str());
std::string s = intto_String(num);
data.surplus=s;
data.addFinance(data);
}
break;
//鍒犻櫎鏁版嵁
case 3:
{
Financing data;
int delectNum;
cout<<"杈撳叆鍒犻櫎鏁版嵁鐨勫簭鍙凤細";
cin>>delectNum;
data.deleteFinance(delectNum);
}
break;
case 4:
{
Financing data;
int updateNum;
int sign;
string money;
cout <<"杈撳叆淇敼鏁版嵁鐨勫簭鍙凤細";
cin>>updateNum;
cout<<"淇敼鏀跺叆/鏀嚭锛?/1)锛?;
cin>>sign;
cout<<"璇疯緭鍏ヤ慨鏀瑰悗鐨勬暟鎹細";
cin>>money;
if(sign == 0)
{
data.updateIncome(updateNum,money);
}
else if(sign == 1)
{
data.updateExpense(updateNum,money);
}
}
break;
case 5:
{
statisticData();
}
break;
case 0:
{
flag = 0;
}
break;
}
//杩涜鏂囦欢鐨勪繚瀛樻搷浣?
saveFile();
system("pause");
system("cls");
}while(flag);
return 0;
}
fatal error C1083: Cannot open include file: 'stdafx.h': No such file or directory