از پارسکدرز بیشترین بهره را ببرید و رویای کاری خود را زندگی کنید.
دو سال پیش منتشر شده
تعداد بازدید: 158
کد پروژه: 474821
شرح پروژه
درخواست ثبت مجدد پروژه ددلاین فردا
یه پروژه c++ داشتم
دانشجویی
استفاده از شئ گرایی (OOP) و مباحث مرتبط با آن (... و polymorphism, inheritance) در پروژه الزامی است!
استفاده از لایبری وکتور و مشابه غیر مجاز است.
در پی رقابت سنگین اسنپ و تپسی، شرکت تپسی ضرر هنگفتی را متحمل شد. او از کارکنان خود خواست تا ایده جدیدی در این حوزه مطرح کنند تا بتواند با نو آوری ورق بازی را به نفع خود برگرداند. یکی از این ایده ها استفاده از حمل و نقل هوایی با استفاده از پهپاد ها و وسایل پرنده است. میلاد (مدیر عامل تپسی) شخصا به دانشگاه تهران آمده و از شما میخواهد برنامه ای جهت مدیریت آن، مشابه تپسی و اسنپ معمولی، طراحی کنید. کاربر این برنامه ادمین آژانس/تپسی هست که درخواست سفر را با داشتن اطلاعات کافی، مدیریت و پایش میکند.
سرویس های برنامه به صورت کلی به دو دسته تقسیم می شوند:
حمل مسافر:
پهپاد عادی (eco)
هلیکوپتر شیک (vip)
پهپاد تک سر نشین (ehang)
جابجایی بار:
کوادکوپتر (quadcopter)
پهپاد تک سر نشین (ehang)
هلیکوپتر باری(skycrane)
هواپیمای سنگین(stratofortress)
پایه ای ترین نیازمندی برنامه ثبت و ویرایش و حذف و خواندن اطلاعات مسافر و راننده است. (تصور کنید همه وسایل راننده دارند. چه از راه دور چه در خود وسیله!) برای راننده ها علاوه بر اطلاعات اولیه(id ،نام و نام خانوادگی، شماره تلفن، پلاک وسیله، رنگ وسیله، موجودی) و نوع دقیق سرویس ارائه شده (که در بالا گفتیم) و لوکیشن فعلی (x,y) و شماره کارت/حساب، عادت راننده در سرعت راندن وسیله (که در تمام لحظه ها ثابت و بر حسب کیلومتر بر دقیقه است) دریافت می شود. همچنین در موقع ثبت نام راننده اطلاعاتی در مورد ترجیحیات راننده مانند: حداقل و حداکثر مسافت و زمان سفر و حداقل هزینه سفر را ثبت میکنیم تا در موقع تخصیص یک سفر به آن ها، احتمال قبول کردن سفر، بر اساس این فاکتور ها محاسبه شود.
register driver {first name} {last name} {phone} {vehicle tag} {vehicle color} {driver balance} {service type} {current location}{bank id} {average speed} {min length} {max length} {min time} {max time} {min income} {max income}
register driver ali hoseini 09121234567 33b457ir55 black 0 vip 400,300 6037991912345678 100 10 100 0 200 10000 10000000
اطلاعات ذخیره شده از مسافر نیز صرفا همان اطلاعات اولیه است (نام، نام خانوادگی و موجودی).
register passenger {first name} {last name} {phone} {balance}
register passenger nima abedi 09121234567 5000000
کاربر/ادمین برنامه باید بتواند موجودی مسافر را افزایش دهد (که حالت خاصی از آپدیت مسافر حساب میشود)
update {person id} {new balance}
update 1001 65000
برای هر راننده یا مسافر در هنگام ثبت نام آن ها یک کد شناسایی (id) به آن ها تخصیص می یابد. این شماره یکتا است و به ترتیب ثبت نام از عدد 1000 شروع می شود.
کاربر/ادمین درخواست سفر را ثبت می کند.. اطلاعاتی که برای درخواست سفر وارد میکند عبارتند از:
زمان اجرای درخواست
آیدی(id) مسافر
لوکیشن مبدا و مقصد
نوع سرویس درخواستی
آپشن های اختصاصی مربوط نوع سرویس در صورت وجود(در ادامه توضیح داده می شود.)
request {execution time} {id} {start location} {destination location} {type} {...options...}
request 00:28 1000 0,0 300,400 vip {...options...}
پس از درخواست ثبت سفر، قیمت سفر با توجه به نوع سرویس درخواست شده و فاکتور های اختصاصی و فاصله مبدا و مقصد و ساعت درخواست سرویس محاسبه می شود (شلوغ بودن ساعت 17 تا 21 است.)
دقت کنید ساعت در برنامه باید با شمارنده (counter) مدیریت کنید. وزن هر یک از فاکتور های گفته شده در محاسبه قیمت در ابتدای برنامه از کاربر ورودی بگیرید.
دقت کنید اگر موجودی مشتری از هزینه محاسبه شده برای سفر کمتر بود خطای موجودی ناکافی روی کنسول چاپ میشود.(از شما انتظار می رود این خطا را مدیریت کنید!) آپشن های سفر را به صورت چند عدد پشت سر هم دریافت می شوند. هر کدام در صورت وجود عدد 1 سپس آپشن های اختصاصی برای سرویس حمل بار:
اضافه وزن بار برای تمام زیر سرویس ها در صورتی بیشتر از 50 کیلوگرم باشد. (عددی بر حسب کیلوگرم که نمایانگر کل وزن بار است)
درخواست کارگر برای کمک کردن در جابجایی بار برای سرویس های هلیکوپتر باری و هواپیمای سنگین
درخواست بیمه بار (با گرفتن ارزش مرسوله و اضافه کردن دو درصد ارزش بار به هزینه سفر، دو درصد ارزش بار)
مثال:
{over weight} {weight} {need worker} {insurance} {The value of the shipment}
1 950 1 1 550000
0 1 0
آپشن های اختصاصی سرویس جابجایی مسافر:
توقف در سفر ( به صورت عددی بر حسب دقیقه)
{need stop} {time min}
1 20
0
پس از درخواست سفر، جست و جو برای پیدا کردن راننده مناسب، به ترتیب اولویت راننده ها، که این اولویت با توجه به 2 فاکتور:
امتیاز
فاصله راننده تا مبدا
محاسبه می شود. وزن این فاکتور ها مانند محاسبه قیمت ورودی داده خواهند شد. حضور هر دو فاکتور در اولویت بندی به جز حالت "عجله دارم" الزامیست. سفر به راننده مورد نظر فرستاده می شود تا بررسی شود که راننده قبول می کند یا نه. قبول کردن یا نکردن سفر توسط راننده، احتمالش را ابتدا با توجه به ترجیحات راننده که در ابتدا موقع ثبت راننده، ثبت کرده بودیم محاسبه و سپس اگر احتمال بالای 70 درصد بود راننده سفر را قبول می کند. در غیر این صورت رد میکند و درخواست سفر به راننده با اولویت بعدی فرستاده میشود.
اگر هیچ راننده ای قبول نکرد (فرض کنید در بدترین حالت درخواست به تمام راننده ها ارسال شود) پیغام "Unfortunately, no driver accepted this trip" خروجی داده می شود. واضحا بعد از قبول کردن سفر توسط یک راننده، باید اطلاعاتی نظیر اطلاعات راننده و وسیله آن، زمان رسیدن راننده به مبدا و زمان رسیدن مسافر به مقصد به همراه هزینه سفر چاپ شود تا به مسافر اطلاع داده شود. همچنین شناسه ای برای سفر باید اختصاص دهید که از 1000 شروع می شود.
trip {trip id} started. {driver name} {vehicle} {vehicle tag} will reach your location at {time} and You will arrive at your destination at {time}
trip 1001 started. ali khatar vip 33b457ir55 will reach your location at 22:30 and You will arrive at your destination at 22:35
پس از پایان سفر، هزینه سفر از موجودی مسافر کم می شود. همچنین امتیازی به عنوان امتیاز مسافر به راننده با دستور زیر ورودی گرفته می شود و امتیاز راننده بر اساس آن آپدیت می شود.
register point {trip id} {an integer number [1, 5])
register point 1002 4
به گزارش خبرگزاری فرانسه،در سال 2016 یک بیمار به دستگاه حیاتی ECMO یا اکمو برای زنده باقی ماندن نیاز داشت که در بیمارستان شهر کوچک بودو در مرکز نروژ موجود نبود. ECMO یک دستگاه پیشرفته است كه براي بيماراني كه مشكل قلب و ريه را دارند مانند یک پل نجات عمل ميكند و به عنوان جانشین موقت سیستم گردش خون و تنفس، وظیفه اکسیژن رسانی و پالایش خون را بر عهده میگیرد. از اين دستگاه ميتوان حتی براي بيماراني كه نيازمند پيوند قلب و ريه هستند و هنوز قلبي براي آنها پيدا نشده است،تا زمان پيوند استفاده كرد.
وقت به شدت محدود بود. به همین خاطر مسئولان بیمارستان برای رساندن این دستگاه حیاتی از نزدیکترین شهر از مسئولین درخواست کمک کردند. رساندن این دستگاه به صورت زمینی از نزدیک ترین شهر به حداقل ۱۰ ساعت زمان نیاز داشت. آن ها شروع بررسی تمام راه کار ها و محاسبه زمان رسیدن هر دستگاه به بیمار در هر حالتی کردند. تصمیم گرفتند از نیروی هوایی درخواست کنند که سریع ترین وسیله ممکن را برای آن ها بفرستد. وزارت دفاع نیز با بررسی اینکه کدام خلبان میتواند مسیر 450 کیلومتری را در کم تر از نیم ساعت طی کند و با نادیده گرفتن سایر فاکتور ها، سر انجام یک جنگنده F16 برا برای این کار انتخاب کردند. به گفته مقامهای ارتش نروژ به صورت معمول این فاصله ۴۵۰ کیلومتری را جنگندههای این کشور در ۳۵ دققه طی میکنند اما به خاطر شرایط اضطراری خلبان با سرعت بیشتر و در ۲۵ دقیقه محموله را به مقصد رساند و جان بیمار نجات پیدا کرد.توضیح تصویر
گزینه عجله دارم: در صورت انتخاب این گزینه، جستجو برای یافتن راننده مناسب فارغ از نوع سرویس ارائه شده و امتیاز بوده و معیار اولویت، صرفا زمان رسیدن مسافر به مقصد است. در این حالت تمام وسیله ها از جمله آن هایی در حال سفر باشند نیز بررسی می شوند. به عنوان مثال یک هواپیمای سنگین در حال حمل بار است. در زمان 15 ثانیه سفر خود را تمام و 3 ثانیه بعد به مسافر می رسد و میتواند 10 ثانیه بعد مسافر را به مقصد برساند. این هواپیما اولویت بالاتری نسبت به یک پهپاد عادی با امتیاز بالا دارد که از مسافر 10 ثانیه دور تر است و می تواند مسافر را در 20 ثانیه از مبدا به مقصد برساند. (زمان کل هواپیما 28 و زمان کل پهپاد 30) این گزینه صرفا برای جا به جایی مسافر است.
تمام ضرایب مورد نیاز در یک خط و به ترتیب ورودی داده می شود.
تایم شلوغی : عددی بزرگ تر از 1. مثلا وقتی 1.2 باشد قیمت نهایی 20 درصد افزایش پیدا میکند.
فاصله: عددی صحیح که نمایانگر قیمت هر کیلومتر جا به جایی مسافر از مبدا تا مقصد است. مثلا 750
ضریب قیمت هر سرویس: قیمت پایه که برای هر سفر محاسبه شد (قبل از اعمال سایر گزینه ها، صرفا بر حسب جا به جایی) در ضریب سرویس ضرب می شود. مثلا eco برابر 1, vip برابر 5, پهباد تک سرنشین 2 است.
برای هر کدام از آپشن های سفر نیز ضریبی برای افزایش قیمت داده می شود. ترتیب آن ها همان ترتیب توضیح پروژه است
تاثیر امتیاز: عددی است که امتیاز راننده در آن ضرب می شود
تاثیر فاصله راننده تا مبدا: عددی است نمایانگر امتیاز منفی هر 1 کیلومتر فاصله خواهد بود.
ادمین باید قابلیت این را داشته باشد که هر لحظه با یک راننده خاص یا با تمام راننده ها به صورت کلی تسویه حساب کند.
settlement with all drivers
Settlement only with 1001
همونطور که میدونید هزینه هر سفر به صورت کامل به حساب راننده ها واریز نمی شود و یک درصدی از ان به عنوان کارمزد سفر کسر میشود. (در اسنپ ۲۰ و تپسی ۱۵ درصد می باشد.) این ضریب را نیز در ابتدا از کاربر ورودی بگیرید.
تهیه نسخه پشتیبان
تراکنش های انجام شده (شماره حساب مقصد و مقدار تراکنش و آیدی راننده و مسافر ، تاریخ و زمان تراکنش) را ذخیره کنید. تا با دریافت دستور زیر در یک فایل ذخیره شوند. همچنین تاریچه ای از سفر ها نیز در یک فایل دیگر ذخیره می شوند.
save log transactions
save log trips
ادمین میتواند تمام تراکنش های انجام شده از ابتدا تا الان رو با فیلتر تاریخ ببیند و همچنین به ازای یک راننده خاص (با آیدی راننده) قابلیت ذکر شده را داشته باشد.
print {person id} trips
print 1001 trips
خواندن نسخه پشتیبان
برنامه باید بتواند فایل هایی که ذخیره کرده است را بخواند و به حالت مذکور برسد.
load log transactions
load log trips
نمونه فایل به زودی در دسترس قرار میگرد.
این پروژه شامل 1 فایل مهم است، لطفا قبل از ارسال پیشنهاد حتما نسبت به بررسی این فایل اقدام فرمایید.
مهارت ها و تخصص های مورد نیاز
مهلت برای انجام
1روز
وضعیت مناقصه
بسته
درباره کارفرما
عضویت سه سال پیش
نیاز به استخدام فریلنسر یا سفارش پروژه مشابه دارید؟
قادر به انجام این پروژه هستید؟
متأسفانه مهلت ارسال پیشنهاد این پروژه به پایان رسیده و پروژه بسته شده است؛ اما فرصتهای متعددی در سایت موجود میباشد.
پروژه پروژه پروژه پروژه پروژه پروژه پروژه پروژه
دو سال پیش منتشر شده
به رایگان یک حساب کاربری بسازید
مهارتها و تخصصهای خود را ثبت کنید، رزومه و نمونهکارهای خود را نشان دهید و سوابق کاری خود را شرح دهید.
به شیوهای که دوست دارید کار کنید
برای پروژههای دلخواه در زمان دلخواه پیشنهاد قیمت خود را ثبت کنید و به فرصتهای شغلی منحصر به فرد دسترسی پیدا کنید.
با اطمینان دستمزد دریافت کنید
از زمان شروع کار تا انتهای کار به امنیت مالی شما کمک خواهیم کرد. وجه پروژه را از ابتدای کار به امانت در سایت نگه خواهیم داشت تا تضمین شودکه بعد از تحویل کار دستمزد شما پرداخت خواهد شد.
میخواهید شروع به کار کنید؟
یک حساب کاربری بسازید
بهترین مشاغل فریلنسری را پیدا کنید
رشد شغلی شما به راحتی ایجاد یک حساب کاربری رایگان و یافتن کار (پروژه) متناسب با مهارتهای شما
است.
پیدا کردن کار (پروژه)
تماشای دمو روش کار