/// <summary>
 /// 向正在上机表插入学生信息
 /// </summary>
 /// <param name="studentOnLien"></param>
 /// <returns></returns>
 private int InserStudentOnlien(StudentOnLine studentOnLien)
 {
     //调用接口实例化,D层查询类
     LoginIDAL idal = (LoginIDAL)fact.CreateUser("LoginDal");
     //接收接口的返回值
     int Result =idal.InsertStudentOnLie(studentOnLien);
     return Result;
 }
        /// <summary>
        /// 查询正在上机学生信息
        /// </summary>
        /// <param name="StudentOnlien">正在上机学生实体</param>
        /// <returns></returns>
        public DataTable SelectOnLineStudent(StudentOnLine StudentOnlien)
        {
            //定义参数
            SqlParameter[] sqlParms = { new SqlParameter("@StudentCardno", StudentOnlien.StudentCardno) };
            //定义SQL语句
            string sql = @"select * from OnLineStudent where StudentCardno=@StudentCardno";
            //接受查询结果
            DataTable OnlietTable = sqlHelper.ExecuteQuery(sql, sqlParms, CommandType.Text);

            return(OnlietTable);//返回结果
        }
        /// <summary>
        /// 删除正在上机记录
        /// </summary>
        /// <param name="StudentOnlien">正在上机实体</param>
        /// <returns>受影响行数</returns>
        public int DeleteOnLineStudent(StudentOnLine StudentOnlien)
        {
            //定义参数
            SqlParameter[] sqlParms = { new SqlParameter("@StudentCardno", StudentOnlien.StudentCardno) };
            //定义SQL语句
            string sql = @"delete OnLineStudent where StudentCardno=@StudentCardno";
            //接受查询结果
            int Relust = sqlHelper.ExecuteNonQuery(sql, sqlParms, CommandType.Text);

            return(Relust);//返回结果
        }
Пример #4
0
        /// <summary>
        /// 向正在上机学生表插入信息
        /// </summary>
        /// <param name="StudentOnlies">学生上机实体</param>
        /// <returns>返回整个表信息</returns>
        public int InsertStudentOnLie(StudentOnLine StudentOnlies)
        {
            //定义参数
            SqlParameter[] sqlparams = { new SqlParameter("@StudentCardno", StudentOnlies.StudentCardno),
                                         new SqlParameter("@StudentLevel",  StudentOnlies.StudentLevel),
                                         new SqlParameter("@NowCash",       StudentOnlies.NowCash),
                                         new SqlParameter("@OnDate",        StudentOnlies.OnDate),
                                         new SqlParameter("@OnTime",        StudentOnlies.OnTime),
                                         new SqlParameter("@Computer",      StudentOnlies.Computer) };
            //定义SQL语句
            string sql = @"insert into OnLineStudent values(@StudentCardno,@StudentLevel,@NowCash,@OnDate,@OnTime,@Computer)";
            //接受受影响的行数
            int Relust = sqlHelper.ExecuteNonQuery(sql, sqlparams, CommandType.Text);

            //返回收影响的行数
            return(Relust);
        }
Пример #5
0
        /// <summary>
        /// 学生上机状态查询
        /// </summary>
        /// <param name="Cardno">卡号</param>
        /// <param name="form">学生窗体</param>
        /// <returns></returns>
        public void StudnetOnLineState(string Cardno, Form form)
        {
            //转成实体
            StudentOnLine stuOnline = new StudentOnLine();

            stuOnline.StudentCardno = int.Parse(Cardno);
            //利用接口和工厂实例化具体的查询正在上机状态的数据类
            StudentOnLineStateIDAL studentlineStateIDAL = (StudentOnLineStateIDAL)fact.CreateUser("StudentOnLineStateDAL");
            DataTable SelectOnlineStudnetTable          = studentlineStateIDAL.StudnetOnLineState(stuOnline);//获取上机表此学生上机信息

            //判断学生上机状态
            if (SelectOnlineStudnetTable.Rows.Count == 0)//说明已经被强制下机
            {
                //关闭学生窗体
                form.Close();
                //显示登录窗体
                Form forlogin = factUi.CreatFrom("LoginUser");
                forlogin.Show();
            }
        }
        /// <summary>
        /// 学生下机
        /// </summary>
        /// <param name="StuentCardno">学生卡号</param>
        /// <param name="TimeSolt">上机时长</param>
        /// <returns></returns>
        public void LoginOutStudent(string StuentCardno, string stuName)
        {
            #region 实例化退出工厂
            //使用工厂实例化接口
            LoginOutStudentIDAL idal           = (LoginOutStudentIDAL)fact.CreateUser("LoginOutStudentDAL");
            DataTable           BasitInfoTable = idal.SelectBasit();         //获取基础信息
            //获取正在上机的卡号信息
            StudentOnLine studentOnline = new StudentOnLine();               //实例化正在上机实体
            studentOnline.StudentCardno = int.Parse(StuentCardno);           //给卡号赋值
            DataTable OnlineTable = idal.SelectOnLineStudent(studentOnline); //获取正在上机的卡号信息
            #endregion
            #region 计算上机时长
            double LimTime = double.Parse(BasitInfoTable.Rows[0][2].ToString());                             //给最小上机时间赋值
            //获取上机日期+时间
            string LoginData     = DateTime.Parse(OnlineTable.Rows[0][3].ToString()).ToString("yyyy/MM/dd"); //获取上机日期
            string LoginTime     = DateTime.Parse(OnlineTable.Rows[0][4].ToString()).ToShortTimeString();    //获取上机时间
            string LoginDateTime = LoginData + " " + LoginTime;                                              //合并上机日期+时间
            //获取下机日期+时间
            string LoginOutData     = DateTime.Parse(DateTime.Now.Date.ToString()).ToString("yyyy/MM/dd");   //获取上机日期
            string LoginOutTime     = DateTime.Now.ToShortTimeString();                                      //获取上机时间
            string LoginOutDateTime = LoginOutData + " " + LoginOutTime;                                     //合并上机日期+时间
            //公式:下机日期和时间-上机日期和时间=上机时长
            TimeSpan TimeSolt = DateTime.Parse(LoginOutDateTime) - DateTime.Parse(LoginDateTime);
            #endregion
            #region 计算消费金额
            string stuentType = OnlineTable.Rows[0][1].ToString(); //给卡号类型赋值
            double Cash       = 0;                                 //收费标准
            //给收费标准赋值
            if (stuentType == "固定用户")
            {
                Cash = double.Parse(BasitInfoTable.Rows[0][3].ToString());//给固定用户收费标准赋值
            }
            else if (stuentType == "临时用户")
            {
                Cash = double.Parse(BasitInfoTable.Rows[0][4].ToString());//给临时用户收费标准赋值
            }//end if
            //实例化策略模式,传入卡号类型和对应的收费标准。
            Cash.StuCashContext stuCashContext = new Cash.StuCashContext(stuentType, Cash);
            //传入:消费时长和最小上机时间,得到消费金额
            double Money = stuCashContext.GetResult(TimeSolt.ToString(), LimTime);
            #endregion
            //计算目前余额:公式:上机前余额-消费金额=当前余额
            double NowCsh = double.Parse(OnlineTable.Rows[0][2].ToString()) - Money;
            #region 更新学生上机记录
            //给上机记录实体赋值,和实例化
            #region 给上机记录实体赋值
            StudentLien StuLine = new StudentLien();
            StuLine.Computer        = Computer.GetMachineName();                         //计算机名称
            StuLine.ConsumptionCash = Money;                                             //消费金额
            StuLine.NowCash         = NowCsh;                                            //目前余额
            StuLine.OnDate          = DateTime.Parse(OnlineTable.Rows[0][3].ToString()); //上机日期
            StuLine.OnLineMin       = TimeSolt.ToString();                               //在线时长
            StuLine.OnTime          = OnlineTable.Rows[0][4].ToString();                 //上机时间
            StuLine.StudentCardno   = int.Parse(OnlineTable.Rows[0][0].ToString());      //卡号
            StuLine.StudentLevel    = OnlineTable.Rows[0][1].ToString();                 //用户类型
            StuLine.StudentNam      = stuName;                                           //用户姓名 问题:正在上机表设计不合理,无法得到用户姓名。
            StuLine.UpDate          = DateTime.Now.Date;                                 //下机日期
            StuLine.UpTime          = DateTime.Now.ToShortTimeString();                  //下机时间
            #endregion
            //向上机记录插入信息
            idal.InsertLineStudent(StuLine);
            #endregion
            //更新卡号状态和目前余额
            RegistrationCardno stuCardno = new RegistrationCardno();
            stuCardno.StudentCardno  = StuLine.StudentCardno;//给卡号赋值
            stuCardno.Studentbalance = NowCsh;
            stuCardno.State          = "未激活";
            idal.UpdateRegiCardno(stuCardno);

            //删除在线学生信息
            idal.DeleteOnLineStudent(studentOnline);
            //实例化登录窗体
            Form CreatLoginForm = CreatfactForm.CreatFrom("LoginUser"); //实例化学生窗体
            CreatLoginForm.Show();                                      //显示登录窗体
        }
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="userlevel">用户</param>
        /// <returns>是否上机成功!</returns>
        public override string UserLogin(UserLevel userlevel,Form form)
        {
            #region 实例化与赋值
            string StrMsg="";//要返回的信息
            LoginIDAL idal = (LoginIDAL)fact.CreateUser("LoginDal"); //调用接口实例化,D层查询类
            RegistrationCardno RegisCardno = new RegistrationCardno(); //实例化实体
            RegisCardno.StudentCardno = userlevel.UserID;//给卡号赋值                                          
            #endregion
            DataTable StuCardnoTable = idal.SelectStuCardno(RegisCardno);//接受卡号信息
            RegisCardno.Studentbalance = double.Parse(StuCardnoTable.Rows[0][1].ToString());//给余额赋值
            DataTable BasitInfoTable = idal.SelectBasitInfo();//接受基础信息
            #region 判断卡号状态
            //判断卡号状态
            if (StuCardnoTable.Rows[0][4].ToString()=="已激活")
            {
                //判断余额是否充足
                if (RegisCardno.Studentbalance >=double.Parse(BasitInfoTable.Rows[0][0].ToString()))
                {
                    //实例化上机表实体与赋值
                    StudentOnLine stuOnLine = new StudentOnLine();
                    stuOnLine.StudentCardno = userlevel.UserID;//给卡号赋值
                    //获取上机表信息
                    DataTable OnWorkTable = idal.SelectOnStudent(stuOnLine);
                    //查询卡号是否已经登录
                    if (OnWorkTable.Rows.Count==0)//没有登录
                    {
                        form.Hide();//隐藏窗体
                      
                        #region 给上机实体赋值
                        stuOnLine.StudentLevel = StuCardnoTable.Rows[0][3].ToString();//卡号类型赋值
                        stuOnLine.OnDate = DateTime.Now.Date;//上机日期
                        stuOnLine.OnTime = DateTime.Now.ToShortTimeString();//上机时间
                        stuOnLine.NowCash =RegisCardno.Studentbalance;//当前余额
                        stuOnLine.Computer = Computer.GetMachineName();//电脑名称
                        #endregion
                        InserStudentOnlien(stuOnLine);//向上机表插入信息
                        UserLevel.UserIdall = userlevel.UserID; //给全局ID赋值
                        StrMsg = "上机成功!";
                        Form CreatForm = CreatfactForm.CreatFrom("StudentMain");//实例化学生窗体
                        CreatForm.Show();//显示窗体
                        
                    }
                    else
                    {
                        StrMsg = "此卡号已登录!";
                    }//end if
                   
                }
                else
                {
                    StrMsg = "余额不足,请充值";
                }//end if


            }
            else
            {
                StrMsg = "此卡号未激活,请激活使用!";
            }//end if
            #endregion
            return StrMsg;//返回登录信息    
        }