📄 scoreform.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Configuration;
using System.Data.SqlClient;
namespace CTestApp
{
public partial class ScoreForm : Form
{
protected SqlConnection conn;
protected DataTable m_testScoreTable;
protected DataTable m_testeeScoreTable;
public ScoreForm()
{
InitializeComponent();
}
private void ScoreForm_Load(object sender, EventArgs e)
{
try
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["TestLibraryConnectionString"].ConnectionString);
conn.Open();
m_testScoreTable = new DataTable();
m_testeeScoreTable = new DataTable();
this.LoadTestInfo();
dataGridView1.DataSource = m_testScoreTable;
dataGridView2.DataSource = m_testeeScoreTable;
}
catch (Exception exp)
{
MessageBox.Show("无法建立数据连接:" + exp.Message + exp.StackTrace, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
this.Close();
}
}
private void ScoreForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (conn != null && conn.State != ConnectionState.Closed)
conn.Close();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
int iTestID;
if (int.TryParse(comboBox1.SelectedValue.ToString(), out iTestID))
this.ShowTestScore(iTestID, 3, 2);
}
private void dataGridView1_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
this.ShowTesteeScore((int)comboBox1.SelectedValue, m_testScoreTable.Rows[e.RowIndex]["TesteeNumber"].ToString(), 3, 2);
}
/// <summary>
/// 载入现有测试列表
/// </summary>
protected void LoadTestInfo()
{
SqlCommand cmd1 = new SqlCommand("GetTestInfo", conn);
cmd1.CommandType = CommandType.StoredProcedure;
DataTable table1 = new DataTable();
table1.Load(cmd1.ExecuteReader());
if (table1.Rows.Count == 0) //无现有测试
{
comboBox1.Enabled = false;
}
else
{
comboBox1.DataSource = table1;
comboBox1.ValueMember = "ID";
comboBox1.DisplayMember = "Information";
}
}
/// <summary>
/// 显示测试成绩
/// </summary>
/// <param name="testID">测试ID号</param>
/// <param name="score1">单选题标准分</param>
/// <param name="score2">多选题标准分</param>
protected void ShowTestScore(int testID, int score1, int score2)
{
SqlCommand cmd1 = new SqlCommand("OutputScores", conn);
cmd1.CommandType = CommandType.StoredProcedure;
SqlParameter par1 = new SqlParameter("@testID", SqlDbType.Int);
par1.Value = testID;
cmd1.Parameters.Add(par1);
par1 = new SqlParameter("@score1", SqlDbType.Int);
par1.Value = score1;
cmd1.Parameters.Add(par1);
par1 = new SqlParameter("@score2", SqlDbType.Int);
par1.Value = score2;
cmd1.Parameters.Add(par1);
m_testScoreTable.Clear();
m_testScoreTable.Load(cmd1.ExecuteReader());
}
/// <summary>
/// 显示测试详细信息
/// </summary>
/// <param name="testID">测试ID号</param>
/// <param name="testeeNumber">考生考号</param>
/// <param name="score1">单选题标准分</param>
/// <param name="score2">多选题标准分</param>
protected void ShowTesteeScore(int testID, string testeeNumber, int score1, int score2)
{
SqlCommand cmd1 = new SqlCommand("OutputScore", conn);
cmd1.CommandType = CommandType.StoredProcedure;
SqlParameter par1 = new SqlParameter("@testID", SqlDbType.Int);
par1.Value = testID;
cmd1.Parameters.Add(par1);
par1 = new SqlParameter("@testeeNumber", SqlDbType.NVarChar, 5);
par1.Value = testeeNumber;
cmd1.Parameters.Add(par1);
par1 = new SqlParameter("@score1", SqlDbType.Int);
par1.Value = score1;
cmd1.Parameters.Add(par1);
par1 = new SqlParameter("@score2", SqlDbType.Int);
par1.Value = score2;
cmd1.Parameters.Add(par1);
par1 = new SqlParameter("@score", SqlDbType.Int);
par1.Direction = ParameterDirection.Output;
cmd1.Parameters.Add(par1);
m_testeeScoreTable.Clear();
m_testeeScoreTable.Load(cmd1.ExecuteReader());
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -