تارا فایل

گزارش کارآموزی سیستم لیزینگ خودرو


فهرست :

فصل اول:

مقدمه…………………………………………………………………………………………………1
لیزینگ چیست……………………………………………………………………………………….2
تکنولو‍‍ژی SQL……………………………………………………………………………………8

فصل دوم:

نیازمندیها……………………………………………………………………………………………..16
شرح عملکرد فرم ها…………………………………………………………………………………17

فصل سوم:

شرح با بانک اطلاعاتی………………………………………………………………………………53
مدل رابطه ای (ERD)……………………………………………………………………………..56

منابع

مقدمه:

C#:
همراه با ارائه خط مشی NET از سوی شرکت ماکروسافت زبان برنامه نویسی جدید و جالبی پا به عرصه وجود نهاد .C# زبانی جهت تولید در محیط .NET است. شرکت ماکروسافت بخش عمدهای از پیکره .NET را با استفاده از این زبان درست کرده است.C# یک زبان شی گرای پیشرفته است که توسط یک گروه خلاق طراحی شده و با تکه بر ویژگی های ممتاز به سایر زبان ها گسترش یافته است.C# قدرت و انعطاف C++ را با سادگی Visual Basic در هم آمیخته است.

Data Base:
چهارمین لایه از لایه های MIS ، سیستم مدیریت پایگاه داده نام دارد . یک سیستم اطلاعاتی

موثر، کاربر را اطلاعات زمانبر، دقیق و مرتبط تغذیه می کند. این اطلاعات در فایلهای

کامپیوتر ذخیره می شوند. هنگامی که فایلها به درستی و سازمان یافته حفظ شوند ، کاربر

به راحتی می تواند داده هایی را که لازم دارد ،بدست آورد. اگر فایلها بطور مرتب و دقیق

باشند دستیابی به داده ها برای تصمیمات مدیریتی آسان خواهد بود ، در حالی که فایلهای با

مدیریت ضعیف به سر در گمی در پردازش اطلاعات ، هزینه های بالا ، عملکرد ضعیف

و عدم انعطاف پذیری منجر می شود .

لیزینگ خودرو:
لیزینگ ( LEASING ) نوعی قرارداد و توافق است که بین دو فرد حقیقی یا حقوقی جهت بهره برداری از عین یا منفعت کالا ی سرمایه ای یا مصرفی با دوام که قابلیت اجاره را داشته باشد منعقد می شود . بنابراین هر قرارداد لیزینگ حداقل دارای دو طرف است که استفاده کننده از منافع دارایی را اجاره کننده ( مستاجر) و مالک دارایی را اجاره دهنده ( موجر ) می نامند

لیزینگ چیست؟

تاریخچه لیزینگ:
الف- در جهــان‏
تاریخ اولیه و آغازین لیزینگ به 2000 سال قبل ‏از میلاد مسیح بر می گردد. اطلاعاتی در دست است که ‏سومریان، اشکالی از عملیات لیزینگ را برای امور ‏کشاورزی و تهیه ابزاردستیبکارمی بردند. ‏
‏-‏ برای اولین بار در رم قدیم، مقرراتی در مورد ‏تامین مالی بروش لیزینگ توسط ژوستینین وضع گردیده ‏است.‏
‏-‏ قبل از قرون وسطی، اجاره اسب، گاری و ‏کالسکه (تجهیزات حمل و نقل) از مهمترین عملیات ‏بازرگانی و خدماتی بوده است. ‏
‏-‏ در اروپای قرون وسطی لیزینگ تامین مالی برای زمین ‏و ساختمان با توجه به محدودیت های مالکیت ‏مطلق کالاها بسیار متداول گشت.‏
‏-‏ در یادداشتهای روزانه جورج واشنگتن ریاست جمهوری ‏وقت آمریکا اشارات متعددی به اقلام لیزینگ شده‏است. ‏
‏-‏ در سال 1850 در انگلستان، واگن های قطار بصورت ‏لیزینگ انجام شد و اولین موسسه لیزینگ ثبت شده در ‏دنیا، شرکت بیرمنگام واگن است که در بیستم مارچ ‏‏1855 تاسیس گردید. ‏
‏-‏ صنعت جدید لیزینگ در سال 1952 با تاسیس موسسه ‏بین المللی لیزینگ ایالات متحده آمریکا در ‏سانفرانسیسکو بنام ‏leasing‏ ‏u.s.‎‏ آغاز بکار کرد.‏
‏-‏ در سالهای 1960 تا 1962، لیزینگ در آلمان توسط ‏‎(Deutsche leasing) ‎‏ و همچنین در ژاپن توسط ‏‎(Orient ‎leasing) ‎‏رواج یافت. ‏
‏-‏ طی سالهای 1970 تا 1975 لیزینگ در بسیاری از ‏کشورهای جهان از جمله ایران متداول گردید. ‏
‏-‏ دهه 80 را میتوان سالهای رونق و بین المللی شدن ‏لیزینگ نامید. موسسه مالی بین المللی ‏‎(IFC)‎‏ وابسته ‏به بانک جهانی نقش ارزنده ای در طراحی و ‏استقرار شرکتهای لیزینگ در جهان داشته است که ‏بعنوان نمونه اولین تجربه موفق آن، "لیزینگ کره" ‏در سال 1977 بوده است. نتیجه اقدامات حمایتی ‏IFC‏ ‏موجب گردید که صنعت لیزینگ در کشورهای بنگلادش، ‏بوتساوانا، برزیل، کلمبیا، دومینکن، اکوادر، ‏هندوستان، اندونزی، اردن، کره جنوبی، ملاوی، ‏پاکستان، پرو، فیلیپین، پرتقال، سریلانکا، ‏تایلند، تونس، ترکیه، کشورهای ‏CIS‏ و . . . ‏توسعه یابد.

ب- در ایران: ‏
اولین موسسه لیزینگ ایران در تاریخ 21/04/1354 ‏‏(ژوئیه 1975) با مشارکت بانک اعتبارات ایران، شرکت ‏اسلیبای انترناسیونال (فرانسوی) و بخش خصوصی با نام ‏‏"شرکت لیزینگ ایران" تاسیس یافت.‏
‏-‏ دومین موسسه لیزینگ در تاریخ 16/03/1356 (ژوئن ‏‏1977) با مشارکت بانکهای توسعه صنعتی و معدنی ‏ایران، ایرانشهر، کار، ساختمان، توسعه کشاورزی ‏و سوسیته ژنرال (فرانسوی) با نام "شرکت آریا ‏لیزینگ" تاسیس گردید. این موسسات تا پیروزی ‏انقلاب اسلامی در 22 بهمن ماه سال 1357 فعالیتی ‏نداشتند و بعد از اجرای قانون ملی شدن بانکها، ‏نظیر سایر شرکتهای وابسته به بانکها تحت تاثیر ‏سیاستگزاری های مربوط به ملی شدن و ادغام ‏بانکها قرار گرفتند. بدین ترتیب شرکتها و ‏موسسات تابعه بانکها از جمله دو شرکت لیزینگ ‏ایران (متعلق به بانک تجارت) و شرکت آریا لیزینگ ‏‏(متعلق به بانک صنعت و معدن که بعدها به "پی ‏خرید" تغییر نام داد) نیز مشمول بازنگری عملیات ‏و چگونگی تطبیق فعالیت آنها با موازین شرع در ‏قانون عملیات بانکی بدون ربا که یکی از ‏ابزارهای اعتباری آن "اجاره بشرط تملیک" تعیین ‏گردیده بود، میتوانست عملیات لیزینگ را در کشور ‏توسعه و عوامل شکوفایی و فرهنگ سازی آنرا فراهم ‏آورد، لیکن بدلیل ناشناخته و جدید بودن این ‏صنعت، نظام دولتی سیستم بانکی، شرایط جنگ، تحریم و ‏عدم ارتباط مستقیم و موثر با سازمانهای لیزینگ ‏جهانی (از جمله ‏IFC‏ ) و بطور کلی توسعه نیافتگی ‏نظام اقتصادی و مدیریت دولتی حاکم بر آن و نیز ‏عدم بستر مناسب ناشی از اقتصاد مبتنی بر عرضه و ‏تقاضا، نقش و جایگاه این صنعت بنحوی شناخته ‏نشد. ‏
‏-‏ از آغاز دهه 80، بدلیل رونق اقتصادی و بویژه ‏فزونی عرضه کالاها به تقاضا از یکسو و عدم قدرت ‏خرید کافی مردم از دیگر سو و همچنین بدلیل عدم ‏تامین مالی "مصرف کنندگان" و توده مردم توسط ‏بانکها، صنعت لیزینگ بدلیل نیاز اجتماعی- ‏اقتصادی، بصورت خودجوش توسعه یافت بطوریکه ظرف ‏چند سال تعداد شرکتهای لیزینگ افزایش یافت که ‏البته عمده این توسعه مربوط به لیزینگ خودرو ‏بوده است. ‏
‏-‏ در بهمن ماه 1383، به همت مجلس شورای اسلامی ایران ‏‏"قانون تنظیم بازار غیر متشکل پولی" که پوشش ‏دهنده کلیه فعالیتهای پولی و اعتباری کشور از ‏جمله لیزینگ بود به تصویب رسید و مقرر گردید آئین ‏نامه اجرایی آن به تصویب هیات دولت برسد. ‏
‏-‏ در تیرماه 1385 و قبل از تصویب آئین نامه "قانون ‏تنظیم بازار غیر متشکل پولی" بنا به تصمیم مجلس و ‏تصویب شورای پول و اعتبار، در راستای سیاست ‏کاهش نرخ سود کلیه موسسات پولی و بانکی، مقرر ‏گردید نرخ سود شرکتهای لیزینگ نیز حداکثر 17% ‏در سال گردد. ‏ی باصنعت لیزینگ و نقش آن در جامعه
لیزینگ در کشور ما با وجود توسعه ای که در چند سال اخیر یافته ، هنوز ناشناخته است وقابلیتهای این نوع فعالیت درتامین مالی متقاضیان خرید کالاهای سرمایه ای و با دوام بطور کامل مورد توجه قرار نگرفته است . مهندس زارعی مدیر عامل شرکت لیزینگ ایرانیان طی کفتگوی اختصاصی با کارآمد به نکات قابل توجهی اشاره کردند که با هم
می خوانیم:
– واژه لیزینگ

لیزینگ ( LEASING ) نوعی قرارداد و توافق است که بین دو فرد حقیقی یا حقوقی جهت بهره برداری از عین یا منفعت کالا ی سرمایه ای یا مصرفی با دوام که قابلیت اجاره را داشته باشد منعقد می شود . بنابراین هر قرارداد لیزینگ حداقل دارای دو طرف است که استفاده کننده از منافع دارایی را اجاره کننده ( مستاجر) و مالک دارایی را اجاره دهنده ( موجر ) می نامند .
اقلام دارایی هایی که در این بحث مطرح می شود شامل : ساختمان ، خودرو ، زمین ، هواپیما ، کشتی ، کامپیوتر ، لوازم خانگی بادوام ، لوازم و تجهیزات پزشکی و … است و شرکت های لیزینگ با توجه به نوع و تخصص خود در یک یا چند مورد از موارد ذکر شده ، مشغول فعالیت هستند . البته انواع مختلفی از فعالیتهای لیزینگ در کشور های پیشگام در این زمینه وجود دارد که عمده ترین آن به شرح ذیل است :
1- لیزینگ مالی ( financial leasing)
2- لیزینگ عملیاتی (Operational leasing)
1- لیزینگ مالی: نوعی از قرارداد اجاره است که مدت قرارداد با عمر مفید دارایی تقریبا برابر بوده و هدف از آن کسب مالکیت در پایان قرارداد می باشد. این نوع قرارداد مترادف با قرارداد اجاره به شرط تملیک است.
2- لیزینگ عملیاتی نوعی قرارداد اجاره برای استفاده از برخی از دارای های ثابت برای مدت زمان معین است که این مدت زمان ا زعمر مفید دارایی کمتر است بدون این که هدف کسب مالکیت آنها در میان باشد . مستاجر در پایان قرارداد اجاره،وسیله ی مورد اجاره را به موجر برمی گرداند.
– شرکت لیزینگ ایرانیان از چه زمان تاسیس شده و در چه زمینه ای فعالیت فعالیت می کند ؟
شرکت لیزینگ ایرانیان در شهریور سال 1381 با سرمایه گذاری شرکت تعاونی خاص کارکنان ایران خودرو تاسیس و در سال 1384 با توسعه روز افزون فعالیتها، از سهامی خاص به سهامی عام و نام آن از لیزینگ خودرو ایرانیان به لیزینگ ایرانیان تغییر نام یافت و مجوز رسمی فعالیت از بانک مرکزی را اخذ نمود .
با تغییرات حاصل شده در سال 1385 تعداد سهامداران شرکت بالغ بر 29هزار سهامدار حقوقی و حقیقی می باشد که شرکت ایران خودرو با 4/33 درصد سهام بزرگترین سهامدار بوده و اشخاص حقیقی 6/14 درصد سهام و شرکتهای گروه تعاونی خاص کارکنان ایران خودرو مابقی سهام شرکت را دارا هستند .
در خصوص زمینه فعالیت شرکت باید یادآور شویم با تبدیل شدن این شرکت از سهامی خاص به سهامی عام ، فعالیتهای شرکت از خودرو به سایر فعالیتها طبق اساسنامه تغییر کرد.فعالیت در زمینه لیزینگ خودروی سبک و سنگین ، مسکن ، ماشین آلات کشاورزی و راه سازی ، وسایل حمل و نقل دریایی و هوایی و مواد اولیه کارخانجات از این جمله هستند . در حال حاضر 10 درصد فعالیت این شرکت در بخش مسکن و 5 درصد مربوط به لیزینگ خودروهای دست دوم و بیش از 50 درصد فعالیت شرکت در زمینه خودروی سنگین است .
– چه برنامه هایی برا ی آینده دارید ؟
هدف ما ، افزایش سرمایه سهامداران شرکت و تامین آینده ای شایسته برای کارکنان زحمت کش گروه صنعتی ایران خودرو است . با توجه به نیاز روز افزون تقاضا برای لیزینگ اقدامات و مطالعاتی برای فعالیت در زمینه لیزینگ لوازم خانگی انجام شده است و در سال جاری این محصول نیز به سبد محصولات لیزینگ ایرانیان افزوده خواهد شد که این امر در راستای افزایش رضایتمندی مشتریان است .
سند خودرو در چه زمان به نام خریدار خواهد شد ؟
سند در پایان مدت پرداخت اقساط از طرف فروشنده به نام خریدار زده خواهد شد . مگر در شرایطی که خریدار یک سازمان و ارگان باشد و در شرایط vip سند بنام مشتری شود .
مدت زمان باز پرداخت وام چند ماه است ؟
شرکتهای لیزینگ معمولاً وام پرداختی را حداکثر 5 سال یا 60 ماه دریافت می کند.البته در حوزه مسکن تا 10 سال یا 120ماه مدت باز پرداخت در نظر گرفته می شود.
مدت زمان تحویل خودرو چند روز است ؟
چنانچه خریدار مدارک خودرو را در زمان ثبت نام کامل تحویل دهد و نوع خودروی درخواستی و رنگ آن موجود باشد حداکثر 20 روز ه می تواند خودروی خود را تحویل بگیرد .
آیا خرید خودرو از طریق لیزینگ مشکل شرعی ندارد؟
خیر،لیزینگ یا اجاره به شرط تملیک جزء یکی از عقوداسلامی است و از نظر بانکداری اسلامی مورد تصویب قرار گرفته است .
برای ثبت نام و خرید از طریق لیزینگ چه مدارکی لازم است ؟
مشتریان هنگام مراجعه به نمایندگیهای فروش یا دفاتر لیزینگ باید مدارکی مثل فرم درخواستی ، مدارک شغلی متقاضی ، مدارک شغلی ضامن ، چک پیش پرداخت و سفته و چک تضمینی داشته باشد . شرایط کامل و مدارک مورد نیاز را می تواند با مراجعه به دفاتر لیزینگ دریافت کند .
چرا در برخی موارد تحویل خودرو با تاخیر روبرو می شود ؟
دلایل مختلفی برای تاخیردر تحویل خودرو وجود دارد که مهمترین آنها کامل نبودن پرونده متقاضی یا خریدار و موجود نبودن خودرو با رنگ مورد نظر مشتری است .
لیزینگ ایرانیان چه تسهیلاتی برای کارکنان ایران خودرو در زمینه خودرو در نظر گرفته است ؟
یکی از برنامه هایی که شرکت لیزینگ ایرانیان برای واگذاری خودرو به کارکنان شریف و زحمتکش ایران خودرو دارد پروژه 206 صندوقدار با نرخ 12% است 0 حداکثر میزان تسهیلات 100 ملیون ریال می باشد . لازم بذکر است واگذاری خودرو بصورت سند بنام به پرسنل گروه صنعتی ایران خودرو با مسدودکردن سرمایه آنها در تعاونی خاص امکان پذیر است .
– با خبر شدیم که لیزینگ ایرانیان بعنوان لیزینگ برتر ایران خودرو شناخته شده است، ملاک این ارزشیابی ها چه بوده است؟
شرکت بازرسی کیفیت و استاندارد ایران، برای بررسی رضایت مشتری در بین شرکتهای لیزینگ شاخصهایی را مورد مطالعه و بررسی قرار داد. در شاخصهای مورد مطالعه، تحویل خودرو،اعطای تسهیلات، برخورد کارکنان،اطلاع رسانی، هزینه های اضافی و نحوه لیزینگ خودرو مورد بررسی قرار گرفتند که براین اساس شرکت لیزینگ ایرانیان در میان شرکتهای لیزینگ تابعه ایران خودرو که از برزرگترین شرکتهای لیزینگ فعال در شرکت می باشند، رتبه نخست رضایت مشتریان و کیفیت فرایندهای عملیاتی را کسب کرده است. البته لازم به ذکر است این امر محقق نمی شد مگر با همکاری و همدلی شرکت تعاونی خاص کارکنان ایران خودرو ، هیات مدیره محترم و کارکنان شرکت که جا دارد از این طریق از همه این عزیزان تشکر و قدر دانی نمایم.

تکنولوژی SQL :

تاریخچه SQL

