سلام
من دارم برای سیستم انتخاب واحد دانشگاه یه برنامه مینویسم.برای این قسمت 3 تا جدول درنظر گرفتم.جدول درسهای گرفته شده توسط دانشجو(در ترم های قبل )-جدول دروس پیش نیاز هر درس و جدول دروس ارائه شده در ترم جاری.
مشکلم اینجاست که می خوام هر دانشجو
قبل از اینکه درسی را که انتخاب کرده برایش در جدول درسهای گرفته شده ثبت شود،اول چک شود(در جدول دروس گذرانده شده در ترم های قبل)که آیا دروس پیش نیاز این درس را گذرانده یا نه.که لازمه ی انجام این کار این است که از جدول دروس پیش نیاز ،دروسی که پیش نیاز این درس هستند استخراج شود.
از نظر اجرایی نمی دونم چطوری باید این مراحلو پیاده کنم(با وارد کردن اطلاعات در بانک مشکلی ندارم ولی این که بخواد دروس پیش نیازو پیدا کنه،مخصوصا اگر یه درس بیشتر از یک درس پیش نیاز داشته باشه و اونو با دروسی که قبلا گذرانده مقایسه کنه با پیاده سازیش خیلی مشکل دارم).

خواهش می کنم منو راهنمایی کنید.
من پیشنهاد می کنم شما در ابتدا باید برای کدهایی که دانشجو انتخاب می کند ، آرایه ای در نظر بگیری (طول آرایه را می تونی به اندازه حداکثر تعداد پیش نیازهای درسات بذاری) یعنی برای هرکد آرایه ای که دروس پیش نیازش در آن آرایه باشد، بعد برای هر درسی که انتخاب کرده ، لیست دروس پیش نیازشو توی آرایه بریزی ، بعد اطلاعات درسهای ترم های قبل رو که داری ، آرایه رو از اول تا آخر چک کنی ، اگر کدهای مشابه بود که درسته و می تونه انتخاب کنه ولی اگه مشابه نداشت ادامه نده و پیغام بده که نمی تونه درس رو بگیره.
امیدوارم این راه بتونه کمکتون کنه

ممنون از جوابتون.ولی مشکل من تو پیاده سازی و کدنویسی است.ضمنا چون این سیستم تحت وب است و امکان ثبت نام برای همه است و اینکه ظرفیت کلاس ها محدود است ،من می خوام هنگامی که دانشجو یک درس را انتخاب کرد،و دکمه ی ثبت اون درس را زد این مراحل در موردش انجام بشه(تمام درس ها با یک دکمه ثبت نمی شوند،برای هر درس یک دکمه ی ثبت وجود دارد)
اگر بخوام از dataTable ,dataSet ,... به جای آرایه استفاده کنم،نظرتون چیه؟آیا بهتر از آرایه نیست؟
shamstabrizi عزیز
پیاده سازی اینو که می خواین خودش یه پروژه است ، بهتره هر جاش رو که مشکل دارید مطرح کنید که ذره ذره حلش کنیم .
در مورد DataSet یا DataTable هم می تونید از اونا استفاده کنید.
سلام
من الان تا اینجا پیش رفتم که هر دانشجو میتونه ثبت نام کنه اما واحد هایی که در ترم جدید برمیدارد در یک جدول موقت که فیلدهایش با فیلدهای جدول دروس پاس شده توسط دانشجو در ترم های گذشته ،یکی است .
یعنی ساختار جدول دروس گذرانده در ترم های قبل را با ساختار دروسی که این ترم دانشجو تازه انتخاب کرده یکی گرفتم.موقع انتخاب واحد هر دانشجو در ترم جدید ،ابتدا چک می شود که درسی که دانشجو الان انتخاب کرده قبلا پیش نیازش را پاس کرده باشد ،اگر پیش نیاز پاس شده بود ابتدا این درس در جدول دروس انتخاب شده در ترم جدید به نام داشنجو ثبت می شود.
الان مشکلم اینجاست که در سیتم های انتخاب واحد واقعی این جریان انتخاب واحد چگونه انجام میشود.
یعنی تا اینجا من برای هر دانشجو دو تا جدول برای انتخاب واحد در نظر گرفتم.چطوری و براساس چه روندی ،باید این جدول به جدول دروس گذرانده در ترم های قبل اضافه شود.(این کار باید توسط اپراتور سیستم انجام شود ولی نمیدونم بعد از چه مدت و چطوری ؟)
(شماره دانشجویی -کد درس -ترم-نمره ) که سه فیلد اول با هم کلید هستند.
ساختار بالا در هر دو جدول دروس پاس شده و دروسی که این ترم دانشجو انتخاب کرده وجود دارد.
سلام ببخشيد وارد بحث مي شم
اما ظاهراً شما اصلاً دانشجو نبودي و با اين سيستم ها آشنا نيستي، در اين صورت يك سفارش دهنده داري واسه سايت كه اون بايد دانشگاه باشه كه خوب خودشون بايد بهت كمك كنند و بگن چي مي خوان
اما روند كلي انتخاب واحد و موارد لازم كه بايد بدوني:
1. چه درس هايي اين ترم ارائه مي شه (از طرف آموزش)
2. چه اساتيدي براي چه درس هايي هستند و ظرفيت هر كدام چند كلاس با چند دانشجو
3. براي هر رشته تمام اين جدول ها بايد مجزا تعريف بشه
4. دانشجو مشخص بشه از كدوم رشته تا جدول خودش نمايش داده بشه
5. كوئري از درس هاي پاس شده دانشجو در جدول موقت ايجاد بشه
6. جدول دروس پيش نياز براي هر رشته جداگانه ساخته بشه
7. جدول پيش نياز در ترم هاي مختلف ممكن فرق بكنه بنا به سياست آموزش عالي و آموزش كل پس بايد به روز بشه ( البته براي يك ورودي ممكن ثابت باشه يعني براي ورودي هاي سال هاي مختلف فرق بكنه)
8. در انتها مي توني يك جدول هم براي هر رشته از كل درس ها داشته باشي كه معمولاً ثابت(گاهي تغيير مي كنه باز هم بنا به سياست هاي آموزش عالي مثلاً زمان ما اولين زبان برنامه نويسي پاسكال بود اما الان خيلي جاها C تدريس مي شه و در عوض #C هم اضافه شده كه اون زمان نبود)
و يك جدول موقت از درسهاي باقي مانده هر دانشجو بسازي كه مي شه جدول پاس شده هاش منهاي جدول كل
بعد از اين مرحله بايد هر كس فقط درسي مي تونه انتخاب مي كنه در جدول پاس نشده هاش باشه
بعد مطابقت مي ديد با اون جدول پيش نيازها اگر اشتباه بود پيغام مي دي
واگر نه ثبت مي كني در كجا ؟ در جدول اساتيد . اگر هم ظرفيت استاد پر بود پيغام مي دي
مي توني براي اين كار هنگام بار گذاري صفحه براي هر درس ليستي از اساتيد مربوط به اون درس رو مهم به صورت كمبوباكس نشون بدي(راستي مهم كه ساعت ها هم درنظر داشته باشي و اجازه ندي يك نفر در يك ساعت دو تا درس انتخاب كنه و خطا بدي)
تمام
اين مي شه انتخاب واحد
لازم نيست از ديتاتست استفاده كني بهترين گذينه ArrayList هست براي تمام موارد و در ديتابيس ذخيره مي كني و هر بار كه دانشجو داخل مي شه ليست دروس مي فرستي به مرورگرش و خواست فرمان ثبت بده يك كوئري از جدول درس هاي پيش نياز و اساتيد مي گيري داخل آرايه ليست مي ريزي و بررسي مي كني( استفاده از آرايه لست بهتر چون وقتي هنوز ركودها درماكزيمم نيست منابع كمتري رزرف مي كني (در اين مورد) بعد نوع داده هم مهم نيست همه از نوع آبجكت مي شه خطا كمتر مي شه) در تمام موارد بالا ذكر كردم منظور همين آرايه ليست هست
و بايد سمت سرور اين كارها بكني براي اينكه هزينه بازگذاري كم و سرعت بيشتر بشه از Ajax استفاده كن(پس احتياجي نيست براي هر درس يك كليد تعريف كني البته اگر از Ajax استفاده كردي مي توني براي هر درس يك كليد تعريف كني تا ظرفيت كلاس ها براي خطاي يك درس پر نشه كه البته اين جوري باز روند تست يكي نبودن ساعت دروس سخت تر مي شه و طواني تر)
اين نظر من شايد اساتيد نظر ديگه داشته باشن اما موارد اول درست طبق روند انتخاب واحد اكثر دانشگاه هاست
موفق باشيد