⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setprogram.cs

📁 程序设计语言上机考试系统
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1.KaoChangManage
{
    public partial class SetProgram : Form
    {
        SqlConnection cn = new SqlConnection("SERVER=(local);UID=sa;PWD=sa;Trusted_Connection=True;DATABASE=test1");
        baseclass.BaseOperate boperate = new baseclass.BaseOperate();
        baseclass.OperateAndValidate opAndvalidate = new baseclass.OperateAndValidate();
        public SetProgram()
        {
            InitializeComponent();
        }

        private void SetProgram_Load(object sender, EventArgs e)
        {
            //加载程序题答案表中的信息
            DataSet myds = boperate.getds(
                    "select snumber as 学号, id as 答案编号, answer as 考生答案,remarks as 评语, score as 试题得分 from panswer ", "panswer");
            dataGridView1.DataSource = myds.Tables[0];
            if (myds.Tables[0].Rows.Count <= 0)
            {
                dataGridView1.AllowUserToAddRows = true;
            }
        }

        #region 清空显示答案
        public void Clear()
        {
            rTxt.Clear();
            richanswer.Clear();
            richSanswer.Clear();
        }
        #endregion
        
        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            for (int i = 0; i < dataGridView1.Rows.Count; i++)
                dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.White;
            dataGridView1.CurrentRow.DefaultCellStyle.BackColor = Color.LightSlateGray;

            //如果label可见,则当然rTxt显示的是判卷老师添加的评语
            if(label1.Visible)
                toolStripBtnOK_Click(sender, e);
            label1.Visible = false;
            Clear();
            if (dataGridView1.CurrentRow.Cells[2].Value != null)
            {
                //显示考生答案
                richSanswer.Text = Convert.ToString(dataGridView1[2, dataGridView1.CurrentCell.RowIndex].Value).Trim();
            }
            if (dataGridView1.CurrentRow.Cells[4].Value != null)
            {
                //显示试题得分
                tSTxtMark.Text = Convert.ToString(dataGridView1[4, dataGridView1.CurrentCell.RowIndex].Value).Trim();
            }
            string number = ""; //存放学号
            number = dataGridView1.CurrentRow.Cells[0].Value.ToString();
            if (cn.State == ConnectionState.Closed)
                cn.Open();
            SqlCommand scmd = new SqlCommand("select idshijuan from paper where s_number ='" + number + "'", cn);
            string shijuanid = scmd.ExecuteScalar().ToString();
            //加载程序题试题和参考答案
            GetTitle(shijuanid, number);
            if (cn.State == ConnectionState.Open)
                cn.Close();
        }

        #region 加载程序题试题和参考答案
        /// <summary>
        /// 加载程序题试题和参考答案
        /// </summary>
        /// <param name="shijuanid">试卷id</param>
        /// <param name="number">学号</param>
        public void GetTitle(string shijuanid,string number)
        {
            //获取考生试卷中的程序题id
            SqlCommand scmd = new SqlCommand("select C from shiti where idshijuan = '" + shijuanid + "'", cn);
            //试卷表提取出的程序题id
            string curid = scmd.ExecuteScalar().ToString();
            //把curid用分隔符分开,存入programid数组
            string[] programid = boperate.Split(curid, ";");

            //获取考生程序题答案id
            scmd = new SqlCommand("select C from answer where snumber='" + number + "'",cn);
            curid = scmd.ExecuteScalar().ToString();
            //提取去掉分隔符后的程序题答案编号
            string[] answerid = boperate.Split(curid, ";");

            for (int i = 0; i < answerid.Length; i++)
            {
                if (answerid[i] == dataGridView1.CurrentRow.Cells[1].Value.ToString())
                {
                    DataSet myds = boperate.getds("select * from program where id='" + programid[i] + "'", "program");
                    foreach (DataRow row in myds.Tables[0].Rows)
                    {
                        richanswer.Text = row["answer"].ToString();
                        rTxt.Text = row["title"].ToString();
                    }
                }
            }
        }
        #endregion

        #region 关闭
        private void tsbtnExit_Click(object sender, EventArgs e)
        {
            if (label1.Visible)
                //保存评语
                toolStripBtnOK_Click(sender, e);
            this.Close();
        }
        #endregion

        #region 添加分数和评语
        private void toolStripBtnOK_Click(object sender, EventArgs e)
        {
            if (tSTxtTNmae.Text.Trim() == "" || tSTxtMark.Text.Trim() == "")
                MessageBox.Show("请输入完整的信息!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            else
            {
                if (!opAndvalidate.validateNum(tSTxtMark.Text.Trim()))
                    errorPnum.SetError(tSTxtMark.Control, "请输入正整数");
                else
                {
                    errorPnum.Clear();
                    string sql = "";
                    if (label1.Visible)
                        sql = tSTxtTNmae.Text.Trim() + ";" + rTxt.Text.Trim();
                    else
                        sql = tSTxtTNmae.Text.Trim() + ";";
                    string id = Convert.ToString(dataGridView1[1, dataGridView1.CurrentCell.RowIndex].Value).Trim();
                    boperate.getcom("update panswer set score ='" + Convert.ToDecimal(tSTxtMark.Text.Trim()) + "', remarks = '" + sql + "' where id ='" + id + "'");
                    tSTxtMark.Clear();
                    rTxt.Clear();
                    SetProgram_Load(sender, e);
                }
            }
        }
        #endregion

        #region 添加评语
        private void pingyu_Click(object sender, EventArgs e)
        {
            label1.Visible = !label1.Visible;
            rTxt.Clear();
            this.label1.Text = "请在这里输入评语:";
        }
        #endregion
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -