تارا فایل

پروژه کامل طراحی سایت تعاملی گردشگری




دانشگاه آزاد اسلامی واحد خوراسگان
دانشکده فنی مهندسی
کامپیوتر – نرم افزار

موضوع پروژه
طراحی سایت تعاملی گردشگری
استاد راهنما
دکتر امیر حسن منجمی

تهیه کننده
حسین کرمی نیا
901176672

بهمن 92
فرم تایید پروژه

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

تایید استاد راهنمای پروژه و هیات داوران:
پروژه فارغ اتحصیلی نامبرده مورد تایید بوده و گزارش پروژه مطابق با فرمت و ضوابط مشخص شده برای گزارش پروژه توسط گروه می باشد.

نام و نام خانوادگی استاد راهنما نام و نام خانوادگی داور نام و نام خانوادگی مدیر گروه

تاریخ و امضا تاریخ و امضا تاریخ و امضا

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

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

با تشکر و قدر دانی از زحمات بی شائبه استاد محترم جناب آقای دکتر امیرحسن منجمی که همکاری صمیمانه ای با این بنده حقیر داشته اند.

فهرست مطالب

چکیده ……………………………………………………………………………………………………………………………….. 1
1-فصل اول
1-1-اهداف ……………………………………………………………………………………………………………………….. 2
1-2-تشریح پروژه …………………………………………………………………………………………………………….. 3
1-3-نیازسنجی ………………………………………………………………………………………………………………… 4
1-3-1-نیازهای نرمال ……………………………………………………………………………………………………… 4
1-3-2-نیازهای مورد انتظار …………………………………………………………………………………………….. 4
1-3-3-نیازهای ایده ال …………………………………………………………………………………………………… 5
1-4-دامنه پروژه ………………………………………………………………………………………………………………. 5
1-5-امکان سنجی ……………………………………………………………………………………………………………. 7
1-5-1-نرم افزار سیستم ………………………………………………………………………………………………….. 7
1-5-2-سخت افزار سیستم ……………………………………………………………………………………………… 7
1-5-3-برآورد هزینه و زمان ………………………………………………………………………………………….. 7
2-فصل دوم
2-1-سناریو اصلی …………………………………………………………………………………………………………….. 9
2-1-1-عضویت در تور …………………………………………………………………………………………………….. 9
2-1-2-ثبت نام ………………………………………………………………………………………………………………… 9
2-1-3-خرید تور …………………………………………………………………………………………………………… 10
2-2-نمودارهای تحلیلی سیستم …………………………………………………………………………………… 11
2-3-مقدمه ای بر زبان برنامه نویسی ……………………………………………………………………………. 39
2-3-1-active Server Page چیست؟ …………………………………………………………………………. 39
2-3-2-شروع کار با Active Server Page…………………………………………………………………… 40
2-3-3-ساخت صفحات پویا …………………………………………………………………………………………… 40
2-3-4-اجرای صفحات ASP ……………………………………………………………………………………….. 41
2-3-5-تنظیمات سرویس دهنده اطلاعات اینترنت ……………………………………………………… 42
2-3-6-نصب IISدر ویندوز XP …………………………………………………………………………………….. 44
2-3-7-به کارگیری FrontPage ……………………………………………………………………………………. 45
2-3-8-ایجاد اولین صفحات ASPخودتان …………………………………………………………………….. 46
2-3-9-آشنایی با اسکریپت های ASP …………………………………………………………………………. 46
2-3-10-Data Typesیا انواع داده ای ………………………………………………………………………….. 47
2-3-11-کار با متغییر ها ………………………………………………………………………………………………. 47
2-3-12-عملگر های مقایسه ای ……………………………………………………………………………………. 48
2-3-13-عملگرهای منطقی ………………………………………………………………………………………….. 48
2-3-14-ساختار کنترلی منطق شرطی ………………………………………………………………………… 48
2-3-15-ساختار کنترلی منطق حلقوی ………………………………………………………………………… 49
2-3-16-ساختار کنترلی منطق انشعابی ……………………………………………………………………….. 51
2-3-17-استفاده از سابروتین ها …………………………………………………………………………………… 51
2-3-18-استفاده از توابع ……………………………………………………………………………………………….. 52
2-3-19-کار کردن با آبجکت ها ……………………………………………………………………………………. 52
2-3-20-توابع Write و Redirect ………………………………………………………………………………… 53
2-3-21-فرم ها ……………………………………………………………………………………………………………… 54
2-3-22-ارتباط با یک بانک اطلاعاتی …………………………………………………………………………… 55
2-3-23-کار کردن با بانک های اطلاعاتی بااستفاده از ASP ……………………………………….. 56
2-3-24-آبجکت Connection ……………………………………………………………………………………… 57
2-3-25-آبجکت Recordset ………………………………………………………………………………………… 58
2-3-26-متد Open ………………………………………………………………………………………………………. 59
2-3-27-استفاده از Adovbs.inc ………………………………………………………………………………….. 60
2-3-28-درج کردن رکورد ها ……………………………………………………………………………………….. 61
2-3-29-به روز رسانی رکود ها ……………………………………………………………………………………… 61
2-3-30-حذف رکورد ها ……………………………………………………………………………………………….. 62
3-فصل سوم
3-1-ایجاد یک پروژه در C# ……………………………………………………………………………………………63
3-2-نحوه ایجاد یک Master Page …………………………………………………………………………….. 64
3-2-1-نحوه طراحی Master page …………………………………………………………………………….. 64
3-2-2-اضافه کردن عکس به صفحه اصلی ………………………………………………………………….. 65
3-3-نحوه ایجاد Gride View های مورد نیاز .کدنویسی مربوط به آنها ………………………..66
3-3-1-نحوه ایجاد Gride view مربوط به لینک های اصلی …………………………………….. 66
3-3-2-نحوه ایجاد Gride View مربوط به گروه های خبری …………………………………….. 67
3-3-3-کدهای مربوط بهGride view های لینک های اصلی …………………………………….. 68
3-3-4-کد های مربوط بهGride Viewآرشیو خبری …………………………………………………. 71
3-3-5-کدهای مربوط به اطلاعات سیستمی ……………………………………………………………….. 72
3-3-6-کدهای مربوط به دکمه ورود ……………………………………………………………………………. 74
3-4-نحوه ایجاد صفحات وب ………………………………………………………………………………………… 75
3-5-طریقه ایجاد صفحه default.aspx ……………………………………………………………………….. 76
3-6-نحوه ساختن صفحه َ AddNews.aspx…………………………………………………………………. 79
3-6-1-کدهای مربوط به دکمه درج خبر …………………………………………………………………….. 81
3-6-2-کدهای مربوط به دکمه بازنشانی ……………………………………………………………………… 83
3-7-نحوه طراحی صفحه گروه های خبری ………………………………………………………………….. 85
3-7-1-کدهای مربوط به دکمه درج گروه خبری ………………………………………………………… 87
3-7-2-کدهای مربوط به دکمه باز نشانی ……………………………………………………………………. 88
3-7-3-نحوه طراحی صفحه ثبت نظرات …………………………………………………………………….. 92
3-7-4-کد های مربوط به درج نظرات …………………………………………………………………………. 96
3-7-5-کدهای مربوط به دکمه باز نشانی ……………………………………………………………………. 96
3-8-نحوه ایجاد صفحه ارتباط با ما ………………………………………………………………………………. 97
3-9-نحوه ایجاد صفحه ایجاد آرشیو …………………………………………………………………………….. 98
3-9-1-نحوه ایجاد صفحه تایید خبر …………………………………………………………………………. 100
3-9-2-نحوه ایجاد صفحه ویرایش خبر ……………………………………………………………………… 104
3-9-3-نحوه ایجاد صفحه انتخاب خبر برای ویرایش ………………………………………………… 105
3-9-4-نحوه ایجاد صفحه ویرایش خبر ……………………………………………………………………… 107
3-10-نحوه ایجاد صفحه ویرایش اطلاعات کاربران …………………………………………………… 111
3-11-نحوه ایجاد صفحه تایید نظرات ……………………………………………………………………….. 115
3-12-SourceCodeمربوط به فایل Web.config ……………………………………………………. 118
3-13-SourceCodeمربوط به کلاس FirstClass.cs ……………………………………………….. 121
4-فصل چهارم
4-1-بخش کاربران ……………………………………………………………………………………………………… 128
4-1-1-صفحه اصلی …………………………………………………………………………………………………… 128
4-1-2-اخبار داخلی ……………………………………………………………………………………………………. 129
4-1-3-رزرواسیون ………………………………………………………………………………………………………. 130
4-1-4-درباره ما …………………………………………………………………………………………………………. 132
4-1-5-ارتباط با ما ……………………………………………………………………………………………………… 133
4-2-بخش مدیر سایت ……………………………………………………………………………………………….. 134
4-2-1-مدیریت بخش خبر ………………………………………………………………………………………… 135
4-2-2-بخش مدیریت تور ها ……………………………………………………………………………………… 136
4-2-3-مدیریت بخش رزرو ………………………………………………………………………………………… 137
4-2-4-مدیریت کاربران ……………………………………………………………………………………………… 138
4-2-5-مدیریت پیام ها ……………………………………………………………………………………………… 139
5-فصل پنجم
نتیجه گیری …………………………………………………………………………………………………………………. 140

فهرست اشکال
شکل2-2-1-نمودار ERD ……………………………………………………………………………………………. 11
شکل2-2-2-نمودارسطح یک ……………………………………………………………………………………….. 12
شکل2-2-3-نمودارسطح هفت برای بخش فروش ……………………………………………………….. 13
شکل2-2-4-نمدار سطح دو برای بخش حسابداری …………………………………………………….. 14
شکل2-2-5-نمدار بخش دو برای بخش هماهنگی ……………………………………………………… 15
شکل2-2-6-نمودار سطح دو برای بخش صدور بلیط ………………………………………………….. 16
شکل2-2-7-نمودار سطح دو برای بخش بانک الکترونیکی …………………………………………. 17
شکل2-2-8-دیاگرام حالت برای رزرو تور …………………………………………………………………….. 18
شکل2-2-9-نمودار ERD ……………………………………………………………………………………………. 19
شکل2-2-10-نمودار سطح صفر …………………………………………………………………………………… 20
شکل2-2-11-دیاگرام حالت برای عضویت …………………………………………………………………… 21
شکل2-2-12-دیاگرام همکاری برای عضویت ………………………………………………………………. 22
شکل2-2-13-دیاگرام همکاری برای ثبت نام ……………………………………………………………… 23
شکل 2-2-14-دیاگرام همکاری برای خرید تور ………………………………………………………….. 24
شکل2-2-15-چارت سازمانی آژانس ……………………………………………………………………………. 25
شکل2-2-16-دیاگرام توالی برای عضویت ……………………………………………………………………. 26
شکل2-2-17-دیاگرام توالی برای خرید تور …………………………………………………………………. 27
شکل2-2-18-دیاگرام توالی برای ثبت نام …………………………………………………………………… 28
شکل2-2-19-دیاگرام UseCase برای Actor مشتری ………………………………………………. 29
شکل2-2-19-دیاگرام UseCaseبرای Actorسیستم بانک …………………………………………. 30
شکل2-2-21-دیاگرام UseCaseبرای Actorمسئول فروش ……………………………………….. 31
شکل2-2-22-دیاگرام UseCase برای Actor مسئول هماهنگی ……………………………….. 32
شکل2-2-23-دیاگرام UseCaseبرای Actorمسئول دفتر ………………………………………….. 33
شکل2-2-24-دیاگرام UseCase برای Actor حسابدار ……………………………………………… 34
شکل3-1-1:ایجاد وب سایت …………………………………………………………………………………………. 63
شکل 3-2-1-1: نحوه ایجاد صفحه اصلی یا Master page …………………………………………. 64
شکل 3-2-2-1: اضافه کردن عکس به صفحه اصلی ……………………………………………………. 65
شکل3-2-2-2: تنظیمات مربوط به مسیر عکس …………………………………………………………. 66
شکل 3-3-1-1: تنظیمات مربوط بهGridview …………………………………………………………… 67
شکل 3-3-6-1: تنظیمات مربوط بهEvent Gridview ……………………………………………….. 76
شکل 3-4-1: ایجاد یک صفحه وب ………………………………………………………………………………. 77
شکل3-5-1: طریقه ایجاد صفحه Default.aspx …………………………………………………………. 77
شکل 3-5-2: نحوه ایجاد صفحه Default.aspx …………………………………………………………. 78
شکل 3-6-1:نحوه ساختن صفحه AddNews.aspx……………………………………………………. 80
شکل3-7-1: نحوه طراحی صفحه گروه های خبری …………………………………………………….. 85
شکل 3-7-3-1: نحوه طراحی صفحه ثبت نظرات ……………………………………………………….. 92
شکل 3-8-1: نحوه ایجاد صفحه ارتباط با ما ………………………………………………………………… 97
شکل3-9-1-1: نحوه ایجاد صفحه تایید خبر …………………………………………………………….. 104
شکل 4-1-1-1: نمایی از صفحه اصلی ………………………………………………………………………. 128
شکل 4-1-2-1:نمایی از صفحه اخبار داخلی …………………………………………………………….. 129
شکل 4-1-3-1:مشاهده تور ها به صورت تفکیک شده …………………………………………….. 130
شکل 4-1-3-2:مشاهده اطلاعات بیشتر در مورد هر تور ………………………………………….. 130
شکل 4-1-3-3:اطلاعاتی که کاربر جهت رزرو باید وارد نمایید ………………………………… 131
شکل 4-1-4-1:نمایی از صفحه درباره ما …………………………………………………………………… 132
شکل 4-1-5-1:نمایی از صفحه ارتباط با ما ………………………………………………………………. 133
شکل 4-2-1:log in ……………………………………………………………………………………………………. 134
شکل 4-2-2:نمایی کلی از بخش مدیریت …………………………………………………………………. 134
شکل 4-2-1-1:بخش مدیریت خبر …………………………………………………………………………… 135
شکل 4-2-2-1:نمایی از صفحه مدیریت تورها ………………………………………………………… 136
شکل 4-2-3-1:مدیریت بخش رزرو …………………………………………………………………………… 137
شکل 4-2-4-1:صفحه مدیریت کاربران …………………………………………………………………….. 138
شکل 4-2-5-1:نمایی از بخش پیام ها ………………………………………………………………………. 139

فهرست جداول

جدول2-2-1:پایگاه داده مشتریان ………………………………………………………………………………… 35
جدول2-2-2:پایگاه داده کشورها ………………………………………………………………………………….. 35
جدول2-2-3:پایگاه داده اطلاعات پرواز ………………………………………………………………………… 36
جدول2-2-4:پایگاه داده شهرستان ها ………………………………………………………………………….. 36
جدول2-2-5:پایگاه داده استان ها ………………………………………………………………………………… 37
جدول2-2-6:پایگاه داده شرکت ها ……………………………………………………………………………….. 37
جدول2-2-7:پایگاه داده هزینه ها ………………………………………………………………………………… 38
جدول2-2-8:پایگاه داده پرداخت ها …………………………………………………………………………….. 38

چکیده:

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

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

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

1-3-نیاز سنجی :
1-3-1-نیازهای نرمال :
* جستجوی تور مورد نظر بر اساس کشور و شهر مقصد
* مشاهده نام تور ، قیمت تور ، دریافت کد تور
* عضویت در سایت
* عضویت در خبر نامه سایت
* و …………..

1-3-2-نیازهای مورد انتظار :
* مشاهده اطلاعات تور
* مشاهده ی تور های دیگر
* مقایسه چند تور با هم
* تغییر اطلاعات مربوط به کاربر
* تماس با مدیریت
* مشاهده سبد خرید
* و ………

1-3-3-نیازهای ایده آل :
* اختصاص یک صفحه برای هر کاربر
* ایجاد تالار گفتمان
* ارسال اخبار سایت برای کاربر
* امکان پرداخت بهای بلیط بصورت الکترونیکی
* اختصاص کارت عضویت برای هر کاربر
* خرید بلیط برای افراد دیگر
* و ………

