تارا فایل

مستندات سیستم انبارداری کفش مشکین مشهد


فهرست

مقدمه 4

فصل اول : معرفی 5
1-1) ضعف برنامه های انبار موجود 6
1-2) انگیزه تحقیق 7
1-3) هدف پروژه 7
1-4) روش انجام پروزه 7

فصل دوم : مروری بر فرآیند انبارداری 8
2-1) تعریف انبار 9
2-2) دلایل استفاده از انبار 9
2-3) انواع موجودیهای انبار 10
2-4) سازمان انبار 11
2-5) وظایف انباردار 11
2-6) دیاگرام جریان اطلاعات در انبار 12

فصل سوم : طراحی نرم افزار 14
3-1) گزارش شناخت سیستم 15
3-2) گزارش کامل آنالیز سیستم 16
3-3) پیاده سازی بانک اطلاعاتی 30

فصل چهارم : پیاده سازی نرم افزار 34
4-1) مقدمه 35
4-2) تعریف چند واژه 36
4-3) چند نکته پیرامون پیاده سازی نرم افزار 36
4-4) ارزیابی پروژه 37
4-5) قسمتهایی از کد برنامه 38

پیوست 46
فرم های طراحی شده برنامه 47

منابع و مراجع 55

فهرست اشکال :

2-1- نمودار ارتباط سازمان انبار با مخازن و اداره امور انبارها 11
2-2- فرآیند انبار (ورودی ها و خروجی ها) 12
2-3- دیاگرام جریان اطلاعات انبار 13
1-1- صفحه بارگذاری که در ابتدای برنامه ظاهر می شود 47
1-2- فرم رمز عبوربرنامه 47
1-3- صفحه اصلی برنامه 48
1-4- فرم ثبت نام پرسنل 48
1-5- فرم ثبت کارهای روزانه پرسنل 49
1-6- فرم سفارشات شرکت 49
1-7- فرم مواد اولیه انبار ورودی 50
1-8- فرم تولیدات نهایی شرکت 50
9-1- فرم مواد اولیه انبار خروجی 51
1-10- فرم لیست کارهای ثبت شده 52
1-11- فرم جستجوی تولیدات نهایی 52
1-12- فرم جستجوی مواد اولیه انبار ورودی 53
1-13- فرم جستجوی سفارشات 53
1-14- فرم میزان دریافتی سفارشات 54
1-15- فرم گزارش مشخصات پرسنل 54
1-15- فرم ارتباط با ما 54

مقدمه

فنون و تخصصهای اداری در زمره مسائلی است که آگاهی از آن برای کارشناسان و صاحبان مشاغل امری ضروری است . هر اندازه دانش مدیران و کارگزاران در زمینه مدیریت و فنون اداری بیشتر و ابعادی گسترده تر داشته باشد ، اعمال مدیریت و سرپرستی با کمال و نیروی بیشتری تحقق خواهد پذیرفت و نتیجتاَ کارایی سازمان ها و کارکنان در جهت نیل به هدفهای سازمانی فزونی خواهد یافت .
برای دستیابی به هدف فوق تهیه متون آموزشی مناسب مورد تاکید خاصی قرار گرفته و با توجه به اهمیت کامپیوتر در دنیای امروز ، بخصوص در تصمیم گیری های کشوری با حجم زیاد اطلاعات و نقش مهمی که این تکنولوژی در دستیابی به سایر تکنولوژی های پیشرفته ایفا می کند ، استفاده از آن و ایجاد بانک های اطلاعاتی به کمک نرم افزار های پایگاه داده مفید واقع خواهد شد .
در این پایان نامه به مباحث زیر اشاره شده است :
o فصل اول : معرفی ، که به معرفی کل سیستم می پردازد .
o فصل دوم : مروری بر فرآیند انبار داری ، که به نکاتی در مورد اصول انبارداری اشاره می کند .
o فصل سوم : طراحی نرم افزار ، که ساختار و چگونگی تشکیل پایگاه داده سیستم را مورد بررسی قرار می دهد .
o فصل چهارم : پیاده سازی نرم افزار ، که در آن به نحوه پیاده سازی نرم افزار پرداخته ایم .
o فصل پنجم : راهنمای استفاده از نرم افزار انبار ، که بهکاربر مهارت های استفاده از این نرم افزار را می آموزد .
o فصل ششم : قسمت هایی از کد برنامه که در آن با توابع مهم برنامه آشنا می شویم .

فصل اول :

معرفی

1-1) ضعف برنامه های انبار موجود
با آمدن سیستم عامل ویندوز ، سیستم عامل داس رفته رفتهاز دور خارج شده است و برنامه های قدیمی از جمله برنامه های انبارداری تحت سیستم عامل داس بوده اند قابل مقایسه با برنامه های تحت ویندوز نمی باشد بنا به دلایل زیر :
– محیط گرافیکی ویندوز
محیط متن داس در مقابل محیط گرافیکی و دوستانه که کاربر کمتر احساس خستگی می کند و با سلیقه خود زمینه کاری را عوض می کند که تاثیرات روانی بهینه ای بر روی کاربر دارد .

– قابلیت چند وظیفه ای ویندوز
در محیط داس در هر لحظه فقط یک عمل را می توانید انجام دهید ولی در محیط ویندوز شما قابلیت چند وظیفه ای را دارید و چند کار را با هم انجام می دهید . مثلاَ در حین کار با برنامه خود نامه های الکترونیکی خود را دریافت کنید ، فایل ها را از اینترنت دریافت کنید ، منابع خود را برای دیگران به اشتراک گذاشت و موسیقی نیز گوش کرد بدون اینکه برنامه خود را قطع کنید .

– استفاده از موتور های پایگاه داده
نرم افزار های تحت ویندوز امکاناتن بهتری برای استفاده از پایگاه داده مختلف دارد مثلاَ در محیط Visual Foxpro علاوه بر استفاده از جداول Foxpro امکان استفاده از جداول Access ، Excell ، Oracle ، DB و …
را دارد . که این قابلیت برای برنامه نویس مفید واقع می شود و جداول طراحی شده در هر نرم افزار دیگر قابل استفاده است . که این امکان در محیط داس خیلی ضعیف می باشد .

