كود برنامج حساب العمر بلغة الجافا - Code for calculating age in java

 

مشروع جافا مفتوح المصدر يقوم بحساب العمر

برنامج حساب العمر بالجافا - java project (open source)


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


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


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


مقدمة عن لغة الجافا ؟


 هي لغة برمجة عالية المستوى إبتكرها James Gosling في عام 1991 حيث تم اطلاق جافا على هذة اللغة نسبة لشجرة الجافا التي كان يشاهدها من النافذة ، وتعد هذة اللغة بمثابة العقل المفكر المستخدم لتشغيل الأجهزة الذكية وفي عام 1995 تم تطويرها لبناء تطبيقات للويب, سطح المكتب, الهواتف ... الخ


ماهي Java swing ؟


في البداية, واجهة المستخدم تسمى Graphical User Interface في اللغة الإنجليزية و تختصر بـ GUI. المقصود من واجهة المستخدم هو بناء برامج فيها واجهات رسومية المكتبة Swing تعتمد على المكتبة AWT.


طريقة عمل الكود ؟


قم بإنشاء ملف جافا باي اسم تريده

قم بإنشاء كلاس بإسم Main

قم بكتابة الكود التالي داخل الملف الذي قمت بإنشائه


Main n = new Main ();



قم بلصق الكود التالي داخل Main


import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.time.LocalDate;
import java.time.Period;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
 
public class Main extends JFrame {
 
    JLabel birthDate, deathDate, result;
    JCheckBox deathDateState;
    JComboBox dayOfBirth, monthOfBirth, yearOfBirth, dayOfDeath, monthOfDeath, yearOfDeath;
    JButton calculateAge;
 
    int d1, d2, m1, m2, y1, y2;
 
    LocalDate startDate, endDate;
 
    long daysCounter, monthsCounter, yearsCounter;
 
    Font font = new Font("Arial", Font.BOLD, 18);
 
    public Main() {
        createAndShowGUI();
    }
 
 
    private void createAndShowGUI() {
 
        try {
            for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        }
        catch (Exception e) { }
 
        String[] months = {"Jan", "Feb", "Mar", "Apr", "May", "Jun",
            "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
 
        Integer[] days = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
            11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
            21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31};
 
        int currentYear = LocalDate.now().getYear();
 
        Integer[] years = new Integer[currentYear];
 
        for (int i = 0; i < years.length; i++)
            years[i] = i + 1;
 
        birthDate = new JLabel("Birth Date");
        deathDate = new JLabel("Death Date");
        deathDateState = new JCheckBox();
        dayOfBirth = new JComboBox(days);
        monthOfBirth = new JComboBox(months);
        yearOfBirth = new JComboBox(years);
        dayOfDeath = new JComboBox(days);
        monthOfDeath = new JComboBox(months);
        yearOfDeath = new JComboBox(years);
        calculateAge = new JButton("Calculate Age");
        result = new JLabel("", JLabel.CENTER);
 
        birthDate.setBounds(175, 40, 200, 30);
        dayOfBirth.setBounds(120, 80, 50, 30);
        monthOfBirth.setBounds(173, 80, 70, 30);
        yearOfBirth.setBounds(246, 80, 70, 30);
        deathDateState.setBounds(158, 140, 20, 30);
        deathDate.setBounds(183, 140, 200, 30);
        dayOfDeath.setBounds(120, 180, 50, 30);
        monthOfDeath.setBounds(173, 180, 70, 30);
        yearOfDeath.setBounds(246, 180, 70, 30);
        calculateAge.setBounds(118, 250, 200, 60);
        result.setBounds(0, 345, 440, 30);
         birthDate.setFont(font);
        deathDate.setFont(font);
        calculateAge.setFont(font);
        result.setFont(new Font("Arial", Font.BOLD, 17));
        yearOfBirth.setSelectedItem(2000);
        yearOfDeath.setSelectedItem(2000);
         deathDate.setEnabled(false);
        dayOfDeath.setEnabled(false);
        monthOfDeath.setEnabled(false);
        yearOfDeath.setEnabled(false);
        add(birthDate);
        add(deathDate);
        add(dayOfBirth);
        add(monthOfBirth);
        add(yearOfBirth);
        add(deathDateState);
        add(dayOfDeath);
        add(monthOfDeath);
        add(yearOfDeath);
        add(calculateAge);
        add(result);
 
 
        deathDateState.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                if (deathDateState.isSelected()) {
                    deathDate.setEnabled(true);
                    dayOfDeath.setEnabled(true);
                    monthOfDeath.setEnabled(true);
                    yearOfDeath.setEnabled(true);
                }
                else {
                    deathDate.setEnabled(false);
                    dayOfDeath.setEnabled(false);
                    monthOfDeath.setEnabled(false);
                    yearOfDeath.setEnabled(false);
                }
            }
        });
 
 
        // هنا قمنا بتحديد ما يحدث عندما يقوم المستخدم بتغيير الشهر من قائمة الأشهر في تاريخ الميلاد
        monthOfBirth.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
 
                // سيتم تخزين إسم الشهر المختار من قائمة الأشهر و على أساسه سيتم توليد عدد الأيام الموجودة في الشهر
                String month = monthOfBirth.getSelectedItem().toString();
 
                if( month.equals("Jan") || month.equals("Mar") || month.equals("May")
                    || month.equals("Jul") || month.equals("Aug") || month.equals("Oct") || month.equals("Dec") )
                    for( int i = 1; i <= 31; i++ )
                        dayOfBirth.addItem(i);
 
                else if( month.equals("Feb") )
                    for( int i = 1; i <= 28; i++ )
                        dayOfBirth.addItem(i);
 
                else
                    for( int i = 1; i <= 30; i++ )
                        dayOfBirth.addItem(i);
 
            }
        });
 
 
        // هنا قمنا بتحديد ما يحدث عندما يقوم المستخدم بتغيير الشهر من قائمة الأشهر في تاريخ الميلاد
        monthOfDeath.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
 
                // سيتم تخزين إسم الشهر المختار من قائمة الأشهر و على أساسه سيتم توليد عدد الأيام الموجودة في الشهر
                String month = monthOfDeath.getSelectedItem().toString();
 
                if( month.equals("Jan") || month.equals("Mar") || month.equals("May")
                    || month.equals("Jul") || month.equals("Aug") || month.equals("Oct") || month.equals("Dec") )
                    for( int i = 1; i <= 31; i++ )
                        dayOfDeath.addItem(i);
 
                else if( month.equals("Feb") )
                    for( int i = 1; i <= 28; i++ )
                        dayOfDeath.addItem(i);
 
                else
                    for( int i = 1; i <= 30; i++ )
                        dayOfDeath.addItem(i);
 
            }
        });
 
 
        // هنا قمنا بتحديد ما يحدث عند النقر على زر إظهار العمر
        calculateAge.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
 
                // سنستخدم هذا المتغير لتخزين نص النتيجة التي ستظهر
                String text = "";
 
                // هنا قمنا بتخزين تاريخ الميلاد الذي إختاره المستخدم في المتغيرات التالية
                y1 = yearOfBirth.getSelectedIndex() + 1;
                m1 = monthOfBirth.getSelectedIndex() + 1;
                d1 = dayOfBirth.getSelectedIndex() + 1;
 
                // إذا كان خيار تحديد الميلاد مفعل, سيتم تخزين التاريخ المحدد في المتغيرات التالية
                if (deathDateState.isSelected()) {
                    y2 = yearOfDeath.getSelectedIndex() + 1;
                    m2 = monthOfDeath.getSelectedIndex() + 1;
                    d2 = dayOfDeath.getSelectedIndex() + 1;
                }
                // إذا كان خيار تحديد الميلاد غير مفعل, سيتم تخزين التاريخ الحالي في المتغيرات التالية
                else {
                    y2 = LocalDate.now().getYear();
                    m2 = LocalDate.now().getMonthValue();
                    d2 = LocalDate.now().getDayOfMonth();
                }
 
                // endDate و التاريخ الثاني في الكائن startDate هنا قمنا بوضع تاريخ الميلاد الذي حدده المستخدم في الكائن
                startDate = LocalDate.of(y1, m1, d1);
                endDate = LocalDate.of(y2, m2, d2);
 
                // هنا قمنا بتخزين الفارق بين التواريخ في المتغيرات التالية
                yearsCounter = Period.between(startDate, endDate).getYears();
                monthsCounter = Period.between(startDate, endDate).getMonths();
                daysCounter = Period.between(startDate, endDate).getDays();
 
                // هنا قلنا إذا كان التاريخين متواسيين سيتم إظهار التنبيه التالي
                if (yearsCounter == 0 && monthsCounter == 0 && daysCounter == 0) {
                    result.setForeground(Color.red);
                    result.setText("Cannot compare same date!");
                }
 
                // هنا قلنا أنه إذا كانت التواريخ المحددة هي منطقياً صحيحة سيتم إظهار العمر
                else if (!Period.between(startDate, endDate).isNegative())
                {
 
                    if (yearsCounter == 1)
                        text += yearsCounter + " year ";
 
                    else if (yearsCounter > 1)
                        text += yearsCounter + " years ";
 
                    if (monthsCounter == 1)
                    {
                        if (yearsCounter > 0 && daysCounter > 0)
                            text += ", " + monthsCounter + " month ";
 
                        else if (yearsCounter > 0 && daysCounter == 0)
                            text += "and " + monthsCounter + " month ";
 
                        else
                            text += monthsCounter + " month ";
                    }
 
                    if (monthsCounter > 1)
                    {
                        if (yearsCounter > 0 && daysCounter > 0)
                            text += ", " + monthsCounter + " months ";
 
                        else if (yearsCounter > 0 && daysCounter == 0)
                            text += "and " + monthsCounter + " months ";
 
                        else
                            text += monthsCounter + " months ";
                    }
 
                    if (daysCounter == 1)
                    {
                        if (yearsCounter == 0 && monthsCounter == 0)
                            text += daysCounter + " day";
 
                        else
                            text += "and " + daysCounter + " day";
                    }
 
                    if (daysCounter > 1)
                    {
                        if (yearsCounter == 0 && monthsCounter == 0)
                            text += daysCounter + " days";
 
                        else
                            text += "and " + daysCounter + " days";
                    }
 
                    result.setForeground(Color.black);
                    result.setText(text);
                }
 
                // هنا قلنا أنه إذا كانت التواريخ المحددة هي منطقياً غير مقبولة سيتم إظهار التنبيه التالي
                else
                {
                    result.setForeground(Color.red);
                    result.setText("Logic order of Dates is wrong!");
                }
 
            }
        });
 
        // هنا قمنا بتحديد بعض خصائص النافذة و جعلناها مرئية
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(436, 446);
        setTitle("Age Calculator");
        setLocationRelativeTo(null);
        setResizable(false);
        setLayout(null);
        setVisible(true);
 
    }
 
 
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                // التي ستنشئ النافذة createAndShowGUI() و بالتالي سيتم إستدعاء الدالة Main هنا قمنا بإنشاء كائن من الكلاس
                new Main();
            }
        });
    }
 
}



شاهد ايضا :














تعليقات