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
























سلام
در دریتابیس سه تا جدول میسازیم
اولیش سوالات Questions با این فیلدها :
QID : int کد سوال QBody : text بدنه سوال
متن سوال را به صورت Html داخل این فیلد میذاریم
جدول دوم گزینه هاست Choices :
-
CID : int کد
-
جواب Qid : int کد سوال CBody : Text بدنه جواب value : int ارزش این جواب (صفر برای غلط )
جدول بعدی هم جوابهای انتخاب شده است Answers :
-
Qid : int کد سوال Cid : int کد جواب Uid : int کد کاربر (برای حالتی که چند کاربر داشته باشد سیستم )
چند query ساده هم لازم است
یکی برای اینکه گزینه های یک سوال را در بیاری
select Cid,Cbody from choices c inner join Questions q on q.qid = c.qid
برای جوابها :
insert into Answers (QId,CId,Uid) values (کد سوال و کد جواب و کد کاربر)
برای اینکه امتیاز سوالات را بدست بیاری هم این میشه
select sum(value) from Choices c inner join Answers A on A.Cid = C.Cid and A.Qid = C.Qid
where C.Qid = :QuestionId اینجا کد مربوط به سوال را می نویسی
and A.Uid = :UserId کد مربوط به کاربر را مینویسی

سلام
از سوالت اینطور برداشت کردم که میخواهی یه تست طراحی کنی
من واسه اینکار از این روش استفاده میکنم. یه جدول داریم با ستون های id,question,answer که توی question متن سوال را مینویسی و توی answer مقادیر 0 و 1 و 2 که هرکدوم نشون دهنده اینه که کاربر کدوم گزینه را انتخاب کرده. برای متن پاسخ ها هم میتونی 3تا ستون answer1,answer2,answer3 تعریف کنی و متن گزینه ها را داخلش ذخیره کنی و یا بیای توی فایل string متن سوالات را وارد کنی و یکی یکی از داخل فایل استرینگ بخونی که به نظر من اولی راحت تره. میمونه فقط دکمه های next و prev که برای اینکه موقع رفتن به سوال قبل یا بعد گزینه ها سر جاشون بمونن میتونی از Struct استفاده کنی و همه ی فیلد های جدولت را بریزی داخل یه struct سراسری مثل G.question و تغیرات را روی عناصر اون پیاده سازی کنی و نتیجه نهایی را طبق فرمولی که مد نظرت هست به دست بیاری.

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