واژه ی SQL به صورت سی کو ال باید تلفظ کنیم و اس کیو ال نا صحیح می باشد. منشا اصلی SQL به مقاله Edgar F. Codd تحت عنوان " مدل رابطه ای داده ها برای بانک های داده ای اشتراکی " که در سال ۱۹۷۰ منتشر شد،باز می گردد. در دهه ۷۰ گروهی از شرکت IBM در شهر San Jose بر روی سیستم پایگاه داده ای (System R) بدون توجه به این مقاله کار می کردند و زبان (SEQUEL(Structured English Query Language را به منظور عملیات و بازیابی اطلاعات ذخیره شده در System R ایجاد کردند. اگر چه SQL ناشی از تلاشهای کاد بود اما Donald D. Chamberlin و Raymond F. Boyce را به عنوان طراحان زبان SEQUEL می دانند.
سمینارهایی در زمینه فناوری بانک اطلاعاتی و مباحثاتی در مورد مزایای مدل رابطه ای جدید برگزار گردید. تا ۱۹۷۶ مشخص بود که IBM طرفدار جدی فناوری بانک اطلاعاتی رابطه ای بوده، توجه زیادی نسبت به زبانSQL دارد. تبلیغات در زمینه System/R باعث جذب گروهی از مهندسین در Menlo Park در کالیفرنیا گردید، و این گروه به این نتیجه رسیدند که تحقیقات IBM منجر به یک بازار تجاری برای بانک های اطلاعاتی رابطه ای خواهد گردید.

در ۱۹۷۷ این گروه شرکتی بنام Inc وRelational Software تاسیس نمودند تا یک DBMS رابطه ای بر اساس SQL بسازند. محصولی بنام Oracle در۱۹۷۹ عرضه گردید، و اولین DBMS رابطه ای بوجود آمد. به این ترتیب محصول Oracle باعث گردید اولین محصول IBM برای مدت ۲ سال در بازار دچار رکود باشد. این محصول بر روی مینی کامپیوترهای VAx Digital's اجرا می شد که خیلی از کامپیوترهای بزرگ IBM ارزان تر بودند.
امروزه این شرکت با نام Oracle Corporation اولین فروشنده سیستم های مدیریت بانک اطلاعاتی رابطه ای است. استادان آزمایشگاههای کامپیوتر در دانشگاه برکلی کالیفرنیا نیز در نیمه دهه ۱۹۷۰ مشغول تحقیق در زمینه بانک های اطلاعاتی رابطه ای بودن (مانند تیم تحقیق IBM)، گروه فوق نیز یک نمونه از DBMS رابطه ای ایجاد نمودند و سیستم خود را Ingres نام نهادند.
پروژه Ingres شامل یک زبان پرسش یا Query language بود بنام QUEL، اگر چه از SQL خیلی ساخت یافته تر بود، اما شباهت آن به زبان انگلیسی کمتر بود.
در حالیکه Oracle و Ingres برای ارائه محصولات تجاری در رقابت بودند، پروژه System/R شرکت IBM در تلاش بوده است که یک محصو ل تجاری با نام SQL/Data system (یاSQL/DS) عرضه نماید. IBM موجودیت SQL/DS را در ۱۹۸۱ اعلام، و در ۱۹۸۲ شروع به عرضه محصول خود نمود. در سال ۱۹۸۳ IBM یک نسخه SQL/DS را برای VM/CMS (سیستم عاملی که در کامپیوتر بزرگ IBM غالبا استفاده شده بود)، اعلام نمود.
همچنین در سال ۱۹۸۳ شرکتIBM، محصول Database۲ یا DB۲ را معرفی نمود که یک DBMS رابطه ای بود برای سیستم های بزرگ آن شرکت. DB۲ تحت سیستم عامل IBM's VMS(سیستم عامل مراکز کامپیوتری بزرگ) اجرا می شد. اولین نسخه DB۲در ۱۹۸۵ عرضه گردید، و مسئولین IBM اعلام نمو دند که این محصول یک برنامه استراتژیک برای تکنولوژی نرم افزاری IBM می باش DB۲ .از آن تاریخ تاکنون DBMS رابطه ای شاخص بوده و IBM از آن حمایت نموده و زبان DB۲'s SQL استاندارد عملی زبان بانک اطلاعاتی بوده است.
SQL استاندارد (ANSI (American National Standards Institute را در سال ۱۹۸۶ و ISO (International Organization for Standardization) را در سال ۱۹۸۷ اتخاذ نمود. استانداردهای مختلفی از SQL تاکنون عرضه شده که در جدول زیر بیان می کنیم:

SQL-۸۷
SQL-۸۹
SQL-۹۲
SQL:۱۹۹۹
SQL:۲۰۰۳
این نرم افزار مجهز به ابزارهای جدیدی برای نظارت و مدیریت بوده و همچنین مناسب استفاده برای بانک های اطلاعاتی بسیار بزرگ می باشد و علاوه بر آن در نسخه جدید سرعت کار و سهولت استفاده افزایش چشم گیری یافته است.

2008 Microsoft SQL Server دارای نسخه های مختلفی می باشد که هرکدام کارایی ، مخاطبین و قیمت های متفاوتی دارد :
SQL Server 2008 Enterprise –

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

SQL Server 2008 Standard –

شرکت های متوسط بیشتر از این نسخه استفاده می کنند یکی به این دلیل که بانک های اطلاعاتی برزگ را پشتیبانی می کند و دیگری قیمت پایین تر نسبت به نسخه Enterprise است .
عدم توانایی این نسخه در تحلیل های پیچیده دلیل قیمت پایین تر این نسخه نسبت به نسخه Enterprise است .

SQL Server 2008 Workgroup –

یکی از ارزان ترین نسخه ها می باشد و بیشتر برای شرکت های کوچک و سرویس دهنده های وب مورد استفاده قرار می گیرد .
این نسخه هم به راحتی می تواند به نسخه های Standard و Enterprise ارتقا پیدا کند .

SQL Server 2008 Web –

این نسخه برای اولین باری است که عرضه می شود و مخاطبین اصلی این نسخه را شرکت های خدمات میزبانی وب تشکیل می دهند . این نسخه مجهز به ابزارهای بسیار کاربردی برای پشتیبانی از برنامه های کاربردی گران قیمت و بسیار پیچیده تحت وب است که در سرویس های میزبانی وب به کار می روند .
SQL Server 2008 Developer –

از نام این نسخه می توان دریافت که این نسخه مخصوص برنامه نویسان و توسعه دهندگان می باشد و به همین دلیل دارای قیمت پایینی است . این نسخه هیچ تفاوتی با نسخه Enterprise ندارد و تمامی امکانات آن را دارا می باشد.
قیمت پایین این نسخه باعث شده تا بیشتر شرکت های نرم افزاری که با بانک های اطلاعاتی سرو کار دارند از این نسخه استفاده کنند .
با این کار دیگر لازم نیست که شرکت ها برای انجام عملیات تست و یا پیش نمایش ملزم به خرید نسخه Enterprise باشد.
در صورتی هم که شرکت تصمیم به عرضه تجاری محصول خود کرد به راحتی می تواند این نسخه را به نسخه Enterprise ارتقا دهد .
SQL Server 2008 Express –

این نسخه به صورت رایگان عرضه می شود.
و به اصطلاح یک نسخه کوچک شده از این نرم افزار می باشد و بطبع این نسخه دارای امکانات بسیار کمتری نسبت به نسخه های دیگر می باشد .
از این نسخه بیشتر برای آموزش و ساخت برنامه های کوچک تحت دسکتاپ و سرور مورد استفاده قرار می گیرد که این امر به برنامه نویسان این اجازه رو می دهد که اگر مشغول نوشتن یک پروژه با یک بانک اطلاعاتی کوچک هستند بتوانند از این نسخه استفاده کنند .
در ضمن این نسخه به صورت پیش فرض روی نسخه های Visual Studio 2005 , 2008 قرار داده شده است و برنامه نویسان این Platform می توانند به راحتی از این نسخه استفاده کنند.

قابلیت های جدید اضافه شده در Microsoft SQL Server 2008 عبارتند از :

– اضافه شدن Persian Collection ( خبری خوش برای جامعه پارسی )

– اضافه شدن نوع داده datetime2 و همچنین بهبود و افزایش دقت برای نگهداری نوع داده DateTime

– اضافه شدن نوع های داده geography و geometry برای شرکت های نرم افزاری که با نقشه های زمینی و هوایی سرو کار دارند

– بهبود کارایی و افزایش سرعت بازیابی اطلاعات نسبت به نسخه های قبل

– قابلیت Auto Complete کردن خودکار

– قابلیت Syntax Checking یا غلط یابی خودکار

– مقدار دهی متغیر های به صورت خطی

– ارتقا و بهبود چشم گیر Transact-SQL

– فابلیت trace کردن پرسش ها

– قابلیت ایجاد User Defined Types و Defined Aggregates User با ظرفیتی بالاتر از 8
KB

— قابلیت ارسال داده های بزرگ به توابع و پروسجر ها به وسیله قابلیت جدید Table-Value Parameters

– توانایی انجام چندین پردازش توسط دستوری جدید به نام MERGE

– Model hierarchical data برای ایجاد نمودارهای درختی و چارت ها توسط یکی از نوع های داده جدید به نام HierarchyID

– سیستم یکپارچه و ارتقا یافته Full-Text Indexes که با سرعتی بالا متن ها را مورد جست و جو قرار می دهد

– اضافه شدن Linq برای توسعه دهندگانی که با Linq آشنایی دارند

– مدیریت بر روی فایل ها توسط قابلیت FILESTREAM Data Type

– و …

پایگاه داده چیست؟

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

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

فصل دوم:

نیازمندی های سیستم:

1- سیستم باید قابلیت ثبت اطلاعات خریدار را دارا باشد.
2- سیستم باید قابلیت ثبت انواع اتومبیل را دارا باشد.
3- سیستم باید قابلیت فروش قسطی انواع اتومبیل ها را دارا باشد.
4- سیستم باید اطلاعات قسط ها را ثبت کند.
5- سیستم باید قابلیت پرداخت قسط را دارا باشد
6- سیستم باید افرادی که قسط آنها عقب افتاده است را واکشی کند.
7- هر نوع اتومبیل دارای شرایط پرداخت قسطی ای است که این قسط ها باید در سیستم نسبت به اتومبیل ثبت گردد.
8- سیستم باید قابلیت پرداخت پول پیش را دارا باشد
9- در نهایت تصمیم با اپراتور است که چقدر پول پیش و چقدر پرداخت قسطی دارد.
10- شرح فرم 1: (درج خودرو)
11-
12-
13-
14-
15- شکل کلی فرم 1:
16-
17-
18-
19-
20-
21-
22-
23-
24-
25-
26-
27-
28-
29-
30-
31-
32-
33-
34-
35-
36-
37-
38-
39-
40-
41-
42-
43- کد فرم 1:
44-
45-
46-
47-
48- using System;
49- using System.Collections.Generic;
50- using System.ComponentModel;
51- using System.Data;
52- using System.Data.SqlClient;
53- using System.Drawing;
54- using System.Text;
55- using System.Windows.Forms;
56-
57- namespace WindowsApplication2
58- {
59- public partial class Carfrm : Form
60- {
61- public Carfrm()
62- {
63- InitializeComponent();
64- }
65- private void ShowPosition()
66- {
67- // Always format the number
68- // in the txtPrice field to include cents
69- try
70- {
71- txtprice.Text =
72- Decimal.Parse(txtprice.Text).ToString("##0.00");
73- txtprice1.Text =
74- Decimal.Parse(txtprice1.Text).ToString("##0.00");
75- txtprice2.Text =
76- Decimal.Parse(txtprice2.Text).ToString("##0.00");
77- }
78- catch (System.Exception )
79- {
80- txtprice.Text = "0";
81- txtprice.Text =
82- Decimal.Parse(txtprice.Text).ToString("##0.00");
83- txtprice1.Text = "0";
84- txtprice1.Text =
85- Decimal.Parse(txtprice1.Text).ToString("##0.00");
86- txtprice2.Text = "0";
87- txtprice2.Text =
88- Decimal.Parse(txtprice2.Text).ToString("##0.00");
89- }
90- }
91- private void empty()
92- {
93- txtprice2.Text = "";
94- txtprice1.Text = "";
95- txtpish.Text = "";
96- txtnump.Text = "";
97- txtModel.Text = "";
98- txtCar.Text = "";
99- txtprice.Text = "";
100-
101- }
102-
103-
104- DataSet ds = new DataSet();
105- string strCon = "Data Source=.SQLEXPRESS;AttachDbFilename=d:Car Lizing projectWindowsApplication2LizingBase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
106- SqlDataAdapter da;
107- SqlConnection Con;
108- DataRow newRow;
109- SqlCommandBuilder cb;
110- bool newMode;
111- string strSql;
112-
113-
114- private void Carfrm_Load(object sender, EventArgs e)
115- {
116-
117- newMode = false;
118- strSql = "SELECT * FROM Car";
119- Con = new SqlConnection(strCon);
120- Con.Open();
121- da = new SqlDataAdapter(strSql, Con);
122- da.Fill(ds, "Car");
123-
124- txtid.DataBindings.Add(new Binding("Text", ds, "Car.id"));
125- txtCar.DataBindings.Add(new Binding("Text", ds, "Car.Car"));
126- txtModel.DataBindings.Add(new Binding("Text", ds, "Car.model"));
127- txtprice.DataBindings.Add(new Binding("Text", ds, "Car.Price"));
128- txtpish.DataBindings.Add(new Binding("Text", ds, "Car.Pish"));
129- txtprice1.DataBindings.Add(new Binding("Text", ds, "Car.price1"));
130- txtprice2.DataBindings.Add(new Binding("Text", ds, "Car.price2"));
131- Dtg1.DataBindings.Add(new Binding("DataSource", ds, "Car"));
132- Dtg1.AutoGenerateColumns = false;
133- Dtg1.Columns[0].HeaderText = "";
134- Dtg1.Columns[1].HeaderText = "نام ماشین";
135- Dtg1.Columns[2].HeaderText = "مدل";
136- Dtg1.Columns[3].HeaderText = "قیمت";
137- Dtg1.Columns[4].HeaderText = "پیش پرداخت";
138- Dtg1.Columns[5].HeaderText = "تعداد اقساط";
139- Dtg1.Columns[6].HeaderText = "مبلغ اقساط";
140- Dtg1.Columns[7].HeaderText = "قیمت با سود";
141- Con.Close();
142-
143-
144- }
145-
146-
147-
148- private void btnadd_Click(object sender, EventArgs e)
149- {
150- newRow = ds.Tables["Car"].NewRow();
151- newMode = true;
152- empty();
153-
154- }
155-
156- private void btnedit_Click(object sender, EventArgs e)
157- {
158- if (newMode == true)
159- {
160- newRow["Car"] = Convert.ToString(txtCar.Text);
161- newRow["model"] = Convert.ToString(txtModel.Text);
162- newRow["Price"] = Convert.ToDecimal(txtprice.Text);
163- newRow["Pish"] = Convert.ToDecimal(txtpish.Text);
164- newRow["nump"] = Convert.ToInt16(txtnump.Text);
165- newRow["price1"] = Convert.ToDecimal(txtprice1.Text);
166- newRow["price2"] = Convert.ToDecimal(txtprice2.Text);
167- ds.Tables["Car"].Rows.Add (newRow);
168- cb = new SqlCommandBuilder(da);
169- da = cb.DataAdapter;
170- da.Update(ds, "Car");
171- ds.Clear();
172- da.Fill(ds, "Car");
173- Con.Close();
174- ds.AcceptChanges();
175- }else
176- {
177- cb=new SqlCommandBuilder();
178- da.Update(ds,"Car");
179-
180- }
181- }
182-
183- private void btnmovefirst_Click(object sender, EventArgs e)
184- {
185- this.BindingContext[ds,"Car"].Position = 0;
186- ShowPosition();
187- }
188-
189- private void btnmoveprevios_Click(object sender, EventArgs e)
190- {
191- this.BindingContext[ds,"Car"].Position -= 1;
192- ShowPosition();
193- }
194-
195- private void btnmovenext_Click(object sender, EventArgs e)
196- {
197- this.BindingContext[ds,"Car"].Position += 1;
198- ShowPosition();
199- }
200-
201- private void btnmovelast_Click(object sender, EventArgs e)
202- {
203- this.BindingContext[ds,"Car"].Position = this.BindingContext[ds,"Car"].Count – 1;
204- ShowPosition();
205- }
206-
207- private void btndel_Click(object sender, EventArgs e)
208- {
209-
210- SqlCommand cmd = new SqlCommand();
211- string sqlDel;
212- Con.Open();
213-
214- sqlDel = "DELETE FROM Car WHERE id=" + txtid.Text;
215- cmd.CommandText=sqlDel;
216- cmd.Connection=Con;
217- cmd.ExecuteNonQuery();
218- ds.Clear();
219- da.Fill(ds,"Car");
220- Con.Close();
221-
222-
223-
224- }
225-
226- private void btnend_Click(object sender, EventArgs e)
227- {
228- /* if (ds.HasChanges())
229- {
230- DialogResult b1;
231- b1 = MessageBox.Show("دیتا ست تغییر کرده است ذخیره شود؟", "Save change", MessageBoxButtons.YesNo);
232- if (b1 == DialogResult.Yes)
233- {
234- cb = new SqlCommandBuilder(da);
235- da.Update(ds, "Car");
236- Con.Close();
237-
238-
239- }
240- else Close();
241-
242-
243- }else Close();*/
244- this.Close();
245- }
246-
247- private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
248- {
249-
250- }
251-
252- private void Carfrm_FormClosed(object sender, FormClosedEventArgs e)
253- {
254- ds.AcceptChanges();
255-
256- }
257-
258- private void txtid_TextChanged(object sender, EventArgs e)
259- {
260-
261- }
262-
263- private void pictureBox1_Click(object sender, EventArgs e)
264- {
265-
266- }
267- }
268- }
269-
270-
271-
272- ابتدا وقتی به قسمت کد ها مراجعه میکنیم در ابتدای خط کتابخانه های مورد نیازی را که به طور پیش فرض که باتوجه به نیاز ما فراخوانی می شوند را مشاهده مینماییم.
273- چون در این برنامه ما به SQL Server نیاز داریم بنابرین using System.Data.SqlClient; را دستی به کتابخانه اضافه می کنیم.
274- سپس فضای نمونه را با نام windows application 2 تعریف میکنیم.
275- حالا در قسمت فرم مقدار دهی اولیه صورت میگیرد.
276- تابعی تعریف کرده ایم به نام ShowPosition که وظیفه آن نمایش مبالغ و قیمت ها به صورت اعشاری با دو رقم اعشار میباشد همانطور که مشاهده می شود تک تک text ها که حاوی رقم می باشند را ابتدا با ToString معادل رشته ای مقدارDecimal یا عدد معمولی آن را بدست می آورد ، بعدا در جاهایی که نیاز به حرکت بین رکورد هاست (دکمه های بعدی ، قبلب، اولین و آخرین) از این تابع استفاده کرده ایم.
277-
278- دستور,try : دراین قسمت کدی که ممکن است سبب استثنا شود قرار میگیرد ممکن است تمامی کد یک روال یا چند سطر در این قسمت قرار دهید.
279-
280- دستور catch: کد این قسمت تنها وقتی اجرا میشود که یک خطا رخ دهد.این کدی ایست که برای به چنگ آوردن استثناها نوشته می شود, ممکن است چندین جمله catch برای بررسی حالت های ویژه استثناها وجود داشته باشد.
281-
282-
283- Empty : برای راحتی کار در برنامه به جای اینکه بعد از هر بار زدن دکمه درج یکی یکی محتوای Text ها را خالی کنیم تا کاربر بفهمد باید اطلاعات را وارد کند ، یک تابع دیگر به نام empty تعریف کردهایم که محتوای تمامی textها را خالی میکند و در مواقع نیاز از این تابع نیز استفاده میکنیم.
284-
285- حال یک پایگاه داده جدید ایجاد میکنیم برای مدیریت جداول
286- یک متغییر به نام strcon تعریف می کنیم سپس مسیر DB را به آن میدهیم.
287- برای اتصال به بانک اطلاعاتی مسیر زیر را دنبال می کنیم:
288- Data menu / add new data source / data base select / next / conection string /
289- سپس مسیر را از قسمت conection srting کپی کرده و در جلوی متغیر strcon قرار میدهیم.
290- حال به شرح اجزای مسیر می پردازیم:
291- Data source : دلالت بر نام SQL server می نماید.
292- AttachDbFilename : به دو صورت میتوان به sql وصل شویم 1) از طریق نام server 2) از طریق نام فایل که این خصوصیت دلالت بر نام فایل می نماید.
293- Integrated Security : اگر مقدار این خصوصیت true باشد کاربر windows می تواند به عنوان کاربر SQL server در نظر گرفته شود.
294- User Instance : تعدادی برنامه نویس همزمان به فعالیت مشغولند و همگی به یک DB مشترک وصل میشوند , که این میتواند ساختار بانک اطلاعاتی را بینظم کند. راه حل اینکه از طریق true قرار دادن این خصوصیت نسخه ای از بانک اطلاعاتی به ازای هر کاربر کپی میشود و در نتیجه هر کاربر روی نسخه خودش کار میکند.
295- SqlDataAdapter : یک نوع به نام da از dataAdapter تعریف میکنیم که داده ها را به صورت خود کار وارد کند.
296- برای عینیت بخشیدن به data table نیاز به ایجاد یک dataAdapter می باشد , شی ای که مجموعه ای از ویژگیها و متد ها را برای بازیابی و ثبت داده ها ما بین یک data set و داده منبع آن فراهم میآورد.
297- پس برای اتصال به منبع داده استفاده میگردد.
298- SqlConnection: شی برای اتصال به بانک اطلاعاتی ابتدالازم است تا مسیر ارتباطی ای شکل گرفته باشد به این منظور از شی sqlconection استفاده می کنیم. و به آن متغییری به نام con نسبت میدهیم.
299- DataRow newRow : برای تعریف رکورد از جدول
300- در ادامه به تعریف متغیر های مورد نیاز برای ارتباط با بانک اطلاعاتی می پردازیم ابتدا متغیر ds را برای dataset در نظر گرفته ایم و برای اتصال با بانک اطلاعاتی از connection String زیر استفاده شده که در آن مسیر فایل بانک اطلاعاتی را نیز تعیین کرده ایم. و متغییر های دیگری که در ادامه از آنها در جریان کار با بانک اطلاعاتی استفاده خواهیم کرد.مثل strsql که دستورات Sqlی که بخواهیم روی رکوردها اجرا کنیم را تا قبل از اجرا در خود نگه میدارد.
301-
302- در این قسمت ابتدا با دستور sql کلیه رکورد هایی که در جدول Car مخصوص مشخصات خودرو ها ذخیره شده را برای کار انتخاب میکنیم ، سپس با Con یک ارتباط با بانک اطلاعاتی sql ایجاد کرده و با open ارتباط را آغاز میکنیم.
303- در ادامه با استفاده از DataBindings.Add مقدار هر فیلد را از بانک اطلاعاتی و جدول Car را در text مربوط به آن نمایش می دهیم.
304- newMode : چون در بالا از نوع boolian تعریف کردیم پس میتواند مقدار True یا false را بگیرد که ما در ابتدای فرم هنگام لود شدن آن را false کرده ایم .
305- strSql : که از نوع srting تعریف شده تمام فیلد های جدول را درونش قرار داده.
306- Con : یک نوع جدیدی از sqlconection ایجاد کرده است.
307- Con.Open() : مسیر ارتباطی به بانک اطلاعاتی را باز میکند.
308- da = new SqlDataAdapter(strSql, Con); : یک نو جدید از dataAdapter تعریف کرده
309- da.Fill(ds, "Car"); : جدول car با مقادیری که در فرم یک وارد میشود پر میشود.
310-
311-
312-
313- دستورات زیر تک تک فیلد هارا از جدول کار پر میکند.
314-
315-
316-
317- 3 txtid.DataBindings.Add(new Binding("Text", ds, "Car.id"));
318-
319- txtCar.DataBindings.Add(new Binding("Text", ds, "Car.Car"));
320-
321- txtModel.DataBindings.Add(new Binding("Text", ds, "Car.model"));
322-
323- txtprice.DataBindings.Add(new Binding("Text", ds, "Car.Price"));
324-
325- txtpish.DataBindings.Add(new Binding("Text", ds, "Car.Pish"));
326-
327- txtprice1.DataBindings.Add(new Binding("Text", ds, "Car.price1"));
328-
329- txtprice2.DataBindings.Add(new Binding("Text", ds, "Car.price2"));
330-
331- در زیر تعیین نام فارسی برای تیتر هر یک از ستون ها مشخص میگردد ( نام فیلد ستونها):
332-
333-
334- Dtg1.AutoGenerateColumns = false;
335- Dtg1.Columns[0].HeaderText = "";
336- Dtg1.Columns[1].HeaderText = "نام ماشین";
337- Dtg1.Columns[2].HeaderText = "مدل";
338- Dtg1.Columns[3].HeaderText = "قیمت";
339- Dtg1.Columns[4].HeaderText = "پیش پرداخت";
340- Dtg1.Columns[5].HeaderText = "تعداد اقساط";
341- Dtg1.Columns[6].HeaderText = "مبلغ اقساط";
342- Dtg1.Columns[7].HeaderText = "قیمت با سود";
343- Con.Close();
344-
345-
346- دکمه درج (btnadd) :
347- newRow = ds.Tables["Car"].NewRow(); : یک رکورد جدید در جدول car ایجاد می نماید.
348- newMode = true; : در اینجا برای اینکه اجازه ورود اطلاعات را داشته باشیم مقدار آن را true میناییم.
349- empty(); : اطلاعات فرم را برای ورود اطلاعات جدید خالی میکند.
350-
351- دکمه ذخیره (btnsave ) :
352- شرط ورود میگزاریم که اگر if (newMode == true) اجازه save در DB داریم.
353- اطلاعات را به نوع های مربوطه تبدیل کرده و ذخیره کند.
354-
355- دکمه حذف ( btndel ) :
356- SqlCommand cmd = new SqlCommand(); :دستورات در خواستی sql را به SQL Server ارسال میکنیم.
357- string sqlDel; : یک متغیر از نوع رشته ای تعریف کرده
358- Con.Open(); : ارتباط با sql را برقرار ساخته.
359- sqlDel = "DELETE FROM Car WHERE id=" + txtid.Text; : دستر پاک کردن در sql
360- cmd.CommandText=sqlDel; : دلالت بر فرمانی میکند که ان را به sql ارسال میکنیم ( همان فرمان del میباشد ).
361- cmd.Connection=Con; : برای اجرای یک command باید آن را از طریق شی sqlconection (con ) به sqlserver ارسال کنیم که این خصوصیت conection را بیان میکند.
362- دستورات زیر به ترتیب به اولین رکورد , رکورد قبلی , رکورد بعدی , آخرین رکورد میبرد.
363-
364-
365- private void btnmovefirst_Click(object sender, EventArgs e)
366- {
367- this.BindingContext[ds,"Car"].Position = 0;
368- ShowPosition();
369- }
370-
371- private void btnmoveprevios_Click(object sender, EventArgs e)
372- {
373- this.BindingContext[ds,"Car"].Position -= 1;
374- ShowPosition();
375- }
376-
377- private void btnmovenext_Click(object sender, EventArgs e)
378- {
379- this.BindingContext[ds,"Car"].Position += 1;
380- ShowPosition();
381- }
382-
383- private void btnmovelast_Click(object sender, EventArgs e)
384- {
385- this.BindingContext[ds,"Car"].Position=this.BindingContext[ds,"Car"].Count – 1;
386- ShowPosition();
387- }
388-
389-
390-
391-
392- دکمه خروج (btnend ) :
393-
394-
395-
396- this.Close();: با زدن دکه خروج فرم جاری بسته میشود.
397-
398-
399-
400-
401- شرح فرم 2 : (انتخاب خودرو)
402-
403-
404-
405-
406-
407-
408- شکل کلی فرم 2 :
409-
410-
411-
412-
413-
414- کد های فرم 2 :
415-
416-
417- using System;
418- using System.Collections.Generic;
419- using System.ComponentModel;
420- using System.Data;
421- using System.Drawing;
422- using System.Text;
423- using System.Windows.Forms;
424- using System.Data.SqlClient;
425- namespace WindowsApplication2
426- {
427- public partial class Carfrm1 : Form
428- {
429- DataSet ds = new DataSet();
430- string strCon = "Data Source=.SQLEXPRESS;AttachDbFilename=d:Car Lizing projectWindowsApplication2LizingBase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
431- SqlDataAdapter da;
432- SqlConnection Con;
433-
434-
435- string strSql;
436-
437- public Carfrm1()
438- {
439-
440- InitializeComponent();
441- }
442-
443-
444- private void Carfrm1_Load(object sender, EventArgs e)
445- {
446-
447- SqlCommand cmd = new SqlCommand();
448- strSql = "SELECT * FROM Car";
449- Con = new SqlConnection(strCon);
450- Con.Open();
451- da = new SqlDataAdapter(strSql, Con);
452- da.Fill(ds, "Car");
453-
454- cmbCar.DataSource = ds.Tables["Car"];
455- cmbCar.DisplayMember="Car";
456- cmbModel.DataSource = ds.Tables["Car"];
457- cmbModel.DisplayMember = "model";
458-
459- txtprice.DataBindings.Add(new Binding("Text", ds, "Car.Price"));
460- txtpish.DataBindings.Add(new Binding("Text", ds, "Car.Pish"));
461- txtprice1.DataBindings.Add(new Binding("Text", ds, "Car.price1"));
462- txtprice2.DataBindings.Add(new Binding("Text", ds, "Car.price2"));
463- txtnumP.DataBindings.Add(new Binding("Text", ds, "Car.nump"));
464-
465- Con.Close();
466-
467- }
468-
469- private void cmbCar_SelectedIndexChanged(object sender, EventArgs e)
470- {
471-
472- }
473-
474- private void cmbModel_SelectedIndexChanged(object sender, EventArgs e)
475- {
476-
477-
478- }
479-
480- private void cmbModel_TextChanged(object sender, EventArgs e)
481- {
482- this.BindingContext[ds, "Car"].Position = cmbModel.SelectedIndex;
483- }
484-
485- private void btnadd_Click(object sender, EventArgs e)
486- {
487- Common.Car = cmbCar.Text;
488- Common.model = cmbModel.Text;
489- Common.price1 = txtprice1.Text;
490- Common.price2 = txtprice2.Text;
491- Common.Price = txtprice.Text;
492- Common.nump = txtnumP.Text;
493- Common.pish = txtpish.Text;
494- this.Close();
495-
496- }
497-
498- private void btnCancel_Click(object sender, EventArgs e)
499- {
500- this.Close();
501- }
502-
503- private void pictureBox1_Click(object sender, EventArgs e)
504- {
505-
506- }
507- }
508- }
509-
510-
511-
512- شرح کدهای فرم 2 :
513-
514- cmbCar.DataSource = ds.Tables["Car"];
515- cmbCar.DisplayMember="Car";
516- cmbModel.DataSource = ds.Tables["Car"];
517- cmbModel.DisplayMember = "model";
518-
519- در بالا برای دسترسی به فیلد های یک جدول از datasource استفاده میکنیم چون فیلدهای جداول در dataset می باشد بنابرین توسط datasource ارتباط برقرار میکنیم.
520- Display member برای نمایش کل مقادیر فیلدی که ما انتخاب کرده ایم تا در combo box نمایش داده شود.
521-
522-
523-
524-
525-
526-
527-
528-
529-
530- مقدار دهی فیلد های جدول:
531-
532-
533- txtprice.DataBindings.Add(new Binding("Text", ds, "Car.Price"));
534- txtpish.DataBindings.Add(new Binding("Text", ds, "Car.Pish"));
535- txtprice1.DataBindings.Add(new Binding("Text", ds, "Car.price1"));
536- txtprice2.DataBindings.Add(new Binding("Text", ds, "Car.price2"));
537- txtnumP.DataBindings.Add(new Binding("Text", ds, "Car.nump"));
538-
539-
540- در قسمت model موقعیت اندیس مقدار انتخابی را در جدول car پیدا کرده و مقدار ان را در جدول car
541-
542- private void cmbModel_TextChanged(object sender, EventArgs e)
543- {
544- this.BindingContext[ds, "Car"].Position = cmbModel.SelectedIndex;
545- }
546-
547-
548-
549-
550-
551-
552-
553- دکمه درج ( btnadd ) :
554-
555-
556- اطلاعاتی که در فرم توسط combobox ها پر شده و بقیه texbox ها نیز با توجه به انتخابی که انجام شده به طور اتومات به جدول وصل شده واطلاعات مربوط به combo box ها را واکشی کرده و نمایش می دهد و ما میتوانیم با زذن دکمه درج اطلاعات را اضافه کنیم.
557-
558-
559- private void btnadd_Click(object sender, EventArgs e)
560- {
561- Common.Car = cmbCar.Text;
562- Common.model = cmbModel.Text;
563- Common.price1 = txtprice1.Text;
564- Common.price2 = txtprice2.Text;
565- Common.Price = txtprice.Text;
566- Common.nump = txtnumP.Text;
567- Common.pish = txtpish.Text;
568- this.Close();
569-
570- }
571-
572-
573- دکمه انصراف ( btncancel) :
574-
575-
576- this.Close(); : بازدن دکمه از ادامه کار صرف نظر میگردد.
577-
578-
579-
580-
581-
582-
583-
584-
585-
586-
587-
588-
589-
590-
591-
592-
593-
594-
595-
596-
597-
598-
599-
600-
601-
602-
603-
604-
605-
606-
607-
608-
609-
610- شرح فرم 3: (درج خودرو)
611-
612-
613-
614-
615-
616- شکل کلی فرم 3:
617-
618-
619-
620-
621-
622-
623-
624-
625-
626-
627-
628-
629- کد های فرم 3 :
630-
631-
632- using System;
633- using System.Collections.Generic;
634- using System.ComponentModel;
635- using System.Data;
636- using System.Drawing;
637- using System.Text;
638- using System.Windows.Forms;
639-
640- namespace WindowsApplication2
641- {
642- public partial class Form1 : Form
643- {
644- public Form1()
645- {
646- InitializeComponent();
647- }
648-
649- private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
650- {
651-
652- }
653-
654- private void tabPage1_Click(object sender, EventArgs e)
655- {
656-
657- }
658-
659- private void Form1_Load(object sender, EventArgs e)
660- {
661-
662-
663-
664- }
665-
666- private void tabControl1_Click(object sender, EventArgs e)
667- {
668-
669- }
670-
671- private void mn4_Click(object sender, EventArgs e)
672- {
673- this.Close();
674- }
675-
676- private void mnCar_Click(object sender, EventArgs e)
677- {
678- Carfrm Carfrm = new Carfrm();
679- Carfrm.Show();
680-
681- }
682-
683- private void mnSell_Click(object sender, EventArgs e)
684- {
685- sellfrm sellfrm = new sellfrm();
686- sellfrm.Show();
687-
688- }
689-
690- private void mnPay_Click(object sender, EventArgs e)
691- {
692- Payfrm Payfrm = new Payfrm();
693- Payfrm.Show();
694-
695- }
696-
697- private void mn3_Click(object sender, EventArgs e)
698- {
699- Searchfrm Searchfrm = new Searchfrm();
700- Searchfrm.Show();
701- }
702-
703- private void pictureBox1_Click(object sender, EventArgs e)
704- {
705-
706- }
707- }
708- }
709-
710-
711- شرح کدهای فرم 3 :
712-
713- منوی اطلاعات پایه / انواع اتومبیل: فرم درج خودرو را نمایش میدهد.
714-
715-
716-
717- private void mnCar_Click(object sender, EventArgs e)
718- {
719- Carfrm Carfrm = new Carfrm();
720- Carfrm.Show();
721-
722- }
723-
724-
725-
726- منوی عملیات/فرم اقساطی خودرو: در این قسمت از کد با زدن دکمه ی mnSell فرم فروش اقساطی خودرو نمایش داده می شود و می توان عملیات درج و…را در ان اعمال نمود.
727-
728-
729-
730- private void mnSell_Click(object sender, EventArgs e)
731- {
732- sellfrm sellfrm = new sellfrm();
733- sellfrm.Show();
734-
735- }
736-
737-
738- منوی عملیات/ دریافت قسط: در این قسمت از کد با زدن دکمه ی mnPay فرم دریافت اقساط نمایش داده می شود و می توان مشخصات خریدار را دریافت کرده و به رکوردهای خود اضافه وذخیره و … نمود.
739-
740-
741- private void mnPay_Click(object sender, EventArgs e)
742- {
743- Payfrm Payfrm = new Payfrm();
744- Payfrm.Show();
745-
746-
747- منوی جستجو: با زدن این منو فرم جستجو نمایش داده می شود که می توان براساس نام خانوادگی خریدار کد ملی و…مشخصات اتومبیل مورد نظر را جستجو نمود.
748-
749- private void mn3_Click(object sender, EventArgs e)
750- {
751- Searchfrm Searchfrm = new Searchfrm();
752- Searchfrm.Show();
753- }
754-
755-
756- منوی خروج: با زدن این دکمه فرم جاری بسته می شود.
757-
758- private void mn4_Click(object sender, EventArgs e)
759- {
760- this.Close();
761- }
762-
763-
764-
765-
766-
767-
768-
769-
770-
771-
772-
773-
774-
775-
776-
777-
778-
779-
780-
781-
782-
783-
784-
785-
786-
787- شرح فرم 4: (درج خودرو)
788-
789-
790-
791-
792- شکل کلی فرم 4:
793-
794-
795-
796- کدهای فرم4 (ورود کاربر):
797-
798-
799- using System;
800- using System.Collections.Generic;
801- using System.ComponentModel;
802- using System.Data;
803- using System.Drawing;
804- using System.Text;
805- using System.Windows.Forms;
806-
807- namespace WindowsApplication2
808- {
809- public partial class Form2 : Form
810- {
811- public Form2()
812- {
813- InitializeComponent();
814- }
815- int i;
816-
817-
818- private void btnok_Click(object sender, EventArgs e)
819- {
820- if (txtuser.Text == "Admin" & txtpass.Text == "1234")
821- {
822- Form1 form = new Form1();
823- form.Show();
824- this.Hide();
825-
826- }
827- else if (i < 3)
828- {
829- i++;
830- txtuser.Focus();
831- txtuser.Text = "";
832- txtpass.Text = "";
833-
834- }
835- else if (i == 3)
836- {
837- this.Close();
838- }
839- }
840-
841- private void txtpass_TextChanged(object sender, EventArgs e)
842- {
843-
844- }
845-
846- private void txtpass_KeyPress_1(object sender, KeyPressEventArgs e)
847- {
848- EventArgs E = new EventArgs();
849- if (e.KeyChar == 13)
850- btnok_Click(sender, E);
851-
852- }
853-
854- private void txtuser_KeyPress(object sender, KeyPressEventArgs e)
855- {
856- EventArgs E = new EventArgs();
857- if (e.KeyChar == 13)
858- btnok_Click(sender, E);
859- }
860-
861- private void btncancel_Click(object sender, EventArgs e)
862- {
863- this.Close();
864- }
865- }
866- }
867-
868-
869- شرح فرم:
870- در ابتدا متغییری به نام I تعریف کرده ایم که از نوع عددی ست.سپس بازدن دکمه ی ok نام کاربری و کلمه عبور وارد شده توسط کاربر با شرط if بررسی مکنیم اگر با کلمات admin و 1234 برابر بود ، این فرم (فرم login) را با hide مخفی کرده و form1 که همان فرم اصلی برنامه می باشد را نمایش مید هد و در غیر این صورت یعنی اگر نام کاربری و یا کلمه عبور را غلط وارد کرده باشیم و اگر متغییر عددی I به عدد 3 نرسیده بود با هر بار تکرار غلط وارد کردن رمز یک واحد به I اضافه می کنیم و اگر I به 3 رسید با close این فرم را هم می بندیم که باعث خروج از برنامه می شود.
871-
872- در قسمت بعد در textbox ها تعین کرده ایم که اگر تغییری داشت EventArgs در آن لحظه بررسی می کند اگر کد کلید فشرده شده (KeyChar) برابر با کد کلید Enter که 13 است بود دکمه درج با این دستور فراخوانی شده ( btnok_Clicksender, E) و مثل این بوده که کاربر روی درج کلیک کرده.
873-
874- دکمه انصراف (btncancle ): باعث بسته شدن فرم میشود.
875-
876-
877-
878-
879-
880-
881-
882-
883-
884-
885-
886-
887-
888-
889-
890-
891- شرح فرم 5(دریافت اقساط) :
892-
893-
894- شکل کلی فرم 4:
895-
896-
897-
898-
899-
900-
901- کدهای فرم 4:
902-
903-
904-
905-
906-
907- using System;
908- using System.Collections.Generic;
909- using System.ComponentModel;
910- using System.Data;
911- using System.Data.SqlClient;
912- using System.Drawing;
913- using System.Text;
914- using System.Windows.Forms;
915-
916- namespace WindowsApplication2
917- {
918- public partial class Payfrm : Form
919- {
920- public Payfrm()
921- {
922- InitializeComponent();
923- }
924-
925-
926-
927-
928-
929- private void ShowPosition()
930- {
931-
932- // Always format the number
933- // in the txtPrice field to include cents
934- try
935- {
936- txtprice .Text =
937- Decimal.Parse(txtprice.Text).ToString("##0.00");
938-
939-
940- }
941- catch (System.Exception )
942- {
943- txtprice.Text = "0";
944- txtprice.Text =
945- Decimal.Parse(txtprice.Text).ToString("##0.00");
946-
947- }
948- }
949- private void empty()
950- {
951- txtnam.Text = "";
952- txtfamily.Text = "";
953- txtcode_gharardad.Text = "";
954-
955- txtcode.Text = "";
956- txtprice.Text = "";
957-
958- }
959-
960- DataSet ds = new DataSet();
961- string strCon = "Data Source=.SQLEXPRESS;AttachDbFilename=d:Car Lizing projectWindowsApplication2LizingBase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
962- SqlDataAdapter da;
963- SqlConnection Con;
964- DataRow newRow;
965- SqlCommandBuilder cb;
966- bool newMode;
967- string strSql;
968-
969- private void Payfrm_Load(object sender, EventArgs e)
970- {
971- newMode = false;
972- strSql = "SELECT * FROM Pay_Table";
973- Con = new SqlConnection(strCon);
974- Con.Open();
975- da = new SqlDataAdapter(strSql, Con);
976- da.Fill(ds, "Pay_Table");
977- txtnam.DataBindings.Add(new Binding("Text", ds, "Pay_Table.Name"));
978- txtfamily.DataBindings.Add(new Binding("Text", ds, "Pay_Table.Family"));
979- txtcode.DataBindings.Add(new Binding("Text", ds, "Pay_Table.Code_melli"));
980- txtcode_gharardad.DataBindings.Add(new Binding("Text", ds, "Pay_Table.Code"));
981- dtpicker.DataBindings.Add(new Binding("Text", ds, "Pay_Table.Date"));
982- txtprice.DataBindings.Add(new Binding("Text", ds, "Pay_Table.Paying"));
983- textBox1.DataBindings.Add(new Binding("Text", ds, "Pay_Table.id"));
984- dtpicker.DataBindings.Add(new Binding("Value", ds, "Pay_Table.Date"));
985-
986- Dtg1.DataBindings.Add(new Binding("DataSource", ds, "Pay_Table"));
987- Dtg1.Columns[0].HeaderText = "کد";
988- Dtg1.Columns[1].HeaderText = "کد قرارداد";
989- Dtg1.Columns[2].HeaderText = "نام خریدار";
990- Dtg1.Columns[3].HeaderText = "نام خانوادگی";
991- Dtg1.Columns[4].HeaderText = "کد ملی";
992- Dtg1.Columns[5].HeaderText = "مبلغ قسط";
993- Dtg1.Columns[6].HeaderText = "تاریخ";
994- ShowPosition();
995-
996- }
997-
998- private void btnadd_Click(object sender, EventArgs e)
999- {
1000- newRow = ds.Tables["Pay_Table"].NewRow();
1001- newMode = true;
1002- empty();
1003- }
1004-
1005- private void btnsave_Click(object sender, EventArgs e)
1006- {
1007- if (newMode == true)
1008- {
1009- newRow["id"]=newRow["id"];
1010- newRow["Code"] = Convert.ToInt16(txtcode_gharardad.Text);
1011- newRow["Name"] = Convert.ToString(txtnam.Text);
1012- newRow["Paying"] = Convert.ToDecimal(txtprice.Text);
1013- newRow["Family"] = Convert.ToString(txtfamily.Text);
1014- newRow["Code_melli"] = Convert.ToDecimal(txtcode.Text);
1015- newRow["Date"] = dtpicker.Text;
1016- bool flag=true;
1017- bool x=ds.HasErrors;
1018- if (txtcode_gharardad.Text== "")
1019- {
1020- errorProvider1.SetError(txtcode_gharardad, "لطفا کد قرارداد را وارد کنید");
1021- flag=false;
1022- }else if(x)
1023- {
1024- errorProvider1.SetError(txtcode_gharardad,"فردی با این مشخصات در دیتا بیس نیست");
1025- flag = false;
1026- }
1027- else if (txtcode.Text == "")
1028- {
1029- errorProvider1.SetError(txtcode, "لطفا مقدار مناسبی در این فیلد وارد کنید");
1030- flag = false;
1031- }
1032- else if (txtnam.Text == "")
1033- {
1034- errorProvider1.SetError(txtnam, "لطفا مقدار مناسبی در این فیلد وارد کنید");
1035- flag = false;
1036- }
1037- else if (txtfamily.Text == "")
1038- {
1039- errorProvider1.SetError(txtfamily, "لطفا مقدار مناسبی در این فیلد وارد کنید");
1040- flag = false;
1041- }
1042- else if (txtprice.Text == "")
1043- {
1044- errorProvider1.SetError(txtprice, "لطفا مقدار مناسبی در این فیلد وارد کنید");
1045- flag = false;
1046- }
1047-
1048- if (flag == false) return;
1049-
1050-
1051- ds.Tables["Pay_Table"].Rows.Add(newRow);
1052- cb = new SqlCommandBuilder(da);
1053- da = cb.DataAdapter;
1054-
1055- da.Update(ds, "Pay_Table");
1056- Con.Close();
1057- ds.AcceptChanges();
1058- newMode = false;
1059- }
1060- else
1061- {
1062- cb = new SqlCommandBuilder();
1063- da.Update(ds, "Pay_Table");
1064-
1065- }
1066- }
1067-
1068- private void btnend_Click(object sender, EventArgs e)
1069- {
1070-
1071- if (ds.HasChanges())
1072- {
1073- DialogResult b1;
1074- b1 = MessageBox.Show("دیتا ست تغییر کرده است ذخیره شود؟", "Save change", MessageBoxButtons.YesNo);
1075- if (b1 == DialogResult.Yes)
1076- {
1077- cb = new SqlCommandBuilder(da);
1078- da.Update(ds, "Pay_Table");
1079- Con.Close();
1080-
1081-
1082- }
1083- else Close();
1084-
1085-
1086- }
1087- else Close();
1088- }
1089-
1090- private void btnedit_Click(object sender, EventArgs e)
1091- {
1092- bool flag = true;
1093- bool err;
1094- err=ds.HasErrors;
1095- if (ds.HasChanges())
1096- {
1097- Con.Close();
1098- Con.Open();
1099- cb = new SqlCommandBuilder(da);
1100- da = cb.DataAdapter;
1101- if (err)
1102- {
1103- flag = false;
1104- return;
1105- }
1106- da.Update(ds, "Sell_Table");
1107- Con.Close();
1108- }
1109- }
1110-
1111- private void btndel_Click(object sender, EventArgs e)
1112- {
1113- int code;
1114-
1115- SqlCommand cmd = new SqlCommand();
1116- string sqlDel;
1117- Con.Close();
1118- Con.Open();
1119- code = int.Parse(textBox1.Text);
1120-
1121-
1122- sqlDel = "DELETE FROM Pay_Table WHERE id="+code;
1123-
1124- cmd.CommandText = sqlDel;
1125- cmd.Connection = Con;
1126- cmd.ExecuteNonQuery();
1127- ds.Clear();
1128- da.Fill(ds, "Pay_Table");
1129- Con.Close();
1130- }
1131-
1132- private void btnmovefirst_Click(object sender, EventArgs e)
1133- {
1134- this.BindingContext[ds, "Pay_Table"].Position = 0;
1135- ShowPosition();
1136- }
1137-
1138- private void btnmoveprevios_Click(object sender, EventArgs e)
1139- {
1140- this.BindingContext[ds, "Pay_Table"].Position -= 1;
1141- ShowPosition();
1142- }
1143-
1144- private void btnmovenext_Click(object sender, EventArgs e)
1145- {
1146- this.BindingContext[ds, "Pay_Table"].Position += 1;
1147- ShowPosition();
1148- }
1149-
1150- private void btnmovelast_Click(object sender, EventArgs e)
1151- {
1152-
1153- this.BindingContext[ds, "Pay_Table"].Position = this.BindingContext[ds, "Car"].Count – 1;
1154- ShowPosition();
1155- }
1156-
1157- private void Dtg1_CellContentClick(object sender, DataGridViewCellEventArgs e)
1158- {
1159- this.BindingContext[ds, "Pay_Table"].Position = Dtg1.TabIndex;
1160- }
1161-
1162-
1163- }
1164-
1165- }
1166-
1167-
1168-
1169-
1170-
1171- شرح کدهای فرم 4:
1172-
1173-
1174-
1175- ابتدا وقتی به قسمت کد ها مراجعه میکنیم در ابتدای خط کتابخانه های مورد نیازی را که به طور پیش فرض که باتوجه به نیاز ما فراخوانی می شوند را مشاهده مینماییم.
1176- چون در این برنامه ما به SQL Server نیاز داریم بنابرین using System.Data.SqlClient; را دستی به کتابخانه اضافه می کنیم.
1177- سپس فضای نمونه را با نام windows application 2 تعریف میکنیم.
1178- حالا در قسمت فرم مقدار دهی اولیه صورت میگیرد.
1179- تابعی تعریف کرده ایم به نام ShowPosition که وظیفه آن نمایش مبالغ و قیمت ها به صورت اعشاری با دو رقم اعشار میباشد همانطور که مشاهده می شود تک تک text ها که حاوی رقم می باشند را ابتدا با ToString معادل رشته ای مقدارDecimal یا عدد معمولی آن را بدست می آورد ، بعدا در جاهایی که نیاز به حرکت بین رکورد هاست (دکمه های بعدی ، قبلب، اولین و آخرین) از این تابع استفاده کرده ایم.
1180-
1181- دستور,try : دراین قسمت کدی که ممکن است سبب استثنا شود قرار میگیرد ممکن است تمامی کد یک روال یا چند سطر در این قسمت قرار دهید.
1182-
1183- دستور catch: کد این قسمت تنها وقتی اجرا میشود که یک خطا رخ دهد.این کدی ایست که برای به چنگ آوردن استثناها نوشته می شود, ممکن است چندین جمله catch برای بررسی حالت های ویژه استثناها وجود داشته باشد.
1184-
1185-
1186- Empty : برای راحتی کار در برنامه به جای اینکه بعد از هر بار زدن دکمه درج یکی یکی محتوای Text ها را خالی کنیم تا کاربر بفهمد باید اطلاعات را وارد کند ، یک تابع دیگر به نام empty تعریف کردهایم که محتوای تمامی textها را خالی میکند و در مواقع نیاز از این تابع نیز استفاده میکنیم.
1187-
1188- حال یک پایگاه داده جدید ایجاد میکنیم برای مدیریت جداول
1189- یک متغییر به نام strcon تعریف می کنیم سپس مسیر DB را به آن میدهیم.
1190- برای اتصال به بانک اطلاعاتی مسیر زیر را دنبال می کنیم:
1191- Data menu / add new data source / data base select / next / conection string /
1192- سپس مسیر را از قسمت conection srting کپی کرده و در جلوی متغیر strcon قرار میدهیم.
1193- حال به شرح اجزای مسیر می پردازیم:
1194- Data source : دلالت بر نام SQL server می نماید.
1195- AttachDbFilename : به دو صورت میتوان به sql وصل شویم 1) از طریق نام server 2) از طریق نام فایل که این خصوصیت دلالت بر نام فایل می نماید.
1196- Integrated Security : اگر مقدار این خصوصیت true باشد کاربر windows می تواند به عنوان کاربر SQL server در نظر گرفته شود.
1197- User Instance : تعدادی برنامه نویس همزمان به فعالیت مشغولند و همگی به یک DB مشترک وصل میشوند , که این میتواند ساختار بانک اطلاعاتی را بینظم کند. راه حل اینکه از طریق true قرار دادن این خصوصیت نسخه ای از بانک اطلاعاتی به ازای هر کاربر کپی میشود و در نتیجه هر کاربر روی نسخه خودش کار میکند.
1198- SqlDataAdapter : یک نوع به نام da از dataAdapter تعریف میکنیم که داده ها را به صورت خود کار وارد کند.
1199-
1200- برای عینیت بخشیدن به data table نیاز به ایجاد یک dataAdapter می باشد , شی ای که مجموعه ای از ویژگیها و متد ها را برای بازیابی و ثبت داده ها ما بین یک data set و داده منبع آن فراهم میآورد.
1201- پس برای اتصال به منبع داده استفاده میگردد.
1202- SqlConnection: شی برای اتصال به بانک اطلاعاتی ابتدالازم است تا مسیر ارتباطی ای شکل گرفته باشد به این منظور از شی sqlconection استفاده می کنیم. و به آن متغییری به نام con نسبت میدهیم.
1203- DataRow newRow : برای تعریف رکورد از جدول
1204- در ادامه به تعریف متغیر های مورد نیاز برای ارتباط با بانک اطلاعاتی می پردازیم ابتدا متغیر ds را برای dataset در نظر گرفته ایم و برای اتصال با بانک اطلاعاتی از connection String زیر استفاده شده که در آن مسیر فایل بانک اطلاعاتی را نیز تعیین کرده ایم. و متغییر های دیگری که در ادامه از آنها در جریان کار با بانک اطلاعاتی استفاده خواهیم کرد.مثل strsql که دستورات Sqlی که بخواهیم روی رکوردها اجرا کنیم را تا قبل از اجرا در خود نگه میدارد.
1205-
1206- در این قسمت ابتدا با دستور sql کلیه رکورد هایی که در جدول Car مخصوص مشخصات خودرو ها ذخیره شده را برای کار انتخاب میکنیم ، سپس با Con یک ارتباط با بانک اطلاعاتی sql ایجاد کرده و با open ارتباط را آغاز میکنیم.
1207- در ادامه با استفاده از DataBindings.Add مقدار هر فیلد را از بانک اطلاعاتی و جدول Car را در text مربوط به آن نمایش می دهیم.
1208- newMode : چون در بالا از نوع boolian تعریف کردیم پس میتواند مقدار True یا false را بگیرد که ما در ابتدای فرم هنگام لود شدن آن را false کرده ایم .
1209- strSql : که از نوع srting تعریف شده تمام فیلد های جدول را درونش قرار داده.
1210- Con : یک نوع جدیدی از sqlconection ایجاد کرده است.
1211- Con.Open() : مسیر ارتباطی به بانک اطلاعاتی را باز میکند.
1212- da = new SqlDataAdapter(strSql, Con); : یک نو جدید از dataAdapter تعریف کرده
1213- da.Fill(ds, "Car"); : جدول car با مقادیری که در فرم یک وارد میشود پر میشود.
1214-
1215- تک تک فیلدها پر میشود:
1216- Dtg1.DataBindings.Add(new Binding("DataSource", ds, "Pay_Table"));
1217- Dtg1.Columns[0].HeaderText = "کد";
1218- Dtg1.Columns[1].HeaderText = "کد قرارداد";
1219- Dtg1.Columns[2].HeaderText = "نام خریدار";
1220- Dtg1.Columns[3].HeaderText = "نام خانوادگی";
1221- Dtg1.Columns[4].HeaderText = "کد ملی";
1222- Dtg1.Columns[5].HeaderText = "مبلغ قسط";
1223- Dtg1.Columns[6].HeaderText = "تاریخ";
1224- ShowPosition();
1225-
1226- دکمه درج (btnadd):یک رکورد جدید برای ورود اطلاعات ایجاد میکند.سپس فرم را خالی میکند.
1227-
1228-
1229- دکمه ذخیره( btnsave) : اگر دکمه ذخیره را فشار دهیم اجازه ذخیره اطلاعات را در DB میدهد.
1230-
1231- در این قسمت با چند دستور if تو در تو با خالی بودن هر یک از text ها پیام خطای مناسبی نمایش میدهیم برای نمونه :
1232- if (txtcode_gharardad.Text== "")
1233- {
1234- errorProvider1.SetError(txtcode_gharardad, "لطفا کد قرارداد را وارد کنید");
1235- flag=false;
1236- }
1237-
1238-
1239-
1240- در این قسمت بررسی میکنیم اگر متغییر flag برابر false بود یعنی textی خالی نبوده پس با return از اجرای بقیه دستورات جلوگیری میکنیم.
1241- if (flag == false) return;
1242-
1243- اما در صورت بروز خطا کار خاصی انجام نمیدهیم و اطلاعات را بروزرسانی میکنیم.
1244-
1245- cb=new sql commanbilder();
1246- da.update(ds,"pay_table");
1247-
1248-
1249-
1250-
1251-
1252-
1253-
1254-
1255-
1256-
1257-
1258-
1259-
1260-
1261-
1262-
1263-
1264-
1265-
1266-
1267-
1268-
1269- شرح فرم 6(قرار داد):
1270-
1271-
1272-
1273- شکل کلی فرم 6:
1274-
1275-
1276-
1277-
1278-
1279- using System;
1280- using System.Collections.Generic;
1281- using System.ComponentModel;
1282- using System.Data;
1283- using System.Drawing;
1284- using System.Text;
1285- using System.Windows.Forms;
1286-
1287- namespace WindowsApplication2
1288- {
1289- public partial class rptfrm : Form
1290- {
1291- public rptfrm()
1292- {
1293- InitializeComponent();
1294- }
1295-
1296- private void crystalReportViewer1_Load(object sender, EventArgs e)
1297- {
1298-
1299- }
1300-
1301-
1302- }
1303-
1304-
1305-
1306-
1307- شرح کدهای فرم 6 :
1308-
1309-
1310- برای تهیه گزارش استفاده میگردد.و برای اجرای این فرم حتما باید برنامه crystal report در سیستم نصب شده باشد.
1311-
1312-
1313-
1314-
1315-
1316-
1317-
1318-
1319-
1320-
1321-
1322-
1323-
1324-
1325-
1326-
1327-
1328-
1329-
1330-
1331-
1332-
1333-
1334-
1335-
1336-
1337-
1338-
1339-
1340-
1341-
1342-
1343-
1344-
1345-
1346-
1347-
1348-
1349-
1350- شرح فرم7(جست وجو):
1351-
1352-
1353- شکل کلی فرم 6:
1354-
1355-
1356-
1357-
1358-
1359-
1360-
1361-
1362-
1363-
1364- کدهای فرم 7 :
1365-
1366- using System;
1367- using System.Collections.Generic;
1368- using System.ComponentModel;
1369- using System.Data;
1370- using System.Data.SqlClient;
1371- using System.Drawing;
1372- using System.Text;
1373- using System.Windows.Forms;
1374-
1375- namespace WindowsApplication2
1376- {
1377- public partial class Searchfrm : Form
1378- {
1379- public string strfind;
1380- public Searchfrm()
1381- {
1382- InitializeComponent();
1383-
1384- }
1385-
1386- DataSet ds = new DataSet();
1387- string strCon = "Data Source=.SQLEXPRESS;AttachDbFilename=d:Car Lizing projectWindowsApplication2LizingBase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
1388- SqlDataAdapter da;
1389- SqlConnection Con;
1390- DataView dtv;
1391-
1392-
1393- private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
1394- {
1395-
1396- }
1397-
1398-
1399-
1400- private void button1_Click(object sender, EventArgs e)
1401- {
1402- string strsql = "SELECT * FROM Sell_Table";
1403-
1404- DataTable table = new DataTable();
1405- if (cmbfind.SelectedIndex==0)
1406- {
1407- Con = new SqlConnection(strCon);
1408- Con.Open();
1409- da = new SqlDataAdapter(strsql, strCon);
1410-
1411- da.Fill(table);
1412- //Dtg1.DataBindings.Add(new Binding("DataSource", ds, "Sell_Table"));
1413-
1414- dtv = new DataView(table);
1415-
1416- dtv.RowFilter = "Family=" + "'" + txtfind.Text + "'";
1417- Dtg1.DataSource = dtv;
1418-
1419- Con.Close();
1420-
1421- }else if(cmbfind.SelectedIndex==1)
1422-
1423- {
1424- Con = new SqlConnection(strCon);
1425- Con.Open();
1426- da = new SqlDataAdapter(strsql, strCon);
1427-
1428- da.Fill(table);
1429- //Dtg1.DataBindings.Add(new Binding("DataSource", ds, "Sell_Table"));
1430-
1431- dtv = new DataView(table);
1432-
1433- dtv.RowFilter = "Code_melli=" + txtfind.Text;
1434- Dtg1.DataSource = dtv;
1435- Con.Close();
1436-
1437- }
1438- else if (cmbfind.SelectedIndex == 2)
1439- {
1440- Con = new SqlConnection(strCon);
1441- Con.Open();
1442- da = new SqlDataAdapter(strsql, strCon);
1443-
1444- da.Fill(table);
1445- //Dtg1.DataBindings.Add(new Binding("DataSource", ds, "Sell_Table"));
1446-
1447- dtv = new DataView(table);
1448-
1449- dtv.RowFilter = "sh_sh=" + txtfind.Text;
1450- Dtg1.DataSource = dtv;
1451- Con.Close();
1452-
1453- }
1454- else if (cmbfind.SelectedIndex == 3)
1455- {
1456- Con = new SqlConnection(strCon);
1457- Con.Open();
1458- da = new SqlDataAdapter(strsql, strCon);
1459-
1460- da.Fill(table);
1461- //Dtg1.DataBindings.Add(new Binding("DataSource", ds, "Sell_Table"));
1462-
1463- dtv = new DataView(table);
1464-
1465- dtv.RowFilter = "Code=" + txtfind.Text;
1466- Dtg1.DataSource = dtv;
1467- Con.Close();
1468- }
1469-
1470-
1471-
1472- }
1473-
1474- private void button2_Click(object sender, EventArgs e)
1475- {
1476- this.Close();
1477- }
1478-
1479- private void Searchfrm_Load(object sender, EventArgs e)
1480- {
1481-
1482- }
1483-
1484-
1485- }
1486- }
1487-
1488-
1489-
1490-
1491-
1492-
1493-
1494-
1495-
1496-
1497-
1498-
1499-
1500-
1501-
1502- شرح کدهای فرم 7 :
1503-
1504- برای جستجو از یک دستور Sql استفاده کرده ایم که در متغیر strsql مقداری از آن نوشته شده و مابقی آن در ادامه با دستور If شیء cmbfind را بررسی کرده ایم و برای هر حالت آن هر متد جستجوی تعیین شده در آن ادامه دستور sql را تعیین می کنیم و در نهایت اطلاعات را با دستور Dtg1.DataSource = dtv ذر شیء Datagridview نمایش می دهیم.
1505- ابتدا یک متغیر به نام strsql از نوع رشته ای تعریف می کنیم که به تمام فیلد های جدول فروش دسترسی داشته باشد.
1506- یک جدول جدید ایجاد کرده.
1507- در combobox اگر index روی اولین خانه بود یک ارتباط جدید ایجاد کن و سپس مسیر ارتباطی را باز کرده
1508- از طریق dataadapter , datatable را پر میکنیم.
1509- مرحله بعد ,سرچ را بر اساس فیلد های نام برده شده انجام می دهد.
1510-
1511- دکمه خروج (botten2 ) : از برنامه خارج می شود.
1512-
1513-
1514-

فصل سوم

شرح بانک اطلاعاتی

برای ساخت بانک اطلاعاتی پس از نصب Sql و با زکردن Sql Server Management Studio روی قسمت database راست کلیک کرده و گزینه new database… را کلیک میکنیم مطابق شکل زیر :

سپس در کادر محاوره ای جدید نام بانک اطلاعاتی را وارد میکنیم :

تا این مرحله بانک اطلاعاتی ساخته شده و میتوان نام آن را در لیست بانک اطلاعاتی های فعال مشاهده کرد .

حال به ساختن جداول (table) های پروژه می پردازیم ؛ برای این کار روی قسمت Table راست کلیک کرده و گزینه New Table… را انتخاب میکنیم :

و در قسمت بعدی فیلدها و نوع شان را تعین میکنیم

کار بانک اطلاعاتی پروژه تمام شد. نوع ها هم که مشخص هستند .

مدل رابطهای (ERD)

Data Set 1

Data Set 2:

Data set 3:


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

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