• 0
th3g3ek

برنامج ترتيب الملفات

سؤال

السلام عليكم اخواني الكرام 

 

لقد قمت اليوم بالانتهاء من برنامج ترتيب الملفات وهو بالمرفقات بصيغة jar + السورس كود

 

 

 

 

FilesSort.zip

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

4 إجابة على هذا السؤال .

  • 0

السلام عليكم اخواني الكرام 

 

لقد قمت اليوم بالانتهاء من برنامج ترتيب الملفات وهو بالمرفقات بصيغة jar + السورس كود

لم أفهم مايقوم به البرنامج ، ياريت شرح بسيط عن البرنامج ، ترتيب أبجدي أو بالملفات، إلخ ، نقلها أو نسخها بالترتيب :)

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 

لم أفهم مايقوم به البرنامج ، ياريت شرح بسيط عن البرنامج ، ترتيب أبجدي أو بالملفات، إلخ ، نقلها أو نسخها بالترتيب :)

 

يقوم بترتيب الملفات حسب الصيغة بأمكانك تحميل الملف وتجربته

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

 

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

 

إليك ملاحظاتي عن البرنامج بشكل سريع :

  • الـ progressbar يجب أن يتقدم حسب نسبة العمل المُنجز و هذا ما لم تفعله.
  • حاول أن تضع خيار للنسخ و آخر للنقل بدل النقل فقط ثم فكر في وضع زر لتوقيف العملية و آخر لإلغائها (pause, cancel)
  • يُفضل أن تضع JLabel بالأسفل تُظهر فيه الملف الذي يتم نقله الآن حتى يكون المُستخدم على علم بتفاصيل العملية لأن المستخدم إذا قام مثلا بنقل 100 ملف و أخذ الأمر 5 دقائق و لم يُظهر له البرنامج، لا نسبة تقدم العملية و لا اسم الملف المُعالج سيظن أن البرنامج لا يعمل بشكل صحيح !
  • احذر من تقييد الامتدادات، مثلا برنامجك لا يستطيع نقل ملفات VOB ! حاول أن تأخذ بعين الاعتبار وجود امتدادات معينة لم تكن على علم بها أثناء كتابتك الكود
  • رسائل الخطأ فضفاضة جداً، حاول وضع رسائل يستطيع المستخدم أن يفهم من خلالها طبيعة الخطأ
  • عند الضغط على "تصفح" يجب أن تسمح باختيار المجلدات فقط
  • إن تركت الـ  jtextfields تبع التصفح enabled يجب أن عليك أن تأخذ بعين الإعتبار مجموعة الـ exceptions المحتلملة (مثلا، إذا أدخل المستخدم مساراً غير صحيح ستحصل على استثناء من نوع NullPointerException)
  • أعتقد أنه عند تحديد مسار صحيح، من المنطقي جداً نقل الملفات الموجودة في الـ subfolders (هل فكرتَ في الأمر ؟)
  • تعاملك مع الـ CheckBoxs و الامتدادات لم يكن جيدا، ما دمتَ تنوي التعامل مع عدد كبير من كائنات من نفس النوع فيُستحسن وضعها داخل ArrayList أو HashMap مثلا و الوصول للكائنات عن طريق الـ index أو الـ value إن أردت.
  • في الكلاس acListener قمت بالإعلان عن المتغيرات calendar, Second, Second1, minute1, minute لكن لم تستخدمها !
  • مبدأ الـ OOP أتى أساساً للتخلص من التعامل مع متغيرات فئة في فئة أخرى (استخدام الـ public يجب أن يكون محدوداً جداً و لا يُنصح به)
  • قمتَ بالتعامل مع متغيرات الكلاس FilesSort داخل الكلاس acListener، كان يجب عليك أن تستخدم الـ observer pattern إن كنتَ ملزما بهذا مع أنني أرى أن إضافة الـ actionListener ليست سبباً لإنشاء كلاس جديد ! (لو استخدمت ArrayList ووضعتَ فيه الـ checkBox ستجد أن الكود تقلص بشكل كبير)
  • المنطقي هو أن ترث الفئة FilesSort بشكل مباشر JFrame، وجود متغير داخل الفئة اسمه frame يُمثل النافذة يعني أن FilesSort ليست نافذة و إنما هي كائن يحوي مجموعة كائنات من بينهم نافذة !
  • أشجعك جداً على استخدام الكود لرسم الواجهة.
  • setLayout(null)l لا أنصح بها، كان من الأفضل أن تكتب LayoutManager خاص بك ثم تقوم باستخدامه لتحديد تموضع كل مُكون مع أنني أرى أن استخدام الـ Layouts الموجودة مُسبقاً يكفيك.
  • من ناحية جودة الكود و جعل تطوير البرنامج أكثر سلاسة، قم بفصل المكونات الثلاث : model, view, controller.
  • إذا قام المستخدم بنقل ملفات ذات حجم كبير، سيتعطل الـ thread تبع الـ EDT، من الأفضل أن تضع كود نقل الملفات في thread منفصل.

 

 

بالتوفيق.

تم تعديل بواسطه Snack3r
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

 

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

 

إليك ملاحظاتي عن البرنامج بشكل سريع :

  • الـ progressbar يجب أن يتقدم حسب نسبة العمل المُنجز و هذا ما لم تفعله.
  • حاول أن تضع خيار للنسخ و آخر للنقل بدل النقل فقط ثم فكر في وضع زر لتوقيف العملية و آخر لإلغائها (pause, cancel)
  • يُفضل أن تضع JLabel بالأسفل تُظهر فيه الملف الذي يتم نقله الآن حتى يكون المُستخدم على علم بتفاصيل العملية لأن المستخدم إذا قام مثلا بنقل 100 ملف و أخذ الأمر 5 دقائق و لم يُظهر له البرنامج، لا نسبة تقدم العملية و لا اسم الملف المُعالج سيظن أن البرنامج لا يعمل بشكل صحيح !
  • احذر من تقييد الامتدادات، مثلا برنامجك لا يستطيع نقل ملفات VOB ! حاول أن تأخذ بعين الاعتبار وجود امتدادات معينة لم تكن على علم بها أثناء كتابتك الكود
  • رسائل الخطأ فضفاضة جداً، حاول وضع رسائل يستطيع المستخدم أن يفهم من خلالها طبيعة الخطأ
  • عند الضغط على "تصفح" يجب أن تسمح باختيار المجلدات فقط
  • إن تركت الـ  jtextfields تبع التصفح enabled يجب أن عليك أن تأخذ بعين الإعتبار مجموعة الـ exceptions المحتلملة (مثلا، إذا أدخل المستخدم مساراً غير صحيح ستحصل على استثناء من نوع NullPointerException)
  • أعتقد أنه عند تحديد مسار صحيح، من المنطقي جداً نقل الملفات الموجودة في الـ subfolders (هل فكرتَ في الأمر ؟)
  • تعاملك مع الـ CheckBoxs و الامتدادات لم يكن جيدا، ما دمتَ تنوي التعامل مع عدد كبير من كائنات من نفس النوع فيُستحسن وضعها داخل ArrayList أو HashMap مثلا و الوصول للكائنات عن طريق الـ index أو الـ value إن أردت.
  • في الكلاس acListener قمت بالإعلان عن المتغيرات calendar, Second, Second1, minute1, minute لكن لم تستخدمها !
  • مبدأ الـ OOP أتى أساساً للتخلص من التعامل مع متغيرات فئة في فئة أخرى (استخدام الـ public يجب أن يكون محدوداً جداً و لا يُنصح به)
  • قمتَ بالتعامل مع متغيرات الكلاس FilesSort داخل الكلاس acListener، كان يجب عليك أن تستخدم الـ observer pattern إن كنتَ ملزما بهذا مع أنني أرى أن إضافة الـ actionListener ليست سبباً لإنشاء كلاس جديد ! (لو استخدمت ArrayList ووضعتَ فيه الـ checkBox ستجد أن الكود تقلص بشكل كبير)
  • المنطقي هو أن ترث الفئة FilesSort بشكل مباشر JFrame، وجود متغير داخل الفئة اسمه frame يُمثل النافذة يعني أن FilesSort ليست نافذة و إنما هي كائن يحوي مجموعة كائنات من بينهم نافذة !
  • أشجعك جداً على استخدام الكود لرسم الواجهة.
  • setLayout(null)l لا أنصح بها، كان من الأفضل أن تكتب LayoutManager خاص بك ثم تقوم باستخدامه لتحديد تموضع كل مُكون مع أنني أرى أن استخدام الـ Layouts الموجودة مُسبقاً يكفيك.
  • من ناحية جودة الكود و جعل تطوير البرنامج أكثر سلاسة، قم بفصل المكونات الثلاث : model, view, controller.
  • إذا قام المستخدم بنقل ملفات ذات حجم كبير، سيتعطل الـ thread تبع الـ EDT، من الأفضل أن تضع كود نقل الملفات في thread منفصل.

 

 

بالتوفيق.

 

 

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .