طراحی برنامه ای برای مدیریت سفرهای یک آژانس مسافرتی

برای این درخواست   2   پیشنهاد توسط فریلنسرهای سایت ارسال شده است.


در پارسکدرز کارفرمایان سفارش پروژه می دهند تا توسط متخصصین عضو با قیمتی رقابتی انجام شود.


قیمت توافق شده: 15,000 تومان

شرح پروژه:

می خواهیم برنامه ای برای مدیریت سفرهای یک آژانس مسافرتی طراحی کنیم.

کلاس Trip
* خصوصیتها:
برای این کار لازم است ابتدا کلاس Trip را برای تعریف دادهها و عملیات مربوط به سفرها )بلیطها( تعریف کنید. این کلاس دارای
خصوصیتهای کد سفر، تاریخ حرکت )از نوع کلاس Date که خودتان تعریف میکنید(، ساعت حرکت )از نوع کلاس Time که
خودتان تعریف میکنید(، ظرفیت )تعداد کل بلیط قابل فروش(، تعداد بلیط فروخته شده، قیمت بلیط، مبدا و مقصد سفر )بصورت
رشتهای که آرایهای از کاراکترها میباشد(، و مدت سفر )مدت زمانی که رفتن از مبدا به مقصد طول میکشد، به واحد ساعت( می
باشد که بصورت دسترسی private تعریف شدهاند و برای به روز رسانی و نمایش هرکدام نیاز به توابع setter و getter میباشد
)مجموعا 18 تابع برای 9 خصوصیت(. تابع setter خصوصیت کد سفر متفاوت است که توضیح آن در ادامه آمده است.
* سازندهها:
1 . برای این کلاس ابتدا سازندهای تعریف کنید که با 7 ورودی، 7 مشخصه مربوط به سفر )به جز کد سفر و تعداد بلیط فروخته شده(
را دریافت کرده و آنها را مقداردهی میکند. خصوصیت کد سفر بایستی به صورت افزایشی و خودکار تعیین شده و تعداد بلیط
فروخته شده را نیز در ابتدا صفر قرار دهید. برای تعیین خودکار کد سفر، یک متغیر static داخل کلاس تعریف کنید و داخل setter
خصوصیت کد سفر، مقدار این متغیر static را یک واحد افزایش و سپس خصوصیت کد سفر را با آن مقدار دهی کند. سپس با کمک
تابع SaveInFile() )که جلوتر معرفی میگردد(، اطلاعات سفر را در فایل ذخیره کنید.
2 . همچنین سازندهای تعریف کنید که در ورودی تنها کد سفر را دریافت نماید و سپس خصوصیت کد سفر را مقدار دهی کند. سپس
این سازنده، با کمک تابع LoadFromFile() )که جلوتر معرفی می گردد( اطلاعات سفر را از فایل خوانده و آن را در خصوصیتهای
دادهای کلاس قرار میدهد.
لذا توجه فرمایید که هدف از سازنده اول، ایجاد و ذخیره اطلاعات یک سفر جدید و سازنده دوم برای خواندن اطلاعات سفر از فایل
است.
* توابع عضو:
سپس در این کلاس توابع زیر را نیز پیادهسازی کنید:
1 . تابع چاپ اطلاعات سفر: PrintTravelInfo() : چاپ خصوصیتهای سفر روی صفحه نمایش
2 . تابع ذخیره اطلاعات سفر در فایل Travels.dat بصورت باینری: SaveInFile() : این تابع اطلاعات سفر را به اطلاعات ذخیره
شده سفرهای قبلی append میکند. این تابع در سازندهای که 7 پارامتر دارد فراخوانی میگردد.
3. تابع خواندن اطلاعات سفر از در فایل Travels.dat : LoadFromFile() : این تابع با کمک خصوصیت کد سفر، در فایل جستجو
کرده و اطلاعات سفر متناظر را از فایل پیدا کرده و اطلاعات متناظر را در خصوصیتهای دادهای کلاس قرار میدهد. اگر اطلاعات
سفر پیدا نشد، یک خطای جدید TravelNotFount تولید کنید. توجه فرمایید که بعد از خواندن اطلاعات سفر از فایل، برای تنظیم
مقادیر خصوصیتهای کلاس سفر، صرفا از توابع setter خصوصیتها استفاده نمایید و از سازندهای که 7 پارامتر ورودی میگیرد
استفاده نکنید؛ زیرا این سازنده برای تعریف و افزودن یک سفر جدید است.
4. تابع لود کردن اطلاعات سفرها: LoadTravelsInContainer() : در این تابع، اطلاعات کلیه سفرها از فایل Travels.dat خوانده
و در یک vector یا deque از نوع Trip ذخیره میشود. اینکه اطلاعات در vector یا deque ذخیره شود را استفاده کننده از تابع
به کمک template ها تعیین میکند.
5 . تابع چاپ اطلاعات تمام سفرها: PrintAllTravelsFromContainers() . این تابع ابتدا با کمک تابع
LoadTravelsInContainer() اطلاعات سفرها را در یک vector یا deque بارگزاری کرده و سپس با پیمایش آن، اطلاعات سفرها
را چاپ میکند.
6. تابع بارگزاری و چاپ اطلاعات سفرها: LoadPrintTravelsInLinkedList() : در این تابع، اطلاعات کلیه سفرها از فایل خوانده
شده به ترتیب در عناصر یک لیست پیوندی که خودتان تعریف میکنید قرار میگیرد. سپس لیست پیوندی از ابتدا به انتها پیمایش
شده و اطلاعات سفرها چاپ میگردد. در انتهای سند، یک مثال کوچک در مورد چگونگی ایجاد اشیاء جدید از یک کلاس و قرار
دادن در لیست پیوندی آورده شده است.
7. تابع بروزرسانی اطلاعات سفر: UpdateTravelInfo() : هدف این تابع، بروزرسانی اطلاعات سفر در فایل سفرها میباشد. لذا این
تابع محتوای فایل Travels.dat را پیمایش کرده و محل اطلاعات سفر را بر اساس خصوصیت کد سفر پیدا میکند. سپس خصوصیت
های سفر شئ جاری را با اطلاعات قبلی سفر جایگزین میکند )به کمک seekp و write (. زیرا مثلا ممکن است برخی خصوصیتهای
سفر مانند تعداد بلیط فروخته شده، قیمت و ... تغییر کرده باشد و نیاز باشد که اطلاعات سفر در فایل بروزرسانی شود.
7 . لب شورف عبات ی ط SellTicket() که virtual تعریف شده و شامل یک پارامتر نام مسافر میباشد. در این تابع، تعداد بلیط فروخته
شده آن سفر یک واحد افزایش یافته و محتویات Travels.dat بروزرسانی میشود. همچنین اطلاعات بلیط )کد سفر و نام مسافر( را
در فایل دیگری به نام PurchasedTickets.dat که بصورت باینری است ذخیره کنید. در صورتی که تعداد بلیطهای فروخته شده
بیشتر از ظرفیت سفر بود، یک exception جدید به نام InvalidTicketCount تولید گردد. کلاس این استثناء جدید را خودتان
تعریف کنید. برای این سوال، بهتر است کلاس جدیدی تعریف کنید که شامل خصوصیتهای کد سفر و نام مسافر بصورت رشته
آرایهای از کاراکترها باشد.
8 . تابع چاپ لیست مسافرهای سفر: PrintCustomers() : در این تابع، اطلاعات فایل PurchasedTickets.dat خوانده شده و نام
مسافرانی که کد سفر آن ها برابر با خصوصیت کد سفر شئ باشد، چاپ میشود.
* عملگرها:
همچنین عملگرهای زیر را در این کلاس سربارگذاری کنید:
1 . عملگر void Trip+int جهت افزایش ظرفیت سفر. با افزایش ظرفیت سفر، بایستی اطلاعات را داخل یک فایل بروز رسانی کنید.
2. عملگر void Trip++ : افزایش یک واحدی تعداد بلیطهای فروخته شده. در صورتی که تعداد بلیطهای فروخته شده بیشتر از
ظرفیت سفر بود، یک exception جدید به نام InvalidTicketCount تولید گردد. در نهایت اگر خطایی رخ نداد، اطلاعات جدید
سفر را در فایل بروزرسانی کنید.
2. عملگر void Trip-- : کاهش یک واحدی تعداد بلیطهای فروخته شده. در صورتی که تعداد بلیطهای فروخته شده کمتر از 0 شد،
یک exception جدید به نام InvalidTicketCount تولید گردد. در نهایت اگر خطایی رخ نداد، اطلاعات جدید سفر را در فایل
بروزرسانی کنید.
کلاس Trip_Rail
این کلاس از کلاس Trip به صورت public ارث بری میکند.
کلاس Trip_Rail را تعریف نموده و خصوصیت شماره خط راه آهن و ظرفیت یک کوپه )تعداد صندلیهای یک کوپه( را بصورت
private تعریف کنید. برای هرکدام از این خصوصیتها توابع setter و getter مناسب را تعریف کنید. توجه نمایید که ظرفیت کوپخ
حداقل 1 و حداکثر 10 است. در غیر اینصورت یک خطای invalid_argument تولید کنید.
سازندهای با نه پارامتر تعریف کنید که هفت تای آنها مانند سازنده کلاس Trip باشد و دو تای آخر نیز عدد صحیح که شماره خط
راه آهن و ظرفیت کوپه است. داخل این سازنده همراه با سازنده پدر، خصوصیت شماره خط راه آهن هم مقدار دهی شود.
در این کلاس، توابع زیر را نیز پیادهسازی کنید:
1 . تابع چاپ اطلاعات سفر PrintTravelInfo() را بازنویسی کنید و خصوصیتهای جدید را نیز چاپ کنید. توجه کنید که برای
چاپ اطلاعات سفر، نیازی به خواندن اطلاعات از فایل نیست، زیرا خصوصیتهای کلاس را خودتان مقدار دهی میکنید.
2 . تابع فروش بلیط را بازنویسی کنید، بدین صورت که فرض میکنیم خریدار بایستی یک کوپه را کامل خریداری کند. لذا تعداد
بلیط فروخته شده بایستی به اندازه ظرفیت کوپه افزایش یابد. بروزرسانی اطلاعات و تولید خطا را همچون تابع فروش بلیط در تابع
اصلی تعریف نمایید.
در نهایت در تابع main ، از تمام امکانات بیان شده استفاده کنید و یک نمونه کامل تولید کنید. بدین صورت که در عملیات قابل
انجام توسط برنامه شماره گذاری شده و کاربر بتواند با وارد کردن شمارههای مد نظر از امکانات موجود استفاده کند. مثلا گزینه 1
برای ایجاد یک سفر معمولی جدید. سپس اطلاعات سفر را از کاربر بگیرید. گزینه 2 برای تغییر اطلاعات یکی از سفرها. گزینه 3
برای تعریف یک سفر ریلی جدید. گزینه 4 برای فروش یک بلیط سفر معمولی. گزینه 5 برای اجرای عملگر ++ و ...
تذکر: کلاسها را در فایل هدر جداگانه تعریف و در فایل .cpp مربوط به خودش پیادهسازی کنید.


لیست پیشنهادهای فریلنسرها

کاربر50083

کاربر عادی

کاربر عادی

15,000 تومان

امتیاز 9.17 (عالی) از 6 رای
پروژه موفق : 19
رتبه: 787
چهار ماه پیش

Miladsor

فریلنسر نقره‌ای

فریلنسر نقره‌ای

5,000,000 تومان

0.00 (بدون امتیاز)
پروژه موفق : 0
رتبه: 88357
چهار ماه پیش
+8500
+26595

پارسکدرز چی هست و چه کارهایی در اون انجام میشه؟

ما رابط تقاضا و اجرا هستیم. در پارسکدرز خریداران درخواست خود را به صورت عمومی یا خصوصی مطرح می کنند تا توسط مجریان انجام شود. هر کاری که بتوان در بستر اینترنت انجامش داد. کارهایی از قبیل:

فعالیت به عنوان مجری یا فریلنسر

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

پارسکدرز با استفاده از سیستم مالی گروگذاری وجه امنیت مالی طرفین را تضمین می کند. این به این معنی است که شما پس از اطمینان از انجام صحیح پروژه حتما هزینه انجام کار را دریافت می کنید.

فعالیت به عنوان کارفرما یا خریدار

اگر پروژه ای برای انجام داری و قصد داری انجام اون رو به افراد حرفه ای بسپاری کافیه که در پارسکدرز عضو بشی و درخواست خودت رو ثبت کنی تا مجری ها اون رو ببیند و برات پیشنهاد ارسال کنند.

پارسکدرز علاوه بر داشتن نماد اعتماد دو ستاره با استفاده از سیستم مالی گروگذاری وجه، امنیت مالی طرفین را تضمین می کند. این به این معنی است که شما پس از اطمینان از انجام صحیح پروژه خود وجه را آزاد خواهید کرد. همچنین شما می توانید جهت اطمینان بیشتر از مجری بخواهید تا ضمانتی بابت تخصص خود گرو بگذارد.