PDA

View Full Version : سوال: اشكال در پروژه امتحان آنلاين



amir1400
شنبه 10 مرداد 1388, 15:23 عصر
با سلام
در اين برنامه هر كاربري كه لاگين كرده با كليك بر روي عنوان هر درس ،سوالات مربوط به اون درس در يك GV بهش نشون داده ميشه.
مثلا درسي مثل رياضي 10 سوال در db داره .وقتي كاربر بر روي رياضي كليك ميكنه يكسري اطلاعات مثل عنوان سوال ،گزينه ها ، كد سوال و.. درون ديتاست ريخته ميشه و GV به اين ديتاست Bind شده .

كد من براي نمايش همه اين ده سوال اينطوريه





SqlCommand cmd = new SqlCommand();
cmd.Connection = new myConnection().Cnn;
cmd.CommandText ="select * from questions where exam_code=@exam_code";
cmd.Parameters.AddWithValue("@exam_code", Session["exam_code"].ToString());
SqlDataReader sdr=cmd.ExecuteReader();
sdr.Read();
while(sdr.HasRows){
DataRow dr;
dr = ds.Tables["mytbldt"].NewRow();
dr["std_id"] = Session["ID"].ToString();
dr["exam_code"]=Session["exam_code"].ToString();
dr["question_code"]=sdr["question_code"].ToString();
dr["question"] = sdr["question"].ToString();
dr["switch_a"]=sdr["switch_a"].ToString();
dr["switch_b"]=sdr["switch_b"].ToString();
dr["switch_c"]=sdr["switch_c"].ToString();
dr["switch_d"] = sdr["switch_d"].ToString();
ds.Tables["mytbldt"].Rows.Add(dr);
this.BindGrid();







مشكل در حلقه while هست .هر وقت كه while ميزارم برنامه در حالت لودينگ(در صفحه امتحان ) ميمونه و جلو نميره و اگز if بزارم كه فقط يك ركورد (يك سوال) نشون ميده.
مشكل از چيه ؟

milade
شنبه 10 مرداد 1388, 15:46 عصر
سلام
کدت رو کامل نخودنم
برا این کارا از دیتاست استفاده کن

amir1400
شنبه 10 مرداد 1388, 19:45 عصر
سلام
کدت رو کامل نخودنم
برا این کارا از دیتاست استفاده کن

سلام
مشكل من اينه كه كه چطور داده ها را از db به ديتاست بريزم
db من چندين ركورد داره و وقتي ميخوام اونا رو با while بخونم و تو ديتاست بريزم ، صفحه ي حاوي GV لود نميشه.در واقع برنامه جلو نميره.

milade
شنبه 10 مرداد 1388, 19:52 عصر
سلام
متوجه نشدم !
وقتی شما از دیتاست استفاده میکنید نیاز به while نیست که !
با یه اداپتور پر میکنید DS رو و به GV بایند میکنید !

m1975b
یک شنبه 11 مرداد 1388, 00:20 صبح
سلام
من همین کار (آزمون آنلاین) را با VB.NET - ASP نوشتم و کاملا عالی جواب داد. البته همینطور که دوستمان گفتند باید از Dataset یا DataTable استفاده کنید.
و سپس سوالات رو در RadiobuttonList لود کنید.

Reza_Yarahmadi
یک شنبه 11 مرداد 1388, 00:29 صبح
نمیدونم چرا دارید به این صورت از DataSet ، DataReader و ... استفاده میکنید ولی تغییر زیر رو بدید ببینید درست میشه یا نه


...
<!-- /* Font Definitions */ @font-face {font-family:&quot;Cambria Math&quot;; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:1; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:0 0 0 0 0 0;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1610611985 1073750139 0 0 159 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:&quot;&quot;; margin-top:0cm; margin-right:0cm; margin-bottom:10.0pt; margin-left:0cm; text-align:right; line-height:115%; mso-pagination:widow-orphan; direction:rtl; unicode-bidi:embed; font-size:11.0pt; font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:Arial; mso-bidi-theme-font:minor-bidi;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:Arial; mso-bidi-theme-font:minor-bidi;} .MsoPapDefault {mso-style-type:export-only; margin-bottom:10.0pt; line-height:115%;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 72.0pt 72.0pt 72.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->
SqlDataReader sdr=cmd.ExecuteReader();

while(sdr.Read())

{

DataRow dr;

dr = ds.Tables["mytbldt"].NewRow();

dr["std_id"] = Session["ID"].ToString();

...

salehbagheri
یک شنبه 11 مرداد 1388, 01:06 صبح
به احتمال زیاد مشکلتون تو این قسمته!


while(sdr.HasRows)




while(sdr.Read())


همون کدی که آقای یاراحمدی براتون گذاشته فکر کنم درست باشه!

amir1400
دوشنبه 12 مرداد 1388, 01:47 صبح
با سلام
ممنون از همه دوستاني كه منو راهنمايي ميكنن.
اين مراحلي كه براي لود سوالات و پاسخگويي به اونها در نظر گرفتم. .
من يك table سوالات دارم كه شامل اين فيلدهاست : كد امتحان - كد سوال -متن سوال-متن گزينه a,b,c,d و پاسخ گزينه هاي a,b,c,d. من پاسخ گزينه هارو از نوع بيت گرفتم يعني پاسخ غلط false و پاسخ صحيح true. و يك table براي پاسخ هاي دانشجو گرفتم كه بعد از پايان امتحان پاسخ هاي دانشجو را در اون ذخيره ميشه.
من ميخوام كه از ديتاست استفاده كنم تا سوالات را توش بريزم اماميخوام كه فيلدهاي ديتاست رو خودم انتخاب كنم و علاوه بر فيلدهاي بالا چهار فيلد اضافه براي پاسخ دانشجو با مقدار پيش فرض False در نظر بگيرم .به اين صورت كه وقتي يك سوال را جواب ميده و ميره به سوال بعدي ،كد سوال جواب داده شده رو در ديتاست پيدا كنه و فيلد مربوط به گزينه جواب داده شده روEdit كنه ( مقدارشو False كنه ) و در آخر ركوردها را ار ديتاست به db ريخته بشن.

اگر ميشه منو راهنمايي كنيد كه چطور اين مراحل را انجام بدم.


سلام
من همین کار (آزمون آنلاین) را با VB.NET - ASP نوشتم و کاملا عالی جواب داد. البته همینطور که دوستمان گفتند باید از Dataset یا DataTable استفاده کنید.
و سپس سوالات رو در RadiobuttonList لود کنید.

شما كه تجربه اين پروژه را داريد ، اين قسمت را چطوري انجام داديد ؟

B.I.O.H.A.Z.A.R.D
دوشنبه 12 مرداد 1388, 09:52 صبح
سلام
من همین کار (آزمون آنلاین) را با VB.NET - ASP نوشتم و کاملا عالی جواب داد. البته همینطور که دوستمان گفتند باید از Dataset یا DataTable استفاده کنید.
و سپس سوالات رو در RadiobuttonList لود کنید.

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

elena3001
دوشنبه 12 مرداد 1388, 10:21 صبح
سلام ، من هم مي خواستم خواهش كنم اگه ميشه پروژتون رو آپلود كنيد. من سيستم آزمون گير طراحي نمي كنم ولي يه چيزي تو همون مايه هاست.
اگه هم امكان آپلودش نيست ميشه درباره نحوه ذخيره سازي اطلاعات ثبت شده در database توضيح بدبد.

من مي خوام يه سيستم نظر سنجي در باره اساتيد داشته باشم كه كاربر نام استاد را انتخاب كنه و به 10 سوال با گزينه اي عالي و خوب و متوسط و ضعيف جواب بده.
منتها نمي دونم اين اطلاعات مختلف رو در چند جدول وبه چخه صورت ذخيره كنم كه بار كمتري به سايت وارد كنه و راحت تر باشه.
خواهش مي كنم كمك كنيد.

B.I.O.H.A.Z.A.R.D
دوشنبه 12 مرداد 1388, 13:24 عصر
ببخشید یه آف تاپیک میزنم
برای دوستانی که پروژه آزمون دارند، کدی که میذارم تایمر آزمون هستش، خودم هم میخوام از همین استفاده کنم. البته از یه سایتی دانلودش کردم که الان اصلاً یادم نیست. امیدوارم بدرد بخوره.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
<script type="text/javascript">
var t;
function TimeUp()
{
alert('زمان شما به پایان رسید');
window.location='Default.aspx';
}
function StartTimer()
{
if (t<=0)
{
TimeUp();
return;
}
t-=1;
h=0;m=0;s=0;
h=parseInt(t/3600);
m=parseInt((t%3600)/60);
s=parseInt(((t%3600)%60));
// alert(s);
////////////////////
lbl=document.getElementById('timelbl');
lbl.innerHTML="زمان شما :"+h+':'+m+':'+s;
///////////////////
window.setTimeout(StartTimer,1000) ;
}
function AbortTest()
{
if (window.confirm("Are you sure?"))
t=0;
}
</script>
</head>

<body>
<form id="form1" runat="server">
<div>

</div>

</form>
<p>
<input type="hidden" value="50" id="time"/>
<label id='timelbl'></label>
<input id="Btnstart" type="button" value="Start" onclick="Begin()" />
<input id="Btnstart" type="button" value="Abort" onclick="AbortTest()" /></p>
<script type="text/javascript">
function Begin()
{
document.getElementById('time').value=121; // Textbox5.Text
t=document.getElementById('time').value;
StartTimer();
}
</script>

</body>
</html>

amir1400
سه شنبه 13 مرداد 1388, 14:27 عصر
ميشه يكي راهنمايي كنه !