计划
估计此程序需要5-7天。
用户故事:作为一个赛事管理人员,我希望知道每场比赛队伍得分和积分情况,以便给每队进行排名。
.设计复审:
将编写的程序进行生成,进行设计复审。看看是否生成错误,如果错误进行修改。
.代码规范:
利用VS对该程序进行代码规范。
生成文档:
具体编码(部分代码):
App.config:
<configuration> <connectionStrings> <add name="itcast" connectionString="server=.;initial catalog=itcast;integrated security=true;"/> </connectionStrings> </configuration>
SqlHelper类 class SqlHelper
{
private static readonly string constr = ConfigurationManager.ConnectionStrings["itcast"].ConnectionString;
public static int ExecuteNonQuery(string sql, params SqlParameter[] pams)
{
using (SqlConnection conn = new SqlConnection(constr))
{
using (SqlCommand comm = new SqlCommand(sql, conn))
{
if (pams != null)
{
comm.Parameters.AddRange(pams);
}
conn.Open();
return comm.ExecuteNonQuery();
}
}
}
public static DataTable ExecuteDataTable(string sql, params SqlParameter[] pams)
{ DataTable dt = new DataTable();
using (SqlDataAdapter adapter = new SqlDataAdapter(sql, constr))
{
if (pams != null)
{
adapter.SelectCommand.Parameters.AddRange(pams);
}
adapter.Fill(dt);
}
return dt;
}
public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] pams)
{
SqlConnection conn = new SqlConnection(constr);
using (SqlCommand comm = new SqlCommand(sql, conn))
{
if (pams != null)
{
comm.Parameters.AddRange(pams);
}
try
{
conn.Open();
return comm.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
}
catch (Exception)
{
conn.Close();
conn.Dispose();
throw;
}
}
}
public static object ExecuteScalar(string sql, params SqlParameter[] pams)
{
using (SqlConnection conn = new SqlConnection(constr))
{
using (SqlCommand comm = new SqlCommand(sql, conn))
{
if (pams != null)
{
comm.Parameters.AddRange(pams);
}
conn.Open();
return comm.ExecuteScalar();
}
}
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string name = comboBox1.Text.Trim();
StringBuilder sql = new StringBuilder("select * from Info where 1=1");
if (!string.IsNullOrEmpty(name))
{
sql.Append(" and name like ‘%" + name + "%‘");
}
dgv(sql.ToString());
}
private void Form1_Load(object sender, EventArgs e)
{
comb();
dgv();
}
private void dgv(string sql = "select * from Info")
{
dataGridView1.DataSource = SqlHelper.ExecuteDataTable(sql);
}
private void comb()
{
comboBox1.Items.Clear();
comboBox1.Items.Add("请选择队名");
comboBox1.SelectedIndex = 0;
string sql = "select name from Info";
using (SqlDataReader reader = SqlHelper.ExecuteReader(sql))
{
if (reader.HasRows)
{
while (reader.Read())
{
comboBox1.Items.Add(reader[0]);
}
}
}
}
代码复审:和同学对该程序进行讨论,对该程序进行指正。
测试: 对该程序进行自己测试,然后进行修改和提交。
页面如下:
报告
测试报告:经过测试,运行良好;
计算工作量:七天;
事后总结:经过这次用户故事的编写,发现了很多功能的实现难处,对数据的保存还有缺陷,下一步准备把数据库操作这一块好好改进。
原文:http://www.cnblogs.com/zhang123456789/p/6257310.html