الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

برنامج لتحويل بين العملات

بدأه أباسليمان في 5 سبتمبر 2009 · 10 رد · 6,146 مشاهدة · في مشاريع ومسابقات القسم
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

السلام عليكــم ورحمـة الله وبركاتــه

انتهيت مؤحرا من برنامج لتحويل بين العملات

فكرة البرنامج تقوم على تحويل العملة إلى الدولار ثم تحول العملة من الدولار إلى اي عملة اخرى بضربها بالمعامل

مثل التحويل بين 1ريال سعودي إلى 1دينار

أنا لاأعرف المعامل بين الريال والدولار ولكن أعرف المعامل بالدولار.

أقوم بالتحويل الريال إلى دولار ومن ثم أحول الدولار إلى دينار

سيتضح هذا بعد رؤيتكم للكود

monyConversion.h

 #ifndef MONYCONVERSION_H
  #define MONYCONVERSION_H
  #include <iostream>
  using namespace std;

  class monyConversion
  {
	  double valu_Of_currency,valu_Of_currency1;
	  public:
	  void loadFromeFile(string ,string);
	  double conver(string,string,double);
  };
  #endif
  void load_List_From_File(string names_Of_Currency[] ,int size);
  void show_Mune(string list[],int size,monyConversion &c);

monyConversion.cpp

 #include <fstream>
  #include <cstdlib>
  #include "monyConversion.h"

  void monyConversion::loadFromeFile(string name_Of_currency,string name_Of_currency1)
  {

	  double tempe;
	  string temp;
	  ifstream monyFile;
	  monyFile.open("monyFile.txt");
	  if(monyFile.fail())
	  {
		  cerr<<"ERROR opening file"<<endl;
		  exit(7);
	  }
	  do
	  {
		  monyFile>>temp>>tempe;

		  if(temp==name_Of_currency)
		  {

			  valu_Of_currency=tempe;

		  }
		  if(temp==name_Of_currency1)
		  {
			  valu_Of_currency1=tempe;


		  }
	  }while(!monyFile.eof());
	  monyFile.close();
  }

  double monyConversion::conver(string cu,string cu1,double nu)
  {
	  loadFromeFile(cu,cu1);
	  if(cu=="usd")
	  {
		  valu_Of_currency1=1/valu_Of_currency1;
		  nu*=valu_Of_currency1;
	  }
	  else if(cu1=="usd")
		  nu*=valu_Of_currency;	
	  else
	  {
		  nu*=valu_Of_currency;
		  valu_Of_currency1=1/valu_Of_currency1;
		  nu*=valu_Of_currency1;
	  }
	  return nu;
  }
  void load_List_From_File(string names_Of_Currency[],int size)
  {
	  ifstream currencyNames;
	  currencyNames.open("list.txt");
	  if(currencyNames.fail())
	  {
		  cerr<<"ERROR opening file"<<endl;
		  exit(7);
	  }

		  for (int i=0;i<size;i++)
		  {

			  currencyNames>>names_Of_Currency;
		  }
	  currencyNames.close();
  }
  void show_Mune(string list[],int size,monyConversion &c)
  {
	  int choice[2];
	  double valu_currency;
	  cout<<"****************************************************************************
 *****"
	  <<"THANK YOU FOR USING MONY CONVERSION PROGRAM\n Please enter yoer choice\n"
	  <<"FROM : "<<endl;
	  for(int i=0;i<size;i++)
	  {
		  cout<<i<<"- "<<list<<endl;
	  }
	  cin>>choice[0];
	  cout<<"TO : "<<endl;
	  for(int i=0;i<size;i++)
	  {
		  cout<<i<<"- "<<list<<endl;
	  }
	  cin>>choice[1];
	  cout<<"*********************************\n"
	  <<"Enter the valu : "<<endl;
	  cin>>valu_currency;
	  cout<<"*************************************"<<endl
	  <<"FROM : "<<list[choice[0]]<<endl
	  <<"TO : "<<list[choice[1]]<<endl
	  <<"The valu before conversion : "<<valu_currency<<endl
	  <<"The valu after conversion : "<<c.conver(list[choice[0]],list[choice[1]],valu_currency)<<endl;
  }

