📄 staticsmoneymostbymonth.java
字号:
package file1;
/*
* 功能描述:酒店的总收入按月份统计查询入口
* @Author:黄顺武
* Version:1.3
*/
import javax.swing.*;
import sun.jdbc.rowset.*;
import java.sql.*;
public class StaticsMoneyMostByMonth extends JPanel {
private String tip = "请输入要查询的年月:";
private DateMonthYear dateMonthYear = null;
private String valueGet = null;
private CheckYearMonth checkYM = null;
private String[][] moneyAndGrade = null;
private String[][] mostPopular = null;
private IdentityDate identityDate=new IdentityDate();//实例化对两个日期进行相关性判断的类对象
public StaticsMoneyMostByMonth() {
dateMonthYear = new DateMonthYear();
valueGet = dateMonthYear.getValueGet(tip);
if (valueGet == null) {
return;
}
checkYM = new CheckYearMonth();
String monthStr = checkYM.check(valueGet);
if (monthStr == null) {
return;
}
try {
DBConnection con = new DBConnection();
String query = "select bookNum*Sprice total,hGrade,dateOut from HUseBook,HGrade where hGrade=grade order by hGrade";
CachedRowSet crs = con.getResultSet(query);
int count = 0;
while (crs.next()) {
String dateOut = crs.getString(3);
identityDate.setFirstDate(dateOut.trim());
identityDate.setSecondDate(monthStr);
if (identityDate.isInTheSameMonth()==0) {//两个日期在同一个月
count++;
}
}
if (count == 0) {//本月没有出租任何客房,程序将按原路返回控制点
JOptionPane.showMessageDialog(null, "该月份没有出租客房!", "",
JOptionPane.INFORMATION_MESSAGE);
return;
}
moneyAndGrade = new String[count][2];
crs.beforeFirst();
count = 0;
while (crs.next()) {
float moneyTemp = crs.getFloat(1);
String hGradeTemp = crs.getString(2);
String dateOut = crs.getString(3);
identityDate.setFirstDate(dateOut.trim());
identityDate.setSecondDate(monthStr);
if (identityDate.isInTheSameMonth()==0) {//两个日期在同一个月
moneyAndGrade[count][0] = String.valueOf(moneyTemp);
moneyAndGrade[count][1] = String.valueOf(hGradeTemp);
count++;
}
}
int temp = count;//temp为记录集中包含的客房级别的上限
String moneyAndGradeTemp[][] = new String[temp][2];
moneyAndGradeTemp[0][0] = moneyAndGrade[0][0];
moneyAndGradeTemp[0][1] = moneyAndGrade[0][1];
count = 1;
int gradeCount = 1;
for (; count < temp; count++) {
int indicate = 0;
for (int gradeCountTemp = 0; gradeCountTemp < gradeCount; gradeCountTemp++) {// 累加同级别的客房出租金额
if (moneyAndGrade[count][1]
.equals(moneyAndGradeTemp[gradeCountTemp][1])) {
float temp1 = Float
.valueOf(moneyAndGradeTemp[gradeCountTemp][0]);
float temp2 = Float.valueOf(moneyAndGrade[count][0]);
moneyAndGradeTemp[gradeCountTemp][0] = String
.valueOf(temp1 + temp2);
indicate = 1;
}
}
if (indicate != 1) {
moneyAndGradeTemp[gradeCount][0] = moneyAndGrade[count][0];
moneyAndGradeTemp[gradeCount][1] = moneyAndGrade[count][1];
gradeCount++;
}
}
int biggest = 0;
float temp1 = Float.valueOf(moneyAndGradeTemp[0][0]);
for (count = 1; count < gradeCount; count++) {
float temp2 = Float.valueOf(moneyAndGradeTemp[count][0]);
if (temp1 < temp2) {
biggest = count;
}
}
mostPopular = new String[gradeCount][2];
int base = 0;
for (count = 0; count < gradeCount; count++) {
if (moneyAndGradeTemp[count][0]
.equals(moneyAndGradeTemp[biggest][0])) {
mostPopular[base][0] = moneyAndGradeTemp[count][0];
mostPopular[base][1] = moneyAndGradeTemp[count][1];
base++;
}
}
String hGrades = null;
float commonMoney = Float.valueOf(mostPopular[0][0]);
if (base > 1) {
StringBuffer sb = new StringBuffer();
for (count = 0; count < base; count++) {
sb.append(mostPopular[count][1] + " ");
}
hGrades = sb.toString();
} else {
hGrades = mostPopular[0][1];
}
JOptionPane.showMessageDialog(null, "该月份出租收入最大客房级别为 " + hGrades
+ ",收入(各)为 " + commonMoney + " 元!", "",
JOptionPane.INFORMATION_MESSAGE);
} catch (ClassNotFoundException cnfe) {
cnfe.printStackTrace();
} catch (SQLException sqle) {
sqle.printStackTrace();
} catch (NumberFormatException nfe) {
nfe.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -