private void Form1_Load(object sender, EventArgs e) { //获得规则 Workbook mywbk = new Workbook(@".\rule.xlsx"); Worksheet mysht = mywbk.Worksheets[0]; list_ruleinfo = new List <RuleInfo>(); RuleInfo myinfo = null; for (int i = 1; i < mysht.Cells.LastCell.Row + 1; i++) { myinfo = new RuleInfo() { _fencha = mysht.Cells[i, 0].IntValue, _gaosheng = mysht.Cells[i, 1].IntValue, _gaobai = mysht.Cells[i, 2].IntValue }; list_ruleinfo.Add(myinfo); } //获得人员,同时提取出人名数组 list_name = new List <string>(); //DataGridViewComboBoxColumn cola = dgv_score.Columns[0] as DataGridViewComboBoxColumn; //DataGridViewComboBoxColumn colb = dgv_score.Columns[1] as DataGridViewComboBoxColumn; mywbk = new Workbook(@".\personinfo.xlsx"); mysht = mywbk.Worksheets[0]; list_p = new List <PersonInfo>(); PersonInfo pi = null; for (int i = 1; i < mysht.Cells.LastCell.Row + 1; i++) { pi = new PersonInfo() { _xuhao = mysht.Cells[i, 0].IntValue, _xingming = mysht.Cells[i, 1].StringValue, _xingbie = mysht.Cells[i, 2].StringValue, _shoujihaoma = mysht.Cells[i, 3].StringValue, _shenfenzheng = mysht.Cells[i, 4].StringValue, _chushijifen = mysht.Cells[i, 5].IntValue, _dangqianjifen = mysht.Cells[i, 6].IntValue }; list_p.Add(pi); list_name.Add(pi._xingming); //cola.Items.Add(pi._xingming); //colb.Items.Add(pi._xingming); } }
private void btn_jisuan_Click(object sender, EventArgs e) { dgv_result.Rows.Clear(); //循环判断dgvscore中A,B 分别是 高分还是低分 for (int i = p_score.Controls.Count - 1; i > 0; i--) { UCScore myrow = p_score.Controls[i] as UCScore; //获得A的personinfo PersonInfo pa = list_p.Find((PersonInfo pi) => pi._xingming == myrow.cbb_a.Text); PersonInfo pb = list_p.Find((PersonInfo pi) => pi._xingming == myrow.cbb_b.Text); //计算二者分差,获得加减分,加到每个人的当前积分中 int fencha = Math.Abs(pa._dangqianjifen - pb._dangqianjifen); RuleInfo ri = null; for (int j = 0; j < list_ruleinfo.Count; j++) { if (fencha == 0) { ri = list_ruleinfo[0]; break; } if (list_ruleinfo[j]._fencha >= fencha && list_ruleinfo[j - 1]._fencha < fencha) { ri = list_ruleinfo[j]; break; } } //判断pa和pb的输赢 int scorea = Convert.ToInt32(myrow.cbb_score.Text.Substring(0, 1)); int scoreb = Convert.ToInt32(myrow.cbb_score.Text.Substring(2, 1)); //如果A 输了,如果A是高分,如果A是低分 if (scorea < scoreb) { if (pa._dangqianjifen >= pb._dangqianjifen) { pa._dangqianjifen -= ri._gaobai; pb._dangqianjifen += ri._gaobai; } else if (pa._dangqianjifen < pb._dangqianjifen) { pa._dangqianjifen -= ri._gaosheng; pb._dangqianjifen += ri._gaosheng; } } else//如果a胜 { if (pa._dangqianjifen >= pb._dangqianjifen)//A如果分数本来就高 { pa._dangqianjifen += ri._gaosheng; pb._dangqianjifen -= ri._gaosheng; } else if (pa._dangqianjifen < pb._dangqianjifen) { pa._dangqianjifen += ri._gaobai; pb._dangqianjifen -= ri._gaobai; } } } //计算之后在dgv_result中显示所有人的成绩 int index = 0; for (int p = 0; p < list_p.Count; p++) { var pi = list_p[p]; index = dgv_result.Rows.Add(); dgv_result.Rows[index].Cells[0].Value = index + 1; dgv_result.Rows[index].Cells[1].Value = pi._xingming; dgv_result.Rows[index].Cells[2].Value = pi._chushijifen; dgv_result.Rows[index].Cells[3].Value = pi._dangqianjifen; } }