دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(24)_برمجة تطيقات الجوال (6_التعامل مع نظام إدارة السجلات RMS)!

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

دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(24)_برمجة تطيقات الجوال (6_التعامل مع نظام إدارة السجلات RMS)!

مُساهمة من طرف أحمد مناع في السبت مايو 11, 2013 12:15 pm

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

أهلا وسهلا بكم إخوانى الكرام ....تعرفنا فى الدروس السابق على المكونات الرسومية التابعة للتويب Displayable و ايضا المكونات التابعة للتويب Items ....درس اليوم سنتعلم فيه سوياً كيفية التعامل مع Record Management System وقبل أن نبدأ تعالوا نتعرف على بعض المفاهيم :


1_ مفهوم نظام أدراة السجلات (RMS)

نظام إدارة السجلات RMS هو إختصار للجملة الانجليزية Record Management System وهو آلية أو قاعدة بيانات بسيطة المنحى للتخزين البيانات باستمرار واسترجاعها في وقت لاحق و التى يوفره المورد MIDlets أو معلومات الملف الشخصي الجهاز المحمول

2_ مفهوم السجلات Records

السجلات هى عبارة عن مصفوفة من البيانات من نوع bytes تمكن المطور من تخزين البيانات فيها عن طريق الكائن DataOutputStream و الكائن DataInputStream و ايضا الكائن ByteArrayOutputStream ويتم تحديد السجلات بشكل فريد و إعطاء كل سجل مفتاح اساسى بحيث يبدأ برقم واحد للسجل الاول داخل ما يسمى "مخزن السجلات " RecordStore

3_ مفهوم مخزن السجلات RecordStore

هو عبارة عن مجموعة من السجلات المرتبطة بمنصة MIDlets و التى ستبقى ثابتة معه ...ويتم تسمية كل مخزن سجل RecordStore بأسم فريد لتميز كل مخزن عن الاخر ويجب أن يكون الاسم من نوع String ولا يزيد عن 32 حرف كما أن أسماء مخزن السجلات حساسة لحالة الاحرف فمثلا"EgyTech " ليست مثل" egytech"









_ إنشاء مخزن السجلاتRecordStore ....توجد عدة طرق و اساليب لانشاء مخزن سجل RecordStore و ذلك على النحو التالى :

بداية يجب أستيراد المكتبة اللازمة rms.RecordStore فى اى من الطريق التى سيتم التعرف عليها و ذلك عن طريق الكود التالى :

الرمز:

import javax.microedition.rms.RecordStore;

الطريقة الاولى : الاعلان عن مخزن السجل RecordStore و إعطاء اسم مناسب له بأستخدام الكود التالى :

الرمز:
private RecordStore myegy = null;

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

الطريقة الثانية :فتح و انشاء مخزن السجل بدون أى شروط باستخدام الكود التالى :

الرمز:
RecordStore.openRecordStore("myegy",true);

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

الرمز:
RecordStore.openRecordStore("myegy", true,2, true);

وكما ترون فى الكود أعلاه يتضمن 4 عوامل :

_ myegy ....وهو أسم مخزن السجل المراد إنشائه

_ true ...وهى لانشاء المخزن الذى قمنا بتحديد اسمه و يمكنك جعلها flase أذا كنت قد أنشأتها بالفعل

_ الرقم 2 ....وهو متغير من نوع int للتعبير عن حالة الوصول هذا المخزن و تأخذ قيمتين 1_ AUTHMODE_PRIVATE و التى تعنى جعل المخزن myegy لا يمكننا الوصول اليه من خلال المنصات الاخرى .....2_AUTHMODE_ANY اى يمكن الوصول الية

_ True ....متغير منطقى للتعبير عن أمكانية الكتبة فى هذا المخزن من خلال المنصات الاخرى


_ الاستثناءات الناتجة من فتح و إنشاء مخزن السجل RecordStore
...
عند استخدامك لاحد الطرق السابقة فى انشاء وفتح مخزن السجل RecordStore سينتج الاستثناءات التالية :

_ RecordStoreException ....وهو خطأ يظهر فى حالة وجود مشكلة ما اثناء فتح وانشاء مخزن السجل

_ RecordStoreNotFoundException...وهو خطأ يظهر فى حالة محاولة فتح مخزن السجل غير موجود ....كأستخدامك مثلا الطريقة الاولى لانشاء المخزن واستخدام الامر التالى لفتحه :

الرمز:
RecordStore.openRecordStore("myegy",false);

ففى الكود السابق نحاول فتح المخزن myegy وقد قمنا باستخدام الامر false أى أن المخزن قد انشأناه من قبل

_ RecordStoreFullException .....هذا الخطأ يظهر فى حالة كون مخزن السجل ممتلىء

_IllegalArgumentException .....هذا الخطأ يظهر فى حالة كونك تستخدم اسم لمخزن السجل غير صالح للاستخدام .

_ إغلاق مخزن سجل

