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

نظام حجوزات للفنادق عن طريق الانترنت

رائج
بدأه Ayah في 17 يناير 2009 · 40 رد · 24,565 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#26

أولاً لا يمكن وضع الفنادق بهذا الجدول طبعاً، لأن العناصر entities الخاصة بالفندق تختلف اختلافا كليا على العناصر الموجودة في جدول ال Lookup

فالفندق يحتاج إلى معلومات كثيرة منها الاسم وعناوين الاتصال والمدينة المتواجد فيها والتصنيف وغيرها من المعلومات

لاحظي هنا أن الفندق من ضمن معلوماته المدينة، فليكون النظام فعال وبشكل احترافي يجب أن يتم اختيار المدينة المتواجد فيها هذا الفندق من خلال قائمة أي (DropDownList (ddl) .

والمدن أصلا موجودين في جدول ال Lookups ، فعند عمل الإدخال للفندق يتم أولا وضع ddl نملئه بقائمة الدول - وهذه فقط لعملية الفلترة - أي لا يكون في الجدول الخاص بالفنادق حقل يسمى الدولة وإنما حقل يسمى المدينة وهو من نوع integer وإنما كما ذكرت ال ddl نملئه بالدول فقط لعملية فلترة المدن المرتبطة أصلا بالفندق.

وعملية ملء ال ddl بالدول تكون باستخدام جملة Select للاسم من جدول Lookups شرط أن يكون الأب نوعه دول

مثال

نقوم بإدخال في جدول Lookups سجل يسمى الدول ومثلا هذا السجل أخذ الرقم 3 وأن الأب له Null ، وأن السعودية والأردن وفلسطين وغيرها لهم ID معين ولكن جميعهم آبائهم رقم 3، في هذه الحالة تكون جملة ال Select كالتالي

Select * From Lookups where Lookup_Parent_ID=3

وتكون هذه الجملة هي المصدر لddl ومثلا كان اسم الكنترول ddlCountry_ID

إذا في هذه الحالة نقوم بملء القائمة الخاصة بالمدن من خلال جملة Select من جدول Lookups بدلالة اسم الدولة التي يقوم المستخدم باختيارها، وتكون الجملة كالتالي

Select * From Lookups where Lookup_Parent_ID=ddlCountry_ID.SelectedValue

****طبعا للتنبيه لن تكون الجملة حرفيا هكذا وإنما كمثال لأنه لا يوجد في جمل SQL وضع اسم كنترول وإنما الصحيح وضع Parameter*****

وأكيد هذه الجملة تكون مصدر لddlCity_ID ويتم وضعها في حدث Selected_Changedعند اختيار الدولة من ddlCoutry_ID

*************************

وكذلك الحال سيتم على الفندق باختيار التصنيف

مثلا قمنا بإدخال سجل في جدول Lookups يسمى تصنيفات الفنادق وكان ID لهذا السجل رقم 15 وأن 5نجوم و7نجوم و3نجوم وشقق مفروشة وغيرها لها ID لكل سجل وأن الأب الخاص بهم جميعا هو 15

في هذه الحالة في شاشة إدخال الفنادق نضع ddl خاص بالتصنيفات يكون المصدر لهذا الكنترول هو جملة Select من جدول Lookups بدلالة أن الأب يكون رقم 15

************************

أما فيما يتعلق في الزائر فموضوعه سهل

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

************************

ملاحظة هامة:

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

PMI_Logo_1.jpg

مدير مشاريع محترف - PMP
محلل أنظمة معتمد
مدير فريق برمجة تطبيقات ويب .Net

======|||||=====

======@ @====
==o0o== ( ) ==o0o===
================
كل منا يحتاج إلى الإرادة حتى يستطيع أن يقوم بعمله

#27

شكرا لك majed123 أنا كنت قد صممت جداول ليس باتياع هذه الطريقه

ولكني سأحاول تصميمها باتباع هذه الطريقه ولكن فكري مشوش لانني كنت قد صممت ما يقرب من 25 جدول :cry:

ولكن ؟؟؟؟ هناك شئ يحيرني :hot:

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

لقد توصلت الى نتيجه أنه يمكن الاستفاده من عملية الفلتره فقط عن اضافة فندق جديد أو زبون جديد

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

تم تعديل هذه المشاركة بواسطة Ayah في 31 يناير 2009 في 23:21

1+1=10

#28

الظاهر إنك ما فهمتي علي بشكل كامل ودقيق

اتباع هذه الطريقة ليس فقط لعملية البحث والفلترة، وأيضاً عندما قمت بطرح مثال عن أسماء الشوارع في منطقة معينة فإنه لم يكن هذا المثال لنظام الفنادق وإنما كان مثالا عاما فقط للتقريب للفهم.

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

فيمكن التعامل مع هذا الجدول واستخراج منه بيانات معينة حسب الطلب والشرط والتعامل مع جمل ال Select باعتبارها جداول وتخزينها في View أو Query، وسأعطي مثال لذلك

Select Lookup_ID as Country_ID, Lookup_Name_A as Country_Name_A From Lookups where Lookup_Parent_ID=20

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

**************مع ملاحظة أن التعامل مع Views يبطء عملية استعراض البيانات ويحبذ كتابة الجملة من خلال الكود *********************

أما بالنسبة للصفحة الرئيسة وهي عملية البحث عن الفنادق فقد قمت بشرحها في آخر طرح لي، وهي باختصار

وضع كنترول ddl يستعرض الدول وكنترول ddl آخر يستعرض المدن وبعد اختيار العميل الدولة نفلتر المدن حسب الدولة المختارة وبعد اختيار المدينة تظهر GridView تحتوي على بيانات الفنادق في هذه المدينة، ومن خلال GridView يقوم المستخدم باختيار فندق معين فتظهر تفاصيل الفندق في صفحة أخرى مثلا

اخواني الأعزاء

هل أسلوبي واضح بالشرح أم ماذا؟ وأرجو ممن فهم علي أن يحاول مساعدتي بالشرح بأسلوب آخر، فربما يكون أسلوبكم أفضل

وأرجو تفاعل الجميع

PMI_Logo_1.jpg

مدير مشاريع محترف - PMP
محلل أنظمة معتمد
مدير فريق برمجة تطبيقات ويب .Net

======|||||=====

======@ @====
==o0o== ( ) ==o0o===
================
كل منا يحتاج إلى الإرادة حتى يستطيع أن يقوم بعمله

#29

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

Hotel-Chain-table

Id-Hotel-Chain (pk)

Hotel-Chain-Name

No-Hotels

Hotel-table

Id-Hote(PK)

Id-Hotel-Chain (Fk)

hotel-Name

Hotel-Category

Hotel-Pic

Street

Zip-Code

city

State

Country

Phone

Fax

Email-Address

Home-Page

Note

Hotel-Owner-table

Id-Owner(PK)

ld-Hotel (FK)

Title

First-Name

Sur-Name

Position

Email-Address

أرجو منك أن تشرح لي طريقتك من خلال الجداول السابقه :wub:

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

1+1=10

#30

بعض الملاحظات

1. تسمية الحقول الأفضل أن تقسمها علامة _ وليس - ، لأنها ستؤثر عليك لاحقا في بعض الحالات عند كتابة الكود

2. تسمية الجداول ليس من الاحترافية أن تلحقها اسم table مثل Hetel_Table لأنه معروف أصلا بأنه جدول وأنه في قاعدة البيانات إذا هو جدول.

3. تسمية الجداول بالمقياس العالمي الاحترافي يكون بصيغة الجمع مثل Hotels لأنه جدول الفنادق وليس جدول الفندق.

4. إعطاء رمز للجدول ليدل على أي نظام فرعي يتبع، مثل جدول Lookups يصبح GLB_Lookups أي أنه Global بمعنى أنه يمكن استخدامه في جميع الأنظمة الفرعية، وأيضا جدول Hotels يصبح HTL ليدل على أن هذا الجدول تابع لنظام الفنادق، لأنه ممكن مستقبلا إضافة نظام فرعي لنظامك العام، والأفضل إعطاء رمز للجداول التابعة له، وذلك من أجل الترتيب وسهولة مراجعة الجداول واتباعها.

5. هل لكل فندق مالك واحد فقط أو يمكن أن يكون للفندق أكثر من مالك؟ على جميع الأحوال قمت ببناء قاعدة البيانات لك بناءاً على أن للفندق أكثر من مالك، وأن العلاقة بين الجدولين هي 1-M، أم في حالة إذا كان للفندق الواحد مالك واحد فقط عندها في جدول المالكين لا داعي لوجود حقل Hotel_ID فيتم إنشاء علاقة بين حقل Hotel_ID من جدول Hotels وربطه مباشرة مع جدول Owners مع حقل Owner_ID عندها تكون العلاقة 1-1.

6. ما المقصود ب حقل No-Hotels في جدول Hotel-Chain ؟ أعتقد وحسب فهمي أنه يدل على عدد الفنادق التابعة للسلسلة، فإن كان ذلك صحيحا فيمكنك الاستغناء عن هذا الحقل واحتساب عدد الفنادق من الفنادق التي ستدخل وتدرج تحت السلسلة، لذا أدرجت السلاسل في جدول Lookup لإنه في هذه الحالة لا نحتاج سوى الاسم

***********************

الشرح

أنشأت قاعدة بيانات باستخدام SQL Server 2005 تحتوي على التالي

جدول Lookups وآخر Hotels وآخر Owners

ففي جدول Lookups قمت بإدخال بعض البيانات التي تفيد في نظامنا وقسمت القوائم على قوائم عامة وقوائم الأنظمة كما في الصورة

post-22929-1233815787_thumb.jpg

من خلال الصورة السابقة يمكن ملاحظة البيانات وعملية إدخالها وتسلسلها.

ثم قمت ببناء جدول خاص بالفنادق وعطيته اسم HTL_Hotels ومحتويات الجدول في الصورة التالية

post-22929-1233815913_thumb.jpg

كما هو ملاحظ قمت بالاستغناء عن حقل الدولة، لأنه من خلال المدينة فقط يمكن الاستعلام عن الدولة والعكس صحيح، أي يكفينا فقط إدخال المدينة.

أما عند إنشاء الشاشة الخاصة بإدخال الفنادق فإنه يجب وضع قائمة منسدلة ddl للدول وبمجرد اختيار الدولة تفلتر القائمة المنسدلة الخاصة بالمدن ومن خلال ddl المدن يتم اختيار المدينة وحفظها في قاعدة البيانات.

ثم أنشأت الجدول المتعلق بأصحاب الفندق كما في الصورة

post-22929-1233815922_thumb.jpg

وأخيرا قمت ببناء العلاقات كما في الصورة التالية، وأعتقد أن من يشاهد الصورة سيفهم العلاقات بسهولة من غير تعقيد.

علماً بأن من الناحية المنطقية لا يجوز أن تكون هناك علاقة مغلقة بين 3 جداول، أما في حالة استخدام طريقة Lookup فإنه يمكن أن تكون علاقة مغلقة وليس عيبا في تصميم قاعدة البيانات.

post-22929-1233815689_thumb.jpg

**************************************************

تعليق على شرحي الذي طرحته في بداية المشاركة في هذا الموضوع

هو أنني أخطأت بأن قلت أن هذه الطريقة تسمى Simulation وهي بالحقيقة تسمى Normalization

PMI_Logo_1.jpg

مدير مشاريع محترف - PMP
محلل أنظمة معتمد
مدير فريق برمجة تطبيقات ويب .Net

======|||||=====

======@ @====
==o0o== ( ) ==o0o===
================
كل منا يحتاج إلى الإرادة حتى يستطيع أن يقوم بعمله

#31

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

لحظه لحظه اذن علي أن أقوم بوضع اسماء كل الدول وأيضا اسماء كل المدن في جدول GLB_Lookup :wub:

تم تعديل هذه المشاركة بواسطة Ayah في 6 فبراير 2009 في 23:11

1+1=10

#32

بالتوفيق

PMI_Logo_1.jpg

مدير مشاريع محترف - PMP
محلل أنظمة معتمد
مدير فريق برمجة تطبيقات ويب .Net

======|||||=====

======@ @====
==o0o== ( ) ==o0o===
================
كل منا يحتاج إلى الإرادة حتى يستطيع أن يقوم بعمله

#33

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

انا شغال دلوقتي في برنامج حجز فنادق.... ان شاء الله لما اخلص الداتابيز هارفعهالكم

#34

أنا شغاله برضه عالدااتابيز وان شاءالله سوف أقوم برفعها بأسرع وقت ممكن

1+1=10

#35

اخواني الاعزاء صباح الخير :wub: :wub:

لقد قمت بارفاق ملف الداتابيز الأولي أرجو ان تطلعو عليه واعرف رايكم فيه وكمان وين ممكن انا عندي اخطاء

شكرااااااا لكم

Booking.rar

1+1=10

#36

السلام عليكم ارجو الاهتمام اكثر

1+1=10

#37

أرسلي الملف مرة ثانية، الظاهر إنه الملف غير صالح

أرسليه باستخدام Backup

PMI_Logo_1.jpg

مدير مشاريع محترف - PMP
محلل أنظمة معتمد
مدير فريق برمجة تطبيقات ويب .Net

======|||||=====

======@ @====
==o0o== ( ) ==o0o===
================
كل منا يحتاج إلى الإرادة حتى يستطيع أن يقوم بعمله

#38

كيف يعني backup????

1+1=10

#39

post-22929-1236043391_thumb.jpg

post-22929-1236043406_thumb.jpg

post-22929-1236043420_thumb.jpg

post-22929-1236043430_thumb.jpg

PMI_Logo_1.jpg

مدير مشاريع محترف - PMP
محلل أنظمة معتمد
مدير فريق برمجة تطبيقات ويب .Net

======|||||=====

======@ @====
==o0o== ( ) ==o0o===
================
كل منا يحتاج إلى الإرادة حتى يستطيع أن يقوم بعمله

#40

السلام عليكم ورمضان كريم ... لقد اطلعت عل هذا الموضوع بالصدقة وبصراحة اعتقد انني تاخرت .... المهم الموضوع شيق وانا عندي بعض الملاحضات المهمة وسوف اكتبها لانني الان اكتب باستخدام النقال :) المهم لي عودة

#41

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

select * from rooms where room status =1 وايضا الغرف المحجوزة يمكن اعطاؤها لون معين لنقل الاحمر على سبيل المثال فلما يدخل الزبزن على الموقع تم يختار اي فندق فان الغرف تكون بالاحمر على الشاشة فهذا يعني انها محجوزة :)

ايضا بالنسبة لعملية البحث بـ dropdownlist فانا عندي متال بسيط وسهل يشرح الطريقة وساقوم برفعه ان شاء الله

بالنسبة لفئة الفندق يعني كم نجمة فلا اعتقد انه هنالك داعي لعمل جدول لهذه الفئة بل يمكن دمجها في جدول الفندق

Using dropdownlist.doc

تم تعديل هذه المشاركة بواسطة azizever83 في 12 أغسطس 2010 في 17:01

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