main.cpp

 #include "monyConversion.h"
  #include <fstream>

  int main()
  {
	  int const size=6;
	  string list[size];
	  char choice;
	  monyConversion c;
	  load_List_From_File(list,size);
	  //show_Mune(list,size,c);
	  cout<<"Prease any key to Continue or 'e' to exit"<<endl;
	  cin>>choice;
	  while(choice!='e')
	  {
		  show_Mune(list,size,c);
		  cout<<"Prease any key to Continue or 'e' to exit"<<endl;
		  cin>>choice;
	  }

  }

monyFile.txt

 SAR
  0.2666
  KWD
  3.4941
  CAD
  0.9204
  INR
  0.0205
  AED
  0.2724

list.txt

 SAR
  KWD
  CAD
  USD
  INR
  AED

العملات تم إختيارها عشوائيا وقد وضعت خمسة عملات لأن البرنامج لايزال في طور الإختبار -_-

العملات المتوفرة في البرنامج هي

sar=ريال سعودي

kwd=دينار كويتي

cad=دولار كندي

inr=روبيه هنديه

aed=درهم إماراتي

إذا أردت أن تضيف عملة فكل ما عليك هو

1- فتح ملف

monyFile.txt

وإضافة رمز العملة ووضع تحت رمز العملة ما يقابلها بالدولار الأمريكي

مثل 1ريال =0.2666 دولار امريكي

2- فتح ملف

list.txt

وإضافة رمز العملة في نهاية الملف

3- فتح ملف

main.cpp

وتوسيع المتغير

size

إلى عدد العملات الموجودة

ولأن العملات تتغير قيمهن سريعا فقد وضعت أخر تحديث وهو بتاريخ

5\9\2009

أرجوا أن تزويدوني بملاحظاتكم والإجابة على الأسئلة التالية

- هل هناك طريقة أفضل لتحويل بين العملات

هل هناك طريقة لتحديث البرنامج من قبل المستخدم -

حيث يقوم المستخدم بتحديث العملات بواسطة الإنترنت هل هناك مكتبات خاصة لذالك

قمت بأخذ رموز العملات والمعامل من موقع ياهو

http://finance.yahoo.com/currency-converte...AR;to=USD;amt=1

الواجهة لم أبرمجها بشكل جيد لأن البرنامج سأربطه (بإذن الله) بواجهة رسومية عن طريق مكتبة كيوت (طبعا بعد ملاحظاتكم)

مرفق البرنامج

MonyConversion_Beta.rar

تم تعديل هذه المشاركة بواسطة أباسليمان في 5 سبتمبر 2009 في 18:19

#2

وعليكم السلام :

بالنسبة لاسماء العملات اعتقد لو تضع جميع اسماء العملات في مصفوفة مثلا 160 عمله الحد الممكن من العملات

مثلا:

string money[160]={"SAR","KWD", "CAD", ................};

ومصفوفة للاسعار

double valu[160]={3.5, .........};

بحيث العنصر الاول في مصفوفة الاسماء مرتبط بالعنصر الاول من مصفوفة القيمه

عند صنع ملف الاسعار العمله الغير موجودة يكون قيمتها صفر

ولست في حاجة الي ملف list.txt

tvquran_6.gif

#3

السلام عليكــم ورحمـة الله وبركاتــه ،،

أولا لا أعلم لماذا هذه protoypes، أنصحك بدمجها داخل في القسم و تعريفها على أنها خاصة.

private:

void load_List_From_File(string names_Of_Currency[] ,int size);

void show_Mune(string list[],int size,monyConversion &c);

};

#endif

ثانيا لا داعي لإستخدام الدالة Load... يمكن دمج تعليماتها في constructor للقسم. فتحميل الملفات اللازمة ضروري عند فتح المشروع و من الأفضل تحميل محتوياتها مباشرة.

monyConversion *mConversion= new monyConversion();

mConversion->loadFromeFile();

mConversion->conver();

post-91400-1252179993_thumb.png
#4
if(temp==name_Of_currency)

if(strcmp(temp,name_Of_currency)==0)
#5

اشكركم على تفاعلكم .

أخي فهد أشكرك على ردك الرائع وملاحظاتك.

بالنسبة لمصفوفة الأسماء فسوف يتم إعتمادها B) وإلغاء ملف list.

أما بالنسبة لمصفوفة الأسعار فمثل ماقلت سابقا أني اريد المستخدم أن يحدث البرنامج حيث يقوم التحديث بإستبدال ملف monyFile إلى ملف جديد ومحدّث لذا لا أستطيع أن ألغي الملف.

________________

أخي بن العيد

وعليكم السلام ورحمة الله وبركاته.

شكرا على ملاحظاتك القيمة.

