تعلم معي خطوة خطوة صنع برنامج لتسيير المخزون و التسويق
#1
السلام عليكم و رحمة الله و بركاته

تمت اعادة الدرس باضافات جديدة...
الرد
#2
السلام عليكم و رحمة الله و بركاته.

سنشرع في هذا الطرح إن شاء الله ، صنع برنامج لتسيير المخزون و كذا التسويق .
بعد نهاية طرح الموضوع ، سوف تكون أخي :
ـ مدركا ، وقادرا على صنع البرنامج بمفردك ، لا سيمـــا أن تكون عملية البرمجة على طريقتك ، يعني :
ـ/ـ بامكانك تغيير الشكل الخارجي و المنظر الجمالي و كذا ترتيب المكونات كيفما شئت ، و كيفمــا تراها مناسبة.
ـ/ـ بامكانك حذف و إضافة ما تشاء ، كتعديل قاعدة البيانات باضافة أو حذف حقول معينة .
ـ/ـ إذا تابعت كل الطرح جيدا و تمكنت من الفهم الحقيقي ، أخيرا أقول أنه بامكانك برمجة هكذا برامج بمفردك و بأفكارك الخاصة ، بدون أي تغيير أو إضافة أو حذف ، بل سيكون 100/100 انجازك الخاص ، و لا يقتصر الأمر على صنع برنامج لتسيير المخزون و التسويق فحسب بل كل برنامج على تلك الشاكلة ، كتسيير مؤسسة تعليمية و ماشابه.

هل تريد التأكد ممــا أقول ؟ هل أنت مهتم ؟ إذن هل أنت جاهز ؟
فلنبدأ على بركة الله:
نظرة عامة عن ماهية و استعمالات البرنامج :
إذا كان لديك أو لغيرك مثلا ، محل لبيع الحواسيب و ما يتعلق بها من لواحق كلوحة المفاتيح و الفأرة و الشاشة و اللوحات الأم ، و كذا وحدات التخزين المختلفة والمعالجات و...و.... ، وكل قطعة لك منها عدة أنواع و عدة شركات مصنعة و بكميات مختلفة ، فهل تستطيع أن تكون مدركا لكل ما يحوز عليه محلك ؟ بالطبع لا .
و إذا كنت تدون كل شيء يدويا على سجل خاص ، فهل تستطيع أن ترد على زبون واحد (أقول 01 فقط) يسألك : أحتــاج شراء كل ما لديك من الشاشات ، فكم لديك ؟ و أحتـاج 98 لوحة مفاتيح ، فهل بحوزتك هذه الكمية ؟ يليه مباشرة زبون آخر يقول: أريــد كل ما تبقى لديك من لوحات المفاتيح ، كم لديك ؟ و زبون آخر يسألك .... و آخر و آخر .
يأتيك بعد ذلك بائع بالجملة يعرض صفقة معينة ، فهل أنت مدرك للمبلغ الذي بحوزتك لغرض إتمام الصفقة ؟
و هل أنت مدرك لما للكمية المناسبة التي تحتاجها ؟

يضيع منك مبلغ معين (يسرق مثلا من طرف زبون أو أحد عمالك ) فهل تستطيع أن تدرك ذلك ؟
نقطة أخيرة على سبيل التوضيح و ليس الحصر : كل التجارات لا تخلو من المديونية (لها أو عليها) ، و....و.... فهل تستطيع السيطرة و الإحاطة بكل ذلك ؟ بالطبع لا


