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

📄 presentquerydialog.java

📁 学生管理系统。使用java编程
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
		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 + -