بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

کد نویسی برای سوالات چند گزینه ای به چه شکله ؟

مدیریت گفتگو
نورحسینی 11 سال پیش
آخرین تغییر: 11 سال پیش

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

نظرات

محسن 11 سال پیش
واسه امتیاز دهی به نظرم میشه یه متغیر استاتیک تعریف کرد که هر بار امتیازو بگیره و بریزه تو متغیر استاتیک
نورحسینی 11 سال پیش
ممنون محسن جان ولی به نظرت از کجا باید شروع کنم ؟
نورحسینی 11 سال پیش
ممنون محسن جان ولی به نظرت از کجا باید شروع کنم ؟ طرح پیشهادیت برای شروع چیه ؟ ممنون
ATRAS 11 سال پیش
آقای نور حسینی شما چگونه این سوال هارو با جواب هایش در برنامتون استفاده کردین چون منم باید همین کارو کنم میخواستم ببینم شما چجور انجام دادین تا بهترین روشو انتخاب کنم؟
نورحسینی 11 سال پیش
والا من تازه بسم الله رو گفتم . ولی منظورت رو درست نفهمیدم . منظرت گرافیکشه یا کدنویسیش ؟
ATRAS 11 سال پیش
نه کدش.یعنی به نظر شما بهتره سوالامو تو استرینگ ذخیره کنم یا یه بانک بزنم یا لابه لای کدام بزارم یا...؟
نورحسینی 11 سال پیش
توصیه من استفاده از دیتابیسه . استرینگ ها دردسر داره ولی اونم خوبه . لابلای کد اصلا توصیه نمی کنم چون در تغییرات خیلی اذیت میشی .
ATRAS 11 سال پیش
اگر از استرینگ استفاده کنم گزینه هاشو چجوری باهاش مرتبط کنم؟مثلا سوال هام 2 گزینه ای هستن.
نورحسینی 11 سال پیش
کسی که جواب نمیده . من خودم فکر می کنم اگر از دیتابیس استفاده کنم برای سوال و جوابها شیوه خوبی باشه . فقط طریقه شیوه امتیاز دهی رو نمیدونم چه کار باید کرد کسی از دوستان نمونه کد نداره ؟
نورحسینی 11 سال پیش
همین دیگه . این تاپک رو زدم که بچه ها بیان با هم کمک کنیم تا وارد جزییات بشیم . مسلما خیلی ها با سوال و جواب سر و کار دارن و مورد استفادشون واقع میشه . هر کس هر چی میدونی دریغ نکنه بلکه کدش رو یا تکه هاییش رو در بیاریم .
ATRAS 11 سال پیش
خب میتونین این سوال هارو در یک دیالوگ نمایش بدین و برای هر کدوم از جواب ها قابلیت کلیک کردن بزارین.بعد رو هر کدوم که کلیک شد امتیاز مربوط به اون سوالو بریزه تو یک متغیر و همین جور در ادامه امتیاز ها به همین متغیر ها اظافه بشه.
نورحسینی 11 سال پیش
خوب برای یک نقطه شروع خیلی خوبه . من قصدم اینه که از یک دیتا بیس ستفاده کنم . بهتره که یک xml طراحی کنم که سه تا تکست ویو داشته باشه یکی برای سوال و سه تای دیگه برای جواب . جوابها هم قابلیت کلیک داشته باشه . خوب حالا باید یک رکورد در دیتابیس ایجاد کرد که علاوه بر تایتل و متن یک بخش امتیاز جواب هم داشته باشه که با کلیک بر روی هر جواب اون امتیاز مربوطه هم از دیتابیس خونده بشه و در یک متغیر ذخیره بشه و نتیجه با نتیجه سوال بعدی جمع بشه . حالا باید یک معیار بدیم به کد که مثلا اگر نتیجه در بین این عدد تا این عدد بود بنویس فلان اگر بین فلان تا فلان بود بنویس فلان . خوب تا اینجا نظر دوستان چیه ؟
ATRAS 11 سال پیش
آره همین کارو انجام بدین.حتی میتونین یک کادر دیگه اظافه کنین که امتیاز هر سوالم کنارش باشه.
نورحسینی 11 سال پیش
در مورد این قضیه معیار به نظرت چطور برای کد تعریف کنیم ؟ اینکه اگر بین این اعداد باشه چه کار کنه .
ATRAS 11 سال پیش
منظورتون اینه که به یه امتیاز خواستی رسید چی بگه؟یا اینکه چجوری نمایش بده؟
نورحسینی 11 سال پیش
نه اصلا برای خودت کدش از چه شیوه ای استفاده کنیم . از حلقه for مثلا یا ... یا راه دیگه ای مد نظرته ؟
ATRAS 11 سال پیش
نه میشه از if استفاده کنیم.اگر بین این اعداد بود یه چیزی Toast یا تو دیالوگ نمایش بده else یه چیز دیگه.
Astro 11 سال پیش
چون بحث گزینه مطرح هست به نظرم دستور switch مناسبتر باشه
نورحسینی 11 سال پیش
خوب تا اینجا خوب پیش رفته و چارچوب کلی تقریبا مشخص شده . حالا دیگه دوستان اگر نظر خاصی دارن یا چیزی میخان اضافه کنن یا نمونه کد بدن خوشحال میشیم از نظراتشون استفاده کنیم .
ATRAS 11 سال پیش
آخه دوست عزیز قرار گزینه ها بررسی بشن فقط امتیاز قراره بررسی بشه.بعدم دستور switch یکم بدفرمه نمیدوم چرا به دل من نمیچسبه باید یه فکری به حالش کنم تا بهش علاقه پیدا کنم:-)
نورحسینی 11 سال پیش
شیوه switch رو برای جمع بندی امتیاز می گی xuvi عزیز ؟ یا کلا شیوه دیگه ای در نظر داری ؟
mohsen-jj 11 سال پیش
من یه برنامه داشتم به اسم " خودت رو بشناس " تو بازار هست میتونی اسکرین هاش رو ببینی ، که توش تست روانشناسی گذاشته بودم . گزینه ها رو با RadioButton ساختم بعد یه Switch گذاشتم که توی caseهاش مقدار id رادیو بوتون انتخاب شده رو بررسی میکرد .یه متغیر کلی int هم گذاشتم . بعد مثلا اگه گزینه 1 باشه متغیر رو با 5 جمع کن اگه گزینه 2 باشه با 10 جمع کن و... آخر سر هم که با بررسی مقدارکلی اون متغیر int با چند تا if ساده میفهمیدم چه متنی باید نمایش داده بشه :) نمیدونم چقد روشتم بهینه بود ولی به هر حال عمل کرد ! :))
نورحسینی 11 سال پیش
با تشکر از محسن عزیز که وارد جزییات شد . شیوه رادیو باتن هم به نظر شیوه مناسبی میاد .

پاسخ‌ها 3

MiRHaDi 11 سال پیش

سلام

در دریتابیس سه تا جدول میسازیم

اولیش سوالات Questions با این فیلدها :

QID : int کد سوال
QBody : text بدنه سوال

متن سوال را به صورت Html داخل این فیلد میذاریم

جدول دوم گزینه هاست Choices :

  1. CID  : int کد
  2. جواب Qid  : int کد سوال CBody  : Text بدنه جواب value : int ارزش این جواب (صفر برای غلط )

جدول بعدی هم جوابهای انتخاب شده است Answers :

  1. 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 کد مربوط به کاربر را مینویسی

نظرات

ATRAS 11 سال پیش
دوست عزیز کارو چرا انقد پیچیده کردین خداییش خیلی از این راحت ترم میشه نوشت که تازه بهینه هم باشه نیاز به این همه جدول بندیو Qery گرفتن نیست.چرا محاسباتو با کد جاوا انجام ندیم بریم با کد html تو بانک انجام بدیم.
نورحسینی 11 سال پیش
با تشکر از همه دوستان خصوصا میر هادی عزیز . ظاهرا راه ها داره متفاوت تر ومتنوع تر میشه ولی من خیلی از مطالبی که بالا گفته شده متوجه نشدم چون از html هیچ سررشته ای ندارم . از جاوا کسی بتونه کد بزاره خیلی آشناترم ولی بازم تشکر .
احسان منصوری 11 سال پیش
خب مگه امتیاز هر گزینه مشخص نیست نورحسینی جان؟ امتیازات رو کجا مشخص میکنید؟ از بانک میخونید؟
MiRHaDi 11 سال پیش
من نگفتم با html بنویسی عزیز ، متن سوال را text بذار ؛ اگر خواستی رنگ بندی و عکس داشته باشه Html میذاری نخواستی text میذاری
MiRHaDi 11 سال پیش
این روشی که من گفتم نیاز به هیچ کد نویسی خاصی نداره و هر تعداد سوال که بخوای با هر تعداد گزینه و جواب میتونی بذاری و امتیاز را بهت میده بدون if و switch و ... و برای نوشتن برنامه های مختلف لازم نیست کد را دست بزنی ، فقط بانک سوال را تکمیل میکنی
نورحسینی 11 سال پیش
پس باید بیشتر بررسیش کنم . اتفاقا من از شیوه ای که دیتابیس داشته باشه بیشتر استقبال می کنم .
PandaStudio 11 سال پیش

سلام

از سوالت اینطور برداشت کردم که میخواهی یه تست طراحی کنی

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

نظرات

سامان پاپی 11 سال پیش

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

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .