خوب فرض کنیم که هدف ما طراحی یک نرم افزار برای یک کتابخانه باشه . در اصول کلی طراحی یک نرم افزار اولین کاری که باید انجام بشه اینه که ببینیم سیستم ما قراره چه عملیاتی رو انجام بده و چه قابلیتهایی داشته باشه . تمام نهادهای مورد نیاز نرم افزار رو تشخیص بدیم و تمام اجزای مورد نیاز اونها رو تعیین کنیم . خوب مثلا در همین مثال کتابخانه نهادهای ما می تونن دانشجو ، کتاب ، متصدی کتابخانه ، مسئول اصلی کتابخانه و خود کتابخانه و بسیاری نهادهای دیگه بسته به قابلیتهایی که می خواهیم کتابخانه ما داشته باشه ، ایجاد کنیم . حالا که نهادها رو مشخص کردیم ، در مرحله بعد باید فیلدهای هر نهاد یا به اصطلاح هر رکورد را معیین کنیم که این هم بستگی به طراح نرم افزار داره . ولی خوب یک سری فیلدها هستن که تقریبا همه اونها رو ایجاد می کنند ، مثلا برای دانشجو : نام ، نام خانوادگی و شماره دانشجویی . خوب تا به حال یک طرح کلی از نرم افزاری که قراره ایجاد بشه تو ذهنمون ایجاد کردیم ، حالا باید توسط یک نرم افزار که به ما کمک می کنه جداول و فیلدهای اونها و رابطه بین جداول رو مشخص کنیم کار پیاده سازی طرح کلی نرم افزار رو انجام بدیم . خود من توی پروژم از 9Power Designer استفدا کردم که نرم افزاری خیلی ساده ور در عین سادگی کاملی هستش . ما در این نرم افزار به رسم نمودار ERd بانک اطلاعاتی که می خواهیم طراحی کنیم می پردازیم (Entity Relational Diagram) . من برای نمونه یک مدل ERd ساده رو اینجا براتون میزارم که در power designer طراحی شده . سعی کردم ساده ترین حالت ممکن رو در نظربگیرم که برای همه قابل فهم باشه .

همونطور که در شکل بالا می بینید 3 رابطه داریم . دو رابطه عضویت و یک رابطه integrity که همان امانت دادن کتاب هستش ( اگه بخوام در مورد power designer صحبت کنم خیلی رمان میبره بنابر این فرض رو بر این می گیریم برای ادامه که تا اینجای کار مشکلی ندارین ) . بعد از رشم این ERD باید به مدل بانک اطلاعاتی مورد نظر ما تبدیل بشه نا در بانک اطلاعاتی مورد نظر طرح نهایی رو که از این نرم افزار به دست میاریم رسم کنیم . برای این کهpower designer طرح ما رو کامپایل کنه و جداول مورد نیاز رو تولید کنه از منوی Tools گزینه Generate Physical Data Model رو انتخاب می کنیم و بعد Dbms مرود نظر خود را انتخاب کرده و در نهایت OK می کنیم . طرح ایجاد شده مدلی هستش که ما بانک اطلاعاتی خود را بر اساس ان طراحی کنیم . یعنی جداولی که در این طرح نهایی میبینیم باید در بانک اطلاعاتی رسم کرده و روابط بین فیلدهای جداول را کاملا مشخص کنیم . این طرح کامپایل شده مثال بالا هستش که باید جداولش در مثال من درSql Server 2005 پیده سازی شود .

حالا باید وارد ویژوال استادیو 2005 شویم و به مرحله نهایی طراحی بانک اطلاعاتی نرم افزار کتابخانه خود بپردازیم . خوب وقتی وارد ویژوال استادیو شدین شما اولین کاری که باید انجام بدین اینه که یک Sql Server Database File ایجاد کنید . به این منظور از منوی Connect To DataBase رو انتخاب میکنید و از قسمت DataSource گزینه Microsoft Sql server database file رو انتخاب می کنید و در قسمت Database File Name یک نام دلخواه برای بانک اطلاعاتی خود انتخاب می کنید .و اگه Sql server نصب شده روی سیستم شما مشکلی نداشته باشه با فشردن دکمه ok بانک اطلاعاتی مربوطه ایجاد می شود .
در تصویر زیر مراحل رو نشون دادم :
بعد از اینکه مراحل بالا به درستی انجام شد از قسمت server Explorer در سمت چپ یا راست ویژوال استادیو می توانید دیتابیس ایجاد شده و جداول اون رو مشاهده کنید . در تصویر زیر نمایش داده شده :