الرمز:


myegy.closeRecordStore();


_حذف مخزن سجل

الرمز:


RecordStore.deleteRecordStore("myegy");


_ الحصول على حجم مخزن السجل :

الرمز:
myegy.getSize();

و الكود السابق يقوم بإرجاع مقدار المساحة، بالبايت،

_ إضافة سجل الى مخزن السجلات .:

يتم إضافة سجل الى مخزن السجلات باستخدام الكود التالى :

الرمز:
myegy.addRecord(byte[] data, int offset, int numBytes)

وكما ترون فى الكود أعلاه يطلب منك ثلاث عوامل لاضافة سجل جديد وهى على النحو التالى :

المعامل الاول data .... وهى البيانات التي سيتم تخزينها في هذا السجل ويجب أن تكون البيانات ذات طول
صفري أى مصفوفة من نوع byte..... قد تكون هذه المعلمة فارغة null اذا اردت إضافة سجل فارغ
المعامل الثانى offset ...رقم المؤشر إلى المخزن المؤقت للبيانات من أول بايت ذات الصلة لهذا السجل
المعامل الثالث numBytes ....وهى عدد وحدات البايت المراد حجزها من المخزن myegy لهذا السجل

مثال :

الرمز:


byte[] name ="ahmed".getBytes();
  myegy.addRecord(name,0,name.length);

فى السطر الاول قمنا بعمل مصفوفه من نوع byte اسمها name ووضع فيها القيمة ahmed ....أما السطر الثانى فقمنا باضافة سجل جديد لمخزن السجل RecordStore باستخدام الاسلوب addRecord
مع تحديد البيانات المراد تخزنيها بالسجل وهى فى مثالنا هذا المصفوفة name ثم وضعنارقم المؤشر لهذا السجل (0)...وايضا عدد الواحدات لهذا السجل و ذلك باستخدام الاسلوب name.length

_ قراءة سجل


الرمز:


byte[] getRecord(int recordId)


كما ترون فى الكود اعلاه تجد أن الاسلوب getRecord يقوم بإرجال قيمة السجل بناء على رقم المعرف الخاص به record Id فقلد أخبرنا بداية الدرس أنه يتم حديد السجلات بشكل فريد و إعطاء كل سجل مفتاح اساسى id
بحيث يبدأ برقم واحد للسجل الاول ...أذن السجل الذى قمت باضافة فى المثال السابق المفتاح الاساسى له هو رقم 1 ...و بالتالى فإن القراءة ستكون كما يلى :


الرمز:
byte[] data = myegy.getRecord(1);


_ تحديث سجل ...اذا اردت تحديث سجل موجود من قبل ببعض البيانات نستخدم الكود التالى :

الرمز:


byte[] name ="syed".getBytes();
  myegy.setRecord(1,name,0,name.length);

طبعا رقم 1 هذا هو الرقم المعرف للسجل الذى قمنا بإضافته فى بداية المثال

_ حذف سجل ....اذا اردت حذف سجل أستخدم الكود التالى :

الرمز:
 myegy.deleteRecord(1);

_ عدد السجلات فى مخزن السجل .......يمكنك تحديد عدد السجلات فى مخزن السجل الحالى باستخدام الكود التالى :
الرمز:
 myegy.getNumRecords();

_ الحصول على حجم السجل بالبايت

الرمز:
myegy.getRecordSize(1);



الى هنا نكون قد انتهيا من الشرح المبدئى لكيفية التعامل مع نظام إدارة السجلات Rms تبقى لنا أن نأخذ تمارين عمليه على نظام السجلات فى دروس قادمة أن شاء الله تعالى

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

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

أحمد مناع
.
.

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

http://egy-tech.forumegypt.net

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

رد: دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(24)_برمجة تطيقات الجوال (6_التعامل مع نظام إدارة السجلات RMS)!

مُساهمة من طرف أحمد مناع في الأحد مايو 12, 2013 10:21 pm

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


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



الخطوة الاولى : قم بإضافة المكون form وذلك من خلال التويب flow وسحب المكون من القائمة Displayable

الخطوة الثانية : قم بإضافة المكون TextField ويتم وضعة على النافذة form

الخطوة الثالثة : نقوم بإضافة عدد 8 اوامر Command من نوع itemcommand ويتم تنسيقهم على النحو التالى :


إنهاء Label

Instance Name exit




فتح المخزن Label

Instance Name open



إضافة Label

Instance Name add



حذف Label

Instance Name delet



عدد السجلات Label

Instance Name no


عرض Label

Instance Name view




إغلاق Label

Instance Name close




حجم المخزن Label

Instance Name size




و ذلك من خلال نافذة الخصائص لوضع اسم مناسب لكل امر كما فى الشكل التالى :




كما يمكنك تغير Instance Name لاى أمر عن طريق تحديد الامر ثم النقر يميين ومن القائمة التى ستظهر أختر الامر rename ....وتلك هى الصورة النهائية للتصميم :





الخطوة الرابعة : كتابة الاكواد و ذلك على النحو التالى :


اولا : إنشاء الطرق اللازمة
_ الاعلان عن متغير للتعبير عن المخزن الذى سنقوم بإنشائة ....و ذلك باستخدام الكود التالى :

الرمز:
private RecordStore rs = null;



_ نقوم بعمل طريقة و ليكن openRecStore لفتح و انشاء المخزن و ذلك على النحو التالى :
الرمز:

public void openRecStore(){
try{
rs=RecordStore.openRecordStore("myegy", true );
}catch (Exception e){}
}

ويجب ملاحظة اننا استخدمنا التعليمة try ..... catch و ذلك لمعالجة الاستثناءات التى اشرنا لها فى شرح الدرس



_ نقوم بعمل طريقة لاغلاق المخزن .....على النحو التالى :

الرمز:

public void closeRecStore(){
try{
rs.closeRecordStore();
}catch (Exception e){}
}


_ نقوم لعمل طريقة لاضافة سجل للمخزن ,,,,,, وذلك على النحو التالى :

الرمز:


public void writeRecord(String str){
byte[] rec = str.getBytes();
try{
rs.addRecord(rec, 0, rec.length);
}catch (Exception e){}
}

و يمكنك ملاحظة تننا قمنا بإنشاء طريقة ذات معامل str

_ نقوم بعمل طريقة لعرض جميع سجلات المخزن .....وذلك على النحو التالى :

الرمز:


public void readRecords(){
try{
byte[] recData = new byte[5];
int len;

for(int i = 1; i <= rs.getNumRecords(); i++){
if(rs.getRecordSize(i) > recData.length){
recData = new byte[rs.getRecordSize(i)];
}
len = rs.getRecord(i, recData, 0);
form.append("--------------------");
form.append("أسم الكتاب_ " + i + " : " + new String(recData, 0, len));
form.append("--------------------");
}
}catch (Exception e){}

ويمكنك ملاحظة اننا قمنا باستخدام حلقة تكرارية للحصول على رقم id الخاص بكل سجل من سجلات المخزن باستخدام الطريقة getRecordSize ومن ثم استخدام رقم id للحصول على قيمة السجل عن طريق الطريقة getRecord



_ نقوم بعمل طريقة لجلب عدد السجلات فى المخزن .....على النحو التالى :
الرمز:

public void noRecord(String str){

try{
rs.getNumRecords();
}catch (Exception e){}
}



_ نقوم بعمل طريقة لمعرفة حجم المخزن بالبايت .....على النحو التالى :



 public void sizeRecStore(){
try{
rs.getSize();
}catch (Exception e){}
}

_ نقوم بعمل طريقة لحذف سجل من المخزن .....وذلك على النحو التالى :

الرمز:

public void deletRecord(int id){

try{
rs.deleteRecord(id);
}catch (Exception e){}
}


ثانيا : كتابة الاكواد اللازمة تحت كل أمر command وذلك على النحو التالى :

_ الامر open .......المطلوب منه فتح المخزن أذن سنقوم بتحديد الامر ثم النقر يمين ومن القائمة التى ستظهر نختار الامر go to source لفتح فافذة الكود ووضع مؤشر الكتابة تحت الامر كما فى الشكل التالى :



و نكتب الكود التالى وهو تنفيذ الطريقة التى قمنا بانشائها توا لفتح المخزن ....

الرمز:
 openRecStore();

_ الامر add .....نكتب الكود التالى

الرمز:
 writeRecord(textField.getString());

الكود اعلاه يقوم باخذ القيمة التى يكتبها المستخدم فى حقل النص textField وتخزنها فى المخزن كسجل .



الامر viwe ....نكتب الكود التالى :

الرمز:
 readRecords();

الامر delet ....نكتب الكود التالى :

الرمز:
String s = textField.getString();
int no =Integer.parseInt(s);
  deletRecord(no);

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






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

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

أحمد مناع
.
.

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

http://egy-tech.forumegypt.net

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

رد: دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(24)_برمجة تطيقات الجوال (6_التعامل مع نظام إدارة السجلات RMS)!

مُساهمة من طرف زهراء في الأربعاء مايو 15, 2013 11:59 am

درس اكثر من رائع استاذى العزيز

زهراء
........
........

تاريخ التسجيل : 18/02/2011
المساهمات : 262
النقاط : 372
التقيم : 24
الدولة : مصر
الجنس : انثى

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

رد: دورة الجافا الرسومية بأستخدام NetBeans ...الدرس(24)_برمجة تطيقات الجوال (6_التعامل مع نظام إدارة السجلات RMS)!

مُساهمة من طرف أيمن الإبراهيم في الإثنين أغسطس 19, 2013 2:28 pm

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

أيمن الإبراهيم
........
........

تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 397
التقيم : 0
الدولة : سوريا
الجنس : ذكر

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

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


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