Download as pdf or txt
Download as pdf or txt
You are on page 1of 17

‫‪4/11/23, 11:14 AM‬‬ ‫تمرین ‪۲‬‬

‫‪Airway Company‬‬

‫پس از قهرمانی در مسابقات نوروزی‪ ،‬وانیلوپه که نمی‌دانست با مبلغی که برنده شده بود چه کند‪ ،‬از رالف‬

‫مشورت گرفت‪ .‬پس از همفکری‌های فراوان‪ ،‬به این نتیجه رسیدند که بهترین روش سرمایه گذاری در بازار‬

‫کنونی‪ ،‬تاسیس یک شرکت حمل و نقل است و به دلیل عالقه‌ی رالف به هواپیماها‪ ،‬یک شرکت هواپیمایی را‬

‫انتخاب کردند! اما هیچ یک سررشته‌ای در برنامه‌نویسی ندارند‪ .‬به همین دلیل از شما کمک می‌خواهند که‬

‫برای شروع کار‪ ،‬در ساخت اپلیکیشنی برای مدیریت و استفاده از خدمات شرکت جدید‌التاسیسشان‪ ،‬به آن‌ها‬

‫کمک کنید!‬

‫در این تمرین می‌خواهیم برنامه‌ای برای مدیریت یک شرکت هواپیمایی بسازیم‪ .‬در این برنامه کاربر ادمین‬

‫لیست هواپیما‌ها و پروازهای شرکت را ایجاد می‌کند و کاربر مشتری می‌تواند با مشاهده پروازها بلیط تهیه‬

‫کند‪ .‬همچنین بخش مدیریت حساب(ثبت‌نام‪ ،‬ورود و ‪ ) ...‬را نیز داریم‪.‬‬

‫برنامه شامل ‪ 3‬منو است که دستورات هر کدام با جزئیات بیان شده است‪.‬‬

‫در تمام دستورات سوال الزم است که خطاها به ترتیب چک شوند و اگر خطایی رخ داد ادامه خطاها بررسی‬

‫نخواهد شد‪ .‬اگر در هر منو دستور نامعتبری وارد شود‪ ،‬عبارت زیر را نمایش دهید‪:‬‬

‫‪https://quera.org/course/assignments/40250/print‬‬ ‫‪43/59‬‬
‫‪4/11/23, 11:14 AM‬‬ ‫تمرین ‪۲‬‬

‫!‪invalid command‬‬

‫در صورتی که فرمت یک داده در دستور مربوط به یک منو اشتباه بود و برای آن خطایی در نظر گرفته نشده‬

‫بود (مثال برای مقدارهایی که باید عدد صحیح باشند‪ ،‬نوع متغیری دیگر مانند رشته وارد شده بود) نیز خطای‬

‫باال را نمایش دهید‪.‬‬

‫پیش‪ ,‬پس و بین کلمات یک دستور ممکن است هر تعدادی "‪ "space‬بیاید و این دلیلی برای نامعتبر بودن‬

‫دستور نیست‪ .‬همچنین تضمین می‌شود تمام اعدادی که در دستورات داده می‌شوند‪ ،‬در محدوده‌ی ‪ int‬قرار‬

‫می‌گیرند‪.‬‬

‫منوی ثبت نام‬

‫در ابتدای شروع برنامه کاربر در این منو قرار دارد‪.‬‬

‫دستورات‬

‫ثبت‌نام‬

