📄 proctparinfo.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
using System.Net;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using Word;
using Font=System.Drawing.Font;
namespace WindowsApplication1
{
public partial class ProctParInfo : 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();
//操作选择题的sql语句
protected string M_str_sql = "select id as 编号,types as 试题类型,title as 试题,"
+ "selecta as 选项A,selectb as 选项B,selectc as 选项C,selectd as 选项D,"
+ "answer as 试题答案,quotiety as 难度系数 from choose order by id";
//操作判断题的sql语句
protected string M_str_sql1 = "select id as 编号,types as 试题类型,title as 试题,"
+ "answer as 试题答案,quotiety as 难度系数 from panduan order by id";
//操作程序题的sql语句
protected string M_str_sql2 = "select id as 编号,types as 试题类型,title as 试题,answer as 参考答案,quotiety as 难度系数 from program order by id";
protected string M_str_table = "choose";
protected string M_str_table1 = "panduan";
protected string M_str_table2 = "program";
//dataGridView表中的数据是不是外部导入的
bool ifnew = false;
bool edit = false; //dataGridView是否可以编辑
string radiop = ""; //记录radiobutton选中的答案是“对”还是“错”
//表明选中的选项卡
bool choose = false;
bool panduan = false;
bool program = false;
bool[] ifadd = new bool[10]; //标记该题是否已经被添加到数据库中
public ProctParInfo()
{
InitializeComponent();
}
private void ProctParInfo_Load(object sender, EventArgs e)
{
//Form初始化choose标签为选中状态
choose = true;
program = false;
panduan = false;
//加载选择题试题表
DataSet myds = boperate.getds(M_str_sql, M_str_table);
dataGridView1.DataSource = myds.Tables[0];
labCnum.Text = dataGridView1.Rows.Count.ToString();
//如果表为空,删除按钮不可用
if (myds.Tables[0].Rows.Count > 0)
btnCDelete.Enabled = true;
else
btnCDelete.Enabled = false;
}
#region 显示选中的选择题信息
/// <显示>
/// 显示选中的选择题信息
/// </显示>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnCDisplay_Click(object sender, EventArgs e)
{
//如果为7列,则GV表中的数据是从excel导入的
if (dataGridView1.ColumnCount == 7)
{
edit = true;
richChoose.Text = Convert.ToString(dataGridView1[0, dataGridView1.CurrentCell.RowIndex].Value).Trim();
richChooseA.Text = Convert.ToString(dataGridView1[1, dataGridView1.CurrentCell.RowIndex].Value).Trim();
richChooseB.Text = Convert.ToString(dataGridView1[2, dataGridView1.CurrentCell.RowIndex].Value).Trim();
richChooseC.Text = Convert.ToString(dataGridView1[3, dataGridView1.CurrentCell.RowIndex].Value).Trim();
richChooseD.Text = Convert.ToString(dataGridView1[4, dataGridView1.CurrentCell.RowIndex].Value).Trim();
comboBoxAnswer.Text = Convert.ToString(dataGridView1[5, dataGridView1.CurrentCell.RowIndex].Value).Trim();
txtnandu.Text = Convert.ToString(dataGridView1[6, dataGridView1.CurrentCell.RowIndex].Value).Trim();
}
else
{
edit = true;
richChoose.Text = Convert.ToString(dataGridView1[2, dataGridView1.CurrentCell.RowIndex].Value).Trim();
richChooseA.Text = Convert.ToString(dataGridView1[3, dataGridView1.CurrentCell.RowIndex].Value).Trim();
richChooseB.Text = Convert.ToString(dataGridView1[4, dataGridView1.CurrentCell.RowIndex].Value).Trim();
richChooseC.Text = Convert.ToString(dataGridView1[5, dataGridView1.CurrentCell.RowIndex].Value).Trim();
richChooseD.Text = Convert.ToString(dataGridView1[6, dataGridView1.CurrentCell.RowIndex].Value).Trim();
comboBoxAnswer.Text = Convert.ToString(dataGridView1[7, dataGridView1.CurrentCell.RowIndex].Value).Trim();
txtnandu.Text = Convert.ToString(dataGridView1[8, dataGridView1.CurrentCell.RowIndex].Value).Trim();
txtnum.Text = Convert.ToString(dataGridView1[0, dataGridView1.CurrentCell.RowIndex].Value).Trim();
}
}
#endregion
#region 添加选择题
/// <添加>
/// 添加
/// </添加>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnCAdd_Click(object sender, EventArgs e)
{
//判断是否填写所有信息
if (richChoose.Text.Trim() == "" || richChooseA.Text.Trim() == "" || richChooseB.Text.Trim() == "" || richChooseC.Text.Trim() == "" || richChooseD.Text.Trim() == "" || comboBoxAnswer.Text.Trim() == "" || txtnandu.Text.Trim() == "")
MessageBox.Show("请填写完整的试题", "提示");
else
{
//将试题中的"'"转义为"''"
string[] richchoose = new string[5];
richchoose = changeC(richChoose, richChooseA, richChooseB, richChooseC, richChooseD);
//自动生成编号,存放在txtnum中
opAndvalidate.autoNum("select id from choose", "choose", "id", "A", "1000001", txtnum);
//添加选择题信息
boperate.getcom("insert into choose(id,types,title,selecta,selectb,selectc,selectd,"
+ "answer,quotiety) values('" + txtnum.Text.ToString().Trim() + "','" + "A" + "','"
+ richchoose[0] + "','" + richchoose[1] + "','" + richchoose[2] + "','"
+ richchoose[3] + "','" + richchoose[4] + "','"
+ comboBoxAnswer.Text.Trim() + "','" + txtnandu.Text.Trim() + "')");
//加载选择题表
ProctParInfo_Load(sender, e);
MessageBox.Show("试题信息添加成功", "提示");
//添加完成后清空文本框
clear();
}
}
#endregion
#region 将选择题字符串中的 ' 转义
public string[] changeC(RichTextBox r1,RichTextBox r2,RichTextBox r3,RichTextBox r4,RichTextBox r5)
{
string[] chooseC = new string[5];
chooseC[0] = r1.Text.Trim().Replace("'", "''");
chooseC[1] = r2.Text.Trim().Replace("'", "''");
chooseC[2] = r3.Text.Trim().Replace("'", "''");
chooseC[3] = r4.Text.Trim().Replace("'", "''");
chooseC[4] = r5.Text.Trim().Replace("'", "''");
return chooseC;
}
#endregion
#region 清空选择题标签中的输入项
private void clear()
{
richChoose.Clear();
richChooseA.Clear();
richChooseB.Clear();
richChooseC.Clear();
richChooseD.Clear();
}
#endregion
#region 删除选择题信息
/// <summary>
/// 删除试题信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnCDelete_Click(object sender, EventArgs e)
{
try
{
if (MessageBox.Show("确定要删除吗?", "删除确定", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
//删除选择题
boperate.getcom("delete from choose where id='" + Convert.ToString(dataGridView1[0, dataGridView1.CurrentCell.RowIndex].Value).Trim() + "'");
ProctParInfo_Load(sender, e);
MessageBox.Show("删除数据成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
}
}
#endregion
#region 双击gv表格,显示相应试题
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
btnCDisplay_Click(sender, e);
}
#endregion
#region 更新选择题
private void btnCUpdata_Click(object sender, EventArgs e)
{
//如果edit为true,gV中的信息是从excel中导入的,允许修改
if (edit)
{
try
{
if (MessageBox.Show("确定要修改吗?", "确定", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
//将"'"转义为"''"
string[] richchoose = new string[5];
richchoose = changeC(richChoose, richChooseA, richChooseB, richChooseC, richChooseD);
boperate.getcom("update choose set title='" + richchoose[0] + "',selecta='" + richchoose[1] + "',selectb='" + richchoose[2] + "',selectc='" +richchoose[3] + "',selectd='" + richchoose[4] + "',answer='" + comboBoxAnswer.Text.Trim() + "',quotiety='" + txtnandu.Text.Trim() + "' where id='" + txtnum.Text.Trim() + "'");
ProctParInfo_Load(sender, e);
MessageBox.Show("数据更新成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
clear();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
}
}
}
#endregion
#region 点击判断题标签
private void tabPanduan_Click(object sender, EventArgs e)
{
choose = false;
program = false;
panduan = true;
if (!ifnew)
{
DataSet myds = boperate.getds(M_str_sql1, M_str_table1);
dataGridView2.DataSource = myds.Tables[0];
//如果表为空,自动增加一行内容
if (myds.Tables[0].Rows.Count <= 0)
{
dataGridView2.AllowUserToAddRows = true;
}
labPannum.Text = dataGridView2.Rows.Count.ToString();
if (myds.Tables[0].Rows.Count > 0)
btnPDelete.Enabled = true;
else
btnPDelete.Enabled = false;
}
}
#endregion
#region 显示判断题
private void btnPDisplay_Click(object sender, EventArgs e)
{
//ColumnCount == 3,试题是从excel导入的
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -