外币兑换系统(某专业大作业)

外币兑换系统(某专业大作业),第1张

    鉴于大作业中其他两项任务——无符号计算器、职工管理系统,都能直接搜索到。这里单独整理一下外币兑换系统作业。
    本次作业只针对完成大作业的基本要求,没有过多的模块优化。只有基本的输入输出防莽夫代码。
    首先看一下要求。


整体来讲难度不高,明眼问题主要突出在如何自己写一个上网查找汇率的模块。这个模块单独放在inquire.cpp文件中。下面是函数逻辑的程序框图。

1、有“菜单”标注的,只是提供界面的函数,提供基本的界面输出;
2、“choice”字样的为为用户提供输入输出环境、货币兑换方式,货币种类的函数;
3、“exchange”字样的函数为汇率结算所使用到的函数模块;
4、“InqurieMoney”提供网上查询功能,查询结果会存储到.txt文件中,代码本身也有存放2021年的汇率。断网情况下或者不选择查询现在汇率的情况下,会按照该存储汇率进行结算。
下面直接提供文件名称以及文件中的代码,有需要的同学自行copy更改即可。由于各人原因,界面设置有一定的指向性,记得替换成自己的内容信息。本次使用的是visual studio 2017,bug较多,祝君顺利。

以下是choice.cpp文件内容

#include "currency_exchange.h"

int url_choice;                 //币种指向变量


//主界面选择函数 menu_main
int main_choice()
{
	//由于种种原因有的时候,int才能跑通,虽然这里就应该是char
	char choice;
	do
	{

		//system("cls");                                                              //清屏
		//fflush(stdout);                                                             //清空缓冲流,否则一闪一闪亮晶晶
		
		menu_main();
		cin >> choice;
		switch (choice)
		{
		case '1':
			cout << "" << endl;
			cout << "********      您选择的是外币兑换人民币            ********" << endl;
			cout << "" << endl;
			system("pause");
			sys_choice1();
			return 1;
		case '2':
			cout << "" << endl;
			cout << "********      您选择的是人民币兑换外币            ********" << endl;
			cout << "" << endl;
			system("pause");
			sys_choice2();
			return 2;
		case '3':
			return 0;
		default:
			cout << "" << endl;
			cout << "***      请重新输入您的选择,请勿发飙,气急伤肝,三秒后重新输入。三秒后如果你还能看见这句话,把VS砸了吧。    ***" << endl;
			cout << "" << endl;
			Sleep(2 * 1000);                        //简单的延时函数,延时时间3秒
			break;
		}

	} while (choice != '1' && choice != '2' );
	return 0;
}

//货币汇率选择函数
//第二个界面下
int sys_choice1()
{
	char choice = 0;                      //输入接收变量

	double exchange=0;

	exchange = menu_choice1(choice, exchange);

	exchange_cny(exchange);

	return 0;
}

// sys_choice1 和 sys_choice2 基本雷同,别看了
int sys_choice2()
{
	char choice = 0;                      //输入接收变量

	double exchange = 0;

	exchange = menu_choice2(choice, exchange);

	exchange_fore(exchange);

	return 0;
}

//选择界面输出函数1
double menu_choice1(char choice, double exchange)
{
	do {
		FOREIGN_CNY();                       //显示外币兑换人民币系统界面
		cin >> choice;                    //接收输入

		switch (choice)                     //币种汇率选择
		{
		case'a': case 'A':
			url_choice = 0;
			exchange = USD;
			cout << "您选择的是美元USD" << endl;
			break;
		case'b': case 'B':
			url_choice = 1;
			exchange = GBP;
			cout << "您选择的是英镑GBP" << endl;
			break;
		case'C': case 'c':
			url_choice = 2;
			exchange = EUR;
			cout << "您选择的是欧元EUR" << endl;
			break;
		case'd': case 'D':
			url_choice = 3;
			exchange = HKD;
			cout << "您选择的是港币HKD" << endl;
			break;
		case'E': case 'e':
			url_choice = 4;
			exchange = MOP;
			cout << "您选择的是澳元MOP" << endl;
			break;
		case'f': case 'F':
			url_choice = 5;
			exchange = JPY;
			cout << "您选择的是日元JPY" << endl;
			break;
		case'G': case 'g':
			url_choice = 6;
			exchange = CAD;
			cout << "您选择的是加拿大元CAD" << endl;
			break;
		case'h': case 'H':
			url_choice = 7;
			exchange = AUD;
			cout << "您选择的是澳大利亚元AUD" << endl;
			break;
		case'i': case 'I':
			url_choice = 8;
			exchange = SGD;
			cout << "您选择的是新加坡元SGD" << endl;
			break;
		case'j': case 'J':
			url_choice = 9;
			exchange = KRW;
			cout << "您选择的是韩元KRW" << endl;
			break;
		case'k': case 'K':
			url_choice = 10;
			exchange = PHP;
			cout << "您选择的是菲律宾比索PHP" << endl;
			break;
		case'l': case 'L':
			url_choice = 11;
			exchange = THB;
			cout << "您选择的是泰国铢THB" << endl;
			break;
		case'm': case 'M':
			url_choice = 12;
			exchange = CHF;
			cout << "您选择的是瑞士法郎CHF" << endl;
			break;
		case'n': case 'N':
			url_choice = 13;
			exchange = NZD;
			cout << "您选择的是新西兰元NZD" << endl;
			break;
		case'o': case 'O':
			url_choice = 14;
			exchange = DKK;
			cout << "您选择的是丹麦克朗DKK" << endl;
			break;
		case'p': case 'P':
			url_choice = 15;
			exchange = NOK;
			cout << "您选择的是挪威克朗NOK" << endl;
			break;
		case'q': case 'Q':
			url_choice = 16;
			exchange = SEK;
			cout << "您选择的是瑞典克朗SEK" << endl;
			break;
		case'r': case 'R':
			url_choice = 17;
			exchange = RUB;
			cout << "您选择的是卢布RUB" << endl;
			break;
		case's': case 'S':
			url_choice = 18;
			exchange = MYR;
			cout << "您选择的是林吉特MYR" << endl;
			break;
		case't': case 'T':
			url_choice = 19;
			exchange = ZAR;
			cout << "您选择的是南非兰特ZAR" << endl;
			break;
		case'z': case 'Z':
			url_choice = 20;
			main_choice();
			break;
		default:
			cout << "***   请重新输入!!!   ***" << endl;
			Sleep(3 * 1000);                           //短暂延时
			break;
		}
	} while ((choice < 'a' || choice >'t') && (choice <'A' || choice >'T') && choice != 'Z' && choice != 'z');

	return exchange;
}

//选择界面输出函数2
double menu_choice2(char choice, double exchange)
{
	do {
		CNY_FOREIGN();                        //显示人民币兑换外币系统界面
		cin >> choice;                    //接收输入

		switch (choice)                     //币种汇率选择
		{
		case'a': case 'A':
			url_choice = 0;
			exchange = USD;
			cout << "您选择的是美元USD" << endl;
			break;
		case'b': case 'B':
			url_choice = 1;
			exchange = GBP;
			cout << "您选择的是英镑GBP" << endl;
			break;
		case'C': case 'c':
			url_choice = 2;
			exchange = EUR;
			cout << "您选择的是欧元EUR" << endl;
			break;
		case'd': case 'D':
			url_choice = 3;
			exchange = HKD;
			cout << "您选择的是港币HKD" << endl;
			break;
		case'E': case 'e':
			url_choice = 4;
			exchange = MOP;
			cout << "您选择的是澳元MOP" << endl;
			break;
		case'f': case 'F':
			url_choice = 5;
			exchange = JPY;
			cout << "您选择的是日元JPY" << endl;
			break;
		case'G': case 'g':
			url_choice = 6;
			exchange = CAD;
			cout << "您选择的是加拿大元CAD" << endl;
			break;
		case'h': case 'H':
			url_choice = 7;
			exchange = AUD;
			cout << "您选择的是澳大利亚元AUD" << endl;
			break;
		case'i': case 'I':
			url_choice = 8;
			exchange = SGD;
			cout << "您选择的是新加坡元SGD" << endl;
			break;
		case'j': case 'J':
			url_choice = 9;
			exchange = KRW;
			cout << "您选择的是韩元KRW" << endl;
			break;
		case'k': case 'K':
			url_choice = 10;
			exchange = PHP;
			cout << "您选择的是菲律宾比索PHP" << endl;
			break;
		case'l': case 'L':
			url_choice = 11;
			exchange = THB;
			cout << "您选择的是泰国铢THB" << endl;
			break;
		case'm': case 'M':
			url_choice = 12;
			exchange = CHF;
			cout << "您选择的是瑞士法郎CHF" << endl;
			break;
		case'n': case 'N':
			url_choice = 13;
			exchange = NZD;
			cout << "您选择的是新西兰元NZD" << endl;
			break;
		case'o': case 'O':
			url_choice = 14;
			exchange = DKK;
			cout << "您选择的是丹麦克朗DKK" << endl;
			break;
		case'p': case 'P':
			url_choice = 15;
			exchange = NOK;
			cout << "您选择的是挪威克朗NOK" << endl;
			break;
		case'q': case 'Q':
			url_choice = 16;
			exchange = SEK;
			cout << "您选择的是瑞典克朗SEK" << endl;
			break;
		case'r': case 'R':
			url_choice = 17;
			exchange = RUB;
			cout << "您选择的是卢布RUB" << endl;
			break;
		case's': case 'S':
			url_choice = 18;
			exchange = MYR;
			cout << "您选择的是林吉特MYR" << endl;
			break;
		case't': case 'T':
			url_choice = 19;
			exchange = ZAR;
			cout << "您选择的是南非兰特ZAR" << endl;
			break;
		case'z': case 'Z':
			url_choice = 20;
			main_choice();
			break;
		default:
			cout << "***   请重新输入!!!   ***" << endl;
			Sleep(3 * 1000);                           //短暂延时
			break;
		}
	} while ((choice < 'a' || choice >'t') && (choice <'A' || choice >'T') && choice != 'Z' && choice != 'z');

	return exchange;
}

//兑换人民币函数
//系统选择1时调用
int exchange_cny(double exchange)
{
	int cny_fore = 0;                       //外币金额
	double cny;                          //兑换后的人民币数值
	double exchan;
	//string *purl;
	//*purl = url;
	int judg=1;
	cout << "当前汇率值为:" << exchange << endl;
	cout << endl;
	cout << "是否进行查询( 是(Y/y) 否(N/n) )" << endl;
	cout << url_choice << endl;
	char  yes_no;
	do {
		cin.clear();
		fflush(stdout);                                                             //清空缓冲流,否则一闪一闪亮晶晶

		cin >> yes_no;
		if (yes_no == 'y' || yes_no == 'Y')
		{
			//	url_choice = 1;
			judg=InqurieMoney(url_choice, exchan);
			if (judg == 0)
			{
				exchange = exchan;
			}

				cout << "查询后当前汇率值为:" << exchange << endl;


		}
		else if (yes_no == 'n' || yes_no == 'N')
		{
			cout << "OK" << endl;
			break;
		}
		else
			cout << "请重新输入!!!" << endl;
		
	} while (yes_no != 'y' && yes_no != 'Y' && yes_no != 'n' && yes_no != 'N');
	cout << "" << endl;

	cout << "请输入要兑换的外币金额:" << endl;          //货币换算初始位置
	cin >> cny_fore;
	cout << "" << endl;

	cny = exchange * cny_fore;           //计算人民币的金额

	cout << "可兑换的人民币数值为:" << cny << endl;
	cout << endl;
	cout << "是否继续( 是(y/Y),否(n/N)):" << endl;

	char  yes_no2;
	do {
		cin >> yes_no2;
		if (yes_no2 == 'y' || yes_no2 == 'Y')
		{
			cout << "兑换成功" << endl;
			cout << "" << endl;
			system("pause");
			main_choice();
		}
		else if (yes_no2 == 'n' || yes_no2 == 'N')
		{
			cout << "兑换已取消" << endl;
			cout << "" << endl;
			system("pause");
			main_choice();
		}
		else
		{
			cout << "请重新输入!!!" << endl;
			exchange_cny(exchange);
		}
	} while (yes_no2 != 'y' && yes_no2 != 'Y' && yes_no2 != 'n' && yes_no2 != 'N');

	return 0;
}

//兑换外币数额函
//系统选择2使用
int exchange_fore(double exchange)
{
	fflush(stdout);
	int cny_fore = 0;                       //外币金额
	double fore = 0;                          //兑换后的人民币数值
	int judg=1;
	double exch = 1 / exchange;

	cout << "当前汇率值为:" << exch << endl;
	cout << endl;
	cout << endl;
	cout << "是否进行查询( 是(Y/y) 否(N/n) )" << endl;

	char  yes_no;
	do {
		cin.clear();
		fflush(stdout);                                                             //清空缓冲流,否则一闪一闪亮晶晶

		cin >> yes_no;
		if (yes_no == 'y' || yes_no == 'Y')
		{
			judg=InqurieMoney(url_choice, exch);
			if (judg == 0)
			{
				exchange = exch;
				exch = 1 / exchange;
			}
			cout << "查询后当前汇率值为:" << exch << endl;

		}
		else if (yes_no == 'n' || yes_no == 'N')
		{
			cout << "OK" << endl;
			break;
		}
		else
			cout << "请重新输入!!!" << endl;
	} while ((yes_no != 'y' && yes_no != 'Y') && (yes_no != 'n' && yes_no != 'N'));
	cout << "" << endl;

	cout << "请输入要兑换的人民币金额:" << endl;
	cin >> cny_fore;
	cout << "" << endl;

	fore = exch * cny_fore;           //计算人民币的金额

	cout << "可兑换的外币数值为:" << fore << endl;
	cout << endl;
	cout << "是否继续( 是(y/Y),否(n/N)):" << endl;

	char  yes_no2;
	do {
		cin >> yes_no2;
		if (yes_no2 == 'y' || yes_no2 == 'Y')
		{
			cout << "兑换成功" << endl;
			cout << "" << endl;
			system("pause");
			main_choice();
		}
		else if (yes_no2 == 'n' || yes_no2 == 'N')
		{
			cout << "兑换已取消" << endl;
			cout << "" << endl;
			system("pause");
			main_choice();
		}
		else
		{
			cout << "请重新输入!!!" << endl;
			exchange_fore(exchange);
		}
	} while (yes_no2 != 'y' && yes_no2 != 'Y' && yes_no2 != 'n' && yes_no2 != 'N');

	return 0;
}

以下是inquire.cpp文件内容

#include

#include

#include

#include

#include

#include

#include "tchar.h"
#include "currency_exchange.h"
#pragma comment(lib,"WinInet.lib")


using namespace std;


int InqurieMoney(int UrlChoice , double &exch)

{
	HINTERNET hINet, hHttpFile;

	char szSizeBuffer[32];



	DWORD dwLengthSizeBuffer = sizeof(szSizeBuffer);

	//如果显示“msedge”报错,点击 调试->ExchangeMoney属性->常规->字符集
	//修改为“使用多字节字符集”
	hINet = InternetOpen("msedge", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);    //InternetOpen初始化WININET.DLL
	//hINet = InternetOpen("IE6.0", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);    //InternetOpen初始化WININET.DLL

	string 		 url = { "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=MYR" };

	int url_choice;
	char choice = '0';
	/*string ucrl[]= {
		   //美元
		   "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=USD"
		   // 英镑
		   "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=GBP"
		   // 欧元
		   "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=EUR"
		   // 港币
		   "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=HKD"
		   // 澳门元
		   "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=MOP"
		   // 日元
		   "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=JPY"
		   // 加拿大元
		   "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=CAD"
		   // 澳大利亚元
		   "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=AUD"
		   // 新加坡元
		   "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=SGD"
		   // 韩元
		   "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=KRW"
		   // 菲律宾比索
		   "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=PHP"
		   // 泰国铢
		   "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=THB"
		   // 瑞士法郎
		   "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=CHF"
		   // 新西兰元
		   "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=NZD"
		   // 丹麦克朗
		   "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=DKK"
		   // 挪威克朗
		   "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=NOK"
		   // 瑞典克朗
		   "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=SEK"
		   // 卢布
		   "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=RUB"
		   // 林吉特
		   "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=MYR"
		   // 南非兰特
		   "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=ZAR"

	   };*/
        choice=UrlChoice+65;                  

		switch (choice)                     //币种汇率选择
		{
		case'a': case 'A':
			//<< "您选择的是美元USD" << endl;
			url = { "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=USD" };
			break;
		case'b': case 'B':
			url_choice = 1;
            // << "您选择的是英镑GBP" << endl;
			url = { "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=GBP" };
			break;
		case'C': case 'c':
			//<< "您选择的是欧元EUR" << endl;
			url = { "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=EUR" };
			break;
		case'd': case 'D':
			// << "您选择的是港币HKD" << endl;
			url = { "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=HKD" };
			break;
		case'E': case 'e':
			// << "您选择的是澳元MOP" << endl;
			url = { "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=MOP" };
			break;
		case'f': case 'F':
			// << "您选择的是日元JPY" << endl;
			url = { "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=JPY" };
			break;
		case'G': case 'g':
			// << "您选择的是加拿大元CAD" << endl;
			url = { "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=CAD" };
			break;
		case'h': case 'H':
			// << "您选择的是澳大利亚元AUD" << endl;
			url = { "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=AUD" };
			break;
		case'i': case 'I':
			// << "您选择的是新加坡元SGD" << endl;
			url = { "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=SGD" };
			break;
		case'j': case 'J':
			// << "您选择的是韩元KRW" << endl;
			url = { "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=KRW" };
			break;
		case'k': case 'K':
			// << "您选择的是菲律宾比索PHP" << endl;
			url = { "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=PHP" };
			break;
		case'l': case 'L':
			// << "您选择的是泰国铢THB" << endl;
			url = { "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=THB" };
			break;
		case'm': case 'M':
			// << "您选择的是瑞士法郎CHF" << endl;
			url = { "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=CHF" };
			break;
		case'n': case 'N':
			// << "您选择的是新西兰元NZD" << endl;
			url = { "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=NZD" };
			break;
		case'o': case 'O':
			// << "您选择的是丹麦克朗DKK" << endl;
			url = { "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=DKK" };
			break;
		case'p': case 'P':
			// << "您选择的是挪威克朗NOK" << endl;
			url = { "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=NOK" };
			break;
		case'q': case 'Q':
			// << "您选择的是瑞典克朗SEK" << endl;
			url = { "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=SEK" };
			break;
		case'r': case 'R':
			// << "您选择的是卢布RUB" << endl;
			url = { "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=RUB" };
			break;
		case's': case 'S':
			// << "您选择的是林吉特MYR" << endl;
			url = { "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=MYR" };
			break;
		case't': case 'T':
			// << "您选择的是南非兰特ZAR" << endl;
			url = { "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=ZAR" };
			break;

		}

	//string url =cstring( ucrl[4]);          
	//cout << url << endl;
	if (!hINet)

	{
		cout << "InternetOpen fail" << endl;

		return 1;

	}
	//string url = { "https://api.it120.cc/gooking/forex/rate?fromCode=CNY&toCode=MYR" };

	hHttpFile = InternetOpenUrl(hINet, url.c_str(), NULL, 0, 0, 0);  //这个函数连接到一个网络服务器上并且最被从服务器上读取数据

	if (!hHttpFile)

	{
		cout << "error open url" << endl;
		cout << "目前暂时无法查询,请请您关闭防火墙或者连接网络后重试,谢谢。" << endl;

		return 1;

	}



	BOOL bQuery = HttpQueryInfo(hHttpFile,

		HTTP_QUERY_CONTENT_LENGTH,

		szSizeBuffer,

		&dwLengthSizeBuffer, NULL); //得到关于文件的信息

	if (bQuery == false)

	{
		InternetCloseHandle(hINet);

		cout << "error query info" << endl;

		return 3;

	}

	int FileSize = atol(szSizeBuffer);    //atol函数把字符串转换成长整型数

	string revData;

	revData.resize(FileSize);



	DWORD dwBytesRead;

	BOOL bRead = InternetReadFile(hHttpFile, &revData[0], FileSize, &dwBytesRead);     //web浏览器将在InternetReadFile上循环 ,不停地从Internet上读入数据块。



	if (!bRead)

	{
		cout << "error to read file" << endl;

		return 4;

	}

	ofstream   out_file("duhui.txt");

	out_file << revData;              //输出到文件
	out_file.close();

	InternetCloseHandle(hHttpFile);   //关闭句柄

	InternetCloseHandle(hINet);

	out_file.close();

	ifstream myfile("duhui.txt");
	string strs;
	myfile >> strs;

	int  i = 0, begin = 0, point = 0, ending = 0, judge = 0;        //提取 ***汇率值double型*** 临时变量
	char temp = 'a';                                     //字符串元素转换temp
	//cout << "ccc" << endl;
	//cout << strs << endl;
	for (i = 20; i < 40; i++) {                     //汇率值第一个有效数字

		temp = strs[i];
		//cout << temp << endl;
		if (temp >= '0' && temp <= '9')
		{
			begin = i;
			break;
		}
	}

	for (i = begin; i < 40; i++)
	{

		temp = strs[i];
		if (temp == '.')
		{
			judge = 1;                 //寻找到小数点
			point = 1 + i;                 //寻找汇率值小数点位置
			//cout << "piont==" << point << endl;
			break;
		}

	}
	for (i = point; i < 40; i++)
	{
		if ((strs[i] < '0' || strs[i] > '9') && judge == 1)
		{
			{
				ending = i;                 //寻找汇率值最后的有效数字
				//cout << "ending" << ending << endl;
				break;
			}
		}
	}


	int j = 0;
	char curr[10];       // 存储中行汇率的字符串

	for (i = begin; i < ending; i++)
	{
		temp = strs[i];
		//cout << "temp=" << temp;
		curr[j] = temp;
		j++;
	}
	myfile.close();
	 exch = atof(curr);
	//cout << "curr" << curr << endl;
	//cout << "exch"<
	//system("pause");

	return 0;



}

以下是menu.cpp文件内容

#include "currency_exchange.h"


void menu_main()
{

	system("cls");                                                              /
	fflush(stdout);                                                            

	cout << "**********************************************************" << endl;
	cout << "********                 东大出品                 ********" << endl;
	cout << "****                                                  ****" << endl;
	cout << "**                     外币兑换系统                     **" << endl;
	cout << "****                                                  ****" << endl;
	cout << "********                 东大出品                 ********" << endl;
	cout << "**********************************************************" << endl;
	cout << "" << endl;
	cout << "" << endl;
	cout << "" << endl;
	cout << "***外币兑换人民币请按1" << endl;                     
	cout << "" << endl;
	cout << "" << endl;
	cout << "***人民币兑换外币请按2" << endl;
	cout << "" << endl;
	cout << "" << endl;
	cout << "***退出系统请按3" << endl;
	cout << "" << endl;
	cout << "" << endl;
	cout << "***请输入您的选择" << endl;

}


void CNY_FOREIGN()
{
	system("cls");                                                              
	fflush(stdout);                                                             

	cout << "**********************************************************" << endl;
	cout << "********                 东大出品                 ********" << endl;
	cout << "****                                                  ****" << endl;
	cout << "**                     外币兑换系统                     **" << endl;
	cout << "****                                                  ****" << endl;
	cout << "********                 东大出品                 ********" << endl;
	cout << "**********************************************************" << endl;
	cout << "" << endl;
	cout << "********      您选择的是人民币兑换外币            ********" << endl;
	cout << "" << endl;

	cout << "***美元       USD  请按a(A)     ***菲律宾比索 PHP 请按k(K)" << endl;
	cout << "***英镑       GBP  请按b(B)     ***泰国铢     THB 请按l(L)" << endl;
	cout << "***欧元       EUR  请按c(C)     ***瑞士法郎   CHF 请按m(M)" << endl;
	cout << "***港币       HKD  请按d(D)     ***新西兰元   NZD 请按n(N)" << endl;
	cout << "***澳门元     MOP  请按e(E)     ***丹麦克朗   DKK 请按o(O)" << endl;
	cout << "***日元       JPY  请按f(F)     ***挪威克朗   NOK 请按p(P)" << endl;
	cout << "***加拿大元   CAD  请按g(G)     ***瑞典克朗   SEK 请按q(Q)" << endl;
	cout << "***澳大利亚元 AUD  请按h(H)     ***卢布       RUB 请按r(R)" << endl;
	cout << "***新加坡元   SGD  请按i(I)     ***林吉特     MYR 请按s(S)" << endl;
	cout << "***韩元       KRW  请按j(J)     ***南非兰特   ZAR 请按t(T)" << endl;
	cout << "" << endl;
	cout << "******                返回请按“z(Z)”              ******" << endl;
	cout << "" << endl;
	cout << "" << endl;

	cout << "请输入您的选择" << endl;

}

//??????????溯??????????????
// CNY_FOREIGN ?? FOREIGN_CNY ???????
void FOREIGN_CNY()
{
	system("cls");                                                              //????
	fflush(stdout);                                                             //??????????????????????????

	cout << "**********************************************************" << endl;
	cout << "********                 东大出品                 ********" << endl;
	cout << "****                                                  ****" << endl;
	cout << "**                     外币兑换系统                     **" << endl;
	cout << "****                                                  ****" << endl;
	cout << "********                 东大出品                 ********" << endl;
	cout << "**********************************************************" << endl;
	cout << "" << endl;
	cout << "********      您选择的是外币兑换人民币            ********" << endl;
	cout << "" << endl;

	cout << "***美元       USD  请按a(A)     ***菲律宾比索 PHP 请按k(K)" << endl;
	cout << "***英镑       GBP  请按b(B)     ***泰国铢     THB 请按l(L)" << endl;
	cout << "***欧元       EUR  请按c(C)     ***瑞士法郎   CHF 请按m(M)" << endl;
	cout << "***港币       HKD  请按d(D)     ***新西兰元   NZD 请按n(N)" << endl;
	cout << "***澳门元     MOP  请按e(E)     ***丹麦克朗   DKK 请按o(O)" << endl;
	cout << "***日元       JPY  请按f(F)     ***挪威克朗   NOK 请按p(P)" << endl;
	cout << "***加拿大元   CAD  请按g(G)     ***瑞典克朗   SEK 请按q(Q)" << endl;
	cout << "***澳大利亚元 AUD  请按h(H)     ***卢布       RUB 请按r(R)" << endl;
	cout << "***新加坡元   SGD  请按i(I)     ***林吉特     MYR 请按s(S)" << endl;
	cout << "***韩元       KRW  请按j(J)     ***南非兰特   ZAR 请按t(T)" << endl;
	cout << "" << endl;
	cout << "******                返回请按“z(Z)”              ******" << endl;
	cout << "" << endl;
	cout << "" << endl;

	cout << "请输入您的选择" << endl;

}

以下是ExchangeMoney.cpp文件内容

/*
#include
#include
#include 
#include 
//#include "tchar.h"
int main()
{
	//使用IE浏览器打开https://ultravires.github.io
	//ShellExecuteW(NULL, L"open", L"msedge.exe", L"https://srh.bankofchina.com/search/whpj/search_cn.jsp", NULL, SW_MAXIMIZE);
	//system("explorer https://srh.bankofchina.com/search/whpj/search_cn.jsp   ");
	//ShellExecute(NULL, L"open", L"http://www.xspace.idv.tw/", NULL,NULL, SW_SHOWNORMAL);
	system("explorer https://srh.bankofchina.com/search/whpj/search_cn.jsp");
	//WinExec("msedge.exe", SW_SHOW);
	return 0;
	}
	*/

#include "currency_exchange.h"

using namespace std;

//extern int url_choice;                 //币种指向变量

int main()

{

	main_choice();

	return 0;
}

以下是currency_exchange.h文件内容

#pragma once

#ifndef CURRENCY_EXCHANGE_H
#define CURRENCY_EXCHANGE_H


#include

#include

#include

#include

#include

#include

#pragma comment(lib,"WinInet.lib")

#pragma once



//extern int url_choice;                 //币种指向变量

//初始汇率值查询表
//更新时间2021年11月30日
//比值关系1软妹币:XXX外币
const double
USD = 6.3794,                                                          // 美元
CNY = 1.0000,                                                          // 人民币
GBP = 8.4941,                                                          // 英镑
EUR = 7.2063,                                                          // 欧元
HKD = 0.8179,                                                          // 港币
MOP = 0.7950,                                                          // 澳门元
JPY = 0.0560,                                                          // 日元
CAD = 5.0080,                                                          // 加拿大元
AUD = 4.5578,                                                          // 澳大利亚元
SGD = 4.6625,                                                          // 新加坡元
KRW = 0.0054,                                                          // 韩元
PHP = 0.1267,                                                          // 菲律宾比索
THB = 0.1894,                                                          // 泰国铢
CHF = 6.9129,                                                          // 瑞士法郎
NZD = 4.3544,                                                          // 新西兰元
DKK = 0.9690,                                                          // 丹麦克朗
NOK = 0.7079,                                                          // 挪威克朗
SEK = 0.7041,                                                          // 瑞典克朗
RUB = 0.0857,                                                          // 卢布
MYR = 1.5053,                                                          // 林吉特
ZAR = 0.3954;                                                          // 南非兰特
///	

using namespace std;

void menu_main();
int InqurieMoney(int choice, double &exch);
void CNY_FOREIGN();
void FOREIGN_CNY();
int main_choice();
int sys_choice1();                              //外币兑换人民币
int sys_choice2();                             //人民币兑换外币

double menu_choice1(char choice, double exchange); //选择函数界面函数
double menu_choice2(char choice, double exchange); //选择函数界面函数
int exchange_cny(double exchange);                 //兑换人民币数额函数
int exchange_fore(double exchange);                 //兑换外币数额函数

#endif // !CURRENCY_EXCHANGE_H

注意事项:
1、该程序多次编译后会在memcpy.asm文件下报错,是一个异常中断(含有“req”等汇编语言字眼),需要重新开启新的项目或者删除系统自建Debug文件夹重新编译才可以运行。
2、字符串在C++里面是利用模板动态存储的,无需初始定义长度。但是strcpy_s等函数无法正常使用。同样的string不知为何不能作为实参传值或者传地址。
3、网页抓取函数,使用了部分Windows自定义的窗口函数,需要标明命名空间,#pragma comment(lib,“WinInet.lib”),并对字符集的设置进行更改。
4、由于抓取字符串和网页开启函数的特殊性质,需要在文件保存字符串并关闭后,重新打开方可用string类型字符串获取数据,同时网页函数不可使用const定义的字符串数组。
5、关于.h文件重复编译的问题,系统自带在.H文件中的“#pragma once”不要删除。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/2991738.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-23
下一篇 2022-09-23

发表评论

登录后才能评论

评论列表(0条)

保存