这次的上下机使用的timer控件,实现了自动计时,自动计算消费,没钱自动下机的功能。
public partial class frmOnOrOffLine : Form
{
public frmOnOrOffLine()
{
InitializeComponent();
}
DateTime TimeNow = new DateTime();
TimeSpan TimeCount = new TimeSpan();
public decimal limitcash;
public static decimal cash;
public string studentname;
public static decimal consumecash;
public DateTime dt;
private void frmOnOrOffLine_Load(object sender, EventArgs e)
{
timer1.Start();//窗体加载时计时器开始工作
inquirystudentcash();
btnOffLine.Enabled = false;
}
private void timer1_Tick(object sender, EventArgs e)
{
lblNow.Text = DateTime.Now.ToLongTimeString ();//将计时器显示的时间显示到label控件“现在时间”中
}
public void OnLine_Click(object sender, EventArgs e)//上机
{
inquirybasicinfo();
inquirystudentcash();
if (cash<limitcash||cash==Convert.ToDecimal (0) )
{
MessageBox.Show("余额不足,请先充值","温馨提示",MessageBoxButtons.OK ,MessageBoxIcon.Information );
return;
}
else
{
insertlineinfo();
MessageBox.Show("上机成功", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
lblOnTime.Text = DateTime.Now.ToLongTimeString();
timer2.Start();
TimeNow = DateTime.Now;
inquirystudentcash();
lblConsumeCash.Text = "0";
OnLine.Enabled = false;
btnOffLine.Enabled = true;
}
}
private void timer2_Tick(object sender, EventArgs e)
{
TimeCount = DateTime.Now - TimeNow;
lblConsumeTime.Text = string.Format("{0:00}:{1:00}:{2:00}", TimeCount.Hours, TimeCount.Minutes, TimeCount.Seconds);//将消费时间显示到控件“消费时间中”
}
public void inquirybasicinfo()//查询基础数据
{
Entity.BasicDataInfo basicDataInfo = new Entity.BasicDataInfo();
Facade.BasicDataFacade faca = new Facade.BasicDataFacade();
DataTable table = faca.InquiryBasicData();//调用查询基础数据方法
lblRate.Text = table.Rows[0][0].ToString();
limitcash =Convert .ToDecimal(table.Rows[0][1].ToString());
}
public void inquirystudentcash()//查询学生余额
{
Entity.StudentInfo student = new Entity.StudentInfo();
Facade.StudentFacade faca = new Facade.StudentFacade();
student.CardNo = Convert.ToInt32(frmLogin .CardNo);
student.State = "使用";
DataTable table = faca.GetStudent(student);//调用查询学生的方法
cash =Convert.ToDecimal (table.Rows[0]["Cash"].ToString());
lblBalance.Text = table.Rows[0]["Cash"].ToString();
studentname = table.Rows[0]["StudentName"].ToString();
}
public void insertlineinfo()//插入上机记录
{
Entity.LineEntity Line = new Entity.LineEntity();
Facade.LineFacade faca = new Facade.LineFacade();
Line.CardNo = Convert.ToInt32(frmLogin.CardNo);
Line.OnDate = Convert .ToDateTime ( DateTime.Now.ToShortDateString ());
Line.OnTime = Convert.ToDateTime(DateTime.Now.ToLongTimeString ());
Line.StudentName = studentname;
Line.LineState = "正在上机";
int lineinfo = faca.InsertLineInfo(Line );
dt = DateTime.Now;
}
private void btnOffLine_Click(object sender, EventArgs e)
{
OffLine();
MessageBox.Show("下机成功","温馨提示",MessageBoxButtons.OK ,MessageBoxIcon.Information );
btnOffLine.Enabled = false;
OnLine.Enabled = true;
}
public void updatelineinfo()//更新下机记录表
{
Entity.LineEntity Line = new Entity.LineEntity();
Facade.LineFacade faca = new Facade.LineFacade();
Line.CardNo = Convert.ToInt32(frmLogin.CardNo);
Line.LineState = "已下机";
Line.Check = "未结账";
Line.OffDate = Convert.ToDateTime(DateTime.Now.ToShortDateString());
Line.OffTime = Convert.ToDateTime(DateTime.Now.ToLongTimeString());
Line.ConsumeTime = Convert.ToInt32 ( TimeCount.Minutes.ToString());
Line.ConsumeCash = consumecash;
Line.Cash = cash;
int lineinfo =faca.UpdateLineInfo (Line);
}
public void updatestudentcash()//更新学生余额
{
Entity.StudentInfo student = new Entity.StudentInfo();
Facade.StudentFacade faca = new Facade.StudentFacade();
student.CardNo = Convert.ToInt32(frmLogin.CardNo);
student.Cash = cash - consumecash;
int studentcash = faca.UpdateStudentCash (student);//调用查询学生的方法
}
public int time;
public void Consumecash()//根据消费时间计算消费金钱
{
//Entity.ChainEntity time = new Entity.ChainEntity();
Facade.ChainFacade faca = new Facade.ChainFacade();
time = TimeCount.Minutes;
consumecash = faca.ConsumeCash(time);
lblConsumeCash.Text = consumecash.ToString();
}
public void OffLine()
{
updatestudentcash();
updatelineinfo();
timer2.Stop();
lblOffTime .Text =DateTime.Now.ToShortTimeString();
inquirystudentcash();
}
private void lblConsumeTime_TextChanged(object sender, EventArgs e)
{
for (int i = 0; i < TimeCount.Minutes ; i++)
{
lblBalance.Text = Convert.ToString ( cash - consumecash);
Consumecash();
if (consumecash >=cash )
{
MessageBox.Show("余额不足,即将自动下机","温馨提示",MessageBoxButtons.OK ,MessageBoxIcon.Information );
OffLine();
}
}
}
}
总结:通过上下机对于方法和函数的调用有了一个更加深刻的认识,同时实现了自动刷新余额