PDA

View Full Version : سوال: درخواست راهنمایی برای پروژه امتحان آیین نامه



012132
شنبه 30 فروردین 1393, 13:29 عصر
سلام . من دارم یه پروژه امتحان آیین نامه می نویسم . تابلو ها و قوانین و ... رو توی بانکم ذخیره کردم .
الآن می خوام قسمت آزمون رو پیاده سازی کنم و می خوام که سوالات بصورت رندم به کاربر نمایش داده بشه . فقط اینکه نمی دونم اصلاً چطوری باید سوال و جواب سوالات رو از تو بانک بخونم و روی radio button ها ست کنم . اصلاً هیچ ایده ای برای انجامش ندارم .
لطفاً راهنماییم کنید که چطور باید اینکار رو انجام بدم ؟
ممنون

Davidd
شنبه 30 فروردین 1393, 13:58 عصر
شما ميتوني يك userControl بسازي كه شامل يك label براي متن سوال و 4 radioButton براي گزينه هاي سوال باشه. براي اين userControl چن پروپرتي string شامل متن سوال ، گزينه 1 ، گزينه 2 ، ... و پروپرتي int براي شماره گزينه صحيح و شماره گزينه انتخاب شده توسط كاربر و يك پروپرتي bool براي اينكه پاسخ صحيح نشان داده شود يا خير.
userControl ساخته شده به toolBox اضافه ميشه و ميتونيد به تعداد دلخواه مثلا 10 تا روي فرم قرار بديد. سپس از ديتابيس سوالات را بخونيد و پروپرتي هاي هر userControl مقدار بديد.

012132
شنبه 30 فروردین 1393, 18:10 عصر
ممنون دوست عزیز . میتونی یه سورس یا یه مثال بذاری تا بهتر متوجه بشم ؟

Davidd
یک شنبه 31 فروردین 1393, 08:29 صبح
اين كد userControl كه بايد به پروژت اضافه كني و بعد از يك بار كامپايل پروژه به toolbox اضافه ميشه.

118180

اين هم عكس: تصوير اول قبل از نشان دادن پاسخ به كاربر و تصاوير بعدي نشان دادن پاسخ به كاربر براي حالت پاسخ غلط و صحيح هست.
118181

مقدار دادن به usercontrol كه در اينجا نام question1 دارد :
question1.QuestionNo = 1;
question1.QuestionText = "سن شما؟";
question1.Option1 = "10";
question1.Option2 = "20";
question1.Option3 = "30";
question1.Option4 = "40";
question1.TrueAnswer = 3;
شما بايد اين مقاديرو از پايگاه داده بخوني.

و اين هم كد نشان دادن پاسخ به كاربر:
question1.ShowTrueAnswer = true;

mehdiba3
یک شنبه 31 فروردین 1393, 09:49 صبح
اين كد userControl كه بايد به پروژت اضافه كني و بعد از يك بار كامپايل پروژه به toolbox اضافه ميشه.

118180

اين هم عكس: تصوير اول قبل از نشان دادن پاسخ به كاربر و تصاوير بعدي نشان دادن پاسخ به كاربر براي حالت پاسخ غلط و صحيح هست.
118181

مقدار دادن به usercontrol كه در اينجا نام question1 دارد :
question1.QuestionNo = 1;
question1.QuestionText = "سن شما؟";
question1.Option1 = "10";
question1.Option2 = "20";
question1.Option3 = "30";
question1.Option4 = "40";
question1.TrueAnswer = 3;
شما بايد اين مقاديرو از پايگاه داده بخوني.

و اين هم كد نشان دادن پاسخ به كاربر:
question1.ShowTrueAnswer = true;

میشه بگین کاربرد UC چیه و چه موقع باید ازش استفاده کنیم؟ مرسی

mehdiba3
یک شنبه 31 فروردین 1393, 09:59 صبح
دوست عزیز من بهت کی گم چیکار کن. 2 راه داری

1- تمام سوالات درون بانک رو select کنی بعدش اونا رو درون data table قرار بدی حالا همه سوالات رو داری اما میخوای به صورت تصادفی سوالات رو نشون بده اونم یکی یکی
این کار یک مشکل داره. ممکنه یک سوال تصادفی 2 بار تکرار بشه. درسته؟ مثلا سوال 1 بعد از سوالات بعدی دوباره تکرار بشه پس باید کاری کنی که سوالات تصادفیت غیر تکراری بشه

حالا راه کار چیه؟ بهت میگم:

این کارو انجام بده. یک لیست باکس به صورت موقت یه صورت زیر تعریف کن :

listbox mylist=new list box()

کار لیست باکس هم اینه که هر بار که کاربر بر روی سوال بعدی کلیک کرد کلید اصلی سوال قبلی رو باید درون llistbox قرار بده
حالا چرا این کارو کردیم؟ برای اینکه کد سوالات دروت listbox رو که برای کاربر میاد رو داشته باشیم و هر بار با سوالات درون data tabale مقایسه کنیم و اگر با هم برابر بودن پس نباید دیگه اونا رو نمایش بده چون تکراری میشه. درسته؟
این الگوریتم کارت بود و بقیش به عهده خودته

Davidd
یک شنبه 31 فروردین 1393, 10:33 صبح
میشه بگین کاربرد UC چیه و چه موقع باید ازش استفاده کنیم؟ مرسی

كاربرد UC دقيقا همين جاست جايي كه شما به يك كنترل تركيبي نياز داريد كه چندين بار استفاده ميشه. شما به راحتي ميتوني 10 تا از اين كنترل روي فرم قرار بدي بدون كد نويسي شلوغ و در هم.
حالا فك كن اگه از UC استفاده نكني بايد براي 10 سوال 40 تا radioButton و كلي Label روي فرم قرار بدي و از همه بدتر مديريت اين همه كنترل هست.

mehdiba3
یک شنبه 31 فروردین 1393, 10:47 صبح
كاربرد UC دقيقا همين جاست جايي كه شما به يك كنترل تركيبي نياز داريد كه چندين بار استفاده ميشه. شما به راحتي ميتوني 10 تا از اين كنترل روي فرم قرار بدي بدون كد نويسي شلوغ و در هم.
حالا فك كن اگه از UC استفاده نكني بايد براي 10 سوال 40 تا radioButton و كلي Label روي فرم قرار بدي و از همه بدتر مديريت اين همه كنترل هست.

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

Davidd
یک شنبه 31 فروردین 1393, 10:55 صبح
شاید کاربرد UC درست برای من جا نیفتاده اما در پاسخ به شما که برای نمایش 10 سوال به 40 رادیو نیازه باید عرض کنم:
بدون استفاده از UC ما میتونیم سوالات تصادفی رو از بانک بگیریم و با هربا زدن دکمه سوال یعدی که توسط کاربر زده میشه مقادیر جدید رو به رادیو باتون ها بدیم و اصلا نیاز به تعریف 40 بار رادیو باتن نیست و روشی بهینه و کارا هستش. نمیخوام باهاتون کل کنم سو برداشت نباشه. هدف انتقال اطلاعات بین دوستانه. اگه میشه بهتر UC رو توضیح بدین ممنون میشم مرسی
خواهش ميكنم.
روش شما وقتي درسته كه بخواي يكي يكي سوالات رو به كاربر نشون بدي كه براي كاربر خسته كنندست و برنامه هاي مشابه هم ببيني هيچ كدوم اينجوري نيست و سوالات به صورت صفحه بندي نمايش داده ميشن مثلا هر صفحه 10 سوال.
در مورد UC كدي كه گذاشتم و نحوه استفاده رو ميتوني نگاه كنيد همه چيز گوياست. با اين روش ميشه يه ليست 10 تايي از اين كنترل روي فرم گذاشت و سوالات رو 10 تا تا از ديتابيس خوند و به راحتي در يك حلقه به كنترل ها مقدار داد. در انتها هم با يك حلقه و يك خط كد كاربر ميتونه ببينه كدوم سوالات رو درست جواب داده.