利用timer控件进行动态下机
之前的代码是:
if (txtType.Text.Trim() == "会员")
{
double consume = consu * Convert.ToDouble(table.Rows[0]["VipRate"]);
txtCash.Text = (Convert.ToDouble(txtCash.Text) - consume).ToString("0.0");
}
这一行:
txtCash.Text = (Convert.ToDouble(txtCash.Text) - consume).ToString("0.0");
若果这样写,算出来的余额不准,每过一段时间就会算一次余额,这样会多减了钱,但是把余额变成固定值就可以解决这个问题。
改正之后的代码:
if (txtType.Text.Trim() == "会员")
{
double consume = consu * Convert.ToDouble(table.Rows[0]["VipRate"]);
txtCash.Text = (Convert.ToDouble(student.Rows[0]["cash"]) - consume).ToString("0.0");
}
将余额变成数据库里面固定的余额即可。
全部代码:
private void timer1_Tick(object sender, EventArgs e)
{
Entity.Basic_Info basicInfo = new Entity.Basic_Info();
basicInfo.Key = "1";
Facade.BasicFacade facade = new Facade.BasicFacade();
DataTable table = facade.SelectBasic(basicInfo);
Entity.Online_Info onlineInfo = new Entity.Online_Info();
onlineInfo.cardno = txtCardno.Text.Trim();
Facade.OnlineFacade fa = new Facade.OnlineFacade();
DataTable ta = fa.Select(onlineInfo);
Entity.Student_Info studentInfo = new Entity.Student_Info();
studentInfo.cardno = txtCardno.Text.ToString().Trim();
Facade.StudentFacade f = new Facade.StudentFacade();
DataTable student = f.SelectStudent(studentInfo);
DateTime t1 = Convert.ToDateTime(txtOnTime.Text.ToString().Trim());//上机时间
DateTime t2 = Convert.ToDateTime(DateTime.Now.ToString());//现在时间
TimeSpan consumetime = t2.Subtract(t1);
Double consu = consumetime.TotalMinutes;//花费的时长
if (txtType.Text.Trim() == "会员")
{
double consume = consu * Convert.ToDouble(table.Rows[0]["VipRate"]);
txtCash.Text = (Convert.ToDouble(student.Rows[0]["cash"]) - consume).ToString("0.0");
}
else
{
double consume = consu * Convert.ToDouble(table.Rows[0]["ComRate"]);
txtCash.Text = (Convert.ToDouble(student.Rows[0]["cash"]) - consume).ToString();
}
if (Convert.ToDouble(txtCash.Text.Trim())==0)
{
MessageBox.Show("余额不足,自动下机");
studentInfo.cash = 0;
DataTable studentt = f.ModifyCash(studentInfo);
this.Close();
}
}