public void countmoney() { //此方法用于计算用户租赁场地的花销 //获取listview中的开始时间和结束时间,计算时间差。 //用户花的钱 = 时间差*对应场地单价+(违约金) //违约金 = (时间差*对应场地单价)*0.3 //是否需要缴纳违约金看用户的BreakBJ标记是否为YES 为YES,加收,不为YES,不收 //先根据选取的场地id获取对应的场地价格 Yard jiage = new Yard(); chloe_control_all chloe_price = new chloe_control_all("Data Source=DESKTOP-O4C25KM;Initial Catalog=场馆预约系统;Integrated Security=True"); jiage = chloe_price.catchprice(comboBox1.SelectedValue.ToString()); // ()调用的是控件comboBox的值,即场地id double cdprice; cdprice = jiage.Price; //再根据场地id获取对应列的开始时间和结束时间 Start waailu = new Start(); String chalang = Start.CUser; Booking leihou = new Booking(); chloe_control_all chloe_time = new chloe_control_all("Data Source=DESKTOP-O4C25KM;Initial Catalog=场馆预约系统;Integrated Security=True"); leihou = chloe_time.See_BOOK_CD(comboBox1.SelectedValue.ToString()); //开始时间、结束时间、中午、下午(用于计算和转换) String START, EXIT, MID, AFT; START = leihou.OpenTime.ToString(); EXIT = leihou.CloseTime.ToString(); MID = mid; AFT = aft; DateTime dt1 = Convert.ToDateTime(START); DateTime dt2 = Convert.ToDateTime(EXIT); DateTime dt3 = Convert.ToDateTime(MID); DateTime dt4 = Convert.ToDateTime(AFT); TimeSpan ts1 = new TimeSpan(dt1.Ticks); TimeSpan ts2 = new TimeSpan(dt2.Ticks); TimeSpan ts3 = new TimeSpan(dt3.Ticks); TimeSpan ts4 = new TimeSpan(dt4.Ticks); //计算时间差(然后计算两个TimeSpan的差) //时间计算还得区分中午12:00-下午14:00这两个小时的休息时间 //如果选择的开始时间小于等于12:00以及结束的时间大于等于14:00,实际的消费时间为(12:00-开始时间)+ (结束时间-14:00) String ALLtime; //计算出来的时间差 if (DateTime.Compare(dt1, dt3) <= 0 && DateTime.Compare(dt2, dt4) >= 0) { TimeSpan ts5 = ts1.Subtract(ts3).Duration(); //(12:00-开始时间) TimeSpan ts6 = ts2.Subtract(ts4).Duration(); //(结束时间-14:00) TimeSpan ts7 = ts5.Add(ts6).Duration(); //实际的消费时间 double t = ts7.TotalHours / Convert.ToDouble(1); //将TimeSpan转换类型,便于后期计算费用,精确至小数点后两位 double t1 = Convert.ToDouble(t); ALLtime = t1.ToString(); } else { TimeSpan ts = ts1.Subtract(ts2).Duration(); double m = ts.TotalHours / Convert.ToDouble(1); double m1 = Convert.ToDouble(m); ALLtime = m1.ToString(); } //判断用户标记,计算不同的钱 //Visa代表违约用户的总金额 VISA代表正常用户的总金额 //MMMM代表总金额 double Visa, VISA; int BJ_check_result; BJ_check_result = chloe_time.USER_CHECK(chalang); if (BJ_check_result == 0) //用户违约用户,需收取违约金 { Visa = double.Parse(ALLtime) * cdprice * 1.3; MMMM = Visa.ToString(); } else { VISA = double.Parse(ALLtime) * cdprice; MMMM = VISA.ToString(); } }