بالنسبة للملاحظة الأولى :

الدالة show_mune هي دالة لو لاحظتها خاصة لشاشة الconsol وقد قلت سابقا أن البرنامج برمج على أساس أن الواجهة رسومية فأنا لن أحتاج لهذه الدالة.

أما دالة load فمعك حق وجزاك الله خيرا على الملاحظة.

أما الملاحظة الثانية:

إنها فكرة رائعة وجميلة ولكن للأسف هذه الدالة سيتم حذفها وإستبدالها بمصفوفة .

بالنسبة لردك الثاني :

لم أفهم الكود جيدا ليتك تشرحه.

وأشكرك حقا على ردك وملاحظاتك وعلى تخصيص وقتك لإختبار البرنامج.

___________________

بالنسبة لتحديث البرنامج هل هو ممكن ؟

تم تعديل هذه المشاركة بواسطة أباسليمان في 6 سبتمبر 2009 في 01:41

#6
اقتباس
- هل هناك طريقة أفضل لتحويل بين العملات

هل هناك طريقة لتحديث البرنامج من قبل المستخدم -

حيث يقوم المستخدم بتحديث العملات بواسطة الإنترنت هل هناك مكتبات خاصة لذالك

توجد مواقع تقدم web service للتحويل بين العملات ،من المفروض توجد مكتية في السي بإسم libsoup تؤدي الخدمة .

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#7

بالنسبة لملاحظه بن العيد : تستطيع المقارنه في string بثلاث طرق مختلفه هي:

  1. string name_Of_currency="arab";
  2. string temp="Arab";
  3.  
  4. if(temp.compare(name_Of_currency)!=0) cout<<"!="<<endl;
  5. if(strcmp(temp.c_str(),name_Of_currency.c_str())!=0)cout<<"!="<<endl;
  6. if(temp!=name_Of_currency) cout<<"!="<<endl;
  7.  
  8.  

لكن اذا استخدمت النوع النصي char * فيجب استخدام الدالة strcmp

tvquran_6.gif

#8

بالنسبة لقراءت الوحدات أقراء هذا الموضوع

كتبت هذا الكود يعمل download القيمتين من الموقع:

  1. #pragma comment(lib, "urlmon.lib")
  2. #include <windows.h>
  3. #include <urlmon.h>
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7. URLDownloadToFile(NULL,"http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=USD SAR","my.t
    xt",0,NULL);
  8. return 0;
  9. }
  10.  
  11.  
  12.  

سيكون الملف الناتج my.txt في نفس مجلد برنامجك

تم تعديل هذه المشاركة بواسطة فهدالشلوي في 6 سبتمبر 2009 في 02:53

tvquran_6.gif

#9

البرنامج جميل ..

واضافات الاخوة اجمل ..

ولكن لي راي بسيط ..

لما لا تعمل للبرنامج قاعدة بيانات تحتوي على العملات .؟

وبعد ذلك ممكن البحث عن العملة الاولى والثانيه في القاعده واجراء العملية عليها ..

حتى التحديث سيكون اسهل ... ممكن ان تنشر كل فترة قاعدة جديدة تستبدل بالقديمة ..

او التحديث من قبل المستخدم سيكون باضافة عملة جديده للقاعده ..

هذا رايي .. ولك التفكير به ..

صراحة لا املك الوقت الان لكتابة اي كود ..

ولكن اعتقد انه بسيط ..

تحياتي العطرة ..

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#10

أخي sife شكرا لردك .

لم أجد معلومات وافيه عن هذه المكتبة وكيفية استخدامها أرجوا إن كان لديك روابط عن هذه المكتبه أن تتحفنا بها.

أخي فهد بارك الله فيك وأعانك الله علي :ohmy:

شكرا على الرابط وقد قرأتها وهي بلغة php .

بالنسبة للكود الذي كتبته لم يعمل معي هل تحتاج لمكتبة معينة.

أخي سنان شكرا لإقتراحاتك .

ولكن البرنامج صغير جدا ولايحتاج إلى قاعدة بيانات. والتحديث يكون يتغيير ملف monyFile.txt .

جزاك الله خيرا أخي سنان.

#11

http://oreilly.com/catalog/progwebsoap/chapter/ch03.html

http://www.codeproject.com/KB/webservices/...Client_CPP.aspx

http://www.cs.fsu.edu/~engelen/soap.html

http://www.sqldata.com/SoapClient/SoapClient30.htm

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

مواضيع مشابهة