⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 suntools.java

📁 用java实现的酒店管理系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
					 "LodgName", "LodgNumber", "EngaName", "EngaNumber", "ChouName", 
					 "ChouNumber", "[HABITUS]", "Ck_Habitus", "Ck_Minute", "[PARTTIME]", 
					 "In_Room", "Out_Room1", "Out_Room2", "InsuDay", "ClockRoom1", 
					 "ClockRoom2", "InsuHour1", "InsuHour2", "[JDBC]", "DBFname", 
					 "UserID", "Password", "IP", "Access", "[ODBC]", "LinkName" };
		String bt;
		if(type == Number_RZ) {
			bt = sunini.getIniKey ("LodgName");
			sunini.setIniKey ("LodgNumber", num.substring (bt.length () + 8));
		}
		else if(type == Number_YD){
			bt = sunini.getIniKey ("EngaName");
			sunini.setIniKey ("EngaNumber", num.substring (bt.length () + 8));
		} else{
			bt = sunini.getIniKey ("ChouName");
			sunini.setIniKey ("ChouNumber", num.substring (bt.length () + 8));
		}
		//保存到INI文件
		sunini.saveIni (ini);
	}
	
	/**=======================================================================**
	 *		[## public static double getConsumeFactor(String sDate, String eDate) {} ]:		
	 *			参数   :String sDate对象表示开始时间
	 *					 String eDate变量表示结束时间
	 *			返回值 :double
	 *			修饰符 :public static 可以不实例化对象而直接调用方法
	 *			功能   :计算酒店计费天数  按INI文件中设置的
	 **=======================================================================**
	 */
	 //获得消费系数
	public static double getConsumeFactor(String sDate, String eDate) {
		
		//获得开始日期时间的--年--月--日--时--分--秒
		String syh [] = sDate.trim ().split(" ");
		String symd[] = syh[0].trim().split("-");
		String shms[] = syh[1].trim().split(":");
		int sy = Integer.parseInt(symd[0]);
		int sM = Integer.parseInt(symd[1]);
		int sd = Integer.parseInt(symd[2]);
		int sh = Integer.parseInt(shms[0]);
		int sm = Integer.parseInt(shms[1]);
		int ss = Integer.parseInt(shms[2]);
		
		//获得结束日期时间的--年--月--日--时--分--秒
		String eyh [] = eDate.trim ().split(" ");
		String eymd[] = eyh[0].trim().split("-");
		String ehms[] = eyh[1].trim().split(":");
		int ey = Integer.parseInt(eymd[0]);
		int eM = Integer.parseInt(eymd[1]);
		int ed = Integer.parseInt(eymd[2]);
		int eh = Integer.parseInt(ehms[0]);
		int em = Integer.parseInt(ehms[1]);
		int es = Integer.parseInt(ehms[2]);
		
		//获得sDate的long值
		long sdt = new Timestamp(sy, sM, sd, sh, sm, ss, 0).getTime();
		//获得eDate的long值
		long edt = new Timestamp(ey, eM, ed, eh, em, es, 0).getTime();
		
		double db = 0;
		
		if(sdt > edt) {			//不合法	开始日期一定要小于结束日期
			db = -1;
			return db;
		}//Endif
		
		if(sdt == edt) {		//无时间差
			db = 0;
			return db;
		}//Endif
		
		
		int insuDay = (int)(edt - sdt)/3600000;
		if(insuDay < 24) {				//入住不到一天
			if(Integer.parseInt(sunini.getIniKey("InsuDay")) == 1)
				db = 1;					//按全天计费
			else {
				if(insuDay > 1 && insuDay < 12)
					db = 0.5;			//如果不按全天计费,则大于1小时按半天计费
				else
					db = 1;				//如果不按全天计费,则大于12小时按全天计费
			}//Endif
			return db;	
		}//Endif
		
		//几点之后按新的一天计费
		int inRoom = Integer.parseInt(sunini.getIniKey("In_Room"));
		if(sh < inRoom) {
			db = 0.5;
		}//Endif
		sh = inRoom;		//多的时间已经加了系数,去掉多余的
		//几点之后按半天计费
		int outRoom1 = Integer.parseInt(sunini.getIniKey("Out_Room1"));
		int outRoom2 = Integer.parseInt(sunini.getIniKey("Out_Room2"));
		if(eh > outRoom1 && eh < outRoom2) {
			db = db + 0.5;
			eh = outRoom1;	//多的时间已经加了系数,去掉多余的
		}else if(eh >= outRoom2) {
			db = db + 1;
			eh = outRoom2;
		}//Endif
		
		//计算入住时间
		sdt = new Timestamp(sy, sM, sd, sh, sm, ss, 0).getTime();
		edt = new Timestamp(ey, eM, ed, eh, em, es, 0).getTime();
		
		db = db + (edt - sdt)/86400000;
		return db;
	}
	
	/**=======================================================================**
	 *		[## public static double getClockFactor(String sDate, String eDate) {} ]:		
	 *			参数   :String sDate对象表示开始时间
	 *					 String eDate变量表示结束时间
	 *			返回值 :double
	 *			修饰符 :public static 可以不实例化对象而直接调用方法
	 *			功能   :计算酒店钟点房计费系数  按INI文件中设置的
	 **=======================================================================**
	 */
	public static double getClockFactor(String sDate, String eDate) {
		
		//获得开始日期时间的--年--月--日--时--分--秒
		String syh [] = sDate.trim ().split(" ");
		String symd[] = syh[0].trim().split("-");
		String shms[] = syh[1].trim().split(":");
		int sy = Integer.parseInt(symd[0]);
		int sM = Integer.parseInt(symd[1]);
		int sd = Integer.parseInt(symd[2]);
		int sh = Integer.parseInt(shms[0]);
		int sm = Integer.parseInt(shms[1]);
		int ss = Integer.parseInt(shms[2]);
		
		//获得结束日期时间的--年--月--日--时--分--秒
		String eyh [] = eDate.trim ().split(" ");
		String eymd[] = eyh[0].trim().split("-");
		String ehms[] = eyh[1].trim().split(":");
		int ey = Integer.parseInt(eymd[0]);
		int eM = Integer.parseInt(eymd[1]);
		int ed = Integer.parseInt(eymd[2]);
		int eh = Integer.parseInt(ehms[0]);
		int em = Integer.parseInt(ehms[1]);
		int es = Integer.parseInt(ehms[2]);
		
		//获得sDate的long值
		long sdt = new Timestamp(sy, sM, sd, sh, sm, ss, 0).getTime();
		//获得eDate的long值
		long edt = new Timestamp(ey, eM, ed, eh, em, es, 0).getTime();
		//获得时间差
		
		double db = 0;
		
		if(sdt > edt) {			//不合法	开始日期一定要小于结束日期
			db = -1;
			return db;
		}//Endif
		
		//获得两个时间之间有多少秒
		edt = (edt - sdt) / 1000;
		//--------------------------------------------------------------------//
		if(edt <= 60 * Integer.parseInt(sunini.getIniKey("ClockRoom1"))) {
			db = 0;				//开房后几分钟开始计费,读INI文件设置
			return db;
		}//Endif
		//--------------------------------------------------------------------//
		if(edt / 60 < 60 * Integer.parseInt(sunini.getIniKey("ClockRoom2"))) {
			db = 1;				//不足几小时按一个单位计费
			return db;
		}//Endif
		//--------------------------------------------------------------------//
		
		//除以上可能的正常计费公式如下
		db = edt / 3600;				//获得过去的小时数
		
		edt = edt % 3600 / 60;			//获得多余的分钟数
		
		if(edt > Integer.parseInt(sunini.getIniKey("InsuHour2")) && edt <= Integer.parseInt(sunini.getIniKey("InsuHour1"))) {
			db = db + 0.5;				//超过多少分,但小于多少分部分,收半价
		}else if(edt > Integer.parseInt(sunini.getIniKey("InsuHour2"))) {
			db = db + 1;				//超过多少分的,收全价
		}//Endif
		//--------------------------------------------------------------------//
		
		return db;
	}
	
	
	/**=======================================================================**
	 *		[## public static String getConsumeHour(String sDate, String eDate) {} ]:		
	 *			参数   :String sDate对象表示开始时间
	 *					 String eDate变量表示结束时间
	 *			返回值 :String
	 *			修饰符 :public static 可以不实例化对象而直接调用方法
	 *			功能   :计算两个时间之间有几小时几分
	 **=======================================================================**
	 */
	public static String getConsumeHour(String sDate, String eDate) {
		
		//获得开始日期时间的--年--月--日--时--分--秒
		String syh [] = sDate.trim ().split(" ");
		String symd[] = syh[0].trim().split("-");
		String shms[] = syh[1].trim().split(":");
		int sy = Integer.parseInt(symd[0]);
		int sM = Integer.parseInt(symd[1]);
		int sd = Integer.parseInt(symd[2]);
		int sh = Integer.parseInt(shms[0]);
		int sm = Integer.parseInt(shms[1]);
		int ss = Integer.parseInt(shms[2]);
		
		//获得结束日期时间的--年--月--日--时--分--秒
		String eyh [] = eDate.trim ().split(" ");
		String eymd[] = eyh[0].trim().split("-");
		String ehms[] = eyh[1].trim().split(":");
		int ey = Integer.parseInt(eymd[0]);
		int eM = Integer.parseInt(eymd[1]);
		int ed = Integer.parseInt(eymd[2]);
		int eh = Integer.parseInt(ehms[0]);
		int em = Integer.parseInt(ehms[1]);
		int es = Integer.parseInt(ehms[2]);
		
		//获得sDate的long值
		long sdt = new Timestamp(sy, sM, sd, sh, sm, ss, 0).getTime();
		//获得eDate的long值
		long edt = new Timestamp(ey, eM, ed, eh, em, es, 0).getTime();
		//获得时间差
		sdt = edt - sdt;
		
		//生成过去多少时间的字符串
		String t = sdt / 3600000 + "小时" + sdt % 3600000 / 60000 + "分";
		
		return t;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -