خطوة بخطوة لبرمجة الة حاسبة بالجافا مثل حاسبة الويندذ الى حد ما

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

خطوة بخطوة لبرمجة الة حاسبة بالجافا مثل حاسبة الويندذ الى حد ما

مُساهمة من طرف أحمد مناع في الثلاثاء مارس 12, 2013 2:18 pm

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

أهلا وسهلا بكم أخوانى أعضاء و زوار منتدى مصر التقنى ...اليوم إن شاء الله تعالى سوف نقوم بإنشاء الة حاسبة بلغة الجافا و بالاعتماد على بنية NetBeans و كما فى الشكل التالى :




الخطوة الاولى : إنشاء مشروع جديد Java application كما فى الصورة التالية :




الخطوة الثانية :سيظهر لك المعالج التاالى :



أكتب اسم المشروع MyCalculator فى مربع النص أسم المشروع .... في الجزء السفلي، قم بإلغاء تحديد "إنشاء فئة رئيسية".لأنه سيتم إنشاء الأسلوب الرئيسي بالنسبة لنا من خلال NetBeans عندما نضيف نافذة كما هو اعلاه .

الخطوة الثالثة :بعد الضغط على زر انهاء فى الخطوة السابقة ....ستظهر لك الشاشة التالية :



الان سنقوم بانشاء نافذة لمشروعنا ...و لكى نتمكن من ذلك انقر بزر الماوس الأيمن على اسم المشروع في إطار مشاريع. ثم نختار الامر New > JFrame كما فى الصورة التالية :



سيظهر لك معالج انشاء نافذة جديدة ....فقط قم بادخال اسم الكلاس و ليكن JavaCalculator كما فى الصورة التالية:



ثم اضغط إنهاء سيظهر لك نافذة فارغة و بالجانب الايسر العناصر الرسومية كما فى الشكل التالى :



حدد تلك النافذة و من نافذة الخصائص ضع عنوان للنافذة كما فى الشكل التالى :




الخطوة الثالثة : قم بإضافة عدد مربع نص Text Field كما تعلمنا فى الدروس السابقة وكما هو فى الصورة التالية






من نافذة الخصائص للعنصر Text Field حدد الخاصية text ثم قم بمسح القيمة الافتراضية لمربع النص كما فى الصورة التالية




ثم بعد ذلك قم بتحديد العنصر Text Field ثم كليك شمال ثم أختر الامر Change Variable Name وذلك الاسم الافتراضى للعنصر الى txtDisplay و هذا هو الاسم الذى سيتم التعامل به فى صفحة الشفرة أو الكود







الخطوة الرابعة : إضافة عدد 19 زر أمر و التى تشمل الارقام من صفر حتى 9 بالاضافة الى ازار العمليات الحسابية (+ , - , * , /)...كما فى الصورة التالية :




و لكى تتمكن من إضافة العنصر الرسومى jButton الى النافذة كما هو ظاهر أعلاه فقط عن طريق السحب و الافلات كما فعلنا مع العنصر الرسومى مربع النص و كما فى الصور التالية :







عند إضافة أول زر لنافذة المشروع ستجد أن النص الافتراضى للزر jButton1 قم تغيرة الى الرقم المراد و ذلك عن طريق تحديد العنصر ثم من نافذة الخصائص حدد الخاصية Text ثم امسح النص الافتراضى و اكتب بدلا منه الرقم (1)كما فى الصورة التالية :








كرر تلك العملية مع جميع ازرار المشروع حتى ينتهى منها

الخطوة الخامسة :.كتابة الاكواد

1_ ازرار الارقام و العلامة العشرية

يوجد فى الالة الحاسبة التى نحن بصدد برمجتها عدد 11 زر خاص بالارقام و العلامة العشرية تم ترقيمها من الرقم (صفر)حتى الرقم (9)بالاضافة الى زر (.)العلامة العشرية .....المطلوب من تلك الازرار هو عند الضغط عليها يتم كتابة الرقم الخاص بها فى شاشة الناتج الحسابى txtDisplay ....و لكى تتمكن من الحصول على قيمة كل زر أو النص المكتوب على كل زر نستخدم الدالة getText و التى تقوم بجلب النص للعنصر ....و بعد ما قمنا بجلب قيمة الزر نريد عرضة فى شاشة الناتج الحسابى txtDisplay عن طريق الدالة SetText ...وقد يتسائل أحد الاخوة أين أكتب تلك الاكواد وكيفه يتم ذلك ؟

الجواب ...هو ان نقوم بتحديد العنصر أو الزر المراد الحصول على قيمته ثم كليك شمال نختار Event ثم نختار الامر Action,و ذلك لاضافة حدث لتنفيذ الكود عند حدوثة ومنه نختار الحدث actionPerformed ..سيتم فتح نافذة الكود كما فى الشكل التالى :