1-4-دامنه پروژه:
قبل از اینکه وارد جزئیات پروژه شویم تعریف کلی و مقدماتی به شرح زیر ارائه می گردد .
پروژه به شکل عملیات کاری زیر بیان می گردد:
1-4-1-این وب سایت چنین امکانی را به ما می دهد که با ورود به سیستم و آشنایی با بخشهای مختلف از قبیل تور های خارجی و داخلی با شرایط تور و این که امکاناتی را که تور برای مسافر دارد از قبیل ترانسفر فرودگاهی گشت روزانه و تخفیف هایی که بعضی از مکان های عمومی ان شهر یا کشور دارد و نیز با توجه به تعداد اعضای گروه هزینه و نیز تعداد روز های اقامت را مشخص می کند.
1-4-2-بخش دوم این وب سایت انتخاب هتل مورد نظر که موقعیت جغرافیایی هتل و نیز هزینه هر شب اقامت را به مسافرین ارائه می دهد و نیز امکانات تفریحی که هر هتل دارد را مشخص می کنند و نیز با توجه به تصاویری که از محیط هتل واتاق های آن به ارائه گزاشته تا حدودی با محیط آنجا آشنا می شویم
1-4-3-در صورت اینکه تور مورد نظر خارجی باشد و نیاز به آوردن ویزا باشد وب سایت در بخشی به نام درخواست ویزا این امکان را دارد که ویزای کشور مورد نظر و اینکه به صورت نورمال یا ارجنت باشد را درخواست کنند که این بخش توسط کارمندان بخش تور و نیز مدیر فنی بخش تور امکان پذیر است در هنگام پر کردن فرم ثبت نام بخشی وجود دارد که از مسافر درخواست می شود که کپی پاسپورت خود را وارد کرده که بقیه مراحل توسط مدیر فنی بخش تور کترل و اجرا شود.مدیر فنی این امکان را دارد که با کفیل خود در هر کشوری ارتباط داشته و بتواند با بررسی پاسپورت گروه مورد نظر و وارد کردن مشخصات پاسپورت و شماره آن برای کفیل خود بقیه کار را به او سپرده و کفیل بقیه کارهایی که مربوط به سفارت و بخش امنیه است را انجام دهد ممکن است که شخصی که برای ویزا اقدام می کند ، ویزای ارجنت بخواهد که این ویزا معمولا بعد از 5 ساعت آماده می شود اما اگر شخص بلک لیست شده باشد به این معنا که ازطرف ان کشور ممنوع ورود شده باشد ویزا صادر نمی شود که دیگر از دست کفیل و بخش تور خارج است و اما ویزای نورمال که 1هفته به طول می انجامد واین ویزا نیز روال کار اداری ارجنت را دارد.
1-4-3-1با توجه به انتخاب تور مورد نظر و هزینه سفر وارد بخش ثبت نام می شویم که در این بخش فرم مشخصاتی را به صورت کامل پر کرده در صورت اینکه ناقص باشد پیغام خطا می دهد و از طریق بخش واریز به حساب می توان وجه مورد نظر را با وارد کردن شماره حساب شخصی خود به حساب مورد نظر واریز کرد.ودر اخر سر پیغام ثبت نام انجام گرفت داده می شود.
1-4-3-2- در بخشی دیگر فرمی به نام اشتراک داریم که با توجه به تمایل مسافرین این فرم را پر کرده که مشخصات کامل و نیز ادرس و شماره تلفن مشترک را گرفته ، و جهی که از قبل مشخص شده را واریز به حساب آژانس کرده از طریق حساب به حساب دیگر و اشتراک اتمام می پذیرد و در اخر سر شماره ای به عنوان اشتراک داده که فقط خود مشترک امکان این را دارد که از ان استفاده کند و این کار باعث می شود که مسافر اگر بعد از اتمام سفر بخواهد هزینه تور را پرداخت کند مشکلی ندارد و نیز امکانات دیگری را نیز دارند.
1-5-امکان سنجی پروژه :
1-5-1- نرم افزار سیستم : برنامه این سایت با استفاده از ASP.NET تحت زبان ویژوال بیسیک یا C# نوشته خواهد شد و پایگاه داده ی آن توسط نرم افزارهای MY SQL یا SQL SERVER طراحی می شود . ولی اگر امکان آن باشد که بتوانیم از نرم افزار اوراکل استفاده کنیم به مراتب بهتر است و می توانیم امنیت سایت را تا حد امکان بالا ببریم .
تمامی سیستم های مورد استفاده باید دارای سیستم عامل XP 2001 به بعد باشند .

1-5-2- سخت افزار سیستم :
سیستم باید پنتیوم 4 به بالا و هر کدام مجهز به دستگاه چاپگر و کارت شبکه (ONBOARD) و سیستم های توپولوژی ستاره ای به یکدیگر متصل باشند . همچنین این توپولوژی باید شامل کابل کواکسیال رده 5 باشد و بهتر است به جای هاب از سوئیچ استفاده شود .
توجه : انتخاب نوع نرم افزار و سخت افزار سیستم بستگی به مهارت و سلیقه برنامه نویس و مدیر پروژه دارد و کاملا اختیاری است .

1-5-3-بر آورد هزینه و زمان :
پروژه مکانیزه کردن گردشگریبه سه متخصص برنامه نویسی نیاز دارد که در مدت زمان سه ماه که مطابق است با 22 روز کاری در هر ماه و برای سه نفر 66 روز کاری در یک ماه با احتساب 8 ساعت کار روزانه معادل می شود با 1584 ساعت کار برای سه نفر در یک ماه. ( این سه برنامه نویس در سه ماه باید 4752 ساعت کار کنند )

اگر هر ساعت کار یک برنامه نویس 20000 تومان محاسبه شود ، هزینه تیم برنامه نویسی معادل 31680000تومان خواهد بود . ( محاسبه ی این هزینه ها برای یک ماه است )
35% قیمت تمام شده ی تیم برنامه نویسی معادل 11088000 تومان به مبلغ کل اضافه می گردد که به عنوان سود پروژه برای شرکت خواهد بود .
مبلغ اعلامی برای ارائه نرم افزار به مدیر آژانس 4300000 تومان خواهد بود .
هزینه دستگاه ها ( 4 کامپیوتر و 4 چاپگر) و تجهیزات شبکه معادل 6400000 تومان خواهد بود.
توجه : قیمت ها می تواند با توجه به کیفیت پروژه تعیین گردد و مدیر پروژه با در نظر گرفتن کلیه جوانب می تواند قیمت را تعیین کند .

فصل دوم
2-1-سناریو اصلی
2-1-1- عضویت در تور
0- شروع
1- روی عضویت کلیک می کنیم
2- فرم عضویت باز می شود
3- مشخصات را وارد می کنیم
4- روی عضویت کلیک می کنیم
5- ممکن است مشخصات را اشتباه وارد کرده باشیم
6- اصلاح مشخصات
7- روی اطلاعات تور کلیک می کنیم
8- روی دکمه برگشت کلیک می کنیم
9- روی ثبت نهایی کلیک می کنیم
10-اطلاعات عضویت در پایگاه داده ذخیره می شود
11 – تمام
2-1-2 ثبت نام
0 – شروع
1- روی ثبت نام کلیک می کنیم
2- فرم ثبت نام باز می شود
3- مشخصات را وارد می کنیم
4- ممکن است مشخصات را اشتباه وارد کرده باشیم
5- اصلاح مشخصات
6- تاییدیه مشخصات
7- روی ثبت نهایی کلیک می کنیم
8- اطلاعات ثبت نام در پایگاه داده ذخیره می شود
9- تمام

2-1-3- خرید تور
0- شروع
1- روی خرید تور کلیک می کنیم
2- نام کاربری و رمز ورود را وارد می کنیم
3- کشور و شهر مقصد را انتخاب می کنیم
4- روی قیمت تورها کلیک می کنیم
5- روی واریز وجه کلیک می کنیم
6- رمز و شماره حساب بانکی خود را وارد می کنیم
7- مبلغ را به حساب آژانس واریز می کنیم
8- روی تاییدیه نهایی کلیک می کنیم
9- اطلاعات در پایگاه داده ذخیره می شود.
10- تمام

2-2-نمودارهای تحلیلی سیستم:

شکل2-2-1 :نمودار ERD

شکل2-2-2 :نمودار سطح یک

شکل2-2-3 :نمودار سطح 7 برای بخش فروش

شکل2-2-4 :نمودارسطح دو برای بخش حسابداری

شکل2-2-5 :نمودار بخش دو برای بخش هماهنگی

شکل2-2-6 :نمودار سطح دو برای بخش صدور بلیط

شکل2-2-7 :نمودار سطح دو برای بخش بانک الکترونیکی

شکل2-2-8 :دیگرام حالت برای رزرو تور

شکل2-2-9 :نمودار ERD

شکل2-2-10 :نمودار سطح صفر

شکل2-2-11 :دیاگرام حالت برای عضویت

شکل2-2-12 :دیاگرام همکاری برای عضویت

شکل2-2-13 :دیاگرام همکاری برای ثبت نام

شکل2-2-14 :دیاگرام همکاری برای خرید تور

شکل 2-2-15:چارت سازمانی آزانس

شکل2-2-16 :دیاگرام توالی برای عضویت

شکل 2-2-17:دیاگرام توالی برای خرید تور

شکل 2-2-18:دیاگرام توالی برای ثبت نام

شکل2-2-19 :دیاگرام UseCase برای actor مشتری

شکل2-2-20 :دیاگرام UseCase برای actor سیستم بانک

شکل2-2-21 :دیاگرام UseCase برای actor مسئول فروش

شکل 2-2-22:دیاگرام UseCaseبرای actorمسئول فروش

شکل2-2-23 : دیاگرام UseCase برای actor مسئول دفتر

شکل2-2-24 :دیاگرام UseCase برای actor حسابدار

جدول2-2-1: پایگاه داده مشتریان
مشتریان (Customers)
Name
Size
Type
Key
Min
Max
Def
Pic
Req
Ref
Exam
مقدار(Caption)
CustomerId
12
A
*
0