– استفاده از قابلیت بهینه شبکه
در محیط شبکه ویندوز هر ایستگاه کاری می تواند داده ها و منابع خود را در اختیار دیگر ایستگاه ها بگذارد ولی در محیط شبکه ناول این امکان فقط در سرور وجود دارد و امکانات بیشمار شبکه ویندوز قابل قیاس با شبکه های قدیمی نیست .

2-1) انگیزه تحقیق
با توجه به وجود برنامه های انبار که تا حدودی نیازهای انبارداری را پاسخ می دهد ولی در بیشتر موارد با توجه به نوع انبار و محل آن نیاز به برنامه خصصوصی که نیاز های کامل انباردار راپاسخ دهد نیز وجد دارد . در برنامه های انبارداری جدید مسول انبار یا مدیر با دادن فاکتور های خاص به برنامه تصمیم گیری برای مقدار ورود و خروج کالا را برای تولید و غیره را به عهده خود برنامه می گذارد .

3-1) هدف پروژه
این پروژه در نظر دارد که ایده های این شرکت را جهت استفاده بهینه از برنامه انبارداری برآورده سازد . که مهم آنها عبارتند از :
* خصوصی بودن برنامه برای شرکت کفش مشکین مشهد
* محاسبه حقوق و دستمزد پرسنل شرکت
* بالا بردن امنیت برنامه در مقابل دستکاری داده ها و کاربران غیر مجاز
* یکپارچه سازی برنامه

4-1) روش انجام پروژه
در ابتدا با دریافت فرمها و فاکتور ها و همچنین نیاز های برنامه از سوی کارفرما مراحل آنالیز برنامه صورت گرفته است . برای تهیه این یرنامه از شش جدول استفاده شده است که برای تهیه این جداول از نرم افزار Accessاستفاده شده است و برای پیاده سازی فرم ها از بسته نرم افزار ی Visual Basic 6 استفاده شده است .

فصل دوم :

مروری بر فرآیند انبار داری

1-2)انبار
به محل یا فضایی که یک یا چند نوع کالای بازرگانی ، صنعتی ، مواد اولیه و یا فرآورده های مختلف که بر اساس یک سیستم صحیح طبقه بندی می گردد ، انبار گفته می شود .
انبار از نظر فرم به سه شکل می باشد :

– انبار های پوشیده : این امکان از تمام اطراف بسته و دارای سقف و وسایل ایمنی کامل می باشد .

– انبار های سر پوشیده : این انبار دارای سقف است ولی چهار طرف آن باز و فاقد حفاظ جانبی می باشد . این نوع انبار ها کالا ها را از باران و آفتاب حفظ می کند .

– انبار های باز یا محوطه : این انبار ها به صورت محوطه می باشد و معمولاَ برای نگهداری ماشین آلات و لوازم سنگین مورد استفاده قرار می گیرد .

2-2) دلایل استفاده از انبار
در امور تدارکات و کار پردازی ، سیستم انبارداری از اهمیت خاصی برخوردار است و همکاری این دو واحد خدماتی با یکدیگر اجتناب ناپذیر است . سیستم صحیح انبارداری دارای متضمن مزایای زیر می باشد :
– دریافت ، حفاظت و دسترسی قرار دادن کالا ، مواد و وسایل مورد نظر به سهولت و سرعت انجام می شود .

– با اعمال کنترل دقیق ، از ازدیاد خارج از حد موجودی ها که ممکن است بر اثر تغییر قیمت ها باعث زیان گردد ، جلوگیری می شود .

– با استفاده صحیح از سیستم انبارداری میزان موجودی کالا در انبار و میزان مصرف آن در هر واحد ، که پایه و اساس حسابداری صنعتی می باشد ، محاسبه می گردد .

– کنترل میزان موجودی در انبار از نظر قیمت به سهولت صورت می گیرد .

– صدور قبض انبار ( رسید انبار ) موجبات تسعیل پرداخت مبلغ کالا به فروشنده و عملیات حسابداری می گردد .

– چون میزان موجودی ها معمولاَ به قیمت تمام شده در انبار ها نگهداری می شود ، لذا در صورت خسارت ناشی از آتش سوزی و سایر ضایعات تعیین خسارت وارد شده به سهولت محاسبه می گردد .

3-2) انواع موجودی های انبار
اجناس و کالاهای موجود در انبار اعم از موسسات تولیدی را می توان به پنج دسته تقسیم نمود:

1) مواد خام و یا مواد اولیه
از این مواد برای تولید کالا استفاده می شود .

2) مواد و لوازم مصرفی و غیر مصرفی
مواد و لوازم مصرفی به موادی اطلاق می شود که به طور غیر مستقیم در انجام کار موسسه دخالت دارد و یا در سازمان های تولیدی برای انجام خدمات جانبی مورد استفاده قرار داده می شود .این مواد بر اثر مصرف از بین می روند مانند کاغذ و مواد و وسایل دسته بندی در سازمان های تولیدی .
مواد غیر مصرفی که در انجام کار دخالت غیر مستقیم دارد ولی مصرف نمی شود و به مرور زمان کهنه و فرسوده می شود . مانند گوشی تلفن ، میز و صندلی .

3) مواد و لوازم در جریان ساخت
به موادی که مقداری تغییرات در مواد اولیه آن داده شده ولی هنوز به صورت کامل ساخته نشده است ، مواد و لوازم در جریان ساخت گویند .
4) کالایی که از نظر ساخت به مرحله تکمیلی رسیده و قابل عرضه می باشد .

5) اجناس خریداری شده جهت فروش

این سری اجناس شامل اجناسی هستند که بدون هیچ گونه تغییری به بازار جهت فروش عرضه می گردد و به طور موقت در انبار نگهداری می شود ، مانند فروشگاه ها و موسسات بازرگانی .

4-2) سازمان انبار
انبار قطعات و مواد اولیه در واحد های تولیدی معمولاَ زیر نظر مدیر فنی کارخانه قرار دارد و در بعضی از موسسات ، انبار مستقیماَ زیر نظر مدیر موسسه انجام وظیفه می نماید .
در سازمان های بزرگ ، واحد انبار داری مدیریت مستقلی است که زیر نظر مدیر عامل قرار دارد ، وتحت نظر مدیر انبار نیز انبارهای مختلفی که هر یک از آن ها دارای مسول می باشد ، انجام وظیفه می کند . مثلاَ در واحد های تولیدی ، انبار مواد ، قطعات و ابزار آلات و در دانشگاه ها ، انبار دانشکده ها تحت نظر مدیر انبار می باشند .

