📄 automark.cs
字号:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using WindowsApplication1.Datachaxun;
namespace WindowsApplication1.KaoChangManage
{
public partial class AutoMark : Form
{
SqlConnection cn = new SqlConnection("Server = (local);UID=sa;PWD=sa;Trusted_Connection=True;DATABASE=test1");
baseclass.BaseOperate boperate = new baseclass.BaseOperate();
public string username;
public decimal scorechoose;
public decimal scorepanduan;
public decimal scoreprogram;
public AutoMark()
{
InitializeComponent();
}
private void AutoMark_Load(object sender, EventArgs e)
{
if (cn.State == ConnectionState.Closed)
cn.Open();
SqlCommand cmd = new SqlCommand("select start from start where id='"+ 1 +"'",cn);
//考试还没有结束,不可以评分
if (cmd.ExecuteScalar().ToString() == 1.ToString())
{
btnchoose.Enabled = false;
btnAcount.Enabled = false;
btnprogram.Enabled = false;
}
if (cn.State == ConnectionState.Open)
cn.Close();
DataSet myds =
boperate.getds(
"select snumber as 学号, A as 选择题答案,B as 判断题答案,C as 程序题答案编号 from answer ","answer");
dGridViewpaper.DataSource = myds.Tables[0];
if (myds.Tables[0].Rows.Count <= 0)
{
dGridViewpaper.AllowUserToAddRows = true;
btnchoose.Enabled = false;
btnprogram.Enabled = false;
}
myds =
boperate.getds(
"select s_number as 学号,A as 选择题成绩 ,B as 判断题成绩 from marks ", "marks");
dGridViewanswer.DataSource = myds.Tables[0];
if (myds.Tables[0].Rows.Count <= 0)
{
dGridViewanswer.AllowUserToAddRows = true;
}
}
private void btnback_Click(object sender, EventArgs e)
{
this.Close();
}
#region 为选择题、判断题评分
private void btnchoose_Click(object sender, EventArgs e)
{
Getmoban();
decimal[] score = new decimal[2];
DataSet myds = boperate.getds("select snumber from answer", "answer");
string[] snumber = new string[myds.Tables[0].Rows.Count];
int i = 0;
foreach (DataRow row in myds.Tables[0].Rows)
{
snumber[i] = row["snumber"].ToString();
i++;
}
for (i = 0; i < snumber.Length; i++)
{
if (cn.State == ConnectionState.Closed)
cn.Open();
score = setchoose(snumber[i]);
SqlCommand cmd = new SqlCommand("select * from marks where s_number='" + snumber[i] + "'", cn);
if (null == cmd.ExecuteScalar())
boperate.getcom("insert into marks(s_number,A,B)values('" + snumber[i] + "','" + score[0] + "','" + score[1] + "')");
else
boperate.getcom("update marks set A ='" + score[0] + "',B='" + score[1] + "'where s_number ='" + snumber[i] + "'");
if (cn.State == ConnectionState.Open)
cn.Close();
}
myds =
boperate.getds(
"select s_number as 学号,A as 选择题成绩 ,B as 判断题成绩 from marks ", "marks");
dGridViewanswer.DataSource = myds.Tables[0];
if (myds.Tables[0].Rows.Count <= 0)
{
dGridViewanswer.AllowUserToAddRows = true;
}
}
#endregion
#region 获得组卷时所用试题模板内容
public void Getmoban()
{
if (cn.State == ConnectionState.Closed)
cn.Open();
SqlCommand cmd = new SqlCommand("select idshijuan from paper where s_number ='" + dGridViewpaper.Rows[0].Cells[0].Value.ToString() + "'",cn);
string idshijuan = cmd.ExecuteScalar().ToString();
cmd = new SqlCommand("select idmoban from shiti where idshijuan ='"+ idshijuan +"'",cn);
string idmoban = cmd.ExecuteScalar().ToString();
DataSet ds = boperate.getds("select * from moban where idmoban ='" + idmoban + "'", "moban");
foreach (DataRow row in ds.Tables[0].Rows)
{
//取出模板中选择题分值
if (row["types"].ToString() == "选择题")
scorechoose = Convert.ToDecimal(row["score"].ToString());
//取出模板中判断题分值
if (row["types"].ToString() == "判断题")
scorepanduan = Convert.ToDecimal(row["score"].ToString());
//取出模板中程序设计题分值
if (row["types"].ToString() == "程序设计题")
scoreprogram = Convert.ToDecimal(row["score"].ToString());
}
if (cn.State == ConnectionState.Open)
cn.Close();
}
#endregion
#region 比对选择题、判断题答案
public decimal[] setchoose(string snumber)
{
SqlCommand cmd = new SqlCommand();
string[][] id = boperate.Extract(snumber);
string[][] answer = boperate.ExtractAnswer(snumber);
decimal[] score = new decimal[2];
score[0] = 0;
score[1] = 0;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < id[i].Length; j++)
{
if (i == 0)
cmd = new SqlCommand("select answer from choose where id ='" + id[i][j] + "'", cn);
if (i == 1)
cmd = new SqlCommand("select answer from panduan where id ='" + id[i][j] + "'", cn);
if (cmd.ExecuteScalar().ToString() == answer[i][j])
{
if (i == 0)
score[0] += scorechoose;
if (i == 1)
score[1] += scorepanduan;
}
}
}
return score;
}
#endregion
private void btnprogram_Click(object sender, EventArgs e)
{
SetProgram program = new SetProgram();
program.tSTxtTNmae.Text = this.username;
program.ShowDialog();
}
private void dGridViewpaper_CellClick(object sender, DataGridViewCellEventArgs e)
{
for (int i = 0; i < dGridViewpaper.Rows.Count; i++)
dGridViewpaper.Rows[i].DefaultCellStyle.BackColor = Color.White;
dGridViewpaper.CurrentRow.DefaultCellStyle.BackColor = Color.LightSlateGray;
}
private void dGridViewanswer_CellClick(object sender, DataGridViewCellEventArgs e)
{
for (int i = 0; i < dGridViewanswer.Rows.Count; i++)
dGridViewanswer.Rows[i].DefaultCellStyle.BackColor = Color.White;
dGridViewanswer.CurrentRow.DefaultCellStyle.BackColor = Color.LightSlateGray;
}
#region 汇总成绩
private void btnAcount_Click(object sender, EventArgs e)
{
if (cn.State == ConnectionState.Closed)
cn.Open();
SqlCommand cmd = new SqlCommand("select sum(score) from panswer group by snumber",cn);
decimal C = Convert.ToDecimal(cmd.ExecuteScalar().ToString());
boperate.getcom("update marks set C='"+ C +"'");
DataSet myds = boperate.getds("select * from marks ","marks");
foreach(DataRow row in myds.Tables[0].Rows)
{
decimal totalsum = 0; //总成绩
totalsum += Convert.ToDecimal(row["A"].ToString());
totalsum += Convert.ToDecimal(row["B"].ToString());
totalsum += Convert.ToDecimal(row["C"].ToString());
string snumber = row["s_number"].ToString();
boperate.getcom("update marks set score ='"+ totalsum +"'where s_number='"+ snumber +"'");
}
if (cn.State == ConnectionState.Open)
cn.Close();
if(MessageBox.Show("完成汇总,是否查看成绩?","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Information) == DialogResult.OK)
{
Mark mark = new Mark();
this.Visible = false;
mark.Show();
this.Close();
}
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -