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


整体来讲难度不高,明眼问题主要突出在如何自己写一个上网查找汇率的模块。这个模块单独放在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才能跑通,虽然这里就应该是charchar 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;}elsecout << "请重新输入!!!" << 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;}elsecout << "请重新输入!!!" << 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<windows.h>#include<Wininet.h>#include<iostream>#include<fstream>#include<string>#include<cstring>#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.DLLstring          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"<<exch << endl;//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;}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<Windows.h>
#include<shellapi.h>
#include <stdio.h>
#include <stdlib.h>
//#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<windows.h>#include<Wininet.h>#include<iostream>#include<fstream>#include<string>#include<cstring>#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”不要删除。

外币兑换系统(某专业大作业)相关推荐

  1. 基于Matlab的交通限速标志的识别系统 数字图像处理大作业

    本大作业为基于Matlab的交通限速标志的识别系统, 考虑到在科技发展的今天,智能汽车行业发展迅速,所以交通限速标志的快速检测及识别对车辆的安全行驶极为重要,因此本系统可以检测到图中的交通限速标志并对 ...

  2. 基于SSH开发物流仓储调度系统 课程设计 大作业 毕业设计

    基于SSH开发物流仓储调度系统(大作业/毕业设计) 开发环境: Windows操作系统 开发工具:Myeclipse+Jdk+Tomcat+MYSQL数据库 运行效果图:  基于SSH开发物流仓储调度 ...

  3. Java开发工程师(Web方向)微专业大作业的实现(含源码资源)

    前言 该项目是对网易云课堂Java开发工程师(Web方向)微专业--<Java Web开发实践>大作业的实现. 如非学员,建议避坑. 吐槽 课程提供的前端代码.设计文档质量差(变量命名的不 ...

  4. 基于SSH开发HR(人力资源管理系统)简单工作流程系统 课程设计 大作业 毕业设计

    基于S2SH开发HR(人力资源管理系统)简单工作流程系统(大作业/毕业设计) 开发环境: Windows操作系统 开发工具:Myeclipse+Jdk+Tomcat+MYSQL数据库 运行效果图: 基 ...

  5. 基于JavaSwing开发聊天室(QQ聊天 群聊)系统+论文+PPT 大作业 毕业设计项目源码

    基于JavaSwing开发聊天室(QQ聊天 群聊)系统+论文+PPT(毕业设计/大作业) 开发环境: Windows操作系统 开发工具: Eclipse/Myeclipse+Jdk 演示视频: jav ...

  6. javaweb基于JSP+Servlet开发校园在线问卷调查系统 课程设计 大作业 毕业设计源码

    基于JSP+Servlet开发校园在线问卷调查系统(大作业/毕业设计) 开发环境:   Windows操作系统 开发工具:MyEclipse+Jdk+Tomcat+MYSQL数据库 运行效果图: 基于 ...

  7. 飞机订票系统c语言大作业,C语言知识学习飞机订票系统

    C语言知识学习飞机订票系统 课程设计 课程:数据结构 专业班级:xx软件工程 xx班 姓名:xx 学号:xxx 姓名:xxx 学号:xxx 设计时间:xxx 指导老师:xxx 课程设计题:飞机订票系统 ...

  8. 学生证选课系统c语言大作业,学生选课管理系统c语言程序

    #include #include #include int N1,N2; struct couse * head1; struct student * head2; struct couse //课 ...

  9. 《Python与硬件项目案例》— 基于Python与指纹模块AS608的指纹识别签到考勤系统(下篇)(期末大作业、课程设计、毕业设计、结课项目)

    目录 <Python与硬件项目案例>- 基于Python与指纹模块AS608的指纹识别签到考勤系统(下篇) 概述 参考代码 <Python与硬件项目案例>- 基于Python与 ...

  10. 火车票售票系统C语言大作业,基于C语言实现简单的12306火车售票系统

    程序设计要求用C语言写一个简单的火车售票系统,主要实现的功能为: 录入班次信息 浏览班次信息 按班次号查询 按终点站查询 按余票数量排序保存 售票 退票 更新班次信息 退出系统 所有的班次信息保存在n ...

最新文章

  1. 有了 Docker,用 JavaScript 框架开发的 Web 站点也能很好地支持网络爬虫的内容抓取...
  2. 直播预告丨揭秘神策数据销售方法论,一起向 Top Sales 迈进!
  3. Linux 环境变量 /etc/profile 和 ~/.bashrc
  4. java中native_java中的native关键字
  5. 面向对象的接口类 以及鸭子类型
  6. 阿里云高级技术专家周晶:基于融合与协同的边缘云原生体系实践
  7. mysql for vs2013_mysql vs2013
  8. java volatile关键字的作用_java volatile关键字作用及使用场景详解
  9. Windows 系统下安装anaconda教程 ,小白教程!!!
  10. Python 学习记录(1)对象命名导致的问题
  11. 苹果手机夜间模式怎么设置_微信怎么设置夜间模式?iPhone夜间模式设置教程 省电又护眼!...
  12. android 8字体下载,安卓手机字体
  13. 【渗透技巧】pop3协议渗透
  14. 解决WPS表格图片打印拉伸问题
  15. Excel实用教程-字符提取函数(FIND/LEFT/RIGHT/LEN/MID/TEXT)
  16. 云主机装黑果实践(6):处理云主机上变色龙启动后置过程:驱动和黑屏
  17. Latex 打勾 打叉
  18. git克隆指定分支的代码
  19. 互联网公司招聘黑话大全
  20. 1.python真的是万恶之源么?(初识python)

热门文章

  1. 怎么查看电脑最大支持扩展内存
  2. 如何正确的制定目标?(只需4步)
  3. python中pip作用_python中的pip有什么作用
  4. qpython 3h下载_QPython 3Hv3.0.0 Android
  5. matlab 浮动波动率,Matlab计算股票价格波动率
  6. 网易云音乐encseckey算法php,求助网易云音乐_secretKey及_encSecKey获取
  7. 谷歌浏览器html插件字体大小,字体换加插件,自定义Chrome网页字体,更改字体样式,调整字体大小...
  8. 在html中加入中文字体,css设置中文字体
  9. 粪斗吧 ! 骚年 !
  10. 沟通成本:信任,外包永远的痛——外包实践(65)