Exercises – Solved

$ 24.99
Category:

Description

به نام خداوند رنگینکما ن

تمرین برنامه نویسی شماره 01

عنوان: پروژه‌برنامه‌نویس ‌ی-‌شماره‌01 ‌درس: شبک ‌ههای‌کامپیوتر ‌ی ‌
استاد راهنما: دکتر‌ناصر‌یزدان ‌ی1
رشته: مهند ‌سی‌کامپیوت ‌ر ‌
دستیاران آموزشی: اسامه‌ایراندوست2،‌پارمیدا‌ضرغام ‌ی3 ‌نیمسال دوم سال تح صیلی 02-1401

1‌نشانی‌پست‌الکترونیکی:‌yazdani@ut.ac.ir
osameh.irandoust@ut.ac.ir:نشانی‌پست‌الکترونیکی‌2 parmida.zarghami@ut.ac.ir:نشانی‌پست‌الکترونیک‌3

‌أ

فهرست مطالب

عنوان‌پروژه)‌Hotel Management System(‌…………………………………………………………………………………………………………………………………………………………..‌1 این‌پروتکل‌چگونه‌کار‌میکند؟‌…………………………………………………………………………………………………………………………………………………………………………………………….‌1 1- مقدمه‌…………………………………………………………………………………………………………………………………………………………………………………………….‌1
2- JSON‌فایلها‌……………………………………………………………………………………………………………………………………………………………………‌2
1- 2……………………………………………………………………………………………………………………………………………………………………………………………………….config.json-2
2- 2………………………………………………………………………………………………………………………………………………………………………………………………..UsersInfo.json-2
3- 3…………………………………………………………………………………………………………………………………………………………………………………………….RoomsInfo.json-2
3- سرور‌………………………………………………………………………………………………………………………………………………………………………………………………‌4
4- احراز‌هویت‌و‌مد‌یریت‌دسترسی‌………………………………………………………………………………………………………………………………………………….‌4
5- رزرواسیون‌……………………………………………………………………………………………………………………………………………………………………………………..‌5
1- 5…………………………………………………………………………………………………………………………………………………………)View user information(گزینه‌اول‌-5
2- 5……………………………………………………………………………………………………………………………………………………………………………)View all users(گزینه‌دوم‌-5
3- 5………………………………………………………………………………………………………………………………………………….)View Rooms Information(گزینه‌سوم‌-5
4- 5-‌گزینه‌چهارم)‌Booking(‌…………………………………………………………………………………………………………………………………………………………………………………….‌5
5- 6………………………………………………………………………………………………………………………………………………………………………………….)Canceling(گزینه‌پنجم‌-5
6- 7…………………………………………………………………………………………………………………………………………………………………………………….)Pass day(گزینه‌ششم‌-5
7- 7……………………………………………………………………………………………………………………………………………………………………)Edit information(گزینه‌هفتم‌-5
8- 7………………………………………………………………………………………………………………………………………………………………………..)Leaving room(گزینه‌هشتم‌-5
9- 5-‌گزینه‌نهم)‌Rooms(‌……………………………………………………………………………………………………………………………………………………………………………………………‌8
10- 5-‌گزینه‌صفر)‌Logout‌(‌……………………………………………………………………………………………………………………………………………………………………………………….‌8
9…………………………………………………………………………………………………………………………………………)Error handling(مدیریت‌خطاها -6
7- مدیریت‌Log‌ها‌…………………………………………………………………………………………………………………………………………………………………………‌10
8- بونس‌و‌بخشهای‌‌امتیازی‌)Bonus(‌……………………………………………………………………………………………………………………………………..‌10
9- جمع‌بندی‌و‌نکات‌پایان‌ی‌‌………………………………………………………………………………………………………………………………………………………….‌11

ب‌

)Hotel Management System( عنوان پروژه
در‌این‌پروژه‌شما‌به‌پیاده‌سازی‌یک‌ورژن‌ساده‌شدهی‌رزرواسیون‌هتل‌میپردازید.‌این‌برنامه‌از‌دو‌بخش‌کلاینت)Client(‌و‌سرور)Server(‌تشکیل‌شده‌است‌که‌سرور‌وظیفهی‌خدمات‌رسانی‌را‌به‌کلاینت‌دارد.‌این‌پروژه‌شامل‌چند‌‌فایل‌Json‌به‌عنوان‌ورودی‌به‌سرور‌خواهد‌بود.‌)که‌همراه‌تمرین‌پیوست‌شده‌است(‌ ‌

این پروتکل چگونه کار میکند؟
هدف‌از‌انجام‌این‌تمرین‌آشنایی‌با‌Socket programming‌است.‌سوکت‌به‌ترکیب‌یک‌آدرس‌ماشین‌)آی‌پی‌یا‌‌IP(‌یا‌نام‌هاست)‌HostName(‌و‌یک‌شماره‌درگاه‌)پورت‌یا‌Port(‌گفته‌میشود.‌در‌برقراری‌ارتباط‌بین‌کامپیوترها‌در‌یک‌شبکه،‌دو‌چیز‌بسیار‌مهم‌است:‌ ‌1-‌آدرس‌ماشینی‌که‌میخواهیم‌اطلاعاتی‌‌از‌آن‌بگیریم‌ی‌ا‌به‌آن‌ارسال‌کنیم.‌ ‌
‌2-‌برنامهای‌از‌آن‌ماشین‌که‌درخواست‌اطلاعات‌کرده؛‌و‌یا‌‌اینکه‌میخواهیم‌اطلاعات‌ی‌از‌آن‌برنامه‌کسب‌کنیم.‌ ‌
این‌دو‌،یعن‌ی‌آدرس‌ماشین‌و‌شماره‌برنامه،‌به‌وسیلهی‌سوکت‌در‌شبکه‌مشخص‌میشوند.‌سوکت‌ی‌ک‌ارتباط‌قابل‌اطمینان‌جهت‌انتقال‌دادهها‌بین‌دو‌ماشین‌مجزا‌میباشد.‌سوکت،‌برنامهنویسان‌را‌از‌‌پ‌یچیدگیهای‌فرآیند‌برقراری‌ارتباط‌بین‌دو‌ماشی‌ن‌مانند‌جزئیات‌کد‌کردن‌بستهها،‌فرآیند‌ارسال‌دادهها‌در‌شبکه،‌ارسال‌مجدد‌بستههای‌خراب‌و‌…‌دور‌ساخته‌و‌برنامهنویسان،‌به‌راحتی‌قادر‌به‌توسع ‌هی‌برنامههای‌تحت‌شبکه‌میباشند.‌ ‌

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

2- JSON فایلها
تمامی‌اطلاعات‌سامانه‌در‌3‌فایل‌JSON‌کنار‌پروژه‌پیوست‌شده‌است.‌این‌فایلها‌وظیفه‌نگهداری‌اطلاعات‌موردنیاز‌برنامه‌را‌دارند.‌در‌نظر‌داشته‌باشید‌که‌تمامی‌این‌فایلها‌sample‌بوده‌و‌انتظار‌میرود‌که‌شما‌با‌توجه‌به‌سیستم‌طراحی‌شده‌خودتان‌این‌فایلها‌را‌تغییر‌داده‌و‌استفاده‌کنید‌. ‌
config.json -2-1
این‌فایل‌شامل‌پورت‌موردنیاز‌برای‌ارتباط‌با‌سرور‌در‌کانال‌ارتباطی‌است. ‌

UsersInfo.json -2-2
این‌فایل‌شامل‌اطلاعات‌کاربران‌میباشد.‌در‌این‌فایل‌ادمین‌و‌کاربرعادی‌مشخص‌میشود‌.به‌عنوان‌مثال: ‌

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

RoomsInfo.json -2-3

همانطور‌که‌مشاهده‌میکنید‌هر‌اتاق‌دارای‌مشخصاتی‌از‌قبیل:‌شماره‌اتاق،‌وضعیت‌پر‌یا‌خالی‌بودن‌اتاق)0‌یعنی‌اتاق‌خالی‌و‌1‌یعنی‌اتاق‌پر(،‌قیمت‌اتاق‌به‌ازای‌هر‌نفر،‌ظرفیت‌کل‌اتاق،‌ظرفیت‌خالی‌است‌و‌همچنین‌اطلاعات‌کاربرانی‌که‌اتاق‌را‌رزرو‌کردهاند‌که‌شامل‌شناسهی‌کاربر،‌تعداد‌رزرو،‌تاریخ‌رزرو‌و‌تاریخ‌تحویل‌اتاق‌است.‌ ‌

3- سرور
سامانه‌دارای‌یک‌سرور‌با‌پورت‌دریافتی‌خواهد‌بود‌که‌وظیفه‌سرور‌مدیریت‌کلاینتها‌است.‌آدرس‌و‌پورت‌از‌طریق‌فایل‌کانفیگ‌به‌سرور‌داده‌میشود.‌همچنین‌اطلاعات‌کاربران‌و‌اطلاعات‌رزرواسیون‌نیز‌در‌اختیار‌سرور‌قرار‌میگیرد. ‌پس‌از‌راه‌اندازی‌سرور‌و‌بالا‌آمدن‌سرور،‌باید‌‌تاریخ‌شروع‌سامانه‌خود‌را‌وارد‌کنید‌تا‌در‌سرور‌ذخیره‌شود.

در‌صورت‌بروز‌هرگونه‌خطا‌در‌وارد‌کردن‌دستورات‌ارور‌503)در‌بخش 6‌به‌اجمال‌توضیح‌داده‌شده‌است(‌نمایش‌داده‌میشود.‌در‌صورتی‌که‌تاریخ‌در‌فرمت‌نادرستی‌وارد‌شود‌ارور‌401‌به‌کاربر‌نمایش‌داده‌میشود. ‌
4- احراز هویت و مدیریت دسترسی
این‌بخش‌شامل‌3‌دستور‌خواهد‌بود.‌برای‌احراز‌هویت‌در‌سرور‌باید‌از‌فایل‌UserInfo‌سرور،‌اطلاعات‌کاربران‌سیستم‌را‌خوانده‌و‌با‌استفاده‌از‌پسورد‌آ ‌نها‌را‌شناسایی‌و‌احراز‌هویت‌کنند‌. ‌

برای‌ورود‌به‌برنامه‌طبق‌دستور‌فوق‌و‌با‌استفاده‌از‌command‌داده‌شده‌کاربر‌میتواند‌وارد‌سامانه‌شود.‌در‌صورت‌بروز‌خطا‌در‌ورود‌کاربر‌خطای‌‌430‌به‌کاربر‌نمایش‌داد‌ه‌میشود‌و‌در‌صورت‌ورود‌موفقیت‌آمیز‌پیغام‌230‌به‌کاربر‌نمایش‌داده‌میشود. ‌در‌صورتی‌که‌کاربری‌جدید‌بخواهد‌در‌سامانه‌ثبت‌نام‌کند‌از‌دستور‌زیر‌استفاده‌خواهیم‌کرد‌. ‌

توجه‌داشته‌باشید‌بعد‌از‌ثبت‌نام‌کاربر‌جدید،‌در‌صورتی‌که‌اسم‌کاربر‌وجود‌داشته‌باشد‌خطای‌451‌به‌کاربر‌نمایش‌داده‌میشود.‌در‌صورت‌ثبت‌نام‌کاربر‌و‌موجود‌نبودن‌username‌پیغام‌311‌نمایش‌داده‌میشود‌و‌بعد‌از‌آن‌کاربر‌به‌ترتیب‌سایر‌مقادیر‌خواسته‌شده‌را‌وارد‌میکند.‌در‌صورت‌بروز‌هرگونه‌خطایی‌در‌وارد‌کردن‌مقادیر‌خطای‌503‌نمایش‌داده‌خواهد‌شد‌و‌ثبت‌نام‌کاربر‌نیز‌لغو‌میشود.‌در‌صورت‌موفقیت‌آمیز‌بودن‌ثبت‌نام‌نیز‌پیغام‌231‌به‌کاربر‌نمایش‌داده‌خواهد‌شد‌.‌ ‌

5- رزرواسیون
بخش‌اصلی‌و‌هسته‌برنامه‌بخش‌رزرواسیون‌است.)صفحه اصلی(‌در‌این‌بخش‌ابتدا‌اطلاعات‌موردنیاز‌به‌کاربر‌نمایش‌داده‌میشود‌. ‌

در‌محیط‌کنسول‌)کلاینت(‌اطلاعات‌فوق‌نمایش‌داده‌میشود‌و‌سپس‌کاربر‌گزینهی‌موردنظر‌خود‌را‌انتخاب‌میکند‌.در‌صورت‌بروز‌هرگونه‌خطا‌یا‌اشتباه‌وارد‌کردن‌گزینه‌خطای‌503‌به‌کاربر‌نمایش‌داده‌میشود‌و‌دوباره‌این‌اطلاعات‌به‌نمایش‌در‌خواهد‌آمد‌. ‌
)View user information (گزینه اول -5-1
این‌دستور‌برای‌هر‌دو‌نوع‌کاربر‌قابل‌دسترسی‌است.‌این‌بخش‌تمام‌اطلاعات‌کاربر‌را‌نمایش‌میدهد.‌)نحوه‌نمایش‌اطلاعات‌و‌خلاقیت‌در‌آن‌بر‌عهده‌دانشجو‌است(‌سپس‌کاربر‌به‌صفحه‌اصلی‌هدایت‌میشود‌. ‌
)View all users (گزینه دوم -5-2
این‌دستور‌صرفا‌برای‌کاربر‌ادمین‌قابل‌دسترسی‌است‌و‌اگر‌کاربر‌عادی‌این‌دستور‌را‌وارد‌کند‌با‌خطای‌403‌مواجه‌میشود‌و‌دوباره‌به‌صفحه‌اصلی‌سامانه‌بر‌میگردد‌.‌در‌این‌بخش‌اطلاعات‌تمامی‌کاربران‌بهغیر‌از‌رمز‌عبور‌به‌ادمین‌نمایش‌داده‌میشود.‌)نحوه‌نمایش‌اطلاعات‌و‌خلاقیت‌در‌آن‌بر‌عهده‌دانشجو‌است(‌سپس‌کاربر‌به‌صفحه‌اصلی‌هدایت‌میشود‌. ‌
) View Rooms Information (گزینه سوم -5-3
این‌دستور‌برای‌هر‌دو‌نوع‌کاربر‌قابل‌دسترسی‌است.‌این‌بخش‌تمام‌اطلاعات‌تمام‌اتا ‌قها‌‌را‌اعم‌از‌پر‌یا‌خالی‌نمایش‌میدهد.‌)نحوه‌نمایش‌اطلاعات‌و‌خلاقیت‌در‌آن‌بر‌عهده‌دانشجو‌است(‌سپس‌کاربر‌به‌صفحه‌اصلی‌هدایت‌میشود.‌ ‌
اگر‌اتاقی‌پر‌یا‌نصفه‌پر‌باشد‌کاربران‌حاضر‌در‌اتاق‌را‌نیز‌نمایش‌دهد‌که‌این‌بخش‌صرفا‌باید‌برای‌ادمین‌قابل‌مشاهده‌باشد.‌ ‌
4-5- گزینه چهارم )Booking (
این‌دستور‌برای‌کاربر‌عادی‌استفاده‌میشود.‌در‌این‌بخش‌کاربر‌میتواند‌اتاقی‌با‌ظرفیت‌مشخص‌و‌تاریخ‌دقیق‌شروع‌اقامت‌و‌پایان‌اقامت‌رزرو‌کند. ‌دقت‌داشته‌باشید‌در‌این‌پروژه‌از‌شما‌خواسته‌شده‌است‌رزرو‌ها‌را‌طوری‌مدریت‌کنید‌که‌تداخل‌بین‌زمان‌ها‌نباشد‌. ‌‌برای‌مثال‌اگر‌یک‌اتاق‌در‌تاریخ‌25‌ام‌پر‌باشد‌)ظرفیت‌آن‌کامل‌باشد(‌دیگر‌امکان‌رزرو‌در‌25‌ام‌وجود‌ندارد‌اما‌اگر‌نیمه‌خالی‌باشد‌بسته‌به‌تعداد‌تخت‌هایی‌که‌کاربر‌درخواست‌کرده‌باید‌برسی‌شود‌که‌به‌اندازهی‌ظرفیت‌باقی‌ماندهی‌اتا ‌ق‌میباشد‌یا‌خیر‌. ‌همچنین‌انتظار‌میرود‌که‌بعد‌از‌رزرو‌کردن‌تعداد‌ظرفیت‌اتاق‌و‌همچنین‌کیف‌پول‌کاربر‌تغییر‌کرده‌باشد‌. ‌
‌در‌ابتدا‌موجودی‌کاربر‌با‌توجه‌به‌قیمت‌اتاق‌برسی‌شده )دقت‌شود‌که‌قیمت‌هر‌اتاق‌به‌ازای‌یک‌نفر‌است‌اگر‌کاربر‌تعداد‌بیشتری‌بخواهد‌قسمت‌اتاق‌در‌تعداد‌ضرب‌میشود(‌و‌بعد‌پر‌بودن‌اتاق‌در‌تاریخ‌تایین‌شده‌برسی‌میشود‌. ‌
• درصورت‌نداشتن‌موجودی‌کافی‌خطای‌108‌نمایش‌داده‌شود‌. ‌
• در‌صورتی‌که‌‌ساختار‌دستور‌نادرست‌بود‌خطای‌503‌نمایش‌داده‌شود
• ‌درصورتی‌که‌اتاقی‌با‌شماره‌مورد‌نظر‌یافت‌نشد‌خطای‌101‌نمایش‌داده‌شود‌.
• ‌در‌صورتی‌که‌امکان‌‌رزرو‌به‌دلیل‌پر‌بودن‌اتاق‌نبود‌خطای‌109‌نمایش‌داده‌شود‌. ‌

)Canceling (گزینه پنجم -5-5
این‌دستور‌زمانی‌بکار‌میرود‌که‌کاربر‌بخواهد‌رزرو‌خود‌را‌زود‌تر‌از‌Checkout‌لغو‌کند‌در‌این‌صورت‌رزروکاربر‌پاک‌شده‌و‌نصف‌پول‌به‌کاربر‌برگردانده‌میشود.‌ ‌

بعد‌از‌وارد‌کردن‌شماره‌پنجم‌‌میبایست‌لیستی‌از‌رزرو‌های‌کاربر‌نمایش‌داده‌شود‌که‌‌طریقهی‌نمایش‌آن‌بر‌عهده‌دانشجو‌است.‌سپس‌با‌استفاده‌از‌دستور‌فوق‌شماره‌اتاق‌m‌به‌تعداد‌n‌نفر‌را‌کنسل‌کنید‌. ‌
چنانچه‌اتاق‌مورد‌نظر‌یافت‌نشد‌خطای‌شماره‌101‌و‌چنانچه‌رزروی‌با‌کاربر‌مورد‌نظر‌با‌آن‌تعداد‌یا‌بیشتر‌در‌اتاق‌مورد‌نظر‌موجود‌نبود‌خطای‌شماره‌‌102‌را‌نمایش‌دهی‌د‌و‌اگر‌شکل‌دستور‌نادرست‌بود‌خطای‌‌401‌نمایش‌داده‌میشود‌. ‌در‌صورت‌موفقیت‌امیز‌بودن‌دستور‌110‌نمایش‌داده‌شود‌. ‌
دقت شود که سیستم باید زمانی که تقویم سامانه برابر با Checkout هر رزروی شد آن رزرو را پاک کند .

)Pass day (گزینه ششم -5-6
این‌دستور‌صرفا‌برای‌کاربر‌ادمین‌قابل‌دسترسی‌است‌و‌اگر‌کاربر‌عادی‌این‌دستور‌را‌وارد‌کند‌با‌خطای‌403‌مواجه‌میشود‌و‌دوباره‌به‌صفحه‌اصلی‌سامانه‌بر‌میگردد‌.‌در‌این‌بخش‌ادمین‌میتواند‌تعداد‌روزهایی‌که‌گذشته‌است‌را‌وارد‌کند.‌به‌عنوان‌مثال‌تاریخ‌وارد‌شده‌در‌سرور‌10‌اسفند‌میباشد‌و‌ادمین‌با‌وارد‌کردن‌دستور‌زیر‌و‌مقدار‌2‌میتواند‌تاریخ‌را‌به‌12‌اسفند‌تغییر‌دهد‌. ‌

) Edit information (گزینه هفتم -5-7
این‌دستور‌برای‌هر‌دو‌نوع‌کاربر‌قابل‌دسترسی‌است.‌در‌این‌بخش‌کاربر‌میتواند‌اطلاعات‌واردشده‌خود‌را‌تغییر‌دهد.‌در‌نظر‌داشته‌باشید‌ادمین‌نیز‌مانند‌سایر‌کاربران‌تنها‌اطلاعات‌شخصی‌خود‌که‌فقط‌رمزعبور‌میباشد‌را‌میتواند‌تغییر‌دهد‌‌و‌به‌اطلاعات‌سایرین‌نمیتواند‌دسترسی‌داشته‌باشد.‌)نحوه‌نمایش‌اطلاعات‌و‌خلاقیت‌در‌آن‌بر‌عهده‌دانشجو‌است(‌سپس‌کاربر‌به‌صفحه‌اصلی‌هدایت‌میشود.‌در‌صورت‌بروز‌هرگونه‌خطا‌یا‌اشتباه‌وارد‌کردن‌اطلاعات‌خطای‌503‌به‌کاربر‌نمایش‌داده‌میشود‌و‌به‌صفحه‌اصلی‌هدایت‌میشود‌و‌در‌صورت‌موفقیت‌آمیز‌بودن‌پیغام‌312‌نمایش‌داده‌میشود‌.

) Leaving room (گزینه هشتم -5-8
این‌دستور‌برای‌هر‌دو‌نوع‌کاربر‌قابل‌دسترسی‌است.‌کاربر‌عادی‌میتواند‌پیش‌از‌موعد‌اتاق‌را‌تحویل‌دهد‌و‌از‌اتاق‌خارج‌شود‌. ‌

در‌صورتی‌که‌کاربر‌در‌اتاق‌سکونت‌داشته‌باشد‌پیغام‌413‌و‌در‌صورتی‌که‌اتاق‌اشتباهی‌وارد‌شود‌خطای‌503‌و‌در‌صورتی‌که‌اتاقی‌که‌کاربر‌در‌آن‌سکونت‌نداشته‌باشد‌وارد‌گردد‌نیز‌خطای‌102‌به‌کاربر‌نمایش‌داده‌میشود.‌تغییرات‌نیز‌بعد‌از‌خروج‌کاربر‌ذخیره‌میشود‌.
)امتیازی(‌در‌این‌بخش‌ادمین‌میتواند‌هر‌اتاقی‌که‌بخواهد‌را‌خالی‌کند‌و‌Status‌اتاق‌را‌تغییر‌دهد.‌در‌مواردی‌که‌فردی‌که‌اتاقی‌را‌رزرو‌میکند‌در‌صورت‌تخطی‌از‌قوانین‌هتل‌مدیریت‌مجبور‌به‌حذف‌رزرو‌و‌خالی‌کردن‌اتاق‌میشود‌. ‌

در‌صورتی‌که‌شماره‌اتاق‌اشتباه‌وارد‌شود‌خطای‌101‌و‌در‌صورتی‌که‌ظرفیت‌وارد‌شده‌توسط‌کاربر‌بیشتر‌از‌ظرفیت‌مجاز‌اتاق‌باشد‌خطای‌412‌به‌کاربر‌نمایش‌داده‌میشود‌و‌در‌صورت‌موفقیت‌آمیز‌بودن‌کار،‌بعد‌از‌ذخیره‌تغییرات‌پیغام‌413‌به‌کاربر‌نمایش‌داده‌میشود‌. ‌

9-5- گزینه نهم) Rooms(
این‌دستور‌صرفا‌برای‌کاربر‌ادمین‌قابل‌دسترسی‌است‌و‌اگر‌کاربر‌عادی‌این‌دستور‌را‌وارد‌کند‌با‌خطای‌403‌مواجه‌میشود‌و‌دوباره‌به‌صفحه‌اصلی‌سامانه‌بر‌میگردد.‌در‌این‌صفحه‌ادمین‌میتواند‌با‌استفاده‌از‌سه‌دستور‌اتاقی‌را‌اضافه‌کند‌یا‌تغییر‌دهد‌و‌یا‌حذف‌کند‌. ‌دستوارت‌به‌صورت‌زیر‌میباشند: ‌

• در‌صورت‌وجود‌نداشتن‌شمارهی‌اتاق‌خطای‌101‌را‌نمایش‌دهید‌
• در‌صورت‌وجود‌داشتن‌شماره‌اتاق‌در‌دستور‌Add‌خطای‌111‌را‌نمایش‌دهید‌.
• در‌صورت‌موفقیت‌در‌اضافه‌کردن‌اتاق‌پیام‌104‌و‌در‌تغییر‌اتاق‌پیام‌105‌و‌پاک‌کردن‌اتاق‌پیام‌106‌را‌نمایش‌دهید‌. ‌
دقت‌داشته‌باشید‌که‌در‌صورت‌پر‌بودن‌اتاق‌امکان‌حذف‌اتاق‌و‌همینطور‌کم‌کردن‌ظرفیت‌اتاق‌وجود‌نداشته‌و‌برای‌ادمین‌باید‌خطای‌109‌نمایش‌داده‌شود‌. ‌
10-5- گزینه صفر) Logout(
این‌دستور‌برای‌هر‌دو‌نوع‌کاربر‌قابل‌دسترسی‌است.‌با‌زدن‌این‌دستور‌کاربر‌از‌برنامه‌خارج‌میشود‌و‌ارتباط‌همان‌کلاینت‌با‌سرور‌قطع‌میشود.‌در‌صورت‌موفقیت‌آمیز‌بودن‌خروج‌کاربر‌پیغام‌201‌نمایش‌داده‌خواهد‌شد‌.

نکته 1: در تمامی قسمت ها انتظار میرود بعد از چاپ پیام مناسب هر دستور کاربر به صفحه اصلی باز گردد.
نکته 2: بعد از پایان برنامه باید تمامی فایل های Json بهروزرسانی شوند.

)Error handling ( مدیریت خطاها-6
در‌این‌بخش‌کد‌خطاها‌و‌پیغامها‌با‌ذکر‌جزئیات‌توضیح‌داده‌شده‌است. ‌

7- مدیریت Log ها
سرور‌شما‌در‌زمان‌اجرا‌باید‌‌یک‌فا‌یل‌log‌در‌کنار‌خود‌ایجاد‌‌کند‌و‌تمامی‌‌اطلاعات‌را‌با‌تاریخ‌‌و‌ساعت‌وقوع‌در‌آن‌ذخیره‌کند.‌اطلاعاتی‌‌مانند‌افرادی‌که‌وارد‌سیستم‌شدهاند؛‌رزروهایی‌که‌انجام‌شده‌و‌تمامی‌مواردی‌که‌در‌بخش‌5‌وجود‌دارد.‌هر‌کاربری‌که‌دستوری‌وارد‌میکند‌باید‌لاگ‌آن‌نیز‌ذخیره‌شود.‌همچنین‌به‌ازای‌هر‌کاربر‌یک‌فولدر‌در‌Client‌برنامه‌هم‌اسم‌کاربر‌ساخته‌میشود‌و‌لاگهای‌مربوط‌به‌هر‌کاربر‌در‌فولدر‌مربوطه‌ذخیره‌میشود. ‌
دقت‌کنید‌‌با‌هر‌بار‌اجرای‌سرور‌اگر‌فایل‌log‌وجود‌نداشت‌آن‌را‌بسازید‌و‌در‌صورتی‌که‌از‌قبل‌این‌فایل‌وجود‌داشته‌باشد،‌در‌ادامهی‌آن‌شروع‌به‌نوشتن‌کنید. ‌

8- بونس و بخشهای امتیازی )Bonus(
بونسهای‌این‌تمرین‌حداکثر‌10‌نمره)از‌100(‌خواهد‌بود.‌ ‌
• )Room filtering(فیلتر‌اتا ‌قها
در‌بخش‌3-5‌شما‌میتوانید‌با‌افزودن‌دو‌گزینه‌دیگر‌به‌کاربر‌این‌امکان‌را‌بدهید‌که‌صرفا‌اتا ‌قهای‌خالی‌را‌ببیند‌یا‌بتواند‌تمامی‌اتا ‌قها‌را‌مشاهده‌کند.‌)5‌نمره(‌ ‌
• بخش‌8-5‌نیز‌قسمت‌ادمین‌امتیازی‌است.‌نحوه‌نمایش‌آن‌نیز‌در‌همان‌بخش‌توضیح‌داده‌شده‌است.‌)5‌نمره(‌
9- جمع بندی و نکات پایانی
• مهلت‌تحویل:‌21 اسفند
• پروژه‌در‌گروههای‌2‌نفره‌انجام‌میشود.‌)گروه‌بندی‌در‌سامانه‌ایلرن‌نیز‌انجام‌میشود‌و‌تحویل‌تمرین‌به‌صورت‌گروهی‌خواهد‌بود(‌
• برنامه‌شما‌باید‌درخواس ‌تها‌را‌به‌صورت‌همزمان‌پاسخ‌دهد‌و‌چندین‌کلاینت‌بتوانند‌با‌کاربران‌مختلف‌به‌سرور‌وصل‌شوند.‌)میتوانید‌از‌thread‌یا‌select() system call‌به‌دلخواه‌خودتان‌استفاده‌کنید.‌در‌ضمن‌توجه‌داشته‌باشید‌که‌2‌سرور‌بر‌روی‌یک‌پورت‌به‌صورت‌همزمان‌بالا‌نیاید!(‌
• هر‌2‌نفر‌می‌بایست‌کار‌را‌تقسیم‌کنند.‌همچنین‌از‌Git‌برای‌ساختن‌branch‌و‌تقسیم‌issue‌ها‌استفاده‌نمایید‌.‌)با‌استفاده‌از‌commit‌ها‌ و‌ تعیین‌‌issue‌‌ها‌ میزان‌ مشارکت‌ هر‌ نفر‌ مشخص‌ میشود(.‌ بعد‌ از‌ انجام‌ این‌ کار‌ کدها‌ را‌ در‌ یک‌‌repository‌‌به‌ نام‌1_CN_CHomeworks‌در‌اکانتهای‌GitHub/GitLab‌خود‌قرار‌دهید)به‌صورت‌private(.‌همچنین‌در‌یک‌فایل‌README.md‌میتوانید‌report‌و‌داکیومنت‌خود‌را‌کامل‌کنید‌و‌در‌کنار‌repository‌قرار‌دهید.‌در‌نهایت‌لینک‌این‌repository‌را‌در‌محل‌پاسخ‌تمرین‌قرار‌دهید‌.‌)از‌فرستادن‌فایل‌به‌صورت‌زیپ‌جدا‌خودداری‌نمایید(.‌‌اکانت‌تی‌ایهای‌این‌تمرین‌رو‌به‌Repo‌خودتون‌به‌عنوان‌
Maintainer‌به‌پروژه‌اضافه‌کنید‌.
Git Accounts:
@osameh15
@pzarghami
• برای‌پیاده‌سازی‌این‌تمرین‌از‌C‌یا‌C++‌استفاده‌کنید‌.‌)میتوانید‌از‌محیط‌توسعه‌QT‌و‌تمامی‌کتابخون ‌ههای‌آن‌نیز‌استفاده‌کنید(‌
• سیستم‌عامل‌ترجیجا‌Linux‌باشد‌.
• دقت‌کنید‌گزارش‌نهایی‌شما‌میبایست‌همانند‌یک‌Document‌باشد‌و‌شامل‌توضیح‌کد‌و‌ساختار‌کد،‌همچنین‌نتیجه‌نهایی‌اجرای‌کد‌و‌اسکرین‌شا ‌تهای‌دقیق‌از‌تمام‌مراحل‌باشد.‌)در‌فایل‌Readme.md‌کنار‌فایل‌اصلی‌خود‌و‌در‌Repo‌مربوطه‌قرار‌دهید(.‌این‌نکته‌حائز‌اهمیت‌است‌که‌فایل‌PDF‌به‌هیچ‌عنوان‌مورد‌پذیرش‌قرار‌نخواهد‌گرفت‌.
• ساختار‌صحیح‌و‌تمیزی‌کد‌برنامه،‌بخشی‌از‌نمرهی‌این‌پروژه‌شما‌خواهد‌بود.‌بنابراین‌در‌طراحی‌ساختار‌برنامه‌دقت‌به‌خرج‌دهید‌.
• برای‌هر‌قسمت‌کد‌،گزارش‌دقیق‌و‌شفاف‌بنویسید.‌کدهای‌ضمیمه‌شده‌بدون‌گزارش‌مربوطه‌نمر‌های‌نخواهند‌داشت.
• هدف‌این‌تمرین‌یادگیری‌شماست.‌لطفا‌تمرین‌را‌خودتان‌انجام‌دهید.‌در‌صورت‌مشاهدهی‌مشابهت‌بین‌کدهای‌دو‌گروه،‌مطابقت‌سیاست‌درس‌با‌گروه‌متقلب‌و‌تقلب‌دهنده‌برخورد‌خواهد‌شد.‌
• سؤالات‌خود‌را‌تا‌حد‌ممکن‌در‌فروم‌درس‌مطرح‌کنید‌تا‌سایر‌دانشجویان‌نیز‌از‌پاسخ‌آن‌بهرهمند‌شوند.‌در‌صورتی‌که‌قصد‌مطرح‌کردن‌سؤال‌خاصتری‌دارید،‌از‌طریق‌ایمیل‌زیر‌ارتباط‌برقرار‌کنید.‌توجه‌داشته‌باشید‌که‌سایر‌شبکههای‌اجتماعی‌راه‌ارتباطی‌رسمی‌با‌دستیاران‌آموزشی‌نیست‌و‌دستیاران‌آموزشی‌مؤظف‌به‌پاسخگویی‌در‌محیطهای‌غیررسمی‌نیستند.
o Osameh.irandoust@ut.ac.ir
o Parmida.zarghami@ut.ac.ir

موفق‌باشید‌

Reviews

There are no reviews yet.

Be the first to review “Exercises – Solved”

Your email address will not be published. Required fields are marked *