问题描述:有两个表 一个表a存小组(第一组、第二组.....的N组),令一个表b里放的是数据
我现在要将b表里的数据随机插入到a表里(可以先把b表数据平均分成n份,◎最后一份数据<=评价数◎再插入a表;也可以将b表数据循环插入a表)例如有表a (注意:实际上a表数据初始为空,小组个数n也是随机创建 ,如下a表内容为参考)
---------------------------------------
ID   NAME    StudentNO1    第一组   
2    第二组
3    第三组
。   ...
。   ...
。   ...有表b 
---------------------------------------
StudentNO001
002
003
004
005
006
007给段代码参考 你实际情况描述:有3个listview 一个lvGroup用来放分组,一个lvStudent用来放学生名称 ,一个lvMember放每个小组学生姓名 输入要创建的小组个数,点击分组按钮,创建了i个小组,并且把lvStudent中对应的学生名的随机分到各小组,在lvMember中显示
private void button3_Click(object sender, System.EventArgs e)
{
//创建小组
for(int i=0;i<(int)txtGrpNum.Value;i++)//i为第i小组
{
string strCmd="insert into grp_sln(bh,zbh,zmc) values('"+this.treeView2.SelectedNode.Tag.ToString().Trim()+"','"+this.treeView2.SelectedNode.Tag.ToString().Trim()+(i+1)+"','第"+(i+1).ToString()+"小组')";//循环插入小组到grp_sln
OleDbCommand cmd=new OleDbCommand(strCmd,conn);
cmd.ExecuteNonQuery();
if(radioSJ.Checked==true)//如果选择随机分组
{
//随机分组
for(int j=0;j<this.lvStudent.Items.Count;j++)//逐个插入
{
string strCmd1="insert into grp_xs(zbh,jyjxsbm) values('"+this.treeView2.SelectedNode.Tag.ToString().Trim()+(i+1)+"','"+this.ds.Tables["xs_jbxx"].Rows[j][2].ToString().Trim()+"')";
OleDbCommand cmd1=new OleDbCommand(strCmd1,conn);
cmd1.ExecuteNonQuery();
}
}
else
  return;
}


}累死了,估计还没描述清楚

解决方案 »

  1.   

    A,B,Temp表
    1、获取int groupCount=A.Length,int personCount=B.Length,int avg=personCount/groupCount;
    2、根据groupCount从B表中随机取avg个人出来 丢给A中第一组,从B中移除已分配的值到Temp
    3、再随机取avg个给A中第二组
    如此循环,最后的余数小于avg就随机分配给A中对象  一组一个
    这样就比较平均 当然 如果你用数据库来分配更快
      

  2.   

    int i=1;//小组序号
    int grpSUM=。。;//定义班级小组个数
    foreach(属于第i小组的未分组的学生)//未分组学生
    {
    //添加
    OleDbCommand cmd=new OleDbCommand("insert into grp_xs(zbh,jyjxsbm) values('"+this.treeView4.SelectedNode.Tag.ToString().Trim()+i.ToString().Trim()+"','"+dr["jyjxsbm"].ToString().Trim()+"')",conn);
    cmd.ExecuteNonQuery();
    i++;
    if(i>grpSUM)//判断i,如果大于小组个数,变为第一小组
    i=1;
    }  
    this.lvStudent.Items[0].Remove();