سوف يتم فتح نافذة الكود كما فى الشكل التالى :



و الكود المطلوب للحصول على قيمة كل زر و عرضة فى شاشة الناتج الحسابى txtDisplay سيكون على النحو التالى :


وكما هو ملاحظ فى الكود اعلاه ....السطر الاول قمنا بالاعلان عن المتغير النصى s1 و جعلناه يحفظ قيمة زر الامر (1) ...ثم جعلنا شاشة الناتج الحسابى txtDisplay تعرض تلك القيمة باستخدام الدالة ... وعند الضغط على زر الامر واحد سيكون كما فى الشكل التالى :



لكن ستواجهنا مشكلة لو اننا اكتفينا بالكود السابق ...فما إذا كنت ترغب في إدخال رقم 11، أو 121؟ عند النقر فوق الزر عدة مرات او النقر على زر اخر، لا شيء لن ياتى بشىء الا قيمة الزر الذى تم الضغط علية ...والسبب هو أن لدينا كود لا يحفظ كل ما هو في حقل النص السابق....لذلك إذا كنا نريد عدد 12، سيكون علينا الحفاظ 1 أولا.ودمجها مع نص الزر الثانى الذى تم النقر علية. ..و بالتالى فإن الكود السابق سيصبح كما يلى :

الرمز:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                       
String s1= txtDisplay.getText()+jButton1.getText();
 
 txtDisplay.setText(s1); 
}                                     

2_ ازرار العمليات الحسابية (+,-,*,/)

المطلوب من تلك الازرار هو عند النقر عليها ان تحفظ القيمة الموجودة فى شاشة الناتج الحسابى txtDisplay و ذلك لاجاء العمليات الحسابية علية بعد ادخال الرقم الثانى ...ثم بعد ذلك حفظ نوع العملية الحسابية فى متغير نصى حتى نعمل ماذا يريد المستخدم من تلك العملية هل هى الجمع ام الطرح ام القسمة ام الضرب ...بعد ذلك مسح شاشة الناتج الحسابى لاستقبال الرقم الثانى ....تعالوا الان ننفذ ذلك برمجيا ...

اولا : نقوم بالاعلان عن متغيرين الاول نصى String و ليكن st لحفظ علامة العملية الحسابية و الثانى من نوع double و ذلك لحفظ قيمة الرقم الاول و ذلك على النحو التالى :


الرمز:
public class JavaCalculator extends javax.swing.JFrame {
private double no1 = 0.0;
private String st;

و يمكنك ملاحظة اننا قمنا بالاعلان عن تلك المتغيرات خارج اى حدث من احداث البرنامج حتى يتثنى لنا استخدامة على مستوى الكلاس JavaCalculator ..وتحت حدث النقر على زر الجمع يكون الكود على النحو التالى :


الرمز:
no1=Double.parseDouble( txtDisplay.getText( ));
st=jButton20.getText();
txtDisplay.setText("");

ففى السطر الاول قمنا بحفظ قيمة شاشة الناتج الحسابى txtDisplay فى المتغير NO1 بعد تحويلة الى قيمة رقمية ...اما السطر الثانى قمنا بحفظ قيمة زر العملية الحسابية فى المتغير ST وهو متغير نصى ....اما السطر الثالث هو لمسح شاشة الناتج الحسابى لادخال الرقم الثانى المطلوب اجراء العمليات الحسابية علية ...

سنكرر الكود السابق فى زر الضرب و الطرح و القسمة مع تغير بسيط فى قيمة الزر المطلوب الحصول على علامته فقط ...

3_ برمجة زر الامر يساوى (=)

المطلوب من هذا الزر هو عند النقر علية حفظ قيمة شاشة الناتج الحسابى الحالى ...ثم اجراء العملية الحسابية المطلوبة على الرقمين الاول الذى تم تخزينة اثناء النقر على زر العمليات الحسابية و الرقم الثانى الذى تم حفظة توا بشرط العملية الحسابية التى تم اختيارها من قبل المستخدم سواء كانت جمع او طرح او ضرب او قسمة ...و بالتالى ستكون الاكواد على النحو التالى :

الرمز:
private double no2 = 0.0;
private double total = 0.0;

وفى حدث النقر على زر يساوى نكتب الكود التالى :

الرمز:

                                     
no2=Double.parseDouble( txtDisplay.getText( ));
  char type=st.charAt(0);
 
switch(type){
    case '+':
    total=no1+no2;
    txtDisplay.setText(Double.toString(total));
 break;
      case '-':
    total=no1-no2;
    txtDisplay.setText(Double.toString(total));
 break;
      case '*':
    total=no1*no2;
    txtDisplay.setText(Double.toString(total));
break;
    case '/':
    total=no1/no2;
    txtDisplay.setText(Double.toString(total));
break;       
}


و من الكود أعلاه لاحظ أننا قمنا بحفظ قيمة شاشة الناتج الحسابى txtDisplay بعد تحويلة لقيمة رقيمة من نوع Double فى المتغير no 2 ...وفى السطر الثانى اعلنت عن المتغير type من النوع الحرفى و تخزين فية قيمة المتغير النصى st بعد تحويلة الى متغير من نوع char و الحكمة من ذلك اننى اريد استخدام جملة switch للحصول على نوع العملية الحسابية و تلك الجملة لا تدعم القيم النصية String الا فى حالة كون اصدار الجافا لديك 7 فما فوق ...غير ذلك من الاصدارات لا تدعم القيم النصية

بعد ذلك استخدمنا جملة switch لمعرفة نوع العملية التى اختارها المستخدم ...و عندما اردنا اظهار قيمة العملية الحسابية فى شاشة الناتج الحسابى txtDisplay تم تحويله أولا الى قيمة نصية عن طريق الامر Double.toString

4_برمجة زر الامر (c)

يستخدم هذا الامر فى الالة الحاسبة لالغاء العملية الحسابية و مسح البيانات المخزنة فى المتغيرات و بالتالى فأن الكود الخاص بهذا الزر سيكون على النحو التالى :

الرمز:

txtDisplay.setText("");
 st="" ;
 no1 = 0.0;
 no2 = 0.0;

5_برمجة زر الامر (CE )

يستخدم هذا الامر فى الالة الحاسبة لمسح البيانات الموجودة حاليا فى شاشة الحاسبة مع عدم الغاء باقى العملية ....وبالتالى سيكون الكود على النحو التالى :

الرمز:
txtDisplay.setText("");

6_برمجة زر الامر (+/-)

هذا الزر الخاص بتغير أشارة الرقم الى سالب أو موجب ولكى يتم ذلك فهناك كود بيسط جدا للغاية وهو على النحو التالى

الرمز:
 Double s1= Double.parseDouble( txtDisplay.getText( ))* -1;
 
txtDisplay.setText(Double.toString(s1));

لاحظ يا عزيزى أننا فى الكود السابق طلبنا من البرنامج عند الضغط على هذا الزر أن يجعل قيمة txtDisplay تساوى تلك القيمة مضروبة فى سالب (1) ...وبالتالى فأن الناتج لو كان بالسالب سيصبح بالموجب لان سالب*سالب موجب)...ولو أن الرقم الموجود بالموجب فسيصبح بالسالب لان(سالب *موجب = سالب)...وطبعا لكى نقوم بتلك العملية الحسابية يجب تحويلة قيمة txtDisplay.الى قيمة رقمية Double عند اجراء العملية الحسابية و تحويلها مرة اخرى الى قيمة نصية String عند عرضها فى شاشة الناتج الحسابى ..

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 810
النقاط : 1479
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: خطوة بخطوة لبرمجة الة حاسبة بالجافا مثل حاسبة الويندذ الى حد ما

مُساهمة من طرف نجلاء فتحي في الأربعاء مارس 13, 2013 8:24 pm

مشروع رائع ......شكرا استاذ احمد

نجلاء فتحي
...
...

تاريخ التسجيل : 20/02/2011
المساهمات : 48
النقاط : 94
التقيم : 0
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: خطوة بخطوة لبرمجة الة حاسبة بالجافا مثل حاسبة الويندذ الى حد ما

مُساهمة من طرف جورج صبحى في الخميس مارس 14, 2013 12:39 pm

شرحك متميز يا صديق يا غالى

جورج صبحى
.....
.....

تاريخ التسجيل : 18/02/2011
المساهمات : 98
النقاط : 211
التقيم : 3
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: خطوة بخطوة لبرمجة الة حاسبة بالجافا مثل حاسبة الويندذ الى حد ما

مُساهمة من طرف ذوكا في الثلاثاء مايو 28, 2013 2:57 pm

والله مبدع يا اخى ....لاول مرة أشوف برامج بالجافا كاملة ففى معظم المنتديات يتحدثون عن جزئية صغير من كود معين ....أشكرك بجد

ذوكا
.....
.....

تاريخ التسجيل : 26/05/2013
المساهمات : 92
النقاط : 155
التقيم : 11
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: خطوة بخطوة لبرمجة الة حاسبة بالجافا مثل حاسبة الويندذ الى حد ما

مُساهمة من طرف أحمد مناع في الأحد أبريل 06, 2014 5:54 pm

للرفع  Very Happy Very Happy Very Happy 

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 810
النقاط : 1479
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى