Online examination system project In Asp Net with c#
Live-Online Examination System is an online examinationing program ran by qualified live examination online perfect for your children to enhance their education online. Online examinationing is an easy way to teach kids and to let them have fun while learning. Live-Online Examination System has advanced online examinationing techniques using an advanaced online classroom to examination children online. By using an online examinationing white board, both kids and examinations can write down their thoughts and communicate effectively over the internet. Your child's most valuable tool is his/her education and online examinationing is a great tool enhancer. By using Live-Online Examination System's online examinationing services you can create a fun online examinationing environment for your child.
Code : asp.net and c# Datebase : SQL
Selecting topic for exam :
Selecting topic for exam :
protected void Page_Load(object sender, EventArgs e)
{if (Session["UserName"].ToString() == "")
{
Response.Redirect("index.aspx");
}
txt_stdId.Text = Session["UserName"].ToString();
}
protected void DdlSubject_SelectedIndexChanged(object sender, EventArgs e)
{
Ddtopic.Items.Clear();
string pr = DdlSubject.SelectedValue.ToString();
// get topic names data set from class file
ds = info.GetTopic(pr);
Ddtopic.DataSource = ds;
Ddtopic.DataBind();
Ddtopic.Items.Insert(0, new ListItem("--Select--", "0"));
}
protected void Ddtopic_SelectedIndexChanged(object sender, EventArgs e)
{
}
protected void DdlProgrm_SelectedIndexChanged(object sender, EventArgs e)
{
DdlSubject.Items.Clear();
Ddtopic.Items.Clear();
string pr = DdlProgrm.SelectedValue.ToString();
// get subjects names data set from class file
ds = info.GetSubjects(pr);
DdlSubject.DataSource = ds;
DdlSubject.DataBind();
DdlSubject.Items.Insert(0, new ListItem("--Select--", "0"));
}
protected void ImgBtnStartExm_Click(object sender, ImageClickEventArgs e)
{
string prg = DdlProgrm.SelectedValue.ToString();
string sub = DdlSubject.SelectedValue.ToString();
string stp = Ddtopic.SelectedValue.ToString();
string lvl = Ddllevel.SelectedValue.ToString();
string rng = ddlrange.SelectedValue.ToString();
// get questions and answers from table using data set from class file
DataSet ds = info.GetQuestions(sub, stp, lvl);
int nquestions = ds.Tables[0].Rows.Count;
int SIZE=Convert.ToInt32(rng);
Random r = new Random();
int[] positions = new int[SIZE];
int num;
for (int pos = 0; pos < SIZE; )
{
num = Math.Abs(r.Next(nquestions));
// check whether the number is already in the array
bool found = false;
for (int i = 0; i < pos; i++)
if (num == positions[i]) { found = true; break; }
if (!found)
{
positions[pos] = num;
pos++;
}
} // end of for
DataTable dt1 = new DataTable();
dt1.Columns.Add("topic", typeof(string));
dt1.Columns.Add("question", typeof(string));
dt1.Columns.Add("option1", typeof(string));
dt1.Columns.Add("option2", typeof(string));
dt1.Columns.Add("option3", typeof(string));
dt1.Columns.Add("option4", typeof(string));
dt1.Columns.Add("cans", typeof(string));
dt1.Columns.Add("level", typeof(string));
dt1.Columns.Add("EXPLANATION", typeof(string));
dt1.Columns.Add("(ANALYSIS/CORRECT)", typeof(string));
dt1.Columns.Add("(ANALYSIS /WRONG)", typeof(string));
foreach (int pos in positions)
{
dt1.ImportRow(ds.Tables[0].Rows[pos]);
}
DataSet ds3 = new DataSet();
ds3.Tables.Add(dt1);
Session["questionpaper"] = ds3;
Session["starttime"] = DateTime.Now.ToString();
Response.Redirect("~/login_startexam.aspx?program=" + prg + "&subject=" + sub + " &subtopic=" + stp + " &level=" + lvl + " &range=" + rng);
}
Examination paper :
protected void Page_Load(object sender, EventArgs e)
{
if (Session["UserName"].ToString() == "")
{
Response.Redirect("index.aspx");
}
DateTime dt = Convert.ToDateTime(Session["starttime"]);
lblstarttime.Text = dt.ToString();
lblcurrnttime.Text = DateTime.Now.ToString();
if (!Page.IsPostBack)
{
GridView1.DataSource = (DataSet)Session["questionpaper"];
GridView1.DataBind();
lblSid.Text = Session["UserName"].ToString();
lblsub.Text = Request.QueryString["subject"];
lblprogrm.Text = Request.QueryString["program"];
lbltopic.Text = Request.QueryString["subtopic"];
lbllvl.Text = Request.QueryString["level"];
lblrange.Text = Request.QueryString["range"];
}
}
protected void Button1_Click(object sender, EventArgs e)
{
int d = GridView1.Rows.Count;
string[] choice = new string[d];
int increment = 0;
foreach (GridViewRow r in GridView1.Rows)
{
string opt;
RadioButton radio1;
RadioButton radio2;
RadioButton radio3;
RadioButton radio4;
radio1 = (RadioButton)r.FindControl("ra1");
radio2 = (RadioButton)r.FindControl("ra2");
radio3 = (RadioButton)r.FindControl("ra3");
radio4 = (RadioButton)r.FindControl("ra4");
DataSet ds2 = new DataSet();
ds2 = (DataSet)Session["questionpaper"];
if ((radio1.Checked == true || radio2.Checked == true || radio3.Checked == true || radio4.Checked == true))
{
if (radio1 != null && radio1.Checked)
{
opt = "a";
string str1 = (ds2.Tables[0].Rows[increment]["cans"]).ToString();
if (opt == str1)
{
choice[index++] = str1;
}
else
{
choice[index++] = "a";
}
}
else if (radio2 != null && radio2.Checked)
{
opt = "b";
string str1 = (ds2.Tables[0].Rows[increment]["cans"]).ToString();
if (opt == str1)
{
choice[index++] = str1;
}
else
{
choice[index++] = "b";
}
}
else if (radio3 != null && radio3.Checked)
{
opt = "c";
string str1 = (ds2.Tables[0].Rows[increment]["cans"]).ToString();
if (opt == str1)
{
choice[index++] = str1;
}
else
{
choice[index++] = "c";
}
}
else if (radio4 != null && radio4.Checked)
{
opt = "d";
string str1 = (ds2.Tables[0].Rows[increment]["cans"]).ToString();
if (opt == str1)
{
choice[index++] = str1;
}
else
{
choice[index++] = "d";
}
}
}
else
{
choice[index++] = "empty";
}
increment++;
}
if (GridView1.Rows.Count == increment)
{
string prg = lblprogrm.Text;
string sub = lblsub.Text;
string stp = lbltopic.Text;
string lvl = lbllvl.Text;
string rng = lblrange.Text;
List<string> quest = new List<string>();
List<string> opt1 = new List<string>();
List<string> opt2 = new List<string>();
List<string> opt3 = new List<string>();
List<string> opt4 = new List<string>();
List<string> CAns = new List<string>();
List<string> myans = new List<string>();
DataSet ds2 = (DataSet)Session["questionpaper"];
foreach (DataRow row in ds2.Tables[0].Rows)
{
quest.Add(row["question"].ToString());
opt1.Add(row["option1"].ToString());
opt2.Add(row["option2"].ToString());
opt3.Add(row["option3"].ToString());
opt4.Add(row["option4"].ToString());
CAns.Add(row["cans"].ToString());
}
string[] Questions = quest.ToArray();
string[] Option1 = opt1.ToArray();
string[] Option2 = opt2.ToArray();
string[] Option3 = opt3.ToArray();
string[] Option4 = opt4.ToArray();
string[] correctAns = CAns.ToArray();
int ind;
for (ind = 0; ind <= d - 1; ind++)
{
myans.Add(choice[ind]);
}
string[] mychoice = new string[d];
mychoice = myans.ToArray();
int count = 0;
for (int i = 0; i < correctAns.Length; i++)
{
for (int j = i; j < mychoice.Length; j++)
{
if (correctAns[i] == mychoice[j])
{
count++;
}
i++;
}
}
int scr= 0 ;
Session["scr"] = count++;
TimeSpan duration = Convert.ToDateTime(Session["starttime"]) - DateTime.Now;
string totltime = duration.ToString();
//info.insertexamdetails(lblSid.Text, lblprogrm.Text, lblsub.Text, lbltopic.Text, lbllvl.Text, lblrange.Text, string.Join(",", Questions), string.Join(",", Option1), string.Join(",", Option2), string.Join(",", Option3), string.Join(",", Option4), string.Join(",", correctAns), string.Join(",", mychoice), scr);
info.insertexamdetails(lblSid.Text, lblprogrm.Text, lblsub.Text, lbltopic.Text, lbllvl.Text, lblrange.Text, string.Join("@", Questions), string.Join("@", Option1), string.Join("@", Option2), string.Join("@", Option3), string.Join("@", Option4), string.Join("@", Array.ConvertAll(correctAns, x => x.ToString())), string.Join("@", Array.ConvertAll(mychoice, x => x.ToString())), Convert.ToInt32(Session["scr"]));
Response.Redirect("Result.aspx?program=" + prg + "&subject=" + sub + " &subtopic=" + stp + " &level=" + lvl + " &range=" + rng + " &tottym=" + totltime);
}
}
view my result :
protected void Page_Load(object sender, EventArgs e)
{
lblprogrme.Text = Request.QueryString["program"];
lblsub.Text = Request.QueryString["subject"];
lbltopic.Text = Request.QueryString["subtopic"];
lbllevel.Text = Request.QueryString["level"];
lblNquestions.Text = Request.QueryString["range"];
lblStime.Text = Session["starttime"].ToString();
lblMin.Text = Request.QueryString["tottym"];
int cnt = Convert.ToInt32(Session["scr"]);
lblscore.Text = cnt.ToString();
if (cnt > 19)
lblGrade.Text = "Excellent";
else
if (cnt > 9)
lblGrade.Text = "Average";
else
lblGrade.Text = "Poor";
}
View my answer sheet :
protected void Page_Load(object sender, EventArgs e)
{
bindgrid();
}
private void bindgrid()
{
DataSet ds = info.Getmyexampaper(Session["UserName"].ToString());
string quest = (ds.Tables[0].Rows[0]["examquestions"]).ToString();
string op1 = (ds.Tables[0].Rows[0]["examanswers1"]).ToString();
string op2 = (ds.Tables[0].Rows[0]["examanswers2"]).ToString();
string op3 = (ds.Tables[0].Rows[0]["examanswers3"]).ToString();
string op4 = (ds.Tables[0].Rows[0]["examanswers4"]).ToString();
string corans = (ds.Tables[0].Rows[0]["correctanswer"]).ToString();
string myan = (ds.Tables[0].Rows[0]["myanswer"]).ToString();
DataTable dt = new DataTable();
dt.Columns.Add("QUE");
dt.Columns.Add("OPT1");
dt.Columns.Add("OPT2");
dt.Columns.Add("OPT3");
dt.Columns.Add("OPT4");
dt.Columns.Add("ANS");
dt.Columns.Add("MYANS");
int cnt = Convert.ToInt32(ds.Tables[0].Rows[0]["rang"]);
for (int i = 0; i < cnt; i++)
{
string[] Aquest = quest.Split('@');
string[] Aop1 = op1.Split('@');
string[] Aop2 = op2.Split('@');
string[] Aop3 = op3.Split('@');
string[] Aop4 = op4.Split('@');
string[] Acorans = corans.Split('@');
string[] Amyan = myan.Split('@');
DataRow dr = dt.NewRow();
dr["QUE"] = Aquest[i];
dr["OPT1"] = Aop1[i];
dr["OPT2"] = Aop2[i];
dr["OPT3"] = Aop3[i];
dr["OPT4"] = Aop4[i];
dr["ANS"] = Acorans[i];
dr["MYANS"] = Amyan[i];
dt.Rows.Add(dr);
}
gvdetails.DataSource = dt;
gvdetails.DataBind();
}
public override void VerifyRenderingInServerForm(Control control)
{
/* Verifies that the control is rendered */
}
protected void btnExcel_Click(object sender, ImageClickEventArgs e)
{
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "Customers.xls"));
Response.ContentType = "application/ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gvdetails.AllowPaging = false;
gvdetails.DataBind();
//Change the Header Row back to white color
gvdetails.HeaderRow.Style.Add("background-color", "#FFFFFF");
//Applying stlye to gridview header cells
for (int i = 0; i < gvdetails.HeaderRow.Cells.Count; i++)
{
gvdetails.HeaderRow.Cells[i].Style.Add("background-color", "#507CD1");
}
int j = 1;
//This loop is used to apply stlye to cells based on particular row
foreach (GridViewRow gvrow in gvdetails.Rows)
{
gvrow.BackColor = System.Drawing.Color.White;
if (j <= gvdetails.Rows.Count)
{
if (j % 2 != 0)
{
for (int k = 0; k < gvrow.Cells.Count; k++)
{
gvrow.Cells[k].Style.Add("background-color", "#EFF3FB");
}
}
}
j++;
}
gvdetails.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
}
protected void btnWord_Click(object sender, ImageClickEventArgs e)
{
gvdetails.AllowPaging = false;
gvdetails.DataBind();
Response.ClearContent();
Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "Customers.doc"));
Response.Charset = "";
Response.ContentType = "application/ms-word";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gvdetails.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
}
protected void gvdetails_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gvdetails.PageIndex = e.NewPageIndex;
bindgrid();
}