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

إضافة كلمة بالمكان الصح

بدأه صمت الفراشات في 8 مايو 2011 · 8 رد · 757 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندي مشكلة باضافة كلمة جديدة للقاموس

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

و بدي لما ابحث عن الكلمة يطبعلي الكلمة و معناها بفريم جديدة

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import javax.imageio.*;
public class Main {

    /** Creates a new instance of Main */
    public Main() {
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        main_class m = new main_class();
        m.dislpay();

    }

}


class main_class extends JFrame
{
        JButton b1 = new JButton("               add new word                  ");
        JButton b2 = new JButton("            search for a word              ");
        JButton b3 = new JButton("            print all dictionary              ");
        JButton b4 = new JButton("save");
        JButton b5 = new JButton("back");
        JButton b55 = new JButton("back");
        JButton b6 = new JButton("search");

        JTextField text1 = new JTextField(50);
        JTextField text2 = new JTextField(50);
        JTextField text3 = new JTextField(20);

        int count = 0 , p = 0;
        Dic [] dic = new Dic[100];

     public main_class()
     {
            for(int i=0;i<100;i++)
         {
            dic = new Dic();
         }
     }

     public void dislpay ()
     {
         main_menu mm = new main_menu();
         mm.setVisible(true);
     }

class main_menu extends JFrame
{
    public main_menu ()
    {
        setTitle("Dictionary System");
        setSize(400, 400);
        setLocation(100,50);
        JLabel l1 = new JLabel("wellcome ");

        setLayout(new BorderLayout());
        JPanel p1 = new JPanel();
        add(p1,BorderLayout.NORTH);
        JPanel p2 = new JPanel();
        add(p2,BorderLayout.CENTER);
         JPanel p3= new JPanel();
        add(p3,BorderLayout.SOUTH);
        p2.add(b1);
        p2.add(b2);
        p2.add(b3);
        mylistener a1 = new mylistener();
        mylistener a3 = new mylistener();
        mylistener a2 = new mylistener();

        b1.addActionListener(a1);
        b2.addActionListener(a2);
        b3.addActionListener(a3);

    }
}

class add extends JFrame
{
  public add()
  {
        setTitle("add new word");
        setSize(400, 200);
        setLocation(100,50);
        JLabel l1 = new JLabel("الكلمة");
        JLabel l2 = new JLabel("المعنى");
        JButton l3 = new JButton("لإضافة كلمة جديدة");
        JPanel p1 = new JPanel();
        add(l1);
        add(p1,BorderLayout.NORTH);

        JPanel p2 = new JPanel();
        p2.setLayout(new GridLayout(2,2));
        p2.add(l1);
        p2.add(text1);
        p2.add(l2);
        p2.add(text2);

        add(p2,BorderLayout.CENTER);
        JPanel p3 = new JPanel();
        p3.add(b4);
        p3.add(b5);
        add(p3,BorderLayout.SOUTH);
        mylistener a1 = new mylistener();
        mylistener a2 = new mylistener();

        b4.addActionListener(a1);
        b5.addActionListener(a2);


  }
}

class search extends JFrame
{
  public search()
  {
        setTitle("search");
        setSize(400, 200);
        setLocation(100,50);
        JLabel l1 = new JLabel("أدخل الكلمة المراد البحث عنها ");

        JButton l3 = new JButton("البحث عن معنى كلمة");
        JPanel p1 = new JPanel();
        add(l1);
        add(p1,BorderLayout.NORTH);

        JPanel p2 = new JPanel();
        p2.add(l1);
        p2.add(text3);
        p2.add(b6);

        add(p2,BorderLayout.CENTER);
        JPanel p3 = new JPanel();
        p3.add(b5);
        add(p3,BorderLayout.SOUTH);

        mylistener a1 = new mylistener();
        mylistener a2 = new mylistener();

        b5.addActionListener(a1);
        b6.addActionListener(a2);

  } 



}


class dis extends JFrame
{
    public dis ()
    {
        setTitle("display words");
        setSize(400, 200);
        setLocation(100,50);
        JLabel l1 = new JLabel("The word meaning is :");

        JPanel p1 = new JPanel();
        p1.add(l1);
        add(p1,BorderLayout.NORTH);

        JPanel p2 = new JPanel();

        add(p2,BorderLayout.CENTER);

        JPanel p3 = new JPanel();
        p3.add(b55);
        add(p3,BorderLayout.SOUTH);
        mylistener a1 = new mylistener();

        b55.addActionListener(a1);
    }
}

 class mylistener implements ActionListener {

        public void actionPerformed(ActionEvent e) {
            if(e.getSource()==b1) // كود اضافة كلمة جديدة
            {
                add a = new add();
                a.setVisible(true);
                /////

            }

            if(e.getSource()==b2) // كود البحث عن كلمة
            {
                search s = new search();
                s.setVisible(true);
                ////
            }

            if(e.getSource()==b4) 
            {
                String S1 = text1.getText();
                String S2 = text2.getText();

     if(count==0)
                {
                    dic[0].setWord(text1.getText());
                    dic[0].setMean(text2.getText());
                    count++;
                }
                else {
                for(int i=0;i<=count;i++)
                {
                    if(Integer.parseInt(text1.getText())<=Integer.parseInt(dic.word) )
                    {
                        for(int k=count;k>i;k--)
                        {
                            dic[k].setWord(dic[k-1].getWord());
                            dic[k].setMean(dic[k-1].getMean()) ;
                        }
                        dic.setWord(S1) ;
                        dic.setMean(S2) ;



                        count++;
                        break ;
                    }
                }
            }
            } 
            if(e.getSource()==b5) //عودة للشاشة الرئيسية
            {
                main_menu m = new main_menu();
                m.setVisible(true);
            }

            if(e.getSource()==b55) //عودة للشاشة السابقة
            {
                search s = new search();
                s.setVisible(true);
            }

            if(e.getSource()==b6) 
            {
                dis d = new dis();
                d.setVisible(true);
            }

             if(e.getSource()==b3) 
            {

              //كود الطباعة
            }




        }

 }



}






class Dic 
{
    String word ;
    String mean ;

    public Dic()
    {
        word = "0" ;
        mean = "0" ;
    }

    public void setWord(String word)
    {
        this.word = word ;
    }

    public void setMean(String mean)
    {
        this.mean = mean ;
    }

    public String getWord()
    {
        return word ;
    }

     public String getMean()
    {
        return mean ;
    }


}
#2

Collections.sort

#3
هويدي كتب:

Collections.sort

بس مش هيك لازم استخدم الاري لست ؟!

و اذا لأ فوين بدي استخدمها بالزبط ؟

#4

الأفضل أن تستخدمى SortedSet

بدل من

Dic [] dic = new Dic[100];

إستخدمى:

java.util.Set<Dic>  dic = new java.util.SortedSet<Dic>();

إقري عنها في ال Javadoc

1
#5

بصراحة ما فهمت اشي منها ، هذه أول مرة بشتغل علي انت بتحكي فيها !!

انا كملت بنفس الطريقة الي بديت فيها ، بس انه ظهرت مشكلة ثانية ، لانه الكلمات رح تترتب حسب قيمتها مش حسب الترتيب الابجدي الها

على كلن شكرا كثير على المساعدة :)

#6

طيب فين الكلاس Dic ?

597657.png
#7
Eng.Fouad كتب:

طيب فين الكلاس Dic ?

اخر كلاس بالبرنامج

الي فيها متغيرين الكلمة و معناها

و ميثودات عملية set & get لهذه المتغيرات

#8

مثل ماقال اخوي هويدي يجب عليك استخدام الست والجنيرك المستخدم هو تحديد نوع المدخلات وهي من نوع سترنق

والحلو فيها انها تمنع التكرار

والله الموفق

1
#9

اخي اولا اريد ان اقترح عليك تعديل في منطق البرنامج ، في الكلاس main_class بدلا ما تعمل Dic[] الاصح انك تعمل Dic فالمنطق يقول انك تعمل قاموس واحد

وفي داخل الكلاس Dic بدل ما تعمل String word اعمل List<String> words فالمنطق يقول ان القاموس يحتوي على عدة كلمات والاصح ان تقوم بعمل كلاس جديد اسمه

Letter وتجعل الكلاس Dict يحتوي على List<Letter> letters

والكلاس Letter يحتوي على List<String> words

هذا شيئ طبيعي لان القاموس يحتوي على تبويبات للأحرف وكل حرف يحتوي على مجموعة كلمات.

للترتيب بالوضع الحالي ليس امامك الا ان تستخدم Arrays.sort() التي هي static method على Dic[] ولكن تذكر ان ان Dic[] مصفوفة references وليست مصفوفة Strings

1

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

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