📄 seatsite.cs
字号:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsApplication1.KaowuManage
{
public partial class SeatSite : Form
{
SqlConnection cn = new SqlConnection("SERVER=(local);UID=sa;PWD=sa;Trusted_Connection=True;DATABASE=test1");
baseclass.BaseOperate boperate = new baseclass.BaseOperate();
protected string M_str_sql = "select * from student order by s_number";
protected string M_str_table = "student";
public SeatSite()
{
InitializeComponent();
}
/// <summary>
/// 返回
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnBack_Click(object sender, EventArgs e)
{
this.Close();
}
#region 分配座次
private void btnOK_Click(object sender, EventArgs e)
{
int knum = 0; //考场中可以容纳的考生数量
string kname; //考场名称
DataSet mydskchang = boperate.getds("select kname,capcity from kaochang", "kaochang");
DataTable dtchang = mydskchang.Tables[0];
foreach (DataRow row in dtchang.Rows)
{
knum += Convert.ToInt32(row["capcity"].ToString());
}
//begin分配到该考场的第一个学生的编号
//end分配到该考场的最后一个学生的编号
int begin = 1, end = 1;
DataSet myds = boperate.getds(M_str_sql, M_str_table);
DataTable dt = myds.Tables[0];
int totalnum = dt.Rows.Count; //考生总数
if (knum < totalnum)
MessageBox.Show("考生数量大于考场容量,请重新设置考场!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
else
{
foreach (DataRow row in dtchang.Rows)
{
//如果没有分配考场的考生数量大于0,继续循环分配考场
if (totalnum > 0)
{
end += Convert.ToInt32(row["capcity"].ToString());
//统计还没有分配考场的考生数量
totalnum -= Convert.ToInt32(row["capcity"].ToString());
kname = row["kname"].ToString();
//为考生分配座次
seat(begin, end, dt, kname);
begin = end;
}
//如果没有分配考场的考生数量小于0,退出循环,考场分配完毕
else
break;
}
myds = boperate.getds("select s_number as 学号,zuoweiid as 座位号,kname as 考场名称,loginstatus as 登陆状态 from zuoci order by kname", "zuoci");
dataGridView1.DataSource = myds.Tables[0];
}
}
#endregion
#region 判断座次表是否为空
public bool IsZuoCiEmpity()
{
SqlCommand cmd = new SqlCommand("select * from zuoci",cn);
if (cn.State == ConnectionState.Closed)
cn.Open();
if( cmd.ExecuteScalar() != null)
{
MessageBox.Show("请先清空座次表再分配座次", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return false;
}
if (cn.State == ConnectionState.Open)
cn.Close();
return true;
}
#endregion
#region 依次为每个考场分配考生,直到所有考生分配完毕
/// <summary>
/// 依次为每个考场分配考生,直到所有考生分配完毕
/// </summary>
/// <param name="begin">begin分配到该考场的第一个学生的编号</param>
/// <param name="end">end分配到该考场的最后一个学生的编号</param>
/// <param name="dt">学生信息表</param>
/// <param name="kname">考场名称</param>
public void seat(int begin,int end,DataTable dt,string kname)
{
int i = 1;
foreach(DataRow row in dt.Rows )
{
if(i >= begin && i <= end)
{
boperate.getcom("insert into zuoci(s_number,zuoweiid,kname,loginstatus,remaintime) values('" + row["s_number"] + "','" + i + "','" + kname +"','" + "未登录" + "','"+ 0 +"')");
}
i++;
}
}
#endregion
private void SeatSite_Load(object sender, EventArgs e)
{
//如果座次表不为空,不可以分配座次
if (!IsZuoCiEmpity())
btnOK.Enabled = false;
DataSet myds = boperate.getds("select s_number as 学号,zuoweiid as 座位号,kname as 考场名称,loginstatus as 登陆状态 from zuoci order by kname", "zuoci");
dataGridView1.DataSource = myds.Tables[0];
if (myds.Tables[0].Rows.Count <= 0)
{
dataGridView1.AllowUserToAddRows = true;
}
}
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;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -