这几周一直在做这个排球比比赛积分的项目。据我的回忆里记载,这个项目在很早以前就已经立项了,可见这个项目的难度系数之大。然而,经过这几周每个人以至于整个专业都在对这个项目投入百分百的热情,那场面真是如火如荼,热火朝天,简直秒不可言(此处为大家得意的笑)。好了,场面我就不多言了,大家还是自己脑补吧!
针对如此的情况,结果大家可想而知,那必须很漂亮呀,你说是不是(“是呀”)。好的,对于2016年的总结,我也不便多言,那就简单说几句吧,进入大二的软件工程(据说是一流课程,学识浅薄的我不便多言)就会发现,这门课程跟其他的专业课与众不同,我们对于一个项目的讨论也不止于表面了,而是更加深层次和严谨有流程(这是重点,圈起来,考试要考的)。学习的知识也注重方向不同了。
在即将到来的新年里,我想许个新年愿望,希望明年会更好,也希望大家都能找个好工作!
好的,废话不罗嗦,上代码(喳!)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//
using DAL;
using System.Data.SqlClient;
using Model;
namespace 排球程序demo
{
public partial class BeginForm : Form
{
public BeginForm()
{
InitializeComponent();
}
//定义必要的字段,记录比赛的数据
int scoreA = 0;
int scoreB = 0;
int juANum = 0;
int juBNum = 0;
int juCount = 1;
string ju = "第一局";
private void BeginForm_Load(object sender, EventArgs e)
{
//设置窗体的位置
this.Location = new Point(0, 0); //等价于: form1.Left=0; form1.Right=0;
////设置窗体的背景图像.这里放在bin目录的debug里
//this.BackgroundImage = Image.FromFile(@"都敏俊与女猪脚.jpeg");
////设置窗体的大小为背景图片的大小,1400*900;
//this.Size = new Size(1000, 800);
//显示时间
CurrentTime.Text = (DateTime.Now).ToString();//显示系统当前时间
timer1.Start();
}
private void btnRegister_Click(object sender, EventArgs e)
{
//切换到下一个选项卡
this.tabControl1.SelectedIndex = this.tabControl1.SelectedIndex + 1;
}
TheAction action = new TheAction();
//添加队伍名称信息
//private void btnAddTName_Click(object sender, EventArgs e)
//{
// string team = txtTName.Text;
// if (action.SelectTName(team) == true)//调用方法SelectTname,判断队名是否已经存在
// {
// if (action.InsertTeamName(team) == true)
// {
// MessageBox.Show("好的,数据已存入!");
// }
// else
// {
// MessageBox.Show("数据插入失败!");
// }
// }
// else if (action.SelectTName(team) == false)
// {
// MessageBox.Show("队伍已经存在");
// }
//}
private void btnSubmit_Click(object sender, EventArgs e)
{
//切换到下一个选项卡
this.tabControl1.SelectedIndex = this.tabControl1.SelectedIndex + 1;
}
private void btnLogin_Click(object sender, EventArgs e)
{
MessageBox.Show("会根据登录者的身份跳转到添加或积分页面");
}
//点击添加的保存按钮时:
private void btnSave_Click(object sender, EventArgs e)
{
Members m = new Members();
m.MName = txtMName.Text.Trim();
m.TName = txtTName.Text.Trim();
m.Number = txtNumber.Text.Trim();
m.Position = txtPosition.Text.Trim();
m.Weight = txtWeight.Text.Trim();
m.Height = txtHeight.Text.Trim();
//获取控件上的值
//string mName = txtMName.Text.Trim();
//string tName = txtTName.Text.Trim();
//string number = txtNumber.Text.Trim();
//string position = txtPosition.Text.Trim();
//string weight = txtWeight.Text.Trim();
//string height = txtHeight.Text.Trim();
//DB中只允许nickname和strength为空,所以要有非空判断
//int age = 0;
//try
//{
// age = int.Parse(txtAge.Text.Trim());
//}
//catch (ArgumentException)
//{
// MessageBox.Show("确认输入的年龄是个数字吗?");
//}
//string nickName = txtNickName.Text.Trim();
//string strength = txtStrength.Text.Trim();
m.Age = 0;
try
{
m.Age = int.Parse(txtAge.Text.Trim());
}
catch ( ArgumentNullException )
{
MessageBox.Show("确认输入的年龄是数字吗?");
}
m.NickName = txtNickName.Text.Trim();
m.Strength = txtStrength.Text.Trim();
if (String.IsNullOrEmpty(m.MName) || String.IsNullOrEmpty(m.TName) || String.IsNullOrEmpty(m.Number)||String.IsNullOrEmpty(m.Position) ||
String.IsNullOrEmpty(m.Weight) || String.IsNullOrEmpty(m.Height))
{
MessageBox.Show("请检查是否有没填的项?");
}
else
{
//先判断是否为重复插入
//string sql0 = "select MName from Members where Number=" + m.Number + " and TName=" + m.TName;
string sql0 = string.Format("select MName from Members where Number='{0}' and TName='{1}'",m.Number,m.TName);
//if (SqlHelper.ExecuteScalar(sql0).ToString()==m.MName) //这里出错了
//{
// MessageBox.Show("队员信息已经存在了呦!" + SqlHelper.ExecuteScalar(sql0).ToString());
//}
//else if (action.InsertMInfo(m)==1)
//{
if (action.InsertMInfo(m) == 1)
{
MessageBox.Show("插入成功");
}
//}
}
}
private void btnClear_Click(object sender, EventArgs e)
{
//除了txtTName,设置每个控件的text值为空;
txtMName.Text = "";
txtNumber.Text = "";
txtPosition.Text = "";
txtWeight.Text = "";
txtHeight.Text = "";
txtNickName.Text = "";
txtStrength.Text = "";
}
private void btnAlter_Click(object sender, EventArgs e)
{
//暂时不考虑
}
private void tabPage6_Click(object sender, EventArgs e)
{
//当计入“开始计分”选项卡时进入该事件,并在此调用方法:TNameA_Load()
}
showForm F = null;
private void ShowScoreOnF()
{
if (F == null || F.IsDisposed) //如果窗体从未打开或打开后又关闭;
{
F = new showForm();
}
string[] biFen = { cmbTeamA.Text,cmbTeamB.Text,ju,
juANum.ToString(),juBNum.ToString(),
scoreA.ToString(),scoreB.ToString()};
//为什么上面的cmbTeamA.Text是可以用的,但在方法外就不可以用了???????
F.DisplayScore(biFen);
F.Show();
}
private void BathDisplay()
{
//初始化记分员页面的控件值
gBoxNowResult.Text = ju;
juA.Text = juANum.ToString();
juB.Text = juBNum.ToString();
SA.Text = scoreA.ToString();
SB.Text = scoreB.ToString();
//调用函数打开观众的界面并改变页面相关数据
ShowScoreOnF();
}
private void btnStart_Click(object sender, EventArgs e)
{
BathDisplay();
}
//动态显示系统当前时间:
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Interval = 1000;
CurrentTime.Text = (DateTime.Now).ToString();
if (!(F == null || F.IsDisposed))
{
F.DisplayTime(CurrentTime.Text);
}
}
//对加减分进行处理
private void ScoreDeal(string team, ref int score1, int score0, ref int juNum1,int a=1)
{
if (juCount < 5)//前四局
{
if (a == 1)//根据a的值来判断是加或减,1为加0为减
{
score1++;
}
else { score1--; }
if (!(score1 > 24 && Math.Abs(score1 - score0) >= 2))
{
BathDisplay();
}
else
{
juNum1++;
BathDisplay();
MessageBox.Show("第" + juCount + "局结束:
" + team + "胜!");
//在这里加个提示观众哪队赢得消息
score1 = 0;
score0 = 0;
juCount++;
ju = "第" + juCount + "局";
BathDisplay();
//往数据库中插入数据……
}
}
else//是第五局
{
score1++;
if (score1 >= 15 && Math.Abs(score1 - score0) == 2)
{
BathDisplay();
MessageBox.Show("比赛结束:
" + team + "胜!");
//往数据库中插入数据……
}
else
{
BathDisplay();
}
}
}
private void btnAddA_Click(object sender, EventArgs e)
{
string teamA = cmbTeamA.SelectedItem.ToString();
string teamB = cmbTeamB.SelectedItem.ToString();
ScoreDeal(teamA, ref scoreA, scoreB, ref juANum);
}
private void btnAddB_Click(object sender, EventArgs e)
{
string teamA = cmbTeamA.SelectedItem.ToString();
string teamB = cmbTeamB.SelectedItem.ToString();
ScoreDeal(teamB, ref scoreB, scoreA, ref juBNum);
}
private void btnSubA_Click(object sender, EventArgs e)
{
string teamA = cmbTeamA.SelectedItem.ToString();
string teamB = cmbTeamB.SelectedItem.ToString();
ScoreDeal(teamA, ref scoreA, scoreB, ref juANum,0);
}
private void btnSubB_Click(object sender, EventArgs e)
{
string teamA = cmbTeamA.SelectedItem.ToString();
string teamB = cmbTeamB.SelectedItem.ToString();
ScoreDeal(teamB, ref scoreB, scoreA, ref juBNum,0);
}
//切换选项卡时执行,为查询的队伍和比赛的A队的cmbbox插入数据
private void tabControl1_Selected(object sender, TabControlEventArgs e)
{
//为cmbTeam、cmbTeamA控件添加数据
cmbTeam.Items.Clear();//将控件中的数据项清空,防止重复绑定
cmbTeam.Items.Add("<--请选择队伍(必选)-->");
cmbTeam.Items.Add("查全部队伍");
cmbTeam.SelectedIndex = 0;
cmbTeamA.Items.Clear();
cmbTeamA.Items.Add("<--请选择队伍(必选)-->");
cmbTeamA.SelectedIndex = 0;//设置提示信息为默认选项
string sql = "select distinct TName from Members ";
using(SqlDataReader reader = SqlHelper.ExecuteReader(sql))
{
if (reader.HasRows)
{
while (reader.Read())
{
cmbTeam.Items.Add(reader[0]);
cmbTeamA.Items.Add(reader[0]);
}
}
}
}
// 为cmbMember、cmbTeamB添加所选团队中成员的数据
private void cmbTeam_SelectedIndexChanged(object sender, EventArgs e)
{
cmbMember.Items.Clear();
cmbMember.Items.Add("<--选择队员(可不选)-->");
string cmbTeam = this.cmbTeam.SelectedItem.ToString();
string sql = "select MName from Members where TName=@cmbTeam";
using(SqlDataReader reader=SqlHelper.ExecuteReader(sql,new SqlParameter("@cmbTeam",cmbTeam)))
{
if (reader.HasRows)
{
while (reader.Read())
{
cmbMember.Items.Add(reader[0]);
}
}
}
cmbMember.SelectedIndex = 0;//设置提示信息为默认选择;
}
//根据cmbTeamA的选项,为cmbTeamB的队名加载数据
private void cmbTeamA_SelectedIndexChanged(object sender, EventArgs e)
{
string TeamA = cmbTeamA.SelectedItem.ToString();
cmbTeamB.Items.Clear();
cmbTeamB.Items.Add("<--选择队伍(必选)-->");
cmbTeamB.SelectedIndex = 0; //设置提示信息为默认选择;
string sqlB = "select distinct TName from Members where TName not in(@TeamA)";
using (SqlDataReader reader = SqlHelper.ExecuteReader(sqlB, new SqlParameter("@TeamA", TeamA)))
{
if (reader.HasRows)
{
while (reader.Read())
{
cmbTeamB.Items.Add(reader[0]);
}
}
}
}
//点击查询
private void btnSelect_Click(object sender, EventArgs e)
{
int teamIndex = cmbTeam.SelectedIndex;
int memberIndex = cmbMember.SelectedIndex;
string team = cmbTeam.SelectedItem.ToString();
string member = cmbMember.SelectedItem.ToString();
DataTable dt=action.SelectInfo(teamIndex, memberIndex, team, member);
//dataGridView1.DataSource = dt;
//上句可以直接将dt显示到dgv;最简单直接的,不过列名可能不理想;
if (F != null)
{
F.txtTip.Visible = false;
}
dataGridView1.Columns.Clear();//清空列
F.dgv1.Columns.Clear();
string[] arr团队 = { "ID", "队名", "胜场", "负场", "积分", "胜局", "负局", "3-0", "3-1", "3-2", "2-3", "1-3", "0-3" };
string[] arr队员信息 = { "ID","姓名","队伍","球衣号","位置","体重","身高","年龄","外号","特长"};
string[] arr赛事记录 = {"ID","主场","客场","比赛时间","第一局","第二局","第三局","第四局","第五局","地点" };
int i = 0;
foreach (DataColumn column in dt.Columns)
{
if (dt.Columns.Count == 13)//是WFCcount的表
{
//为datagridview添加列,第一个参数是列名,第二个参数是列标题
dataGridView1.Columns.Add(column.ColumnName, arr团队[i]);
F.dgv1.Columns.Add(column.ColumnName, arr团队[i]);
i++;
}
else if (dt.Columns.Count == 10)//是队员信息Members的表
{
dataGridView1.Columns.Add(column.ColumnName, arr队员信息[i]);
F.dgv1.Columns.Add(column.ColumnName, arr队员信息[i]);
i++;
}
else//有问题,目前不影响运行
{
dataGridView1.Columns.Add(column.ColumnName, arr赛事记录[i]);
F.dgv1.Columns.Add(column.ColumnName, arr赛事记录[i]);
i++;
}
}
dataGridView1.Rows.Clear();//清空行
F.dgv1.Rows.Clear();
foreach (DataRow line in dt.Rows)
{
//因为列已经一致了,所以直接将datatable的行转成数组就可以添加到datagridview中了
dataGridView1.Rows.Add(line.ItemArray);
F.dgv1.Rows.Add(line.ItemArray);
}
dataGridView1.Columns["ID"].Visible = false;
F.dgv1.Columns["ID"].Visible = false;
}
//传递提示信息
private void btnTip_Click(object sender, EventArgs e)
{
if (F != null)
{
if (btnTip.Text == "显示tip")
{
F.txtTip.Text = txtTip.Text;
F.txtTip.Visible = true;
btnTip.Text = "取消tip";
}
else
{
F.txtTip.Text = txtTip.Text;
F.txtTip.Visible = false;
btnTip.Text = "显示tip";
}
}
}
private void txtWelcome_TextChanged(object sender, EventArgs e)
{
}
}
}