Professional Documents
Culture Documents
Advanced Programming Modeling HW3
Advanced Programming Modeling HW3
Airway Company
پس از قهرمانی در مسابقات نوروزی ،وانیلوپه که نمیدانست با مبلغی که برنده شده بود چه کند ،از رالف
مشورت گرفت .پس از همفکریهای فراوان ،به این نتیجه رسیدند که بهترین روش سرمایه گذاری در بازار
کنونی ،تاسیس یک شرکت حمل و نقل است و به دلیل عالقهی رالف به هواپیماها ،یک شرکت هواپیمایی را
انتخاب کردند! اما هیچ یک سررشتهای در برنامهنویسی ندارند .به همین دلیل از شما کمک میخواهند که
برای شروع کار ،در ساخت اپلیکیشنی برای مدیریت و استفاده از خدمات شرکت جدیدالتاسیسشان ،به آنها
کمک کنید!
در این تمرین میخواهیم برنامهای برای مدیریت یک شرکت هواپیمایی بسازیم .در این برنامه کاربر ادمین
لیست هواپیماها و پروازهای شرکت را ایجاد میکند و کاربر مشتری میتواند با مشاهده پروازها بلیط تهیه
برنامه شامل 3منو است که دستورات هر کدام با جزئیات بیان شده است.
در تمام دستورات سوال الزم است که خطاها به ترتیب چک شوند و اگر خطایی رخ داد ادامه خطاها بررسی
نخواهد شد .اگر در هر منو دستور نامعتبری وارد شود ،عبارت زیر را نمایش دهید:
https://quera.org/course/assignments/40250/print 43/59
4/11/23, 11:14 AM تمرین ۲
!invalid command
در صورتی که فرمت یک داده در دستور مربوط به یک منو اشتباه بود و برای آن خطایی در نظر گرفته نشده
بود (مثال برای مقدارهایی که باید عدد صحیح باشند ،نوع متغیری دیگر مانند رشته وارد شده بود) نیز خطای
پیش ,پس و بین کلمات یک دستور ممکن است هر تعدادی " "spaceبیاید و این دلیلی برای نامعتبر بودن
دستور نیست .همچنین تضمین میشود تمام اعدادی که در دستورات داده میشوند ،در محدودهی intقرار
میگیرند.
دستورات
ثبتنام
این دستور یک کاربر با نام کاربری و رمزعبور مشخص شده ایجاد میکند .اگر خطایی رخ نداد و ثبت نام
register successful
خطاها
نام کاربری تنها میتواند شامل اعداد ،حروف الفبای انگلیسی و کاراکتر آندرالین باشد .همچنین باید حداقل
یک حرف الفبای انگلیسی داشته باشد در غیر این صورت نامعتبر است و باید پیغام زیر نمایش داده شود:
https://quera.org/course/assignments/40250/print 44/59
4/11/23, 11:14 AM تمرین ۲
اگر کابری با این usernameاز قبل وجود داشت باید پیغام زیر نمایش داده شود:
پسورد هم مانند نام کاربری تنها میتواند شامل اعداد ،حروف الفبای انگلیسی و کاراکتر آندرالین باشد .در
همچنین برای افزایش امنیت پسورد کاربران باید قوی باشد که در اینصورت باید 2ویژگی داشته باشد\:
-2پسورد باید حتما دارای حرف بزرگ انگلیسی ،حرف کوچک انگلیسی و عدد باشد و از هر کدام حداقل یک
در صورتی که پسورد هر کدام از این ویژگی ها را نداشته باشد ضعیف است و باید پیغام زیر نمایش داده
شود:
password is weak
ثبتنام ادمین
https://quera.org/course/assignments/40250/print 45/59
4/11/23, 11:14 AM تمرین ۲
این دستور یک کاربر ادمین ایجاد میکند .نکته مهم این است که فقط یک کاربر ادمین میتوانیم داشته
باشیم .اگر خطایی رخ نداد و ایجاد ادمین موفقیت آمیز بود باید پیغام زیر نمایش داده شود:
خطاها
همه خطاهای بخش ثبت نام کاربر در این بخش هم هست (دقت کنید برای ساخت ادمین ،نباید هیچ کاربر
دیگری با usernameادمین وجود داشته باشد) .عالوه بر آنها به عنوان اولین خطا اگر یوزر ادمین از قبل
دقت شود این خطا باید قبل از خطاهای ثبت نام کاربر چک شود.
الگین
این دستور برای الگین کاربر با نام کاربری و پسورد داده شده است .اگر الگین موفقیت آمیز بود باید پیغام
زیر نمایش داده شود و پس از آن کاربر به طور خودکار وارد منوی اصلی میشود:
login successful
خطاها
اگر کاربری با این نام کاربری وجود نداشت باید پیغام زیر نمایش داده شود:
https://quera.org/course/assignments/40250/print 46/59
4/11/23, 11:14 AM تمرین ۲
اگر پسورد اشتباه بود باید پیغام زیر نمایش داده شود:
incorrect password
این دستور برای تغییر پسورد کاربری با نام کاربری داده شده استفاده میشود .اگر تغییر پسورد موفقیت
خطاها
اگر کاربری با این نام کاربری وجود نداشت باید پیغام زیر نمایش داده شود:
اگر پسورد اشتباه بود باید پیغام زیر نمایش داده شود:
incorrect password
اگر پسورد جدید معتبر نبود باید پیغام زیر نمایش داده شود:
https://quera.org/course/assignments/40250/print 47/59
4/11/23, 11:14 AM تمرین ۲
اگر پسورد جدید ضعیف بود باید پیغام زیر نمایش داده شود:
حذف حساب
این دستور کاربری با نام کاربری و پسورد داده شده را حذف میکند .اگر خطایی رخ ندهد و حذف موفقیت
خطاها
اگر کاربری با این نام کاربری وجود نداشت باید پیغام زیر نمایش داده شود:
اگر پسورد اشتباه بود باید پیغام زیر نمایش داده شود:
incorrect password
##پایان برنامه
https://quera.org/course/assignments/40250/print 48/59
4/11/23, 11:14 AM تمرین ۲
Exit
منوی اصلی
در صورت موفقیت آمیز بودن الگین وارد این منو میشویم.
دستورات
admin menu
با این دستور ادمین وارد منوی ادمین میشود .دقت کنید این منو تنها مخصوص ادمین است و اگر کاربران
عادی این دستور را وارد کنند باید پیغام زیر نمایش داده شود:
customer menu
با این دستور کاربر وارد منوی مشتری میشود .دقت کنید این منو تنها مخصوص کاربر عادی است و اگر
ادمین این دستور را وارد کنند باید پیغام زیر نمایش داده شود:
https://quera.org/course/assignments/40250/print 49/59
4/11/23, 11:14 AM تمرین ۲
خروج از حساب
logout
با این دستور کاربر از حساب کاربری خود خارج میشود.با اجرای این دستور پیغام زیر نمایش داده میشود و
logout successful
منوی ادمین
این منو برای ادمین طراحی میشود تا بتواند بر هواپیماها و پروازها نظارت کند.
دستورات
با این دستور هواپیمایی با نام و ظرفیت مشخص شده به شرکت اضافه میشود .در صورت انجام موفق
خطاها
https://quera.org/course/assignments/40250/print 50/59
4/11/23, 11:14 AM تمرین ۲
اگر هواپیمایی با این نام در لیست هواپیماهای شرکت وجود داشت باید پیغام زیر نمایش داده شود:
هر هواپیما حداقل باید 10نفر ظرفیت داشته باشد در غیر این صورت(عدد منفی یا مثبت کمتر از )10باید
invalid capacity
با این دستور یک پرواز با اطالعات مشخص شده به لیست پرواز ها اضافه میشود .دقت کنید فرمت تاریخ
باید به فرم yyyy-mm-ddباشد .اگر فرمت تاریخ درست باشد ،تضمین میشود مقدار آن نیز معتبر است و
نیازی به بررسی معتبر بودن مقدار تاریخ ندارید (به عنوان مثال ،تضمین میشود عدد مربوط به ماه در
در صورت اجرای موفق این دستور ،پیغام زیر چاپ میشود:
خطاها
همان طور که گفته شده است ،اگر فرمت تاریخ به صورت yyyy-mm-ddنبود ،باید پیام زیر چاپ شود:
!invalid command
https://quera.org/course/assignments/40250/print 51/59
4/11/23, 11:14 AM تمرین ۲
اگر هواپیمایی با این نام وجود نداشت باید پیغام زیر نمایش داده شود:
اگر قیمت بلیط وارد شده معتبر نبود (یعنی عددی منفی یا برابر با صفر بود) ،باید پیغام زیر نمایش داده
شود:
هر هواپیما تنها یک پرواز در یک روز میتواند انجام دهد .پس اگر این هواپیما پرواز دیگری در همین تاریخ
با این دستور باید لیست همه پرواز ها به ادمین نمایش داده شود .پرواز ها باید به ترتیب تاریخ پرواز
نمایش داده شوند و اگر تاریخ پرواز چند پرواز یکی بود باید به ترتیب قیمت بلیط از کمتر به بیشتر و اگر
قیمت بلیط هم برابر بود بر اساس ترتیب اسکی نام هواپیماها نمایش داده شوند .همچنین برای نمایش ،
https://quera.org/course/assignments/40250/print 52/59
4/11/23, 11:14 AM تمرین ۲
nothing
فیلتر تاریخ
این دستور دقیقا مانند دستور باال است با این تفاوت که باید لیست پرواز هایی که در تاریخ داده شده
لیست هواپیماها
show airplanes
با این دستور لیست هواپیما ها به ترتیب ASCIIنام آنها به ادمین نمایش داده میشود .همچنین برای
نمایش ،هواپیماها از یک شماره گذاری میشوند .فرمت نمایش اطالعات نیز به صورت زیر است:
nothing
نمایش موجودی
show capital
https://quera.org/course/assignments/40250/print 53/59
4/11/23, 11:14 AM تمرین ۲
با زدن این دستور موجودی حساب شرکت را در خط بعد باید به ادمین نمایش دهید.
back
منوی مشتری
این منو برای مشتریها طراحی میشود تا با آن بتوانند بلیط بخرند یا بلیط خود را کنسل کنند.
دستورات
خرید بلیط
این دستور برای خرید بلیط پرواز مستقیم از مبدا به مقصد مشخص شده است.
در صورتی که حداقل یک پرواز از مبدا به مقصد وجود داشت باید همه پرواز ها بین این مبدا و مقصد را به
ترتیب تاریخ پرواز به کاربر نشان دهید (اگر دو پرواز تاریخ یکسانی داشتند ،بر اساس قیمت بلیط (از کمتر
به بیشتر) و اگر قیمت بلیط هم یکسان بود ،به ترتیب کد اسکی نام هواپیماها مرتب میشوند) .پرواز ها
از یک به باال شماره گذاری میشوند .فرمت نشان دادن اطالعات پرواز هم به صورت زیر است:
حال که لیست پرواز ها بین مبدا و مقصد مشخص شده نمایش داده شد کاربر باید از بین پرواز ها یکی را
برای خرید انتخاب کند .برای این کار از کاربر یک عدد دریافت کنید که همان شماره پرواز در لیست نمایش
https://quera.org/course/assignments/40250/print 54/59
4/11/23, 11:14 AM تمرین ۲
داده شده است .برای خارج شدن از این بخش کاربر باید کلمه زیر را وارد کند:
end
با وارد کردن این کلمه کاربر از این بخش خارج میشود و دوباره میتواند دستورات منوی مشتری را وارد کند.
در صورت نبود مشکل و موفقیت بودن خرید بلیط باید پول از حساب کاربر کم شده و به حساب شرکت واریز
purchase successful
پس از خرید موفقیت آمیز بلیط هم دوباره باید منتظر دریافت عدد از کاربر باشید.
خطاها
در این بخش اگر چیزی غیر از عدد وارد شود باید عبارت زیر نمایش داده شود:
!invalid command
اگر عدد وارد شده معتبر نبود باید پیغام زیر نمایش داده شود:
invalid number
اگر ظرفیت پرواز انتخاب شده پر باشد باید پیغام زیر به کاربر نمایش داده شود:
اگر کاربر پول کافی برای خرید بلیط در حساب خود نداشت باید پیغام زیر نمایش داده شود:
https://quera.org/course/assignments/40250/print 55/59
4/11/23, 11:14 AM تمرین ۲
اگر پرواز مستقیمی از مبدا به مقصد مشخص شده وجود نداشت ،ابتدا پیغام زیر را به کاربر نمایش دهید:
سپس اگر امکان رفتن از مبدا به مقصد با پرواز دو مسیره (یعنی با دو پرواز از مبدا به مقصد برود) بود ،آنها
را به کاربر پیشنهاد دهید .دقت کنید در صورتی میتوان پرواز دومسیره داشت که تاریخ مسیر اول ،زودتر از
تاریخ مسیر دوم باشد (اگر تاریخها یکسان باشند هم این پرواز دومسیره ممکن نخواهد بود) .برای این کار
همه جفت پرواز های معتبر را به ترتیب پرواز اول و در صورت یکسان بودن آن به ترتیب پرواز دوم به کاربر
نمایش دهید (برای مقایسه دو پرواز ،همانند بخشهای قبل ،اولویت ابتدا با پروازی با تاریخ زودتر است .اگر
دو پرواز تاریخ یکسانی داشتند ،بر اساس قیمت بلیط (از کمتر به بیشتر) و اگر قیمت بلیط هم یکسان بود،
به ترتیب کد اسکی نام هواپیماها مرتب میشوند) .همچنین پرواز ها از یک به باال شماره گذاری میشوند.
حال که لیست پرواز های دو مسیره نمایش داده شد کاربر باید از بین پرواز ها یکی را برای خرید انتخاب
کند.برای این کار از کاربر یک عدد دریافت کنید که شماره پرواز ها در لیست نمایش داده شده است .برای
خارج شدن از این بخش کاربر باید کلمه زیر را وارد کند:
end
در صورت نبود مشکل و موفقیت بودن خرید بلیط ها پیغام زیر به کاربر نمایش داده شود:
purchase successful
https://quera.org/course/assignments/40250/print 56/59
4/11/23, 11:14 AM تمرین ۲
پس از خرید موفقیت آمیز بلیط هم دوباره باید منتظر دریافت عدد از کاربر باشید.
در این بخش اگر چیزی غیر از عدد وارد شود باید عبارت زیر نمایش داده شود:
!invalid command
اگر عدد وارد شده معتبر نبود باید پیغام زیر نمایش داده شود:
invalid number
اگر ظرفیت هر یک از پرواز های انتخاب شده پر باشد باید پیغام زیر به کاربر نمایش داده شود:
اگر کاربر پول کافی برای خرید بلیط ها در حساب خود نداشت باید پیغام زیر نمایش داده شود:
با زدن این دستور حساب کاربر به مقدار مشخص شده شارژ میشود .تضمین میشود مقدار ورودی عددی
صحیح است .اگر شارژ موفقیت آمیز بود ،باید پیغام زیر چاپ شود:
https://quera.org/course/assignments/40250/print 57/59
4/11/23, 11:14 AM تمرین ۲
خطاها
اگر مقدار ،معتبر نباشد (یعنی عددی منفی یا برابر با صفر باشد) ،باید پیغام زیر نمایش داده شود:
invalid amount
cancel ticket
این دستور برای کنسل کردن بلیط خریداری شده توسط کاربر است .اگر کاربر هیچ بلیطی نداشته باشد
در غیر این صورت لیست بلیط های کاربر به همان ترتیبی که خریداری شده است نمایش داده میشود و
بلیط ها از یک شماره گذاری میشوند .دقت کنید کاربر به ازای هر مسیر در پرواز ،یک بلیط مجزا دارد (یعنی
با خرید پرواز دو مقصده ،ابتدا بلیطی برای پرواز اول و سپس بلیطی برای پرواز دوم خریداری کرده است).
حال که لیست بلیط ها نمایش داده شد کاربر باید یک بلیط را کنسل کند .برای این کار از کاربر یک عدد
دریافت کنید که شماره بلیط ها در لیست نمایش داده شده است .برای خارج شدن از این بخش کاربر باید
end
https://quera.org/course/assignments/40250/print 58/59
4/11/23, 11:14 AM تمرین ۲
در صورت نبود مشکل بلیط انتخاب شده کنسل میشود و پول بلیط از حساب شرکت به حساب کاربر بر
میگردد .توجه داشته باشید که با کنسل کردن بلیط تمام پول بلیط به حساب بر نمیگردد و 20درصد به
عنوان خسارت پس داده نمیشود (در واقع جزء صحیح ۲۰درصد از قیمت بلیط در حساب شرکت میماند و
باقی به حساب مشتری پرداخت میشود) .پس از کنسل کردن موفقیت آمیز بلیط کاربر به منوی قبل (منوی
cancel successful
خطاها
در این بخش اگر چیزی غیر از عدد وارد شود باید عبارت زیر نمایش داده شود:
!invalid command
اگر عدد وارد شده معتبر نبود باید پیغام زیر نمایش داده شود:
invalid number
نمایش موجودی
show capital
با زدن این دستور موجودی حساب کاربر را در خط بعد باید نمایش دهید.
back
https://quera.org/course/assignments/40250/print 59/59