در سازمان های دولتی و غیر انتفاعی ، معمولاَ واحد انبار تحت نظر تدارکات و یا کار پردازی که خود این ها نیز یکی از واحد تابعه امور اداری محسوب می شود ، می باشد .
نمونه ای از نمودار سازمانی که موقعیت انبار و تدارکات را نشان می دهد ، در نمودار شکل زیر نشان داده شده است .

شکل (1-2) نمودار ارتباط سازمان انبار با مخازن و اداره امور انبار ها

5-2) وظایف انبار دار
انبار دار کسی است که عهده دار وظایف زیر می باشد .
– تحویل گرفتن اجناس و کالا های خریداری شده طبق اسناد و مدارک خرید
– صدور قبض انبار یا برگ رسید جنس به انبار پس از تحویل گرفتن کالا
– صدور حواله انبار هنگام تحویل دادن کالا
– صدور فرم های مرجوعی ، برگشت از خرید و سایر فرم های مشابه
– صدور برگ درخواست کالا در صورت لزوم
– ثبت مشخصات و تعداد اجناس وارد و صادر شده در دفاتر و کارت های انبار
– طبقه بندی ، تنظیم و کد گذاری کالا و اجناس
– همکاری با حسابداری صنعتی و واحد سفارش ها در مورد تعیین حداقل ، حداکثر و نقطه سفارش
– حفظ و حراست اجناس و رعایت اصول ایمنی در انبار
– بایگانی اسناد و مدارک انبار
– ارایه گزارش های لازم به مقامات ذیربط

6-2) دیاگرام جریان اطلاعات در انبار

شکل (3-1) فرآیند انبار (ورودی ها و خروجی ها )

دیاگرام جریان اطلاعات انبار

شکل (4-1) دیاگرام جریان اطلاعات انبار

فصل سوم :

طراحی نرم افزار

1-3) گزارش شناخت سیستم

شرکت تولیدی کفش مشکین در شهر مشهد – بلوار ابوطالب – ابوطالب 23 – پلاک 14 با شماره تلفن 7245784-0511 واقع می باشد
مالکین شرکت آقایان مهندس فرزاد امینی خراسانی به عنوان مدیر عامل و مهندس سامان بیات می باشند.که سهام شرکت به طور مساوی بین آنها تقسیم شده است.
شرکت دارای مجوز از اتحادیه صنفی کفاشان می باشد و ملک مربوطه دارای جواز کاربری کارگاه است . و خدماتی چون تولید انواع کیف و کفش مردانه و زنانه را ارایه می دهند .
مواد اوایه این شرکت انواع چرم ، انواع استری ، انواع شبرو ، انواع اشوالت ، انواع قالب ، ریزه ، پارچه و… می باشد که این مواد از کاخانجات تولیدی چرم مانند کارخانه تولید چرم آفتاب و نیز فروشگاههای عرضه ی مواد اولیه تولیدی های کفش خریداری می شوند .
تمام خریدهای مواد اولیه از داخل کشور می باشد و خرید خارجی تنها محدود به مدل ها و قالب های جدید می باشد .
حمل مواد اولیه خریداری شده در داخل شهر مشهد توسط ماشین های باری خود شرکت و خریدهای خارج از شهربه عهده فروشنده است که باز هم توسط ماشین های باری فروشگاهی که از آن خرید شده حمل می شوند و پرداخت حساب مواد اولیه اغلب بصورت چکی و نیز بعضا نقدی می باشد .
هوای خشک و تهویه مواد اولیه بعد از خریداری و حمل در انبارهای مخصوص که دارای
و دمای متعادل 25(درجه سانتیگراد) است ، نگهداری می شوند که محیط انبار در زمانهای بخصوصی نظافت و سمپاشی می گردد .
مواد مورد نیاز برای هر قسمت توسط شخص شاغل در این قسمت بطور دستی از انبار برای تولید حمل می شوند .
شرکت بطور متوسط روزانه 80 جفت کفش تولید می کند که تا حدود 120 جفت نیز ظرفیت تولید دارد .
برای تولید هر کفش ابتدا چرم طبق مدل و الگوی از پیش تعیین شده و در سایزهای مختلف برش خورده و سپس دوخته می شوند (پستی) در مرحله ی بعد پستی ها روی قالب کشیده می شوند و در خشک کن حالت می گیرند و سپس ریزه کفش نصب و پرس می گردد و در آخر آماده سازی نهایی و بسته بندی صورت می گیرد. نقطه ی سفارش و قطع سفارش رعایت نمی شود . و تنوع محصولات بستگی به فصول سال و تقاضا دارد به عنوان مثال در فصل پاییز کفش های بوت و نیمه بوت و در اواخر زمستان بیشتر کفشهای مجلسی و رسمی و… تولید می گردد . انبار مواد اولیه دارای دو قسمت است که در یک قسمت مواد اولیه و در قسمت بعدی محصولات انبار می شوند .
لوازم یدکی برای چرخ های خیاطی استفاده می شود و در صورت بروز مشکل و سرویس دستگاه های دیگر ، به تعمیرکار متخصص مراجعه می گردد .
فروش محصولات با استفاده از بازاریابی است که بازاریابان در تهران و سایر شهرستانها با مراجعه به فروشگاه های عرضه ی کفش و ارایه مدل های در حال تولید برای شرکت سفارش می گیرند . و نیز در شهر مشهد یک نمایندگی فروش دارد که فقط مسئول سفارشات است و پخش محصولات و تسویه حساب به عهده ی خود شرکت است و در صورت اختلاف حساب با مراجعه به دفاتر فروش و سفارشات و نیز دفاتر پرسنل و… بررسی مجدد آنها اختلاف حساب رفع می شود در حال حاضر در این شرکت 15 نفر مشغول کارند که در مواقع خاصی این تعداد بیشتر می شوند این افراد نیاز به تخصص خاص خود را دارند که اغلب بصورت تجربی کسب کرده اند.
حقوق و دستمزد پرسنل بر اساس تعداد کاری که در طول هفته تحویل داده اند محاسبه و در پایان هفته با آنان تسویه حساب می گردد . بجز پرسنل اصلی بقیه مشمول مواردی همچون بیمه و… نمی باشند زیرا بطور دایم در تبلیغات هم توسط بازاریابان و هم هدایای تبلیغاتی انجام می پذیرد .
با عنایت به مطالب فوق نکات زیر به چشم می خورد :
نقطه ی سفارش و نقطه ی قطع سفارش در این شرکت رعایت نمی شود . –
– در صورت بروز اختلاف حساب باید تمام دفاترفروش وسفارشات ونیز دفاتر پرسنل و… بررسی شود .

2-3) گزارش کامل آنالیز سیستم

1-2-3) چارت سازمانی

1-3) نمودار چارت سازمانی شرکت کفش مشکین

2-2-3) نمودار جانمایی (Shematic Layout )

2-3) نمودار جانمایی دفتر و تولید شرکت کفش مشکین

3-3) نمودار جانمایی انبار شرکت کفش مشکین
3-2-3) آنالیز فرم ها

4-3) نمودار Form Flow
4-2-3) نمودار FRD

5-3) نمودار FRD سیستم کفش مشکین

5-2-3) نمودار های DFD

L3: DFD کلی

L4: DFD گروه تولید
6-3) نمودار های DFD

نمودارهای UML
6-2-3) Use Case

7-3) نمودار Use Case ( Best Case )

7-3) نمودار Use Case ( Jeneral Case )

7-2-3) نمودار های Class Diagram

1-7-2-3) نمودار Class Component

8-3) نمودار Class Component سیستم کفش مشکین

2-7-2-3) نمودار Class Call Caboration

9-3) نمودار Class Call Caboration سیستم کفش مشکین

3-7-2-3) نمودار Class Relation

10-3) نمودار Class Relation سیستم کفش مشکین

4-7-2-3) نمودار State diagram

11-3) نمودار State diagram سیستم کفش مشکین

5-7-2-3) نمودار ERD

12-3) نمودار ERD سیستم کفش مشکین

8-2-3) پیاده سازی بانک اطلاعاتی

بانک اطلاعاتی مورد استفاده : Access

نام جداول مورد استفاده :

1- جدول مربوط به ثبت مشخصات پرسنل ( Clerk )
2- جدول مربوط به لیست چک ها ( Chek )
3- جدول مربوط به ثبت تولیدات نهایی کارخانه ( final )
4- جدول مربوط به ثبت سفارشات (Order )
5- جدول مربوط به ثبت مواد اولیه انبار خروجی ( Prim_material_exit )
6- جدول مربوط به ثبت مواد اولیه انبارورودی ( Primery_material)
7- جدول مربوط به ثبت تولیدات انبار خروجی (Produce )
8- جدول مربوط به ثبت عملکرد پرسنل ( Register_work )
9- جدول مربوط به رمز عبور ورودی برنامه ( Usersinfo )

نام بانک اطلاعاتی : DB Meshkin

طراحی جداول اطلاعاتی :

* جدول Clerk :
نام فیلد
Data Type
Field Size
Caption
ID
Number
Long Integer
شماره پرسنلی
name
Text
20
نام
family
Text
30
نام خانوادگی
sex
Text
5
جنسیت
serial
Number
Long Integer
شماره شناسنامه
city
Text
20
محل تولد
date_employee
Text
15
تاریخ استخدام
state
Text
20
محل سکونت
address
Text
200
آدرس
TEL
Number
Long Integer
تلفن تماس
mobile
Number
Long Integer
تلفن همراه
memo
Memo

توضیحات
* جدول Chek
نام فیلد
Data Type
Field Size
Caption
row
Number
Long Integer
ردیف
num_chek
Number
Long Integer
شماره چک
Date
Text
20
تاریخ
bank
Text
20
نزد بانک
name
Text
20
نام صاحب حساب

* جدول final
نام فیلد
Data Type
Field Size
Caption
row
Number
Long Integer
ردیف
model
Text
30
مدل
color
Text
20
رنگ
num
Number
Integer
تعداد
date_enter
Text
20
تاریخ ورود به انبار
memo
Memo

توضیحات

* جدول Order
نام فیلد
Data Type
Field Size
Caption
row
Number
Long Integer
ردیف
num_factor
Number
Long Integer
شماره فاکتور
order
Text
30
سفارش دهنده
kind_order
Text
20
نوع سفارش
model
Text
20
مدل
color
Text
20
رنگ
num
Number
Integer
تعداد
unit_price
Currency

قیمت واحد
total_price
Currency

قیمت کل
date_order
Text
10
تاریخ سفارش
data_tahvil
Text
10
تاریخ تحویل
gharar
Text
10
قرار تحویل
order_resiver
Text
50
سفارش گیرنده
memo
Memo

توضیحات

* جدول Prim_material_exit
نام فیلد
Data Type
Field Size
Caption
row
Number
Long Integer
ردیف
num_factor
Number
Long Integer
شماره فاکتور
kind
Text
20
نوع جنس
model
Text
20
مدل
color
Text
20
رنگ
num
Number
Integer
تعداد
unit_price
Currency

قیمت واحد
total_price
Currency

قیمت کل
date_Exit
Text
10
تاریخ خروج
reson_exit
Text
30
علت خروج
company
Text
30
فروشگاه طرف قرارداد
masool
Text
20
مسول خروج
memo
Memo

توضیحات

* جدول Primery_material
نام فیلد
Data Type
Field Size
Caption
row
Number
Long Integer
ردیف
num_factor
Number
Long Integer
شماره فاکتور
kind
Text
20
نوع جنس
model
Text
20
مدل
color
Text
20
رنگ
num
Number
Integer
تعداد
unit_price
Currency

قیمت واحد
total_price
Currency

قیمت کل
date_Exit
Text
10
تاریخ خروج
name
Text
20
نام خریدار
family
Text
30
نام خانوادگی خریدار
date_kharid
Text
10
تاربخ خربد
data_tahvil
Text
10
تاریخ تحویل
company
Text
30
فروشگاه طرف قرارداد
peyment
Text
10
نوع پرداخت
memo
Memo

توضیحات

* جدول Produce
نام فیلد
Data Type
Field Size
Caption
row
Number
Long Integer
ردیف
model
Text
20
مدل
color
Text
20
رنگ
num
Number
Integer
تعداد
date_Exit
Text
10
تاریخ خروج از انبار
reson_exit
Text
50
علت خروج
respance_exit
Text
30
مسوول خروج
memo
Memo

توضیحات

* جدول Register_work
نام فیلد
Data Type
Field Size
Caption
ID
Number
Long Integer
شماره پرسنلی
days
Text
10
ایام هفته
date
Text
10
تاریخ
model
Text
20
مدل
color
Text
20
رنگ
num
Number
Integer
تعداد
kind_work
Text
20
نوع کار
define_money
Currency
10
دستمزد تعیین شده
total_money
Currency
50
دستمزد کل
day_resive
Currency
30
دریافتی روزانه
memo
Memo

توضیحات

* جدول Usersinfo
نام فیلد
Data Type
Field Size
Caption
autoNo
AutoNumber
Long Integer
ردیف
tUserName
Text
50
نام کاربر
tUserId
Text
20
ID
tPassword
Text
20
رمز عبور

فصل چهارم :

پیاده سازی نرم افزار

1-4) مقدمه

با توجه به فرضیه های تحلیل نیازمندی ها و طراحی که قبلاَ مورد اشاره قرار گرفت اینک به مرحله پیاده سازی می رسیم .
پیاده سازی این نرم افزار با بسته نرم افزاری Visual Basic 6 و تحت سیستم عامل Windows 98 صورت گرفته است . اکنون به تشریح مرحله پیاده سازی می پردازیم . قبل از آن مروری داریم بر ویژوال بیسیک و امکانات سودمند آن .
برنامه نویسی با Visual basic 6 می تواند کار پر زحمت و خسته کننده برنامه نویسی را به یک تفریح تبدیل کند ؛ بازی با اشیا گرافیکی و کشیدن و انداختن آن ها روی یک پنجره .
محبوبیت Visual Basic ، علاوه بر گرافیکی و ساده بودن ، از آنجا ناشی می شود که زبانی اینترپرتری (interpreter ) و کامپایلری (compiler ) است . با ترکیب این دو ویژگی ،Visual Basic به سهولت تولید برنامه و سرعت اجرا در محصول نهایی دست یافته است .
روزی که میکروسافت اولین ویرایش Visual Basic را روانه بازار کرد ، بسیاری از منتقدان شکست آن و مرگ خاندان بیسیک را پیش بینی می کردند . این مخالفان می گفتند که اساساَ یک زبان جدی نیست و ساختار آن ( برخلاف C و پاسکال ) به درد محیط ویندوز نمی خورد . اما میکروسافت با ارایه Visual Basic درس های زیادی به جامعه برنامه نویسان داد :
* زبانی مانند بیسیک می تواند قابل فهم قوی باشد .
* زبانی مانند بیسیک با داشتن واسط مناسب می تواند برای محیط ویندوز هم کارایی داشته باشد .
* Visual Basic بسته به نیاز برنامه نویس می تواند کامپایلری یا اینترپرتری باشد
* و Visual Basic نه تنها فراموش نشد بلکه به محبوبترین زبان برنامه نویسی دنیا تبدیل شد .
Visual Basic در چندین مدل مختلف عرضه می شود :
* مدل فوق العاده : محیط برنامه نویسی مناسب کارهای شبکه و برنامه های توزیع شده .
* مدل حرفه ای : محیط برنامه نویسی مناسب کارهای حرفه ای به همراه مجموعه کاملی از ابزارهای جنبی .
* مدل آموزشی : مجموعه ای از ابزارهای استاندارد و هر آنچه برای شروع برنامه نویسی بدان نیاز دارید .
* مدل استودیوی ویژوال : در این مدل Visual Basic به همراه چند زبان ویژوال دیگر ( مانند ویژوال C++ و ویژوال J++ )در یک بسته نرم افزاری گرد آمده اند تا آموختن آن ها متضمن کمترین زحمت برای برنامه نویسان باشد . که ما در پیاده سازی این نرم افزار از این مدل استفاده کرده ایم .
2-4) تعریف چند واژه
اکنون به تشریح چند واژه که در سایر قسمت ها زیاد استفاده شده اند ی پردازیم :
Component : یک جزء Component مثل برچسب متن ، کنترل ویرایش یا جعبه لیست تکه ای از نرم افزار است که دارای عملکرد خاص و از پیش تعیین شده است .
Property : یک خاصیت (Property ) عملکرد جزئی را تعیین می کند ، مثلاَ خاصیت رنگ ، رنگ یک شی ویژوال را معین می کند .
Event : یک Event یا رویداد چیزی است که در نتیجه واکنش (Interactive ) یک جزء با کاربر یا ویندوز رخ می دهد .
Module : کدها و روتین های عمومی برنامه ، که به هیچ کنترل خاصی مربوط نیستند ، باید در مدول (module) ها قرار داده شوند . از یک مدول به دلیل خصلت عمومی ان می توان در برنامه های متعددی استفاده کرد . پسوند نام فایل مدول .BAS است .
Form : هر پروژه می تواند فرم های متعددی داشته باشد . پسوند نام فایل فرم ها همیشه FRM است .
3-4) چند نکته پیرامون پیاده سازی نرم افزار
در پیاده سازی این نرم افزار علاوه بر بسته نرم افزاری Visual Basic 6 از نرم افزار های Adobe Photoshap و Paint به منظور تهیه آرم شرکت وتصاویر بر روی فرم ها و نیز عکس های تهیه شده از برنامه ، استفاده شده است .
با توجه به حجم بالای برنامه و طول کشیدن مدت زمان اجرا معمولاَ در ابتدای برنامه تصویری را در نظر می گیرند که بعد از لود شدن کامل برنامه این تصور می رود که برای برنامه تصویری طراحی شده است مربوط به کار شرکت می باشد . اولین چیزی که هنگام لود شدن برنامه حائز اهمیت است مجوز کاربر برای استفاده از برنامه می باشد که برای این کار فرم رمز عبور در نظر گرفته شده است .

5-4) مستندات مشترک کلیه فرم ها
دستور Option Explicit : این دستور باعث می شود که چنانچه متغیری تعریف نشده باشد برنامه خطا می گیرد .
اگر دستور فوق وجود نداشته باشد و نیز در صورت عدم تعریف متغیر ، برنامه خود متغیر را از نوع varent در نظر می گیرد .
متغیر های سراسری برنامه :
1- mboolError( Dim mboolError As Boolean)
این متغیر از نوع بولین است و برای تشخیص خطا به کار می رود .
2- mboolLoadError( Dim mboolLoadError As Boolean)
این متغیر از نوع بولین است و در صورت ایجاد خطا به کمک این متغیراز اجرای برنامه جلوگیری می کنیم
زیر برنامه ها :
1-رویداد Error دیتا کنترل
( در صورتی که Data Control با خطا مواجه شود از ظهور فرم جلوگیری می نماید . )

Private Sub Adodc1_Error(ByVal ErrorNumber As Long, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, fCancelDisplay As Boolean))
Call DCErrorCheck(ErrorNumber, Description, fCancelDisplay
End Sub
دلایل متفاوتی برای بروز خطا وجود دارد :
قطع بودن شبکه ( Network )
مشترک نبودن بانک اطلاعات در شبکه
در دسترس نبودن سرویس دهنده(Server )
قفل شدن انحصاری جدول توسط یک کاربر
و …
در این زیر برنامه روال DCErrorCheck فراخوانی شده که به منظور پردازش خطا ی واقع شده در Data Control نوشته است .

2- زیربرنامه DCErrorCheck (به منظور جلوگیری از نمایش یک فرم خالی در صورت بروز خطا توسط Data control )
Private Sub DCErrorCheck(ByVal ErrorNumber As Long, Description As String, fCancelDisplay As Boolean)
If Not mboolLoadError Then
MsgBox Description
mboolLoadError = True
fCancelDisplay = True
Else
fCancelDisplay = True
End If
End Sub
پارامترهای موجود در این زیربرنامه عبارتند از :
ErrorNumber که از نوع Long می باشد و شماره ی خطا در این متغیر قرار می گیرد
Description که از نوع String می باشد و شرح خطا در آن قرار می گیرد
fCancelDisplay از نوع Boolean می باشد و برای جلوگیری از نمایش خطای Data control استفاده می شود با استفاده از این پارامتر به data Control می گوییم که خطای خودش را نشان ندهد چون ما آن را پردازش می کنیم و خطای مناسب را نشان خواهیم داد.
در دستور شرطی ابتدای روال به وسیله متغیر mboolLoadError چک می کنیم که قبلا خطایی رخ داده یا خیر اگر خطای رخ نداده باشد خودمان همان خطا را به وسیله یک MsgBox اعلام می کنیم و سپس مقدار متغیر mboolLoadError را به True تنظیم می کنیم تا نشان دهیم که خطایی واقع شده است و پارامتر fCancelDisplay را True کردیم که از نمایش پیغام خطای خود Data control جلوگیری کنیم .
3- زیربرنامه ابتدای رکورد
Private Sub cmdfirst_Click( )
Adodc1.Recordset.MoveFirst
cmdprevious.Enabled = False
cmdnext.Enabled = True
End Sub
بوسیله دستور اول به ابتدای رکورد ها می رویم
چون قبل از ابتدایی ترین رکورد رکورد دیگری نداریم خاصیت Enabled دکمه قبلی را غیر فعال می کنیم و پس از آن خاصیت Enabled دکمه بعدی را فعال می کنیم تا کاربر بتواند به رکوردهای بعدی دسترسی داشته باشد .

4- زیربرنامه رکورد قبلی
Private Sub cmdPrevious_Click( )
Adodc1.Recordset.MovePrevious
If Adodc1.Recordset.BOF Then
cmdprevious.Enabled = False
Adodc1.Recordset.MoveNext
End If
cmdnext.Enabled = True
End Sub

اگر در ابتدای فایل قرار داشته باشیم خاصیت Enabled دکمه قبلی غیر فعال می شود و بر روی رکورد بعدی قرار می گیریم در غیر این صورت به رکورد قبلی می رویم و خاصیت Enabled دکمه بعدی فعال می کنیم .
5- زیر برنامه رکورد بعدی
Private Sub cmdNext_Click( )
Adodc1.Recordset.MoveNext
If Adodc1.Recordset.EOF Then
cmdnext.Enabled = False
Adodc1.Recordset.MovePrevious
End If
cmdprevious.Enabled = True
End Sub
بوسیله این روال به رکورد بعدی می رویم و خاصیت Enabled دکمه قبلی را فعال می کنیم اگر در انتهای فایل قرار داشته باشیم خاصیت Enabled دکمه بعدی را غیر فعال می کنیم و بر روی رکورد قبلی قرار می گیریم .
6- زیربرنامه انتهای رکورد
Private Sub cmdlast_Click( )
Adodc1.Recordset.MoveLast
cmdprevious.Enabled = True
cmdnext.Enabled = False
End Sub
بوسیله این زیر برنامه به انتهای فایل رفته و خاصیت Enabled دکمه قبلی را فعال و دکمه بعدی را غیر فعال می کنیم .
7- زیر برنامه دکمه جدید
Private Sub cmdNew_Click( )
Adodc1.Recordset.AddNew
txtID.SetFocus
Call ToggleButtons
End Sub
بوسیله این زیر برنامه رکورد جدیدی ایجاد می شود سپس با دستور بعد فوکس به txtID منتقل می شود و در آخر زیر برنامه ToggleButtons فراخوانی می شود .

8- زیر برنامه ToggleButtons
Private Sub ToggleButtons( )
If cmdclose.Caption = "….." Then
cmdclose.Caption = "……"
Else
cmdclose.Caption = "……"Ì
End If
cmdsave.Enabled = Not cmdsave.Enabled
cmdnew.Enabled = Not cmdnew.Enabled
cmddelete.Enabled = Not cmddelete.Enabled
cmdfind.Enabled = Not cmdfind.Enabled
cmdprevious.Enabled = Not cmdprevious.Enabled
cmdnext.Enabled = Not cmdnext.Enabled
cmdfirst.Enabled = Not cmdfirst.Enabled
cmdlast.Enabled = Not cmdlast.Enabled
lstname.Enabled = Not lstname.Enabled
Adodc1.Enabled = Not Adodc1.Enabled

End Sub
بوسیله این روال از تغییر یافتن داده ها آگاه شده و به برنامه پاسخ مقتضی را می دهیم و نیز وضعیت دکمه ها را تغییر می دهیم
ابتدا در یک عبارت شرطی وضعیت دکمه cmdclose را مورد بررسی قرار می دهیم در صورتی خاصیت Caption این کنترل "خروج" باشد آن را به "لغو" تغییر می دهیم و چنانچه به "لغو" تغییر یافته باشد آن را به "خروج" تغییر نام می دهیم و در واقع دکمه بین این دو وضعیت سویچ می کند .
در قسمت بعد وضعیت کنترل های cmdsave cmdnew cmddelete cmdfind cmdprevious cmdnext cmdfirst cmdlast lstname Adodc1 را تغیر می دهیم چنانچه فعال باشند ، غیر فعال می شوند و چنانچه غیر فعال باشند ، فعال می شوند بدین منظور از عملگر Not استفاده کرده ایم در صورتی که ما یک مقدار True را به این عملگر بدهیم ، به ما مقدار False برمی گرداند و در صورتی که ما یک مقدار False را به این عملگر بدهیم ، به ما مقدار True برمی گرداند .

9- زیر برنامه TextChange
Private Sub textChange( )
If Adodc1.Recordset.BOF Or Adodc1.Recordset.EOF Then
' do nothing
Else
If Not cmdsave.Enabled Then
Call ToggleButtons
End If
End If
End Sub
با وقوع رویداد Change هر Text Box این روال فراخوانی شده در این رویداد چنانچه کنترل داده بر روی رکورد معتبری باشد خاصیت Enabled دکمه ذخیره فعال شده تا کاربر بتواند اطلاعات را ذخیره نماید و سپس زیر برنامه ToggleButtons فراخوانی می شود .

10- رویداد Change کلیه Text Box ها :
Private Sub TextBox_Change( )
If TextBox.Tag <> TextBox.Text Then
Call textChange
End If
End Sub
برای تشخیص مقدار قبلی هر کنترل باید این مقدار را در جایی ذخیره کنیم بدین منظور همه کنترل ها خاصیتی به نام Tag را دارا می باشند که این عمل را انجام می دهند
با وقوع رویداد Change هر Text Boxابتدا چک می کنیم که آیا مقدار فعلی کنترل با مقدار قبلی برابر است یا خیرچنانچه برابر نباشد بدین معنی است که مقدار آن تغییر کرده است روال textChange فراخوانی می کنیم .

11- رویداد MoveComplete
Private Sub Adodc1_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
If pRecordset.EOF Or pRecordset.BOF Then
Else
(Call ControlsTagLoad(pRecordset
End If
End Sub
این رویداد مختص کنترل داده Ado می باشد که بعد از انجام این رویداد ، محتویات کنترل ها را به صورت بروز آوری شده در اختیار داریم بنا براین در این رویداد عمل مقدار دهی خاصیت Tag کنترل را انجام می دهیم
در این روال ابتدا چک می کنیم که در ابتدا یا انتهای فایل هستیم یا خیر بنابراین اگر در ابتدا یا انتهای فایل باشیم یعنی بر روی یک رکورد مجازی باشیم نیازی نیست که کاری را انجام دهیم در غیر این صورت روال ControlsTagLoad را فراخوانی می کنیم که به این روال یک پارامتر که در واقع همان رکوردستی است که ما در اختیار داریم و به وسیله آن می توان به رکورد جاری دسترسی پیدا کرد .

12- زیر برنامه ControlsTagLoad
Private Sub ControlsTagLoad(pRecordset As ADODB.Recordset)
Dim oCtrl As Control

If pRecordset.EOF Or pRecordset.BOF Then
For Each oCtrl In Me.Controls
If TypeOf oCtrl Is TextBox Then
"" =oCtrl.Tag
ElseIf TypeOf oCtrl Is CheckBox Then
oCtrl.Tag = vbUnchecked
End If
Next
Else
For Each oCtrl In Me.Controls
If TypeOf oCtrl Is TextBox Then
( oCtrl.Tag = Field2Str(pRecordset(oCtrl.DataField).Value
ElseIf TypeOf oCtrl Is CheckBox Then
oCtrl.Tag = Field2CheckBox(pRecordset(oCtrl.DataField).Value)
End If
Next
End If
End Sub
در این زیر برنامه یک پارامتر به نام pRecordset از نوع رکوردست داریم که بوسیله آن رکوردست را دریافت می کنیم همچنین یک متغیر از نوع کنترل با نام oCtrl تعریف کردیم بعد از این مرحله در یک دستور شرطی چک کردیم که آیا در ابتدا یا انتهای رکوردست قرار داریم یا خیر در صورتی که این شرط صادق باشد برای هر یک از کنترل های موجود در فرم که بوسیله Controls Collection فرم به آن دسترسی داریم یک حلقه را تکرار کرده و در این حلقه وضعیت هر یک از کنترل ها را چک می کنیم
اگر کنترل از نوع Text Box باشد مقدار خاصیت Tag آن را به رشته خالی ست می کنیم و اگر کنترل از نوع ChekBox باشد مقدار خاصیت Tag آن را به vbUnchecked یعنی حالتی که ChekBox انتخاب نشده تنظیم می کنیم
اما قسمت دوم شرط زمانی اجرا می شود که ما بر روی یک رکورد واقعی و معتبر قرار داشته باشیم در این حالت باز هم برای کلیه کنترل های موجود برروی فرم چک کردیم که اگر کنترل Text Box یا ChekBox باشد خصوصیت Tag به مقدار فیلد مورد نظر آن کنترل تنظیم شود ( به وسیله فراخوانی تابع Field2Str)

13- زیر برنامه حذف
Private Sub cmddelete_Click( )
Dim BoolOk As Integer
Beep
BoolOk = MsgBox( …………. & Adodc1.Recordset.Fields(2) _&
……………., vbYesNo + vbQuestion, …………)
If BoolOk = vbYes Then
Adodc1.Recordset.Delete
Call DataReposition
End If
End Sub
این زیر برنامه به منظور حذف یک رکورد عمل می کند در ابتدا یک متغییر با نام BoolOk از نوع Integer به منظور نگهداری پاسخ کاربر تعریف شده است و سپس قبل از نمایش پیغام به کاربر بوق سیستم توسط دستور Beep به صدا در می آید و در ادامه پیغامی با مضمون این که " آیا مایلید اطلاعات مربوط به فیلد مورد نظر را حذف نمایید ؟ " و سپس در یک دستور کنترلی چنانچه کاربر پاسخ بله را انتخاب کند رکورد مورد نظر حذف شده و زیر برنامه DataReposition فراخوانی می شود .

14- زیر برنامه جستجوی فرم پرسنل
Private Sub cmdfind_Click( )
lbllist.Visible = True
Image1.Visible = True
Image2.Visible = True
lstname.Visible = True
End Sub
این زیربرنامه برای جستجو و نمایش کلیه فیلد های یک پرسنل به وسیله انتخاب نام خانوادگی منظور گردیده است . و خاصیت Visible کنترل های lbllist ، Image1 ، Image2 ، lstname به True تنظیم شده است تا نمایش داده شوند .

15- زیر برنامه خروج
Private Sub cmdclose_Click( )
If cmdclose.Caption = "……." Then
Unload Me
Else
Adodc1.Recordset.CancelUpdate
If Adodc1.Recordset.EditMode <> adEditAdd Then
Adodc1.Recordset.Move 0
End If
Call ToggleButtons
End If
End Sub
16- زیر برنامه مرتب سازی بر اساس شماره پرسنلی
Private Sub optsortid_Click( )
If optsortid.Value Then
Adodc1.Recordset.Sort = " ID "
End If
End Sub
در این روال در یک دستور شرطی در صورتیکه Option button مربوطه فعال شود کنترل داده ، داده ها را بر اساس فیلد ID ( شماره پرسنلی ) مرتب می کند .

17- زیر برنامه مرتب سازی بر اساس نام
Private Sub optsortnm_Click( )
If optsortnm.Value Then
Adodc1.Recordset.Sort = " name "
End If
End Sub
در این روال در یک دستور شرطی در صورتیکه Option button مربوطه فعال شود کنترل داده ، داده ها را بر اساس فیلد name ( نام ) مرتب می کند .

18- زیر برنامه مرتب سازی بر اساس نام خانوادگی
Private Sub optsortfmly_Click( )
If optsortfmly.Value Then
Adodc1.Recordset.Sort = " family "
End If
End Sub
در این روال در یک دستور شرطی در صورتیکه Option button مربوطه فعال شود کنترل داده ، داده ها را بر اساس فیلد family ( نام خانوادگی ) مرتب می کند .

19- زیر برنامه دریافت شماره پرسنلی فقط به صورت عدد صحیح
Private Sub Txtid_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKeyDelete ' Delete Key
Case vbKeyBack ' Backspace Key
Case 48 To 57 ' Number 0-9
Case Else
Beep
KeyAscii = 0 ' Cancels the keystroke
End Select
End Sub
در این روال در یک دستور Select در صورتی که کلید فشرده شده توسط کاربر یکی از کلید های Delete ، Backspace ، اعداد بین 0 تا 9 باشد ان را نمایش می دهد در غیر این صورت بوق سیستم به صدا در آمده و در جعبه متن مربوطه کاراکتری نمایش داده نمی شود و در واقع کد اسکی صفر قرار داده می شود .

6-4) حداقل امکانات مورد نیاز برای اجرای نرم افزار
برای راه اندازی این نرم افزار به امکانات زیادی نیاز نیست . یک سیستم عامل ویندوز 98 یا بالاتر به همراه مدیر سیستم موتور پایگاه داده ایAccessو فایل اجرایی برنامه .
حداقل امکانات سخت افزاری مورد نیاز عبارتند از :
CPU : Pentium
RAM : 64 MB
H.D.D : 1GB
VGA : 16MB

پیوست

فرم های طراحی شده برنامه

فرم 1-1) فرم بارگذاری برنامه

فرم 2-1) فرم رمز عبور برنامه

فرم 3-1) فرم اصلی برنامه

فرم 4-1) فرم ثبت مشخصات پرسنل

فرم 5-1) فرم ثبت کار های روزانه پرسنل

فرم 6-1) فرم سفارشات شرکت

فرم 7-1) فرم مواد اولیه انبار ورودی

فرم 8-1) فرم تولیدات نهایی شرکت

فرم 9-1) فرم مواد اولیه انبار ورودی

فرم 9-1) فرم تولیدات شرکت

فرم 10-1) فرم کارهای ثبت شده برای پرسنل

فرم 11-1) فرم جستجوی تولیدات نهایی شرکت

فرم 12-1) فرم جستجوی مواد اولیه انبار ورودی

فرم 13-1) فرم جستجوی سفارشات

فرم 14-1) فرم میزان دریافتی سفارشات

فرم 15-1) فرم گزارش مشخصات پرسنل

منابع و مراجع

* آموزش ویزوال بیسیک 6 در 21 روز گریک پری ؛] مترجم[ علیرضا زارع پور
تهران ؛ نص ، 1383

مستندات سیستم انبارداری
کفش مشکین مشهد

استاد راهنما

……………

ارایه دهندهگان

……………………

چکیده
طراحی و پیاده سازی سیستم انبارداری
با توجه به وجود برنامه های انبار که تا کنون نیازهای انبار داری را پاسخ می دهد ولی در بیشتر موارد با توجه به نوع انبار و محل آن نیاز به برنامه خصوصی که نیاز های کامل انبار دار را پاسخ بدهد نیز وجود دارد . در برنامه های انبار داری جدید مسئول انبار یا مدیر ، با دادن فاکتورهای خاص به برنامه تصمیم گیری برای مقدار ورود و خروج کالا را برای تولید و غیره را به عهده خود برنامه می گذارد .
این پروژه در نظر دارد که ایده های شرکت کفش مشکین مشهد را جهت استفاده بهینه از برنامه انبارداری برآورده سازد که مهم آنها عبارتند از :
* خصوصی بودن برنامه برای شرکت کفش مشکین مشهد
* محاسبه حقوق و دستمزد پرسنل شرکت
* بالا بردن امنیت برنامه در مقابل دستکاری داده ها و کاربران غیر مجاز
* یکپارچه سازی برنامه
مراحل به کارگرفته شده برای کسب و جمع آوری اطلاعات مورد نیاز این پروژه عبارتند از :
* مشاهده
* مصاحبه
* پرسشنامه
پس از انجام مراحل امکان سنجی و آنالیز ؛ در فاز طراحی و پیاده سازی این برنامه از 6 جدول اطلاعاتی توسط نرم افزارAccessاستفاده شده است و برای پیاده سازی فرم ها از بسته نرم افزاری Visual Studio ؛ نرم افزار Visual Basic 6 استفاده شده است .

کلمات کلیدی :
انبار- انبارداری- پایگاه داده- ODBC -Access -Visual Basic

28


تعداد صفحات : 59 | فرمت فایل : word

بلافاصله بعد از پرداخت لینک دانلود فعال می شود