(

3744
کد مشتری
Company name
30
A





(

هما
نام شرکت
Codemeli
10
A

0


##########


1285034977

Contact first name
20
A





(

علی
نام
Contact last name
20
A





(

احمدی
نام خانوادگی
Billing address
50
A






Country

آدرس پستی
Postal code
12
A




########


12345678
کد پستی
Phone number
11
A




###########


03116632225
شماره تلفن
Fax number
11
A




###########


03116664783
شماره فکس
E-mail address
15
A





(

homa@yahoo.com
آدرس میل
Notes
50
A








ملاحضات

جدول2-2-2:پایگاه داده کشورها
کشور (Country)
Name
Size
Type
Key
Min
Max
Def
Pic
Req
Ref
Exam
مقدار(Caption)
C-Code
3
A
*
0


###
(

098
کد کشور
C-name
50
A





(

Germany
نام کشور
Nationality
50
A







Germany
ملیت
Notes
50
A








ملاحضات

اطلاعات پرواز (ُInformation Flay)
Name
Size
Type
Key
Min
Max
Def
Pic
Req
Ref
Exam
مقدار(Caption)
CF-Code
3
A
*
0


###
(

098
شماره بلیت
CustomerId
12
A
*
0



(

3744
کد مشتری
Date-f
10
A

01/01/1389


##/##/####
(

22
تاریخ پرواز
Source-f
20
A






State

اصفهان
مبداء
Destination-f
20
A




State
تهران
مقصد
name-Company
20
A
*




(
Company
هما
نام شرکت
Time-f
2
A

00:00:00
24:00:00

##:##:##
(

12:30:00
زمان
Count-f
3
A

1

1
###

(

2
تعداد مسافران
Sum-Price
6
A
*
0000


######
(
Price
320000
هزینه کل
Note
50
A








توضیحات

جدول2-2-4:پایگاه داده شهرستان ها
شهرستان(ُCity)
Name
Size
Type
Key
Min
Max
Def
Pic
Req
Ref
Exam
مقدارCaption
C-Code
3
A
*
0


###
(
Counry
098
کد کشور
S-code
2
A
*



##
(
State
22
کد استان
Ct-code
4
A
*



####


اصفهان
نام استان
Ct-name
50
A







اصفهان
نام شهرستان
Note
50
A








توضیحات

جدول2-2-5:پایگاه داده استان ها

ایالت / استان (ُState)
Name
Size
Type
Key
Min
Max
Def
Pic
Req
Ref
Exam
مقدار(Caption)
C-Code
3
A
*
0


###
(
Counry
098
کد کشور
S-code
2
A




##
(

22
کد استان
S-name
50
A







frans
نام استان

شرکت (Company)
Name
Size
Type
Key
Min
Max
Def
Pic
Req
Ref
Exam
مقدار(Caption)
C-Company
3
A

0


###
(

100
کد کمپانی
Name-company
20
A
*




(

22
نام کمپانی
Source-Company
20
A





(

اصفهان
نام مبداء
Destination-Company
20
A



(

شیراز
نام مقصد

Price
6
A

000000


######
(

250000
قیمت
جدول2-2-6:پایگاه داده شرکت ها

اطلاعات پرداخت با کارت اعتباری (ُCard)
Name
Size
Type
Key
Min
Max
Def
Pic
Req
Ref
Exam
مقدار(Caption)
Sh-Card
3
A
*
0


###
(
Counry
098
کد کشور
Pas-card
2
A




##
(

22
کد استان
Cod-back-card
50
A







frans
نام استان
Finall Date-Card
20
A

1389/01/06
1390/01/01

##/##/####
(

05/04/1389
تاریخ انقضای کارت
Price -card
10
A
*



##########
(

200000
موجودی کارت

جدول2-2-7:پایگاه داده هزینه ها
فاکتور هزینه پرداخت (ُFactor)
Name
Size
Type
Key
Min
Max
Def
Pic
Req
Ref
Exam
مقدار(Caption)
Sh-factor
4
A
*
0


###
(

098
شماره فاکتور
CF-Code
3
A
*
0


###
(
Information Flay
098
شماره بلیت
C-Company
3
A

0


###
(

100
کد کمپانی
Price -card
10
A
*



##########
(

200000
موجودی کارت
Sum-Price
6
A

0000


######
(
Price
320000
هزینه کل
Mod-price card
10
A




##########
(

200000
باقیمانده موجودی کارت

جدول2-2-8:پایگاه داده پرداخت ها

2-3-مقدمه ای بر زبان برنامه نویسی و علت انتخاب آن
2-3-1-Active Server Page چیست ؟
با گذشت سال های متمادی، ما تغییرات مهمی را در موضوع اینترنت مشاهده می نماییم. ابتدا ، اینترنت به منظور یک سرویس دهنده ارتباطات متوسط برای بخشهای دولتی و موسسات دانشگاهی بود. با پیدایش www ، اینترنت یک محیط دوستانه چند رسانه ای شد. در اصل، سرویس اینترنت به عنوان یک مکان برای آدمهای با ذوق به منظور خلق صفحات خانگی بود، اما هر چه افراد بیشتری به اینترنت وارد شدند اینترنت به یک منبع اطلاعاتی برای همه افراد تبدیل شد. وقتی تعداد افراد Online به یک محدوده بحرانی رسید، شرکتهایی که محصولات و خدمات را می فروختند شروع کردند به spring up نمودن. این شرکتها هیچ حضور فیزیکی نداشتند، فقط یک حضور مجازی داشتند. برای مثال شما می توانید از سایت Amazon.com کتاب بخرید، اما شما قادر نخواهید بود که کتابفروشی Amazon.com را در همسایگی خودتان پیدا کنید.
همانگونه که اینترنت به صورت یک فروشگاه موفق شد، طراحی وب سایت هم تغییر پیدا کرد. در روزهای اولیه www ، HTML به منظور ایجاد صفحات وب ایستا استفاده می شد. اما امروزه، صفحات وب ایستا به سرعت در حال منسوخ شدن می باشند. تصور کنید اگر Amazon.com تنها از صفحات وب ایستا تشکیل شده بود-شما نمی توانستید فهرستهای کتاب را جستجو کنید. شما نمی توانستید یک درخواست را به صورت Online صادر کنید، شما نمی توانستید توضیحات کاربران دیگر را بخوانید. این است دلیل یک سرمایه گذاری مطمئن که اگر Amazon.com از صفحات وب پویا استفاده نمی کرد، نمی توانست تعداد زیادی کتاب بفروشد.
شما می توانید صفحات وب پویا را از راههای زیادی ایجاد نمایید. راه حل مایکروسافت برای ساختن صفحات وب پویا استفاده از Active server page می باشد که بصورت مختصر بر آن ASP می گویند.
ASP شامل دو بخش می باشد. کدهای برنامه نویسی و embedded HTML . کدهای برنامه نویسی می توانند به وسیله تعداد زیادی از زبانهای دست نویس نوشته شوند.
یک زبان دست نویس یک دستور زبان مخصوص است که برای اجرای دستورات بر روی کامپیوتر استفاده می شود.
زبانهای اسکریپت نویسی دست نویس مربوط به وب که محبوب می باشند عبارتند از VBScript و JavaScript . وقتی یک صفحه ASP درست می کنید، شما می توانید از یکی از چهار زبان برنامه نویسی استفاده کنید. شبیه دستور زبان Visual Basic .
بیشتر صفحات ASP با استفاده از VBScript ایجاد می گردند. VBScript از چهار زبان دیگر به زبان انگلیسی نزدیکتر می باشد و دستور زبان آن شبیه به Visual Basic می باشد که تعداد زیادی از توسعه دهندگان وب از آن استفاده کرده اند.

2-3-2-شروع کار با Active Server Pages :
با گسترش اینترنت و www در زندگی روزمره ایجاد وب سایت یکی از بخشهایی است که به سرعت در حال رشد می باشد . همواره در تار جهان گسترده ، طراحی وب سایت بر ایجاد گرافیک های تخیلی و زیبا و صفحات وب ساده برای خواندن مبتنی است . به همین دلیل امروزه سایت های وب محل تلاقی کاربران شده است .
اگر چه خلق یک وب سایت دلپذیر مهم می باشد ، اما تمرکز اصلی ، از طراحی گرافیکی به سمت طراحی مبتنی بر برنامه نویسی می باشد . برای مثال تصور کنید که شما می خواهید یک وب سایت از چیزی که می توانید بفروشید ایجاد کنید . طراحی مبتنی بر برنامه نویسی ، صفحات وبی ایجاد می کند که می توانند اطلاعات صورت حساب های کاربران را جمع آوری و ذخیره کنند .
اگر شما احتیاج به ساختن یک وب سایت پویا دارید ASP یک راه حل ساده می باشد . ASP راه حل شرکت مایکروسافت برای ایجاد صفحات پویای وب می باشد .

2-3-3-ساخت صفحات پویا :
HTML برای ساخت صفحات ایستا بسیار مناسب است صفحات ایستا آنهایی هستند که برای هر بیننده سفارشی نمی شوند مشخص است که HTTP می تواند برای محتویات پویا به کار رود منظور از محتویات پویا آیکن های متحرک نیستند که در اغلب صفحات پویا به کار می روند. منظور از محتویات پویا برای هر بیننده در هر بار دیدن صفحه سفارشی می شود و محتویات پویا ارتباط دو طرف را ممکن می سازد با استفاده از فرم هایی که در صفحات وب وجود دارد کار بر می تواند محتویات سفارشی خود را درخواست کند.
دقت کنید که استفاده از زبان های اسکریپتی مثلScript Java و VBScript برای ساختن صفحات کاملاٌ پویای وب کافی نیست. توجه به صفحات پویا منجر به ابزارهای دیگری برای ساخت صفحات وب شده است به طوری که قرار دادن اسناد HTML در یک پوشه از کامپیوتر و خواندن آن کافی نبود.
مطالب ایستا: تغییر نمی کند. اگر صفحات HTML ایستا هستند و هر وقت که شما یکی از آنها را با مرورگر باز کنید آنها دقیقاً همان قبلی را نشان می دهند.
مطالب پویا: تغییر می کند و یا تغییرات دستی سازگار هستند وقتی که به سایت وب یک بانک می روید و موجودی حساب خود را درخواست می نمایید موجودی حساب شما پول است و تغییر می کند. مانند: ASP .

2-3-4-اجرای صفحات ASP :
برای اجرای صفحات ASP بر روی کامپیوترتان، احتیاج به اجرای یک سرویس دهنده web دارید. محصولات رایگان مایکروسافت در دسترس شما قرار دارند که به شما اجازه می دهند یک سرویس دهنده وب را روی ویندوز 95 و98 به همان خوبی windowsNT و windows2000 اجرا کنید.
اگر سرویس دهنده وبی که صفحات ASP را اداره می کند نصب نکرده اید، هنگامی که یک درخواست صفحه ASP را داخل مرورگر خود می نمایید، یک پنجره گفتگو را مشاهده می کنید که از شما می پرسد که آیا می خواهید فایل ASP را بر روی دیسک ذخیره نمایید یا خیر؟ برای مثال یک فایل با پسوند ASP را ایجاد کرده و در داخل آن محتویات یک لیست را کپی نمایید. سپس این فایل را در داخل مرورگر انتخابی باز نمایید، شما می بینید که یک پنجره گفتگو از شما سوال میکند که آیا می خواهید فایل را بر روی دیسک ذخیره نمایید.
به یاد بیاورید که یک سرویس دهنده وب با توانایی مدیریت صفحات ASP ، صفحه وب درخواستی را قبل از اینکه به سرویس گیرنده بفرستد پردازش می کند.
در طی این پردازش دو چیز اتفاق می افتد:
1- کد برنامه نویسی در صفحه ASP به وسیله سرویس دهنده تفسیر می گردد.
2- سرویس دهنده وب به مرورگر اطلاع می دهد که اطلاعات HTML را فرستاده است و مرورگر این خطوط HTML را دریافت کرده و برای کاربر اجرا می نماید.
اگر شما یک سرویس دهنده وب را نصب نکرده باشید، و سعی کنید که یک صفحه ASP را به وسیله مرورگرتان مشاهده نمایید، مرحله دوم انجام نمی شود. این به معنی آن است که مرورگر مطلع نمی شود که صفحه ASP شامل کد HTML می باشد. مرورگر نمی داند که چه کاری با یک فایل ASP انجام دهد و سعی می کند که بوسیله برنامه های دیگر که فایل با پسوند ASP را می شناسند این فایل را ببینید.
اگر یک برنامه بر روی کامپیوترتان نصب شده باشد که با فایل های با پسوند ASP آشنایی داشته باشد آن برنامه اجرا می گردد.

2-3-5تنظیمات سرویس دهنده اطلاعات اینترنت :
نصب IIS در ویندوز 2000 :
(IIS) سرویس دهنده وب حرفه ای مایکروسافت می باشد. آخرین نسخه IIS نسخه 5.0 می باشد که با ویندوز 2000 کار می کند. ASP 3.0 نیز با IIS 5.0 سازگار می باشد و به صورت خودکار وقتیIIS 5.0 نصب می گردد آن نیز نصب می گردد. اگر ویندوز NT server را اجرا می کنید، بهIIS 4.0 احتیاج دارید وIIS 4.0 را می توانید در windowsNT Option pack 4.0 پیدا کنید، یا می توانید به صورت رایگان از سایت وب مایکروسافت به آدرس
http://www.microsoft.com/msdownload/ntoptionpack/askwiz.asp دریافت نمایید.
IIS 5.0 با ویندوز 2000 ترکیب شده است. اگر چه هنگامی که شما ویندوز 2000 را نصب می کنید به صورت پیش فرض IIS 5.0 نصب نمی گردد. برای نصب IIS 5.0 ابتدا Start و سپس Adminstrative tools و configure your server را انتخاب نمایید.
یک جعبه محاوره ای باز می شود که دارای چندین گزینه پیکر بندی در پنجره سمت چپ خود می باشد. از پنجره سمت چپ، پایین ترین گزینه که Iabeled Advanced می باشد را انتخاب نمایید. بر روی دکمه Advanced یکبار کلیک کنید. چهار گزینه آشکار می شود که عبارتند از Cluster Service و Message Queuing و Support Tools و Optional Components . برروی گزینه Optional Components کلیک کنید. در پنجره سمت راست، توضیحی در مورد گزینه Optional Components ظاهر می گردد.
به جلوتر بروید و بر روی فرامتن Start کلیک راست کنید- این کار ویزارد اجزای ویندوز را اجرا می نماید- Components Wizard windows 2000 اجزای انتخابی ویندوز 2000 را نمایش می دهد. از طریق این ویزارد، شما می توانید اجزای انتخابی ویندوز را نصب یا رفع نصب نمایید. گزینه Internet Information services را بیابید.
اجزای IIS تعدادی از زیر اجزاهای دیگری از سرویس دهنده www را همانند سرویس دهنده FTP و سرویس SMTP شامل می شوند. برای اینکه تعیین کنید که چه اجزایی از IIS نصب شوند، بر روی اجزای IIS در ویزارد اجزای ویندوز 2000 کلیک کنید و سپس بر روی دکمه Details کلیک نمایید. شما یک لیست از اجزایی که می توانند با IIS نصب شوند را مشاهده می نمایید. اگر شما قصد داشته باشید که از Visual Interdev یا FrontPage شرکت مایکروسافت به منظور ویرایش سایت وب خور استفاده نمایید، مطمئن گردید که بسط های FrontPage 2000 Server را نصب کنید. البته، این به نصب کردن دیگر اجزای IIS صدمه ای نمی زند.
بعد از اینکه شما تمام اجزای IIS را انتخاب کردید، برای نصب کردن باید برای دکمه OK کلیک کنید که شما را به ویزارد Components windows 2000 بر می گرداند. برای شروع به نصب IIS 5.0 بر روی دکمه Next کلیک کنید. وقتی عملیات نصب کامل شد، شما می توانید به ISM دسترسی پیدا کنید.
Internet service manager به شما اجازه می دهد که خصوصیات و تنظیمات IIS را پیکر بندی نمایید.
به منظور اجرای ISM ، مراحل زیر را انتخاب کنید.
Start>programs>Administrative tools>Internet Manager
ISM به شما اجازه می دهد که سایت وب تان را و سرویس دهنده FTP و سرویس SMTP را پیکر بندی نمایید.
ISM ساختار دایرکتوری را برای سایت وب شما نشان می دهد. شما می توانید خصوصیات سایت وبتان را مشاهده و اصلاح نمایید این کار یک کادر به نام properties web site را باز می نماید.
این کادر همانطور که متوجه شده اید دارای 10 ، tab پر از گزینه می باشد. وارد Tab Directory شوید. به گزینه Local path توجه نمایید. دایرکتوری که دراینجا وارد می شود دایرکتوری فیزیکی ریشه می باشد و به صورت پیش فرض در داخل Inetpubwwwroot بر روی درایوی که ویندوز 2000 نصب شده است قرار دارد. اگر شما تمایل داشته باشید، این مقدار را تغییر دهید. اما همانطور که بیان گردید عرف استاندارد دایرکتوری فیزیکی ریشه Inetpubwwwroot می باشد.
در زیر گزینه Local path، یک سری از کادرهای انتخاب وجود دارد. دو تا از این کادرهای انتخابی شبیه به گزینه های موجود در کادر Personal server properties می باشند و عبارتند از Directory Browsing و Visits Log . هر دوی این دو گزینه ها دقیقاً مانند گزینه های موجود در PWS می باشند. با انتخاب Directory Browsing شما به ملاقات کنندگانی که در URL ، آدرس شما را وارد می کنند، اجازه می دهید که به اجزای دایرکتوری شما دسترسی پیدا نمایند.

2-3-6-نصب IIS در ویندوز XP :
از start/control panel را انتخاب نمایید. پنجره control panel باز شده روی Add Or Remove Programs کلیک کرده پنجره ای باز شده ، حال در ستون سمت راست روی آیکن Add/Remove Windows Components کلیک کرده پنجره Add/Remove Windows Components باز شده و گزینه Internet Information Services(IIS) را تیک بزنید. سپس روی دکمه Next کلیک کرده IIS نصب می شود.
حال برای دیدن صفحات مراحل زیر را انجام دهید:
از start/control panel را انتخاب نمایید. پنجره control panel باز شده و روی Administrative tools دو بار کلیک نمایید. وبعد از باز شدن پنجره Administrative tools روی آیکن Internet Information Services دوبار کلیک کنید تا پنجره IIS باز شود.در ستون سمت چپ روی شاخه Default Web Site کلیک راست کرده و از منوی ظاهر شده گزینه New/Virtual Directory را انتخاب نمایید. یک پنجره باز می شود Next کرده در صفحه بعد در کادر جلوی Alias یک نام بدهید سپس روی دکمه Next کلیک کرده ودر صفحه بعد در جلوی کادر Directory آدرس صفحه را میدهید می توانید از دکمه Browser کمک بگیرید. دکمه Next را کلیک کنید و در صفحه بعد دکمه Finish را انتخاب کنید. حال در پنجره Internet Information Services در سمت راست پوشه ها وصفحه ای که با پسوند Asp را ذخیره کردید می توانید مشاهده کنید. روی صفحه Asp کلیک راست کرده و از منوی ظاهر شده گزینه Browse را انتخاب نمایید. سپس می توانید صفحه مورد نظر خود را در Internet explorer و یا هر Browser دیگر مشاهده نمایید.

2-3-7به کار گیری Frontpage:
در روزهای اولیه تار جهان گسترده هیچ ابزار گرافیکی برای ایجاد صفحات وب در دسترس نبود. کاربران مجبور بودند از ویرایشگرهای ساده متون مانند Notepad برای ایجاد صفحات HTML استفاده نمایند. هنگامی که محبوبیت شبکه ها افزایش یافت ویرایشگرهای HTML زیادی تولید گردیدند. یکی از این ویرایشگرها Frontpage مایکروسافت می باشد که ابزاری است که به وسیله توسعه دهندگان وب برای ایجاد سریع صفحات وب حرفه ای مورد استفاده قرار می گیرد. Frontpage بر روی ایجاد عناصر HTML متمرکز شده است. و به کاربران اجازه می دهد تا به سادگی محتویات صفحه وب را تایپ نمایندو اشکال را بکشندو رها نمایند و به صفحات وب دیگر متصل شوند. Frontpage tag , هایی که مورد احتیاج می باشد را در اختیار اشخاص قرار می دهد. اگرچه Frontpage برای ساختن صفحات وب HTML بسیار سودمند می باشد ولی کارایی خود را هنگام طراحی صفحات ASP از دست می دهد. شما نمی توانید کدها را به راحتی drag & drop نمایید وبه خاطر اینکه صفحات ASP شامل کدهای scripting می باشند شما نمی توانید به همان راحتی که برای صفحات وب کدهای HTML را تولید می کردید کدها را برای صفحات ASP ایجاد نمایید. با وجود این محدودیت ها ، Frontpage هنوز برای ایجاد صفحات وب استفاده می گردد. توسعه دهندگان از سیستم Frontpage's SUI به منظور ایجاد HTML برای صفحات وب استفاده می کنند وسپس سورس HTML صفحه ایجاد شده به وسیله Frontpage را باز کرده و کدهای ASP را به آن اضافه می کنند. Frontpage همانند InterDev شامل تعداد زیاد ی ریزه کاریها و پیچیدگیها می باشد.

2-3-8-ایجاد اولین صفحات ASP خودتان :
به منظور ایجاد صفحات ASP شما احتیاج به یک کامپیوتر با یک سرویس دهنده وب دارید که تکنولوژی ASP را پشتیبانی نماید. در این زمان شما باید یا یک سرویس دهنده وب که با ASP کار می کند داشته باشید یا به یک کامپیوتر که بر روی آن چنین سرویس دهنده وبی نصب شده است دسترسی داشته باشید . بعد از اینکه یک وب سرور را نصب کردید شما می توانید صفحات ASP را در دایرکتوری ریشه سایت وبتان ایجاد نمایید یا آنرا در زیر فهرستهای دایرکتوری ریشه قرار دهید و صفحات ASP حاصله را به وسیله مرورگر وب استانداردی مشاهده نمایید. از آنجایی که صفحات ASP به صورت کامل بر روی سرویس دهنده پردازش می گردند و فقط HTML به بخش سرویس گیرنده برگشت داده می شود هر مرورگر وبی می تواند برای مشاهده صفحات ASP مورد استفاده قرار بگیرد. شما هم اکنون عناصر لازم برای ایجاد و دیدن صفحات ASP را در اختیار دارید .

2-3-9-آشنایی با اسکریپت های ASP :
دو دستور زیر قبل از TAG ، <HTML> نوشته می شوند:
* منظور از <%@language=VBScript%>چیست؟ به سرویس دهنده وب اطلاع می دهد که زبان script که در صفحه ASP فعلی استفاده شده است چه می باشد .
* منظور از <%option Explicit %>چیست؟ همه متغیرهای ما باید به صورت صریح تعریف گردند
* :<%….%> دستورات VBScript در داخل این دو tag نوشته می شوند.
* تعریف: کاراکتر دنباله خط برای زبان VBScript علامت زیر خط (-) قرار دادن آن در انتهای خط می گوید که " ادامه در خط بعدی می باشد" .

2-3-10-Data types یا انواع داده ای :
انواع مختلفی از داده ها موجود دارند که شما باید بتوانید آنها را در داخل متغیر ها ذخیره نمایید: اعداد، کلمات، اطلاعات و چیزهای دیگر،متغیر ها را در Dim تعریف می کنیم.

2-3-11-کار با متغیرها :
یک متغیر ، یک بخش کوچکی از حافظه است که شما به آن یک نام می دهید. قوانینی که شما باید در نامگذاری متغیرهایتان رعایت نمایید به دو گروه تقسیم بندی می گردند. گروه اول قوانینی هستند که به شما در اجتناب از ایجاد پیغامهای خطا کمک می کنند. گروه دوم از قوانین به شما کمک می کنند که بهتر برنامه نویسی نمایید و کدهایتان راحت تر خوانده و تصحیح شوند.
قوانینی وجود دارند که شما باید از آنها پیروی کنید. در غیر اینصورت سیستم قادر نخواهد بود کدهایتان را اجرا نماید .
* از dashes , periods , spaces استفاده نکنید. استفاده از هر کدام از این موارد باعث ایجاد خطا می گردد.
* نامهای متغیرها باید با یک حرف شروع شوند.
* نامهای متغیرها نباید طولانی تر از 255 کاراکتر باشد.
* از کلمات کلیدی به عنوان نام متغیر استفاده نکنید.
از نام متغیر ها دوباره استفاده ننمایید . شما می توانید از نام متغیر ها دوباره استفاده نمایید فقط آگاه باشید که شما نمی توانیداز همان نام برای دو متغیرمختلف استفاده نمایید .
2-3–12عملگرهای مقایسه :
عملگرهای مقایسه عمل مقایسه بین دو آرگومان را انجام می دهند و خروجی آنها true یا False می باشد. عملگرهای موجود در VBScript عبارتند از مساوی (=) ، مخالف (<>) ، کوچکتر (>) ، بزرگتر از (<) کوچکتر و مساوی با (=>) و بزرگتر و مساوی با (=<) می باشند .

2-3-13-عملگرهای منطقی :
آنها Not , OR , And و (XOR) exclusive or و(EQV) eQuivaence , (IMP) Implication می باشند. اگر شما با عبارات منطقی سروکار داشتید به طور طبیعی باید طرز استفاده از اپراتورهایی که با آنها به کار می روند را بدانید . تمام موارد بالا بجز Not دو مقدار Boolean را گرفته و یک مقدار Boolean را برمی گردانند .

2-3-14-ساختار کنترلی منطق شرطی :
منطق شرطی یک شرط یا یک سری از شروط را امتحان می کند و برپایه نتیجه آن کدی که باید اجرا گردد را انتخاب می نماید .
* IF-Then statements
جمله IF…Then یکی از معمولی ترین ساختارهای کنترلی می باشد. شکل دستوری آن به صورت :
If condition Then
Code block
End If
وقتی شرط برابر True می گردد، جملات اجرایی اجرا می گردند، و سپس کدهای بعد از End If اجرا می گردند. اگر شرط برابر با مقدار False باشد، جملات اجرایی رد شده و فقط هر چیزی که بعد از End If آمده است اجرا می گردد .
If…Then…Else statements
گاهی اوقات مفید است که یک قطعه از کد فقط اجرا گردد که شرط ما غلط است. شما می توانید با اضافه کردن یک عبارت Else به ساختار If…then این کار را انجام دهید.
If condition Then
Code block1
Else
Code block 2
End If
حالا اگر If condition برابر با مقدار True بود، Code block1 اجرا می شود.ومقدار شرط برابر با False بود، کد بلوک 2 اجرا می گردد .

2-3-15-ساختار کنترلی منطق حلقوی:
منطق حلقه ای به شما اجازه می دهد تا کدهایی را بنویسید که چندین بار اجرا می گردند. منطق حلقه یک بلوک از کدها را به صورت تکراری اجرا می نماید البته تا وقتی که شرط معینی اتفاق بیافتد یا هنگامی که شرط معینی درست باشد.
* عبارت Do…Loop :
Do…Loop یکی از دو شکل را می تواند داشته باشد. شکل اول Do While…Loop یک بلوک از کد را تا هنگامی که شرط معینی درست باشد اجرا می کند. نوع دوم Do Until…Loop یک بلوک از کد را تا وقتی که به یک شرط معین برسد اجرا می کند.
* Do While…Loop :
شکل عبارت Do While…Loop به صورت زیر است:
Do While Condition
Code block
Loop
کد بلوک تا زمانی که شرط درست است اجرا می گردد. اگر شرط False باشد برای بار اول عبارت Do اجرا می گردد، اما حلقه هیچگاه تکرار نمی گردد.
* Do Until …Loop :
عبارت Do Until…Loop بسیار شبیه عبارت Do While…Loop می باشد. تنها فرق آن با Do Until…Loop در این است که در Do Until…Loop حلقه تا زمانی اجرا می گردد که شرط True شود نه False . هر کاری که یکی از آنها می تواند انجام دهند حلقه نوع دوم نیز می تواند انجام دهد.
* عبارتهای For each …Next :
ساختار For each …Next برای تکرار کردن هر عنصر در یک گروه مورد استفاده قرار می گیرد. فرض کنید که یک آرایه از نام کاربران دارید و می خواهید هر نام را بر روی صفحه نمایش چاپ کنید. یکی از راه حلها، استفاده از For each …Next و یک شمارنده می باشد.
For icounter=0 to Arraysize
Response.write(arrusernames(icounter))
Next
برای یک راه حل دیگر می توان از For each …Next استفاده نمود.
For each strname in arrusernames
Response.write(strname)
Next
وقتی شما می خواهید یکسری از اشیاء را انتخاب نمایید، استفاده از For each …Next را مفید تر می یابید.

2-3-16-ساختارکنترلی منطق انشعابی:
منطق انشعابی به دو نوع دیگر از ساختارهای کنترلی وابستگی نزدیکی دارد. این منطق به این صورت است که جریان عادی برنامه را قطع کرده و از یک مرحله دیگر را اجرا می کند. دو نوع کنترل منطق انشعابی وجود دارد. Subroutines و function . سابروتین ها کارها را انجام می دهند. توابع مقادیر را محاسبه می کنند.

2-3-17-استفاده از سابروتین ها:
سابروتین ها (همچنین procedures نیز نامیده می شوند.) عملیاتی را انجام می دهند. یک نمونه سابروتین در زیر بیان شده است :
End sub
Code block
Sub name

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

2-3-18-استفاده از توابع:
توابع مقادیر را مورد پردازش قرار می دهند. سابروتین ها با هیچ مقداری مساوی نمی باشند. تنها راهی که شما می توانید یک سابروتین را فراخوانی کنید به کار بردن نام آن در یک خط می باشد. در عوض توابع مقادیر را برمی گردانند. به این معنی که فراخوانی توابع را می توانیم در داخل یک عبارت محاسباتی انجام دهیم تا چیزهایی را با یکدیگر جمع نماید و از این قبیل …
ایجاد یک تابع بسیار شبیه ایجاد سابروتین می باشد. به جای sub عبارت Function را قرار داده و به جای End Sub عبارت End Function را جایگزین نمایید. مهمتر از همه اینکه شما باید یک خط که می گوید چه مقداری از تابع برگشت داده شود را در داخل آن قرار دهید. خط مزبور چیزی شبیه خط زیر می تواند باشد.
Function-name = some-value
اگرلازم باشد که به صورت ناگهانی به کا رسابروتین یا تابع پایان دهید ازExit Function یا Exit subroutine استفاده نمایید.

2-3-19-کار کردن با آبجکت ها :
آبجکت ها به افزایش سطح تجرد در صفحه هایتان کمک می نماید. استفاده از توابع در ساده تر کردن و خواناتر کردن کدهایتان کمک می کنند و آبجکت ها نیز که در سطح بعدی قرار دارند همین مزایا را دارند.
VBScript به صورت پیش فرض دارای شش آبجکت مهم می باشد که ما تنها دو آبجکت بسیار مهم و کاربردی Response وRequest را بصورت مختصر شرح می دهیم.
* آبجکت Response : Response برای فرستادن مقدار به خروجی مورد استفاده قرار می گیرد. متد write خروجی را به مرورگر کاربران وب ارسال می نماید. آبجکت Response همچنین می تواند کنترل کند که چطور و کی اطلاعات فرستاده شوند . کوکیها بعنوان اطلاعات ذخیره ای نوشته شوند.
* آبجکت Request : این آبجکت برای گرفتن اطلاعات از client مورد استفاده قرار می گیرد. وقتی که مرورگر وب سرویس گیرنده تقاضای یک صفحه ویژه را می نماید این آبجکت حجمی از اطلاعات را برای سرویس دهنده ارسال می کند. این اطلاعات در داخل آبجکت Request بسته بندی می شوند. مقداری از این داده ها برای صفحه درخواست شده مفید می باشند و بقیه ممکن است مفید نباشند. آبجکت Request به صفحات اجازه می دهد که اطلاعات مورد نیاز خود را دریافت نمایند- مثل اطلاعات کوکی , اطلاعات از یک فرم , پرس و جو اطلاعات رشته و چیزهای دیگر.
Request.form( );

2-3-20-توابع Write و Redirect :
* تابع Response.Write : Response.Writeاستفاده می شود تا ASP موجود روی سرویس دهنده را به شکل HTML که مرورگر وب کاربران نشان می دهد، تبدیل نماید. برای مثال، به کد زیر توجه نمایید.

<B>
<% Response.Write "hello" %>
</B>
متن hello به خروجی فرستاده می شود. برای کاربر عبارت <B> hello</B> می باشد. بنابراین در مرور گر وب کاربر کلمه hello را به صورتی که bold شده باشد خواهد دید.
* تابع Response.Redirect : URL Response.Redirect کاربر را به صفحه ای که آرگومان URL مشخص می کند می برد.
اگر آدرس مزبور در همان سایت باشد یک URL وابسته کار خواهد کرد. اگر آدرس مربوط در سایت دیگری باشد، باید آدرس کامل شامل عبارت http:// به کار برده شود.
نکته: URL = Response.Redirect معادل با URL Response.Redirect می باشد.

2-3-21-فرم ها :
یک فرم دو وظیفه دارد : جمع آوری اطلاعات از کاربر و فرستادن آن اطلاعات به یک صفحه وب دیگر، برای انجام عمل پردازش بر روی آنها. بنا براین با استفاده از فرم، یک صفحه ASP می تواند ورودیهای کاربر را دریافت نماید و تصمیمهای برنامه ریزی شده ای را بر روی ورودیها اعمال نماید. فرم ها همچنین به کاربران اجازه وارد کردن اطلاعات را با استفاده از متغیرهای ورودی می دهند ( همانند text box ها، list ها و Radio button ها).
برای استفاده از فرم ها در FrontPage از منوی Insert/form می توانیم استفاده کنیم.
ابتدا از این منو و از قسمت Form گزینه Form را انتخاب میکنیم تا در صفحه یک کادر بصورت نقطه چین و دو Button که نام یکیSubmit و نام دیگریReset ظاهر شود. سپس روی کادر نقطه چین دار کلیک راست کرده و گزینه Form properties را انتخاب میکنیم. یک پنجره باز می شود Radio button ای که جلوی آن نوشته شده Send to other را فعال می کنیم. سپس روی دکمه Option کلیک می کنیم یک پنجره باز می شود در قسمت Action نام صفحه ای که قرار است با آن ارتباط بر قرار شود را تایپ می کنیم. در قسمت Method گزینه Post و یا Get را انتخاب می کنیم.
تفاوت بین Get و Post :
دو راه برای عبور اطلاعات از یک فرم به یک صفحه Asp وجود دارد.متد استفاده از Querystring می باشد. این متد وقتی مورد استفاده قرار می گیرد که خصوصیت Method فرم به Get تنظیم شده باشد. متد دیگر، Post ، اطلاعات کاربر را با استفاده نکردن از Querystring پنهان می کند.
Querystring : اطلاعات اضافه ای می باشند که با چسبیدن به انتهای URL برای صفحه وب ارسال می گردند.
بانک اطلاعاتی :
بانکهای اطلاعاتی بهترین کارایی را برای ذخیره اطلاعاتی بزرگ ایجاد می کنند. بانکهای اطلاعاتی برای ساده کردن پردازش ذخیره و بازیابی اطلاعات طراحی می شوند. اتصال به یک بانک اطلاعاتی، و انتقال اطلاعات هزینه سنگینی دارد. بانکهای اطلاعات فقط برای ذخیره مقادیر عظیم اطلاعات برای پریودهای زمانی طولانی مورد استفاده قرار می گیرند.
اگر شما نیاز به ذخیره اطلاعاتی درباره سرویس گیرنده های شرکتهایی که با آنها تجارت می کنید دارید، از بانک اطلاعاتی استفاده کنید.

2-3-22-ارتباط با یک بانک اطلاعاتی :
قبل از اینکه بتوانید کاری با یک بانک اطلاعاتی انجام دهید باید با آن ارتباط برقرار نمایید . آبجکت connectionبرای نگهداری اطلاعاتی در مورد بانک اطلاعاتی که میخواهید به آن دسترسی پیدا نمایید استفاده می شود. این آبجکت به همان شیوه ای که کامپوننت هایتان را می ساختید با استفاده از server.createobject ایجاد می گردد:
Dim objconn
Set objconn=server.createobject("ADODB.Connection")
مواقع زیادی پیش می آید که مایلید با چندین بانک اطلاعاتی به صورت همزمان ارتباط برقرار نمایید. ممکن است از چندین بانک اطلاعاتی Access یا مخلوطی از بانک های اطلاعاتی اکسس ، اوراکل و SQL استفاده نمایید. در این موارد باید از چندین نمونه از آبجکت connection استفاده نمایید .

2-3-23-کار کردن با بانک های اطلاعاتی با استفاده از ASP :
برای ایجاد یک بانک اطلاعاتی با استفاده از Access 2003 ، Access را اجرا کنید. سپس از منوی فایل گزینه New را انتخاب کنید. در سمت چپ یک پنجره باز می شود. روی گزینه Blank database کلیک کنید. یک پنجره باز می شود که از شما محل ذخیره شدن بانک اطلاعاتی را سوال می کند. پس از مشخص نمودن محل روی Save کلید کنید یک پنجره باز می شود که دارای سه گزینه می باشد گزینه Create Table in Design View را انتخاب کنید. اکنون یک ماتریس با سه ستون و چندین سطر را مشاهده می نمایید. در قسمت Field name نام ستون را وارد می کنید. ودر قسمت Data Type نوع را مشخص میکنید . وقتی که همه اطلاعات مورد نیاز را وارد کردید کمی به پیش رفته و این جدول را با انتخاب منوی File و گزینه Save ذخیره نمایید. اکنون باید برای جدول یک نام را وارد کنید ودکمه ok را کلیک کنید. وقتی دکمه ok را برای ذخیره جدول بانک اطلاعاتی خود کلیک می کنید، به شما هشدار داده می شود که هیچ کلید اصلی را تعریف نکرده اید. پس یک فیلد را به عنوان کلید با انتخاب آیکن کلید در نوار استاندارد انتخاب کنید سپس دوباره ذخیره کنید.
برای شروع Design View را ببندید. سه گزینه ای که در ابتدا به شما نشان داده شده بود را می بینید، علاوه بر اینکه یک آیتم چهار گزینه ای وجود دارد- جدولی که ایجاد کرده اید را می توانید ببنید.
برروی نام جدول دو بار کلیک کرده انجام این کار یک پنجره جدید باز می کند که شامل ماتریسی است که جدول را نشان می دهد.
برای ارتباط برقرار کردن با یک بانک اطلاعاتی از طریق یک صفحه ASP ، نیاز به استفاده از کامپوننت ActiveX Data Objects (ADO) دارید. این کامپوننت تعدادی از آبجکت هایی را که می توان از آنها برای اتصال و پرس و جو کردن بانک اطلاعاتی استفاده کرد را فراهم می کند.
ActiveX Data Objects (ADO) به همراه ASP آمد و به صفحاتتان اجازه می دهد که براحتی به بانک های اطلاعاتی اتصال بر قرار نمایند. ADO با هر منبع OLEDB که شامل منابع سازگار با ODBC می باشند کار می کند. بنابراین، با بیشتر بانک های اطلاعاتی فعلی کار خواهد کرد.
مدل ADO دارای شش آبجکت می باشد. از بین این آبجکت ها، امروزه فقط آبجکت Recordset، Connection مورد استفاده قرار می گیرند.

2-3-24-آبجکت Connection:
شما را به منبع اطلاعات متصل می نماید. بر قراری اتصال، اولین مرحله برای کار کردن با بانک های اطلاعاتی می باشد.
این آبجکت به همان شیوه ای که کامپوننت ها ساخته می شوند ساخته می شود با استفاده از server.createobject ایجاد می گردد:
Dim objconn
Set objconn=server.createobject("Adodb.connection")
برای اتصال به بانک دو روش وجود دارد:
1. استفاده از سیستم DSN
2. استفاده از یک ارتباط DSN-Less
در اینجا فقط روش DSN-Less را توضیح می دهیم:
در اینجا یک پیشنهاد برای استفاده از سیستم DSN وجود دارد. به جای قرار دادن اطلاعات در داخل DSN ، می توانید آن را در داخل یک رشته ارتباطی قرار دهید. به مثال زیر توجه کنید.
cnn.connectionstring="driver={Microsoft Access Driver (*.mdb)};" &- "DBQ=e:db3.mdb"
خط DBQ= تعیین می کند که در کجای سرویس دهنده بانک اطلاعاتی قرار داده شده است. این باید مسیر کامل فیزیکی باشد.
باز کردن اتباط: برای باز کار کردن از متد Open آبجکت connection استفاده می شود:
Objconn.open
<%
Dim objconn
objconn=server.createobject("ADODB.connection")
Objconn.open
%>
بستن یک ارتباط: برای بستن یک ارتباط از متد close آبجکت connection استفاده می شود:
Objconn.close

2-3-25-آبجکت Recordset :
به شما اجازه می دهد که با داده های موجود در جدول کار کنید. آبجکت Recordset دارای مجموعه ای از سطرهای یک جدول می باشد. این آبجکت را می توان برای خواندن سطرهای یک جدول، تغییر دادن سطرهای یک جدول، یا اضافه کردن مجموعه ای از داده های جدید به جدول استفاده نمود.
در ابتدا نیاز به یک نمونه از آبجکت Recordset دارید. در اینجا چگونگی بدست آوردن آن را نشان می دهیم:
Dim objrs
Set objrs=server.createobject("Adodb.Recoerdset")
2-3-26-متد Open :
آبجکت Recordset با استفاده از متد Open پر از رکوردها می گردد. متد Open می تواند مجموعه زیادی از آرگومانهای متفاوت را بپذیرد و می توان آن را از راههای گوناگون مورد استفاده قرار داد. معمولاً این متد به صورت زیر استفاده می شود:
Recordset.open source, connection, cursortype, locktype, commandtype
Source یک آبجکت command یا یک رشته شامل دستور مشخص شده ای می باشد. Connection یک آبجکت connection یا یک رشته شامل اطلاعات ارتباطی می باشد. اگر از رشته استفاده شود، باید شامل همه اطلاعاتی که خاصیت connectionstring آبجکت connection دارد، باشد.
Cursortype راهی که می خواهید از میان رکودست ها عبور کنید را تعیین می کند. به صورت پیش فرض مقدار آن ثابت adopenForwardonly می باشد که در بیشتر انواع cursor مورد استفاده قرار می گیرد. adopenForwardonly معین می کند که می توانید در داخل رکورد ستها فقط به سمت جلو حرکت نمایید.
Locktype مربوط به این می باشد که آیا می توانید چیزی را در داخل جدول بنویسید و اگر می توانید چگونه؟ مقدار پیش فرض برای locktype ثابت ADO ی adlockReadonly می باشد، معنی آن این است که فقط می توانید اطلاعات جدول را بخوانید و نمی توانید چیزی را به داخل آن جدول بنویسید.
Commandtype تعیین می نماید که پارامتر source چگونه باید مورد ارزیابی قرار کیرد. در این لحظه ، از ثابت ADO ی adcmdtable استفاده می کنیم.
2-3-27-استفاده از adovbs.inc :
ثابتهای موجود در آبجکت Recordset بصورت پیش ساخته در ASP وجود ندارند. شما می توانید آنها را هر زمانی که به آنها احتیاج دارید تعریف نمایید یا می توانید از فایل adovbs.inc که شامل همه ثابتهای تعریف شده برای ADO می باشد، استفاده نمایید. این فایل به همراه IIS وجود دارد و در مسیر C:program Filecommon Filessystemado به صورت پیش فرض نصب می شود. این فایل را در دایرکتوری ریشه وب خود کپی کنید و آنرا به صفحه ای که می خواهید از ثابتها در آن استفاده می نمایید، به صورت زیر ملحق نمایید:
<!– # incluce virtual="/ adovbs.inc"–>
:Movenext اشاره گر را به رکورد بعدی می برد.
BOF : یک مقدار Boolean می باشد که هنگامی که هنوز در ابتدای recordset قرار دارید مقدار آن True می باشد.
EOF : یک مقدار Boolean می باشد که اگر به انتهای رکرد ست رسیده باشید مقدار آن True می باشد.
مثال:
Do while not objrs.eof
تا زمانیکه به آخر رکورد ست نرسیده ای ادامه بده

2-3-28-درج کردن رکوردها :
خواندن اطلاعات از بانک اطلاعاتی دارای محدودیت می باشد. قدرت واقعی سایت های وب Data-Driven در توانایی اضافه کردن و تغییر دادن اطلاعات در صفحات شما آشکار می شود. این تواناییها می تواند شامل اجازه دادن به کاربران برای رجیستر شدن بر روی سایت امکان خرید کردن و امکان باز خورد کردن باشد. توانایی در اضافه کردن داده ها به بانک اطلاعاتی در بیشتر سایت های data-driven کار بسیار سختی می باشد. رجیستر کردن کاربران جدید , رکوردهای خرید , اضافه کردن مندرجات و موارد دیگر جزو این قابلیت می باشند.
آبجکت Recordset دو متد دارد که شما می توانید از آنها برای ایجاد تغییر بر روی بانک اطلاعاتی استفاده نمایید: متد Update و متدAddNew . متدAddNew یک رکورد جدید را در داخل رکوردست ایجاد می نماید. رکورد جدید تا زمانی که متد update فراخوانی نشود به بانک اطلاعاتی اضافه نمی گردد. بعد از فراخوانی متدAddNew رکورد جدید به عنوان رکورد فعلی قلمداد می گردد و حتی بعد از فراخوانی متد update به عنوان رکورد فعلی باقی می ماند.
در اینجا چگونگی استفاده از متدهای Update و AddNew را به شما نشان می دهیم. فرض کنید که رکوردست Objrs به درستی باز شده است :
Objrs.AddNew
Objrs("Name")="Bill"
Objrs("Email")=whois@nothing.net
Objrs.Update

2-3-29-به روز رسانی رکوردها :
شما همچنین می توانید از متد update برای انجام تغییرات در رکوردهای موجود استفاده نمایید. به جای فراخوانی متد AddNew به سراغ رکوردیکه قصد تغییر دادن آن را دارید بروید. مقادیر فیلد را با استفاده از عملگر مساوی تنظیم نمایید. وقتی که کار شما تمام شد متد update را فراخوانی نمایید :
Objrs("username")="Fred"
Objrs("email")="f2@whatever.net"
Objrs.update

دو خط اول مقادیر فیلدهای username و email رکورد فعلی را تغییر می دهند. سپس با فراخوانی متد update این تغییرات در داخل بانک اطلاعاتی ذخیره می گردند.

2-3-30-حذف رکوردها :
متد Delete آبجکت Recordset اجازه ی پاک کردن ساده رکوردها را می دهد. متد Delete رکورد فعلی را با فراخوانی به صورت زیر پاک می نماید:
Objrs . Delete

فصل سوم : پیاده سازی سیستم

3-1-ایجاد یک پروژه در #C:
بعد از باز کردن برنامهMicrosoft Visual Studio 2008 از منوی فایل گزینه New web site را انتخاب می کنیم سپس از منوی ظاهر شده گزینه Asp.Net web site را انتخاب می کنیم وهمچنین زبان مورد نظر که برنامه را با آن می نویسیم که من در این پروژه از #C انتخاب کردم را انتخاب می کنیم وسپس برای مکان ذخیره کردن سایت از قسمت Browse مکان را مشخص می کنیم.

شکل3-1-1:ایجاد وب سایت

3-2-نحوه ایجاد صفحه اصلی یا Master page:
چون Master page در تمام صفحات وب که در قسمت بعد ایجاد کنیم تکرار می شود باید امکانات مشترکی که همه صفحات نیاز دارند را داشته باشد.

3-2-1-نحوه طراحی Master page :
از منوی Web site گزینه Add New Item را انتخاب می کنیم از منوی ظاهر شده گزینه Master page را بر می گزینیم.

3-2-1-1 نحوه طراحی Master page

3-2-2-اضافه کردن عکس به صفحه اصلی:
پس از ایجاد صفحه اصلی از قسمت ToolBox یک Image به صفحه اضافه می کنیم.

شکل 3-2-2-1: اضافه کردن عکس به صفحه اصلی

سپس آن را انتخاب کرده و بر روی آن کلیک راست کرده و گزینه Properties را انتخاب می کنیم در قسمت Properties در بخش Image url آدرس فایل عکس را مشخص می کنیم.

شکل3-2-2-2: تنظیمات مربوط به مسیر عکس

3-3-نحوه ایجاد Gride view های مورد نیاز و کد نویسی مربوط به آنها:
3-3-1-نحوه ایجاد Gride view مربوط به لینکهای اصلی:
از قسمت ToolBox یک Gride view به صفحه اضافه می کنیم و با انتخاب Grid view Task وسپس Edit columns تعداد ستونهای مورد نظر را ایجاد کرده که من در این قسمت یک ستون را انتخاب کردم و عنوان آن را لینکهای اصلی قرار داده ام.

شکل 3-3-1-1: تنظیمات مربوط بهGridview

3-3-2-نحوه ایجاد Gride view مربوط به گروهای خبری:
از قسمت ToolBox یک Gride view به صفحه اضافه می کنیم و با انتخاب Grid view Task وسپس Edit columns تعداد ستونهای مورد نظر را ایجاد کرده که من در این قسمت یک ستون را انتخاب کردم و عنوان آن را گروهای خبری قرار داده ام.

3-3-3-کدهای مربوط به Gride view های لینکهای اصلی وگروهای خبری:
ابتدا با ایجاد یک تابع با نام protected void grdFill() که تمام کد های مربوط به وصل شدن به دیتا بیس و نمایش آن در Gride view در این تابع نوشته شده اند.
protected void grdFill()
{
FirstClass db = new FirstClass();
FirstClass db1 = new FirstClass();
DataTable dt = new DataTable();
DataTable dt1 = new DataTable();

dt = db.dbOut(@"SELECT TOP 100 PERCENT NewsGroupID, NewgGroupDescription FROM NewsGroups ORDER BY NewgGroupDescription");
if (Session["UserName"] == null)
{
dt1 = db1.dbOut(@"SELECT TOP 100 PERCENT linkID, MainLinkDescription, MainLinkLink, SortingID, AllowShowBita FROM MainLinks WHERE (AllowShowBita = 0) OR (AllowShowBita = 2) ORDER BY SortingID");
}
else
{
if (int.Parse(Session["UserTypeID"].ToString()) == 1)
{
dt1 = db1.dbOut(@"SELECT TOP 100 PERCENT linkID, MainLinkDescription, MainLinkLink, SortingID, AllowShowBita FROM MainLinks WHERE (AllowShowBita = 0) OR (AllowShowBita = 1) OR (AllowShowBita = 3) OR (AllowShowBita = 4) ORDER BY SortingID");
}
else if (int.Parse(Session["UserTypeID"].ToString()) == 2)
{
dt1 = db1.dbOut(@"SELECT TOP 100 PERCENT linkID, MainLinkDescription, MainLinkLink, SortingID, AllowShowBita FROM MainLinks WHERE (AllowShowBita = 0) OR (AllowShowBita = 1) OR (AllowShowBita = 4) ORDER BY SortingID");
}
else
{
dt1 = db1.dbOut(@"SELECT TOP 100 PERCENT linkID, MainLinkDescription, MainLinkLink, SortingID, AllowShowBita FROM MainLinks WHERE (AllowShowBita = 0) OR (AllowShowBita = 1) ORDER BY SortingID");
}
}

GridView2.DataSource = dt;
GridView1.DataSource = dt1;

GridView2.DataBind();
GridView1.DataBind();
fillMysiteinfo();
archiveAdd();
}
بعد از نوشتن تابع بالا درون Page_Load این کدها را وارد می کنیم.
protected void Page_Load(object sender, EventArgs e)
{
//this.EnableViewState = false;
grdFill();

if (Session["UserName"] != null)
{
Label1.Visible = true;
Panel1.Visible = false;
Label1.Text = Session["NameSname"].ToString() + "،" + Session["UserTypeDescript"].ToString() + " خوش آمدید ";
}
}

3-3-4-کد های مربوط به Gride view آرشیو خبری:
ابتدا یک تابع با نام protected void archiveAdd() درون تابع grdFill() ایجاد می کنیم و این کدها را درون آن می نویسیم.
protected void archiveAdd()
{
FirstClass db = new FirstClass();
DataTable dt = new DataTable();

dt = db.dbOut("SELECT TOP 15 ArchivedDate FROM tblNews WHERE (ArchivedBit = 1) GROUP BY ArchivedDate HAVING (ArchivedDate IS NOT NULL) ORDER BY ArchivedDate DESC");

GridView3.DataSource = dt;
GridView3.DataBind();
}

protected void fillMysiteinfo()
{
FirstClass db = new FirstClass();
DataTable dt = new DataTable();

dt = db.dbOut(@"SELECT DERIVEDTBL_3.VisitID AS BazdidHa, DERIVEDTBL.Expr1 AS khabariSiteUsers, DERIVEDTBL_1.Expr2 AS AddedNews,
DERIVEDTBL_2.Expr1 AS HasGroupsIn FROM (SELECT COUNT(UserName) AS Expr1 FROM Users
GROUP BY Banded HAVING (Banded = 0)) DERIVEDTBL CROSS JOIN (SELECT COUNT(NewsID) AS Expr2
FROM tblNews) DERIVEDTBL_1 CROSS JOIN (SELECT COUNT(NewsGroupID) AS Expr1 FROM NewsGroups) DERIVEDTBL_2 CROSS JOIN
(SELECT VisitID FROM VisitCounts) DERIVEDTBL_3");

Label2.Text = dt.Rows[0][0].ToString();
Label3.Text = dt.Rows[0][1].ToString();
Label4.Text = dt.Rows[0][2].ToString();
Label5.Text = dt.Rows[0][3].ToString();
}
در ادامه تابع grdFill() را در Page_Load صدا می زنیم.

3-3-5-کدهای مربوط به اطلاعات سیستمی:
ابتدا یک تابع با نام protected void fillMysiteinfo() درون تابع grdFill() ایجاد می کنیم و این کدها را درون آن می نویسیم.

protected void fillMysiteinfo()
{
FirstClass db = new FirstClass();
DataTable dt = new DataTable();

dt = db.dbOut(@"SELECT DERIVEDTBL_3.VisitID AS BazdidHa, DERIVEDTBL.Expr1 AS khabariSiteUsers, DERIVEDTBL_1.Expr2 AS AddedNews,
DERIVEDTBL_2.Expr1 AS HasGroupsIn FROM (SELECT COUNT(UserName) AS Expr1 FROM Users
GROUP BY Banded HAVING (Banded = 0)) DERIVEDTBL CROSS JOIN (SELECT COUNT(NewsID) AS Expr2
FROM tblNews) DERIVEDTBL_1 CROSS JOIN (SELECT COUNT(NewsGroupID) AS Expr1 FROM NewsGroups) DERIVEDTBL_2 CROSS JOIN
(SELECT VisitID FROM VisitCounts) DERIVEDTBL_3");

Label2.Text = dt.Rows[0][0].ToString();
Label3.Text = dt.Rows[0][1].ToString();
Label4.Text = dt.Rows[0][2].ToString();
Label5.Text = dt.Rows[0][3].ToString();
در ادامه تابع grdFill() را در Page_Load صدا می زنیم.

3-3-6-کدهای مربوط به دکمه ورود:
پس از ایجاد یک دکمه عنوان آن را ورود می گذاریم سپس با دابل کلیک روی آن وارد محیط کد نویسی شده و کدهای زیر را درون آن می نویسیم.
protected void Button1_Click(object sender, EventArgs e)
{
FirstClass db = new FirstClass();
DataTable dt = new DataTable();

dt = db.dbOut(@"SELECT Users.UerID, Users.UserName, Users.Password, Users.Name + N' ' + Users.Sname AS NameSname,
UserTypes.UserTypeDescript, Users.Banded, Users.UserTypeID FROM Users INNER JOIN UserTypes ON Users.UserTypeID = UserTypes.UserTypeID WHERE (Users.Banded = 0) AND (Users.UserName = N'" + TextBox1.Text.Trim() + "') AND (Users.Password = N'" + TextBox2.Text.Trim() + "')");

if (dt.Rows.Count <= 0)
{
Label1.Visible = true;
Label1.Text = "نام کاربری موجود نیست";
}
else
{
Label1.Visible = true;
Panel1.Visible = false;
Session.Add("UserName", dt.Rows[0][1].ToString());
Session.Add("NameSname", dt.Rows[0][3].ToString());
Session.Add("UserTypeDescript", dt.Rows[0][4].ToString());
Session.Add("UserTypeID", dt.Rows[0][6].ToString());
Label1.Text = Session["NameSname"].ToString() + "،" + Session["UserTypeDescript"].ToString() + " خوش آمدید ";
Response.Redirect("Default.aspx?ID=" + DateTime.Now.Ticks.ToString());
}
}

نحوه دسترسی به Events(رخداد) که می توانیم برای انها کد بنویسیم:
مثال نحوه دسترسی به Event های یک Gride view :
ابتدا برروی آن Gride view کلیک راست کرده و گزینه Properties را انتخاب می کنیم در پنجره ظاهر شده بر روی آیکن کلیک میکنیم و لیست تمام Event های که می توانیم برای آنها کد بنویسیم ظاهر می شود.

شکل 3-3-6-1: تنظیمات مربوط بهEvent Gridview

و در پایان با دابل کلیک بر روی آنها وارد محیط کد نویسی هر Event می شویم.
3- 4نحوه ایجاد صفحات وب:
از منوی Web site گزینه Add New Item را انتخاب می کنیم از منوی ظاهر شده گزینهWeb Form را بر می گزینیم.

شکل 3-4-1: ایجاد یک صفحه وب

3-5-طریقه ایجاد صفحه Default.aspx :
پس از ایجاد یک صفحه وب جدید یک Gride view به صفحه اضافه می کنیم در قسمت تنظیمات گزینه Edit templates را انتخاب می کنیم.

شکل3-5-1: طریقه ایجاد صفحه Default.aspx

درون منوی ظاهر شده label ویک Image ویک HyperLink اضافه می کنیم.

شکل 3-5-2: نحوه ایجاد صفحه Default.aspx

سپس یک تابع با نام protected void grdFill() می نویسیم وکدهای زیر را درون این تابع وارد می کنیم.
protected void grdFill()
{
FirstClass db = new FirstClass();
DataTable dt = new DataTable();

dt = db.dbOut(@"SELECT TOP 100 PERCENT dbo.tblNews.NewsID AS nwsID, dbo.tblNews.NewsTitle AS nwsTitle, dbo.NewsGroups.NewgGroupDescription AS nwsGroup,
dbo.Users.Name + N' ' + dbo.Users.Sname AS Expr1, dbo.tblNews.DateOfAdding AS nwsDtadd, dbo.tblNews.NewsPic, dbo.tblNews.newsBody, SUBSTRING(dbo.tblNews.newsBody, 1, 700) AS NewsPart, dbo.tblNews.ShowPermiss
FROM dbo.tblNews INNER JOIN dbo.Users ON dbo.tblNews.UserName = dbo.Users.UserName INNER JOIN dbo.NewsGroups ON dbo.tblNews.NewsGroupID = dbo.NewsGroups.NewsGroupID WHERE (dbo.tblNews.ArchivedBit = 0) AND (dbo.tblNews.ShowPermiss = 1)
ORDER BY dbo.tblNews.NewsID DESC");

GridView1.DataSource = dt;
GridView1.DataBind();

سپس درون Event مربوط به GridView1_PageIndexChanging این کدها را می نویسیم.
GridView1.PageIndex = e.NewPageIndex;
grdFill();

در ادامه تابع grdFill() را در Page_Load صدا می زنیم.

3-6-نحوه ساختن صفحه AddNews.aspx :
بعد از ساختن یک صفحه جدید بر روی فرم دو عدد Textbox یک DropDownList و یک FileUpload ودو دکمه ایجاد می کنیم.

شکل 3-6-1:نحوه ساختن صفحه AddNews.aspx

در ابتدای کد نویسی یک تابع با نام private string GetNameForFile()برای دریافت نام عکس ایجاد می کنیم.

private string GetNameForFile()
{
FirstClass db = new FirstClass();
string DateNow = db.dtShamsi();
DateNow = DateNow.Replace("/", "");
DateNow += DateTime.Now.Hour.ToString().Trim() + DateTime.Now.Minute.ToString().Trim() + DateTime.Now.Second.ToString().Trim();
return DateNow.Trim();
}

3-6-1-کدهای مربوط به دکمه درج خبر:
با دابل کلیک روی دکمه درج خبر کد های زیر را درون آن می نویسیم.

protected void Button1_Click(object sender, EventArgs e)
{
string ImgExtention = "";
string FileNme = "";
if (FileUpload1.HasFile)
{
ImgExtention = System.IO.Path.GetExtension(FileUpload1.FileName);
}
if (ImgExtention != "")
{
FileNme = GetNameForFile();
}
if (FileUpload1.HasFile)
{
string savePath = Server.MapPath("UploadedUserFiles") + "" + FileNme + ImgExtention;
FileUpload1.SaveAs(savePath);
}

FirstClass db = new FirstClass();

db.cmd.Parameters.Add("@NewsTitle", SqlDbType.NVarChar).Value = TextBox1.Text.Trim();
db.cmd.Parameters.Add("@NewsGroupID", SqlDbType.Int).Value = DropDownList1.SelectedValue;
db.cmd.Parameters.Add("@NewsPic", SqlDbType.NVarChar).Value = ("UploadedUserFiles") + "" + FileNme + ImgExtention;
db.cmd.Parameters.Add("@newsBody", SqlDbType.NText).Value = TextBox2.Text.Trim();
db.cmd.Parameters.Add("@DateOfAdding", SqlDbType.NVarChar).Value = db.dtShamsi();
db.cmd.Parameters.Add("@UserName", SqlDbType.NVarChar).Value = Session["UserName"].ToString();
db.cmd.Parameters.Add("@ArchivedBit", SqlDbType.Bit).Value = 0;

if (int.Parse(Session["UserTypeID"].ToString()) == 3)
{
db.cmd.Parameters.Add("@ShowPermiss", SqlDbType.Bit).Value = 0;
}
else
{
db.cmd.Parameters.Add("@ShowPermiss", SqlDbType.Bit).Value = 1;
}

db.exeCommand("sp_tblNews_Insert");
txtClear();

3-6-2-کدهای مربوط به دکمه بازنشانی:
ابتدا یک تابع با نام protected void txtClear() می نویسیم و کد زیر را درون آن وارد می کنیم.
protected void txtClear()
{
TextBox1.Text = "";
TextBox2.Text = "";
}
سپس با دابل کلیک بر روی دکمه باز نشانی این کد ها را وارد می کنیم.
protected void Button2_Click(object sender, EventArgs e)
{
txtClear();

}

در آخر در قسمت Page_Load این کدها را وارد می کنیم.
protected void Page_Load(object sender, EventArgs e)
{
if (Session["UserName"] == null)
{
Response.Redirect("Default.aspx?ID=" + DateTime.Now.Ticks.ToString());
}

if (!IsPostBack)
{
FirstClass db = new FirstClass();
DataTable dt = new DataTable();

dt = db.dbOut("SELECT TOP 100 PERCENT NewsGroupID, NewgGroupDescription FROM NewsGroups ORDER BY NewgGroupDescription");

DropDownList1.DataSource = dt;

DropDownList1.DataTextField = "NewgGroupDescription";
DropDownList1.DataValueField = "NewsGroupID";
DropDownList1.DataBind();}}
3-7-نحوه طراحی صفحه گروه های خبری:
این صفحه برای مدیر ارشد سایت وکاربرانی که مدیر ارشد انها را به عنوان مدیر انتخاب می کند قابل دسترسی است.
بعد از ساختن یک صفحه جدید یک Textbox و دو دکمه یک GridView دو RequiredFieldValidator برای کنترل خالی یا پر بودن Textbox در این صفحه استفاده شده.

شکل3-7-1: نحوه طراحی صفحه گروه های خبری

ابتدا یک تابع با نام protected void grdFill() ایجاد می کنیم وکدهای زیر را در آن وارد می کنیم.

protected void grdFill()
{
FirstClass db = new FirstClass();
DataTable dt = new DataTable();

dt = db.dbOut(@"SELECT TOP 100 PERCENT NewsGroups.NewsGroupID AS nwsID, NewsGroups.NewgGroupDescription AS nwsGroup,
COUNT(tblNews.NewsGroupID) AS cntArts FROM NewsGroups LEFT OUTER JOIN tblNews ON NewsGroups.NewsGroupID = tblNews.NewsGroupID
GROUP BY NewsGroups.NewsGroupID, NewsGroups.NewgGroupDescription ORDER BY NewsGroups.NewsGroupID DESC");

GridView1.DataSource = dt;
GridView1.DataBind();
}
سپس یک تابع دیگر با نام protected void dbFill() ایجاد کرده وکدهای زیر را وارد آن می نماییم.
protected void dbFill()
{
FirstClass db = new FirstClass();
db.cmd.Parameters.Add("@NewgGroupDescription", SqlDbType.NVarChar).Value = TextBox1.Text.Trim();

db.exeCommand("sp_NewsGroups_Insert");
grdFill();
TextBox1.Text = "";
}
3-7-1-کدهای مربوط به دکمه درج گروه خبری:
با دابل کلیک روی دکمه درج کدهای زیر را وارد آن می کنیم.

protected void Button1_Click(object sender, EventArgs e)
{
Label3.Visible = false;
FirstClass db = new FirstClass();
DataTable dt = new DataTable();

dt = db.dbOut("SELECT TOP 1 NewgGroupDescription FROM NewsGroups WHERE (NewgGroupDescription = N'"+ TextBox1.Text.Trim() +"')");
if (dt.Rows.Count <= 0)
{
dbFill();
}
else
{
Label3.Visible = true;}}
3-7-2-کدهای مربوط به دکمه بازنشانی:
با دابل کلیک روی دکمه بازنشانی کدهای زیر را وارد آن می کنیم.
protected void Button2_Click(object sender, EventArgs e)
{
TextBox1.Text = "";
}

کدهای که در قسمت Page_Load باید نوشته شوند.

protected void Page_Load(object sender, EventArgs e)
{
if (Session["UserName"] != null)
{
if (int.Parse(Session["UserTypeID"].ToString()) == 1)
{
if (!IsPostBack)
{
grdFill();
}
}
else
{
Response.Redirect("Default.aspx?ID=NotHavePermission" + DateTime.Now.Ticks.ToString());
}
}
else
{
Response.Redirect("Default.aspx?ID=NotHavePermission" + DateTime.Now.Ticks.ToString()); }}
سپس در قسمت Event مربوط به GridView1_PageIndexChanging این کدها را وارد می کنیم.
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
grdFill();
}
کدهای مربوط به حذف کردن یک رکورد را در قسمت Event مربوط به GridView را در قسمت GridView1_RowDeleting وارد می کنیم که شامل کدهای زیر است.

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
FirstClass db = new FirstClass();
int usrDelKey = (int)GridView1.DataKeys[e.RowIndex].Value;
db.cmd.Parameters.Add("@NewsGroupID", SqlDbType.Int).Value = usrDelKey;
db.exeCommand("sp_NewsGroups_DeleteRow");
grdFill();
}
کدهای مربوط به ویرایش یک رکورد ازGridView را در قسمتEvent مربوط به GridView1_RowEditing وارد می کنیم که شامل کدهای زیر هستند.
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
grdFill();
}
کدهای مربوط به لغو ویرایش یک رکورد از GridView را در قسمت Event مربوط به GridView1_RowCancelingEdit وارد می کنیم که شامل کدهای زیر هستند.
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
grdFill();
}

کدهای مربوط به ویرایش یک رکورد از GridView را در قسمت Event مربوط به GridView1_RowUpdating وارد می کنیم که شامل کدهای زیر هستند.
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
FirstClass db = new FirstClass();
Label lbl = new Label();
string txtNewsGroup = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
lbl = ((Label)GridView1.Rows[e.RowIndex].FindControl("Label1"));
db.cmd.Parameters.Add("@NewsGroupID", SqlDbType.Int).Value = int.Parse(lbl.Text.Trim());
db.cmd.Parameters.Add("@NewgGroupDescription", SqlDbType.NVarChar).Value = txtNewsGroup;
db.exeCommand("sp_NewsGroups_Update");
GridView1.EditIndex = -1;
grdFill();
}

3-7-3-نحوه طراحی صفحه ثبت نظرات:
این صفحه از چهار Textbox و چهار RequiredFieldValidator برای اعتبار سنجی Textbox ها و دو دکمه ویک GridView تشکیل شده.

شکل 3-7-3-1: نحوه طراحی صفحه ثبت نظرات

ابتدا یک تابع با نام protected void voteAdd() ایجاد کرده وکدهای زیر را درون آن می نویسیم.
protected void voteAdd()
{
try
{
Label4.Visible = false;
string text1 = Dns.GetHostName(), text2;
text2 = Dns.GetHostByName(text1).AddressList[0].ToString();
FirstClass db = new FirstClass();
db.cmd.Parameters.Add("@newsID", SqlDbType.Int).Value = int.Parse(Request.QueryString["NewsID"].ToString());
db.cmd.Parameters.Add("@SenderIP", SqlDbType.NVarChar).Value = text2;
db.cmd.Parameters.Add("@VoterNameSname", SqlDbType.NVarChar).Value = TextBox1.Text.Trim();
db.cmd.Parameters.Add("@VoterEmail", SqlDbType.NVarChar).Value = TextBox2.Text.Trim();
db.cmd.Parameters.Add("@VoteBody", SqlDbType.NVarChar).Value = TextBox3.Text.Trim();
db.cmd.Parameters.Add("@voterWebSite", SqlDbType.NVarChar).Value = TextBox4.Text.Trim();
db.cmd.Parameters.Add("@DateOfVoting", SqlDbType.NVarChar).Value = db.dtShamsi();
if (Session["UserName"] != null)
{
if (int.Parse(Session["UserTypeID"].ToString()) == 1)
{
db.cmd.Parameters.Add("@allowShowBit", SqlDbType.Bit).Value = 1;
}
else
{
db.cmd.Parameters.Add("@allowShowBit", SqlDbType.Bit).Value = 0;}}
else
{
db.cmd.Parameters.Add("@allowShowBit", SqlDbType.Bit).Value = 0;
}
db.exeCommand("sp_tblVotes_Insert");
texClear();
grdFill();
Label4.Visible = true;
Label4.Text = "نظر شما درج شد و پس ازآن نمایش خواهدداده شد";
}
catch
{
Label4.Visible = true;
Label4.Text = "شما قبلا یکبار نظر داده اید ";
}
}

یک تابع دیگر با نام protected void grdFill() ایجاد می کنیم و کدهای زیر را وارد آن می کنیم.

protected void grdFill()
{
FirstClass db = new FirstClass();
DataTable dt = new DataTable();
dt = db.dbOut(@"SELECT TOP 100 PERCENT VoteID, newsID, VoterNameSname, VoteBody, DateOfVoting, voterWebSite, allowShowBit FROM tblVotes WHERE (allowShowBit = 1) AND (newsID = '" + int.Parse(Request.QueryString["NewsID"].ToString()) + "')");
GridView1.DataSource = dt;
GridView1.DataBind();
}

و یک تابع دیگر برای خالی کردن Textbox ها با نام protected void texClear() ایجاد می کنیم و کدهای زیر را در آن وارد می کنیم.
protected void texClear()
{
TextBox1.Text = "";
TextBox2.Text = "";
TextBox3.Text = "";
TextBox4.Text = "";
}

کدهای مربوط به Page_Load صفحه:
protected void Page_Load(object sender, EventArgs e)
{
grdFill();{
3-7-4-کدهای مربوط به دکمه درج نظرات :
با دابل کلیک روی دکمه درج در قسمت کد نویسی این کدها را وارد می کنیم.
protected void Button1_Click(object sender, EventArgs e)
{
voteAdd();
}
3-7-5-کدهای مربوط به دکمه بازنشانی :
با دابل کلیک روی دکمه باز نشانی در قسمت کد نویسی این کدها را وارد می کنیم.
protected void Button2_Click(object sender, EventArgs e)
{
texClear();
}

سپس در قسمت Events بخش GridView1_PageIndexChanging کدهای زیر را وارد می کنیم.
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
grdFill();
}

3-8-نحوه ایجاد صفحه ارتباط با ما:
این صفحه از شش Textbox ویک Image تشکیل شده است که در هنگام ایجاد Textbox قسمت متن آنها را با جمله مناسب پر می کنیم.

شکل 3-8-1: نحوه ایجاد صفحه ارتباط با ما
در ادامه بر روی Image کلیک راست کرده و در قسمت Properties محل قرارگیری فایل مربوط به عکس را در قسمت Image url مشخص می کنیم.

3-9-نحوه ایجاد صفحه ایجاد آرشیو:
این صفحه فقط برای مدیر ارشد قابل دسترسی است و مدیر می تواند خبرهای که قبلا بر روی سایت قرار گرفته اند را ارشیو کند واین صفحه از یک GridView تشکیل شده کدهای مربوط به آن را در پایین می بینید.
ابتدا یک تابع با نام protected void grdFill() ایجاد می کنیم و کدهای زیر را در آن می نویسیم.
protected void grdFill()
{
FirstClass db = new FirstClass();
DataTable dt = new DataTable();
dt = db.dbOut("SELECT TOP 100 PERCENT NewsID, NewsTitle, DateOfAdding, ArchivedBit FROM tblNews WHERE (ArchivedBit = 0) ORDER BY NewsID");
GridView1.DataSource = dt;
GridView1.DataBind();{
سپس در قسمت Page_Load این کدها را وارد می کنیم.
protected void Page_Load(object sender, EventArgs e)
{
if (Session["UserTypeID"] == null)
{
Response.Redirect("Default.aspx?ID=NotHavePermission&NextID=" + DateTime.Now.Ticks.ToString());
}
Else}
if (int.Parse(Session["UserTypeID"].ToString()) == 3 || int.Parse(Session["UserTypeID"].ToString()) == 2)
{
Response.Redirect("Default.aspx?ID=NotHavePermission&NextID=" + DateTime.Now.Ticks.ToString());
}
else
{
if (!IsPostBack)
{
grdFill(); {{{{
سپس درون Event مربوط به GridView1_SelectedIndexChanged این کدها را می نویسیم.
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
FirstClass db = new FirstClass();
String nwsEdtKey = GridView1.SelectedValue.ToString();
db.cmd.Parameters.Add("@NewsID", SqlDbType.Int).Value = int.Parse(nwsEdtKey);
db.cmd.Parameters.Add("@ArchivedBit", SqlDbType.Bit).Value = 1;
db.cmd.Parameters.Add("@ArchivedDate", SqlDbType.NVarChar).Value = db.dtShamsi();
db.exeCommand("sp_tblNews_Update4");
grdFill();
}
و در آخر درون Event مربوط به GridView1_PageIndexChanging این کدها را می نویسیم.
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
grdFill();
}

3-9-1-نحوه ایجاد صفحه تایید خبر:
این صفحه فقط برای مدیر ارشد قابل دسترسی است و مدیر می تواند خبرهای که خبر نگاران درون پاپگاه داده سایت قرار داده اند را تایید یا حذف کند و این صفحه از یک GridView تشکیل شده کدهای مربوط به آن را در پایین می بینید.
ابتدا یک تابع با نام protected void grdFill() ایجاد می کنیم و کدهای زیر را در آن می نویسیم.
protected void grdFill()
{
FirstClass db = new FirstClass();
DataTable dt = new DataTable();
dt = db.dbOut(@"SELECT tblNews.NewsID, tblNews.NewsTitle, NewsGroups.NewgGroupDescription, Users.UserName,
Users.Name + N' ' + Users.Sname AS Expr1, tblNews.DateOfAdding, Users.EMail1 FROM tblNews INNER JOIN
NewsGroups ON tblNews.NewsGroupID = NewsGroups.NewsGroupID INNER JOIN
Users ON tblNews.UserName = Users.UserName WHERE (tblNews.ShowPermiss = 0)");
GridView1.DataSource = dt;
GridView1.DataBind();
}
سپس این کدها را درون Page_Load قرار می دهیم:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["UserName"] != null)
{
if (int.Parse(Session["UserTypeID"].ToString()) == 1)
{
grdFill();
}
else
{
Response.Redirect("Default.aspx?ID=NotHavePermission" + DateTime.Now.Ticks.ToString());
}
}
else
{
Response.Redirect("Default.aspx?ID=NotHavePermission" + DateTime.Now.Ticks.ToString());{{
سپس درون Event مربوط به GridView1_SelectedIndexChanged این کدها را می نویسیم.
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
FirstClass db = new FirstClass();
String nwsEdtKey = GridView1.SelectedValue.ToString();
db.cmd.Parameters.Add("@NewsID", SqlDbType.Int).Value = int.Parse(nwsEdtKey);
db.cmd.Parameters.Add("@ShowPermiss", SqlDbType.Bit).Value = 1;
db.exeCommand("sp_tblNews_Update3");
grdFill();
}
سپس درون Event مربوط به GridView1_PageIndexChanging این کدها را می نویسیم.
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
grdFill();
}
سپس درون Event مربوط به GridView1_RowDeleting این کدها را می نویسیم.
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int nwsEdtKey = (int)GridView1.DataKeys[e.RowIndex].Value;
FirstClass db = new FirstClass();
db.cmd.Parameters.Add("@NewsID", SqlDbType.Int).Value = nwsEdtKey;

db.exeCommand("sp_tblNews_DeleteRow");
grdFill();
}

شکل3-9-1-1: نحوه ایجاد صفحه تایید خبر

3-9-2-نحوه ایجاد صفحه ویرایش خبر:
این صفحه فقط برای مدیر ارشد قابل دسترسی است که خود از دو صفحه تشکیل شده یک صفحه برای انتخاب خبر برای ویرایش و صفحه دوم برای ویرایش خبر انتخاب شده و مدیر می تواند خبرهای که خبر نگاران درون پاپگاه داده سایت قرار داده اند را ویرایش یا حذف کند.

3-9-3-نحوه ایجاد صفحه انتخاب خبر برای ویرایش:
و این صفحه از یک GridView تشکیل شده کدهای مربوط به آن را در پایین می بینید.
ابتدا یک تابع با نام protected void grdFill() ایجاد می کنیم و کدهای زیر را در آن می نویسیم.
protected void grdFill()
{
FirstClass db = new FirstClass();
DataTable dt = new DataTable();

if (int.Parse(Session["UserTypeID"].ToString()) == 1)
{
dt = db.dbOut("SELECT TOP 100 PERCENT NewsID, NewsTitle FROM tblNews WHERE (ShowPermiss = 1) ORDER BY NewsID DESC");
}
else
{
dt = db.dbOut("SELECT TOP 100 PERCENT NewsID, NewsTitle, UserName FROM tblNews WHERE (ShowPermiss = 1) AND (UserName = N'" + Session["UserName"].ToString() + "') ORDER BY NewsID DESC");
}
GridView1.DataSource = dt;
GridView1.DataBind();
}
سپس کدهای مربوط به Page_Load را وارد می کنیم که کدهای زیر هستند.
protected void Page_Load(object sender, EventArgs e)
{
if (Session["UserTypeID"] == null)
{
Response.Redirect("Default.aspx?ID=" + DateTime.Now.Ticks.ToString());
}
else
{
if (int.Parse(Session["UserTypeID"].ToString()) == 3)
{
Response.Redirect("Default.aspx?ID=" + DateTime.Now.Ticks.ToString());
}
Else}
grdFill();{{{
سپس درون Event مربوط به GridView1_SelectedIndexChanged این کدها را می نویسیم.
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
String nwsEdtKey = GridView1.SelectedValue.ToString();
Response.Redirect("EditNews.aspx?NewsID=" + nwsEdtKey);
}

سپس درون Event مربوط به GridView1_PageIndexChanging این کدها را می نویسیم.
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
grdFill();
}
در آخر درون Event مربوط به GridView1_RowDeleting این کدها را می نویسیم.
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int nwsEdtKey = (int)GridView1.DataKeys[e.RowIndex].Value;
FirstClass db = new FirstClass();
db.cmd.Parameters.Add("@NewsID", SqlDbType.Int).Value = nwsEdtKey;
db.exeCommand("sp_tblNews_DeleteRow");
grdFill();
}
3-9-4-نحوه ایجاد صفحه ویرایش خبر:
این صفحه از دو Textbox و یک DropDownList ویک FileUpload ویک دکمه ذخیره تغییرات تشکیل شده که در ادامه کدهای مربوط به هر یک را می بینید.
ابتدا یک تابع با نام protected void dropFill() ایجاد می کنیم و کدهای زیر را در آن می نویسیم.

protected void dropFill()
{
FirstClass db = new FirstClass();
FirstClass db2 = new FirstClass();
DataTable dt = new DataTable();
DataTable dt2 = new DataTable();
dt = db.dbOut("SELECT TOP 100 PERCENT NewsGroupID, NewgGroupDescription FROM NewsGroups ORDER BY NewgGroupDescription");
dt2 = db2.dbOut("SELECT NewsID, NewsGroupID, NewsTitle, newsBody FROM tblNews WHERE (NewsID = '" + Request.QueryString["NewsID"].ToString() + "')");
DropDownList1.DataSource = dt;
DropDownList1.DataTextField = "NewgGroupDescription";
DropDownList1.DataValueField = "NewsGroupID";
DropDownList1.SelectedValue = dt2.Rows[0][1].ToString();
TextBox1.Text = dt2.Rows[0][2].ToString();
TextBox2.Text = dt2.Rows[0][3].ToString();
DropDownList1.DataBind();
}

سپس یک تابع دیگر با نام private string GetNameForFile()ایجاد کرده و کدهای زیر را درون آن می نویسیم.
private string GetNameForFile()
{
FirstClass db = new FirstClass();
string DateNow = db.dtShamsi();
DateNow = DateNow.Replace("/", "");
DateNow += DateTime.Now.Hour.ToString().Trim() + DateTime.Now.Minute.ToString().Trim() + DateTime.Now.Second.ToString().Trim();
return DateNow.Trim();
}

سپس در قسمت بعد کدهای مربوط به Page_Load را وارد می کنیم.

protected void Page_Load(object sender, EventArgs e)
{
if (Session["UserTypeID"] == null)
{
Response.Redirect("Default.aspx?ID=" + DateTime.Now.Ticks.ToString());
}
else
{
if (int.Parse(Session["UserTypeID"].ToString()) == 3)
{
Response.Redirect("Default.aspx?ID=" + DateTime.Now.Ticks.ToString());
}
else
{
if (!IsPostBack)
{
dropFill();{{{{

و در پایان کدهای مربوط به دکمه ذخیره تغییرات را با دابل کلیک روی دکمه درون آن وارد می کنیم.
protected void Button1_Click(object sender, EventArgs e)
{
FirstClass db = new FirstClass();
if (FileUpload1.HasFile)
{
string ImgExtention = "";
string FileNme = "";
if (FileUpload1.HasFile)
{
ImgExtention = System.IO.Path.GetExtension(FileUpload1.FileName);
}
if (ImgExtention != "")
{
FileNme = GetNameForFile();
}
if (FileUpload1.HasFile)
{
string savePath = Server.MapPath("UploadedUserFiles") + "" + FileNme + ImgExtention;
FileUpload1.SaveAs(savePath);
}
db.cmd.Parameters.Add("@NewsID", SqlDbType.Int).Value = int.Parse(Request.QueryString["NewsID"].ToString());
db.cmd.Parameters.Add("@NewsTitle", SqlDbType.NVarChar).Value = TextBox1.Text.Trim();
db.cmd.Parameters.Add("@NewsGroupID", SqlDbType.Int).Value = DropDownList1.SelectedValue;
db.cmd.Parameters.Add("@NewsPic", SqlDbType.NVarChar).Value = ("UploadedUserFiles") + "" + FileNme + ImgExtention;
db.cmd.Parameters.Add("@newsBody", SqlDbType.NText).Value = TextBox2.Text.ToString();
db.exeCommand("sp_tblNews_Update");
Response.Redirect("SelectToEditNews.aspx?ID=Edited=OK");
}
else
{
db.cmd.Parameters.Add("@NewsID", SqlDbType.Int).Value = int.Parse(Request.QueryString["NewsID"].ToString());
db.cmd.Parameters.Add("@NewsTitle", SqlDbType.NVarChar).Value = TextBox1.Text.Trim();
db.cmd.Parameters.Add("@NewsGroupID", SqlDbType.Int).Value = DropDownList1.SelectedValue;
db.cmd.Parameters.Add("@newsBody", SqlDbType.NText).Value = TextBox2.Text.ToString();
db.exeCommand("sp_tblNews_Update2");
Response.Redirect("SelectToEditNews.aspx?ID=Edited=OK");
}
}
3-10-نحوه ایجاد صفحه ویرایش اطلاعات کاربران:
این صفحه از سیزده Textbox ویک دکمه تشکیل شده که کدهای مربوط به هر یک را در پایین می بینیم.
در ابتدا یک تابع با نام protected void textFill() ایجاد می کنیم و کدهای زیر را درون آن قرار می دهیم.
Protected void textFill()
{
FirstClass db101 = new FirstClass();
DataTable dt = new DataTable();
dt = db101.dbOut(@"SELECT UerID, UserName, Password, Name, Sname, Phone, Fax, Mobile, Email1, WebSite1, Shahrestan, Ostan, KeshVar, Address, RegDate1,
RegTime1, UserIP1, UserTypeID, Notes, Banded FROM Users WHERE (UserName = N'" + Session["UserName"].ToString() + "')");
TextBox1.Text = dt.Rows[0][1].ToString();
TextBox3.Text = dt.Rows[0][2].ToString();
TextBox3.TextMode = TextBoxMode.Password;
TextBox3.Attributes.Add("Value", dt.Rows[0][2].ToString());
TextBox4.Text = dt.Rows[0][3].ToString();
TextBox5.Text = dt.Rows[0][4].ToString();
TextBox6.Text = dt.Rows[0][5].ToString();
TextBox7.Text = dt.Rows[0][6].ToString();
TextBox8.Text = dt.Rows[0][7].ToString();
TextBox10.Text = dt.Rows[0][8].ToString();
TextBox11.Text = dt.Rows[0][9].ToString();
TextBox12.Text = dt.Rows[0][10].ToString();
TextBox13.Text = dt.Rows[0][11].ToString();
TextBox14.Text = dt.Rows[0][12].ToString();
TextBox15.Text = dt.Rows[0][13].ToString();
TextBox2.Text = dt.Rows[0][18].ToString(); }
سپس این کدها را درون Page_Load می نویسیم.
Protected void Page_Load(object sender, EventArgs e)
{
if (Session["UserName"] != null)
{
if (!IsPostBack)
{
textFill();{ {
else
{
Response.Redirect("Default.aspx?ID=NotRegistered_or_Not_LogedIn" + DateTime.Now.Ticks.ToString());{{
و در پایان کدهای مربوط به دکمه به روز رسانی را با دابل کلیک بر روی آن در قسمت کدنویسی می نویسیم.
protected void Button1_Click(object sender, EventArgs e)
{
FirstClass db2 = new FirstClass();
DateTime dDate = DateTime.Now;
string strDate = dDate.ToString("h:mm:ss tt");
string text1 = Dns.GetHostName(), text2;
text2 = Dns.GetHostByName(text1).AddressList[0].ToString();
db2.cmd.Parameters.Add("@UserName", SqlDbType.NVarChar).Value = Session["UserName"].ToString();
db2.cmd.Parameters.Add("@Password", SqlDbType.NVarChar).Value = TextBox3.Text.Trim();
db2.cmd.Parameters.Add("@Name", SqlDbType.NVarChar).Value = TextBox4.Text.Trim();
db2.cmd.Parameters.Add("@Sname", SqlDbType.NVarChar).Value = TextBox5.Text.Trim();
db2.cmd.Parameters.Add("@Phone", SqlDbType.NVarChar).Value = TextBox6.Text.Trim();
db2.cmd.Parameters.Add("@Fax", SqlDbType.NVarChar).Value = TextBox7.Text.Trim();
db2.cmd.Parameters.Add("@Mobile", SqlDbType.NVarChar).Value = TextBox8.Text.Trim();
db2.cmd.Parameters.Add("@WebSite1", SqlDbType.NVarChar).Value = TextBox11.Text.Trim();
db2.cmd.Parameters.Add("@Shahrestan", SqlDbType.NVarChar).Value = TextBox12.Text.Trim();
db2.cmd.Parameters.Add("@Ostan", SqlDbType.NVarChar).Value = TextBox13.Text.Trim();
db2.cmd.Parameters.Add("@KeshVar", SqlDbType.NVarChar).Value = TextBox14.Text.Trim();
db2.cmd.Parameters.Add("@Address", SqlDbType.NVarChar).Value = TextBox15.Text.Trim();
db2.cmd.Parameters.Add("@Notes", SqlDbType.NVarChar).Value = TextBox2.Text.Trim();
db2.exeCommand("sp_Users_Update");
//Response.Redirect("Default.aspx?ID=UpdateIsOk&Reson=" + DateTime.Now.Ticks);
textFill();
}

3-11-نحوه ایجاد صفحه تایید نظرات:
این صفحه از یک GridView تشکیل شده که کدهای مربوط آن را در پایین می بینیم.
در ابتدا یک تابع با نام protected void grdFill() ایجاد می کنیم و کدهای زیر را درون آن قرار می دهیم.
protected void grdFill()
{
FirstClass db = new FirstClass();
DataTable dt = new DataTable();
Image1.Visible = false;
if (int.Parse(Session["UserTypeID"].ToString()) == 1)
{
dt = db.dbOut(@"SELECT TOP 100 PERCENT VoteID, newsID, VoterNameSname, VoteBody, DateOfVoting, voterWebSite, allowShowBit FROM tblVotes WHERE (allowShowBit = 0)");
}
else
{
dt = db.dbOut(@"SELECT TOP 100 PERCENT tblVotes.VoteID, tblVotes.newsID, tblVotes.VoterNameSname, tblVotes.VoteBody, tblVotes.DateOfVoting,
tblVotes.voterWebSite, tblVotes.allowShowBit, tblNews.UserName FROM tblVotes INNER JOIN tblNews ON tblVotes.newsID = tblNews.NewsID WHERE (tblVotes.allowShowBit = 0) AND (tblNews.UserName = N'" + Session["UserName"].ToString() + "')");
}
if (dt.Rows.Count <= 0)
{
GridView1.DataSource = dt;
GridView1.DataBind();
Image1.Visible = true;
}
else
{
GridView1.DataSource = dt;
GridView1.DataBind();
}
}

]
سپس کدهای مربوط به Page_Load را وارد میکنیم:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["UserTypeID"] == null)
{
Response.Redirect("Default.aspx?ID=" + DateTime.Now.Ticks.ToString());
}
else
{
if (int.Parse(Session["UserTypeID"].ToString()) == 3)
{
Response.Redirect("Default.aspx?ID=" + DateTime.Now.Ticks.ToString());
}
else
{
grdFill();
}
}
}

سپس در قسمت Event مربوط به GridView1_PageIndexChanging این کدها را وارد می کنیم.
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
grdFill();
}
سپس در قسمت Event مربوط به GridView1_RowDeleting این کدها را وارد می کنیم.
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int votDelKey = (int)GridView1.DataKeys[e.RowIndex].Value;
FirstClass db = new FirstClass();
db.cmd.Parameters.Add("@VoteID", SqlDbType.Int).Value = votDelKey;
db.exeCommand("sp_tblVotes_DeleteRow");
grdFill();
}
سپس در قسمت Event مربوط به GridView1_SelectedIndexChanged این کدها را وارد می کنیم.
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
int votDelKey = int.Parse(GridView1.SelectedValue.ToString());
FirstClass db = new FirstClass();
db.cmd.Parameters.Add("@VoteID" , SqlDbType.Int).Value = votDelKey;
db.cmd.Parameters.Add("@allowShowBit" , SqlDbType.Bit).Value = 1;
db.exeCommand("sp_tblVotes_Update");
grdFill();
}
3-12-Source Code مربوط به فایل Web.config
<?xml version="1.0"?>
<!–
Note: As an alternative to hand editing this file you can use the
web admin tool to configure settings for your application. Use
the Website->Asp.Net Configuration option in Visual Studio.
A full list of settings and comments can be found in
machine.config.comments usually located in
WindowsMicrosoft.NetFrameworkv2.xConfig
–>
<configuration>
<appSettings/>
<connectionStrings>
<add name="KhabrNameh" connectionString="Data Source=(local);Initial Catalog=Khabari;Integrated Security=True" providerName="System.Data.SqlClient"/>
<add name="KhabariConnectionString" connectionString="Data Source=(LOCAL);Initial Catalog=Khabari;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
<compilation debug="true" strict="false" explicit="true"/>
<pages>
<namespaces>
<clear/>
<add namespace="System"/>
<add namespace="System.Collections"/>
<add namespace="System.Collections.Specialized"/>
<add namespace="System.Configuration"/>
<add namespace="System.Text"/>
<add namespace="System.Text.RegularExpressions"/>
<add namespace="System.Web"/>
<add namespace="System.Web.Caching"/>
<add namespace="System.Web.SessionState"/>
<add namespace="System.Web.Security"/>
<add namespace="System.Web.Profile"/>
<add namespace="System.Web.UI"/>
<add namespace="System.Web.UI.WebControls"/>
<add namespace="System.Web.UI.WebControls.WebParts"/>
<add namespace="System.Web.UI.HtmlControls"/>
</namespaces>
</pages>
<!–
The <authentication> section enables configuration
of the security authentication mode used by
ASP.NET to identify an incoming user.
–>
<authentication mode="Windows"/>
<!–
The <customErrors> section enables configuration
of what to do if/when an unhandled error occurs
during the execution of a request. Specifically,
it enables developers to configure html error pages
to be displayed in place of a error stack trace.
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
–>
</system.web>
</configuration>

3-13-Source Code مربوط به کلاس FirstClass.cs

using System;
using System.Net;
using System.Net.Mail;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Globalization;
/// <summary>
/// Summary description for FirstClass
/// </summary>
public class FirstClass
{
SqlConnection con;
public SqlCommand cmd;
DataTable dt;
SqlDataAdapter da;
public FirstClass()
{
con = new SqlConnection(ConfigurationManager.ConnectionStrings["KhabrNameh"].ConnectionString);
cmd = new SqlCommand();
dt = new DataTable();
cmd.Connection = con;
da = new SqlDataAdapter(cmd);
}
public DataTable dbOut(string sql)
{
cmd.CommandText = sql;
con.Open();
da.Fill(dt);
con.Close();
return dt;
}
public DataTable SP_dbOut(string SP_Name)
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = SP_Name;
con.Open();
da.Fill(dt);
con.Close();
return dt;
}
public void exeCommand(string spName)
{
con.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = spName;
cmd.ExecuteNonQuery();
con.Close();
}
public void exeCommand1(string strName)
{
try
{
cmd.CommandText = strName;
con.Open();
cmd.ExecuteNonQuery();
}
catch { }
finally
{
con.Close();{{
public SqlDataReader dtr101(string sql)
{
//cmd = new SqlCommand(sql, con);
cmd.CommandText = sql;
con.Open();
SqlDataReader dtr = cmd.ExecuteReader();
//dtr.GetString();
return dtr;
}
public string dtShamsi()
{
string strMydate;
PersianCalendar calFar1 = new PersianCalendar();
strMydate = calFar1.GetYear(DateTime.Now).ToString() + "/" + calFar1.GetMonth(DateTime.Now).ToString("00") + "/" + calFar1.GetDayOfMonth(DateTime.Now).ToString("00");
return strMydate;{
public int recordDuplicate(string sql)
}
int i = 0;
cmd.CommandText = sql;
con.Open();
da.Fill(dt);
if (dt.Rows.Count <= 0)
{
i = 0;
}
else
{
i = 1;
}
con.Close();
return i;
}
public void alarmMailFromSite(string MailFrom, string MailTo, string SubjectOfMail, string BodyOfMail)
{
try
{
MailMessage message = new MailMessage(MailFrom, MailTo, SubjectOfMail, BodyOfMail);
message.IsBodyHtml = true;
SmtpClient emailClient = new SmtpClient("mail.bitasoft.ir");
System.Net.NetworkCredential SMTPUserInfo = new System.Net.NetworkCredential("a@bitasoft.ir", "gooliofIRAN*");
message.ReplyTo = new MailAddress("NoReply_LostPassword@bitasoft.ir", "No Reply");
//message.Bcc.Add(new MailAddress("najafzade@gmail.com", "Admin_Of_News.bitasoft.ir"));
message.Priority = MailPriority.High;
emailClient.UseDefaultCredentials = false;
emailClient.Credentials = SMTPUserInfo;
emailClient.Send(message);
}
catch (Exception ex)
{
// Label3.Text = ex.ToString();
}
}

فصل چهارم:
نحوه کار با وب سایت پیاده سازی شده

این وب سایت در دو سطح کاربر ومدیر سایت پیاده سازی شده که ماژول log in ورود به قسمت مدیر سایت را از قسمت کاربران امکان پذیر نموده است.

شکل 4-1: ورود به قسمت مدیر سایت را از قسمت کاربران امکان پذیر نموده است.
بنابراین شرح کار سیستم را در دو بخش کاربر و مدیر سایت بررسی می نماییم:

4-1- بخش کاربران :
4-1-1-صفحه اصلی: که نمای پیش فرض وب سایت میباشد و حاوی به روزترین تورها چه داخلی ،چه خارجی و چه زیارتی میباشد .نمایی از این صفحه را در زیر مشاهده مینمایید.

شکل 4-1-1-1: نمایی از صفحه اصلی

4-1-2-اخبار داخلی :که حاوی آخرین اخبار در مورد کلیه تورهایی است که در آینده برگزار خواهد گشت. علاوه بر این کاربران میتوانند از اطلاعات بیشتری از این تورها را با کلیک بر روی هر کدام کسب نمایند.

شکل 4-1-2-1:نمایی از صفحه اخبار داخلی

4-1-3-رزرواسیون:در این بخش کار بران میتوانند به صورت طبقه بندی شده در مورد تورهای داخلی ،خارجی و زیارتی اطلاعات کسب نموده و در صورت تمایل جهت رزرو اقدام نمایند.

شکل 4-1-3-1:مشاهده تور ها به صورت تفکیک شده

کاربر با کلیک بر روی هر بخش میتواند اطلاعات آن بخش را به صورت مشاهده نماید:

شکل 4-1-3-2:مشاهده اطلاعات بیشتر در مورد هر تور
در صورت تمایل کاربر میتواند جهت رزرواسیون اقدام نماید:

شکل 4-1-3-3:اطلاعاتی که کاربر جهت رزرو باید وارد نمایید

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

4-1-4-درباره ما :در این صفحه کاربران میتوانند اطلاعات بیشتری در مورد این گردشگری کسب نمایند.

شکل 4-1-4-1:نمایی از صفحه درباره ما

4-1-5- ارتباط با ما: در صفحه کار بران میتوانند از طریق صندوق پستی آژانس با مدیر سایت در ار تباط باشند .

شکل 4-1-5-1:نمایی از صفحه ارتباط با ما

علاوه بر پیوندهایی که شرح داده شد ،پیوندهای دیگری نیز در وب سایت تعبیه که گردیده که میانبرهایی به همان بخش های توضیح داده شده می باشد. در شکل زیر این پیوندها مشخص گردیده است.

4-2-بخش مدیر سایت :
مدیر سایت می تواند با وارد نمودن کلمه عبور و رمز عبور خود در بخش log in به بخش مدیریت وب سایت تحت عنوان Control Panel وارد گردد.

شکل 4-2-1:log in

بخش مدیریت خود شامل پنج زیر بخش میباشد که به تفکیک به شرح آنها می پردازیم:

شکل 4-2-2:نمایی کلی از بخش مدیریت

4-2-1-مدیریت بخش خبر: مدیر سایت در این بخش میتواند کلیه اخبار سایت را مدیریت نماید که شامل ویرایش و به روز رسانی ،همچنین لغو وثبت ،اولویت دهی جهت نمایش میباشد که علاوه بر این میتواند تصاویری برای هر خبر قرار دهد.

شکل 4-2-1-1:بخش مدیریت خبر

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

شکل 4-2-2-1:نمایی از صفحه مدیریت تورها
4-2-3-مدیریت بخش رزرو: در این بخش پایگاه داده ای وجود دارد که امکان مشاهده اطلاعات افرادی که جهت رزرو اقدام نموده اند را فراهم می نماید.به علاوه امکان حدف رکودها در صورت لزوم فراهم می باشد.

شکل 4-2-3-1:مدیریت بخش رزرو

4-2-4- مدیریت کاربران: هدف از این بخش مدیریت کاربرانی میباشد که امکان دسترسی به کنترل های مدیریتی را دارند. در این بخش امکان تعریف ،ویرایش و حذف کاربرانی با دسترسی های مدیریتی فراهم میباشد .در زیر نمایی از این صفحه را مشاهده مینمایید.

شکل 4-2-4-1:صفحه مدیریت کاربران

4-2-5-مدیریت پیام ها : این بخش جهت مدیریت پیام های ارسالی توسط کاربران عمومی سایت طراحی گردیده است.در زیر نمایی از این بخش وامکانات آن را مشاهده مینمایید.

شکل 4-2-5-1:نمایی از بخش پیام ها

فصل پنجم:

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

2

1


تعداد صفحات : 153 | فرمت فایل : WORD

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