ـ لا أريــد الإطالة و إدخالك بمتاهات لا مخرج لك منهــا . و بكل بساطة أقول أنه يستحيل عليك إدرة و تسيير تجارتك من غير سيطرة كاملة ، و الإحاطة بكل كبيرة و صغيرة ، وعلى هذا فلا مناص لك إلا أن تستعمل الحاسوب ببرنامج خاص (برنامج لتسيير المخزون و كذا التسويق_وهو باب القصيد)، يزيل عنك كل عناء ، و تكون النتائج على كل المستويات إجابية 100/100.
قاعدة المعطيات أو البيانات:
قاعدة المعطيات (database) هي تركيب تستطيع من خلاله تخزين كمية كبيرة من المعطيات التي تربطها علاقات معينة ، و حقيقة الأمر فإن قاعدة البيانات ماهي إلا ملف أو مجموعة ملفات كباقي الملفات ، تخزن على القرص الصلب ، و لكن ما يميزها هو قدرتك على كتابة و قراءة المعطيات منها ، باستخدام الوسائل التي تمنحها لك برامج قواعد البيانات ، دون الحاجة إلى التعامل المباشر مع الملف ، و هو ما يجعل الأمر أكثر ليونة و غاية في السهولة و التنظيم.
العنصر الأساسي بقواعد البيانات هو الجدول ، و يتكون من عدة أعمدة (و تسمى الحقول) و عدة أسطر ( و تسمى السجلات )
سوف نرى كيف يتم إنشاء الجداول ، و قبل ذلك سوف نتطرق نظريا إلى الجداول التي سوف ننشئها أو نحتاجها في برنامجنــا.

1/
ـ لدينــا مخزن للسلع ، و عليه فنحن بحاجة لإنشاء جدول خاص لذلك ، يتكون من :
رمز أو كود المادة (السلعة) / اسم المادة / الكمية / العتبة (أو الحد الأذنى: و هي الكمية المحددة من طرفنـا التي يخبرنا البرنامج أثناءها أنه علينـا تزويد الكمية (شراء هذا النوع) لأنه يكاد ينفذ من المخزون ، أو لنقل أنه عبارة عن تنبيه لعدم الوقوع في مشكلة مع الزبائن بعد نفاد مفاجئ لهذه المادة) / رمز أو كود الممون الذي نشتري منه السلع / الاسم التجاري للممون / تاريخ الشراء / سعر البيع / الحد الأذنى لسعر البيع (وهو السعر الممنوع تجاوزه ، مثلا سعر البيع :100 ، الأذنى : 80 ، بحيث يمنع بيع المادة بأقل من : 80 ) .
إذن في الجدول لدينـا 09 حقول .
2/ ـ يتردد علينا عدة زبائن ، و عليه فنحن بحاجة لجدول خاص بالزبائن ، يضم ما يلي :
رمز الزبون / الإسم التجاري / الإسم و اللقب (ليكن حقل واحد للاسم و اللقب للتسهيل و عدم الحاجة الكبيرة لذلك ، فهي معلومات محلية في حالة الحاجة للإطلاع عليها من طرفنـا نحن فقط ، و هي أقل أهمية) / الهاتف و العنوان (أيضا حقل واحد فقط).
إذن لدينا 04 حقول.
3/ ـ جدول خاص بالممولين الذين نقتني منهم السلع ، يضم ما يلي:
رمز الممون / الإسم التجاري / الإسم و اللقب / الهاتف و العنوان .
إذن لدينا 04 حقول.
4/ ـ جدول خاص بمعلومات عن الفاتورة ، و الفائدة تتمثل في اتاحة امكانية أرشفة الفواتير ، للإطلاع عند الحاجة على أي فاتورة معينة استنادا إلى رقمها ، و تاريخها و صاحبها ، حتى إذا حصل منا أي خطأ يمكن تداركه و اكتشافه ، و كذلك إذا تقدم أي زبون يحمل فاتورة معينة يمكن لنا معاينتها بالبرنامج من خلال النسخة المتوفرة لدينا الكترونيا. كذلك نحتاجها في قضية تسيير الديون مثلا فاتورة بمبلغ 200 دفع الزبون 120 فقط تحت الحساب و بقي 80 ، عاود نفس الزبون عملية شراء أخر لفاتورة قيمتها 70 و دفع فقط 50 و بقي 20 ، بهذا الزبون عليه دين قيمته 80+20=100 و هذا فيه تفصيل و اثبات لكل العمليات التي اجريت مع كل زبون على حدى ، لاتاحة امكانية تسيير محكم و دقيق . و هناك فوائد حقيقية أخرى نراها لاحقا.
يضم الجدول ما يلي 04 حقول :
رقم الفاتورة / رمز الزبون / الاسم التجاري للزبون / تاريخ الفاتورة .
5/ ـ جدول خاص بالمواد التي تم بيعها، يضم ما يلي:
رقم الفاتورة / رمز المادة / اسم المادة / الكمية / سعر الوحدة / السعر الإجمالي / الضريبة / السعر الإجمالي بكل الرسوم / رمز الزبون / الاسم التجاري للزبون .
إذن لدينـا 10 حقول .
6/ ـ جدول خاص بالمواد التي تم شرائها، يضم ما يلي:
رمز المادة / اسم المادة / الكمية / الحد الأدنى للكمية / سعر الوحدة / السعر الإجمالي / الضريبة / السعر الإجمالي بكل الرسوم / رمز الممون / الاسم التجاري للممون / تاريخ الشراء / سعر البيع / الحد الأدنى لسعر البيع .
إذن لدينـا 13 حقل .
إذن استعملنا 06 جداول ، و لك أيضا أن تضيف جداول أخر حسب الحاجة ، كجدول خاص بالموظفين لديك مثلا ،كأمين المال ، أمين المخزن .
عموما نقتصر على 06 جداول فقط ، بعد اختتام الموضوع كليا ، لك أن تعدل أو تضيف ما شئت حسب حاجتك كما سلف ، الآن عليك فقط التقيد بالطرح فقط والمتابعة معنا ، خطوة خطوة .
كانت هذه نظرة عامة حول البرنامج و قواعد البيانات الخاصة به ، و سوف نباشر التنفيد برمجيا في الدرس التالي إن شاء الله.
..../ يتبع /...
[-] كل من 1 user says قال شكرا ل nabilkeb على المشاركة المفيدة
  • bi4ani