خوب حالا وقت اینه که جداولی که از power designer بدست آوردیم رو درSql Server ایجاد کنیم . بدین منظور در همون قسمت server explorer روی نام دیتابیس خود کلیک کرده تا باز شود ، بعد روی پوشه Tables کلیک راست کرده و Add New Table رو کلیک می کنیم . پنجره ای مانند شکل زیر ایجاد می شود :

در این پنجره باید نام فیلدهای جداول و نوع دادهای اونها رو تعیین کنیم و اگر گزینه Allow Nulls برای فیلدی تیک بخورد به این معنی است که کاربر نهایی نرم افزار موقع وارد کردن اطلاعات می تواند برای این فیلد مقداری وارد نکند . برای فیلدی که کلید اصلی جدول می باشد در حالی که آن فیلد انتخاب شده باید علامت کلید را از جعبه ابزار بالا انتخاب کرد. بعد از اینکه تمامی فیلدهای جدول مورد نظر تعریف شد با فشردن Ctrl + S نام جدول مورد نظر را وارد کرده وok می کنید و همین مراحل برای تمامی جداول خود انجام می دهید . بعد از تعریف تمامی جداول باید رابطه موجود بین عناصر جداول برای برای Sql server مشخص کنید . برای انجام این کار رد server explorer روی Tables کلیک کرده و جداولی که دارای کلید خارجی می باشند را یکی یکی در IDE باز کرده و از نوار ابزار بالا دکه Relationship را کلیک کرده و در پنل سمت راست روی گزینه … کلیک کرده و رابطه بین کلیدهای خارجی این جدول ( یعنی فیلدهایی که جزو فیلدهای واقعی این جدول نیستند و با کامپیایل طر ح ما در power designer از جداول دیگر وارد این جدول شده اند ) را با جدولی که این کلید در واقع متعلق به ان جدول است مشخص می کنیم .

مراحل بالا را در شکل های زیر خلاصه کردم :

همانطور که در تصویر بالا نشان داده شده یکی از جداول باز است و از قسمت بالا روی گزینه مشخص شده کلیک می کنیم و پنجره زیر باز می شود :

و بعد گزینه Add را کلیک می کنیم . پنجره زیر باز میشود :

در باکس سمت چپ تمامی کلیدهای خارجی این جدول نمایان می شود . روی هر کدام یکی یکی کلیک کرده و مراحل زیر را برای آنها تکرار می کنیم :
در پنل سمت راست در قسمت Generalو در قمت Tables and coloums specification روی علامت … کلیک کرده و شکل زیر حاصل می شود :

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

و در نهایت ok می کنیم و این کار را برای تمامی جداولی که دارای فیلد خارجی می باشند انجام می دهیم . بعد از انجام این کار شمای کلی بانک اطلاعاتی که قرار است در نرم افزار خود از آن استفاده کنیم به دست آمده است که برای مشاهده دیاگرام ان می توانیم در server explorer روی گزینه Database Diagram کلیک راست کرده و گزینه Add New Diagram را کلیک کنیم و جداول خود را Add کنیم با این کار دیاگرام نهایی و رابطه بین جداول ایجاد می شود که ئر موقع کد نویسی برای قسمتهای مختلف نرم افزار خیلی می تواند سودمند واقع شود .

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

در ضمن اگه eroor می خوری,اگه از Sql Express استفاده می کنی و توی خود visual studio از تب Server Explorer میخوای به دیتا بیس کانکت بشی اولا که از Windows Authentication استفاده کن اگه بازم همین خطا رو داد توی همون پنچره serever explorer که باز شده توی اون تکست باکس یه اسم دلخواه بنویس مثلا test بعد ok کن تا یک دیتابیس جدید برات بسازه وقتی اوکی کنی یک پیغام میده که همچیین دیتابیسی وجود نداره شما اوکی میکنی و اگه sql شما به درستی نصب شده باشه برات دیتابیس رو میسازه و توی لیست دیتا بیس ها توی server explorer نشونش میده اگه خطا داد مطمعن شو که دیتابیسی با همین نام قبلا ایجاد نکرده بودی در این صورت اگه هر مشکلی خوردی بهترین راه نصب دوباره sql server هستش . ولی اگه ساخت برات دیتابیس رو که نتیچه میگیرری که sqlserver شما درست نصب شده و مشکلی نداره . اگه برای remote connection باز هم ازت خطا گرفت شما sql server management studio رو نصب کن که یک محیط ویژوال برای نسخه Express شما نصب میکنه بعد که بری داخلش یکم بگردی یک گزینه به نام Allowe remote connection رو پیدا میکنی که تیک اون رو بزنی مشکل حله . هر چند این گزینه وقتی کاربرد داره که بخوای توی محیط شبکه و با برنامه های Client server کار کنی .

مثال :

یک برنامه 3 سه لایه ساده کلاسیکدفترچه تلفن

یک نمونه برنامه 3 لایه  بصورت ساده با کمک رابط OleDb با منبع داده ارتباط برقرار می کنه… نمونه کوچکی از یک دفترچه تلفنه ، از بانک اطلاعاتی MS Access بعنوان منبع داده استفاده می کنه ک فقط یک جدول ب نام Persons داره..

برنامه در 3 پروژه مجزا (بصورت لایه دسترسی به داده یا DAL و لایه منطق تجاری برنامه یا BLL و لایه نمایش یا PL) نوشته شده…سعی شده بصورت کلاسیک نوشته بشه و از تکنیکهای جدید مثل LINQ هم استفاده ای نشده! شاید توی ی sample ِ دیگه…!

در لایه تجاری ، کلاسهایی ب نام Provider (مثل clsPersonProvider) مسئول جوابگویی ب نیاز لایه نمایش هستن ، و در لایه DAL کلاسهایی ب نام Adapter (مثلا clsPersonAdapter) مسئول پاسخگویی ب نیازهای لایه BLL هستن..

تمام دسترسیها ب بانک (ک مسلما فقط در لایه DAL انجام می شه) از طریق یک کلاس static ب نام clsSingletonConnectionManager انجام می شه… (توسط الگوی singleton اینکار پیاده سازی شده تا همیشه فقط یک instance و یک پل ارتباطی ب بانک وجود داشته باشد..مزایا و معایب این روش رو خودتون پیدا کنید!)

Validation ِ ساده ای انجام شده، در setter ها…(هنگامی ک مقدار یک پراپرتی ، set می شه بررسی انجام می شه ک مقدار مورد نظر تهی نباشد و در این صورت یک Exception رو ایجاد می کنه)
(کلا در این قسمت می شه Validation هایی رو بر حسب نیاز انجام داد، در این برنامه ی نمونه خیلی از اینچنین مسائل برای سادگی بیشتر پیاده نشده!

برای مثال ، برای گرفتن و نمایش دادن لیست کلیه Person ها ، در لایه نمایش دستور مربوطه صادر می شه و توسط personProvider_ ب لایه “منطق تجاری” فرستاده می شه:

کد:

private void show_All()
{
dataGridView1.DataSource = _personProvider.Get_All_Items();
}

این درخواست مجددا به لایه “دسترسی ب داده” ارسال می شه (توسط آبجکت personAdapter_) در اونجا لیست کلیه Person ها در آبجکتی از نوع DataTable ِ از پیش ساخته شده (TypedDataTable ، استفاده از TypedDataset , TypedDataTable ها مزایایی داره، مثلا مستقیما ب نام یک فیلد می شه دسترسی پیدا کرد در یک سطر یا همون StrongNaming و اینجور چیزا رو فراهم می کنن) ب نام dsPhonebook.PersonsDataTable
ریخته می شه (fill می شه) و این جدول برگشت داده می شه ب لایه BLL :

کد:

public dsPhonebook.PersonsDataTable Select_AllPersons()
{
return base.select_All(_QUERY_SELECTALL_Persons);
}

کد:

protected virtual T select_All(string pQuerySelectAll)
{
T retTable = new T();

OleDbDataAdapter da = new OleDbDataAdapter(pQuerySelectAll, clsSingletoConnectionManager.GetConnection2Phonebook);
da.Fill(retTable);

return retTable;
}

در این لایه (BLL) و در ادامه مقادیر برگشت داده شده ک در یک dsPhonebook.PersonsDataTable قرار دارن Cast می شن ب :

کد:

List<clsPersonEntity>

و این List در نهایت ب “لایه نمایش” برگشت داده می شه و در DataGridView مشاهده می شه..

RC3LayersPhonebook

پستهاي مشابه :

۱۴ دیدگاه به “کار با بانکهای اطلاعاتی در #c+سورس دفترچه تلفن”

  • باسلام.
    ممنون از راهنمایی های شما.
    خواهشمند است شماره همراه خود را جهت همکاری در ساخت این پروژه به میلم ارسال فرمائید.
    ضمنا در صورت امکان نسبت به روش پیاده سازی ارسال SMS تبلیغاتی در C# راهنمایی بفرمایید.

  • سلام
    میشه کمکم کنید؟
    من پروژه دفترچه تلفن و با زبان ++cمیخوام تا 5تیر
    ممنون میشم اگه کمکم کنید
    برنامه ای که اسم و آدرس و تلفن افراد و بگیره سپس با فشردن کلید nاسم فرد را دریافت کند و شماره تلفنشو برگرداند و با فشردن کلید aاسم فردو بگیره آدرسشو برگردونه
    در صورتیکه کاربر کلید iو فشرد مشخصات یک فرد جدیدو بگیره و به فایل اضافه کنه
    با فایل و رکورد نوشته بشه لطفا
    امیدوارم کمکم کنید

  • maryam:

    salam
    man vase keshidan erd ba power demoshkel daram
    mitonid komakam konid?

  • مسعود:

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

  • ایمان:

    salam
    agha in filaye DB ro ham mishe bezari bi zahmat. chon run nemishe in. mamnoon yaemail kon plz

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

  • حمید رضا:

    سلام
    اگه امکان داره درباره کد نویسی برای اتصال به تلفن برای ردوبدل صدا کمکم کنید

  • دیوار:

    سر جدتون تورو هرکی می پرستیم سورس دفترچه تلفن به زبان سی‏شاپ رو برام ایمیل کنیدrahmankiani@ymail.comیادتون نره فقط تا فردا شب وقت دارم
    براتون دعا میکنم سرجدتون بفرستید

  • atena:

    خواهشا برنامه سورس دفترچه تلفن رو برام ايميل كنيد

  • masigol:

    سلام میشه راجع بانک اطاعاتی پست باسم ایمیل کنید خیلی ضروری

  • بهار:

    سلام خسته نباشید میخواستم بگویم برای رابط بین موجودیت ها در نمودار ER میتواند تکراری باشد؟

  • بهار:

    ببخشید من نمیتوانم ارتباط بین موجودیت های دفتر تلفن را تشخیص بدهم یعنی موجودیت ها را مشخص کردم ولی ارتباط بین اونها را نه میشه لطفا راهنمایی ام کنیید که چی بنویسم ممنون میشوم

ارسال دیدگاه

موضوعات:
وبلاگی برای تمام فصول:

به پاس حفظ حرمت انسانی و احترام به حقوق یکدیگر لطفا مطالب وبلاگ را تنها با نام و لینک دسترسی به "وبلاگی برای تمام فصول" ذکر نمایید.
با تشکر-حسام حاتمی

درددل:
  • در دلم زخمی است نه به عمق يک چاه يا بيکرانگی آه به انداز هی لانه ی پرنده ی کوچکی است که به آن سوی سادگی پريد شعر روی جلد: از سروده های زندان

    - #
  • بگذار عشق خاصیت تو باشد
    نه رابطه خاص تو با کسی......

    - #
  • آنکه نتواند به نیکی پاس هر مخلوق داد .......... از چه کرد این آفرینش را مگر مجبور بود ؟!

    - #
  • دین همچون شراب است. آن چنان را آن چنان تر می کند. حیوان ها را حیوان تر و انسان ها را انسان ت

    - #
  • بچه که بودم همیشه فکر می کردم چقدر بزرگن این آدما...و ترسیدم!

    اما بزرگتر که شدم٬ دیدم چقدر کوچیکن...و ترسیدم!

    - #
جستجو :
گفتگو با من:
وضع آپتایم سرور من:
تضمین تراکنشهای مالی توسط: