C#机房重构之上下机

这次的上下机使用的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();
                }
            }
        }
    }

总结:通过上下机对于方法和函数的调用有了一个更加深刻的认识,同时实现了自动刷新余额在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 33
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值