足球运动员信息管理系统
足球运动员信息管理系统
本案例实现一个小型的足球运动员信息管理系统。完成的功能:球队管理、球员管理、联赛管理、赛绩管理以及系统管理员才具有的主教练管理和用户管理。
1.球队管理:可对球队进行添加、删除、修改、查找等功能,球队属性有:名称、主教练(来自于系统中保存的教师)、当前球员人数、建队日期和备注等属性。
2.球员管理:可对球员进行添加、删除、修改、查找等功能,球员属性有:球衣号、姓名、性别、所属球队(来自于系统中保存的球队)、相片、出生日期和备注等属性。
3.比赛管理:可对训练项目进行添加、删除、修改、查找和等功能,科目属性有:项目目名称、积分数和备注等属性。
4.日程管理:可对每一个球队参与的比赛进行添加、删除、修改、查找功能,日程属性有:所属球队(来自于系统中保存的球队)、主教练(来自于系统中保存的教师)、开始日期、结束日期和备注等属性。
5.赛绩管理:可对每一个球队的赛绩进行添加、删除、修改、查找等功能,赛绩属性有:球员姓名、所属球队(来自于系统中保存的球队)、比赛名、进球数、备注等属性。
分析
根据系统的功能划分和实现的方便,我们将整个程序分为三层:数据层、业务层和界面层。数据层负责对数据库进行操作,包括向表中插入数据、更新数据、查询数据和删除数据。业务层负责把界面上的各种操作传达给数据层。界面层主要负责界面的设计,包括控件的位置和外观等设置、实时反映系统的变化情况。
数据库表的设计
根据程序的功能得出数据实体,进行数据库设计分析,确定以下数据表,如图所示:
1.教练表(Coach)
2.比赛表(Match)
3.球员表(Player)
4.赛程表(Race)
5.赛绩表(Score)
6.球队表(Team)
7.用户表(User)
主要代码:Team.cs(BusinessRuler)using System;
using System.Windows.Forms;
using DataAccess;
using System.Data.SqlClient;
using System.Collections;
using System.Data;
namespace BusinessRuler
{
public class Team
{
private DataGridView _dgvTeam;
public Team(DataGridView dgv)
{
_dgvTeam = dgv;
}
public Team()
{
}
//验?证¤系μ统?是?否?有瓺球ò队ó
public static bool IsTeamExists()
{
if (DataAccess.Team.IsTeamExists().HasRows)
{
return true;
}
else
{
MessageBox.Show("目?前?还1没?有瓺球ò队ó,?请?首骸?先a创洹?建¨球ò队ó", "错洙?误ó", MessageBoxButtons.OK, https://www.360docs.net/doc/0a19272069.html,rmation);
return false;
}
}
//验?证¤该?队ó是?否?有瓺球ò员a
public bool IsPlayerExists(string teamName)
{
DataAccess.Team objTeam = DataAccess.Team.CreateInstance(teamName);
if (objTeam.CurrentCount > 0)
{
return true;
}
else
{
MessageBox.Show("该?班悒?目?前?还1没?有瓺学§生Θ?,?无T法ぁ?进?行D战?
绩¨管?理え?,?请?首骸?先a添 ?加ó学§生Θ?!?", "错洙?误ó", MessageBoxButtons.OK, https://www.360docs.net/doc/0a19272069.html,rmation);
return false;
}
}
//验?证¤该?队ó球ò员a人?数簓是?否?已?超?过y额?定¨
public static bool isInCapacity(string teamName)
{
int playerCapacity = Convert.ToInt32(BusinessRuler.ReaderWirteConfig.GetValueByKey("PlayerCapaticyInTeam")); DataAccess.Team objTeam = DataAccess.Team.CreateInstance(teamName);
if (objTeam.CurrentCount == playerCapacity)
{
MessageBox.Show("该?队ó球ò员a人?数簓已?满ú!?", "错洙?误ó", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
return true;
}
//验?证¤球ò队ó名?是?否?已?存?在ú
public static bool CheckExists(string teamName)
{
return DataAccess.Team.CheckExists(teamName).HasRows;
}
//检ì查?该?球ò队ó是?否?已?开a赛a?
public bool IsRaceExist(string teamName)
{
DataAccess.Team objTeam = new DataAccess.Team(teamName);
if (objTeam.FillByAllMatchName().Tables[0].Rows.Count > 0)
{
return true;
}
else
{
MessageBox.Show(teamName + " 球ò队ó尚 无T赛a?程ì,?无T法ぁ?进?行D赛a?绩¨管?理え?,?请?先a添 ?加ó赛a?程ì!?", "错洙?误ó", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
}
//更?新?数簓据Y网?格?的?显?示?
public void UpdateDataGrid()
{
if (this._dgvTeam != null)
{
DataSet objDataSet = DataAccess.Team.FillByAllTeam();
this._dgvTeam.DataSource = objDataSet.Tables[0];
}
}
//添 ?加ó球ò队ó
public void AddTeam(string teamName, string coach, DateTime entranceDate, string remark)
{
//首骸?先a判D断?球ò队ó名?称?是?否?已?存?在ú
if (CheckExists(teamName))
{
MessageBox.Show("球ò队ó名?" + teamName + "已?存?在ú,?请?重?新?输?入?球ò队ó名?!?", "球ò队ó名?已?存?在ú", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
if(DataAccess.Team.CreateTeam(teamName, coach, entranceDate, remark) > 0) {
UpdateDataGrid();
MessageBox.Show("成?功|添 ?加ó球ò队ó!?", "操ù作痢?成?功|", MessageBoxButtons.OK, https://www.360docs.net/doc/0a19272069.html,rmation);
}
}
}
//修T改?球ò队ó
public void ModifyTeam(string teamName, string coach, DateTime entranceDate, string remark)
{
DataAccess.Team objTeam = new DataAccess.Team(teamName);
objTeam.Coach = coach;
objTeam.EntranceDate = entranceDate;
objTeam.Remark = remark;
if (objTeam.Update() > 0)
{
UpdateDataGrid();
MessageBox.Show("修T改?球ò队ó资哩?料?成?功|!?", "操ù作痢?成?功|", MessageBoxButtons.OK, https://www.360docs.net/doc/0a19272069.html,rmation);
}
}
//删?除y球ò队ó
public void DeleteTeam(string teamName)
{
if (!CheckExists(teamName))
{
MessageBox.Show("球ò队ó名?" + teamName + "不?存?在ú,?请?重?新?输?入?球ò队ó名?!?", "球ò队ó名?不?存?在ú", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
if (DialogResult.Yes == MessageBox.Show("真?的?要癮删?除y球ò队ó' " + teamName + " '吗e?\n 删?除y该?队ó时骸?,?将?同?时骸?删?除y该?队ó所ù有瓺球ò员a的?档苔?案?及?相à关?赛a?程ì、¢赛a?绩¨的?记?录?,?确ü?定¨要癮继ì续?吗e??", "删?除y确ü?认?", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
{
DataAccess.Team objTeam = new DataAccess.Team(teamName);
if (objTeam.Delete() > 0)
{
UpdateDataGrid();
MessageBox.Show("成?功|删?除y球ò队ó' " + teamName + " '!", "操ù作痢?成?功|", MessageBoxButtons.OK, https://www.360docs.net/doc/0a19272069.html,rmation);
}
}
}
}
public void FillCboByAllTeamName(ComboBox cbo, int position)
{
cbo.Items.Clear();
DataTable teamNames = DataAccess.Team.GetAllTeamName();
foreach (DataRow row in teamNames.Rows)
{
cbo.Items.Add(row[0].ToString());
}
cbo.SelectedIndex = position;
}
public void FillCboByAllTeamName(ComboBox cbo, string theTeamName)
{
cbo.Items.Clear();
int position = 0;
int i = 0;
DataTable teamNames = DataAccess.Team.GetAllTeamName();
foreach (DataRow row in teamNames.Rows)
{
cbo.Items.Add(row[0].ToString());
if (row[0].ToString().Equals(theTeamName))
{
position = i;
}
i++;
}
cbo.SelectedIndex = position;
}
//查?找ò球ò队ó
public static void FindByTeamName(DataGridView dgv, string teamName)
{
for (int row = 0; row < dgv.Rows.Count; row++)
{
if
(dgv.Rows[row].Cells["colTeamName"].Value.ToString().Equals(teamName))
{
dgv.Rows[row].Selected = true;
return;
}
}
MessageBox.Show("已?到?记?录?末?尾2!?", "结á果?", MessageBoxButtons.OK, https://www.360docs.net/doc/0a19272069.html,rmation);
}
//按恪?教ì练ⅰ?查?找ò
public static void FindByCoach(DataGridView dgv, string coach, bool useMatch)
{
for (int row = Int32.Parse(dgv.Tag.ToString()); row < dgv.Rows.Count; row++) {
bool condition = dgv.Rows[row].Cells["colCoach"].Value.ToString().Equals(coach);
if (useMatch)
{
condition = dgv.Rows[row].Cells["colCoach"].Value.ToString().Contains(coach);
}
if (condition)
{
dgv.Rows[row].Selected = true;
dgv.Tag = (row + 1).ToString();
return;
}
}
MessageBox.Show("已?到?记?录?末?尾2!?", "结á果?", MessageBoxButtons.OK, https://www.360docs.net/doc/0a19272069.html,rmation);
dgv.Tag = 0;
}
//按恪?建¨队ó日?期ú查?找ò
public static void FindByDate(DataGridView dgv, DateTime startDate, DateTime finishDate)
{
for (int row = Int32.Parse(dgv.Tag.ToString()); row < dgv.Rows.Count; row++) {
DateTime dateValue = DateTime.Parse(dgv.Rows[row].Cells["colEntranceDate"].Value.ToString());
if (dateValue >= startDate && dateValue <= finishDate)
{
dgv.Rows[row].Selected = true;
dgv.Tag = (row + 1).ToString();
return;
}
}
MessageBox.Show("已?到?记?录?末?尾2!?", "结á果?", MessageBoxButtons.OK, https://www.360docs.net/doc/0a19272069.html,rmation);
dgv.Tag = 0;
}
}
}
主要代码:
2.Team.cs(DataAccess)
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
namespace DataAccess
{
public class Team
{
private string _teamName;
private string _coach;
private int _currentCount;
private DateTime _entranceDate;
private string _remark;
#region
public string TeamName
{
get
{
return _teamName;
}
set
{
_teamName = value;
}
}
public string Coach
{
get
{
return _coach;
}
set
{
_coach = value;
}
}
public int CurrentCount
{
get
{
return _currentCount; }
set
{
_currentCount = value;
}
}
public DateTime EntranceDate
{
get
{
return _entranceDate;
}
set
{
_entranceDate = value;
}
}
public string Remark
{
get
{
return _remark;
}
set
{
_remark = value;
}
}
#endregion
//实害?例 化ˉ球ò队ó
public Team(string teamName)
{
_teamName = teamName;
}
public Team()
{
}
public static Team CreateInstance(string teamName) {
Team c = null;
string strSql = "select * from Team where [TeamName] = @teamName ";
SqlCommon sqlcomm = new SqlCommon();
SqlDataReader reader = sqlcomm.ExecuteReader(strSql, new SqlParameter("@teamName", teamName));
if (reader.Read())
{
c = new Team(teamName);
c._coach = reader["Coach"].ToString();
c._currentCount = (Convert.ToInt32(reader["CurrentCount"].ToString()));
c._entranceDate = (DateTime)reader["EntranceDate"];
c._remark = reader["Remark"].ToString();
}
reader.Close();
return c;
}
//得?到?所ù有瓺球ò队ó名?
public static DataTable GetAllTeamName()
{
string strSql = "select TeamName from Team";
SqlCommon sqlcomm = new SqlCommon();
DataSet ds = sqlcomm.CreaDataSet(strSql, null);
return ds.Tables[0];
}
//新?建¨球ò队ó
public static int CreateTeam(string teamName, string coach, DateTime entranceDate, string remark)
{
string strSql = "insert into Team(TeamName,Coach,EntranceDate,Remark) values(@teamName,@coach,@entranceDate,@remark);";
SqlCommon sqlcomm = new SqlCommon();
SqlParameter[] pa = new SqlParameter[4];
pa[0] = new SqlParameter("@TeamName", teamName);
pa[1] = new SqlParameter("@Coach", coach);
pa[2] = new SqlParameter("@EntranceDate", entranceDate);
pa[3] = new SqlParameter("@Remark", remark);
return sqlcomm.ExecuteNonQuery(strSql, pa);
}
//更?新?球ò队ó
public int Update()
{
string strSql = "update Team set [Coach] = @coach,[EntranceDate] =
@entranceDate,[Remark] = @remark where [TeamName] = @teamName";
SqlCommon sqlcomm = new SqlCommon();
return sqlcomm.ExecuteNonQuery(strSql, new SqlParameter("@Coach", this._coach), new SqlParameter("@EntranceDate", this._entranceDate), new SqlParameter("@Remark", this._remark), new SqlParameter("@teamName", _teamName));
}
//删?除y球ò队ó
public int Delete()
{
//删?除y球ò队ó的?同?时骸?删?除y该?班悒?所ù有瓺学§生Θ?记?录?、¢赛a?程ì记?录?、¢战?绩¨记?录?
StringBuilder strSql = new StringBuilder();
strSql.Append("delete from Score where [PlayerNo] in (Select [PlayerNo] from Team where [TeamName] = @teamName) ;");
strSql.Append("delete from Race where [TeamName] = @teamName ;");
strSql.Append("delete from Player where [TeamName] = @teamName ;");
strSql.Append("delete from Team where [TeamName] = @teamName ;");
SqlCommon sqlcomm = new SqlCommon();
return sqlcomm.ExecuteNonQuery(strSql.ToString(), true, false, new SqlParameter("@teamName", _teamName));
}
//检ì查?是?否?有瓺班悒?
public static SqlDataReader IsTeamExists()
{
string strSql = "select * from Team ";
SqlCommon sqlcomm = new SqlCommon();
SqlDataReader reader = sqlcomm.ExecuteReader(strSql, null);
return reader;
}
//检ì查?是?否?有瓺班悒?
public SqlDataReader IsStudentExists()
{
string strSql = "select * from Team where [TeamName] = @teamName and [CurrentCount] > 0 ";
SqlCommon sqlcomm = new SqlCommon();
SqlDataReader reader = sqlcomm.ExecuteReader(strSql, new SqlParameter("@teamName", _teamName));
return reader;
}
//检ì查?球ò队ó名?是?否?已?存?在ú
public static SqlDataReader CheckExists(string teamName)
{
string strSql = "select * from Team where [teamName] = @teamName";
SqlCommon sqlcomm = new SqlCommon();
SqlDataReader reader = sqlcomm.ExecuteReader(strSql, new SqlParameter("@teamName", teamName));
return reader;
}
//得?到?所ù有瓺球ò队ó的?记?录?
public static DataSet FillByAllTeam()
{
string strSql = "select * from Team";
SqlCommon sqlcomm = new SqlCommon();
DataSet ds = sqlcomm.CreaDataSet(strSql, null);
return ds;
}
//获?取?球ò队ó所ù有瓺学§生Θ?的?集ˉ合?
public DataSet FillByAllPlayer()
{
string strSql = "select PlayerNo,PlayerName,Gender,Birthday,Remark from Player where [TeamName] = @teamName";
SqlCommon sqlcomm = new SqlCommon();
DataSet ds = sqlcomm.CreaDataSet(strSql, new SqlParameter("@teamName", _teamName));
return ds;
}
public DataTable GetAllPlayerNo()
{
string strSql = "select PlayerNo from Player where [TeamName] = @teamName";
SqlCommon sqlcomm = new SqlCommon();
DataSet ds = sqlcomm.CreaDataSet(strSql, new SqlParameter("@teamName", _teamName));
return ds.Tables[0];
}
//得?到?指?定¨球ò队ó所ù有瓺赛a?程ì信?息¢的?记?录?
public DataSet FillByAllRace()
{
string strSql = "select MatchName,Coach,BeginDate,FinishDate,Remark from Race where [TeamName] = @teamName";
SqlCommon sqlcomm = new SqlCommon();
DataSet ds = sqlcomm.CreaDataSet(strSql, new SqlParameter("@teamName", _teamName));
return ds;
}
//得?到?指?定¨球ò队ó所ù有瓺赛a?程ì名?称?的?记?录?
public DataSet FillByAllMatchName()
{
string strSql = "select MatchName from Race where [TeamName] = @teamName";
SqlCommon sqlcomm = new SqlCommon();
DataSet ds = sqlcomm.CreaDataSet(strSql, new SqlParameter("@teamName", _teamName));
return ds;
}
//判D断?该?班悒?是?否?已?存?在ú相à应畖赛a?程ì
public SqlDataReader GetDataReaderByMatchName(string matchName)
{
string strSql = "select * from Race where [TeamName] = @teamName and [MatchName] = @matchName ";
SqlCommon sqlcomm = new SqlCommon();
SqlDataReader reader = sqlcomm.ExecuteReader(strSql, new SqlParameter("@teamName", _teamName), new SqlParameter("@matchName", matchName));
return reader;
}
}
}