الرد
#3
السلام عليكم ورحمة الله
بعض الملاحظات السريعة اخي نبيل
إقتباس :5/ ـ جدول خاص بالمواد التي تم بيعها
هناك تكرار بالمعلومات بالجدول دون فائدة كمثال
الحقول التي يتم حسابها لاداعي منها، مثل: السعر الإجمالي / السعر الإجمالي بكل الرسوم
من " رمز الزبون" يمكن معرفة " الاسم التجاري للزبون" فلا داعي لتكراره
ثم " رمز الزبون" من الاحسن وضعه بحدول معلومات عن الفاتورة
نفس الشيئ بالنسبة للمواد التي تم شرائها
و من الاحسن ان يكون مكون من جدولين ايضا
الرد
#4
لكي يكون البرنامج متكامل نسبيا ، أحببنـا عدم اهمال الجانب الجمالي :
يتطلب الأمر تنصيب Skin خاص لذلك.
إن صح التعبير هو عبارة جلد خاص يغلف البرنامج بمكونات جميلة ، و بذلك يأخذ المشروع حلة جمالية على الطريقة الإحترافية ، التي تريح المستعمل .
هناك الكثير جدا من Skins و هي مكونات خارجية (ليست تابعة للدلفي).

نطرح واحدا هنــا : اسم المكون Alpha Lite موجود بالمرفقات تحت اسم D7 لدلفي 7 فقط ، باقي النسخ يتم تحميلها لاحقا في حالة الحاجة (دلفي5-6-7-2005-2006 فقط) . أما شرح طريقة التثبيت فقد مرت معنا ،تفضل بزيارة هـــذا الـــرابــط .

الشاشة الترحيبية: لمن أراد عمل شاشة ترحيبية فليسترشد بهــذا الـــرابـــط



أو بطريقة أخرى أسهل و أجمل (وإن كانت تستهلك شيئا من موارد النظام) :
ننشئ مجلد مستقل نسميه GSM نحفظ فيه كل المشروع. نفتح برنامج دلفي ، نبدأ مشروعا جديدا ، نسمي الفورم الأولى FSplash ، نعمل حفظ السورس باسم USplash ، و نحفظ المشروع باسم : GSM .
ننشئ فورم ثانية تحت اسم FGSM و نحفظ السورس تحت اسم UGSM.
الإسم يعني Name و ليس Caption فهذه الأخيرة حسب اختيارك أخي .
Gestion de Stock et Marketing = GSM
U=Unite - F=Form.

في الفورم الأولى (Fsplash) نضع مكون Timer من System ، و مكون sGauge من Alpha Lite
على المكون تايمر نكتب :
كود :
procedure TFsplash.Timer1Timer(Sender: TObject);
begin
sGauge1.progress:=sGauge1.progress+1;
if sGauge1.progress=100 then begin
FGSM.Show;
Fsplash.hide;
timer1.Enabled:=false
end ;
end;
في الفورم الأولى (Fsplash) نعدل في خاصية interval للمكون تايمر نجعلها مثلا 100 ، نعدل في الخاصية progress للمكون sGauge نجعلها 0 .
في الفورم الثانية (FGSM) في الحدث Onclose نكتب :
كود :
Application.Terminate;
هذا الكود الأخير لإغلاق البرنامج في حالة اغلاق الفورم2 ، لأنه كما هو معلوم الفورم الرئيسية هي الأولى و يؤدي غلقها إلى غلق البرنامج كليا ، بينما في مثالنــا قمنا باخفائها (الفورم الأولى) فقط ، يعني غلق الفورم2 لا يغلق البرنامج كليا ، لذلك أضفنــا هذا الكود.

(يمكن لك في الشاشة الترحيبية (الفورم1) وضع صورة أو استعمال فلاش جميل أو أفكار أخرى)

نحفظ ، نـجـرب ....

.../ يتبع / ....


الملفات المرفقة
.rar   D7.rar (الحجم : 521.11 KB / التحميلات : 8,028)
الرد
#5
B.M.AbdelAziZ كتب :هناك تكرار بالمعلومات بالجدول دون فائدة ...
أنت محق تماما :
- بالنسبة للتكرار ، أنا على علم بذلك ، القاعدة تقول : أي حقل يمكن تكراره أو نحتاجه في أكثر من جدول ، يتم انشاء جدول خاص به ، حيث يشترك الجميع في استعماله من غير ادخاله (اعادة كتابته) في كل مرة و في كل جدول . هذا أفضل من ناحية البرمجة في تقليص نسبة الوقوع في الخطأ ، و كذا حجم و سرعة البرنامج. قد كتبت شيئا عن ذلك ( استعمال (ادخال) قيم حقل لجدول معين ، من جدول آخر (2/1)[FONT=Arial] ) .

- بالنسبة للحقول التي لا داع منها كالسعر الاجمالي+بكل الرسوم فهذه يمكن حسابها برمجيا و الإطلاع على الناتج عند الحاجة ، من دون التخزين ، فعلا هذا أمر سلبي يمكن تفاديه ، لكن بالمقابل سوف يكون اكتظاظ حقيقي في البرمجة و الشرح ممكن يصعب الفهم على المبتدإ ، لأنني و ضعت بالحسبان أن هذا المشروع في قسم للمبتدئين . و الوصول إلى غاية تتمثل في صنع برنامج يفي بالغرض بدون أي خطأ + من الناحية الجمالية فيه ميزة أو شيء من الاحترافية (لا أقول أنه برنامج احترافي 100/100 ، نظرا لوجود بعض السلبيات أو الملاحظات كتكرار أو استعمال حقول يمكن ، بل يجب _احترافيا_ الإستغناء عنها ).

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

و هذا أكثر ما يعجبني في البرمجة ، حيث لا توجد قاعدة واحدة ثابتة تقيد الجميع 1+1=2 ، بل الوصول إلى الغرض كل بابداعه و طريقته (طبعا مع مراعاة بعض الأسس و القواعد ) ، فمن منـا لم يصنع برنامجا فوجد بعد حين امكانية تطويره فيزيد هنــا و ينقص هنــا ، و يضيف تارة و يستغني تارة أخرى.

شكرا جزيلا أستاذنــا عبد العزيز على الإهتمام و على ملاحظاتكم التي دوما تفيد و تكون في الصميم.

بالتوفيق للجميع.
الرد
#6
هذه المرة ببساطة ، نتطرق فقط إلى مكون Skin + إضافات طفيفة على الفورم الأول.
في الفورم الأولى (Fsplash) نضع المكون : sSkinmanager1 ، هذا الأخير له عدة خواص أهمها الخاصية : Skindirectory
بالمرفقات تجد مجلد اسمه Skins نضعه داخل مجلد المشروع GSM . من الخاصية المذكورة نحدد مسار المجلد Skins في مجلد المشروع GSM .
بعد ذلك نختار MacOS2 أو WLM (internal) extracted من الخاصية Skinname لنفس المكون.
نجرب.
الآن نضع المكون sSkinprovider على الفورم الأولى دائما ، هذا المكون به عدة خصائص للسكين لك أن تجربها و تكتشفها بنفسك.ننسخ هذا المكون نضعه على الفورم الثانية أيضا .
لازلنا مع الفورم الأولى (FSplash) و الآن نريد كتابة إسم البرنامج مرفق بالإصدار ، و الحقوق . . .
اكتب ما شئت ثم قم بالتجريب .
شاهد المرفقات.
.../ يتبع /...


الملفات المرفقة
.rar   GSM+Skins.rar (الحجم : 94.53 KB / التحميلات : 4,038)
الرد
#7

أخ نبيا، بما ان غذا الجمعة (عطلة!)
ما رايك ان اتابع معك الدرس لكن بطريقة بديلة
مثلا بدلا من Alpha Skin استخدم VCL Skin
بدلا من Paradox التي حتما ستستخدمها اغيرها بشيئ أخر
تعديل بسيط هنا وهناك لاعطاء القارئ نظرة من زاوية اخرى وتفكير مختلف
[-] كل من 1 user says قال شكرا ل B.M.AbdelAziZ على المشاركة المفيدة
  • invocker
الرد
#8
مادامت تدخلاتك أستاذي متواصلة ، فلن أضيع على نفسي فرصة التعلم منك (و بهذا أضنك مطالب بالإستمرار ، لقلة خبرتي إذا تعدى التغيير ما لا أجيد) ، الرأي رأيك.
بالتوفيق
الرد
#9
بعد السلام عليكم

انا مع الاخ عبدالعزيز فيما طرحه في رده

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

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

هذا رأيي والأمر يرجع لك في النهاية


والسلام
استغفرك اللهم واتوب اليك
الرد
#10
السلام عليكم :
أخي العزيز gigi ، شكرا جزيلا على الإهتمام و المشاركة ، و على هذا المرور الطيب و الكريم .
أنت قلت ( ولا نعلمهم استسهال طرق البرمجة ) و كذلك ( المتعة في البرمجة هي ان تكتب كود يعطي نتائج دقيقة مهما كان التعقيد في هذا الكود )
مبدئيا أنا أوافقك الرأي و كلامك صحيح تماما ، لكن : في رأي الخاص مستعمل الدلفي المبتدإ لا بد له أن يقتنع بأمرين:
الأول أنه مطالب في ظل المعلومات المتوفرة لديه أن يصل إلى مبتغاه بأي طريقة صحيحة ممكنة و أحسنها.
الثاني يقتنع بأن أي طريقة أو فكرة مستعملة هناك بالمقابل ما هو أحسن و أرقى منها ، هذا يمكنه من الإجتهاد المتواصل و التحسين من الأسس التي و ضعها و الأكواد البرمجية التي برمج بها.
هكذا يسلك طريقة البرمجة و الطريق نحو الإحتراف خطوة بخطوة ، فلا يمل و لا ييأس ، و المتعة الحقيقية عندما يكتشف و يتعلم ما هو أحسن ممــا سلكه من قبل.
و إلا فكيف نفسر كبرى شركات (أقول شركات يعني مجموعة ضخمة من المتمكنين و المحترفين على الطراز العالي) البرمجة مثل ميكروسفت التي تطرح الاصدارات التجريبة و حتى النهائية ، يكتشف فيها من حين لآخر أخطاء و ثغرات خطيرة (و أحيانا تكلفها خسائر معتبة) ؟
لو أن هذه الشركات بعد نهاية الإصدار ظلت و بقيت تحسن و تبحث عن الأخطاء و تبحث عما هو أحسن ، لبقيت في حلقة مغلقة و ظلت في دوامة ، و لن يعرف منتوجها الظهور أو النور.

بطبيعة الحال ، أنا لا أقول على المبتدإ أن يتعلم أي شيء حتى و إن كان خاطئا ، و بعدها يصحح و يجتهد و يحسن .

في ظل الخمول الذي يشهده المنتدى منذ مدة ، و في ظل وجود غالبية كبرى من المبتدئين الذين لا يعرفون ماهي قاعدة البيانات و كيف ننشئ جدولا أو ماهي أنواع الحقول ، أو كيف يتم ربط العلاقة بين الجداول ، أو حتى كيف نضيف أو نحذف أو نعدل على جدول ,أو طرق البحث و الفلترة ، و ..... ، كان المقصود من الموضوع و من هذا الطرح :
صنع برنامج كامل لتسيير المخزون و التسويق يفي بالغرض و يمكن لك استعماله ميدانيا ، و يخلو من الأخطاء البرمجية في الحسابات ( الكميات و المبالغ و المداخيل و الديون و ... ) .
بعد أن يفهم و يتمكن المبتدإ من هذا ، ننور عقله و فكره البرمجي ، بأن هذا برنامج بسيط ، يمكن له صنع أرقى منه ، يتساءل المبتدإ : كيف ذلك ، مادام وافيا و شاملا و يفي بالغرض ؟ نعطيه بعض الأفكار بمسـاعــدة الأعضاء المحترفين مثلا:
مسألة الإختزال في الأكواد ، نأتي ببعض الأكواد و نقوم بتعويضها بأكواد أقلها أسطرا و أدقها ، و نشرحها ، و نفضلها بطبيعة الحال عن سابقتها.
نتكلم عن حجم قاعدة البيانات و ما يمكن لنا فعله من أجل تقليص الحجم. عن قاعدة البيانات في حد ذاتها (بارادوكس) ، نتكلم عن وجود قواعد بديلة و نعطي أمثلة . نتكلم عن الأمن في هذه القاعدة ، و نرتقي بالمبتدإ نحو الإحترافية بعدم اعتماد هذا الأمن لأنه سهل الكسر و نبين ذلك . نتكلم عن أحسن القواعد و أأمنها و بعض الشركات الكبرى التي تعتمدها. نتكلم عن تأمين البرنامج الموجه للسوق ، و نوجه المبتدإ لوجود ما بعرف بالهندسة العكسية فنضعه على الطريق و نوجهه أحسن توجيه.
نتكلم عن تقرير الطباعة (كويكربورت) و نلفت الإنتباه لوجود بدائل و نقدم الأحسن .
هكذا سنترك العنان للخبراء بالإفادة و نستفيد كلنــــا.

و بذلك يتفتح عقل المبتدإ و يعي حينها أن هذا مجال واسع و لا ينحصر في 1+1=2 و بذلك بامكانه التشمير على ساعديه و طرح ابداعه الخاص.

أمــــا إذا بقينا من البداية نصعب و نعقد و نطرح الأحسن ، و أحسن الأكواد القصيرة و إن كانت معقدة ، فلا أضنه منهجا صحيحا للمبتدإ ، و أأكد أن كل مبتدإ له شيئ من الرغبة في الإنطلاق فإنه لن ينطلق أبدا.
(برنامج كهذا بالطرح المميز و الأكواد و الأسسس الإحترافية مكـانهـا قسم البرامج الجماعية_ و ليس للمبتدئين ).

بالتوفيق.
الرد


التنقل السريع :


مستخدمين يتصفحوا هذا الموضوع: 1 ضيف