PDA

View Full Version : گفتگو: دارم رو طراحی سیستمی برای پایانه اتوبوسرانی کار میکنم بعضی قسمت ها رو نمیدونم باید چیکار کنم لطفا



samadblaj
دوشنبه 20 شهریور 1391, 10:08 صبح
سلام دوستان ببخشید چند تا مشکل دارم لطفا راهنماییم کنید

دارم رو طراحی سیستمی برای پایانه اتوبوسرانی کار میکنم بعضی قسمت ها رو نمیدونم باید چیکار کنم؟

سوال اولم : موقع رزرو کاربر وقتی شهری رو انتخاب میکنه باید لیست حرکت ها رو توی یه کامبو دیگه نمایش بدیم خوب پایگاه داده به چه شکلی باید باشه؟ :چشمک:

Farshid007
دوشنبه 20 شهریور 1391, 11:27 صبح
وا
مگه اتوبوسرانی تهران واسه این سیستمش که تازه راه انداخته از تو کمک گرفته؟

Farshid007
دوشنبه 20 شهریور 1391, 11:32 صبح
یک راه خوب
لیست تمام شهر هارو به ترتیب تو پایگاه ذخیره کنیم!
مثلا از شیراز می خواهیم بریم به کرج:
قسمتی از لیت ذخیره شده بدین شکل است:

شیراز
اصفهان
قم
تهران
کرج

مبدا:شیراز
مقصد: کرج
شهر های بین:تهران قم اصفهان
یعنی بین این ها هر چی هست رو می خونه!
فقط مشکل اینه که چجوری شهر هارو بچینیم؟

samadblaj
دوشنبه 20 شهریور 1391, 11:52 صبح
اول ممنونم بابت همکاریت.


وا
یعنی چی !!!


مگه اتوبوسرانی تهران واسه این سیستمش که تازه راه انداخته از تو کمک گرفته؟
نه شاه پسر یه تحلیل.



مبدا:شیراز
مقصد: کرج
غیر ممکنه کرج باشه !


یک راه خوب
لیست تمام شهر هارو به ترتیب تو پایگاه ذخیره کنیم!
مثلا از شیراز می خواهیم بریم به کرج:
قسمتی از لیت ذخیره شده بدین شکل است:

شیراز
اصفهان
قم
تهران
کرج

مبدا:شیراز
مقصد: کرج
شهر های بین:تهران قم اصفهان
یعنی بین این ها هر چی هست رو می خونه!
فقط مشکل اینه که چجوری شهر هارو بچینیم؟

نه ببین اشتباه میرید نیازی به مبدا نیست مبدا که مشخصه همون سرویس دهنده است. نیاز نیست.

یه کامبو قرار میدیم : از لیست مقصد، هر مقصدی هم قیمتش فیلد بعدیشه. تا اینجا مشکل نیست.
به چه شکل میتونم فرضا برای تهران ساعت چند تا ساعت بزارم یعنی برای ساعات حرکت هر شهر یه جدول درست کنم؟

لطفا ایده بدید !

Arash_janusV3
دوشنبه 20 شهریور 1391, 12:03 عصر
درود بر همه
پیشنهادی میدم شاید الان منطقی به نظر نرسه ولی در بلند مدت قدرت خودش رو نشان میده
شما باید در یک جدول بتونید همه مبدا و مقصد و زمان را مشخص کنید
یعنی یک فیلد مبدا و دیگری مقصد و نهایتا زمان
مثال : مبدا=تهران مقصد= شیراز زمان = 10ساعت
مبدا= تهران مقصد= کرج زمان= 30دقیقه
از نظر داده ای خیلی باید اطلاعات وارد کنید اما هم جدول سبکی دارید و هم اینکه از مسائل پیش بینی نشده هراسی ندارید

این نظر من بود
باز هم اگر موردی هست بگید کمکتون میکنم

samadblaj
دوشنبه 20 شهریور 1391, 12:13 عصر
نه آرش جان ببینید من منظورم ساعات حرکت در روز هستش مثلا شیراز امروز 10 سرویس داره ساعت 8 ، ساعت 10 اینا رو کجا قرار بدم یعنی برای ساعت های حرکت هر شهرستان یه جدول درست کنم؟؟؟

Arash_janusV3
دوشنبه 20 شهریور 1391, 12:23 عصر
نه آرش جان ببینید من منظورم ساعات حرکت در روز هستش مثلا شیراز امروز 10 سرویس داره ساعت 8 ، ساعت 10 اینا رو کجا قرار بدم یعنی برای ساعت های حرکت هر شهرستان یه جدول درست کنم؟؟؟
بهتره یک جدول برای این در نظر بگیرید تحت عنوان زمان حرکات
فیلدها : زمان حرکت ، زمان حدودی مقصد ، مدت زمان مسیر ، و ...
و یک جدول هم نام همه شهرها
حالا در برنامه و در یک فرم برای پر کردن جدول بگذار
که شهرها را انتخاب می کنه
مبدا و مقصد رو باید از همان جدول شهرها انتخاب بشه که 2 تا ID شهرها در جدول زمان حرکات همراه با زمان ها ذخیره می شه

Farshid007
دوشنبه 20 شهریور 1391, 12:27 عصر
غیر ممکنه کرج باشه !
میشه بپرسم بچه کجایی؟

samadblaj
دوشنبه 20 شهریور 1391, 12:42 عصر
بهتره یک جدول برای این در نظر بگیرید تحت عنوان زمان حرکات
فیلدها : زمان حرکت ، زمان حدودی مقصد ، مدت زمان مسیر ، و ...
و یک جدول هم نام همه شهرها
حالا در برنامه و در یک فرم برای پر کردن جدول بگذار
که شهرها را انتخاب می کنه
مبدا و مقصد رو باید از همان جدول شهرها انتخاب بشه که 2 تا ID شهرها در جدول زمان حرکات همراه با زمان ها ذخیره می شه

اینجور خیلی سیستم پیچیده میشه.
بهتر نیست جدول ساعت ها رو که درست میکنم برای هر مسیر یه کد بزارم که مشخص کنه این مسیر مثلا کرجه .

جدول ساعات حرکت.
مثلا توی برنامه کد شهر کرج 11 است.
============
فیلد کد------ فیلد ساعات حرکت
11.......ساعت 8
11.......ساعت 10
11.......ساعت 12

matin.soft
دوشنبه 20 شهریور 1391, 12:48 عصر
دوست عزيز شما مي تويند يك جدول فقط براي اطلاعات سرويس ها اختصاص بديد مثلا ساعت حركت نوع ماشين مبدا ، مقصد و راننده و هزينه و ... كه به هنگام ثبت مسافر با انتخاب يك فيلد تمامي اين اطلاعات بصورت اتومات پر بشن و كاربر فقط اطلاعات مسافر رو وارد كنه .

samadblaj
دوشنبه 20 شهریور 1391, 19:48 عصر
Arash_janusV3 , Farshid007 , matin.soft ممنونم از دوستان عزیزی که کمک کردند ، امیدوارم دوباره اطلاعات خودشون رو در اختیار ما قرار بدن.

خوب دوستان تا اینجای کار درست الان توی سیتم کاربر وارد میشه از کامبو مشخص مقصد مثلا کرج رو انتخاب میکنه. میخواد صندلی رزرو کنه چجور میشه؟
چطور باید بفهمیم این صندلی رزرو شده میشه یکی این جدول رو برام باز کنه به چه شکل خوهد بود؟

FastCode
دوشنبه 20 شهریور 1391, 21:50 عصر
سلام.
اول بگو کدوم شهره.

Bus:
ID
Seats_LeftColumn
Seats_RightColumn
Seats_Back
Seats_rows
Seats_Extra
Seats_Stories
Seats_RightColumn_Skip_Start
Seats_RightColumn_Skip_count

SeatReservation:
ID
TicketID
SeatID


این ساختاریه که به نظر من میتونه جواب بده.

چیزهای که ساپورت میشه:
صندلی های ردیف عقب
تعداد صندلی های چپ و راست
درب و آب سرد کن سمت راست
تعداد ردیف صندلیها
صندلی های اضافه
تعداد طبقات

حالا باید یه متود درست کنی که تعداد صندلی ها رو به دست بیاره و یه متود که شماره صندلی رو بگیره و موقعیتش رو بگه
مثلاً خروجیش این باشه
class SeatLocation
{
int RowID;//منفی برای صندلی های عقب و صندلی های اضافه
int DistanceFromLeft;
}

samadblaj
دوشنبه 20 شهریور 1391, 22:30 عصر
ممنونم از لطفت زحمت کشیدی نیاز به شماره گذاری نیست این قسمت طراحی شده و تست شده فقط میخواستم یه تحلیل از سیستمم داشته باشم که بتونم نقطه ضعف ها رو بررسی کنم برنامه رو با یه رابط گرافیکی دو بعدی طوری طراحی شده شبیه سازی صندلی های یه اتوبوس با صندلی های بیشتر...
یعنی اگه این سرویس vip باشه بعد از اینکه مدیر مشخص کرد vip اون گراف چراغ های روشن رو نمایش میده کاربر ابتدا مقصد رو تعیین میکنه بعد سرویس ها و ساعات امروز نمایش داده میشه وقتی کاربر سرویس کرج ساعت 10 رو انتخاب کنه. سرویس اگه اسکانیا باشه مرحله بعد اتوماتیک صندلی های این اتوبوس به نمایش در میاد و صندلی هایی هم که رزرو شده اند با رنگ قرمز...

این برنامه برای مدیریت در ترمینال نوشته میشه و طرفین دارای مانیتور های لمسی نصب شده باجه میباشن.

البته قسمت هایی از کار رو با زبان دلفی کردیم و با دلفی هم تمومش میکنم.

ممنونم از همکاریتون موفق باشید.

Arash_janusV3
سه شنبه 21 شهریور 1391, 14:11 عصر
اگر به طور تصادفی 2 نفر یک صندلی رو انتخاب کنند چی میشه؟
همون طور که متوجه شدم شما در طراحی پیشنهاد رزرو صندلی رو میدید
اما اگر همزمان انتخاب شوند چه اتفاقی رخ میده؟
اگر هم امکانش هست یک تصویر از فرم رزرو در اینجا بگذارید
تا بهتر بتونم کمکتون کنم

samadblaj
سه شنبه 21 شهریور 1391, 14:32 عصر
اگر به طور تصادفی 2 نفر یک صندلی رو انتخاب کنند چی میشه؟
همون طور که متوجه شدم شما در طراحی پیشنهاد رزرو صندلی رو میدید
اما اگر همزمان انتخاب شوند چه اتفاقی رخ میده؟
اگر هم امکانش هست یک تصویر از فرم رزرو در اینجا بگذارید
تا بهتر بتونم کمکتون کنم
سلام منظورتون رو درست متوجه نشدم. بهش هم فکر نکرده بودم . حالا تست میکنم .بعد ببینید وقتی سیستم توی پایانه نصب هست دیتا share میشه یعنی پایگاه copy/replace نمیشه. و فکر نکنم مشکلی پیش بیاد یعنی وقتی کاربر جایگاهی رو مشخص میکنه اولویت میشه با کسی زودتر انتخاب کرده.
زمانی که کاربر صندلی 20 رو کلیک میکنه پارمتر ارسال میشه و تداخلی هم ایجاد نمیشه.

FastCode
سه شنبه 21 شهریور 1391, 15:18 عصر
میتونید به جای ساختاری شبیه این:

SeatReservation:
ID
TicketID
SeatID
از ساختاری شبیه این
SeatReservation
TicketID \
..............> Primary Key
SeatID /

یا این
Ticket:
PreferredSeatID \
..........................> Unique Key
ConvoyID /

استفاده کنید

samadblaj
سه شنبه 21 شهریور 1391, 15:58 عصر
fastcode عزیز میشه یه کم توضیحات هم کنارش بزاری چجور شد ؟ کدوم جدول به کدوم کلید شد؟

چه طراحی جالب داری.

ehsan7007
سه شنبه 21 شهریور 1391, 16:05 عصر
مگه هر صندلی یه شماره نداره!
خب چک کنه شماره تکراری نباشه!

ehsan7007
سه شنبه 21 شهریور 1391, 16:07 عصر
سوال اولم : موقع رزرو کاربر وقتی شهری رو انتخاب میکنه باید لیست حرکت ها رو توی یه کامبو دیگه نمایش بدیم خوب پایگاه داده به چه شکلی باید باشه؟

منظورت اینه که کاربر از کمبوی اول نام شهر مقصد رو انتخاب می کنه و خودکار در کمبوباکس 2 ساعت و تاریخ حرکت ها نمایش داده میشه؟
اگه اینطوری خب برای هر شهر یه تیبل جدا درست کن!!!!!!

Arash_janusV3
سه شنبه 21 شهریور 1391, 16:25 عصر
فرض می کنیم 2 سیستم وجود داره و پشت هر سیستم یک کاربر
حالا به هر دو صندلی های خالی رو نمایش میده
کاربر شماره یک صندلی 20 رو انتخاب میکنه اما ثبت نمی زند
در همان لحظه کاربر شماره دو هنوز صندلی 20 رو خالی می بینه
وحالا همزمان ثبت اطلاعات رو می زنند
در برنامه چه اتفاقی خواهد افتاد؟
آیا کنترل کردید؟

FastCode
سه شنبه 21 شهریور 1391, 17:34 عصر
fastcode عزیز میشه یه کم توضیحات هم کنارش بزاری چجور شد ؟ کدوم جدول به کدوم کلید شد؟

چه طراحی جالب داری.
من دقیقاً نمیدونم شما ticket ه تکی دارید یا batch یا کلاً تعریفی به اسم Convoy دارید یا نه.
اگر یک مقدار این ساختار ها رو روشن کنید میتونم دقیقتر توضیح بدم که چطوری میتونید جلوی اون خطا رو بگیرید.

پ.ن.:این نوع خطا در صورت عدم جلوگیری کم اتفاق نمیافته.

samadblaj
سه شنبه 21 شهریور 1391, 17:39 عصر
مگه هر صندلی یه شماره نداره!
خب چک کنه شماره تکراری نباشه!
ممنونم احسان جون خوب پ نه پ میخوای این کار رو هم نکنم (خط آخر)!



منظورت اینه که کاربر از کمبوی اول نام شهر مقصد رو انتخاب می کنه و خودکار در کمبوباکس 2 ساعت و تاریخ حرکت ها نمایش داده میشه؟
اگه اینطوری خب برای هر شهر یه تیبل جدا درست کن!!!!!!
اینم به این شکل نیست جدولی دارم از لیست شهر ها بایند میشه توی کامبو بعد از انتخاب ساعات حرکت شهر توی گرید نمایش داده میشه. زمانی که ساعت خاصر رو انتخاب کنه به همراه اطلاعاتش به فاکتور تبدیل میشه...



فرض می کنیم 2 سیستم وجود داره و پشت هر سیستم یک کاربر
حالا به هر دو صندلی های خالی رو نمایش میده
کاربر شماره یک صندلی 20 رو انتخاب میکنه اما ثبت نمی زند
در همان لحظه کاربر شماره دو هنوز صندلی 20 رو خالی می بینه
وحالا همزمان ثبت اطلاعات رو می زنند
در برنامه چه اتفاقی خواهد افتاد؟
آیا کنترل کردید؟

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


ولی موندم چجور رزرو های یک سیستم رو ذخیره و مسدود کنم؟

samadblaj
سه شنبه 21 شهریور 1391, 17:58 عصر
من دقیقاً نمیدونم شما ticket ه تکی دارید یا batch یا کلاً تعریفی به اسم Convoy دارید یا نه.
اگر یک مقدار این ساختار ها رو روشن کنید میتونم دقیقتر توضیح بدم که چطوری میتونید جلوی اون خطا رو بگیرید.

پ.ن.:این نوع خطا در صورت عدم جلوگیری کم اتفاق نمیافته.

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

بازم ممنونم از شما که پست ها رو با این صبر و شکیبایی پاسخ میدید.

samadblaj
سه شنبه 21 شهریور 1391, 21:59 عصر
میشه تحلیل این قسمت رو کمکم کنید.

چجور تشخیص بدم این صندلی رزرو شده ؟ و چجور تشخیص پر شدن صندلی ها؟

Arash_janusV3
سه شنبه 21 شهریور 1391, 22:08 عصر
میشه تحلیل این قسمت رو کمکم کنید.

چجور تشخیص بدم این صندلی رزرو شده ؟ و چجور تشخیص پر شدن صندلی ها؟

در جدول باید یک فیلد وضعیت در نظر بگیرید و طبق اعمال عملیات به واسطه کاربر اون رو Update کنید

FastCode
چهارشنبه 22 شهریور 1391, 00:10 صبح
در جدول باید یک فیلد وضعیت در نظر بگیرید و طبق اعمال عملیات به واسطه کاربر اون رو Update کنید
اینطوری نمیشه.
مسئله اصلی همین جدوله.

اگر بلیط شماره صندلی داشته باشه میتونید بلیط های اون convoy رو query بگیرید و تست کنید که آیا اون صندلی رزرو شده یا نه.
اگر رزرویشن ها جداست باید یک جور دیگه کوئری بگیرید و .......
این سیستم رو میشه پنج شش مدل طراحی کرد.
اگر samadblaj ه عزیز ساختار جداول ه convoy و ticket رو بزارن خیلی راحتتر میشه نظر داد.

samadblaj
چهارشنبه 22 شهریور 1391, 01:53 صبح
ممنونم از هر دو دوست عزیز بابا دوست ندارم الان سیستم رو بزارم به اعتقاد خودم الان خیلی کار داره و یه خورده مبتدیانه است :چشمک: با این صحبت هایی که FastCode داشتن منم امروز نشستم بیشتر پایگاه رو دوباره بازنویسی کردم :اشتباه:

سعی میکنم بعد از خروجی کامل یه دمو بزارم توی همین انجمن ولی خیلی دارم روش کار میکنم...
مطمئننم مثل یکی دیگه از برنامه هام جواب میگیرم.

بازم ممنونم از راهنمایی همه :تشویق: