版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、西彼科技有限责任公司参考源码酒店管理系统彼岸2011-03-31本段源代码,参考与阳光酒店管理系统编写的系统包Sunsdk 包1) System 包CsHashtable.java/* (#)CsHashtable.java 1.24 03/12/19* public class* Copyright 2006 CazoSoft, Inc. All rights reserved.*/ package sunsdk.system;import java.util.*;/* <code> CsHashtable </code>* <p>*该类的作用是封装哈希表
2、* <p>* <strong杜意:</strong>本类使用的哈希表方法 put,可能存在不安全因素* <p>* 相关类:Hashtable* author 鲜强* version 2006.3.28 22:18* see java.util.Hashtable* since CAZOSOFT 1.0*/public class CsHashtable /*静态变量 功能:构造一个hashtable供其他函数使用*/private static Hashtable hTable = new Hashtable();*构造函数功能:构造函数为静态的不能创
3、建对象*/private CsHashtable() /*放入对象函数功能:把对象放入哈希表,对象为Object类型* param key :* 键值,Object对象* param value :* 对象,Object对象*/public static void put(Object key, Object value) hTable.put(key, value);/*返回对象函数 功能:从哈希表中取出对象,返回为Object类型 * param key :* 键值* return : 个 Object 对象*/public static Object get(Object key) re
4、turn hTable.get(key);/*返回大小函数 功能:返回哈希表的大小* return : 一个int哈希表长度值*/public static int size() (return hTable.size();/*移除一个对象* param key :接受一个要移除的键值*/public static Object remove(Object key) return hTable.remove(key);/*Sunini.java57*#项目名公司名模块名文件名相关文件文件实现功能作者版本SunshineSOFT对于INI文件的相关操作sunini.javaconfig.ini读
5、取和保存INI文件顾俊1.1备注 :修改记录 :日期版本修改人修改内容2006/03/311.0顾俊创建2006/04/061.1顾俊修改读取函数#*版权所有(c) 2006-2007, SunshineSOFT Corporation #函数说明 # private sunini() :功能:构造函数# public static String getIniKey (String k) :功能:获得INI文件中的指定键的键值# public static void setIniKey (String k, String v) :功能:设置k键的键值为v对象# public static vo
6、id saveIni (String k) :功能:将k字符数组中所有键所对应的键值保存到INI文件中遗留问题 :setIniKey (肉法不能处理键值中的转义字符*#*/ package com.sunshine.sunsdk.system;import java.util.*;import java.io.*;public class sunini (private static Properties ini = null;static ( try (ini = new Properties ();ini.load (new FileInputStream ("config.in
7、i");catch (Exception ex) (System.out.println ("Load CONFIG.INI is false!");/End try/*# private sunini() (:构造函数*参数 :无返回值:无修饰符 :private功能:防止实例化sunini对象*/private sunini() (/*,*# public static String getIniKey (String k) :*参数 :String对象表示键返回值:String对象表示k键所对应的键值,如果失败则返回空串修饰符:public static可以
8、不实例化对象而直接调用方法功能 :获得INI文件中的指定键的键值*=*/public static String getIniKey (String k) if(!ini.containsKey (k) / 是否有 k 这个键System.out.println ("The " + k + " Key is not exist!");return ""/End if(!ini.containsKey (k) return ini.get (k).toString ();/*,*# public static void setIniKe
9、y (String k, String v) :*参数 :String k对象表示键,String v对象表示键值返回值:无修饰符:public static可以不实例化对象而直接调用方法 功能:设置k键的键值为v对象*,*/public static void setIniKey (String k, String v) if(!ini.containsKey (k) / 是否有 k 这个键System.out.println ("The " + k + " Key is not exist!");return;/End if(!ini.contain
10、sKey (k)ini.put (k, v);*/*# public static void saveIni (String k) :*参数 :String kf符串数组表示要保存的所有键返回值:无修饰符:public static可以不实例化对象而直接调用方法功能 :将k字符数组中所有键所对应的键值保存到INI文件中*/public static void saveIni (String k) try FileWriter fw = new FileWriter ("config.ini");BufferedWriter bw = new BufferedWriter (
11、 fw );/循环变量i是k字符串数组的下标for (int i = 0; i < k.length; i+) bw.write (ki + "=" + getIniKey (ki);bw.newLine ();/End for bw.close ();fw.close ();catch (Exception ex) System.out.println ("Save CONFIG.INI is false."); /End trySuntools.java/函数说明* # private suntools () :* 功能:防止实例化suntoo
12、ls对象* # public static boolean isDate (String date) :* 功能:判断日期字符串是否合法函数* # public static boolean isNum (String in) : #A * 功能:测试字符串是否由数字(0-9)组成*#*项目名公司名模块名文件名相关文件文件实现功能作者版本SunshineSOFT工具函数suntools.java测试数据是否合法及流水号自动分配顾俊1.2备注 :修改记录 :日期版本修改人修改内容2006/04/071.0顾俊建立isDate()函数2006/04/081.1顾俊添加函数 #A, #B, #C,
13、#D2006/04/081.2顾俊添加函数 #E, #F, #G#版权所有(c) 2006-2007, SunshineSOFT Corporation #* # public static boolean isNum (String in, int length, double min, double max) () : #B* 功能:测试字符串表示的数值及范围,且字符串只能是数字组成* # public static String getNumber (int type) ( #C* 功能:自动分配单据编号,自动递增 * # public static void savNumber (St
14、ring num, int type) ( : #D* 功能:将已用编号保存到INI文件* # public static double getConsumeFactor(String sDate, String eDate) ( : #E* 功能:计算酒店计费夭数按INI文件中设置的* # public static double getClockFactor(String sDate, String eDate) ( : #F* 功能:计算酒店钟点房计费系数按INI文件中设置的* # public static String getConsumeHour(String sDate, Str
15、ing eDate) ( : #G* 功能:计算两个时间之间有几小时几分* 遗留问题:*# */package com.sunshine.sunsdk.system;import java.util.*;import java.text.*;import java.sql.*;import com.sunshine.sunsdk.sql.*;public class suntools (public static final int Number_RZ = 0;/ 表示销售单号public static final int Number_YD = 1;/ 表示进货单号,*public stat
16、ic final int Number_JS = 1;/ 表示进货单号/*# private suntools () (:构造函数返回值:无修饰符 :private功能 :防止实例化suntools对象*/private suntools () (/*,*# public static boolean isDate (String date) (:*参数 :String对象表示日期的字符串返回值 :boolean合法返回 true修饰符:public static可以不实例化对象而直接调用方法 功能:判断日期字符串是否合法函数*=*/ public static boolean isDate
17、(String date) ( SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss"); String isdate = date; if(date.length() = 10)/如果只有日期,函数自动加上00:00:00isdate = date + " 00:00:00"try ( sdf.parse (isdate); return true;catch (Exception ex) ( System.out.println ("feetools.isDate
18、(): The DATE format is error ."); return false;/*# public static boolean isNum (String in) (:*,*参数 :String对象表示被测字符串返回值 :boolean合法返回 true修饰符:public static可以不实例化对象而直接调用方法功能:测试字符串是否由数字(0-9)组成,*/public static boolean isNum (String in) (return isNum (in, 0, 0, 0);/*:*时*# public static boolean isNum
19、(String in, int length, double min, double max)参数 :String对象表示被测字符串length变量表示字符串最大长度,取值 0,表示没有长度限定min,max变量限定了 String对象表示的数值范围,当(length > 0)返回值 :boolean合法返回 true修饰符:public static可以不实例化对象而直接调用方法功能 :测试字符串表示的数值及范围,且字符串只能是数字组成,*/public static boolean isNum (String in, int length, double min, double ma
20、x) String num = in;int point = 0;/'.'的个数int len = num.length ();if(length > 0) if(len > length | len = 0) /判断字符串长度,不合法空返回false System.out.println ("suntools.isNum(): Length error."); return false;/Endif/End if(length > 0) elseif(len = 0) 判断字符串是否为空 ,空返回falseSystem.out.print
21、ln ("suntools.isNum(): String is NULL"); return false;/End if(len = 0)for (int i = len - 1; i >=0; i-) /判断字符串只能是数字char ac = num.charAt (i);if(ac = '.' && point = 0 && i!= 0) /如果是'.'字符,且是第一次出现,且不 是只有一个点if(i > len - 4) /判断小数位只能是两位point+; continue;/Endif/
22、Endifif(ac < '0' | ac > '9' ) System.out.println ("suntools.isNum(): Character isn't ( '0' - '9')"); return false;/Endif/Endforif(length !=0) (double s = Double.parseDouble (num); / 现在 len 为字符串表示的数值if(s < min | s >max) (/ 限制范围 min-max 之间Syste
23、m.out.println ("suntools.isNum(): Amount limit error.");return false;/Endif/End if(length != 0)return true;*/*# public static String getNumber (int type) (:*参数 :int变量表示要获得什么类型的单号(见类头常量)返回值:String对象:单号;修饰符:public static可以不实例化对象而直接调用方法功能:自动分配单据编号,自动递增*/public static String getNumber (int typ
24、e) (GregorianCalendar gc = new GregorianCalendar();String tp, number, month, day;单号标头,单号记数位,为月份,为天int numLen = 0;/单号的默认位数if(type = Number_RZ) / 要获取销售单号tp = sunini.getIniKey ("LodgName");number = sunini.getIniKey ("LodgNumber");else if(type = Number_YD)/ 要获取进货单号tp = sunini.getIniK
25、ey ("EngaName");number = sunini.getIniKey ("EngaNumber");else tp = sunini.getIniKey ("ChouName");number = sunini.getIniKey ("ChouNumber");numLen = number.length ();/得到单号的默认位数number = Integer.parseInt (number) + 1 + ""/ 将单号增 1,再转成字符串判断记数号是否超位(超出要求长度)
26、if(number.equals (int)Math.pow (10, numLen - 1) + "") && number.length() > 1)number = number.substring(l);/单号记数位清零/for循环,用'0'为number补位(i =当前号码位数,i < numLen) for (int i = number.length (); i < numLen; i+) (number = "0" + number;/Endfor/为月份补'0'month
27、 = gc.get (GregorianCalendar.MONTH) + 1 + ""if( month.length() = 1)month = "0" + month;/为天补'0'day = gc.get (GregorianCalendar.DAY_OF_MONTH) + ""if( day.length () = 1)day = "0" + day;/连接单号标头,日期,记数位;组成单据号码return tp;/返回单号/*# public static void savNumber (
28、String num, int type) (:参数 :String对象表示要保存的单号int变量表示要保存什么类型的单号(见类头常量)返回值:无修饰符:public static可以不实例化对象而直接调用方法功能:将已用编号保存到INI文件*,*tp = tp + gc.get (GregorianCalendar.YEAR) + month + day + number;*/public static void savNumber (String num, int type) (/INI文件中的键名String ini口 = "SOFTINFO", "User
29、Name", "CompName", "CONFIG", "Soft_First","Default_Link" , "Default_Page", "Sys_style", "NUMBER", "LodgName", "LodgNumber", "EngaName", "EngaNumber",ChouName",ChouNumber", &qu
30、ot;HABITUS", "Ck_Habitus", "Ck_Minute","PARTTIME",In_Room", "Out_Room1", "Out_Room2", "InsuDay", "ClockRoom1", ClockRoom2", "InsuHour1", "InsuHour2", "JDBC", "DBFname","U
31、serID", "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.
32、getIniKey ("EngaName");sunini.setIniKey ("EngaNumber", num.substring (bt.length () + 8); elsebt = sunini.getIniKey ("ChouName");sunini.setIniKey ("ChouNumber", num.substring (bt.length () + 8);保存到INI文件sunini.saveIni (ini);*/*# public static double getConsumeFa
33、ctor(String sDate, String eDate) :返回值修饰符功能String sDate对象表示开始时间String eDate变量表示结束时间 doublepublic static可以不实例化对象而直接调用方法计算酒店计费夭数按INI文件中设置的*,*/获得消费系数public static double getConsumeFactor(String sDate, String eDate) /获得开始日期时间的-年-月-日-时-分-#String syh = sDate.trim ().split(" ");String symd口 = syh0
34、.trim().split("-");String shms口 = syh1.trim().split(":");int sy = Integer.parseInt(symd0);int sM = Integer.parseInt(symd1);int sd = Integer.parseInt(symd2);int sh = Integer.parseInt(shms0);int sm = Integer.parseInt(shms1);int ss = Integer.parseInt(shms2);/获得结束日期时间的-年-月-日-时-分-#Str
35、ing eyh = eDate.trim ().split(" ");String eymd = eyh0.trim().split("-"); String ehms口 = eyh1.trim().split(":"); int ey = Integer.parseInt(eymd0); int eM = Integer.parseInt(eymd1); int ed = Integer.parseInt(eymd2); int eh = Integer.parseInt(ehms0); int em = Integer.parse
36、Int(ehms1); int es = Integer.parseInt(ehms2);/获得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;/Endifif(sdt = edt) / 无时间差db = 0;
37、 return db;/Endifint 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小时按半天计费elsedb = 1;/如果不按全天计费,则大于 12小时按全天计费/Endif return db;/Endif/几点之
38、后按新的一天计费int inRoom = Integer.parseInt(sunini.getIniKey("In_Room"); if(sh < inRoom) db = 0.5;/Endifsh = inRoom;多的时间已经加了系数,去掉多余的/几点之后按半天计费int outRooml = Integer.parseInt(sunini.getIniKey("Out_Room1");int outRoom2 = Integer.parseInt(sunini.getIniKey("Out_Room2”); if(eh >
39、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; retur
40、n 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 ()
41、.split("");String symd口 = syh0.trim().split("-");String shms口 = syh1.trim().split(":");int sy = Integer.parseInt(symd0);int sM = Integer.parseInt(symd1);int sd = Integer.parseInt(symd2);int sh = Integer.parseInt(shms0);int sm = Integer.parseInt(shms1);int ss = Integer.p
42、arseInt(shms2);/获得结束日期时间的-年-月-日-时-分-#String eyh 口 = eDate.trim ().split("");String eymd口 = eyh0.trim().split("-");String ehms口 = eyh1.trim().split(":");int ey = Integer.parseInt(eymd0);int eM = Integer.parseInt(eymd1);int ed = Integer.parseInt(eymd2);int eh = Integer.pa
43、rseInt(ehms0);int em = Integer.parseInt(ehms1);int es = Integer.parseInt(ehms2);/获得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;retur
44、n 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/除以上可能的正常计费公式如下edt = edt
45、 % 3600 / 60;db = edt / 3600;/获得过去的小时数/获得多余的分钟数if(edtInteger.parseInt(sunini.getIniKey("InsuHour2") &&edt<=Integer.parseInt(sunini.getIniKey("InsuHour1") (db = db + 0.5;超过多少分,但小于多少分部分,收半价else if(edt > Integer.parseInt(sunini.getIniKey("InsuHour2") (db = db
46、 + 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) (/获得开始日期时间的-年-月-日-时
47、-分-#String syh 口 = sDate.trim ().split("");String symd口 = syh0.trim().split("-");String shms口 = syh1.trim().split(":");int sy = Integer.parseInt(symd0);int sM = Integer.parseInt(symd1);int sd = Integer.parseInt(symd2);int sh = Integer.parseInt(shms0);int sm = Integer.pa
48、rseInt(shms1);int ss = Integer.parseInt(shms2);/获得结束日期时间的-年-月-日-时-分-#String eyh 口 = eDate.trim ().split("");String eymd口 = eyh0.trim().split("-");String ehms口 = eyh1.trim().split(":");int ey = Integer.parseInt(eymd0);int eM = Integer.parseInt(eymd1);int ed = Integer.par
49、seInt(eymd2);int eh = Integer.parseInt(ehms0);int em = Integer.parseInt(ehms1);int es = Integer.parseInt(ehms2);/获得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;/生成过去多少时间的字符串S
50、tring t = sdt / 3600000 + "小时"+ sdt % 3600000 / 60000 + "分"return t;ToCap.java/* (#)ToCap.java 1.24 03/12/19* Copyright 2006 CazoSoft, Inc. All rights reserved.*/package sunsdk.system;/* <code> ToCap </code>* <p>*本类用于转化中文大写人民币* author 鲜强* version 22.14, 04/05/06
51、* since CAZOSOFT 1.0*/public class ToCap (/*用户设置大写钱数(100,000,000 (一亿)以内).* param money :String接收用户的正实数.* return : String包括 圆整 或 角分的中文大写人民币,如果不合法,将返回空(null) */public String setMoney(String money) (String re = null;double num;/测试数据是否合法try (num = Double.parseDouble(money.trim();if (num < 100000000 &
52、amp;& num >= 0) (/合法,使用字符串开始转换re = this.mySetMoney(money);/end if catch (Exception ex) (/end try/返回值return re;/*大写转换函数.功能:转换数字为中文大写* param num :* int接受整数* return : String大写数字 零到玖.*/private String setDaXie(int num) (String re = null; switch (num) ( case 0:break;case 1:re ="壹"break;ca
53、se 2:re ="贰"break;case 3:re ="蹇"break;case 4: re =“肆" break;case 5:re =”伍"break;case 6:re ="陆"break;case 7:re ="柴"break;case 8:re ="捌"break;case 9:re ="玖"break;default:break;return re;/*处理大写人民币* param num :* String接收处理过的字符串(实为数字).
54、* return :返回处理过的大写人民币.*/private String mySetMoney(String num) throws Exception /要返回的字符串String re =""/转换过程String setNum = null;int index = num.indexOf(".”);/处理整数if (index = -1) setNum = num; else setNum = num.substring(0, index);int weiShu = setNum.length();if (weiShu > 0) (int leng = setNum.l
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天津轻工职业技术学院《博览建筑设计》2024-2025学年第二学期期末试卷
- 海鲜水产店内部管理制度
- 煤炭工地内部管理制度
- 煤矿内部财务制度
- 狂犬病门诊内部管理制度
- 环卫部内部控制制度范本
- 疗养院内部经营管理制度
- 监理公司内部奖罚制度
- 监理机构内部制度
- 科创中心内部管理制度
- 中外室内设计简史教案
- 走进李叔同课件
- 铝电公司400KA电解槽制作安装工程施工方案
- SWITCH塞尔达传说旷野之息-1.6金手指127项修改使用说明教程
- 降低儿科住院患儿坠床发生率PDCA
- 中国饭店业发展史
- 幼儿园户外游戏的组织与开展讲座
- GB/T 985.4-2008复合钢的推荐坡口
- 山东省青岛九中2023年自主招生物理试题(详解版)
- GB/T 20671.10-2006非金属垫片材料分类体系及试验方法第10部分:垫片材料导热系数测定方法
- 马克思主义基本原理课件- (全套完整课件)全版
评论
0/150
提交评论