コード例 #1
0
        private static void Main()
        {
            int num = Helpers.ValidateInputAsInt("How many numbers you would like to enter: ");
            List<double> numbers = new List<double>();

            // Fill array with numbers
            for (int i = 0; i < num; i++)
            {
                numbers.Add(Helpers.ValidateInputAsDouble("Enter value " + (i + 1) + ": "));
            }

            // Use of List methods
            Console.WriteLine("Minimal number is : {0}", numbers.Min());
            Console.WriteLine("Maximal number is : {0}", numbers.Max());
            Console.WriteLine("Sum number is : {0}", numbers.Sum());
            Console.WriteLine("Average number is : {0}", numbers.Average());
        }
コード例 #2
0
ファイル: UserController.cs プロジェクト: dalinhuang/loosoft
        /// <summary>
        /// 功能:显示用户电站地图
        /// 描述:根据电站id获取电站的经度纬度
        /// 作者:张月
        /// 时间:2011年3月12日 16:38:08
        /// </summary>
        /// <returns>电站id</returns>
        public ActionResult Map()
        {
            double[] point = { 1960, 980, 490, 245, 120, 60, 30, 15, 7.5, 3.7, 1.90 };
            IList<Plant> plants = UserUtil.getCurUser().plants;
            IList<double> values = new List<double>();
            if (plants.Count > 1)
            {
                for (int i = 1; i < plants.Count; i++)
                {
                    values.Add(GetDistance(plants[0].latitude, plants[0].longitude, plants[i].latitude, plants[i].longitude));
                }
            }
            double max = values.Count > 0 ? values.Max() : 0;
            ViewData["point"] = 2;
            for (int i = point.Length - 1; i >= 0; i--)
            {
                if (point[i] > max / 8)
                {
                    ViewData["point"] = i;
                    break;
                }
            }

            ViewData["plant"] = plants;

            return View();
        }
コード例 #3
0
        public ReturnValueInfo UpdateRechargeRecord(List<RechargeRecord_rcr_Info> listRechargeRecords, decimal fPreCostRecharge)
        {
            ReturnValueInfo rvInfo = new ReturnValueInfo();
            if (listRechargeRecords == null)
            {
                rvInfo.isError = true;
                rvInfo.messageText = Common.DefineConstantValue.SystemMessageText.strMessageText_E_ObjectNull;
                return rvInfo;
            }
            if (listRechargeRecords != null && listRechargeRecords.Count < 1)
            {
                rvInfo.isError = true;
                rvInfo.messageText = "需要更新的充值记录不能为空。";
                return rvInfo;
            }
            try
            {
                using (SIOTSDB_HHZXDataContext db = new SIOTSDB_HHZXDataContext())
                {
                    //用于批量统一插数
                    List<PreConsumeRecord_pcs> listToInsertPreCost = new List<PreConsumeRecord_pcs>();
                    List<CardUserAccountDetail_cuad> listToInsertAccountDetail = new List<CardUserAccountDetail_cuad>();
                    List<SystemAccountDetail_sad> listToInsertSysDetail = new List<SystemAccountDetail_sad>();

                    //获取账户信息
                    CardUserAccount_cua account = db.CardUserAccount_cua.Where(x => x.cua_cCUSID == listRechargeRecords[0].rcr_cUserID).FirstOrDefault();
                    #region 账户信息丢失时,自动创建账户信息

                    if (account == null)
                    {
                        account = new CardUserAccount_cua();
                        account.cua_cRecordID = Guid.NewGuid();
                        account.cua_cCUSID = listRechargeRecords[0].rcr_cUserID;
                        account.cua_cAdd = listRechargeRecords[0].rcr_cLast;
                        account.cua_dAddDate = DateTime.Now;
                        account.cua_dLastSyncTime = DateTime.Now;
                        account.cua_lIsActive = true;
                        account.cua_fCurrentBalance = decimal.Zero;
                        account.cua_fOriginalBalance = decimal.Zero;
                        db.CardUserAccount_cua.InsertOnSubmit(account);
                        db.SubmitChanges();
                    }

                    #endregion

                    //充值总额
                    decimal fSumRecharge = decimal.Zero;

                    //待添加的的用户账户数据
                    List<CardUserAccountDetail_cuad> listUserAccountInfos = new List<CardUserAccountDetail_cuad>();
                    //待添加的系统账户数据
                    List<SystemAccountDetail_sad> listSysAccountInfos = new List<SystemAccountDetail_sad>();
                    //更新已经使用的转账充值记录
                    #region 更新已被充值的转账记录状态为已完成

                    foreach (RechargeRecord_rcr_Info rechargeItem in listRechargeRecords)
                    {
                        RechargeRecord_rcr record = db.RechargeRecord_rcr.Where(x => x.rcr_cRecordID == rechargeItem.rcr_cRecordID).FirstOrDefault();
                        if (record != null)
                        {
                            fSumRecharge += rechargeItem.rcr_fRechargeMoney;

                            record.rcr_cLast = rechargeItem.rcr_cLast;
                            record.rcr_cRechargeType = rechargeItem.rcr_cRechargeType;
                            record.rcr_cStatus = rechargeItem.rcr_cStatus;
                            record.rcr_cUserID = rechargeItem.rcr_cUserID;
                            record.rcr_dLastDate = rechargeItem.rcr_dLastDate;
                            record.rcr_dRechargeTime = rechargeItem.rcr_dRechargeTime;
                            record.rcr_fBalance = rechargeItem.rcr_fBalance;
                            record.rcr_fRechargeMoney = rechargeItem.rcr_fRechargeMoney;

                            //用户账户
                            CardUserAccountDetail_cuad userAccount = new CardUserAccountDetail_cuad();
                            userAccount.cuad_cConsumeID = record.rcr_cRecordID;
                            userAccount.cuad_cCUAID = account.cua_cRecordID;
                            userAccount.cuad_cFlowType = record.rcr_cRechargeType;
                            userAccount.cuad_cOpt = record.rcr_cLast;
                            userAccount.cuad_cRecordID = Guid.NewGuid();
                            userAccount.cuad_dOptTime = DateTime.Now;
                            userAccount.cuad_fFlowMoney = record.rcr_fRechargeMoney;
                            listUserAccountInfos.Add(userAccount);

                            //系统账户
                            SystemAccountDetail_sad sysAccount = new SystemAccountDetail_sad();
                            sysAccount.sad_cConsumeID = record.rcr_cRecordID;
                            sysAccount.sad_cDesc = Common.DefineConstantValue.GetMoneyFlowDesc(record.rcr_cRechargeType);
                            sysAccount.sad_cFLowMoney = record.rcr_fRechargeMoney;
                            sysAccount.sad_cFlowType = record.rcr_cRechargeType;
                            sysAccount.sad_cOpt = record.rcr_cLast;
                            sysAccount.sad_cRecordID = Guid.NewGuid();
                            sysAccount.sad_dOptTime = DateTime.Now;
                            listSysAccountInfos.Add(sysAccount);
                        }
                    }

                    #endregion
                    if (listUserAccountInfos.Count > 0)
                    {
                        //插入由充值记录产生的账户记录
                        listToInsertAccountDetail.AddRange(listUserAccountInfos);
                        listToInsertSysDetail.AddRange(listSysAccountInfos);
                    }

                    //查找用户是否含有预充值记录
                    decimal fAdvance = decimal.Zero;
                    #region 获取用户透支金额

                    List<RechargeRecord_rcr> listAdvance = db.RechargeRecord_rcr.Where(x =>
                        x.rcr_cUserID == listRechargeRecords[0].rcr_cUserID
                        && x.rcr_cRechargeType == Common.DefineConstantValue.ConsumeMoneyFlowType.Recharge_AdvanceMoney.ToString()
                        ).ToList();
                    if (listAdvance != null && listAdvance.Count > 0)
                    {
                        fAdvance = listAdvance.OrderByDescending(x => x.rcr_dRechargeTime).FirstOrDefault().rcr_fRechargeMoney;
                    }

                    #endregion

                    decimal fCurrentBalance = decimal.Zero;
                    //获取本次充值的最后卡余额
                    decimal fCardBalance = listRechargeRecords.Max(x => x.rcr_fBalance);

                    if (Math.Abs(fPreCostRecharge) >= 0 && listRechargeRecords.Count > 0)//若存在需要支付预付款的金额,则进行平数处理
                    {
                        //记录欠款总额
                        decimal fSumPreCost = decimal.Zero;
                        //若预付款还款值大于0,则更新被支付的未结算预付款记录
                        #region 结算预付款项

                        List<PreConsumeRecord_pcs> listPreCost = db.PreConsumeRecord_pcs.Where(x =>
                            x.pcs_lIsSettled == false //需为未支付金额
                            && x.pcs_cAccountID == account.cua_cRecordID //需要账户对口
                            && x.pcs_cUserID == listRechargeRecords[0].rcr_cUserID  //需要对口人员ID
                            ).ToList();

                        //筛选预付款的消费类型
                        listPreCost = filterRecord_CanComputePreCost(listPreCost);

                        fSumPreCost = listPreCost.Sum(x => x.pcs_fCost);
                        if (Math.Abs(fPreCostRecharge) < Math.Abs(fSumPreCost))
                        {
                            db.Transaction.Rollback();
                            db.Connection.Close();
                            rvInfo.messageText = "支付额不足以支付待结算的预付款。";
                            return rvInfo;
                        }

                        List<CardUserAccountDetail_cuad> listPreUserCost = new List<CardUserAccountDetail_cuad>();
                        List<SystemAccountDetail_sad> listPreSysIncome = new List<SystemAccountDetail_sad>();
                        foreach (PreConsumeRecord_pcs preItem in listPreCost)
                        {
                            preItem.pcs_lIsSettled = true;
                            preItem.pcs_dSettleTime = DateTime.Now;

                            //结算的同时插入一条用户账户支出记录
                            CardUserAccountDetail_cuad userAccount = new CardUserAccountDetail_cuad();
                            userAccount.cuad_cRecordID = Guid.NewGuid();
                            userAccount.cuad_cConsumeID = preItem.pcs_cRecordID;
                            userAccount.cuad_cCUAID = account.cua_cRecordID;
                            userAccount.cuad_cFlowType = preItem.pcs_cConsumeType;
                            userAccount.cuad_cOpt = listRechargeRecords[0].rcr_cLast;
                            userAccount.cuad_dOptTime = DateTime.Now;
                            userAccount.cuad_fFlowMoney = preItem.pcs_fCost;
                            listPreUserCost.Add(userAccount);

                            //结算的同时插入一条系统账户收入记录
                            SystemAccountDetail_sad sysAccount = new SystemAccountDetail_sad();
                            sysAccount.sad_cRecordID = Guid.NewGuid();
                            sysAccount.sad_cConsumeID = preItem.pcs_cRecordID;
                            sysAccount.sad_cDesc = Common.DefineConstantValue.GetMoneyFlowDesc(preItem.pcs_cConsumeType);
                            sysAccount.sad_cFLowMoney = preItem.pcs_fCost;
                            sysAccount.sad_cFlowType = preItem.pcs_cConsumeType;
                            sysAccount.sad_cOpt = listRechargeRecords[0].rcr_cLast;
                            sysAccount.sad_dOptTime = DateTime.Now;
                            listPreSysIncome.Add(sysAccount);
                        }

                        if (listPreUserCost.Count > 0)
                        {
                            listToInsertAccountDetail.AddRange(listPreUserCost);
                            listToInsertSysDetail.AddRange(listPreSysIncome);
                        }

                        #endregion

                        //扣减透支额后的卡余额
                        fCardBalance -= fAdvance;
                        //账户余额
                        decimal fAccountUpdate = account.cua_fCurrentBalance + fSumRecharge - fSumPreCost;
                        if (fAccountUpdate > fCardBalance)
                        {
                            #region 平数处理

                            //【系统账户余额】 大于 【卡实际余额】
                            // 新增一条平数的预扣费记录
                            decimal fUnconfirmCost = fAccountUpdate - fCardBalance;
                            PreConsumeRecord_pcs unconfirmRecord = new PreConsumeRecord_pcs();
                            unconfirmRecord.pcs_cAccountID = account.cua_cRecordID;
                            unconfirmRecord.pcs_cAdd = listRechargeRecords[0].rcr_cLast;
                            unconfirmRecord.pcs_cConsumeType = Common.DefineConstantValue.ConsumeMoneyFlowType.HedgeFund.ToString();
                            unconfirmRecord.pcs_cRecordID = Guid.NewGuid();
                            unconfirmRecord.pcs_cUserID = listRechargeRecords[0].rcr_cUserID;
                            unconfirmRecord.pcs_dAddDate = DateTime.Now;
                            unconfirmRecord.pcs_dConsumeDate = DateTime.Now;
                            unconfirmRecord.pcs_fCost = fUnconfirmCost;
                            unconfirmRecord.pcs_lIsSettled = false;
                            listToInsertPreCost.Add(unconfirmRecord);

                            //用户账户
                            CardUserAccountDetail_cuad userAccount = new CardUserAccountDetail_cuad();
                            userAccount.cuad_cConsumeID = unconfirmRecord.pcs_cRecordID;
                            userAccount.cuad_cCUAID = account.cua_cRecordID;
                            userAccount.cuad_cFlowType = unconfirmRecord.pcs_cConsumeType;
                            userAccount.cuad_cOpt = listRechargeRecords[0].rcr_cLast;
                            userAccount.cuad_cRecordID = Guid.NewGuid();
                            userAccount.cuad_dOptTime = DateTime.Now;
                            userAccount.cuad_fFlowMoney = fUnconfirmCost;
                            listToInsertAccountDetail.Add(userAccount);

                            //系统账户
                            SystemAccountDetail_sad sysAccount = new SystemAccountDetail_sad();
                            sysAccount.sad_cConsumeID = unconfirmRecord.pcs_cRecordID;
                            sysAccount.sad_cDesc = Common.DefineConstantValue.GetMoneyFlowDesc(unconfirmRecord.pcs_cConsumeType);
                            sysAccount.sad_cFLowMoney = fUnconfirmCost;
                            sysAccount.sad_cFlowType = unconfirmRecord.pcs_cConsumeType;
                            sysAccount.sad_cOpt = listRechargeRecords[0].rcr_cLast;
                            sysAccount.sad_cRecordID = Guid.NewGuid();
                            sysAccount.sad_dOptTime = DateTime.Now;
                            listToInsertSysDetail.Add(sysAccount);

                            #endregion
                        }
                        fCurrentBalance = fCardBalance;
                    }
                    else
                    {
                        fCurrentBalance = fCardBalance - fAdvance;
                    }

                    db.Connection.Open();
                    db.Transaction = db.Connection.BeginTransaction();

                    try
                    {
                        account.cua_fCurrentBalance = fCurrentBalance;
                        account.cua_dLastSyncTime = DateTime.Now;
                        db.SubmitChanges();

                        db.Transaction.Commit();

                        rvInfo.boolValue = true;
                        return rvInfo;
                    }
                    catch (Exception exx)
                    {
                        db.Transaction.Rollback();
                        db.Connection.Close();
                        throw exx;
                    }
                }
            }
            catch (Exception ex)
            {
                rvInfo.isError = true;
                rvInfo.messageText = ex.Message;
            }
            return rvInfo;
        }
コード例 #4
0
 public double UpperBound()
 {
     int n = this.coefficients.Count-1;
     List<double> candidates = new List<double>(n){1};
     for (int i = n; i > 0; i--) {
         candidates.Add(Math.Abs((coefficients[i] / coefficients[0]) * n));
     }
     return candidates.Max();
 }