【C# 重构】—上机

【前言】

今天为大家分享一下,上机的做法,刚开始敲的时候我和小伙伴一起敲的上机,当时刚接触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里面的返回数据,这点是相对其他功能比较难的,一会再写一篇调错的文章。

【C# 重构】-数据库中有很多数据,如何限制返回数据数。(sql语句,限制返回记录条数)

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TGB-Earnest

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值