【前言】
今天为大家分享一下,上机的做法,刚开始敲的时候我和小伙伴一起敲的上机,当时刚接触C#,感觉和尚摸不到头脑,不够随着时间的投入,慢慢也就了解了。
【过程】
在做上机的过程中,其实还是和第一次机房上机的时候一样,先了解它的流程,根据它的流程,然后敲代码。
敲的时候,我是按照功能敲的,我当时不知道还能按照数据库表敲,等我现在把所有的敲完了,我才知道。敲的时候先敲IDAL层(分析功能)。
IDAL层
DataTable SelectNum(Entity.student_Info student);
//查询上机表卡号
DataTable SelectOnline(Entity.OnlineEntity online);
//访问basicdata表
DataTable SelectBasicdata(Entity.BasicData basic);
//插入上机表信息
int insertOnline(Entity.OnlineEntity online);
//更新卡内余额
int updatecard(Entity.student_Info student);
//添加下机信息
int insertline(Entity.Line_Info line);
//删除上机表信息
int delectOnline(Entity.OnlineEntity online);
DAL层
{
//查询卡表中卡号是否存在
public DataTable SelectNum(Entity.student_Info student)
{
SQLHelper sqlHelper = new SQLHelper();
SqlParameter[] sqlparams = { new SqlParameter("@Cardno", student.cardno) };
string sql = @"select * from [student_Info] Where Cardno=@cardno";
DataTable table = sqlHelper.ExecuteQuery(sql, sqlparams, CommandType.Text);
return table;
}
//查询、更新上机表
public DataTable SelectOnline(Entity.OnlineEntity online)
{
SQLHelper sqlHelper = new SQLHelper();
SqlParameter[] sqlparams = { new SqlParameter("@Cardno", online.cardno) };
string sql = @"select * from [OnLine_Info] where Cardno =@cardno";
DataTable table = sqlHelper.ExecuteQuery(sql, sqlparams, CommandType.Text);
return table;
}
//查询基本数据设定表
public DataTable SelectBasicdata(Entity.BasicData basic)
{
SQLHelper sqlhelper = new SQLHelper();//实例化SQLhelper
//string sql = " select top 1 * from [BasicData_Info]";
SqlParameter[] sqlparams = { new SqlParameter("@Serial", basic.Serial) };
string sql = "SELECT * from [BasicData_Info] where Serial=@Serial"; //设置SQL语句查询
DataTable dt = sqlhelper.ExecuteQuery(sql, sqlparams, CommandType.Text);
//DataTable dt = sqlhelper.ExecuteQuery(sql, CommandType.Text);
return dt;
}
//插入上机表信息
public int insertOnline(Entity.OnlineEntity online)
{
SQLHelper sqlHelper = new SQLHelper();
SqlParameter[] sqlparams =
{
new SqlParameter("@Cardno",online.cardno),
new SqlParameter("@Ontime",online.ontime),
new SqlParameter("@Computer",online.Computer),
new SqlParameter("@studentName",online.studentName),
new SqlParameter("@ondate",online.ondate),
new SqlParameter("@date",online.date)
};
string sql = @"insert into [Online_Info] (cardno,ontime,computer,studentName,ondate,date)values(@Cardno,@Ontime,@Computer,@studentName,@ondate,@date)";
int insertOnline = sqlHelper.ExecuteNonQuery(sql, sqlparams, CommandType.Text);
return insertOnline;
}
//更新卡内余额
public int updatecard(Entity.student_Info student)
{
SQLHelper sqlHelper = new SQLHelper();
SqlParameter[] sqlparams =
{
new SqlParameter("@Cardno",student.cardno),
};
string sql = @"update [student_Info] set cardno=@Cardno";
int res = sqlHelper.ExecuteNonQuery(sql, sqlparams, CommandType.Text);
return res;
}
//插入下机信息
public int insertline(Entity.Line_Info line)
{
SQLHelper sqlHelper = new SQLHelper();
SqlParameter[] sqlparams =
{
new SqlParameter("@Cardno",line.cardno),
new SqlParameter("@Ontime",line.ontime),
new SqlParameter("@Offtime",line.offtime),
new SqlParameter("@Consumetime",line.consumeTime),
new SqlParameter("@Consume",line.consume),
new SqlParameter("@Status",line.status),
new SqlParameter("@Computer",line.computer),
};
string sql = "insert into [Line_Info] (Cardno, ontime, offtime,consumetime,consume,status,computer) values (@Cardno,@Ontime,@Offtime,@Consumetime,@Consume,@status,@computer)";
int lineRes = sqlHelper.ExecuteNonQuery(sql, sqlparams, CommandType.Text);
return lineRes;
}
//删除上机信息
public int delectOnline(Entity.OnlineEntity online)
{
SQLHelper sqlHelper = new SQLHelper();
SqlParameter[] sqlparams =
{
new SqlParameter("@Cardno",online.cardno)
};
string sql = "delete from [online_Info] where cardno =@Cardno";
int res = sqlHelper.ExecuteNonQuery(sql, sqlparams, CommandType.Text);
return res;
}
}
工厂层和其他都一样,就不往上贴了。
public DataTable SelectNum(Entity.student_Info student)
{
Factory.SurfingFactory fact = new Factory.SurfingFactory();
IDAL.SurfingIDAL idal = fact.CreateUser();
DataTable table = idal.SelectNum(student);
return table;
}
//查看onLine中卡号是否存在
public DataTable SelectOnline(Entity.OnlineEntity online)
{
Factory.SurfingFactory fact = new Factory.SurfingFactory();
IDAL.SurfingIDAL idal = fact.CreateUser();
DataTable table = idal.SelectOnline(online);
return table;
}
//查看basicdata表中余额
public DataTable SelectBasicdata(Entity.BasicData basic)
{
Factory.SurfingFactory fact = new Factory.SurfingFactory();
IDAL.SurfingIDAL idal = fact.CreateUser();
DataTable table = idal.SelectBasicdata(basic);
return table;
}
//插入上机信息
public int insertOnline(Entity.OnlineEntity online)
{
Factory.SurfingFactory insertfact = new Factory.SurfingFactory();
IDAL.SurfingIDAL idal = insertfact.CreateUser();
int Res = idal.insertOnline(online);
return Res;
}
//下机时更新学生表中的余额
public int updatecard(Entity.student_Info student)
{
Factory.SurfingFactory fact = new Factory.SurfingFactory();
IDAL.SurfingIDAL idal = fact.CreateUser();
int Res = idal.updatecard(student);
return Res;
}
//下机时添加下机信息
public int insertline(Entity.Line_Info line)
{
Factory.SurfingFactory fact = new Factory.SurfingFactory();
IDAL.SurfingIDAL idal = fact.CreateUser();
int Res = idal.insertline(line);
return Res;
}
//下机时删除上机记录
public int delectOnline(Entity.OnlineEntity online)
{
Factory.SurfingFactory fact = new Factory.SurfingFactory();
IDAL.SurfingIDAL idal = fact.CreateUser();
int Res = idal.delectOnline(online);
return Res;
}
}
外观层也和其他一样,就不贴了。
UI层
#region 查看是否有这个学号
if (txtCardNo.Text.Trim() == " ")
{
MessageBox.Show("请输入学号!", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
//try
//{
//判断卡号在卡表是否存在
Entity.student_Info student = new Entity.student_Info();
Facade.SurfingFacade surfingFacade = new Facade.SurfingFacade();
student.cardno = txtCardNo.Text.Trim();
DataTable table = surfingFacade.SelectNum(student);
if (table.Rows.Count == 0)
{
MessageBox.Show("此卡不存在,请重新输入", "温馨提示");
txtCardNo.Focus();
return;
}
else
{
//判断上机表online表中是否有此卡号
Entity.OnlineEntity onlineEntity = new Entity.OnlineEntity();
Facade.SurfingFacade fact = new Facade.SurfingFacade();
onlineEntity.cardno = txtCardNo.Text.Trim();
DataTable Dtable = fact.SelectOnline(onlineEntity);
if (Dtable.Rows.Count != 0)
{
MessageBox.Show("此卡正在上机", "温馨提示");
}
else
{
//余额是student表中的余额
Entity.student_Info studentNum = new Entity.student_Info();
Facade.SurfingFacade FsurfingFacade = new Facade.SurfingFacade();
string Cashinfo = table.Rows[0]["cash"].ToString();
txtCash.Text = table.Rows[0]["cash"].ToString();
Entity.BasicData basic = new Entity.BasicData();
Facade.SurfingFacade facade = new Facade.SurfingFacade();
basic.Serial = "1";
DataTable basictable = facade.SelectBasicdata(basic);
string basicinfo = basictable.Rows[0][1].ToString();
//doubule双精浮点数,
double cash = Convert.ToDouble(txtCash.Text);
double unitcash = Convert.ToDouble(basicinfo);
if (cash < unitcash)
{
MessageBox.Show("余额不足,请先充值");
return;
}
else
{
Entity.OnlineEntity online = new Entity.OnlineEntity();
Facade.SurfingFacade onlinefact = new Facade.SurfingFacade();
txtOntime.Text = DateTime.Now.ToLongTimeString().ToString();
txtOndate.Text = DateTime.Now.ToShortDateString().ToString();
txtName.Text = table.Rows[0]["studentName"].ToString();
online.cardno = txtCardNo.Text.Trim();
online.ontime = txtOntime.Text.Trim();
online.ondate = txtOndate.Text.Trim();
online.date = DateTime.Now.ToString();
online.Computer = Environment.MachineName;
online.studentName = table.Rows[0]["studentName"].ToString();
int insertOnline = onlinefact.insertOnline(online);
MessageBox.Show("上机成功!", "温馨提示");
}
}
}
【感受】
我感觉这里的难点就是获取BasicData里面的返回数据,这点是相对其他功能比较难的,一会再写一篇调错的文章。