این برنامه به طور کلی به 2 زبان sql server2000 و زبان برنامه نویسی شی گرا به نام delphi7 نوشته شده است که به صورت تحت شبکه نیز می باشد با زبان sql server2000 بانک های اطلاعاتی طراحی گردیده شده است و با Delphi فرم ها و برنامه کاربردی نوشته شده است .
در این برنامه سعی شده است تا حد امکان کار را برای کاربر راحت کرده تا بتواند به راحتی به کارهای خود مدیریت داشته باشد .
این برنامه برای یک فروشگاه نوشته شده است که بتواند برای دادن لوارم مورد نیاز به صورت نقدی و اقساط کار کند که بر اساس خرید یک مشتری , آن مشتری می تواند اشخاصی را به تعداد مشخص معرفی کند.
البته این تعداد بستگی به میزان خرید شخص دارد.توضیحات بیشتر این برنامه در پایین گفته شده است.
در این قسمت ازبانک اطلاعاتی sql استفاده شده است.
در بانک اطلاعاتی ما table های موجود عبارتند از:
1- Tbl_Customer که برای مشتری طراحی شده است.
Moaref: که مشخص کننده معرف می باشد.
Zamen: که مشخص کننده ضامن می باشد.
و...
2-Tbl_cash: که مشخص می کند هر کاربر چه می زان مبلغی را دریافت کردهو بابت چه موضوعی.
3- Tbl_transaction: که مشخص کننده خرید هر مشتری می باشد.
4-company: که مربوط به اطلاعات کمپانی ها می باشد.
5-Tbl_Moaref: که دارای اطلاعات معرف ما می باشد.
6-user:اشخاصی که می توانند به نرم افزار دسترسی داشته باشند در این مکان مشخص می شود.
-1طراحی جداول در sql server
برای طراحی جدول در sql : همانند شکل زیر باید عمل کرد:
ابتدا sql server را باز می کنیم .
ابتدا sql server را باز می کنیم .
شکل(1 - 1) پس از آن باید به مسیر ی که در شکل زیر به ما نمایش داده شده برویم.
شکل(2 – 1) حال با کلید بر روی new database… (همانند شکل 2-1 )صفحهای برای ایجاد data base جدید برای ما باز می شود که با زدن نام آن وok کردن آن یک data base جدید برای ما ایجاد خواهد شد.
حال با رفتن بر روی نام database که ایجاد کرده ایم و پس از آن بر روی table کلید می کنیم حا صفحه ای باز می شود که همانند شکل 3-1 می باشد: شکل(3-1) که شامل چهار قسمت می باشد: Column name: که حاوی نام هر فیلد می باشد.(توجه: اگر کلمه وارد شده هماهنگی با یکی از حروف رزرو شده در sql server داشته باشد آنگاه به دور آن کروشه خواهد گذاشت.مثال: data یکی از حروف رزرو شده است به همین دلیل به دور آن کروشه خواهد گذاشت به این صورت[data] .
3-1انواع داده ها در sql Data type : که نوع فیلد در آن مشخص می شود.که دارای انواع مختلفی می باشد.
که ما در این پروژه از انواع: - nvarchar که نوع رشتهای است که می تواند فارسی و انواع دیگر کاراکتر را پشتی بانی کند.
-int که از نوع داده صحیح می باشد.
-Real که از نوع اعشاری می باشد.
-Char که از نوع کاراکتری می باشد.
Length: که مشخص کننده اندازه هر متغیر می باشد.
Allow nulls: که مشخص می کند متغییر می تواند مقدار خالی داشته باشد یا خیر.
اگر تیک آن گزاشته باشد یعنی فیلد مورد نظر می تواند خالی باشد.
در غیر اینصورت خیر.
حال اگر بخواهیم فیلدی را مشخص کنیم که کلید اصلی است کافی است بر روی رکورد مورد نظر راست کلید کرده و گزینه set primery keys را انتخاب می کنیم و به عنوان کلید اصلی مشخص می شود.البته کلید اصلی هیچ گاه نمی تواند مقدار nullداشته باشد.
4-1بررسی فیلد های مورد استفاده در بانک حال به بررسی جدوال در sql می پردازیم: Tbl_customer(مشتری): فیلد کلید این جدول شماره مشتری یا (customer_id) می باشد .
که نوع آن integer است.
Customer_name : که نام مشتری می باشد.که نوع آن nvarchar(50) می باشد.
(nvarchar نوع داده ای است که می توان در sql server به صورت فارسی نوشت) Customer_famioly : که نام خانوادگی می باشد.
که نوع آن nvarchar(50) می باشد.
Moaref : که کلید خارجی است .
و دارای شماره معرف کننده ان مشتری می باشد.
Zamen : که مشخص می کند چه کسی ضمانت آن شخص را کرده.
Tel: که در آن تلفن مشتری مشخ می شود و نوع آن از nvarchar(50) می باشد.
,…که به صورت شکل زیر می باشد: شکل(4-1) Tbl_transaction: فیلد کلید این جدول فیلد transaction_id می باشد که ازنوع integer می باشد و الباقی فیلد ها در تصویر مشخص شده است: شکل(5-1) Tbl_moaref : که فیلد کلید آن moaref_id می باشد ونوع آن integer می باشد.الباقی فیلد ها در شکل مشخص شده است: شکل(6-1) Company: که فیلد کلید آن name است و نوع آن nvarchar(50) می باشد .
الباتقی فیلد ها به صورت زیر می باشد: شکل(7-1) Tbl_cash: که دارای فیلد کلید نمی باشدو طراحی و شکل آن به صورت زیر می باشد.
شکل(8-1) فصل دوم طراحی نرم افزار (برنامه ی کاربردی) 1-2صفحه اصلی این نرم افزار توسط دلفی نوشته شده است که توضیحات نرم افزار در پایین مشخص شده.
شکل(1-2) این نمایی کلی از صفحهی ابتدایی آن است که با استفاده از منو داخل نرم افزار دلفی آن را طراحی شده که دارای 5 منو می باشد از قبیل customer,cash,company,moaref,transaction 2-2طراحی مشتری در بر گیرنده ی اطلاعات مشتری ها و افراد دارای حساب می باشد که برای اضافه و یا ویرایش مشتری از این منو و قسمت add استفاده می شود.
شکل(2-2) که پس از زدن دکمه add صفحه ای به شکل زیر برای شما نمایش داده خواهد شد.
شکل(3-2) 3-2طریقه ی استفاده ی صفحات برای فراخانی هر صفحه در صفحه ای دیگر انتدا باید آن صفحه use unit شود که این کار از دو روش امکان پذیر می باشد.
1-بازرفتن به منوی فایل و بعد انتخاب گزینه use unit.
2-با زدن کلید های ترکیبی alt+f11 .
صفحه ای به صورت زیر باز خواهد گردید: شکل(4-2) در این صفحه تمام صفحات نا آشنا برای صفحه ای که بر روی آن use unit کرده ایم را نشان می دهد.
حال با انتخاب unit مورد نظر می توان از اطلاعات آن form دیگر در این صفحه استفاده کرد.
4-2Unit چیست؟
هر فرم دارای 2 نام می باشد 1-نام منطقی 2-نام فیزیکی.
نام منطقی: به نامی که ما آن را در پروژه قرار می دهیم(از طریق خصوصیت name که در پروژه آن را به آن نام می شناسیم.
نام فیزیکی : نامی که فرم با آن نام بر روی هارد کامپیوتر ذخیره می گردد unit آن می نامیم.
5-2طریقه ارتباط میان sql , delphi قبل از هر چیز ما باید ارتباطی بین دلفی و sql server انجام دهیم.
ما برای این کار در هر پروژه از یک data module استفاده می کنیم که فرمی است به صورت زیر: شکل(5-2) حا برای ارتباط بین این 2 نرم افزار از سربرگ ado گزینه adoconnection را انتخاب می کنیم همانند شکل زیر : شکل(6-2) که دور آنها با دایره مشخص شده است.
حال آن را بر روی datamodule قرار می دهیم پس از آن از خصوصیت connectionstring آن را به بانک وصل می کنیم.
همانند شکل زیر: شکل(7-2) پس از آن شکل(8-2) و با انتخاب Microsoft olb db provider for sql server و زدن دکمه next : شکل(9-2) در شکل بالا ابتدا در گزینه 1 فقط 1 نقطه می زنیم.
پس از آن use windose nt را انتخاب می کنیمو در گزینه 3 نام بانک مورد نطر را انتخاب می کنیم.و پس از آن test conection و بعد از آن ok می کنیم.
حال برنامه به بانک متصل شده است.
پس از آن یک adoquery از سربرگ ado بر روی datamodule قرار می دهیم.
که آن را از خصوصیت connection به adoconnection مورد نظر که به بانک متصل کرده ایم وصل می کنیم.
پس از آن از سربرگ data access یک datasorceبر روی datamodule خود قرار می دهیم و آن را از خصوصیت dataset به adoquery وصل می کنیم.که شکل datamoduleبه صورت زیر در خواهد آمد: شکل(10-2) حال برای برقراری ارتباط بین بانک و برنامه در هر فرم این datamodule باید use گردد و پس از آن از کد هایی که برای هر صفحه در پایین توضیح داده شده استفاده می گردد.
در این صفحه با وارد کردن اطلاعات مشتری و زدن دکمه دخیره اطلاعات مربوط به حساب یک مشتری جدید ذخیره خواهد شد.
در صورت اینکه مشتری که از قبلا در سیستم وجود داشته باشد با زدن شماره حساب و خروج از آن اطلاعاتی که از قبلا در سیستم وجود شکل(11-2) داشته است نمایش داده شده و پس از آن دکمه ذخیره تبدیل به ویرایش می شود.
برای نمایش داده ها به این صورت بر روی edit مورد نظر کلید کرده و در event های آن event – onexit که به هنگام خروج از edit مورد نظر اجرا می شود کد زیر را نوشت: شکل(12-2) این کد باعث می شود یا اطلاعاتی که در بانک است ابتدا جستجو شده پس از آن اگر داده ای پیدا کرد آن را نمایش می دهد.
با درج اطلاعات جدید و زدن دکمه ویرایش تمامی اطلاعات ویرایش می شوند .
که کد آن به صورت زیر می باشد: شکل(13-2) با زدن دکمه اصراف تمام اطلاعات از صفحه پاک شده و در حالت دریافت اطلاعات جدید می شود.
که کد آن به صورت زیر می باشد: شکل(14-2) این دستورات form را به حالت اولیه باز می گرداند.
با زدن کلید صفحه جستجوی اطلاعات مربوط به مشتری باز می شود و با 2 با کلید بر روی اطلاعات هرکدام از مشتری ها تمام ازلاعات مربوط به مشتری باز می شود و آماده ویرایش می گردد.
6-2طریقه طراحی صفحه جستجوی مشتری این صفحه برای نمایش اطلاعات مربوط به مشتری بوده و برای جستجوی اطلاعات مشتری به کار میرود.
شکل(15-2) وپس از کلید بر روی serch صفحه جستجوی مشتری باز می شود.
شکل(16-2) در محل درج اطلاعات مربوط به جستجو می توان با وترد کردن اطلاعات جستجوی خود را انجام دهیم.
البته باید در نظر گرفت که نوع جستجو به چه صورت انجام می پذیرد آیا بر اساس نام خانوادگی است یا بر اساس شماره حساب از آنجایی که ممکن است چندین نام خانوادگی هم نام در بانک موجود باشد پیشنهاد می گردد جستجو بر اساس شماره حساب که هرکدام از شماره ها مربوط به یک شخص است انجام پزیرد.
برای جستجو کد آن به صورت می باشد: شکل(17-2) در if اول چک می شود که آیا readiobutton انتخاب شده مربوط به نام خانوادگی است که اگر اینگونه باشد جستجو را بر اساس نام خانوادگی انجام می دهد.
در if دوم چک می شود که آیا readiobutton انتخاب شده مربوط به شماره حساب شخص است که در این صورت جستجو بر اساس شماره حساب شخص انجام خواهد شد.
در شکل زیر جدولی قرار دارد که نام آن DbGrid است که مستقیما به بانگ متصل می گردد.
کافی اس که از سربرگ Data control این شی را انتخاب کنیم.
شکل آن در اول که بر روی صفحه قرار می گیرد به صورت زیر می باشد: شکل(18-2) حال با 2 بار کلید بر روی آن صفحه ای باز می شود که می توان فیلد ها را در آن نوشت .
حال بر روی DbGrid کلی کرده و آن را از خصوصیت datssorse به یکی از datasorce های موجود در datamodule وصل می کنیم که از این طریق با نوشتن select مورد نظر که در این صفحه به 2 صورت می باشد این عملیات را انجام داد.
در هر فرم event وجود دارد که یکی از اینها به نام onshow می باشد که به محض اجرای برنامه آن اجرا خواهد شد.
در onshow کد زیر نوشته می شود که به محض اجرا form به حالت آماده در آید.
شکل(19-2) (اطلاعات جستجو) شکل(19-2) 7-2اطلاعات مربوط به cash پس از آن cash است که مبلغ پرداختی به کاربران است که شامل 4 فیلد می باشد تاریخ-کد کاربری-مبلغ-ملاحضات.
شکل(20-2) پس از وارد کردن اطلاعات و زدن دکمه ذخیره تمام اطلاعات در بانک و سیستم مکانیزه شده ذخیره می گردد.
که کد آن به صورت زیر می باشد: شکل(21-2) در جلوی values اطلاعاتی است که باید در بانک ذخیره شود که حتما باید به صورت پشت سر هم به بانک ارسال گردد (به ترتیب فیلد ها).
با 2 بار کلید بر روی هرکدام از رکورد های جدول می توان اطلاعات را در فیلد بالا قرار داد و دکمه تصحیح فعال می شود و دکمه ذخیره غیر فعال می گردد.
شکل(22-2) پس از وارد کردن اطلاعات و زدن دکمه تصحیح اطلاعات ویرایش می شود و صفحه به حالت اولیه خود باز می گردد.
که کد آن به صورت زیر می باشد.
شکل(23-2) با زدن دکمه انصراف اطلاعات مربوط به صفحه به حالت اولیه خود باز گردانده می شود.
که کد آن در form show نوشته شده است و با نوشتن formshow(sender) آن تابع اجرا می شود که کد آن به صورت زیر است: شکل(24-2) 8-2طراحی صفحه کمپانی پس از cash اطلاعات مربوط به کمپانی است که 2 حالت اضافه و ویرایش دارد و جستجوی اطلاعات .
Company - >add شکل(25-2) و پس از زدن کلید add صفحه اضافه کردن اطلاعات مربوط به کمپانی باز می شود.
که ابتدا صفحه ی کمپانی باید use گردد و پس از آن دستور add_company.showmodal; نوشته شود.
این دستور باعث می شود که صفحه ی مورد نظر فرا خانی شود.
نمایی کلی از این صفحه: شکل(26-2) با نوشتن تمام اطلاعات مربوط به یک کمپانی وزدن دکمه ذخیره اطلاعات مربوط به یک کمپانی ذخیره می گردد.
شکل(27-2) کد آن به صورت زیر می باشد: شکل(28-2) که اگر caption دکمه دخیره , ذخیره باشد insert می کند و در صورتی که caption آن به غیر از ذخیره باشد اطلاعات update می شود.
در صورتی این caption تغییر می کند که هنگامی که نام کمپانی در بانک از قبلا موجود باشد.
که این کد در onexit , edit نام کمپانی نوشته شده است کد آن به صورت زیر می باشد: شکل(29-2) که ابتدا می گردد که همچین نامی در بانک موجود می باشد که اگر موجود باشد آنگاه اطلاعات را در edit های آن قرار می دهد و دکمه ذخیره به ویرایش تغییر نام می دهد.
در برخی اوقات امکان دارد اطلاعات مربوط به یک کمپانی نیاز به ویرایش داشته باشد با زدن نام شرکت در مکان مورد استفاده برای نام شرکت و خارج شدن از آن تمام اطلاعات مبوط به یک کمپانی به صورت عکس زیر برای مانمایش داده می شود .
شکل(30-2) همانگونه که در عکس مشخص است دکمه ذخیره به ویرایش تغییر نام داده و با زدن اطلاعات صحیح و زدن دکمه ویرایش اطلاعات ویرایش می گردد.
با زدن دکمه انصراف صفحه به حالت اولیه خود بازگشته و مجدد آماده دریافت اطلاعات می گردد.
که کد آن در formshow نوشته شده است و کافی است که این تابع مجدد فرا خانی می شود که به صورت زیر می باشد.
Formshow(sender) که کد آن نیز به صورت زیر می باشد: شکل(31-2) با زدن دکمه صفحه جستجوی اطلاعات مربوط به کمپانی باز شده و با زدن 2 بار کلید بر روی نام هریک از کمپانی ها اطلاعات مربوط به کمپانی باز شده و در صفحه نمایش داده می شود و پس از زدن دکمه ویرایش تمام اطلاعات ویرایش می شود.
البته کد این صفحه به صورت زیر می باشد: که تابع onexit اجرا می شود.
9-2صفحه جستجوی اطلاعات کمپانی شکل(32-2) در این صفحه می توان با زدن نام مربوط به کمپانی اطلاعات کمپانی را نمایش داد.
با زدن نام در قسمت مربوطه اطلاعات برای ما لیست می گردد.
که کد آن به صورت زیر می باشد: شکل(33-2) از آنجایی که DbGrid به datasorce1 اتصال یافته است به همین دلیل از adoquery1 استفاده می کنیم .
در جدول پایین تر از قسمت در یافت نام تمام اطلاعات مربوط به کمپانی نمایش داده می شود برای آوردن این صفحه باید از مسیر زیر حرکت کرد تا به ین صفحه برسیم.
Company - > serch شکل(34-2) 10-2 طراحی صفحه معرف پس از این صفحات وارد توضیحات قسمت معرف می گردیم.
معرف دارای قسمت های اضافه, ویرایشو جستجو می باشد.
برای اضافه کردن اطلاعات و ویرایش اطلاعات باید از قسمت: Moaref - > add وارد شویم همانند تصویر زیر: شکل(35-2) وپس از زدن دکمه add , edit صفحه ای همانند صفحه زیر باز می گردد.
که کدی که در آن نوشته شده است برای این کار add_moaref.showmodal; است.
شکل(36-2) حال با وارد کردن اطلاعات و زدن دکمه ذخیره اطلاعات در بانک ذخیره می گردد.
که کد آن به صورت زیر می باشد: شکل(37-2) که اگر اطلاعات جدید باشد در بانک ذخیره می شود که در هنگام onexit , edit مربوط به شماره معرف مشخص می شود که در بانک موجود می باشد یا خیر.
به صورت زیر مشخص می شود: شکل(38-2) اگر اطلاعات در بانک موجود باشد edit های مربوط به هر فیلد پر شده و دکمه ذخیره caption آن به ویرایش تبدیل می شود حال اگر آن را فشار دهیم اطلاعات ویرایش خواهد شد .(در بانک) با زدن دکمه انصراف در کنار دکمه ذخیره , صفحه به حالت اولیه خود بازگردانده می شود و آماده دریافت اطلاعات می گردد.
این کلید فقط دستورات مربوط به formshow را اجرا می کند با دستور formshow(sender).
که کد آن به صورت زیر می باشد: شکل(39-2) این دستور برای آماده سازی مجدد فرم به کار می رود.
با وارد کردن شماره معرف تکراری در قسمت شماره معرف تمام اطلاعات مربوط به معرف در box خود نمایش داده می شود و با تغییر هرکدام و زدن دکمه ویرایش که پس از آمدن اطلاعات برای ما نمایش داده می شود دکمه ذخیره تبدیل به ویرایش می گردد.
همانگونه که در تصویر پایین ملاحضه می کنید: شکل(40-2) اگر دکمه را فشار دهیم صفحه جستجو ی اطلاعات باز می شود و پس از 2 بار کلید بر روی اطلاعات مربوط به هر معرف اطلاعات آن در صفحه ویرایش باز می شود و آماده ویرایش می گردد.
11-2 طراحی صفحه transaction پس از معرف به transaction می رسیم .
همانند صفحات قبل دارای 2 قسمت می باشد شکل(41-2) که این قسمت برای درج و ویرایش اطلاعات استفاده می شود .
با زدن این submenu صفحه ای به شکل زیر باز می گردد: شکل(42-2) در این صفحه با وارد کردن اطلاعات و زدن دکمه ذخیره اطلاعات در صفحه بانک ذخیره می گردد.
شکل(43-2) در قسمت formshow آن فرم را برای ما آماده می کند که کد آن به صورت زیر می باشد: شکل(44-2) در قسمت شماره دفتر اگر شماره تکراری درج گردد تمامی اطلاعات مربوط به آن دفتر برای ما نمایش داده می شود و بازدن دکمه ویرایش تمام اطلاعات ویرایش می گردد.
شکل(45-2) که کد آن در on exit شماره دفتر نوشته شده است به صورت زیر می باشد: شکل(46-2) با زدن دکمه انصراف تمام اطلاعات صفحه به حالت اولیه خود باز گردانده می شود.
که از تابع formshow استفاده می کند .
که با نوشتن formshow(sender) اجرا می گردد.
پس درج و ویرایش به صفحه جستجوی اطلاعات می رسیم.
برای آوردن صفحه جستجوی اطلاعات باید از این مسیر حرکت کنیم: Transaction - >serch همانند تصویر: شکل(47-2) که با زدن search_transaction.showmodal; در کد نویسی دلفی صفحه برای ما باز می گردد.
پس از آن تویری همانند تصویر پایین باز می گردد: شکل(48-2) در این صفحه با شماره دفتر اطلاعات مربوط به دفتر برای ما نمایش داده می شود.
که کد آن برای جستجو به صورت زیر می باشد.
شکل(49-2)