📄 presentquerydialog.java
字号:
System.out.println(calendar.get(Calendar.YEAR) + "-"
+ calendar.get(Calendar.MONTH+1) + "-"
+ calendar.get(Calendar.DAY_OF_MONTH));
// 用户选择的查询字段的索引
nUserSelect = this.preSelectConditionComboBox.getSelectedIndex();
// 用户选择的查询字段的索引加一
nUserSelect++;
// 用户选择的查询字段的索引
nUserSelectConditionNum = this.selectConditionComboBox
.getSelectedIndex();
// 用户选择的查询字段的索引加一
nUserSelectConditionNum++;
switch (nUserSelect) {
case 1:
// 如果用户选择周
//获得用户所选周
nweek = nUserSelectConditionNum;
if(nweek > 0 && nweek < 19){
//如用户选择的是上学期的周
//查询状态显示
strpresentQueryView +="上学期第"+ nweek+"周";
// 获得开始日期
calendar.add(Calendar.WEEK_OF_YEAR, nweek-1);
startDate = calendar.getTime();
// 加1周
calendar.add(Calendar.WEEK_OF_YEAR, 1);
// 获得结束日期
endDate = calendar.getTime();
// 将日期格式化为字符串
strStartDate = simpleFormat.format(startDate);
strEndDate = simpleFormat.format(endDate);
}else{
nweek -= 18 ;
//如用户选择的是下学期的周
//查询状态显示
strpresentQueryView += "下学期第"+ nweek+"周";
//设置为所选年的9月1日,Calendar月份从0开始
calendar.set(nyear, 8, 1);
// 获得开始日期
calendar.add(Calendar.WEEK_OF_YEAR, nweek-1);
startDate = calendar.getTime();
// 加1周
calendar.add(Calendar.WEEK_OF_YEAR, 1);
// 获得结束日期
endDate = calendar.getTime();
// 将日期格式化为字符串
strStartDate = simpleFormat.format(startDate);
strEndDate = simpleFormat.format(endDate);
}
break;
case 2:
// 如果用户选择月
//获得用户选择月份
nmonth = nUserSelectConditionNum;
if(nmonth > 1 && nmonth <= 6){
nmonth++;
}else if(nmonth > 1 && nmonth <= 6){
nmonth += 2;
}
//查询状态显示
strpresentQueryView += nmonth+"月份";
//设置初始时间,用户所选年所选月,Calendar月份从0开始
calendar.set(nyear, (nmonth-1), 1);
// 获得开始日期
startDate = calendar.getTime();
// 加1个月
calendar.add(Calendar.MONTH, 1);
// 获得结束日期
endDate = calendar.getTime();
// 将日期格式化为字符串
strStartDate = simpleFormat.format(startDate);
strEndDate = simpleFormat.format(endDate);
break;
case 3:
// 如果用户选择季度
//查询状态显示
strpresentQueryView += this.selectConditionComboBox.getSelectedItem().toString();
//获取用户所选季度
nquarter = nUserSelectConditionNum;
// 设置初始时间,用户所选年所选月,Calendar月份从0开始
calendar.set(nyear, 0+(nquarter-1)*3, 1);
// 获得开始日期
startDate = calendar.getTime();
// 加3个月
calendar.add(Calendar.MONTH, 3);
// 获得结束日期
endDate = calendar.getTime();
// 将日期格式化为字符串
strStartDate = simpleFormat.format(startDate);
strEndDate = simpleFormat.format(endDate);
break;
case 4:
// 如果用户选择学期
//查询状态显示
strpresentQueryView += this.selectConditionComboBox.getSelectedItem().toString();
if (nUserSelectConditionNum == 1) {
// 如果用户选择上学期
// 获得开始日期
startDate = calendar.getTime();
// 加5个月
calendar.add(Calendar.MONTH, 5);
// 获得结束日期
endDate = calendar.getTime();
// 将日期格式化为字符串
strStartDate = simpleFormat.format(startDate);
strEndDate = simpleFormat.format(endDate);
} else {
// 如果用户选择下学期
//设置为所选年的9月1日,Calendar月份从0开始
calendar.set(nyear, 8, 1);
// 获得开始日期
startDate = calendar.getTime();
// 加5个月
calendar.add(Calendar.MONTH, 5);
// 获得结束日期
endDate = calendar.getTime();
// 将日期格式化为字符串
strStartDate = simpleFormat.format(startDate);
strEndDate = simpleFormat.format(endDate);
}
break;
default:
JOptionPane.showMessageDialog(this, "您选择的查询字段不存在,请重新选择!");
}
//用户显示查询条件
strpreQueryView = strpresentQueryView;
// 组合SQL语句
strSQL = " presentDate >= to_date('" + "" + strStartDate
+ "','yyyy-mm-dd')" + "and presentDate <= to_date('" + ""
+ strEndDate + "','yyyy-mm-dd')";
return strSQL;
}
/**
* 是否查到学生出勤信息,查到则显示出勤情况并返回true,否则返回false
* @return boolean型变量 bisRight,是否查到学生出勤信息
*/
private boolean displayStuPresentInfo() {
// 建立一个JDBC对象
JdbcConnct jdbcConnection = new JdbcConnct();
// 定义Vector变量,存储从数据库查询来的信息
Vector vecData = new Vector();
// 定义SQL语句组合项
String strSQL = "";
// 定义变量bisRight,学生出勤信息是否存在,初始化为false
boolean bisRight = false;
// 定义变量 "学号","姓名"
String strStudentId = "";
String strStudentName = "";
// 定义鼠标点击行
int nrow = 0;
//定义数字格式化对象
DecimalFormat decFormat = new DecimalFormat("0.00");
// 定义出勤、迟到、早退、病假,事假,出勤率
int npresentNum = 0;
int nlateNum = 0;
int nleaveEarlyNum = 0;
int nprivateAffairLeaveNum = 0;
int nsickLeaveNum = 0;
double dpresentRage = 0.0;
String strpresentRage = "";
// 定义String一维数组,存储每次的出勤状态
String[] strAryPresentStatus = new String[1];
// 获取鼠标点击行
nrow = this.ClassQueryTable.getSelectedRow();
// 判断是学生出勤查询还是班级出勤查询
strSQL = this.getUserSelectPresent();
// 获取学生信息
strStudentId = String.valueOf(this.ClassQueryTable.getValueAt(nrow, 0));
strStudentName = String.valueOf(this.ClassQueryTable.getValueAt(nrow, 1));
// 刷新table中数据
DefaultTableModel presentQueryTableModel = new DefaultTableModel(row,
columnStudent);
this.presentTable.setModel(presentQueryTableModel);
// 获得数据
try {
vecData = jdbcConnection.getData(strSQL);
} catch (SQLException e) {
e.printStackTrace();
}
if (vecData.size() > 0) {
bisRight = true;
} else {
bisRight = false;
}
// 为学生出勤查询各状态赋值
if (bisRight) {
for (int i = 0; i < vecData.size(); i++) {
strAryPresentStatus = (String[]) vecData.get(i);
// 利用switch判断出勤状态
// 出勤状态 1-出勤 2-迟到 3-早退 4-事假 5-病假
switch (Integer.valueOf(strAryPresentStatus[0])) {
case 1:
// 如果状态为出勤,出勤次数加一
npresentNum++;
break;
case 2:
// 如果状态为迟到,迟到记录加一
nlateNum++;
break;
case 3:
// 如果状态为早退,早退记录加一
nleaveEarlyNum++;
break;
case 4:
// 如果状态为事假,事假记录加一
nprivateAffairLeaveNum++;
break;
case 5:
// 如果状态为病假,病假记录加一
nsickLeaveNum++;
break;
default:
JOptionPane.showMessageDialog(this, "状态: "
+ strAryPresentStatus[0] + ", 该出勤状态不存在!");
}
}
}
//如果有该学生出勤情况
if (bisRight) {
// 计算出勤率
dpresentRage = (double) npresentNum / (double) vecData.size();
dpresentRage *= 100;
//格式化为两位小数
strpresentRage = decFormat.format(dpresentRage);
//末尾添加百分号
strpresentRage += "%";
// 显示学生出勤信息学号、姓名、出勤、迟到、早退、病假,事假,出勤率
presentQueryTableModel.addRow(new String[] { strStudentId,
strStudentName, String.valueOf(npresentNum),
String.valueOf(nlateNum), String.valueOf(nleaveEarlyNum),
String.valueOf(nprivateAffairLeaveNum),
String.valueOf(nsickLeaveNum), strpresentRage });
// 显示查询数据
this.presentTabbedPane.setSelectedComponent(this.DataViewPanel1);
}
return bisRight;
}
/**
* 是否查到班级出勤信息,查到则显示出勤情况
* @return boolean型变量 bisRight,是否查到班级出勤信息
*/
private boolean displayClassPresentInfo() {
// 建立JDBC对象
JdbcConnct jdbcConnection = new JdbcConnct();
// 定义Vector变量,存储从数据库查询来的信息
Vector vecData = new Vector();
// 定义SQL语句组合项
String strSQL = "";
// 定义boolean型变量bisExistClassPresentInfo,判断班级出勤信息是否存在,初始化为false
boolean bisExistClassPresentInfo = false;
// 定义变量 "班级号","班级名"、"届别"
String strclassId = "";
String strclassName = "";
String strflagYear = "";
// 定义鼠标点击行
int nrow = 0;
//定义数字格式化对象
DecimalFormat decFormat = new DecimalFormat("0.00");
// 定义出勤、迟到、早退、病假,事假,出勤率
int npresentNum = 0;
int nlateNum = 0;
int nleaveEarlyNum = 0;
int nprivateAffairLeaveNum = 0;
int nsickLeaveNum = 0;
double dpresentRage = 0.0;
String strpresentRage = "";
// 定义String一维数组,存储每次的出勤状态
String[] strAryPresentStatus = new String[1];
// 获取鼠标点击行
nrow = this.ClassQueryTable.getSelectedRow();
// 如果是班级查询
strSQL = this.getUserSelectPresent();
// 获取班级信息,班级号、班级名、届别
strclassId = String.valueOf(this.ClassQueryTable
.getValueAt(nrow, 0));
strclassName = String.valueOf(this.ClassQueryTable.getValueAt(nrow,
1));
strflagYear = String.valueOf(this.ClassQueryTable.getValueAt(nrow, 2));
// 刷新table中数据
DefaultTableModel presentQueryTableMode2 = new DefaultTableModel(
row, columnClass);
this.presentTable.setModel(presentQueryTableMode2);
// 获得数据
try {
vecData = jdbcConnection.getData(strSQL);
} catch (SQLException e) {
e.printStackTrace();
}
//如果查询到班级出勤信息
if (vecData.size() > 0) {
bisExistClassPresentInfo = true;
} else {
bisExistClassPresentInfo = false;
}
// 为学生出勤查询各状态赋值
if (bisExistClassPresentInfo) {
for (int i = 0; i < vecData.size(); i++) {
strAryPresentStatus = (String[]) vecData.get(i);
// 利用switch判断出勤状态
// 出勤状态 1-出勤 2-迟到 3-早退 4-事假 5-病假
switch (Integer.valueOf(strAryPresentStatus[0])) {
case 1:
// 如果状态为出勤,出勤次数加一
npresentNum++;
break;
case 2:
// 如果状态为迟到,迟到记录加一
nlateNum++;
break;
case 3:
// 如果状态为早退,早退记录加一
nleaveEarlyNum++;
break;
case 4:
// 如果状态为事假,事假记录加一
nprivateAffairLeaveNum++;
break;
case 5:
// 如果状态为病假,病假记录加一
nsickLeaveNum++;
break;
default:
JOptionPane.showMessageDialog(this, "状态: "
+ strAryPresentStatus[0] + ", 该出勤状态不存在!");
}
}
}
//如果有该学生出勤情况
if (bisExistClassPresentInfo) {
// 计算出勤率
dpresentRage = (double) npresentNum / (double) vecData.size();
dpresentRage *= 100;
//格式化为两位小数
strpresentRage = decFormat.format(dpresentRage);
//末尾添加百分号
strpresentRage += "%";
// 显示学生出勤信息学号、姓名、出勤、迟到、早退、病假,事假,出勤率
presentQueryTableMode2.addRow(new String[] { strclassId,
strclassName,strflagYear,
String.valueOf(npresentNum),
String.valueOf(nlateNum), String.valueOf(nleaveEarlyNum),
String.valueOf(nprivateAffairLeaveNum),
String.valueOf(nsickLeaveNum), strpresentRage });
// 显示查询数据
this.presentTabbedPane.setSelectedComponent(this.DataViewPanel1);
}
return bisExistClassPresentInfo;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -