پایان نامه کارشناسی کامپیوتر
( گرایش نرم افزار )
عنوان پایان نامه
طراحی و پیاده سازی وب سایت تبلیغاتی بیاتبلیغ برای اصناف اصفهان
استاد راهنما
مجری پروژه:
زمستان 91
سپاسگزاری
اینک در آغاز راه با دستهایی بر آورده تو را نماز می گزارم
و سپاس می گویم که هر آنگاه که تورا به یاری خواندم به سوی من آمدی و مرا بهروزی بخشیدی.با ستایشها و نیایشهای خویش به تو روی می آورم و با چشم دل تو را می جویم و به درگاهت سر تعظیم فرود می آورم و به داده و نداده ات شکر می گویم که داده ات موجب رحمت است و نداده ات موجب حکمت …
و نیز از زحمات بی شائبه استاد ارجمند و گرامی جناب آقای …………………….. کمال تشکر و قدردانی را دارم .
تقدیم به
مادر مهربانم که محبت را حرف به حرف برایم هجی کرد
و پدرعزیزم که چون کوهاستواری را به من آموخت
فهرست مطالب
عنوان صفحه
فصل اول- مقایسه وب سایت های تبلیغاتی 1
1-1 معرفی وب سایت ای پارسیانwww.eparsian.com 2
1-1-1 معرفی سایر خدمات پارسیان 2
1-2 معرفی وب سایت مشهد تبلیغwww.mashhadtabligh.com 6
1-2-1 معرفی خدمات مشهد تبلیغ 6
1-3 معرفی خدمات مشهد تبلیغ 6
1-4 معرفی وب سایت آس بازار www.asbazar.com 9
1-5 مقایسه سه وب سایت با یکدیگر 11
فصل دوم- ابزارهای مورد استفاده در برنامه 13
2-1 کنترل های استاندارد در دات نت 14
2-1-1 مقدمه و معرفی کنترل Button 14
2-1-2 مقدمه و معرفی کنترل Label 15
2-1-3 مقدمه و معرفی کنترل CheckBox 15
2-1-4 مقدمه و معرفی کنترل DropDownList 15
2-1-5-مقدمه و معرفی کنترل TextBox 16
2-1-6-مقدمه و معرفی کنترل Image 16
2-1-7-مقدمه و معرفی کنترل HyperLink 17
2-1-8-مقدمه و معرفی کنترل FileUpload 17
2-1-9-مقدمه و معرفی کنترل GridView 18
2-1-10 مقدمه و معرفی کنترل DetailsView 19
2-2 مقدمه و معرفی کنترل های سمت سرور 21
2-3Table چیست؟ 22
2-4View چیست؟ 22
2-5 Stored Procedure چیست؟ 22
فصل سوم- متغیرها 23
3-1 متغیرهای مورد نیاز و مورد استفاده در طراحی وب سایت تبلیغاتی 24
3-4 اطلاعات مربوط به بنرهای تبلیغاتی (Banner) 26
3-5-اطلاعات مربوط به گروه های اصناف (Group) 26
فصل چهارم- ERD 28
4-1 Use case چیست؟ 31
4-2 Actor چیست؟ 31
4-3 دیاگرامuse case چیست؟ 32
4-4 ارتباطات بینuse case ها چگونه است؟ 32
4-5 شناسائیActor های سیستم 32
4-5-1 Actor کاربر 33
4-5-2 Actor مدیر سایت 33
4-5-3 Actor مشتریان 34
4-6 شناسائیUse Case ها 34
4-7 نمودارهایUSE CASE 1 35
4-8 نمودار Class اصلی سیستم 47
4-8-1 نمودار Class مربوط به کاربر 47
4-8-2 نمودار Class مربوط به مدیر 48
4-8-3 نمودار Class مربوط به آگهی ها ی تبلیغاتی 48
4-8-4نمودار Class مربوط به بنرهای تبلیغاتی 49
4-8-5نمودار Class مربوط به دسته بندی اصناف 49
4-8-6 نمودار Class مربوط به دسته بندی گروههای اصناف 50
4-8-7 نمودار توالیSignIn 51
4-8-8 نمودار توالیOrder Register 51
4-8-9 نمودار توالیGroup Definition 53
4-8-10نمودار توالیSignIn 53
4-8-11 نمودار توالیSignOut 54
4-8-12 نمودار همکاریSignIn 56
4-8-13 نمودار همکاریSignUp 57
4-8-14 نمودار همکاریGroup Defination +57
4-8-15 نمودار همکاریAsnaf DeFinition 58
4-8-19 نمودار همکاریSign Out 59
4-8-20 نمودار وضعیتgroup Definition 59
4-8-21 نمودار وضعیتOrders 60
فصل پنجم:معرفی نرم افرار طراحی شده
5-1 معرفی uml 62
5-2 معرفی sqlserver 64
5-3 معرفی asp.net 65
5-4 تشخیص و تعریف کلاس های برنامه 70
5-5 تعریف فیلدهای کلاس Advertisement 70
5-6تعریف پروپرتی های کلاس Advertisement 71
5-7 تعریف متد های کلاس Advertisemet 72
5-8 فرم های طراحی شده سایت شرکت بیا تبلیغ 72
نتیجه گیری 78
پیشنهادات 78
فهرست منابع 79
فهرست شکل ها
عنوان صفحه
شکل 1-1 ثبت نام در سایت ای پارسیان 2
شکل 1-2 کنترل پنل اعضای سایت ای پارسیان 3
شکل 1-3 فرم درج آگهی در سایت ای پارسیان 3
شکل 1-4 فرم ثبت مشخصات فیش بانکی در سایت ای پارسیان 4
شکل1-5 نمایش آگهی ها در صفحه اول سایت ای پارسیان 4
شکل 1-6 نمایش جزییات آگهی در سایت ای پارسیان 5
شکل 1-7 صفحه اصلی سایت مشهد تبلیغ 7
شکل1-8 فرم ثبت نام در سایت مشهد تبلیغ 7
شکل 1-9 کنترل پنل شخصی کاربر سایت مشهد تبلیغ 8
شکل 1-10 فرم درج آگهی در سایت مشهد تبلیغ 8
شکل 1-11 صفحه اصلی وب سایت آس بازار 9
شکل 1-12 فرم درج آگهی در سایت آس بازار 10
شکل 1-13 نمایش جزییات آگهی در سایت آس بازار 11
شکل 5-1 نمودار usecase کاربر 33
شکل 5-2 نمودار Usecase کاربران 35
شکل 5-3 نمودارهایUSE CASE 2 39
شکل 5-4 نمودارهایUSE CASE 3 42
شکل5-5 نمودارهایUSE CASE 4 45
شکل5-8-1 صفحه اصلی سایت شرکت بیا تبلیغ 72
شکل5-8-2 فرم ثبت نام کاربران در سایت شرکت بیا تبلیغ 73
شکل5-8-3 فرم ورود کاربران به سایت شرکت بیا تبلیغ 73
شکل5-8-4 فرم کنترل پنل کاربران سایت شرکت بیا تبلیغ 74
شکل5-8-5 فرم درج آگهی در سایت شرکت بیا تبلیغ 74
شکل5-8-6 فرم درج بنر تبلیغاتی در سایت شرکت بیا تبلیغ 75
شکل5-8-7 فرم پرداخت فیش بانکی 75
شکل5-8-8 فرم ورود مدیر به سایت شرکت بیا تبلیغ 76
شکل5-8-9 فرم کنترل پنل مدیریت سایت 76
شکل5-8-10 فرم مدیریت آگهی ها توسط مدیر 76
شکل5-8-11 فرم مدیریت کاربران توسط مدیر سایت 77
شکل5-8-12-فرم مدیریت گروه ها 77
فهرست جداول
عنوان صفحه
جدول 1-1 مقایسه فنی وب سایت های (ای پارسیان , مشهد تبلیغ , آس بازار) 12
جدول 3-1 اطلاعات و نیازمندیهای مربوط به مدیران سایت(Account) 24
جدول 3-2 اطلاعات مربوط به ثبت نام آگهی دهندگان سایت(User) 24
جدول 3-3 اطلاعات مربوط به آگهی(Advertisement) 25
جدول 3-4اطلاعات مربوط به بنرهای تبلیغاتی (Banner) 26
جدول 3-5 اطلاعات مربوط به گروه های اصناف (Group) 26
جدول 3-6 اطلاعات مربوط به پرداختها (Payments) 27
جدول 5-1 سناریویSing Up Use Case 36
جدول 5-2 سناریویSing In Use Case 37
جدول5-3 سناریویSing Out Use Case 38
جدول 5-4 میل باکس مدیر سایت 40
جدول 5-5 سناریویRegisteration of Orders Use Case 41
جدول 5-6 سناریویUse Case پرداخت وجه 43
جدول 5-7- سناریویUse Case Order 44
چکیده
هدف از تشکیل و ایجاد این وب سایت تبلیغاتی، ارائه راه کارهایی مناسب جهت دستیابی به فروش مناسب و معرفی اصناف و معرفی هر چه بهتر محصولات به مشتریان و مراجعان می باشد.
بانک اطلاعات و نیازمندیهای اصناف،با هدف کمک به رشد و توسعه محیط تبلیغاتی و تجاری واحدها و اصناف اصفهانو معرفی فعالین صنعتی و تجاری این استان ایجاد شده است.در این راستا و جهت مساعدت به تحقق این هدف ، مجموعه خدماتی چون خدمات بازاریابی و تبلیغات اینترنتی را تحت عنوان خدمات کاربری آنلاین، به کاربران و اصنافی که عضو این بانک نیازمندیها شده اند ارائه می کند.
خدمات بازاریابی و تبلیغات اینترنتی بانک اطلاعات و نیازمندیهای اصفهانعبارتند از:
• استفاده از امکانات موجود در پروفایل کاربران شامل امکان درج آگهی، ارسال پیام، پاسخ گویی به پیام ها، تغییر رمز و اطلاعات شخصی
• معرفی کالا ها و خدمات شما در بخش کالای برگزیده بعنوان یکی از خدمات بازاریابی قابل ارائه
• امکان درج آگهی در بخش آگهی های خرید و فروش روز در صفحه اصلی سایت همراه با اطلاعات کامل آگهی دهنده و امکان ارسال پیام بازدیدکننده آگهی به شما بعنوان یکی از خدمات تبلیغات اینترنتی قابل ارائهمی توانند با عضویت در این سایت و تکمیل فرم ثبت نام با پرداخت هزینه های مرتبط رسما فعالیت خود را در این پایگاه آغاز و از نتایج آن بهره مند شوند.
تعریف
درنظر ابتدایی و باتوجه به تعاریفی که درمورد تبلیغات و اینترنت بیان شده است، پی بردن به معنای اصطلاح تبلیغات اینترنتی چندان دشوار نخواهدبود. درحقیقت این اصطلاح به گونه ای است کـــه خودش، خود را تعریف می کند. تبلیغات اینترنتی به استفاده از اینترنت به عنوان یک کانال و وسیله ارتباطی برای ارسال تبلیغات در محیط وب اشاره دارد،در تعریفی دیگر، تبلیغات اینترنتی را اینگونه تعریف نموده اند: نمایش دادن نامها وعلائم تجاری، شعارها و تصاویر تبلیغاتی در سایتهای (پایگاههای) پربیننده اینترنت، به نحوی که به تحقق اهداف تبلیغات کمک نماید.
کلمات کلیدی:تبلیغات اینترنتی, اصناف , بازاریان فعالین صنعتی و تجاری, تبلیغات ,بیا تبلیغ
مقدمه
"تبلیغات" واژه ای که امروزه در زندگی همه افراد جامعه نقش مهمی را ایفا می کند. "تبلیغات" از گذشته تاکنون سیر تحولی زیادی را طی کرده است. شیوه جار زدن و تعریف کردن از یک کالا یا یک عملی از قدیم الایم بوده و هم اکنون که در قرن پیشرفت و تکلونوژی بسر می بریم این شیوه هنوز به حیات خود در کوچه و بازار شهر و روستا کارایی خود را دارد. این شیوه تبلیغات تازگی ها به عنوان شغل و منبعی برای کسب درآمد تبدیل شده است تا جائیکه خیلی از فروشندگان در شهرهای بزرگ اقدام به استخدام "داد زن" نموده و این موضوع اهمیت تبلیغات در طول تاریخ حیات بشری را می رساند.
اما موضوع مورد بحث ما (( تبلیغات اینترنتی)) است که جار زدن دیروزی را در قالب تصویر و دنیای دیجیتال امروزی به مخاطبان خود انتقال می دهد.در این تحقیق کوشیده شده است تا حد امکان به محاسن ، معایب و چالشهای این نوع تبلیغات که امروزه به غول بزرگ تبلیغاتی تبدیل شده است بپردازم.
با رشد فزاینده تجارت الکترونیک و گسترش سیستم های تبلیغات اینترنتی در ایران، عملکرد نامناسب برخی از این سیستم ها منجر به ضرر و زیان مالی برای نمایش دهندگان تبلیغات و ضربه به این صنعت نوپا شد. این موضوع ما را بر آن داشت تا با طراحی وب سایت به بررسی دقیق عملکرد سیستم های تبلیغات اینترنتی پرداخته و آخرین اخبار مربوطه را به طور مستمر منتشر کنیم. باشد که با اطلاع رسانی دقیق، بتوانیم با انتخاب مناسب ترین سیستم تبلیغاتی بر حسب اولویت های خود، گامی در جهت توسعه تجارت الکترونیک در ایران بردارید.
فصل اول
مقایسه وب سایت های تبلیغاتی
1-1 معرفی وب سایت ای پارسیان www.eparsian.com
این وب سایت به هیچ ارگان و یا نهادی وابسته نیست و شباهت اسمی آن با بانک پارسیان کاملاً اتفاقی بوده و بصورت خصوصی اداره می شود.
بر طبق آمار سایت جهانی و معتبر ITUتعداد کاربران اینترنت در ایران در سال 2009 ، بالغ بر 32 میلیون نفر بر آورد شده است ، همین امر موجب شده است که اینترنت به عنوان یک رسانه موثر در حوزه تبلیغات با ویژگی های متمایز نسبت به سایر رسانه ها مطرح شود[www.eparsian.com] .
1-1-1 معرفی سایر خدمات پارسیان
– مشاوره افزایش فروش کسب و کار شما از طریق اینترنت- مشاوره و ارائه راهکارهای تخصصی به وب سایتهایی که در حال خاک خوردن هستند و درامدزا نمی باشند.- برگزاری دوره های آموزشی تجارت الکترونیک بصورت نیمه خصوصی و سازمانی- برگزاری کارگاههای آموزشی مهارتهای درامدزایی شرکتها از طریق اینترنت- طراحی تخصصی و حرفه ای سایت های شخصی ، تجاری ، سازمانی و
جهت درج آگهی در سایت ابتدا ثبت نام نموده(ورود به صفحه ثبت نام)و با نام کاربری و رمز خود وارد سایت شوید.[www.eparsian.com]
شکل 1-1 ثبت نام در سایت ای پارسیان
سپس پنل مدیریت آگهی زیر را مشاهده خواهید نمود ، با انتخاب گزینه درج آگهی جدید در فرم باز شده مشخصات آگهی خود را ثبت نمایید.
شکل 1-2 کنترل پنل اعضای سایت ای پارسیان
کنترل پنل اعضا شامل قسمت های متفاوتی است .[www.eparsian.com]
درج اگهی :برای درج اگهی
لیست اگهی :برای نمایش لیست اگهی ها
وضعیت فیش ها:نمایش فیشهای پرداختی کاربر
شکل 1-3 فرم درج آگهی در سایت ای پارسیان
دراین قسمت کاربر برای اگاهی از چگونگی پرداخت فیش مراجعه میکند.
شکل 1-4 فرم ثبت مشخصات فیش بانکی در سایت ای پارسیان
بعد از اینکه کاربر اگهی خود را درج کرد باید منتظر بماند تا اگهی ثبت شده به تایید مدیر سایت برسد تا در سایت قرار بگیرد.
صفحه اول سایت برای اگهی های هفت ستاره در نظر گرفته شده است و بقیه اگهی ها با رتبه های 1 2 3 4 5 6 در قسمت زیر گروه های سایت قرار میگیرد.پس کلیلک بازدید کننده های سایت روی اگهی مشخصات اگهی بهمراه مشخصات اگهی دهنده نمایش داده میشود.[www.eparsian.com]
شکل1-5 نمایش آگهی ها در صفحه اول سایت ای پارسیان
مزایای وب سایت ای پارسیان
1- ایجاد یک پیوند مستقیم به لیست محصولات: تبلیغات در ای پارسیان با یک پیوند مستقیم، دسترسی به اطلاعات محصولات مرتبط را برای مخاطبان فراهم می سازد. این قابلیت غالباً منجر به مبادله محصولات و افزایش تعاملات تجاری می شود.[www.eparsian.com]
2-دسترسی جهانی و شبانه روزی: تبلیغات در ای پارسیان دارای دسترسی جهانی است و در تمام روزهای سال و تمام ساعت روز در دسترس می باشد که این موجب افزایش قابلیت مشاهده و گسترش بازار آن می شود.[www.eparsian.com]
3-ارسال، نگهداری و به روز رسانی آسان: تبلیغات در ای پارسیان دارای ویژگی نمایش، نگهداری و بروز رسانی آسان است که این به دلیل ماهیت دیجیتالی آن می باشد. کاهش فرایند تهیه و اجرای تبلیغات از جمله نتایج این ویژگی تلقی می شود.[www.eparsian.com]
4-اولویت بندی تبلیغات: تبلیغات در ای پارسیان بصورت ستاره دار می باشد که هر چه تعداد ستاره های یک تبلیغ بیشتر باشد در صفجه اول سایت نمایش داده میشود..[www.eparsian.com]
5-کاربری راحت و آسان: محیط گرافیکی و کاربر پسند سایت ای پارسیان یکی دیگر از مزایای این سایت است.[www.eparsian.com]
6- ثبت سریع آگهی شما بدون ثبت نام در سایت:بازدیدکنندگانی که فرصت کافی جهت درج اگهی خود در سایت را ندارند می توانند با ارسال مشخصات دقیق آگهی خود را درج نماییند.[www.eparsian.com]
شکل 1-6 نمایش جزییات آگهی در سایت ای پارسیان
1-2 معرفی وب سایت مشهد تبلیغ www.mashhadtabligh.com
بانک اطلاعات و نیازمندیهای اصناف و مشاغل استان خراسان رضوی ،با هدف کمک به رشد و توسعه محیط تبلیغاتی و تجاری واحدها و اصناف مشهدو معرفی فعالین صنعتی و تجاری این استان ایجاد شده است.در این راستا و جهت مساعدت به تحقق این هدف ، مجموعه خدماتی چون خدمات بازاریابی و تبلیغات اینترنتی را تحت عنوان خدمات کاربری آنلاین، به کاربران و اصنافی که عضو این بانک نیازمندیها شده اند ارائه می کند.[www.mashhadtabligh.com]
1-2-1 معرفی خدمات مشهد تبلیغ
1- استفاده از امکانات موجود در پروفایل کاربران شامل امکان درج آگهی، ارسال پیام، پاسخ گویی به پیام ها ، تغییر رمز و اطلاعات شخصی و …
2- معرفی کالا ها و خدمات شما در بخش کالای برگزیده بعنوان یکی از خدمات بازاریابی قابل ارائه
3- امکان درج آگهی در بخشآگهی های خرید و فروش روز در صفحه اصلی سایت همراه با اطلاعات کامل آگهی دهنده و امکان ارسال پیام بازدیدکننده آگهی به شما بعنوان یکی از خدمات تبلیغات اینترنتی قابل ارائه
اعضای بانک اطلاعات جامع شهری مشهد می توانند با عضویت در این سایت و تکمیل فرم ثبت نام با پرداخت هزینه های مرتبط رسما فعالیت خود را در این پایگاه آغاز و از نتایج آن بهره مند شوند.در بانک جامع نیازمندیهای مشهد تبلیغ به هر آگهی توسط مدیر بسته به میزان بازدیدهای صورت گرفته یا هزینه پرداخت شده رتبه ای تخصیص خواهد یافت.[www.mashhadtabligh.com]
1-3 معرفی خدمات مشهد تبلیغ
عوامل مهم در افزایش ترافیک وب سایت
1- طراحی وب سایت بر اساستکنیکهای سئو
2- تبلیغات کلیکی گوگل
3- تبلیغات آنلاین از طریق ویدیو
4- معرفی سایت به موتورهای جستجو
5- ایجاد استراتژی صحیحتبادل لینک
6- بازاریابی از طریق موبایل
7- افزایش ترافیک سایت از طریق ارسال ایمیل
8- افزایش ترافیک سایت از طریق نوشتن مقالات
شکل 1-7 صفحه اصلی سایت مشهد تبلیغ
جهت درج آگهی در سایت ابتدا ثبت نام نموده(ورود به صفحه ثبت نام)و با نام کاربری و رمز خود وارد سایت شوید .
شکل1-8 فرم ثبت نام در سایت مشهد تبلیغ
پس از ثبت نام در سایت و فعالسازی شناسه کاربری می توان وارد کنترل پنل شخصی کاربر شد
شکل 1-9 کنترل پنل شخصی کاربر سایت مشهد تبلیغ
کنترل پنل اعضا شامل قسمت های متفاوتی است .[www.mashhadtabligh.com]
درج اگهی :برای درج اگهی
پیام به مدیریت :برایارسال پیام به مدیر سایت
برای درج آگهی بر روی لینک آگهی تبلیغاتی کلیک کرده و فرم زیرباز می شود .
شکل 1-10 فرم درج آگهی در سایت مشهد تبلیغ
پس از درج آگهی در سایت و پرداخت وجه کاربر باید منتظر بماند تا اگهی درج شده به تایید مدیر سایت برسد و بسته به نوع درخواست کاربر در سایت نمایش داده شود اساس کار سایت مشهد تبلیغ همانند سایت ای پارسیان است ولی سایت ای پارسیان به جزییات بیشتر اگهی توجه دارد اما در مشهد تبلیع اینگونه نیست.[mashhadtabligh.com]
1-4 معرفی وب سایت آس بازار www.asbazar.com
وب سایت دیگری که مشغول به کار تبلیغات می باشد www.asbazar.com
است که معماری اولیه آن تقریبا شبیه وب سایت www.eparsian.comاست اما دسته بندی گروه مشاغل در آن بهتر صورت گرفته است و میتوان تبلیغات را برای استان های مختلف در نظر گرفت .
شکل 1-11 صفحه اصلی وب سایت آس بازار
اما از نظر معرفی کالا یا شغل دقیقا همانند وب سایت eparsian عمل میکند و برای تبلیغات ابتدا در سایت باید ثبت نام کرد و وارد سایت شد و برای ثبت تبلیغ اقدام نمود.
شکل 1-12 فرم درج آگهی در سایت آس بازار
پس از ورود به سایت کاربر میتواند تبلیغات دلخواه خود را ثبت نماید و منتظر باشد تا تبلیغات به تایید مدیر سایت برسد تا در سایت قابل نمایش باشد .[www.asbazar.com]
وقتی که تبلیغات کاربری به تایید مدیریت سایت رسید بسته به نوع درخواست کاربر تبلیغات وی در سایت نمایش داده می شود و با کلیلک بر روی لینک تبلیغ اطلاعات مربوط به تبلیغات نمایش داده می شود.[www.asbazar.com]
شکل 1-13 نمایش جزییات آگهی در سایت آس بازار
1-5 مقایسه سه وب سایت با یکدیگر
معماری طراحی هر سه وب سایت تقریبا شبیه به یکدیگر ساخته شده و از یک الگوی واحد استفاده می شود
اما در بین این سه سایت سایت مشهد تبلیغ با کاربری راحت و گرافیک سایت نسبت به سایت دیگر بهتر است.
در بخش پرداخت انلاین نیز سایت مشهد تبلیغ نسبت به دو سایت دیگر ارجحیت دارد.
اما در گروه بندی مشاغل سایت اس بازار با دسته بندی کامل نسبت به مشهد تبلیغ و ای پارسیان بهتر عمل کرده و دسته یندی آگهی هارو در سطح هر استان به طور جدا گانه انجام داده است.
یکی دیگر از معایب ای پارسیان و اس بازار که محدودیت هایی برای تبلیغات در صفحه اصلی قایل شده اند که حتما برای تبلیغات در صفحه اول اگر تعداد تبلیغات زیاد باشد کاربر باید در صف انتظار بماند تا جایی در صفحه اصلی برای وی باز شو د که این به ضرر کاربران است در ثانی کاربر حتما باید اعتبار اولیه برای درج آگهی داشته باشد تا بتواند تبلیغات خود را وارد نماید .همین طور در ایندو سایت امکان تبلیغات بنری در نظر گرفته نشده است چرا که تبلیغات بنری بخش عمده ای از تبلیغات محسوب میشود که این دو سایت از آن بهره نمی برند. ولی همه این اشکالات در سایت مشهد تبلیغ به نوعی بر طرف شده است.
در جدول زیر نیز سایر مشخصات هر سه وب سایت با یکدیگر مقایسه شده است :
مشهد تبلیغ
ای پارسیان
آس بازار
گرافیک
1
3
2
ظاهر وب سایت و جذابیت
2
3
1
لود شدن سریع و سبکی سایت
3
1
2
Google Pagerank
Pagerank : 1
Pagerank : 2
Pagerank : 2
امکانات
پرداخت وجه
پرداخت آنلاین پارسیان و پاسارگاد
سامان و پارسیان
پرداخت به صورت آنلاینواریز حساب به حسابپرداخت کارت به کارت ( ATM )
موضوع وب سایت
سایت تبلیغاتی ویژه شهر مشهد
وب سایت تبلیغاتی مشاغل و نیازمندی ها
وب سایت نیازمندی ویژه استان های ایران
توضیحات
معرفی فروشگاه ها ، شرکت ها و هعمچنین اطلاعات کلی از مشهد
اخباراقتصادی فرهنگی و هنری روز مشهد
اطلاع رسانی وضعیت آب و هوا و اوقات شرعی مشهد
معرفی اماکن توریستی مشهد
تالار گفتگو
دسته بندی مشاغل بر اساس نیاز روزمره کاربر در مشهد و همچنین میهمانان به مشهد
خدمات به خصوصی ندارد.
فقط ظاهر ساده و مشابهasbazar.com خدمات می دهد.
معرفی فروشگاه ها ، شرکت ها و هعمچنین اطلاعات نیازمندی های استان های ایران
جدول 1-1 مقایسه فنی وب سایت های (ای پارسیان , مشهد تبلیغ , آس بازار)
فصل دوم
ابزارهای مورداستفاده دربرنامه
معرفی کنترل های وب و نحوه استفاده آنها در صفحات ASP.NET
2-1 کنترل های استاندارد در دات نت
2-1-1 مقدمه و معرفی کنترل Button
یکی از کنترل های مهم و پر کاردبرد در تمام محیط های برنامه نویسی و از جمله در محیط ASP.Net کنترل دکمه فرمان Button Control می باشد . از دکمه فرمان Button در ASP.Net برای ارسال یک صفحه به سرور ( در اصلاح Postback کردن آن ) و اجرای دستورات و توابع طراحی شده برای رویداد کلیک کنترل استفاده می شود.هنگامی که کاربر بر روی کنترل دکمه فرمان Button کلیک کند ، صفحه مورد نظر به سرور ارسال شده و در واقع Postback می شود . در این زمان دستورات و توابع تعریف شده در رویداد Click دکمه فرمان Button و رویداد Page Load ( فراخوانی صفحه ) اجرا شده و نتایج به خود صفحه و یا صفحه دیگری ارسال می شود.[www.dotnettips.com]
شکل کلی تعریف و نمایش دکمه فرمان Button در صفحه های ASP.Net به صورت زیر است :
< asp:Button ID="Button1" runat="server" Text="Button" / >
2-1-2مقدمه و معرفی کنترل Label
کنترل Label ، به طور کلی برای نمایش متن در صفحات ASP.NET به کار می رود . از کنترل Label می توان در موارد زیر استفاده کرد :
1. نمایش متن و نوشته در صفحات ASP.Net .
2. تنظیم و تغییر متن مورد نظر به صورت برنامه ریزی شده در هنگام اجرای صفحات ASP.Net .
3. اتصال کنترل Label به یک بانک اطلاعاتی و نمایش پویا و Run Time اطلاعات فیلد های متنی .
4. قرار دادن کنترل Label به عنوان Caption برای سایر کنترل های ASP.Net .
شکل کلی تعریف و نمایش کنترل Label در صفحه های ASP.Net به صورت زیر است :
< asp:Label ID="Label1" runat="server" Text="Developer1" />
< asp:Label ID="Label2" runat="server" > Developer1 < /asp:Label >
[www.dotnettips.com]
2-1-3مقدمه و معرفی کنترل CheckBox
از کنترل CheckBox در ASP.Net برای نمایش یک گزینه انتخاب به کاربر استفاده می شود . این کنترل دارای یک عنوان ( Caption ) و یک گزینه انتخاب است که کاربر می تواند جهت تایید و انتخاب آن را علامت بزند . علامت زدن گزینه انتخاب به معنای قبول کردن گزینه ( Yes ) بوده و کنترل مقد ار True را بر می گرداند . علامت نزدن گزینه و یا برداشتن تیک گزینه علامت خورده به معنای عدم قبول کردن گزینه ( No ) بوده و کنترل مقدار False را بر می گرداند.[www.dotnettips.com]
شکل کلی تعریف و نمایش کنترل CheckBox در صفحه های ASP.Net به صورت زیر است :
< asp:CheckBox ID="CheckBox1" runat="server" Text ="CheckBox Control" / >
2-1-4مقدمه و معرفی کنترل DropDownList
از کنترل DropDownList در ASP.Net برای نمایش یک منوی کرکره ایی که شامل یک یا چندین آیتم مختلف می باشد ، به کاربر استفاده می شود . کاربر در هر لحظه می تواند منوی کرکره ایی را باز کرده و یکی از آیتم های موجود در آن را انتخاب نماید .
آیتم های موجود در کنترل DropDownList توسط مجموعه ListItem کنترل تعیین می شوند . هر آیتم موجود در کنترل دارای 2 مقدار متن ( Text ) و مقدار ( Value ) می باشد . متن ( Text ) عبارتی که در کنترل به جای آیتم نمایش داده می شود و مقدار ( Value ) مقداری است که در صورت انتخاب آیتم در منوی کنترل به برنامه باز می گردد . از این مقدار می توان در امور برنامه نویسی استفاده کرد.همچنین شما می توانید یکی از آیتم های منو را به صورت پیش فرض انتخاب کنید تا در هنگام نمایش صفحه در کنترل نمایش داده شود . برای این منظور باید مقدار خاصیت Selected آیتم را برابر با مقدارTrueقراردهید.[www.dotnettips.com].
شکل کلی تعریف و نمایش کنترل DropDownList در صفحه های ASP.Net به صورت زیر است :
<asp:DropDownList ID="DropDownList1" runat="server" >
<asp:ListItem Text="ASP.Net" Value="1" Selected="True" > </asp:ListItem>
<asp:ListItem Text="Java Script" Value="2"> </asp:ListItem>
<asp:ListItem Text="HTML" Value="3"> </asp:ListItem>
< asp:DropDownList / >
2-1-5-مقدمه و معرفی کنترل TextBox
از کنترل TextBox در ASP.Net برای نمایش یک کادر متن به کاربر و دریافت اطلاعات ورودی از وی استفاده می شود . کاربر می تواند اطلاعات مورد نظر خود از جمله نام کاربری ، کلمه عبور ، آدرس Email و یا سایر اطلاعات را درون کادر متن های مربوطه وارد نماید . پس از وارد نمودن کلیه اطلاعات لازم ، کاربر می تواند صفحه را به سرور ارسال نماید . به طور مثال برای این منظور برای روی یک دکمه فرمان Button که صفحه را Submit می کند ، کلیک نماید . [www.dotnettips.com]
شکل کلی تعریف و نمایش کنترل TextBox در صفحه های ASP.Net به صورت زیر است : www.dotnettips.com
<asp:TextBox ID="TextBox1" runat="server" > < / asp:TextBox >
2-1-6-مقدمه و معرفی کنترل Image
از کنترل Image در ASP.Net می توان برای نمایش تصویر و ِیا آیکون بر روی صفحه استفاده نمود . شما می توانید عکس یا آیکون کنترل را از قبل تعیین کرده و یا به صورت دینامیک آن را در هنگام اجرای صفحه تعیین و یا تغییر دهید . همچنین می توانید خاصیت ImageUrl کنترل را به یک فیلد بانک اطلاعاتی متصل کرده تا تصویر آن از طریق اطلاعات موجود در پایگاه داده تعیین شود.
این کنترل همانند تگ < img >در HTML عمل می کند و در هنگام اجرای صفحات ASP.Net به صورت یک تگ < img >به صفحه ارسال می شود . [www.dotnettips.com]
شکل کلی تعریف و نمایش کنترل Image در صفحه های ASP.Net به صورت زیر است :
<asp:Image ID="Image1" runat="server" src = "/>
2-1-7-مقدمه و معرفی کنترل HyperLink
از کنترل HyperLink برای ایجاد لینک به یک صفحه ، فایل و یا وبسایت دیگر استفاده می شود .
این کنترل کار تگ < a >در HTML را انجام داده و در هنگام اجرای صفحات ASP.Net توسط سرور ، خروجی آن در سورس کد صفحه به صورت تگ < a >خواهد بود .
این کنترل می تواند لینک را به صورت متن یا یک تصویر نمایش دهد . برای نمایش لینک به صورت متن ، باید متن مورد نظر خود برای عنوان لینک را در خاصیت Text کنترل تعیین نمایید . همچنین اگر می خواهید لینک به صورت تصویر باشد ، بایستی آدرس عکس مورد نظر را در خاصیت ImageUrl کنترل تعریف نمایید . [www.dotnettips.com]
شکل کلی تعریف و نمایش دکمه فرمان HyperLink در صفحه های ASP.Net به صورت زیر است :
< asp:HyperLink ID="HyperLink1" runat="server" Text=" NavigateUrl="http://www.Developer1.ir/default.aspx" />
2-1-8-مقدمه و معرفی کنترل FileUpload
کنترل FileUpload در صفحات ASP.Net ، این امکان را به کاربران شما می دهند تا فایل های مورد نظر خود را به سرور سایت شما آپلود ( Upload ) نمایند .
برای مثال فرض کنید در سایت شما هر کاربری که ثبت نام نماید ، بایستی یک عکس درباره خود را با فرمت jpg و حداکثر سایز 40 KB ، برای شما ارسال نماید . برای انجام این کار می توانید از کنترل FileUpload به راحتی استفاده نمایید .
کنترل FileUpload این امکانات را در اختیار شما قرار می دهد :
* کاربران سایت شما فایل های مورد نظر خود را به آدرس تعیین شده بر روی سایت آپلود نمایند .
* سایز فایلی که کاربر می خواهد بر روی سایت ارسال نماید را محدود نمایید . مثلا یک حداکثر سایز برای آن تعیین نمایید .
* خصوصیات فایل های آپلود شده را بررسی نموده و در صورت صحیح بودن بر روی سرور ذخیره شوند . [www.dotnettips.com]
شکل کلی تعریف و نمایش دکمه فرمان FileUpload در صفحه های ASP.Net به صورت زیر است :
< asp:FileUpload ID="FileUpload1" runat="server"
2-1-9-مقدمه و معرفی کنترل GridView
یکی از مهمترین نیازها و مسائلی در کار با داده ها در برنامه های وب با آن روبرو هستیم ، نمایش اطلاعات دریافت شده از پایگاه داده های مختلف ، در قالب جداول منظم و ساختار یافته است . همانطور که در بخش کنترل های سرور داده اشاره کردم ، کنترل های سرور داده از جمله SqlDataSource و AccessDataSource برای دریافت و یا ارسال اطلاعات به پایگاه داده هایی که به آنها متصل شده اند استفاده شده و خود قادر به نمایش اطلاعات دریافتی بر روی صفحات وب نیستند . برای نمایش این اطلاعات دریافت شده باید یک کنترل وب نمایش دهنده اطلاعات را به یک کنترل سرور داده متصل کرد . در این حالت ، در هنگام اجرای برنامه کنترل سرور داده اطلاعات درخواستی را از منبع داده ای دریافت کرده و آن را برای نمایش به کنترل وب متصل به خود ارسال می کند . کنترل وب نیز اطلاعات دریافتی را مرتب کرده و در قالب جداول و یا لیست نمایش می دهد . ASP.NET کنترل های وب بسیاری را برای این کادر در اختیار ما قرار داده است، که از آن جمله می توان به کنترل های GridView ، FormView و یا DetaisView اشاره کرد . هر یک از این کنترل ها دارای قابلیت ها و عملکردهای مخصوص به خود بوده و می توانند در جاهای مختلف مورد استفاده قرار بگیرند . در این بخش قصد داریم تا کنترل GridView را به شما معرفی کنیم .
یکی از کنترل های مهم ASP.NET که می توان از آن برای نمایش ساختار یافته و منظم اطلاعات دریافتی از منابع داده ای استفاده کرد ، کنترل GridView است . این کنترل اطلاعات دریافتی را در قالب یک جدول که دارای سطر و ستون هایی به اندازه رکوردها و فیلد های داده انتخابی است ، نمایش می دهد . سطر جدول اطلاعات مربوط به یک رکورد از بانک اطلاعاتی و هر ستون نیز اطلاعات مربوط به یک فیلد خاص را نمایش می دهد . این کنترل قادر است تا در هر لحظه اطلاعات مربوط به یک یا چندین رکورد انتخاب شده از جدول بانک اطلاعاتی را به صورت یک جدول نمایش دهد .
به وسیله این کنترل شما می توانید علاوه بر نمایش اطلاعات آنها را ویرایش کرده و یا حذف کنید . این کنترل را می توان برای نمایش اطلاعات از منابع مختلف داده ای از جمله پایگاه های داده SQL Server , Access , Oracle , فایی های XML و … استفاده کرد . کنترل GridView توانایی اتصال و دریافت اطلاعات از کنترل های سرور داده SqlDataSource , AccessDataSource , XmlDataSource و ObjectDataSource را داراست.این کنترل به وسیله تگ باز و بسته < asp:GridView > < /asp:GridView >در محیط کدنویسی ایجاد و شناخته می شود . همچنین در محیط طراحی برنامه Visual Studio در منوی Toolbox و از قسمت Data قابل دسترسی است . مثال زیر کد عمومی تعریف و استفاده از یک کنترل GridView را نشان می دهد . [www.dotnettips.com]
< asp:GridView ID="Gridview1" runat="server" DataSourceID="AccessDataSource1" >
< /asp:GridView >
همچنین این کنترل امکانات مختلف دیگری از جمله موارد زیر را می دهد :
* امکان صفحه بندی ( Paging ) : به وسیله این امکان می توان رکوردهای نمایش داده شده توسط کنترل GridView را در چندین صفحه نمایش داد .برای مثال چنانچه مثلا بخواهیم اطلاعات 40 رکورد را در یک کنترل GridView نمایش دهیم ، می توان آن را به 4 صفحه تقسیم کرد که در هر صفحه 10 رکورد نمایش داده خواهد شد و در هر لحظه می توان به وسیله دکمه های راهنما به هر یک از صفحات دسترسی داشت . [www.dotnettips.com]
* امکان مرتب سازی اطلاعات ( Sorting ) : به وسیله اطن امکان می توانید اطلاعات خانه های جدول را بر حسب یک یا چند ستون مرتب کنید . ( بر حسب حروف الفبا و یا بزرگ و کوچک بودن ( [dotnettips.com]
همچنین شما می توانید ظاهر جدولی که اطلاعات را برای شما نمایش می دهد را به دلخواه خود تغییر دهید . برای این منظور می توان از رنگ های مختلف برای حاشیه و متن درون جدول ، پس زمینه های رنگی و یا قالب ها . Style های آماده برای ظاهر کنترل استفاده کنید .[www.dotnettips.com]
2-1-10مقدمه و معرفی کنترل DetailsView
یکی از مهمترین نیازها و مسائلی در کار با داده ها در برنامه های وب با آن روبرو هستیم ، نمایش اطلاعات دریافت شده از پایگاه داده های مختلف ، در قالب جداول منظم و ساختار یافته است . همانطور که در بخش کنترل های سرور داده اشاره کردم ، کنترل های سرور داده از جمله SqlDataSource و AccessDataSource برای دریافت و یا ارسال اطلاعات به پایگاه داده هایی که به آنها متصل شده اند استفاده شده و خود قادر به نمایش اطلاعات دریافتی بر روی صفحات وب نیستند . برای نمایش این اطلاعات دریافت شده باید یک کنترل وب نمایش دهنده اطلاعات را به یک کنترل سرور داده متصل کرد . در این حالت ، در هنگام اجرای برنامه کنترل سرور داده اطلاعات درخواستی را از منبع داده ای دریافت کرده و آن را برای نمایش به کنترل وب متصل به خود ارسال می کند . کنترل وب نیز اطلاعات دریافتی را مرتب کرده و در قالب جداول و یا لیست نمایش می دهد . ASP.NET کنترل های وب بسیاری را برای این کادر در اختیار ما قرار داده است، که از آن جمله می توان به کنترل های GridView ، FormView و یا DetaisView اشاره کرد. هر یک از این کنترل ها دارای قابلیت ها و عملکردهای مخصوص به خود بوده و می توانند در جاهای مختلف مورد استفاده قرار بگیرند . در این بخش قصد داریم تا کنترل DetailsView را به شما معرفی کنیمیکی دیگر از کنترل های مهم دیگر ASP.NET که برای نمایش قالب بندی شده و جدول وار اطلاعات پایگاه های داده می توان از آن استفاده کرد ، کنترل DetailsView است . کنترل DetailsView در هر لحظه فقط اطلاعات یک رکورد از منبع داده ای را نمایش می دهد ، که در آن اطلاعات هر فیلد به صورت یک سطر در جدول نمایش داده می شود . به عبارت دیگر کنترل DetailsView در هر صفحه خود ، اطلاعات یک رکورد را از بانک اطلاعاتی متصل به خود نمایش می دهد ، که در آن هر سطر نمایش دهنده اطلاعات یک فیلد داده ای از آن رکورد است . چنانچه کنترل سرور داده ای که کنترل DetailsView به آن متصل است ، اطلاعات بیش از یک رکورد را به کنترل DetailsView ارسال کند ، این کنترل فقط اطلاعات اولین رکورد را نمایش داده و اطلاعات بقیه رکوردها را قطع ( Discard ) می کند.[www.dotnettips.com]
این کنترل را می توان برای نمایش اطلاعات از منابع مختلف داده ای از جمله پایگاه های داده SQL Server , Access , Oracle , فایی های XML و … استفاده کرد . کنترل DetailsView توانایی اتصال و دریافت اطلاعات از کنترل های سرور داده SqlDataSource , AccessDataSource , XmlDataSource و ObjectDataSource را داراست . برای آشنایی با نحوه اتصال کنترل DetailsView به کنترل های سرور داده و منابع داده ای به بخش بعدی اتصال کنترل DetailsView به منبع داده و نمایش اطلاعات دریافتیبروید . کنترل DetailsView قابلیت های مختلفی را بر حسب نوع کنترل داده ای که به آن متصل است ، از کنترل سرور داده خود به ارث می برد . از جمله قابلیت های این کنترل می توان به عملیات به روز رسانی داده ( Update ) ، حذف و یا اضافه کردن رکوردها ( Insert & Delete ) و صفحه بندی اطلاعات اشاره کرد . این کنترل از قابلیت مرتب سازی داده بر حسب مقدار یک فیلد یا رکود پشتیبانی نمی کند . [www.dotnettips.com]
این کنترل به وسیله تگ باز و بسته < asp:DetailsView > < /asp:DetailsView >در محیط کدنویسی ایجاد و شناخته می شود . همچنین در محیط طراحی برنامه Visual Studio در منوی Toolbox و از قسمت Data قابل دسترسی است . مثال زیر کد عمومی تعریف و استفاده از یک کنترل DetailsView را نشان می دهد.
<asp:DetailsView ID="DetailsView1" runat="server" DataSourceID="AccessDataSource1" >
< /asp:DetailsView >
همچنین شما می توانید ظاهر جدولی که اطلاعات را برای شما نمایش می دهد را به دلخواه خود تغییر دهید . برای این منظور می توان از رنگ های مختلف برای حاشیه و متن درون جدول ، پس زمینه های رنگی و یا قالب ها . Style های آماده برای ظاهر کنترل استفاده کنید .[www.dotnettips.com]
2-2 مقدمه و معرفی کنترل های سمت سرور
ASP.NET شامل مجموعه ای از کنترل های داده( data source Controls ) است ، که به شما امکان می دهد تا به منابع مختلف اطلاعات همچون پایگاه داده های مختلف ، فایل های XML و سایر اشیای داده ای متصل شده ، از آنها اطلاعات دریافت کرده و یا اطلاعات آنها را حذف ، اضافه و یا به روز کنید . این کنترل ها به طور مستقیم به منبع اطلاعاتی متصل شده و از آن اطلاعات مورد نظر را دریافت کرده و یا به آن پاس می دهند . به عبارت دیگر کنترل های داده همانند پل ارتباطی بین منبع داده و کنترل هایی که شما برای نمایش و یا ویرایش اطلاعات در صفحات ASP.NET از آنها استفاده می کنید ، عمل کرده و باعث می شوند تا سایر کنترل ها از اطلاعات به دست آمده استفاده کنند . در واقع آنها اطلاعات را برای کنترل های دیگر فراهم می کنند و خود قادر به نمایش آنها نیستند .[www.dotnettips.com]
همانطور که در بخش های بعد توضیح خواهیم داد ، ما در صفحات ASP.NET برای نمایش منظم اطلاعات یک پایگاه داده در قالب هایی مانند جدول یا فرم ها ، از کنترل هایی مانند GridView ، FormView و یا DetailsView استفاده می کنیم . به این کنترل ها در اصطلاح کنترل های وب یا data-bound Controls می گوییم و این کنترل ها امکان اتصال مستقیم به یک پایگاه داده را ندارند و بایستی از طریق یک کنترل داده ای مناسب عمل اتصال و دریافت اطلاعات را انجام دهند . در واقع کنترل های وب به کنترل های داده و به نوبت هم کنترل های داده به پایگاه داده متصل می شوند . به عبارت دیگر رابطه زیر بین کنترل های ASP.NET و منبع داده ای بر قرار است :
کنترل های داده هیچ گونه خروجی ظاهری و قابل مشاهده بر روی صفحه ندارند و فقط در بخش کد نویسی صفحه قابل دسترسی و تغییر هسنتد[www.dotnettips.com]
* ObjectDataSource
* SqlDataSource
* AccessDataSource
* XmlDataSource
* SiteMapDataSource
2-3Table چیست؟
جداول مهمترین عناصر سیستم های پایگاه داده هستند ، که برای ذخیره و نگهداری سازمان یافته اطلاعات مورد استفاده قرار می گیرند . Table ها دارای سطر و ستون هستند و توسط یک نام منحصر به فرد در سطح برنامه شناسایی می شوند .[www.dotnettips.com]
به سطرهای یک جدول رکورد ( Record ) و به هر یک از خانه های ستون یک جدول فیلد ( Field ) می گویند .هر رکورد مجموعه ای از اطلاعات طبقه بندی شده درباره یک موجودیت خاص است و هر فیلد یکی از خصوصیات آن موجودیت را به همراه مقدار آن مشخص می کند .[www.dotnettips.com]
موجودیت پدیده ، شی یا فردی در محیط پایگاه داده است که می خواهیم اطلاعات مربوط به آن را نگهداری کنیم . و برای نگه داری اطلاعات بیش از 25 Table در طراحی نرم افزار TDM بکار رفته که نام انها د رجدول امده است اساتید و … بکار می روند.[www.dotnettips.com]
2-4View چیست؟
در صورتی که بخواهید تنها قسمتییا قسمتهایی از داده های جدولتان در دسترس دیگران باشد و دیگران به تمام داده های شما دسترسی نداشته باشند می توانیدیکviewاز روی جدول موردنظرتان ایجاد کنید به طوریکه تنها شامل فیلدهایی باشد که شما می خواهید و بدین ترتیب اطلاعات دیگران را تنها محدود به فیلدهای موردنظر کرده و جدول اصلی را از دسترسشان دور نگهدارید.[www.dotnettips.com]
2-5 Stored Procedure چیست؟
Procedure یا Sp یا به زبان فارسی " رویه های ذخیره شده " اشیایی اجرا پذیر در بانک اطلاعاتیSQL Server هستند که شامل یکیا چندین دستور SQL می شود ، این رویه ها میتوانند پارامتر های ورودی و خروجی داشته باشند .همچنین میتوان داخل این رویه ها به زبان SQL برنامه نویسی کرد .
مهم ترین کاربر این رویه ها ذخیره کردن دستورات Select , Insert , Update , Delete هست یا ترکیبی از اینها.[www.dotnettips.com]
فصل سوم
متغیرها
شرح و تعریف متغیرها و صفات خاصه جداول
3-1 متغیرهای مورد نیاز و مورد استفاده در طراحی وب سایت تبلیغاتی
جدول 3-1 اطلاعات و نیازمندیهای مربوط به مدیران سایت (Account)
مقدار(Caption)
نام موجودیت
کد کاربر
ID
شناسه کاربر
Username
رمز عبور
Password
فعال/غیر فعال
Enabled
نام
Firstname
نام خانوادگی
Lastname
تاریخ عضویت
CreateDate
تاریخ آخرین بازدید
LastLoginDate
آی پی
Ip
جدول 3-2اطلاعات مربوط به ثبت نام آگهی دهندگان سایت (User)
مقدار(Caption)
نام موجودیت
کد کاربر
ID
زمینه فعالیت
Title
شناسه کاربر
Username
رمز عبور
Password
فعال/غیر فعال
Enabled
نام
Firstname
نام خانوادگی
Lastname
آدرس
Address
ایمیل
Email
وبسایت
Website
موبایل
Mobile
تلفن
Telphone
فکس
Fax
توضیحات
Description
تاریخ ثبت نام
CreateDate
جدول 3-3اطلاعات مربوط به آگهی (Advertisement )
مقدار(Caption)
نام موجودیت
شناسه
ID
شناسه کاربر
UserID
کد گروه
GroupID
کد زیر گروه
SubGroupID
عنوان
Title
نوع
Type
توضیحات
Description
کلمات کلیدی
Keyword
اعتبار
Credit
لینک
Link
تعداد ستاره
Rank
عکس ستاره
RankStar
نمایش اطلاعات اگهی دهنده
ShowContact
تصویر
Image
فعال
Active
قیمت
Price
تعداد بازدید
Hit
تاریخ درج
Date
موقعیت
Position
آی پی
Ip
وب سایت
WebSite
فعال
Enabled
شناسه پرداخت
PayID
3-4 اطلاعات مربوط به بنرهای تبلیغاتی (Banner)
مقدار(Caption)
نام موجودیت
کد بنر
ID
شناسه کاربر
UserID
عنوان بنر
Title
توضیحات
Description
کلمات کلیدی
Keyword
اعتبار
Credit
تعداد ستاره
Rank
تصویر
Image
فعال / غیر فعال
Active
تاریخ درج
Date
موقعیت نمایش
Position
آی پی
Ip
آدرس وب سایت
WebSite
فعال /غیر فعال
Enabled
3-5-اطلاعات مربوط به گروه های اصناف (Group)
مقدار(Caption)
نام موجودیت
کد گروه
ID
نام گروه
Name
تصویر
Image
جدول 3-6 اطلاعات مربوط به پرداختها (Payments)
مقدار(Caption)
نام موجودیت
شناسه
ID
شناسه کاربر
UserID
شماره حساب
AccountNumber
شماره رسید
ReceiptPayment
مبلغ
Amount
تاریخ پرداخت
PayDate
نام واریز کننده
Name
توضیحات
Description
وضعیت
Status
ای پی
IP
فصل چهارم
ERD
در این فصل به بررسی و شناخت Use Case ها ، Actor ها ، رسم Use Case Diagram ها و در نهایت نوشتن سناریویی برای هر یک از Use Case Diagram ها خواهیم پرداخت. در ابتدا بایستی بدانی که مفاهیم هر یک از عبارات فوق چیست(کتاب برنامه نویسی زبانasp.netنوشته استوان والتر)
4-1 Use case چیست؟
Use Case ها که در فاز آنالیز پروژه برای شناساسیی و تقسیم بندی فعالیت های سیستم استفاده می شوند و می تونند به عنوان سرویس ها یا کارکردهایی که سیستم برای کاربران خودش فراهم می کنه نیز توصیف بشوند.(کتاب برنامه نویسی زبانasp.netنوشته استوان والتر)
دو دیدگاه وجود دارد: یکی داخلی , دید ساختاری و دیگری خارجی و دید وظیفه گرایی(task Oriented)
در دیدگاه اول ما باید کلاسها و متدها را تعریف کنیم و سپس واسطهای کاربری (user interface)را تعریف کنیم. مشکل اینجاست که برای کاربر مهمترین چیز رفتار سیستم است ولی واسطهای کاربری تنها قسمت آخر فرآیند را تعریف می کنند. و این مارو به سمت مشکلاتی می بره نظیر اینکه سیستم تمام کارکردهایی که ما می خواهیم در اختیارمون قرار نمی ده و یا کارکردهایی رو داره که مورد نیاز ما نبوده.
در دید دوم ،سیستم از Actor ها و فعالیتها و کلاسهایی که به فعالیتها وصل شده اند پشتیبانی می کند.در این دیدگاه هیچ کار ناخواسته ای وجود ندارد و سیستم تمام فعالیتهای کاربر را پشتیبانی می کند که همه آنها در Use case Diagram نمایش داده می شود.(کتاب برنامه نویسی زبانasp.netنوشته استوان والتر)
4-2 Actor چیست؟
Actor هـا نقشـهایـی را ارائـه مـی دهـنـد کـه تـوســط کـاربــران سیــــسـتمـــهای اطـلاعـاتی (Information System=IS) انجام می شود. اینActor ها می توانند انسانها ,کامپیوترها , سخت افزارها و حتی نرم افزار ها باشند.تنها چیزی که آنها را Actor می کند این است که آنها باید بیروناز قسمتی باشند که توسط سیستم به use case ها تقسیم شده است ویکسری ورودی برای سیستمهای اطلاعاتی فراهم می کنند و یکسری از آنها خروجی می گیرند.(کتاب برنامه نویسی زبانasp.netنوشته استوان والتر)
4-3 دیاگرامuse case چیست؟
دیاگرامهایuse case با استفاده از Use caseو Actor عملکرد (Functionality) سیستم رامدلسازی می کنند.(کتاب برنامه نویسی زبانasp.netنوشته استوان والتر)
4-4 ارتباطات بینuse case ها چگونه است؟
ارتباط بینuse case ها یا به صورت Extends است و یا به صورت Uses .Uses دلالت بر این دارد که یکuse case برای انجام وظیفه و فعالیتش نیازمندuse case دیگری است.Extends دلالت بر این دارد که use caseییک امکانو گزینه اختیاری برایuse case دیگر است که در بعضیشرایط از آن استفاده می کند.(کتاب برنامه نویسی زبانasp.netنوشته استوان والتر)
4-5 شناسائی Actor های سیستم
Actor ها در حقیقت مکانیسمی برای طبقه بندی External User ها هستند. Actor ها می توانند در چهار گروه User ، Applications ، Devices و External Events باشند. در سیستم جاری با دو نوع اکتور سرو کار داریم:(کتاب برنامه نویسی زبانasp.netنوشته استوان والتر)
* Actor کاربر
* Actor External Events
4-5-1 Actor کاربر
کاربران سیستم در حالت کلی شامل Actor مدیر سایت وActorمشتری
شکل 5-1 نمودار usecase کاربر
Actor مدیر واحد فروش وActor کارمند فروش ، Actore مشتری با رابطه Generalization با Actor کاربر ارتباط دارند و تمامی خواص Actor کاربر را دارا هستند. (کتاب برنامه نویسی به زبانc#نوشته شیجونی)
مفهوم ارث بری در نمودار فوق بدین معنی است که در حالت کلی Actor کاربر دارای یک سری اطلاعات اعم از اطلاعات تماس ، اطلاعات شناسنامه ای و . . . می باشد که می توان در تعریف Actor ها آنها را در کلاس کلی تعریف نمود و در تعریف سایر خواص مربوط به Actor ها موارد تکراری را از کلاس اصلی مشتق گرفت.. (کتاب برنامه نویسی به زبانc#نوشته شیجونی)
4-5-2 Actor مدیر سایت
شرح: مدیر کسی است که بر روند کار و صدور دستورات و نحوه انجام آنها و تمامی عملیات مربوط به واحد خدمات سایت نظارت می نماید. ضمنا بالاترین شخص از نظر سطح دسترسی به سیستم می باشد و مجوزهای کاربری برای کاربران صادر می نماید. به تعریفی مدیریتواحد فروش، شخصی است که وظیفهکنترل سیستم فروش و صحت عملکرد آن را نیز برعهده دارد و یا اینکه بر آن نظارت می نماید.. (کتاب برنامه نویسی به زبانc#نوشته شیجونی)
4-5-3 Actor مشتریان
شرح: مشتریان افرادی هستند که برای خرید و یا مشاهده لیست قیمتها از سیستم فروش استفاده می نمایند.
اکتور مشتری نیز به عنوان یکی از کاربران سیستم شناخته می شود و می تواند با سطح دسترسی بسیار پائین از برخی از اطلاعات سیستم استفاده نماید. به عنوان مثال اکتور مشتری فقط می تواند به قسمت درج آگهی , درج بنر و درج فیش بانکی دسترسی داشته باشد .. (کتاب برنامه نویسی به زبانc#نوشته شیجونی)
4-6 شناسائی Use Case ها
Functionality های زیر به درخواست مشتری پس از چند مرحله مصاحبه شناسایی و استخراج گردیده است:.(کتاب برنامه نویسی به زبانc#نوشته شیجونی)
1- ثبت نام مشتری (Sign Up)
2- ورد به سیستم (Log In)
3- خروج از سیستم (Log Out)
4- مشاهده فهرست سفارشات
5- ثبت سفارشات
6- مشاهده فهرست و مشخصات
7- صندوق پیام مدیر
8- صندوق پیام کارمندان
9- صندوق پیام مشتریان
10- لیست کاربران
11- مشاهده گزارشات مدریتی توسط مدیر
12- پرداخت وجه
4-7نمودارهای USE CASE 1
شکل 4-2 نمودار Usecase کاربران
جدول 4-1 سناریوی Sing Up Use Case
سناریوی شماره 1 – 1
سیستم سایت
نام: ثبت نام در سیستم (Sign Up)
Actor: کاربران
شرح سناریو: در این سناریو ، کاربر پس از فشردن کلید ثبت نام به بخش ورود اطلاعات وارد شده و پس از وارد نمودن اطلاعات کاربری ، و کلیک بر روی کلید تائید ثبت نام می نماید.
Assumption: منظور از کاربر در این Use Caseدر حقیقت افرادی هستند که از سایت استفاده می نماید.
Include: Sign In
Extended: Sign In
(Pre-Condition): کاربر برای ثبت نام به بخش ثبت نام مراجعه می نماید.
مراحل:
Actor
System
1- کاربر درخواست ثبت نام از سیستم را می نماید.
2- سیستم فرم مربوط به ورود اطلاعات ثبت نام کاربر را نمایش می دهد.
3- کاربر اطلاعات درخواستی را وارد می نماید. (اعم از اطلاعات شناسنامه ای ، اطلاعات تماس ، عکس و . . .) و کلید ثبت نام را فشار می دهد.
4- سیستم پیغامی مبنی بر ثبت نام صادر می نماید.
5-کاربر اطلاعات مربوط به حساب خود را مشاهده می نماید.
Constraints: پس از ورود نام کاربری برای ثبت نام در صورتی که نام وارد شده قبلا ثبت شده باشد به کاربر پیغام مناسبی مبنی بر انتخاب نام کاربری دیگر نمایش داده خواهد شد.
Exception: کاربر هم می تواند به عنوان بازدیدکننده عادی از اطلاعات سایت استفاده نماید و هم اینکه می تواند به عنوان یک کاربر ثبت نام شده از تمامی امکانات سایت استفاده نماید.
جدول 4-2- سناریوی Sing In Use Case
سناریوی شماره 1 – 2
سیستم سایت
نام: ثبت نام در سیستم (Sign In)
Actor: کاربران
شرح سناریو: در این سناریو ، کاربر پس از وارد نمودن نام کاربری و کلمه عبور خود و تائید صحت مشخصات از طرف سیستم ، وارد سیستم می شود و می تواند از امکانات کامل سیستم فروشگاه قطعات کامپیوتری استفاده نماید.
Assumption: منظور از کاربر در این Use Case در حقیقت افرادی هستند که از نرم افزار استفاده می نماید.
Include: Sign Up
Extended:
(Pre-Condition): ثبت نام کاربر قبلا تکمیل شده و کاربر دارای کلمه عبور و نام کاربری می باشد.
مراحل:
Actor
System
1- کاربر بر روی کلید درخواست ورود کلیک می نماید.
2- سیستم فرم مربوط به ورود نام کاربری و کلمه عبور را نمایش می دهد.
3- کاربر نام کاربری و کلمه عبور را وارد می نماید و کلید ورود را فشار می دهد.
4- سیستم پس از بررسی نام کاربری و کلمه عبور ، وارد صفحه اصلی سیستم می گردد.
5-کاربر پس ارز ورود می تواند اطلاعات جدید را وارد سیستم کرده و یا از اطلاعات قبلی سیستم استفاده نماید.
Constraints: نام کاربری ترکیبی از حروف و ارقام است
Post-Condition: کاربر وارد صفحه اصلی سیستم فروشگاه کامپیوتری می گردد و می تواند از تمامی امکانات نرم افزار استفاده نماید.
Alternative Flow: در صورتی که نام کاربری و کلمه عبور وارد شده معتبر نباشد ، پیغامی مبنی بر ورود مجدد اطلاعات از طرف سیستم صادر می گردد.
Exception: کاربر هم می تواند به عنوان بازدیدکننده عادی از اطلاعات سایت استفاده نماید و هم اینکه می تواند به عنوان یک کاربر ثبت نام شده از تمامی امکانات سایت استفاده نماید..
جدول4-3- سناریوی Sing Out Use Case
سناریوی شماره 1 – 3
سیستم سایت
نام: ثبت نام در سیستم (Sign Out)
Actor: کاربران
شرح سناریو: در این سناریو ، کاربر قبلا وارد سیستم شده است و می خواهد از سیستم خارج شود. پس از کلیک بر روی خروج فضای نام اختصاص داده شده از حافظه پاک می شود.
Assumption: منظور از کاربر در این Use Case در حقیقت افرادی هستند که از نرم افزار استفاده می نماید.
Include: Sign In
Extended: Sign Up
(Pre-Condition): کاربر با استفاده از کلمه عبور خود وارد سیستم شده و از طلاعات موجود استفاده نموده است.
مراحل:
Actor
System
1- کاربر بر روی کلید درخواست خروج کلیک می نماید.
2- سیستم پیغامی مبنی بر تائید درخواست به کاربر نمایش می دهد.
3- کاربر بر روی کلید تائید کلیک می نماید.
4- سیستم اسناد و فرمهای باز را می بندد.
5- سیستم ارتباط با پایگاه داده را قطع می نماید
6- سیستم فضای نام اختصاص داده شده به برنامه را از حافظه پاک می کند.
7- سیستم از فرم اصلی برنامه را می بندد.
Constraints: نرم افزار نباید قبل از قطع ارتباط با پایگاه داده بسته شود. تمامی تغییرات ذخیره نشده نیز باید ذخیره شوتد.
Post-Condition: کاربر پس از کلیک بر روی خروج ، از برنامه خارج می شود. عملیات ذکر شده در سناریو باید به دور از چشم کاربر و بدون پیغام اجرا شوند.
Alternative Flow: در صورتی که به هر دلیل تغییرات قابل ذخیره شدن نبود بایستی سیستم پیغامی به کاربر نمایش دهد.
Exception: در صورتی که اطلاعات از بین رفته بود سیستم باید بتواند اطلاعات را بازیابی کند.
شکل 4-3- نمودارهای USE CASE 2
جدول 4-4 میل باکس مدیر سایت
سناریوی شماره 2-1
سیستم سایت
نام: ایمیل باکس مدیر فروشگاه
(Boss Mailbox)
Actor: مدیر فروشگاه
شرح سناریو: در این سناریو ، مدیر سایت پس ازورود به سیستم ، می تواند به هر کاربر پیغام ارسال کند.
Assumption: منظور از مدیر سایت در این Use Case در حقیقت فردی است که تمامی امور موجود در سایت را انجام می دهد و بالاترین شخص از نظر سطوح دسترسی به اطلاعات می باشد و می تواند هر گونه ویرایشی در اطلاعات و سفارشات خرید و فروش که درج شده انجام دهد.
Communicate: مدیر سایت
Extended: صفحه اصلیسایت
(Pre-Condition): پس از بروز رسانی ، از طریق ارسال پیغام به ایمیل باکس اعضا ، به آنها اطلاعات داده می شود. در صورتی که ایمیل جدیدی در ایمیل باکس موجود باشد به آن پاسخ داده خواهد شد.
مراحل:
Actor
System
1- مدیر بر روی کلید ورود به ایمیل باکس کلیک می نماید.
2- سیستم صفحه مربوط به ایمیل باکس را نمایش می دهد.
3- سیستم در صورت وجود ، نامه های رسیده جدید را نمایش می دهد.
4- مدیر فروشگاه نامه های مورد نظر را ارسال می نماید.
5- سیستم فهرست تائید ارسال نامه های ارسالی را نمایش می دهد.
6- سیستم نامه های خوانده شده ، خوانده نشده و جواب داده شده را به تفکیک نمایش می دهد.
Constraints: مدت زمان مجاز جهت تحویل سفارشات در سایت توسط مدیر سایت مشخص می گردد.
Alternative Flow: درصورتی که ایمیل به هر دلیلی ارسال نشد باید از طرف سیستم پیغام مناسبی صادر شود.
جدول 4-5سناریوی Registeration of Orders Use Case
سناریوی شماره 2-4
سیستم فروشگاه
نام: ثبت سفارشات
(Order Registeration)
Actor: کارمند
شرح سناریو: در این سناریو ، مدیر پس ازورود به بخش کاربری خود ، در صورتی که سفارش کاری جدید از مشتری دریافت شده باشد آن را در سیستم ثبت میکند.
Include: مدیر
Extended: صفحه اصلی سایت
مراحل:
Actor
System
1- کاربر بر روی ثبت سفارشات جدید کلیک می نماید.
2- سیستم صفحه مربوط به ثبت سفارشات جدید را نمایش می دهد.
3- کاربر اطلاعات مربوط به سفارشات جدید را وارد می نماید.
4- کاربر بر روی کلید ثبت کلیک می نماید.
5- سیستم پیغامی مبنی بر ثبت اطلاعات نمایش می دهد.
6- سیستم جهت اطلاع مدیر فروشگاه ، تمامی سفارشات ثبت شده جدید را به مدیر ارجاع می دهد.
7- سیستم پیغامی بر ارسال ارجاع اطلاعات به مدیر فروشگاه نمایش می دهد.
Constraints: کارمند نمی تواند بدون تائید مدیر ، سفارشات جدید را ارجاع داده یا پیگیری نماید. هر کارمند فقط می تواند سفارشات ارجاع داده شده به خود را مورد بررسی قرار دهد.
Post-Condition:
Alternative Flow: سفارشات رسیده مربوط به فعالیت شرکت نمی باشد بایستی به نحوی به ارسال کننده درخواست سفارش اطلاع داده شود.
شکل4-4نمودارهای USE CASE 3
جدول 4-6 سناریوی Use Case پرداخت وجه
سناریوی شماره 3-1
سیستم سایت
نام: پرداخت وجه صورتحساب
(Pay Bill)
Actor: مشتری
شرح سناریو: در این سناریو ، مشتری پس از دریافت صورتحساب و تائید آن ، نسبت به پرداخت وجه صورتحساب اقدام می نماید.
Assumption: منظور از مشتری در این Use Case در حقیقت افرادی هستند که به عنوان خریداربه فروشگاه مراجعه نموده اند.
Communicate: مشتری
Extended: صفحه اصلی نرم افزار
(Pre-Condition): پس از دریافت تائیدیه و صورتحساب از طرف سیستم ، مشتری اقدام به پرداخت وجه اقلام مربوط به سفارشات می نماید.
مراحل:
Actor
System
1- مشتری بر روی درخواست صورتحساب کلیک می نماید.
2- سیستم صفحه مربوط به تائید تحویل صورتحساب را نمایش می دهد.
3- مشتری صورتحساب خود را دریافت می نماید.
4- مشتری تائیدیه پرداخت وجه را ارائه می دهد.
5- سیستم پس از دریافت تائیدیه آن را بررسی و در صورت صحت اجازه ترخیص سفارش را صادر می نماید.
6- سیستم پیغامی مبنی بر اتمام عملیات پرداخت وجه صورتحساب صادر می نماید.
Constraints: پرداخت وجه ازطریق خود پرداز امکان پذیر است
Post-Condition: پس از دریافت تائیدیه پرداخت توسط مشتری ، مشتری باید بتواند به سفارش و سایر مشخصات مربوط به سفارش درخواستی مورد نظر دسترسی داشته باشد.
Alternative Flow: درصورتی که به هر دلیلی تحویل سفارش به تعبیق افتاد باید به نحوی به مشتری اطلاع داده شود و زمان تحویل سفارش میز به مشتری اعلام شود.
جدول 4-7- سناریوی Use CaseOrder
سناریوی شماره 3-2
سیستم فروشگاه
نام: ارسال سفارش جدید
(Order)
Actor: مشتری
شرح سناریو: در این سناریو ، مشتری سفارش خود را ارائه می دهد و مدیر پس از امکانسنجی ، نتیجه درخواست را به مشتری ارائه می دهد.
Assumption: منظور از مشتری در این Use Case در حقیقت افرادی هستند که به عنوان آگهی دهنده مراجعه نموده اند.
Communicate: مشتری
Extended: صفحه اصلی سایت
(Pre-Condition): مشتری پس از ورود ، سفارش خود را ارائه می دهد و نتیجه امکانسنجی به مشتری ارائه داده می شود.
مراحل:
Actor
System
1- مشتری بر روی سفارش کار جدید کلیک می نماید.
2- سیستم صفحه مربوط به سفارش کار جدید را نمایش می دهد.
3- مشتری سفارش کار خود را درج می نماید و یا مستقیما به فروشگاه ارائه می دهد.
4- سیستم پس از دریافت ، تائیدیه آن را نمایش می دهد.
Constraints: مشتری جهت ارائه سفارش کار باید به یکی از 3 روش حضوری یا ارسال از طریق وب سایت شرکت یا پستی عمل نماید.
Post-Condition:
Alternative Flow: درصورتی که به هر دلیل سفارش ارسال نشد بایستی به مشتری به گونه ای خبر داده شود.
شکل4-5 نمودارهای USE CASE 4
4-8نمودار Class اصلی سیستم
4-8-1نمودار Class مربوط به کاربر
4-8-2 نمودار Class مربوط به مدیر
4-8-3نمودار Class مربوط به آگهی ها ی تبلیغاتی
4-8-4نمودار Class مربوط به بنرهای تبلیغاتی
4-8-5 نمودار Class مربوط به دسته بندی اصناف
4-8-6نمودار Class مربوط به دسته بندی گروههای اصناف
4-8-6نمودار توالی SignIn
4-8-7نمودار توالی Order Register
4-8-8نمودار توالی Group Definition
4-8-10نمودار توالی SignIn
4-8-11نمودار توالی SignOut
4-8-12نمودار همکاری SignIn
4-8-13نمودار همکاریSignUp
4-8-14نمودار همکاری Group Defination
4-8-15نمودار همکاری Asnaf DeFinition
4-8-16نمودار همکاری Sign Out
4-8-17نمودار وضعیتSignUp
4-8-18نمودار وضعیت SignIn
4-8-19نمودار وضعیت SignOut
4-8-20نمودار وضعیت group Definition
4-8-21نمودار وضعیت Orders
فصل پنجم
معرفی نرم افزار طراحی شده
5-1 معرفی UML
UML شامل تعدادی عنصر گرافیکی است که از ترکیب آنها نمودارهای UML شکل می گیرند. هدف استفاده از نمودارهای مختلف در UML، ارائه دیدگاه های گوناگون از سیستم است. همانطور که مهندسین عمران جهت ساختن یک ساختمان پلانهای مختلفی از ساختمان تهیه می کنند، ما با استفاده از نمودارهای UML نماهای مختلفی از نرم افزار مورد نظر را تهیه می کنیم. نکته ای که باید حتماً به آن توجه کنید این است که: مدل UML آنچه که یک سیستم باید انجام دهد را توضیح می دهد، ولی چیزی درباره نحوه پیاده سازی سیستم نمی گوید. با توجه به رشد نرم افزارهای پشتیبانی کننده UML امروزه با استفاده از نرم افزارهایی مانند Visio، Enterprise Architecture و rational rose شما می توانید بعد از کشیدن نمودارهای UML مستقیماً نمودارهای خود را به بانک اطلاعاتی و کد تبدیل کنید (البته این نرم افزارها ساختار کد شما را برایتان تولید می کنند!) این نرم افزارها همچنین کد برنامه شما را گرفته و نمودارهای UML برنامه را تولید می کنند. پس از آشنایی با مفاهیم شیء گرایی، در اینجا زبان مدلسازی UML را معرفی کرده و خواهیم دید چگونه این زبان مفاهیم شیء گرایی را پشتیبانی می کند. [8]
زبان مدل سازی یکنواخت (Languge Unified Modeling)یا UML یک زبان مدل سازی است که برای تحلیل و طراحی سیستم های شی گرا به کار می رود. UML اولین بار توسط شرکت Rational ارائه شد و پس از آن از طرف بسیاری از شرکت های کامپیوتری و مجامع صنعتی و نرم افزاری دنیا مورد حمایت قرار گرفت؛ به طوری که تنها پس از یک سال، توسط گروه Management Group Object، به عنوان زبان مدل سازی استاندارد پذیرفته شد. UML توانایی ها و خصوصیات بارز فراوانی دارد که می تواند به طور گسترده ای در تولید نرم افزار استفاده گردد. در ادامه این مقاله ابتدا به تاریخچه UML و در ادامه به معرفی، ویژگی ها و نمودارهای آن پرداخته می شود. [8]
دیدگاه شی گرایی (Oriented Object) از اواسط دهه 1970 تا اواخر دهه 1980 در حال مطرح شدن بود. در این دوران تلاش های زیادی برای ایجاد روش های تحلیل و طراحی شی گرا صورت پذیرفت. در نتیجه این تلاش ها بود که در طول 5 سال یعنی 1989 تا 1994، تعداد متدلوژی های شی گرا از کمتر از 10 متدولوژی به بیش از 50 متدولوژی رسید. تکثر متدولوژی ها و زبان های شی گرایی و رقابت بین اینها به حدی بود که این دوران به عنوان "دوران جنگ متدولوژی ها" لقب گرفت. [8]
از جمله متدولوژی های پرکاربرد آن زمان می توان از Booch، OOSE، OMT، Fusion، Coad-Yourdan، Shlayer-Mellor و غیره نام برد. فراوانی و اشباع متدولوژی ها و روش های شی گرایی و نیز نبودن یک زبان مدل سازی استاندارد، باعث مشکلات فراوانی شده بود. از یک طرف کاربران از متدولوژی های موجود خسته شده بودند، زیرا مجبور بودند از میان روش های مختلف شبیه به هم که تفاوت کمی در قدرت و قابلیت داشتند یکی را انتخاب کنند. بسیاری از این روشها، مفاهیم مشترک شی گرایی را در قالب های مختلف بیان می کردند که این واگرایی و نبودن توافق میان این زبان ها، کاربران تازه کار را از دنیای شی گرایی زده می کرد و آنها را از این حیطه دور می ساخت. عدم وجود یک زبان استاندارد، برای فروشندگان محصولات نرم افزاری نیز مشکلات زیادی ایجاد کرده بود. [8]
اولین تلاش های استانداردسازی از اکتبر 1994 آغاز شد، زمانی که آقای Rumbaurgh صاحب متدولوژی OMT به آقای Booch در شرکت Rational پیوست و این دو با ترکیب متدولوژی های خود، اولین محصول ترکیبی خود به نام "روش یکنواخت" را ارائه دادند. در سال 1995 بود که با اضافه شدن آقای Jacobson به این دو، روش یکنواخت ارائه شده با روش OOSE نیز ترکیب شد و این خود سبب ارائه UML نسخه 0.9 در سال 1996 گردید. سپس این محصول به شرکتهای مختلفی در سراسر جهان به صورت رایگان ارائه شد و استقبال شدید شرکت ها از این محصول و تبلیغات گسترده شرکت Rational، سبب آن شد که گروه OMG، نسخه 1.0 UML را به عنوان زبان مدل سازی استاندارد خود بپذیرد. تلاشهای تکمیلی UML استاندارد ادامه پیدا کرد و نسخه 1.1 آن در سال 1997 و نسخه 1.3 آن در سال 1999 ارائه گردید. [8]
UML یا زبان مدل سازی یکنواخت، زبانی است برای مشخص کردن (Specify)، مصورسازی (Visualize)، ساخت (Construction) و مستندسازی (Documenting) سیستم های نرم افزاری و غیر نرم افزاری و نیز برای مدل سازی سیستم های تجاری. [8]
ایجاد یک مدل برای سیستم های نرم افزاری قبل از ساخت یا بازساخت آن، به اندازه داشتن نقشه برای ساختن یک ساختمان ضروری و حیاتی است. بسیاری از شاخه های مهندسی، توصیف چگونگی محصولاتی که باید ساخته شوند را ترسیم می کنند و همچنین دقت زیادی می کنند که محصولاتشان طبق این مدلها و توصیف ها ساخته شوند. مدلهای خوب و دقیق در برقراری یک ارتباط کامل بین افراد پروژه، نقش زیادی می توانند داشته باشند. شاید علت مدل کردن سیستم های پیچیده این باشد که تمامی آن را نمی توان یک باره مجسم کرد، بنابراین برای فهم کامل سیستم و یافتن و نمایش ارتباط بین قسمت های مختلف آن، به مدلسازی می پردازیم. UML زبانی است برای مدلسازی یا ایجاد نقشه تولید نرم افزار. به عبارت دیگر، یک زبان، با ارائه یک فرهنگ لغات و یک مجموعه قواعد، امکان می دهد که با ترکیب کلمات این فرهنگ لغات و ساختن جملات، با یکدیگر ارتباط برقرار کنیم. یک زبان مدلسازی، زبانی است که فرهنگ لغات و قواعد آن بر نمایش فیزیکی و مفهومی آن سیستم متمرکزند. برای سیستم های نرم افزاری نیاز به یک زبان مدلسازی داریم که بتواند دیدهای مختلف معماری سیستم را در طول چرخه تولید آن، مدل کند. [8]
فرهنگ واژگان و قواعد زبانی مثل UML به شما می گویند که چگونه یک مدل را بسازید و یا چگونه یک مدل را بخوانید. اما به شما نمی گویند که در چه زمانی، چه مدلی را ایجاد کنید. یعنی UML فقط یک زبان نمادگذاری (Natation) است نه یک متدولوژی. (توضیحات بیشتر در سایر مقالات سایت میکرو رایانه) یک زبان نمادگذاری شامل نحوه ایجاد و نحوه خواندن یک مدل می باشد، اما یک متدولوژی بیان می کند که چه محصولاتی باید در چه زمانی تولید شوند و چه کارهایی با چه ترتیبی توسط چه کسانی، با چه هزینه ای، در چه مدتی و با چه ریسکی انجام شوند. [8]
5-2 معرفی Sqlserver
یک نرم افزار سیستم مدیریت بانک های اطلاعاتی است که توسط شرکت مایکروسافت توسعه داده می شود. برخی از ویژگی های این سیستم مدیریت پایگاه داده ها به این شرح است:
بانک اطلاعاتی رابطه ای
امکان استفاده از stored procedure، view، trigger
پشتیبانی از xml
بسیار قدرتمند و بدون محدودیت حجم و تعداد رکورد
پشتیبانی از fulltext search برای سرعت در بازیابی اطلاعات و استفاده از زبان طبیعی در جستجوها نسخه ی بعدی سرور SQL سرور SQL2008 می باشد با کد نام گذاری "کاتمایی" که برای ارائه به بازار 27 فوریه سال 2008 پیشنهاد گردیده و سپس (rtm) در q32008 عرضه گردید. [9]
آخرین ctp در فوریه سال 2008 عرضه گردید. اهداف SQL Server 2008 ایجاد و مدیریت داده ها به شکل هماهنگی، سازماندهی و محافظت به شکل اتوماتیک می باشد. با توسعه دائمی SQL Server در عرضه تکنولوژی اتلاف وقت به نزدیک صفر رسید. SQL Server 2008 همیشه در برگیرنده حمایت از داده های ساختاری یا نیمه ساختاری می باشد که این امر شامل قالب های رسانه ای دیجیتال برای عکسها، صوتی، تصویری و دیگر داده های چند رسانه ای می باشد. در نسخه ی جدید، اکثر داده های چندرسانه ای را می توان به عنوان (blob بخش بزرگ بانیری) ذخیره سازی کرد. آگاهی درونی از داده های چند رسانه ای به ما این اجازه را خواهد داد که کارکردهای تخصیص یافته را اجرا نماییم. براساس نظرات پل فلس نر، معاون رئیس جمهور، کاربران سرور SQL Server 2008 شرکت مایکروسافت میتواند به ذخیره سازی داده های پشتیبانی شده برای داده هایی با تنوع متفاوت بپردازد XML، پست الکترونیکی (email)، زمان/تقویم، فایل، پرونده … . از جمله داده ها می باشند همین طور SQL Server 2008 به خوبی میتوان به اجرای عملیاتی چون: جستجو، پرس و جو، تجزیه و تحلیل، تقسیم بندی و انطباق همه نوع از داده ها بپردازد. از انواع دیگری از داده هایی جدید میتوان از اختصاص داده ها و نوع های زمانی و نوع هایی از داده های فضایی نام برد که داده های وابسته به مکان می باشند. [9]
پشتیبانی بهتر برای داده های غیرساختاری یا نیمه ساختاری با استفاده از بخش file stream انجام شده است. این نوع از داده ها می توانند اضافه شده یا اینکه برای بازگرفت به هر فایل ذخیره شده، شد سیستم فایل ها به کار رونده داده های منسجم یا فراداده ها در هر فایل باید در پایگاه داده های SQL Server ذخیره شوند. و در آنجا اجزا غیرساختاری در سیستم فایل ذخیره می شوند. اکثر فایل ها می توانند هم از طریق کنترل کننده فایل win32 و هم از طریق SQL Server با استفاده از T-SQL در پایگاه داده ها قرار گیرند. انجام و دستیابی به داده های فایل به عنوان یک blob بانیری محسوب می شود. پشتیبانی و ذخیره سازی در پایگاه داده ها پشتیبانی و ذخیره سازی فایل های مرجع می باشد.
SQL Server 2008 همین طور از سلسله مراتب داده های اصلی پشتیبانی می کند و در برگیرنده ی مفهوم T-SQL می باشد که مستقیماً با آنها سروکار دارد بدون اینکه به تحقیق بازگشتی بپردازد.
داده های فضایی می توانند به دو صورت ذخیره سازی شوند. یک زمین صاف (هندسه یا هندسه مسطح) که نوعی از داده ها می باشند که ارائه دهنده ی داده های هندسی فضایی می باشند و به شکل هایی که رد اصل به صورت سیستم های طراحی کروی و هم پایه و … هستند پیش بینی شده اند. صورت دیگر نوع داده های زمین کروی (هندسی) هستند که به استفاده از مدل های بیضی شکل آنچه که در زمین به صورت منفرد و پیوسته تعریف می شوند، می پردازند. SQL Server در برگیرنده ویژگی های بهتری در زمینه فشردگی و متراکم داده می باشد و بنابراین در بهبود یافتن توانایی اسکالر به ما کمک می کند. این بخش همین طور دارای اقتدار منابع بوده و به ما این اجازه را می دهد که به ذخیره سازی منابع برای کاربران بپردازیم.
SQL Server در بردارنده ی قابلیت هایی برای شفاف سازی داده ها برای فشرده سازی و ذخیره آنها می باشد SQL Server کتمایی از موجودیت ساختار ado.net پشتیبانی کرده و به ثبت ابزارها، همانندسازی و تعریف داده ها می پردازد. تعریف داده ها به ساختن مدل داده های موجود خواهد پرداخت سرویس های ثبت کننده ی SQL Server به ثبت جداول با قابلیت هایی از تطبیق داده ها و تجسم محصولات خواهند پرداخت. [9]
آنچه که به وسیله ی مایکروسافت از مدیریت جانبی حاصل می شود اجازه می دهد که سیاست پیکربندی و محدودیت ها در پایگاه کامل داده ها و جداول مورد اطمینان به طور دستوری ایجاد گردد.
نسخه ی مدیریت استادیو SQL Server شامل SQL Server 2008 می باشد که به پشتیبانی از جستجوگر SQL می پردازد. علاوه بر این به وسیله ctp رایج انتخاب لازم برای تحقیق و بررسی محدود می شود. این امر باعث ساختارهای دیگری از T-SQL در انتشارات بعدی می گردد. SQL Server 2008 به ایجاد پایگاه داده های موجود از طریق بدنه قدرت ویندوز و کاربرد مدیریت در دسترسی می پردازد. بنابراین سرور و همه ی نمونه های پیوسته می توانند به وسیله بدنه ی قدرت ویندوز اداره شوند. [9]
5-3 معرفی Asp.net
ASP.NET فراتر از یک نسخه تکمیل شده در مقایسه با نسخه قبلی خود یعنی ASP کلاسیک است. ASP.NET یک محیط کامل جهت پیاده سازی نرم افزارهای تحت وب است. با اینکه ASP.NET از لحاظ گرامر با ASP کلاسیک شباهت هایی را دارد ولی تکنولوژی فوق با ارائه یک مدل جدید برنامه نویسی بهمراه زیر ساخت های لازم، امکان ایجاد نرم افزارهای تحت وب را با امنیت و استحکام بیشتر فراهم می آورد. [10]
ASP.NET بر خلاف ASP کلاسیک ترجمه می گردد. در محیط دات نت می توان با استفاده از هر یک از زبان های برنامه نویسی حمایت شده نظیر: Jscrip.Net، C#، Visual basic.Net اقدام به نوشتن برنامه ها نمود. برنامه های ASP.NET از تمامی توان و پتانسیل های ارائه شده توسط دات نت استفاده می نمایند. در ASP.NET میتوان از ویرایشگرهای ویژوال و سایر ابزارهای برنامه نویسی نظیر ویژوال استودیو دات نت استفاده نمود. [10]
پیاده کنندگان نرم افزارهای تحت وب به کمک ASP.NET می توانند از دو تکنولوژی عمده فرم های وب (Web Forms) و سرویس های وب (Web service) برای ایجاد نرم افزار استفاده نمایند. [10]
فرم های وب (Web Forms): با استفاده از تکنولوژی فوق میتوان صفحات وب متکی بر فرم های وب قدرتمندی را ایجاد نمود. در زمان ایجاد صفحاتی از این نوع میتوان از کنترل های سرویس دهنده ASP.NET برای ایجاد عناصر معمولی در طراحی رابط کاربر (UI) و برنامه نویسی آنها برای انجام عملیات خاص استفاده نمود. استفاده از کنترل های سرویس دهنده باعث سرعت در امر پیاده سازی فرم های وب خواهد داشت. [10]
سرویس های وب XML، این نوع سرویس ها امکان دستیابی به قابلیت ها و پتانسیل های سرویس دهنده را از راه دور فراهم خواهند کرد. با استفاده از سرویس های فوق میتوان بخش منطق و سیاست های راهبردی نرم افزارها و همچنین دستیابی به داده ها را مدیریت نمود. سرویس های وب XML امکان مبادله داده بین سرویس گیرنده و سرویس دهنده و یا بین دو سرویس دهنده را به وجود می آورد. برای تبادل اطلاعات میتوان از پروتکل های ارتباطی استانداری نظیر http و یا پیام های XML استفاده نمود. نکته قابل توجه در رابطه با سرویس های فوق توانایی هر برنامه (صرف نظر از زبان استفاده شده) و تحت هر نوع سیستم عامل برای استفاده از سرویس های فوق است. [10]
دو مدل فوق قادر به استفاده از تمامی مزایای تکنولوژی های ASP.NET خواهند بود. بدیهی است استفاده از پتانسیل های محیط دات نت نیز در این زمینه وجود دارد. در ادامه به برخی از این ویژگی های ASP.NET اشاره می گردد. [10]
اگر دارای تجاربی در زمینه پیاده سازی نرم افزارهای تحت وب به کمک تکنولوژی ASP باشید، در اولین نگاه به ASP.NET حتماً متوجه برخی شباهت های موجود خواهید شد. البته مدل اشیاء ASP.NET به صورت کاملاً آشکار با ASP کلاسیک تفاوت داشته و میتوان این ادعا را داشت که ASP.NET به مراتب ساخت یافته تر و شی گرا تر شده است. با توجه به مسئله فوق می بایست به این نکته نیز اشاره گردد که ASP.NET با ASP کلاسیک به طور کامل سازگار نبوده و تقریباً تمامی صفحات ASP موجود مجبور خواهند بود شاهد برخی تغییرات باشند تا امکان اجرای آنان تحت ASP.NET فراهم گردد. یکی دیگر از تغییرات مهم در این زمینه، وجود Visual Basic.NET است. در صفحات ASP فعلی از VBscript استفاده شده است که به نوعی این زبان در دات نت مورد توجه قرار نگرفته و VisualBasic.NET جایگزین شده است. [10]
دستیابی به بانک های اطلاعاتی از طریق برنامه های ASP.NET به عنوان یک نیاز اساسی برای اغلب برنامه های تحت وب مورد توجه خاص قرار گرفته است. در این راستا ASP.NET امکانات بیشتر و به مراتب راحت تر از لحاظ به کارگیری را پیش بینی کرده است و حتی امکان مدیریت بانک اطلاعاتی از طریق کدهای نوشته شده نیز وجود خواهد داشت. [10]
ASP.NET با ارائه یک مدل ساده به پیاده کنندگان نرم افزارهای تحت وب این امکان را خواهد داد که منطق برنامه های خود را نوشته و آنها را در سطح Application اجرا نمایند. کدهای فوق را میتوان در یک فایل متنی با نام Global.asax و یا در یک کلاس کمپایل شده که به عنوان یک اسمبلی به کار گرفته می شود، استفاده نمود. [10]
ASP.NET امکانات لازم برای دستیابی به State Application و Session state را ارائه نموده است. [10]
برای پیاده کنندگان حرفه ای تر که قصد استفاده از API را دارند (ISAPI رابط برنامه نویسی است که در نسخه قبلی ASP از آن استفاده می گردید) رابط های جدیدتر و کامل تری را با نام IHttpheandler و IHttpmodule را ارائه نموده است. [10]
ASP.NET از امکانات و پتانسیل های موجود در دات نت و CLR به منظور افزایش کارائی برنامه ها به خوبی استفاده می نماید. تمامی کدهای ASP.NET ترجمه می گردنند (تفسیر نمی گردنند) در ASP.NET میتوان ماژول هایی را که ارتباطی با برنامه ندارند حذف نمود (ASP.NETfactorable). از سرویس های پیشرفته Caching برای افزایش سرعت و کارائی برنامه ها به خوبی استفاده می نماید.ASP.NET به همراه یک شمارنده برای سنجش میزان کارائی عملکرد برنامه ها، ارائه شده است. شمارنده فوق این امکان را فراهم می آورد که پیاده کنندگان و مدیران سیستم یک برنامه دات نت، عملکرد شاخص های لازم برای افزایش کارائی برنامه ها را مشاهده، بررسی و در صورت لزوم تجدید نظرهای لازم را اعمال نمایند. [10]
اشکال زدایی برنامه های نوشته ASP.NET به کمک دیباگر به راحتی انجام خواهد گرفت. در این حالت میتوان با افزودن چندین خط دیباگ در یک صفحه وب نقطه بروز اشکال را به سرعت و به سادگی تشخیص و در نهایت برطرف نمود. ASP.NET در این راستا کلاس جدیدی با نام TraceContext را ارائه نموده که پیاده کنندگان در زمان نوشتن برنامه، قادر به درج دستورات خاص دیباگ در برنامه برای ردیابی خطاهای احتمالی خواهند بود. دستورات فوق صرفاً در زمانی که امکان Tracing فعال شده باشد (برای یک صفحه وب و برای تمام برنامه)، اجرا خواهند شد. [10]
دات نت و ASP.NET دارای امکانات لازم برای Authorizating و Authentication مناسب برای برنامه های تحت وب می باشند. امکانات فوق را میتوان به سادگی اضافه و یا با سایر مدل های موجود و مورد نظر جایگزین نمود. [10]
مقادیر مربوط به تنظیمات و پیکربندی برنامه های ASP.NET در فایل های XML ذخیره می گردنند با توجه به ماهیت فایل هایی از این نوع خواندن و نوشتن درون آنها به سادگی انجام خواهد یافت. هر برنامه می تواند دارای یک پیکربندی مجزا بوده که در ادامه حیات برنامه و با توجه به نیازهای مطرح شده اعمال تغییرات به سادگی انجام خواهد گرفت. [10]
برنامه های ASP.NET همانند سایر برنامه های تحت وب از مجموعه ای فایل با نوع های متفاوت و دایرکتوری تشکیل می گردند. این فایل ها میتوانند صفحات ASP.NET، کنترل های کاربر (User Controls)، فایل های سرویس های وب و فایل های تنظیمات و پیکربندی و اسمبلی باشند. [10]
در طراحی وب سایت شرکت بیا تبلیغ از تکنولوژی شی گرایی و برنامه نویسی چند لایه استفاده شده است که در ادامه به مفاهیم کلاس و برنامه شی گرایی می پردازیم.
شکستن یک مسئله بزرگ به تعدادی مسئله کوچک تر راهکار موثری برای حل آن است. این امر در برنامه نویسی نیز که هدف آن چیزی جز حل یک مسئله نیست همواره مورد توجه بوده است. به همین دلیل روش هایی که به کمک آنها بتوان یک برنامه بزرگ را به قطعات کوچکتری تقسیم کرد تا هر قطعه کد مسئول انجام کار خاصی باشد بیشتر به زبان های برنامه نویسی اضافه شده اند. یکی از این ساختارها تابع (Function) نام دارد. برنامه ای که از توابع برای تقسیم کدهای برنامه استفاده می کند یک برنامه ساخت یافته می گوییم. [11]
در حقیقت دنیای ما را تشکیل داده اند و فعالیت های روزمره ما با استفاده از آن ها صورت می گیرد. ایده ای به ذهنمان رسید. اشیاء و مفاهیم مرتبط به آن می تواند روش بهتر و موثرتری برای تقسیم کدهای برنامه باشد. مثلاً اگر کل کدهای برنامه که مسئول حل یکی از مسئله های کوچک یاد شده است را یکجا بسته بندی کنیم و اصولی که از اشیاء واقعی پیرامون خود آموختیم را در مورد آن رعایت کنیم به برنامه بسیار با کیفیت تری از نظر خوانایی، راحتی در توسعه، اشکال زدایی ساده تر و بسیاری موارد دیگر خواهیم رسید.
توسعه دهندگان زبان های برنامه نویسی که با ما در این مورد هم عقیده بوده اند دست به کار شده و دستورات و ساختار های لازم برای پیاده کردن این ایده را در زبان برنامه نویسی قرار دادند و آن را زبان برنامه نویسی شیء گرا نامیدند. حتی جهت برخورداری از قابلیت استفاده مجدد از کد و موارد دیگر به جای آنکه کدها را در بسته هایی به عنوان یک شیء خاص قرار دهیم آن ها را در بسته هایی به عنوان قالب یا نقشه ساخت اشیاء خاصی که در ذهن داریم قرار می دهیم. یعنی مفهوم کلاس یا رده که پیشتر اشاره شد. به این ترتیب یک بار می نویسیم و بارها استفاده می کنیم.. هر زمان که لازم باشد با استفاده از دستورات مربوطه از روی کدهای کلاس که نقشه یا قالب ساخت اشیاء هستند شیء مورد نظر را ساخته و در جهت حل مسئله مورد نظر به کار می بریم.[11]
حال برای آنکه به طور عملی بتوانیم از ایده شیء گرایی در برنامه هایمان استفاده کنیم و مسائل بزرگ را حل کنیم لازم است ابتدا مقداری با جزییات و دستورات زبان در این مورد آشنا شویم.
تذکر: دقت کنید برای آنکه از ایده شیء گرایی در برنامه ها حداکثر استفاده را ببریم مفاهیمی در مهندسی نرم افزار به آن اضافه شده است که ممکن است در دنیای واقعی نیازی به طرح آن ها نباشد.[www.msdn.com]
5-4تشخیص و تعریف کلاس های برنامه
طبق موجودیت های شناخته شده برای طراحی وب سایت شرکت بیا تبلیغ ما چند نوع موجودیت داشته ایم که همان موجودیت ها را بعنوان کلاس در نظر میگیریم.[www.msdn.com]
برای تعریف کلاس باید به نکاتی توجه داشت که عبارتند از :
* کلاس با کلمه کلیدی class تعریف می شود.[www.msdn.com]
* همان طور که مشاهده می کنید تعریف کلاس با کلمه public آغاز شده است. این کلمه محدوده دسترسی به کلاس را تعیین می کند. در اینجا از کلمه public استفاده کردیم تا بخش های دیگر برنامه امکان استفاده از این کلاس را داشته باشند.[www.msdn.com]
* پس از کلمه کلیدی class نوبت به نام کلاس می رسد. اگرچه انتخاب نام مورد نظر امری اختیاری است اما در آینده حتماً اصول و قراردادهای نام گذاری در دات نترا مطالعه نمایید. در حال حاضر حداقل به خاطر داشته باشید تا انتخاب نامی مناسب که گویای کاربرد کلاس باشد بسیار مهم است.
* باقیمانده کد، بدنه کلاس را تشکیل می دهد. جاییکه ویژگی ها، رفتار ها و … یا به طور کلی اعضای کلاس تعریف می شوند.[www.msdn.com]
نکته: کلماتی مانند public که پیش از تعریف کلاس یا اعضای آن قرار می گیرند Modifier یا پیراینده نام دارند. که البته به نظر من ترجمه این گونه واژه ها از کارهای شیطان است. بنابراین از این پس بهتر است همان Modifier را به خاطر داشته باشید. از آنجا که public مدیفایری است که سطح دسترسی را تعیین می کند به آن یک Access Modifier می گویند. در یک بخش از این سری مقالات تمامی مدیفایرها بررسی خواهند شد.[www.msdn.com]
حال به جگونگی تعریف classها درضمیمه 1 دقت کنید.
5-5تعریف فیلدهای کلاس Advertisement
به متغیرهایی از هر نوع که مستقیماً درون کلاس تعریف شوند (و نه مثلاً داخل یک تابع درون کلاس) فیلد می گوییم. فیلدها از اعضای کلاس دربردارنده آن ها محسوب می شوند.تعریف فیلدها مستقیماً در بدنه کلاس با یک Access Modifier شروع می شود و به دنبال آن نوع فیلد و سپس نام دلخواه برای فیلد می آید.[www.msdn.com]
تذکر:نامگذاری مناسب یکی از مهمترین اصولی است که یک برنامه نویس باید همواره به آن توجه کافی داشته باشد و به شدت در بالا رفتن کیفیت برنامه موثر است. به خاطر داشته باشید تنها اجرا شدن و کار کردن یک برنامه کافی نیست. رعایت بسیاری از اصول مهندسی نرم افزار که ممکن است نقش مستقیمی در کارکرد برنامه نداشته باشند موجب سهولت در نگهداری و توسعه برنامه شده و به همان اندازه کارکرد صحیح برنامه مهم هستند.فیلد های کلاس Advertisement به شرح ضمیمه 2 خواهد بود .
5-6تعریف پروپرتی های کلاس Advertisement
در این کلاس برای نگهداری حالت اشیائی که از روی آن ایجاد خواهند شد از متغیرهایی با سطح دسترسی عمومی استفاده شده است. این متغیرهای عمومی فیلد نامیده می شوند. مشکل این است که با این تعریف، اشیاء نمی توانند هیچ اعتراضی به مقادیر غیر معتبری که ممکن است به آن ها اختصاص داده شود، داشته باشند. به عبارت دیگر هیچ کنترلی بر روی مقادیر فیلدها وجود ندارد. مثلاً ممکن است یک مقدار منفی به فیلد طول اختصاص یابد. حال آنکه طول منفی معنایی ندارد.
تذکر: ممکن است این سوال پیش بیاید که خوب ما کلاس را نوشته ایم و خودمان می دانیم چه مقادیری برای فیلدهای آن مناسب است. اما مسئله اینجاست که اولاً ممکن است کلاس تهیه شده توسط برنامه نویس دیگری مورد استفاده قرار گیرد. یا حتی پس از مدتی فراموش کنیم چه مقادیری برای کلاسی که مدتی قبل تهیه کردیم مناسب است. و از همه مهمتر این است که کلاس ها و اشیاء به عنوان ابزاری برای حل مسائل هستند و ممکن است مقادیری که به فیلدها اختصاص می یابد در زمان نوشتن برنامه مشخص نباشد و در زمان اجرای برنامه توسط کاربر یا کدهای بخش های دیگر برنامه تعیین گردد.[www.msdn.com]
به طور کلی هر چه کنترل و نظارت بیشتری بر روی مقادیر انتسابی به اشیاء داشته باشیم برنامه بهتر کار می کند و کمتر دچار خطاهای مهلک و بدتر از آن خطاهای منطقی می گردد. بنابراین باید ساز و کار این نظارت را در کلاس تعریف نماییم.
برای کلاس ها یک نوع عضو دیگر هم می توان تعریف کرد که دارای این ساز و کار نظارتی است. این عضو Property نام دارد و یک مکانیسم انعطاف پذیر برای خواندن، نوشتن یا حتی محاسبه مقدار یک فیلد خصوصیفراهم می نماید.
تا اینجا باید به این نتیجه رسیده باشید که تعریف یک متغیر با سطح دسترسی عمومی در کلاس روش پسندیده و قابل توصیه ای نیست. بنابراین متغیرها را در سطح کلاس به صورت خصوصی تعریف می کنیم و از طریق تعریفPropertyامکان استفاده از آن ها در بیرون کلاس را ایجاد می کنیم.
حال به چگونگی تعریفProperty ها در ضمیمه 3 دقت کنید.[www.msdn.com]
5-7تعریف متد های کلاس Advertisemet
متدها قطعه کدهایی شامل یک سری دستور هستند. این مجموعه دستورات با فراخوانی متد و تعیین آرگومان های مورد نیاز اجرا می شوند. در زبان سی شارپ به نوعی تمام دستورات در داخل متدها اجرا می شوند. در این زبان تمامی توابع در داخل کلاس ها تعریف می شوند و بنابراین همه متد هستند.
متدها نیز مانند فیلد ها در داخل کلاس تعریف می شوند. ابتدا یک Access Modifier سطح دسترسی را تعیین می نماید. سپس به ترتیب نوع خروجی، نام متد و لیست پارامترهای آن در صورت وجود درج می شود. به مجموعه بخش های یاد شده امضای متد می گویند.پارامترهای یک متد داخل یک جفت پرانتز قرار می گیرند و با کاما (,) از هم جدا می شوند. یک جفت پرانتز خالی نشان دهنده آن است که متد نیاز به هیچ پارامتری ندارد.[www.msdn.com]
حال به چگونگی تعریف methode ها در ضمیمه 4 دقت کنید.
5-8 فرم های طراحی شده سایت شرکت بیا تبلیغ
اساس کار سایت شرکت بیا تبلیغ بدین گونه است که کاربرابتدا باید در سایت ثبت نام کند بعد از ثبت نام از طریق فرم ورود کاربران با وارد کردن یوزر نیم و پسورد وارد کنترل پنل خود شده و میتواند بر طبق تعرفه های سایت آگهی یا بنر خود را درج کند پس از پرداخت وجه و تایید آگهی توسط مدیر سایت آگهی کاربر در سایت نمایش داده میشود .
شکل 5-8-1 صفحه اصلی سایت شرکت بیا تبلیغ
زمانی که آگهی کاربری توسط مدیر سایت تایید شود آگهی بنا به درخواست کاربر در سایت نمایش داده میشود که در شکل 12-1 نشان داده شده است .
برای درج آگهی در سایت کاربر ابتدا باید در سایت ثبت نام کند شکل زیر فرم ثبت نام سایت شرکت بیا تبلیغ را نشان میدهد .
شکل5-8-2 فرم ثبت نام کاربران در سایت شرکت بیا تبلیغ
بعد از ثبت نام در سایت کاربر باید به سایت شرکت لاگین کند تا بتواند آگهی مورد نظر خود را در سایت درج نماید .
شکل 5-8-3 فرم ورود کاربران به سایت شرکت بیا تبلیغ
بعد از اینکه کاربر یوزر نیم و پسورد خود را وارد نمود میتواند وارد کنترل پنل خود شده و آگهی خود را درج نماید .
شکل 5-8-4 فرم کنترل پنل کاربران سایت شرکت بیا تبلیغ
بعد از اینکه کاربر وارد کنترل پنل خود شد می تواند حساب کاربری آگهی ها بنر ها و فیش های پرداختی خود را مدیریت نماید .
کاربر با کلیک بر روی لینک درج آگهی می تواند یک آگهی جدید درج نماید که در شکل زیر نشان داده شده است .
شکل 5-8-5 فرم درج آگهی در سایت شرکت بیا تبلیغ
همینطور با کلیک بر روی لینک درج بنر می تواند بنر های خود را درج نماید
شکل 5-8-6 فرم درج بنر تبلیغاتی در سایت شرکت بیا تبلیغ
بعد از اینکه کاربر آگهی یا بنر خود را درج کرد در قسمت ثبت فیش بانکی باید فیش پرداختی خود را وارد نماید
شکل5-8-7 فرم پرداخت فیش بانکی
بعد از ثبت فیش بانکی کاربر باید منتظر بماند تا آگهی یا بنر درج شده در سایت نمایش داده شود که این قسمت باید به تایید مدیر سایت برسد .
از طریق فرم زیر مدیر وارد صفحه مدیریت میشود و می تواند قسمت های مختلف سایت را مدیریت نماید
شکل 5-8-8 فرم ورود مدیر به سایت شرکت بیا تبلیغ
بعد از ورود به کنترل پنل مدیر می تواند آگهی ها و بنر های ثبت شده را مدیریت نماید
شکل 5-8-9 فرم کنترل پنل مدیریت سایت
شکل 5-8-10 فرم مدیریت آگهی ها توسط مدیر
شکل 5-8-11 فرم مدیریت کاربران توسط مدیر سایت
شکل 5-8-12-فرم مدیریت گروه ها
نتیجه گیری
تبلیغات الکترونیکی باید به عنوان مقوله ای لازم وضروری در بازارهای الکترونیکی موردتوجه قرار گیرد.وب سایت ها باید به دنبال روش های جذب توجه کاربراناینترنتی به خود باشند و تبلیغات خود را در صفحات ابتدایی وب سایت(صفحه اصلی) قراردهندو به این نکته توجه کنند که صفحات مبتنی بر ویدیو و تصویر از بازدیدکننده های بیشتری برخوردارند.همچنین تبلیغات در جهت ایجاد مزیت رقابتی در بنگاه ها تاثیر بسزایی دارند وباید موردتوجه قرار گیرند.
پیشنهادات
با توجه به رشد وپیشرفت سریع اینترنت و تورجهان گستر وب و پیشرفت تبلیغات در دنیای اینترنت وب سایت های تبلیغاتی هنوز به جایگاه خود در اینترنت نرسیده اند واین ضعف وب سایت های تبلیغاتی کاملا محسوس میباشد.بنابراین وجود وب سایت های کامل وجامع در این زمینه کاملا ضروری و واجب است که به نظر بنده تبلیغات جامع تر میتواند در رشد وبهبود این امر موثر واقع گردد.
فهرست منابع
-وب سایت www.aghahi.com{1}
– وب سایت Error! Hyperlink reference not valid.
– وب سایت www.mashhadtabligh.com{3}
– وب سایت www.asbazar.com{4}
– وب سایت www.dotnettips.net{5}
– کتاب برنامه نویسی به زبان asp.net نوشته استفان والتر {6}
– کتاب برنامه نویسی به زبان C# عاطفه شیجونی {7}
-وب سایت www.microrayaneh.com {8}
-وب سایت ./http://blogiranhost.com{9}
-وب سایت http://srco.ir/:{10}
– وب سایت www.msdn.com{11}
ضمایم
1-ساختار کلاس
publicclassAdvertisement
{
private Advertisement(System.Data.IDataReader dr)
{
this._id = (int)dr["ID"];
this._userID = (int)dr["UserID"];
this._groupID = (int)dr["GroupID"];
this._subGroupID = (int)dr["SubGroupID"];
this._title = (string)dr["Title"];
this._type = (string)dr["Type"];
this._description = (string)dr["Description"];
this._keyWord = (string)dr["KeyWord"];
this._credit = (string)dr["Credit"];
this._link = (string)dr["Link"];
this._webSite = (string)dr["WebSite"];
this._rank = (int)dr["Rank"];
this._rankStar = (string)dr["RankStar"];
this._showContact = (bool)dr["ShowContact"];
this._image = (string)dr["Image"];
this._active = (bool)dr["Active"];
this._price = (string)dr["Price"];
this._date = (DateTime)dr["Date"];
this._hit = (int)dr["Hit"];
this._position = (string)dr["Position"];
this._ip = (string)dr["Ip"];
this._enabled = (bool)dr["Enabled"];
this._expiredDate = (DateTime)dr["ExpiredDate"];
this._firstName= (string)dr["FirstName"];
this._lastName = (string)dr["LastName"];
this._telPhone = (string)dr["TelPhone"];
}
#endregion Constractors
{
2-ساختار فیلد
#region Fields
privateint _id;
privateint _userID;
privateint _groupID;
privateint _subGroupID;
privatestring _title;
privatestring _type;
privatestring _description;
privatestring _keyWord;
privatestring _credit;
privatestring _link;
privatestring _webSite;
privateint _rank;
privatestring _rankStar;
privatebool _showContact;
privatestring _image;
privatebool _active;
privatestring _price;
privateDateTime _date;
privateint _hit;
privatestring _position;
privatestring _ip;
privatebool _enabled;
privateDateTime _expiredDate;
privatestring _firstName;
privatestring _lastName;
privatestring _telPhone;
#endregion Fields
3-ساختار پروپرتی
#region Properties
publicint Id
{
get { return _id; }
}
publicint UserID
{
get { return _userID; }
}
publicint GroupID
{
get { return _groupID; }
}
publicint SubGroupID
{
get { return _subGroupID; }
}
publicstring Title
{
get { return _title; }
}
publicstring Type
{
get { return _type; }
}
publicstring Description
{
get { return _description; }
}
publicstring KeyWord
{
get { return _keyWord; }
}
publicstring Credit
{
get { return _credit; }
}
publicstring Link
{
get { return _link; }
}
publicstring WebSite
{
get { return _webSite; }
}
publicint Rank
{
get { return _rank; }
}
publicstring RankStar
{
get { return _rankStar; }
}
publicbool ShowContact
{
get { return _showContact; }
}
publicstring Image
{
get { return _image; }
}
publicbool Active
{
get { return _active; }
}
publicstring Price
{
get { return _price; }
}
publicDateTime Date
{
get { return _date; }
}
publicint Hit
{
get { return _hit; }
}
publicstring Position
{
get { return _position; }
}
publicstring Ip
{
get { return _ip; }
}
publicbool Enabled
{
get { return _enabled; }
}
publicDateTime ExpiredDate
{
get { return _expiredDate; }
}
publicstring FirstName
{
get { return _firstName; }
}
publicstring LastName
{
get { return _lastName; }
}
publicstring TelPhone
{
get { return _telPhone; }
}
publicstring activeToString
{
get
{
if (Active)
return"بله";
else
return"خیر";
}
}
publicstring enabledToString
{
get
{
if (Enabled)
return"ثبتشده";
else
return" دردستبررسی";
}
}
publicstring DateToString
{
get
{
System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar();
return pc.GetYear(Date).ToString() + "/" + pc.GetMonth(Date).ToString() + "/" + pc.GetDayOfMonth(Date).ToString();
}
}
publicstring ExpiredDateToString
{
get
{
System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar();
return pc.GetYear(ExpiredDate).ToString() + "/" + pc.GetMonth(ExpiredDate).ToString() + "/" + pc.GetDayOfMonth(ExpiredDate).ToString();
}
}
publicstring DescriptionToString
{
get
{
return Description;
}
}
#endregion Properties
4-ساختار متدها
#region Methodes
///<summary>
/// Creates a new Advertisement.
///</summary>
///<returns>The ID of Advertisement in the table.</returns>
این متد برای درج یک آگهی در داخل تی بل Advertisement استفاده میشود .
publicstaticint Create(int userID, int groupID, int subGroupID, string title, string type, string description, string keyWord, string credit, string link, string webSite,
int rank, string rankStar, bool showContact, string image, bool active, string price, DateTime date, int hit, string position, string ip, bool enabled)
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Advertisement_Create", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@UserID", ADS.Normalize.ForDB(userID));
command.Parameters.AddWithValue("@GroupID", ADS.Normalize.ForDB(groupID));
command.Parameters.AddWithValue("@SubGroupID", ADS.Normalize.ForDB(subGroupID));
command.Parameters.AddWithValue("@Title", ADS.Normalize.ForDB(title));
command.Parameters.AddWithValue("@Type", ADS.Normalize.ForDB(type));
command.Parameters.AddWithValue("@Description", ADS.Normalize.ForDB(description));
command.Parameters.AddWithValue("@KeyWord", ADS.Normalize.ForDB(keyWord));
command.Parameters.AddWithValue("@Credit", credit);
command.Parameters.AddWithValue("@Link", ADS.Normalize.ForDB(link));
command.Parameters.AddWithValue("@WebSite", ADS.Normalize.ForDB(webSite));
command.Parameters.AddWithValue("@Rank", ADS.Normalize.ForDB(rank));
command.Parameters.AddWithValue("@RankStar", ADS.Normalize.ForDB(rankStar));
command.Parameters.AddWithValue("@ShowContact", ADS.Normalize.ForDB(showContact));
command.Parameters.AddWithValue("@Image", ADS.Normalize.ForDB(image));
command.Parameters.AddWithValue("@Active", ADS.Normalize.ForDB(active));
command.Parameters.AddWithValue("@Price", ADS.Normalize.ForDB(price));
command.Parameters.AddWithValue("@Date", date);
command.Parameters.AddWithValue("@Hit", ADS.Normalize.ForDB(hit));
command.Parameters.AddWithValue("@Position", ADS.Normalize.ForDB(position));
command.Parameters.AddWithValue("@Ip", ADS.Normalize.ForDB(ip));
command.Parameters.AddWithValue("@Enabled", ADS.Normalize.ForDB(enabled));
//if (expireDate == null)
// command.Parameters.AddWithValue("@ExpireDate", DBNull.Value);
//else
// command.Parameters.AddWithValue("@ExpireDate", expireDate.Value);
SqlParameter sqlParameterID = newSqlParameter("@ReturnValue", SqlDbType.Int);
sqlParameterID.Direction = ParameterDirection.ReturnValue;
command.Parameters.Add(sqlParameterID);
connection.Open();
command.ExecuteNonQuery();
return (int)sqlParameterID.Value;
}
}
}
///<summary>
/// Deletes an existing Advertisement.
///</summary>
///<param name="id">The id of the Advertisement to delete.</param>
///<exception cref="InvalidOperationException">ID does not match in the table.</exception>
این متد برای حذف یک رکورد از داخل تی بل Advertisementاستفاده میشود [www.msdn.com]
publicstaticvoid Delete(int id)
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Advertisement_Delete", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@ID", id);
connection.Open();
if (command.ExecuteNonQuery() != 1)
thrownewInvalidOperationException();
}
}
}
///<summary>
/// Gets an existing Advertisement that specified by id
///</summary>
///<param name="id">The id of the Contact to get.</param>
///<returns>A Advertisement that has specified id.</returns>
///<exception cref="InvalidOperationException">ID does not match in the table.</exception>
از این متد برای بازیابی اطلاعات یک رکورد از تی بل استفاده میشود [www.msdn.com]
publicstaticAdvertisement Get(int id)
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Advertisement_Get", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@ID", id);
connection.Open();
using (SqlDataReader dr = command.ExecuteReader(CommandBehavior.CloseConnection | CommandBehavior.SingleRow))
{
if (dr.Read())
returnnewAdvertisement(dr);
else
thrownewInvalidOperationException();
}
}
}
}
///<summary>
/// Sets an existing Advertisement that specified by id.
///</summary>
///<param name="id">The id of the Contact to set.</param>
///<exception cref="InvalidOperationException">ID does not match in the table.</exception>
از این متد برای ویرایش یک رکورد استفاده میشود .[www.msdn.com]
publicstaticvoid Set(int id, int userID, int groupID, int subGroupID, string title, string type, string description, string keyWord, string credit, string link,
int rank, string rankStar, bool showContact, string image, bool active, string price, string position)
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Advertisement_Set", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@ID", ADS.Normalize.ForDB(id));
command.Parameters.AddWithValue("@UserID", ADS.Normalize.ForDB(userID));
command.Parameters.AddWithValue("@GroupID", ADS.Normalize.ForDB(groupID));
command.Parameters.AddWithValue("@SubGroupID", ADS.Normalize.ForDB(subGroupID));
command.Parameters.AddWithValue("@Title", ADS.Normalize.ForDB(title));
command.Parameters.AddWithValue("@Type", ADS.Normalize.ForDB(type));
command.Parameters.AddWithValue("@Description", ADS.Normalize.ForDB(description));
command.Parameters.AddWithValue("@KeyWord", ADS.Normalize.ForDB(keyWord));
command.Parameters.AddWithValue("@Credit", ADS.Normalize.ForDB(credit));
command.Parameters.AddWithValue("@Link", ADS.Normalize.ForDB(link));
command.Parameters.AddWithValue("@Rank", ADS.Normalize.ForDB(rank));
command.Parameters.AddWithValue("@RankStar", ADS.Normalize.ForDB(rankStar));
command.Parameters.AddWithValue("@ShowContact", ADS.Normalize.ForDB(showContact));
command.Parameters.AddWithValue("@Image", ADS.Normalize.ForDB(image));
command.Parameters.AddWithValue("@Active", ADS.Normalize.ForDB(active));
command.Parameters.AddWithValue("@Price", ADS.Normalize.ForDB(price));
command.Parameters.AddWithValue("@Position", ADS.Normalize.ForDB(position));
connection.Open();
if (command.ExecuteNonQuery() != 1)
thrownewInvalidOperationException();
}
}
}
publicstaticvoid SetHit(int id)
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Advertisement_SetHit", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@ID", id);
connection.Open();
if (command.ExecuteNonQuery() != 1)
thrownewInvalidOperationException();
}
}
}
از این متد برای تایید یک آگهی که توسط کاربر ثبت شده است استفاده میشود که مدیر بهنگام نمایش لیست آگهی ها این کار را انجام میدهد[www.msdn.com]
publicstaticvoid Verify(int id, bool enabled)
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Sp_Advertisement_Verify", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@ID", id);
command.Parameters.AddWithValue("@Enabled", enabled);
connection.Open();
if (command.ExecuteNonQuery() != 1)
thrownewInvalidOperationException();
}
}
}
///<summary>
/// Sets an existing Advertisement that specified by id.
///</summary>
///<param name="id">The id of the Contact to set.</param>
///<exception cref="InvalidOperationException">ID does not match in the table.</exception>
از این متد برای آپلود عکس آگهی استفاده میشود .[www.msdn.com]
publicstaticvoid SetImage(int id, string image)
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Advertisement_SetImage", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@ID", id);
command.Parameters.AddWithValue("@Image", image);
connection.Open();
if (command.ExecuteNonQuery() != 1)
thrownewInvalidOperationException();
}
}
}
///<summary>
/// Lists an array of existing Advertisement that specified by accountID.
///</summary>
///<param name="accountID">The categoryID of the Advertisement to list.</param>
///<returns>The array of Advertisement.</returns>
از این متد برای نمایش لیست آگهی ها استفاده میشود.[www.msdn.com]
publicstaticAdvertisement[] List()
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Advertisement_List", connection))
{
command.CommandType = CommandType.StoredProcedure;
connection.Open();
using (SqlDataReader dr = command.ExecuteReader())
{
System.Collections.Generic.List<Advertisement> list = new System.Collections.Generic.List<Advertisement>();
while (dr.Read())
list.Add(newAdvertisement(dr));
return list.ToArray();
}
}
}
}
///<summary>
/// Lists an array of existing Advertisement that specified by accountID.
///</summary>
///<param name="accountID">The categoryID of the Advertisement to list.</param>
///<returns>The array of Advertisement.</returns>
از این متد برای نمایش لیست آگهی های ثبت شده توسط کاربر استفاده میشود که فقط توسط مدیر سایت قابل دیدن است.[www.msdn.com]
publicstaticAdvertisement[] ListForAdmin()
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Sp_Advertisement_ListForAdmin", connection))
{
command.CommandType = CommandType.StoredProcedure;
connection.Open();
using (SqlDataReader dr = command.ExecuteReader())
{
System.Collections.Generic.List<Advertisement> list = new System.Collections.Generic.List<Advertisement>();
while (dr.Read())
list.Add(newAdvertisement(dr));
return list.ToArray();
}
}
}
}
///<summary>
/// Lists an array of existing Advertisement that specified by accountID.
///</summary>
///<param name="accountID">The categoryID of the Advertisement to list.</param>
///<returns>The array of Advertisement.</returns>
از این متد برای نمایش تمام آگهی های سایت چه منقضی شده چه منقضی نشده استفاده میشود .[www.msdn.com]
publicstaticAdvertisement[] ListAllAdsForAdmin()
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Sp_Advertisement_ListAllAdsForAdmin", connection))
{
command.CommandType = CommandType.StoredProcedure;
connection.Open();
using (SqlDataReader dr = command.ExecuteReader())
{
System.Collections.Generic.List<Advertisement> list = new System.Collections.Generic.List<Advertisement>();
while (dr.Read())
list.Add(newAdvertisement(dr));
return list.ToArray();
}
}
}
}
///<summary>
/// Lists an array of existing Advertisement that specified by accountID.
///</summary>
///<param name="accountID">The categoryID of the Advertisement to list.</param>
///<returns>The array of Advertisement.</returns>
از این متد برای نمایش لیست آگهی ها بر اساس گروه بندی آگهی ها استفاده میشود [www.msdn.com].
publicstaticAdvertisement[] List(int subGroupID)
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Advertisement_ListBySubGroupID", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@SubGroupID", subGroupID);
connection.Open();
using (SqlDataReader dr = command.ExecuteReader())
{
System.Collections.Generic.List<Advertisement> list = new System.Collections.Generic.List<Advertisement>();
while (dr.Read())
list.Add(newAdvertisement(dr));
return list.ToArray();
}
}
}
}
publicstaticAdvertisement[] List(int subGroupID, string type)
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Sp_Advertisement_ListByTypeAndSubGroup", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@SubGroupID", subGroupID);
command.Parameters.AddWithValue("@Type", type);
connection.Open();
using (SqlDataReader dr = command.ExecuteReader())
{
System.Collections.Generic.List<Advertisement> list = new System.Collections.Generic.List<Advertisement>();
while (dr.Read())
list.Add(newAdvertisement(dr));
return list.ToArray();
}
}
}
}
///<summary>
/// Lists an array of existing Advertisement that specified by accountID.
///</summary>
///<param name="accountID">The categoryID of the Advertisement to list.</param>
///<returns>The array of Advertisement.</returns>
از این متد برای جستجو بر روی لیست آگهی ها استفاده میشود
publicstaticAdvertisement[] ListSearch(int userID, string title, string keyWord, string description)
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Sp_Advertisement_ListSearch", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@UserID", userID);
command.Parameters.AddWithValue("@Title", title);
command.Parameters.AddWithValue("@KeyWord", keyWord);
command.Parameters.AddWithValue("@Description", description);
connection.Open();
using (SqlDataReader dr = command.ExecuteReader())
{
System.Collections.Generic.List<Advertisement> list = new System.Collections.Generic.List<Advertisement>();
while (dr.Read())
list.Add(newAdvertisement(dr));
return list.ToArray();
}
}
}
}
publicstaticAdvertisement[] Search(string title, string keyWord, string description)
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Sp_Advertisement_Search", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@Title", title);
command.Parameters.AddWithValue("@KeyWord", keyWord);
command.Parameters.AddWithValue("@Description", description);
connection.Open();
using (SqlDataReader dr = command.ExecuteReader())
{
System.Collections.Generic.List<Advertisement> list = new System.Collections.Generic.List<Advertisement>();
while (dr.Read())
list.Add(newAdvertisement(dr));
return list.ToArray();
}
}
}
}
publicstaticAdvertisement[] SearchSpad(string title, string keyWord, string description)
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Sp_Advertisement_SearchSpad", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@Title", title);
command.Parameters.AddWithValue("@KeyWord", keyWord);
command.Parameters.AddWithValue("@Description", description);
connection.Open();
using (SqlDataReader dr = command.ExecuteReader())
{
System.Collections.Generic.List<Advertisement> list = new System.Collections.Generic.List<Advertisement>();
while (dr.Read())
list.Add(newAdvertisement(dr));
return list.ToArray();
}
}
}
}
publicstaticAdvertisement[] ListByRank(int rank)
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Advertisement_ListByRank", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@Rank", rank);
connection.Open();
using (SqlDataReader dr = command.ExecuteReader())
{
System.Collections.Generic.List<Advertisement> list = new System.Collections.Generic.List<Advertisement>();
while (dr.Read())
list.Add(newAdvertisement(dr));
return list.ToArray();
}
}
}
}
publicstaticAdvertisement[] ListByDate()
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Advertisement_ListByDate", connection))
{
command.CommandType = CommandType.StoredProcedure;
for (int i = 1; i < 10; i++)
{
command.Parameters.AddWithValue("@Param", i);
connection.Open();
}
using (SqlDataReader dr = command.ExecuteReader())
{
System.Collections.Generic.List<Advertisement> list = new System.Collections.Generic.List<Advertisement>();
while (dr.Read())
list.Add(newAdvertisement(dr));
return list.ToArray();
}
}
}
}
از این لیست برای نمایش آگهی های منقضی شده استفاده میشود[www.msdn.com]
publicstaticAdvertisement[] ListExpired(int userID)
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Sp_Advertisement_ListExpired", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@UserID", userID);
connection.Open();
using (SqlDataReader dr = command.ExecuteReader())
{
System.Collections.Generic.List<Advertisement> list = new System.Collections.Generic.List<Advertisement>();
while (dr.Read())
list.Add(newAdvertisement(dr));
return list.ToArray();
}
}
}
}
از این متد برای نمایش لیست آگهی های منقضی شده برای مدیر سایت استفاده میشود [www.msdn.com]
publicstaticAdvertisement[] ListExpiredForAdmin()
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Sp_Advertisement_ListExpiredForAdmin", connection))
{
command.CommandType = CommandType.StoredProcedure;
connection.Open();
using (SqlDataReader dr = command.ExecuteReader())
{
System.Collections.Generic.List<Advertisement> list = new System.Collections.Generic.List<Advertisement>();
while (dr.Read())
list.Add(newAdvertisement(dr));
return list.ToArray();
}
}
}
}
publicstaticAdvertisement[] ListSearchExpired(string title, string keyWord, string description)
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Sp_Advertisement_ListSearchExpired", connection))
{
command.CommandType = CommandType.StoredProcedure;
connection.Open();
command.Parameters.AddWithValue("@Title", title);
command.Parameters.AddWithValue("@KeyWord", keyWord);
command.Parameters.AddWithValue("@Description", description);
using (SqlDataReader dr = command.ExecuteReader())
{
System.Collections.Generic.List<Advertisement> list = new System.Collections.Generic.List<Advertisement>();
while (dr.Read())
list.Add(newAdvertisement(dr));
return list.ToArray();
}
}
}
}
publicstaticAdvertisement[] ListSearchExpiredUser(int userID, string title, string keyWord, string description)
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Sp_Advertisement_ListSearchExpiredUser", connection))
{
command.CommandType = CommandType.StoredProcedure;
connection.Open();
command.Parameters.AddWithValue("@UserID", userID);
command.Parameters.AddWithValue("@Title", title);
command.Parameters.AddWithValue("@KeyWord", keyWord);
command.Parameters.AddWithValue("@Description", description);
using (SqlDataReader dr = command.ExecuteReader())
{
System.Collections.Generic.List<Advertisement> list = new System.Collections.Generic.List<Advertisement>();
while (dr.Read())
list.Add(newAdvertisement(dr));
return list.ToArray();
}
}
}
}
publicstaticAdvertisement[] ListByType(string type)
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Advertisement_ListByType", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@Type", type);
connection.Open();
using (SqlDataReader dr = command.ExecuteReader())
{
System.Collections.Generic.List<Advertisement> list = new System.Collections.Generic.List<Advertisement>();
while (dr.Read())
list.Add(newAdvertisement(dr));
return list.ToArray();
}
}
}
}
این متد لیست آگهی های کاربر را برای کاربر نمایش میدهد[www.msdn.com]
publicstaticAdvertisement[] ListByUserID(int userID)
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Advertisement_ListByUserID", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@UserID", userID);
connection.Open();
using (SqlDataReader dr = command.ExecuteReader())
{
System.Collections.Generic.List<Advertisement> list = new System.Collections.Generic.List<Advertisement>();
while (dr.Read())
list.Add(newAdvertisement(dr));
return list.ToArray();
}
}
}
}
publicstaticvoid IncreaseCounter()
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Counter_Increase", connection))
{
command.CommandType = CommandType.StoredProcedure;
connection.Open();
command.ExecuteNonQuery();
}
}
}
publicstaticint GetCounter(DateTime date)
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Counter_GetCounter", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@Date", date);
connection.Open();
using (SqlDataReader dr = command.ExecuteReader(CommandBehavior.CloseConnection | CommandBehavior.SingleRow))
{
if (dr.Read())
return (int)dr[0];
else
return 0;
}
}
}
}
publicstaticint SumCounter()
{
using (SqlConnection connection = newSqlConnection(Settings.ConnectionString))
{
using (SqlCommand command = newSqlCommand("Counter_SumCounter", connection))
{
command.CommandType = CommandType.StoredProcedure;
connection.Open();
using (SqlDataReader dr = command.ExecuteReader(CommandBehavior.CloseConnection | CommandBehavior.SingleRow))
{
if (dr.Read())
return (int)dr[0];
else
return 0;
}
}
}
}
#endregion Methodes Methods
#region Events
#endregion Events
}
98
ا
1