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

بريمج بسيط.. مفيد للمبتدئين

مغلق
بدأه فيصل الردادي في 21 سبتمبر 2005 · 37 رد · 4,400 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

هذا أول مشروع عملته في الجافا... وكان لمكتبة صغيرة.

ملاحظة: تحتاج جافا 1.5 .

ملاحظة اخرى: لاتنسى تضغط يمين الفأرة في كل جدول حتى تشاهد العمليات كاملة.

ملاحظة اخيرة: :D الكلاس الرئيسي Main.class

Library.rar

اسف سوف اقطعك من كتابة الكود، ادخل هنا لدقيقتين فقط

http://www.shbab1.com/2minutes.htm

#2

السلام عليكم

في الحقيقة مشروعك ممتاز و رائع ولو انك استخدمت قواعد البيانات لكان اسهل لك بكثير

عموما الله يعطيك العافية

وكان لي سؤال ( اذا امكن ) عن فائدة هذا السطر

this.setLocale(new Locale("ar"));

وشكرا

منقطع من حين لاخر

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

الملف amf.rad هو عبارة عن ملف ms access .

this.setLocale(new Locale("ar"));

فهذا لكي يقوم بتحويل الانساق الى اللغة العربية.

اسف سوف اقطعك من كتابة الكود، ادخل هنا لدقيقتين فقط

http://www.shbab1.com/2minutes.htm

#4

شكرا لك للرد السريع انا اعتقدت ان الملف amf.rad ملف عادي ( لاني لم الاحظ استخدام جمل استعلام لكنها فعلا مستخدمة )

و اسمح لي ان سالك سؤال اخر

الملف amf.rad كيف تم انشاؤه ؟

و هل يتطلب تشغيل البرنامج وجود ms access على الجهاز ؟

عذرا على كثرة الاسئلة

و شكرا لك مقدما

منقطع من حين لاخر

#5

البرنامج جميل جدا ،،،

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

و لكن هل يعمل على اللينكس ،، أعتقد أنه لا يعمل لأنه يستخدم برنامج الأكسيس ،، ولكن لماذا لا تستخدم قاعدةالبيانات hsql فهي خفيفة ترفقها مع النظام وتعمل في أي مكان (h)

#6

الأخ فيصل :

أولا - مشكور على المجهود الطيب ، و كما ذكر الأخ أبو الفؤاد كيف انشاء ملف rad

الأخ OLMX :

بما أنني لاأزال مبتدأ بالجافا .. ممكن تعطينا لمحة أولية عن قاعدة hsql .... أنا أعلم أن هذا السؤال لا يرتبط بالجافا بشكل مباشر 100% لكنني حقا لم أسمع بقاعدة البيانات هذه

ملاحظة : أفضل عدم مناقشة قاعدة البيانات هنا بل في موضوع جديد كي لا نغير مسار الموضوع هنا

مدونتي

http://mbnoimi.net

#7

تكلمت عن هذه القاعدة على هذا الرابط ....

/index.php?showtopic=76398

#8
اقتباس
الملف amf.rad كيف تم انشاؤه ؟

و هل يتطلب تشغيل البرنامج وجود ms access على الجهاز ؟

الملف amf.rad ملف access عادي.. ولكني بعد ان انتهيت غيرت اسمه ( على بالي مشفرة :D ) .

وهو لايتطلب وجود الاكسس على الجهاز.

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

للبيع والتخزين.

اقتباس
ولكن لماذا لا تستخدم قاعدةالبيانات hsql فهي خفيفة ترفقها مع النظام وتعمل في أي مكان

في ذلك الوقت لم اكن اعرف hsql . لكن مشكلة hsql انها تبقي البيانات في الذاكرة. يعني لما يبدأ النظام يقوم بتنفيذ جمل ال sql وتخزين الناتج في الذاكرة.

اسف سوف اقطعك من كتابة الكود، ادخل هنا لدقيقتين فقط

http://www.shbab1.com/2minutes.htm

#9

لا يشترط أن تكون البيانات في الذاكرة بل لك الحرية في وضعها في أي مكان في ملف أو في الذاكرة أو سيرفر أو أي مكان ،،،

#10
اقتباس
لا يشترط أن تكون البيانات في الذاكرة بل لك الحرية في وضعها في أي مكان في ملف أو في الذاكرة أو سيرفر أو أي مكان ،،،

ولكن عندما تختار ان تخزنها على السيرفر؛؛ يقوم بتخزين جمل sql فقط. هذا ماأعرفه على الاقل.

اسف سوف اقطعك من كتابة الكود، ادخل هنا لدقيقتين فقط

http://www.shbab1.com/2minutes.htm

#11

عذرا ملف rad هو نفسه ملف mdb فقط بتغيير الاسم ..... يا الهي !

مدونتي

http://mbnoimi.net

#12

آسف لم أقرأ الردين السابقين ...... هذه مشكلة RSS ... فهو غير مدعم بهذا المنتدى

مدونتي

http://mbnoimi.net

#13

البرنامج ممتاز جدا، واجهته الرسومية جميلة جدا، أعتقد أن المستخدم سيعرف كيفية التعامل مع البرنامج بسرعة!!

أرجو أن تأخذ هذا في الاعتبار، ربما تكون هذه النصائح معروفة لديك، لكنها ملاحظات لمن يقرأ الشفرة خاصة من المبتدئين:

1- في فئة MainMenu كان من الأفضل استخدام javax.swing.CardLayout بدل أن تحذف وتضيف اللوحات بنفسك،، الشفرة طويلة وكان يمكنك تقليصها إلى القليل!!، لاحظ أن المعلومات تضيع عندما أحول من واجهة إلى واجهة، افرض مثلا أن كتبت اسم كتاب معين ولم أكمل بياناته، وأردت حينها أن أبحث عن كتاب آخر، فعندما أرجع إلى إضافة كتاب جديد أجد القائمة فارغة.. (هذا بسبب أنك تصنع لوحة جديدة ولا تستخدم القديمة!!) تصفح CardLayout!

2- كان من الأفضل أن تستخدم الطريقة الأحادية Singleton في الفئة DBConnection! وخاصة أنها أداة للتوصل إلى قاعدة البيانات ويتم استخدامها في كل مكان من شفرتك!، فبدل أن تصنع new DBConnection كلما أردت التعديل على القاعدة، ليس عليك إلا استخدام Connection واحد فقط... وأيضا لماذا تفتح وتغلق الاتصال في كل عملية،، افتح الاتصال في بداية البرنامج وأغلق الاتصال عند نهاية البرنامج! كمثال بسيط!

public class DBConnection{
Statement statement;
Connection con;
DBConnection connection;
static{
	connection=new DBConnection();
}
//خاصة
private DBConnection{
//code
}
public void openConnection()throws Exception{
//Call this when program starts;
}
public void CloseConnection()throws Exception{//call this when program ends;}
public void addItem(){}
//other methods. code

//This is the method you should always call in your code to get the SOLE and Only DBConnection
public static DBConnection getInstance(){
return connection;
}
}

3- اطبع الأخطاء!، عند حدوث الخطأ استعمل printStackTrace حتى يعرف المبرمج والمطور والمستخدم الخطأ الذي حصل،!

try{
//code
}catch(Exception ex){
JOptionPane.show(message);/////
ex.printStackTrace();
}

4- لصنع سلة مشتريات، لا تستخدم LinkedList بل استخدم سلة مشتريات تحوي LinkedList بهذا يقل الخطأ، وتتضح الشفرة!

public class Basket{
LinkedList myItems;
public void addToBasket(){}
public void removeFromBasket(){}
public LinkedList getAllItems(){
return new LinkedList(myItems);
}

5- افصل منطق البرنامج عن الواجهة الرسومية: هذا يعني أن تضع منطق البرنامج في شفرة خاصة، وتضع شفرة الواجهة الرسومية في شفرة أخرى مفصولة تماما!!

6- استعمل أخطاء Exceptions منطقية تناسب برنامجك!!

المثال التالي يبين لك كيف تصنع سلة مشتروات ممتازة! هذا المثال يتعلق بالنقاط 4،5،6

public class ItemAlreadyInListException extends Exception{
Item item;
public ItemAlreadyInLintException(Item m){
item=m;
}
public Item getItem(){
return item;
}
}
public class Basket{
LinkedList myItems;
//code
public void addItem(Item m){

if(myItems.contain(m)) throw new ItemAlreadyInLintException(m);
//dont use JOptionPane
}

لاحظ أننا لم نستخدم JOptionPane في هذه الفئة!! الواجهة الرسومية التي ستنادي على أمر الإضافة عليها أن تصنع try-catch وبعدها تنشر JOptionPane!!

-6 استعمل TableModel ، ListModel وغيرها بدلا عن الأسلوب المتبع، هكذا تصبح بيانات الجداول والقوائم تحدث باستمرار! هذا سيكون أفضل من الأسلوب المتبع في ShowData مثلا!!

javax.swing.table.TableModel

7- استعمل LayoutManaget قدر المستطاع!! أو اجعل الواجهة حجمها ثابت,,, لو صغرنا النافذة ذهبت بعض محتوياتها!!

هذا بعض ما يحضرني!!

بالتوفيق!!

1
#14

السلام عليكم

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

زورو موقعنا

www.algabal.com

#15

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

Classes بـ LibTest .... أدى ذلك لتخفيض الأخطاء من 252 خطأ الى 4 خطأ بعد ذلك أعلمني المصرف بأن الطريقة PrintMode من السطر ضمن الملف PrinterManager

Printable pntable = table.getPrintable(JTable.PrintMode.FIT_WIDTH , head , tail);

غير موجودة لذلك قمت بتهميش الشيفرة المسؤولة عن ذلك .... بعد ذلك استطاع المصرف عمل Make بنجاح لكن عند عمل Run للتطبيق ظهرت رسالة الخطأ كما هو موضح بالصورة

new-1.rar

مدونتي

http://mbnoimi.net

#16

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

Classes بـ LibTest .... أدى ذلك لتخفيض الأخطاء من 252 خطأ الى 4 خطأ بعد ذلك أعلمني المصرف بأن الطريقة PrintMode من السطر ضمن الملف PrinterManager

Printable pntable = table.getPrintable(JTable.PrintMode.FIT_WIDTH , head , tail);

غير موجودة لذلك قمت بتهميش الشيفرة المسؤولة عن ذلك .... بعد ذلك استطاع المصرف عمل Make بنجاح لكن عند عمل Run للتطبيق ظهرت رسالة الخطأ كما هو موضح بالصورة

post-17104-1127424030_thumb.gif

مدونتي

http://mbnoimi.net

#17
22_09_05_02_28_58_1127424538new-1.gif

مدونتي

http://mbnoimi.net

#18

شكرا لك اخي ابومازن ... وانا اتفق معك في كل ماذكرته ولكن هذا المشروع عملته منذ فترة ليست بالقصيرة.

اخي C&DEL:

يتضح من الخطأ انك لاتستخدم java 1.5 .

تم تعديل هذه المشاركة بواسطة فيصل الردادي في 23 سبتمبر 2005 في 02:02

اسف سوف اقطعك من كتابة الكود، ادخل هنا لدقيقتين فقط

http://www.shbab1.com/2minutes.htm

#19

بالمناسبة لقد حاولت تحميل JDK من موقع SUN لكن الرابط لم يعمل .... يبدو أنه توجد مشكلة بالموقع

مدونتي

http://mbnoimi.net

#20

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

انا لا اعرف بالجافا سوى سمها فإستحملوني شوي

هذا الكود يشتغل على اي برنامج و جزاكم الله خير

#21
اقتباس
بالمناسبة لقد حاولت تحميل JDK من موقع SUN لكن الرابط لم يعمل .... يبدو أنه توجد مشكلة بالموقع

لقد واجهتني نفس المشكلة، فهل لدى أحد الحل.

#22

الرابط شغال ولا يوجد مشكلة.

تم تعديل هذه المشاركة بواسطة فيصل الردادي في 23 سبتمبر 2005 في 15:38

اسف سوف اقطعك من كتابة الكود، ادخل هنا لدقيقتين فقط

http://www.shbab1.com/2minutes.htm

#23

انا عامل الكثير من البرامج في صغري و لكن وجود ابو مازن بالمنتدى اخاف ان اضع اي شئ فورا سوف يشرح البرنامج و يطالع امعائه امام الجميع... :)

لذا انصحك اخي فيصل بان لا تضع شئ امام ابو مازن بل ارسله الى كافة الاعضاء كرسالة خاصة..

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#24

هاها. الحال من بعضه يا رامي!

برامجي القديمة مصممة بأسوأ من أسوأ برنامج مصمم في هذا المنتدى!! ووالله إني أقرأ برامجي القديمة والشفرة عدة مرات ولا أدري ماذا تفعل، رغم أنها تعمل! وأساليب عجيبة صنعتها وهي أغبى من أن أذكرها!!

خذ المثال التالي: أريد مثلا حفظ أحرف معينة في متغيرات. فبدل استخدامي للمصفوفة (مع أني كنت أعرف استخدام المصفوفة) استعملت:

x="h"
x2="u"
x3="s"
.....

وما خفي كان أعظم! أعتقد أني سأدرج موضوعا عن أغبى الشفرات! قريبا!!

أما برنامج الأخ فيصل فهو أفضل بمراحل من برامجي الحالية أيضا! فشفرته واضحة وهو يستعمل البرمجة الشيئية التوجه، ويستخدم GUI متطور، ويستخدم حزما لا أعرفها مثل أوامر الطباعة Printing API وأشياء أخرى لا أعرفها! أما نقدي فليس على الأساسيات في البرمجة، فبرنامجه رائع حقا وشفرته، لكني أتكلم عن منظور أفضل تصميم للشفرة وهو أمر لا يدرسه طالب البرمجة 1 ولا طالب البرمجة 2! لكن فيصل يعرفه وهو ما يسمى Design Patterns، وقد تكلم عنه بنفسه هنا:

البداية مع Design Patterns

وهل هذا يعني أن برامجي سليمة من الخطأ، أو سليمة من ضعف التصميم؟! إن وجود إصدارات كثيرة لبرامجي لهي دليل على أن التطوير مستمر ولا يتوقف!

لماذا أضع شفرات برامجي الجديدة هنا وليست فقط القديمةا؟ ربما لأني أحب غيري أن يتعلم، لكن السبب الرئيس هو أني أنتظر مليا إلى من يأتي وينتقد شفرتي حتى أتعلم طرقا جديدة!

بصراحة أحب أن أرى برامجكم الجديدة وأنا على يقين بخبرتكم! ولا تغركم رتبة خبير تحت اسمي!

فأنا تعلمت شيئا جديدا من أول برنامج تطبيقي لأخي فيصل وهو استخدام Printing API! مثلا!

تم تعديل هذه المشاركة بواسطة أبومازن في 23 سبتمبر 2005 في 18:42

#25
اقتباس
لماذا أضع شفرات برامجي الجديدة هنا وليست فقط القديمةا؟ ربما لأني أحب غيري أن يتعلم، لكن السبب الرئيس هو أني أنتظر مليا إلى من يأتي وينتقد شفرتي حتى أتعلم طرقا جديدة!

كلام من ذهب؛؛ ونحن هنا لنتبادل الخبرات.

فأنا مثلا استفدت كثيرا كثيرا من التصميم الكائني الذي استخدمه في الاله الحاسبة المتطورة. وكذلك استفدت كثيرا من مواضيع الاخ رامي العيساوي في jsp . وكلنا هنا لنتبادل الخبرات.

اسف سوف اقطعك من كتابة الكود، ادخل هنا لدقيقتين فقط

http://www.shbab1.com/2minutes.htm

هذا الموضوع مغلق.

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