‫]‪register [username] [password‬‬

‫این دستور یک کاربر با نام کاربری و رمزعبور مشخص شده ایجاد میکند‪ .‬اگر خطایی رخ نداد و ثبت نام‬

‫موفقیت آمیز بود پیغام زیر نمایش داده می‌شود‪.‬‬

‫‪register successful‬‬

‫خطاها‬

‫نام کاربری تنها می‌تواند شامل اعداد ‪ ،‬حروف الفبای انگلیسی و کاراکتر آندرالین باشد‪ .‬همچنین باید حداقل‬

‫یک حرف الفبای انگلیسی داشته باشد در غیر این صورت نامعتبر است و باید پیغام زیر نمایش داده شود‪:‬‬

‫‪https://quera.org/course/assignments/40250/print‬‬ ‫‪44/59‬‬
‫‪4/11/23, 11:14 AM‬‬ ‫تمرین ‪۲‬‬

‫‪username format is invalid‬‬

‫اگر کابری با این ‪ username‬از قبل وجود داشت باید پیغام زیر نمایش داده شود‪:‬‬

‫‪a user exists with this username‬‬

‫پسورد هم مانند نام کاربری تنها می‌تواند شامل اعداد ‪ ،‬حروف الفبای انگلیسی و کاراکتر آندرالین باشد‪ .‬در‬

‫غیر این صورت باید پیغام زیر نمایش داده شود‪:‬‬

‫‪password format is invalid‬‬

‫همچنین برای افزایش امنیت پسورد کاربران باید قوی باشد که در اینصورت باید ‪ 2‬ویژگی داشته باشد‪\:‬‬

‫‪ -1‬پسورد حداقل باید ‪ 5‬کاراکتر داشته باشد‪.‬‬

‫‪ -2‬پسورد باید حتما دارای حرف بزرگ انگلیسی ‪ ،‬حرف کوچک انگلیسی و عدد باشد و از هر کدام حداقل یک‬

‫کاراکتر در پسورد باشد‪.‬‬

‫در صورتی که پسورد هر کدام از این ویژگی ها را نداشته باشد ضعیف است و باید پیغام زیر نمایش داده‬

‫شود‪:‬‬

‫‪password is weak‬‬

‫ثبت‌نام ادمین‬

‫]‪register as admin [username] [password‬‬

‫‪https://quera.org/course/assignments/40250/print‬‬ ‫‪45/59‬‬
‫‪4/11/23, 11:14 AM‬‬ ‫تمرین ‪۲‬‬

‫این دستور یک کاربر ادمین ایجاد میکند‪ .‬نکته مهم این است که فقط یک کاربر ادمین میتوانیم داشته‬

‫باشیم‪ .‬اگر خطایی رخ نداد و ایجاد ادمین موفقیت آمیز بود باید پیغام زیر نمایش داده شود‪:‬‬

‫‪admin user created successfully‬‬

‫خطاها‬

‫همه خطاهای بخش ثبت نام کاربر در این بخش هم هست (دقت کنید برای ساخت ادمین‪ ،‬نباید هیچ کاربر‬

‫دیگری با ‪ username‬ادمین وجود داشته باشد)‪ .‬عالوه بر آنها به عنوان اولین خطا اگر یوزر ادمین از قبل‬

‫ساخته شده باشد باید پیغام زیر نمایش داده شود‪:‬‬

‫‪admin user already created‬‬

‫دقت شود این خطا باید قبل از خطاهای ثبت نام کاربر چک شود‪.‬‬

‫الگین‬

‫]‪login [username] [password‬‬

‫این دستور برای الگین کاربر با نام کاربری و پسورد داده شده است‪ .‬اگر الگین موفقیت آمیز بود باید پیغام‬

‫زیر نمایش داده شود و پس از آن کاربر به طور خودکار وارد منوی اصلی می‌شود‪:‬‬

‫‪login successful‬‬

‫خطاها‬

‫اگر کاربری با این نام کاربری وجود نداشت باید پیغام زیر نمایش داده شود‪:‬‬

‫‪https://quera.org/course/assignments/40250/print‬‬ ‫‪46/59‬‬
‫‪4/11/23, 11:14 AM‬‬ ‫تمرین ‪۲‬‬

‫‪no user exists with this username‬‬

‫اگر پسورد اشتباه بود باید پیغام زیر نمایش داده شود‪:‬‬

‫‪incorrect password‬‬

‫تغییر رمز ورود‬

‫]‪change password [username] [old password] [new password‬‬

‫این دستور برای تغییر پسورد کاربری با نام کاربری داده شده استفاده می‌شود‪ .‬اگر تغییر پسورد موفقیت‬

‫آمیز بود باید پیغام زیر نمایش داده شود‪:‬‬

‫‪password changed successfully‬‬

‫خطاها‬

‫اگر کاربری با این نام کاربری وجود نداشت باید پیغام زیر نمایش داده شود‪:‬‬

‫‪no user exists with this username‬‬

‫اگر پسورد اشتباه بود باید پیغام زیر نمایش داده شود‪:‬‬

‫‪incorrect password‬‬

‫اگر پسورد جدید معتبر نبود باید پیغام زیر نمایش داده شود‪:‬‬

‫‪https://quera.org/course/assignments/40250/print‬‬ ‫‪47/59‬‬
‫‪4/11/23, 11:14 AM‬‬ ‫تمرین ‪۲‬‬

‫‪new password format is invalid‬‬

‫اگر پسورد جدید ضعیف بود باید پیغام زیر نمایش داده شود‪:‬‬

‫‪new password is weak‬‬

‫حذف حساب‬

‫]‪remove account [username] [password‬‬

‫این دستور کاربری با نام کاربری و پسورد داده شده را حذف می‌کند‪ .‬اگر خطایی رخ ندهد و حذف موفقیت‬

‫آمیز باشد باید پیغام زیر نمایش داده شود‪:‬‬

‫‪account removed successfully‬‬

‫خطاها‬

‫اگر کاربری با این نام کاربری وجود نداشت باید پیغام زیر نمایش داده شود‪:‬‬

‫‪no user exists with this username‬‬

‫اگر پسورد اشتباه بود باید پیغام زیر نمایش داده شود‪:‬‬

‫‪incorrect password‬‬

‫‪##‬پایان برنامه‬

‫‪https://quera.org/course/assignments/40250/print‬‬ ‫‪48/59‬‬
‫‪4/11/23, 11:14 AM‬‬ ‫تمرین ‪۲‬‬

‫‪Exit‬‬

‫با زدن این دستور برنامه به اتمام می‌رسد‪.‬‬

‫منوی اصلی‬

‫در صورت موفقیت آمیز بودن الگین وارد این منو می‌شویم‪.‬‬

‫از این منو برای جابجایی بین منو ها استفاده می‌کنیم‪.‬‬

‫دستورات‬

‫ورود به منوی ادمین‬

‫‪admin menu‬‬

‫با این دستور ادمین وارد منوی ادمین می‌شود‪ .‬دقت کنید این منو تنها مخصوص ادمین است و اگر کاربران‬

‫عادی این دستور را وارد کنند باید پیغام زیر نمایش داده شود‪:‬‬

‫‪you don't have access to this menu‬‬

‫ورود به منوی مشتری‬

‫‪customer menu‬‬

‫با این دستور کاربر وارد منوی مشتری می‌شود‪ .‬دقت کنید این منو تنها مخصوص کاربر عادی است و اگر‬

‫ادمین این دستور را وارد کنند باید پیغام زیر نمایش داده شود‪:‬‬

‫‪https://quera.org/course/assignments/40250/print‬‬ ‫‪49/59‬‬
‫‪4/11/23, 11:14 AM‬‬ ‫تمرین ‪۲‬‬

‫‪you don't have access to this menu‬‬

‫خروج از حساب‬

‫‪logout‬‬

‫با این دستور کاربر از حساب کاربری خود خارج می‌شود‪.‬با اجرای این دستور پیغام زیر نمایش داده می‌شود و‬

‫پس از آن کاربر وارد منوی ثبت‌نام می‌شود‪:‬‬

‫‪logout successful‬‬

‫منوی ادمین‬

‫این منو برای ادمین طراحی می‌شود تا بتواند بر هواپیماها و پروازها نظارت کند‪.‬‬

‫دستورات‬

‫اضافه کردن هواپیما‬

‫]‪add airplane [name] [capacity‬‬

‫با این دستور هواپیمایی با نام و ظرفیت مشخص شده به شرکت اضافه می‌شود‪ .‬در صورت انجام موفق‬

‫دستور‪ ،‬پیغام زیر چاپ می‌شود‪:‬‬

‫‪plane created successfully‬‬

‫خطاها‬

‫‪https://quera.org/course/assignments/40250/print‬‬ ‫‪50/59‬‬
‫‪4/11/23, 11:14 AM‬‬ ‫تمرین ‪۲‬‬

‫اگر هواپیمایی با این نام در لیست هواپیماهای شرکت وجود داشت باید پیغام زیر نمایش داده شود‪:‬‬

‫‪an airplane exists with this name‬‬

‫هر هواپیما حداقل باید ‪ 10‬نفر ظرفیت داشته باشد در غیر این صورت(عدد منفی یا مثبت کمتر از ‪ )10‬باید‬

‫پیغام زیر نمایش داده شود‪:‬‬

‫‪invalid capacity‬‬

‫اضافه کردن پرواز‬

‫]‪add flight [origin] [destination] [date] [airplane's name] [ticket price‬‬

‫با این دستور یک پرواز با اطالعات مشخص شده به لیست پرواز ها اضافه می‌شود‪ .‬دقت کنید فرمت تاریخ‬

‫باید به فرم ‪ yyyy-mm-dd‬باشد‪ .‬اگر فرمت تاریخ درست باشد‪ ،‬تضمین می‌شود مقدار آن نیز معتبر است و‬

‫نیازی به بررسی معتبر بودن مقدار تاریخ ندارید (به عنوان مثال‪ ،‬تضمین می‌شود عدد مربوط به ماه در‬

‫تاریخ‪ ،‬عددی بین ‪ ۱‬و ‪ ۱۲‬است)‪.‬‬

‫در صورت اجرای موفق این دستور‪ ،‬پیغام زیر چاپ می‌شود‪:‬‬

‫‪flight created successfully‬‬

‫خطاها‬

‫همان طور که گفته شده است‪ ،‬اگر فرمت تاریخ به صورت ‪ yyyy-mm-dd‬نبود‪ ،‬باید پیام زیر چاپ شود‪:‬‬

‫!‪invalid command‬‬

‫‪https://quera.org/course/assignments/40250/print‬‬ ‫‪51/59‬‬
‫‪4/11/23, 11:14 AM‬‬ ‫تمرین ‪۲‬‬

‫اگر هواپیمایی با این نام وجود نداشت باید پیغام زیر نمایش داده شود‪:‬‬

‫‪no airplane exists with this name‬‬

‫اگر قیمت بلیط وارد شده معتبر نبود (یعنی عددی منفی یا برابر با صفر بود)‪ ،‬باید پیغام زیر نمایش داده‬

‫شود‪:‬‬

‫‪invalid ticket price‬‬

‫هر هواپیما تنها یک پرواز در یک روز میتواند انجام دهد‪ .‬پس اگر این هواپیما پرواز دیگری در همین تاریخ‬

‫داده شده داشت باید پیغام زیر نمایش داده شود‪:‬‬

‫‪This aircraft already has a flight on this date‬‬

‫نمایش لیست پرواز‌ها‬

‫‪show all flights‬‬

‫با این دستور باید لیست همه پرواز ها به ادمین نمایش داده شود‪ .‬پرواز ها باید به ترتیب تاریخ پرواز‬

‫نمایش داده شوند و اگر تاریخ پرواز چند پرواز یکی بود باید به ترتیب قیمت بلیط از کمتر به بیشتر و اگر‬

‫قیمت بلیط هم برابر بود بر اساس ترتیب اسکی نام هواپیماها نمایش داده شوند‪ .‬همچنین برای نمایش ‪،‬‬

‫پرواز ها باید از یک به باال شماره گذاری شوند‪.‬‬

‫فرمت نمایش اطالعات هر پرواز هم به صورت زیر است‪:‬‬

‫]‪[number]- [origin]->[destination] [date] [airplane's name] [ticket price‬‬

‫اگر پروازی وجود نداشت پیغام زیر نمایش داده می‌شود‪:‬‬

‫‪https://quera.org/course/assignments/40250/print‬‬ ‫‪52/59‬‬
‫‪4/11/23, 11:14 AM‬‬ ‫تمرین ‪۲‬‬

‫‪nothing‬‬

‫فیلتر تاریخ‬

‫]‪show flights on [date‬‬

‫این دستور دقیقا مانند دستور باال است با این تفاوت که باید لیست پرواز هایی که در تاریخ داده شده‬

‫صورت می‌گیرد را نمایش دهیم‪.‬‬

‫لیست هواپیماها‬

‫‪show airplanes‬‬

‫با این دستور لیست هواپیما ها به ترتیب ‪ ASCII‬نام آنها به ادمین نمایش داده می‌شود‪ .‬همچنین برای‬

‫نمایش‪ ،‬هواپیماها از یک شماره گذاری می‌‌شوند‪ .‬فرمت نمایش اطالعات نیز به صورت زیر است‪:‬‬

‫]‪[number]- [airplane's name] : [number of flights‬‬

‫اگر هواپیمایی وجود نداشت‪ ،‬پیغام زیر نمایش داده می‌شود‪:‬‬

‫‪nothing‬‬

‫نمایش موجودی‬

‫‪show capital‬‬

‫‪https://quera.org/course/assignments/40250/print‬‬ ‫‪53/59‬‬
‫‪4/11/23, 11:14 AM‬‬ ‫تمرین ‪۲‬‬

‫با زدن این دستور موجودی حساب شرکت را در خط بعد باید به ادمین نمایش دهید‪.‬‬

‫بازگشت به منوی اصلی‬

‫‪back‬‬

‫با زدن این دستور ادمین به منوی اصلی باز می‌گردد‪.‬‬

‫منوی مشتری‬

‫این منو برای مشتری‌ها طراحی می‌شود تا با آن بتوانند بلیط بخرند یا بلیط خود را کنسل کنند‪.‬‬

‫دستورات‬

‫خرید بلیط‬

‫]‪purchase ticket [origin] [destination‬‬

‫این دستور برای خرید بلیط پرواز مستقیم از مبدا به مقصد مشخص شده است‪.‬‬

‫در صورتی که حداقل یک پرواز از مبدا به مقصد وجود داشت باید همه پرواز ها بین این مبدا و مقصد را به‬

‫ترتیب تاریخ پرواز به کاربر نشان دهید (اگر دو پرواز تاریخ یکسانی داشتند‪ ،‬بر اساس قیمت بلیط (از کمتر‬

‫به بیشتر) و اگر قیمت بلیط هم یکسان بود‪ ،‬به ترتیب کد اسکی نام هواپیماها مرتب می‌شوند) ‪ .‬پرواز ها‬

‫از یک به باال شماره گذاری می‌شوند‪ .‬فرمت نشان دادن اطالعات پرواز هم به صورت زیر است‪:‬‬

‫]‪[number]- [date] [airplane's name] [ticket price‬‬

‫حال که لیست پرواز ها بین مبدا و مقصد مشخص شده نمایش داده شد کاربر باید از بین پرواز ها یکی را‬

‫برای خرید انتخاب کند‪ .‬برای این کار از کاربر یک عدد دریافت کنید که همان شماره پرواز در لیست نمایش‬

‫‪https://quera.org/course/assignments/40250/print‬‬ ‫‪54/59‬‬
‫‪4/11/23, 11:14 AM‬‬ ‫تمرین ‪۲‬‬

‫داده شده است‪ .‬برای خارج شدن از این بخش کاربر باید کلمه زیر را وارد کند‪:‬‬

‫‪end‬‬

‫با وارد کردن این کلمه کاربر از این بخش خارج می‌شود و دوباره می‌تواند دستورات منوی مشتری را وارد کند‪.‬‬

‫در صورت نبود مشکل و موفقیت بودن خرید بلیط باید پول از حساب کاربر کم شده و به حساب شرکت واریز‬

‫شود و پیغام زیر به کاربر نمایش داده شود‪:‬‬

‫‪purchase successful‬‬

‫پس از خرید موفقیت آمیز بلیط هم دوباره باید منتظر دریافت عدد از کاربر باشید‪.‬‬

‫خطاها‬

‫در این بخش اگر چیزی غیر از عدد وارد شود باید عبارت زیر نمایش داده شود‪:‬‬

‫!‪invalid command‬‬

‫اگر عدد وارد شده معتبر نبود باید پیغام زیر نمایش داده شود‪:‬‬

‫‪invalid number‬‬

‫اگر ظرفیت پرواز انتخاب شده پر باشد باید پیغام زیر به کاربر نمایش داده شود‪:‬‬

‫‪no empty seat‬‬

‫اگر کاربر پول کافی برای خرید بلیط در حساب خود نداشت باید پیغام زیر نمایش داده شود‪:‬‬

‫‪https://quera.org/course/assignments/40250/print‬‬ ‫‪55/59‬‬
‫‪4/11/23, 11:14 AM‬‬ ‫تمرین ‪۲‬‬

‫‪you don't have enough money‬‬

‫اگر پرواز مستقیمی از مبدا به مقصد مشخص شده وجود نداشت‪ ،‬ابتدا پیغام زیر را به کاربر نمایش دهید‪:‬‬

‫]‪There is no direct flight from [origin] to [destination‬‬

‫سپس اگر امکان رفتن از مبدا به مقصد با پرواز دو مسیره (یعنی با دو پرواز از مبدا به مقصد برود) بود ‪ ،‬آنها‬

‫را به کاربر پیشنهاد دهید‪ .‬دقت کنید در صورتی میتوان پرواز دومسیره داشت که تاریخ مسیر اول‪ ،‬زودتر از‬

‫تاریخ مسیر دوم باشد (اگر تاریخ‌ها یکسان باشند هم این پرواز دومسیره ممکن نخواهد بود)‪ .‬برای این کار‬

‫همه جفت پرواز های معتبر را به ترتیب پرواز اول و در صورت یکسان بودن آن به ترتیب پرواز دوم به کاربر‬

‫نمایش دهید (برای مقایسه دو پرواز‪ ،‬همانند بخش‌های قبل‪ ،‬اولویت ابتدا با پروازی با تاریخ زودتر است‪ .‬اگر‬

‫دو پرواز تاریخ یکسانی داشتند‪ ،‬بر اساس قیمت بلیط (از کمتر به بیشتر) و اگر قیمت بلیط هم یکسان بود‪،‬‬

‫به ترتیب کد اسکی نام هواپیماها مرتب می‌شوند)‪ .‬همچنین پرواز ها از یک به باال شماره گذاری می‌شوند‪.‬‬

‫فرمت نمایش این جفت پرواز ها نیز به صورت زیر است‪:‬‬

‫[ ]‪[number]- [origin]->[third city] [date] [ticket price] | [third city]->[destination‬‬

‫حال که لیست پرواز های دو مسیره نمایش داده شد کاربر باید از بین پرواز ها یکی را برای خرید انتخاب‬

‫کند‪.‬برای این کار از کاربر یک عدد دریافت کنید که شماره پرواز ها در لیست نمایش داده شده است‪ .‬برای‬

‫خارج شدن از این بخش کاربر باید کلمه زیر را وارد کند‪:‬‬

‫‪end‬‬

‫در صورت نبود مشکل و موفقیت بودن خرید بلیط ها پیغام زیر به کاربر نمایش داده شود‪:‬‬

‫‪purchase successful‬‬

‫‪https://quera.org/course/assignments/40250/print‬‬ ‫‪56/59‬‬
‫‪4/11/23, 11:14 AM‬‬ ‫تمرین ‪۲‬‬

‫پس از خرید موفقیت آمیز بلیط هم دوباره باید منتظر دریافت عدد از کاربر باشید‪.‬‬

‫خطاهای پیشنهاد پرواز‬

‫در این بخش اگر چیزی غیر از عدد وارد شود باید عبارت زیر نمایش داده شود‪:‬‬

‫!‪invalid command‬‬

‫اگر عدد وارد شده معتبر نبود باید پیغام زیر نمایش داده شود‪:‬‬

‫‪invalid number‬‬

‫اگر ظرفیت هر یک از پرواز های انتخاب شده پر باشد باید پیغام زیر به کاربر نمایش داده شود‪:‬‬

‫‪no empty seat‬‬

‫اگر کاربر پول کافی برای خرید بلیط ها در حساب خود نداشت باید پیغام زیر نمایش داده شود‪:‬‬

‫‪you don't have enough money‬‬

‫افزایش اعتبار حساب‬

‫]‪charge account [amount‬‬

‫با زدن این دستور حساب کاربر به مقدار مشخص شده شارژ می‌شود‪ .‬تضمین می‌شود مقدار ورودی عددی‬

‫صحیح است‪ .‬اگر شارژ موفقیت آمیز بود‪ ،‬باید پیغام زیر چاپ شود‪:‬‬

‫‪account charged successfully‬‬

‫‪https://quera.org/course/assignments/40250/print‬‬ ‫‪57/59‬‬
‫‪4/11/23, 11:14 AM‬‬ ‫تمرین ‪۲‬‬

‫خطاها‬

‫اگر مقدار ‪ ،‬معتبر نباشد (یعنی عددی منفی یا برابر با صفر باشد)‪ ،‬باید پیغام زیر نمایش داده شود‪:‬‬

‫‪invalid amount‬‬

‫کنسل کردن بلیط‬

‫‪cancel ticket‬‬

‫این دستور برای کنسل کردن بلیط خریداری شده توسط کاربر است‪ .‬اگر کاربر هیچ بلیطی نداشته باشد‬

‫پیغام زیر باید نمایش داده شود‪:‬‬

‫‪you don't have any tickets‬‬

‫در غیر این صورت لیست بلیط های کاربر به همان ترتیبی که خریداری شده است نمایش داده میشود و‬

‫بلیط ها از یک شماره گذاری میشوند‪ .‬دقت کنید کاربر به ازای هر مسیر در پرواز‪ ،‬یک بلیط مجزا دارد (یعنی‬

‫با خرید پرواز دو مقصده‪ ،‬ابتدا بلیطی برای پرواز اول و سپس بلیطی برای پرواز دوم خریداری کرده است)‪.‬‬

‫فرمت نمایش بلیط ها به صورت زیر است‪:‬‬

‫]‪[number]- [origin]->[destination] [date] [ticket price‬‬

‫حال که لیست بلیط ها نمایش داده شد کاربر باید یک بلیط را کنسل کند‪ .‬برای این کار از کاربر یک عدد‬

‫دریافت کنید که شماره بلیط ها در لیست نمایش داده شده است‪ .‬برای خارج شدن از این بخش کاربر باید‬

‫کلمه زیر را وارد کند‪:‬‬

‫‪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‬‬

You might also like