📄 examjdialog.java
字号:
* @return
*/
public String getTeacherName()
{
//从老师名文本框中获取老师姓名
String teacherName = this.teacherNameTextField.getText().trim();
if(teacherName.equals(""))//如为空则返回null
{
return null;
}
else //不为空,则返回teachername
return teacherName;
}
/**
* 获取考试类型的方法
* @return
*/
public String getExamType()
{
//从考试类型下拉框中选择考试类型
String examType =(String)this.examTypeComboBox.getSelectedItem();
//如果是其中考试,则返回M
if(examType.equals("期中考试"))
return "M";
//如果是期末考试,则返回F
else if(examType.equals("期末考试"))
return "F";
else
return null;
}
/**
* 从文本框中获取考试地点的方法
* @return
*/
public String getExamPlace()
{
//从考试地点文本框中获取考试地点
String examPlace = this.examPlaceTextField.getText().trim();
if(examPlace.equals(""))
{
return null;
}
else return examPlace;
}
/**
* 获取出席人数的方法
* @return
*/
public int getPresentNum()
{
//从考试人数文本框中获取考试人数。
String presentNum = this.presentNumTextField.getText().trim();
//正则表达式,用来判断人数是否合法
String regex = "\\d{1,3}";
if(presentNum.equals(""))//如果为空,返回0
{
return 0;
}
else //如果不为空,则判断是否合法
{
if(presentNum.matches(regex))//如果合法,则转换为int类型返回
return Integer.parseInt(presentNum);
else return 0; //如果不合法,则返回0
}
}
/**
* 获取备注的方法
* @return
*/
public String getRemark()
{
//从备注文本框中获取备注信息
String remark = this.remarkTextArea.getText().trim();
if(remark.equals(""))
return null;
else return remark;
}
/**
* 获取查询条件的方法
* @return
*/
public String getInput()
{
//从查询条件文本框中获取查询条件信息
String input = this.inputTextField.getText().trim();
if(input.equals(""))
return null;
else
return input;
}
/**
* 退出按钮事件处理方法
* @param evt
*/
private void exitButtonActionPerformed(ActionEvent evt) {
//退出
this.dispose();
}
/**
* 通过课程名称获取课程号的方法
* @param CourseName 课程名
* @return 课程号
*/
public int getCourseId(String CourseName){
try{
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
int courseid=0;
conn = conn = JdbcConnct.fetchConnection();
String sql = "select courseid from course where coursename = ?";
stmt = conn.prepareStatement(sql);
stmt.setString(1,CourseName);
rs = stmt.executeQuery();
while(rs.next())
{
courseid = rs.getInt("courseid");
}
rs.close();
stmt.close();
conn.close();
if(courseid == 0)
{
return 0;
}
else
return courseid;
}catch(Exception e){
e.printStackTrace();
return 0;
}
}
/**
* 通过老师名字获取老师工号的方法
* @param teacherName
* @return
*/
public int getTeacherId(String teacherName){
try{
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
int courseid=0;
conn = conn = JdbcConnct.fetchConnection();
String sql = "select teacherid from teacher where teachername = ?";
stmt = conn.prepareStatement(sql);
stmt.setString(1,teacherName);
rs = stmt.executeQuery();
while(rs.next())
{
courseid = rs.getInt(1);
}
rs.close();
stmt.close();
conn.close();
if(courseid == 0)
{
return 0;
}
else
{return courseid;
}
}catch(Exception e){
e.printStackTrace();
return 0;
}
}
/**
* 获取考试日期
* @return
*/
public String getDate()
{
//从考试日期文本框中获取考试日期
String date = this.dateTextField.getText().trim();
if(date.equals(""))
return null;
else return date;
}
/**
* 添加按钮事件处理方法
* @param evt
*/
private void addButtonActionPerformed(ActionEvent evt) {
//定义向量,用来存储输入的信息
Vector vecData = new Vector();
//通过课程名称,获得课程号
int courseId = getCourseId(getCourseName());
//通过老师名称获取老师工号
int teacherId = getTeacherId(getTeacherName());
//获取开始时间
String beginTime = getBeginTime();
//获取结束时间
String endTime = getEndTime();
//获取考试日期
String date = getDate();
//获取考试人数
int presentNum = getPresentNum();
//判断输入是否合法,如果合法则执行增加操作,如果不合法则提示出错
if(courseId!=0&&teacherId!=0&&null!=date&&null!=beginTime&&null!=endTime&&presentNum!=0){
//把开始时间和结束时间变成数字,用来判断大小
String begin = beginTime.replace(':', '.');
String end = endTime.replace(':', '.');
float begintime = Float.parseFloat(begin);
float endtime = Float.parseFloat(end);
//如果开始时间大于结束时间,提示出错。
if(begintime>=endtime)
{
JOptionPane.showMessageDialog(this, "结束时间必须在开始时间之后!!");
}
else //如果开始时间小于结束时间则执行增加操作
{
try
{
//定义连接
Connection conn = null;
//定义statement
Statement stmt = null;
//获得一个连接
conn = JdbcConnct.fetchConnection();
//增加考试的sql语句
String sql = "insert into exam(courseid," +
"teacherid,begintime,endtime,examplace," +
"examtype,presentnum,remark)" +
" values(" +
courseId+"," +
teacherId+"," +
"to_date('"+date+" "+beginTime+"','yyyy-mm-dd hh24:mi:ss')," +
"to_date('"+date+" "+endTime+"','yyyy-mm-dd hh24:mi:ss'),'" +
getExamPlace()+"','" +
getExamType()+"',"+getPresentNum()+",'"+getRemark()+"')";
//创建一个statement
stmt = conn.createStatement();
//执行增加操作
int updateLine = stmt.executeUpdate(sql);
//把输入的数据存放到向量中
vecData.addElement(getCourseName());
vecData.addElement(getBeginTime());
vecData.addElement(getEndTime());
vecData.addElement(getExamPlace());
vecData.addElement(getTeacherName());
vecData.addElement(getPresentNum());
if(updateLine!=0)
{
//在表格中显示添加的信息
examTableModel.addRow(vecData);
//提示增加考试成功
JOptionPane.showMessageDialog(this, "添加考试成功!!");
//清空
clear();
}
else
{
//如果没有增加成功,提示出错。
JOptionPane.showMessageDialog(this, "添加考试出错!!");
}
}catch(Exception e)
{
e.printStackTrace();
//如果增加出现异常,提示输入出错。
JOptionPane.showMessageDialog(this, "输入错误,请重新输入");
}
}
}
else if(courseId==0)//如果couserid为0,提示课程不存在
{
JOptionPane.showMessageDialog(this, "没有该课程!!");
}
else if(teacherId==0)//如果teacherid为0,提示老师不存在
{
JOptionPane.showMessageDialog(this, "老师不存在!!");
}
else if(null==date)//如果日期为空,提示日期不能为空
{
JOptionPane.showMessageDialog(this, "日期不能为空!!");
}
else if(null==beginTime)//开始时间输入不合法,提示出错。
{
JOptionPane.showMessageDialog(this, "开始时间输入错误,时间格式为10:00!!");
}
else if(null==endTime)//结束时间不合法,提示出错
{
JOptionPane.showMessageDialog(this, "结束时间输入错误,时间格式为10:00!!");
}
else if(presentNum == 0)//人数输入不合法,提示出错
{
JOptionPane.showMessageDialog(this, "考试人数输入错误,请输入正确的数字0~999");
}
}
/**
* 获取考试流水号
* @return
*/
// public int getExamId(){
// //从表格中获取
// int row = this.examTable.getSelectedRow();
// int examid = 0;
// if(row!=-1)
// {
// String courseName = (String) this.examTable.getValueAt(row,0);
// String beginTime = (String)this.examTable.getValueAt(row,1);
// String endTime = (String)this.examTable.getValueAt(row,2);
// String examPlace =(String)this.examTable.getValueAt(row,3);
// String Teacher = (String)this.examTable.getValueAt(row,4);
// String examPlac=null;
// if(null==beginTime)
// {
// beginTime = " is null";
// }
// else
// {
// beginTime ="='"+beginTime+"'";
// }
// if(null==endTime)
// {
// endTime = " is null";
// }
// else
// {
// endTime ="='"+endTime+"'";
// }
// if(null==examPlace)
// {
// examPlac = "is null";
// }
// else
// {
// examPlac = "='"+examPlace+"'";
// }
// if(null==Teacher)
// {
// Teacher = "is null";
// }
// else
// {
// System.out.println(Teacher);
// Teacher = "="+getTeacherId(Teacher);
// }
// try {
// Connection conn =null;
// String sql = "select examid from exam where " +
// " courseid="+getCourseId(courseName)+
// //" and teacherid = "+getTeacherId(Teacher)+
// " and examplace "+examPlac+
// " and to_char(beginTime,'yyyy-mm-dd hh24:mi:ss')" +beginTime +
// " and to_char(endTime,'yyyy-mm-dd hh24:mi:ss')" +endTime+
// " and teacherid "+Teacher;
// conn = JdbcConnct.fetchConnection();
// System.out.println(conn);
// Statement stmt = conn.createStatement();
// ResultSet rs = stmt.executeQuery(sql);
// while(rs.next())
// {
// examid = rs.getInt(1);
// }
// if(examid == 0)
// return 0;
// else return examid;
// } catch (Exception e)
// {
// e.printStackTrace();
// return 0;
// }
//
// }
// else
// {
// JOptionPane.showMessageDialog(this, "没有选定行!!");
// return 0;
// }
// }
/**
* 清空方法
*
*/
public void clear()
{
//清空日期文本框
this.dateTextField.setText("");
//清空科目名称文本框
this.examIdTextField.setText("");
//清空考试地点文本框
this.examPlaceTextField.setText("");
//清空开始时间文本框
this.beginTimeTextField.setText("");
//清空结束时间文本框
this.endTimeTextField.setText("");
//清空出席人数文本框
this.presentNumTextField.setText("");
//清空备注文本框
this.remarkTextArea.setText("");
//清空老师名文本框
this.teacherNameTextField.setText("");
}
/**
* 初始化表格方法
* @param sql
*/
public void initialTable(String sql)
{
//定义可变长的向量,来存储表里查询出的结果集
Vector temp = new Vector();
//定义连接
Connection conn = null;
//定义Statement
Statement stmt = null;
//定义结果集
ResultSet rs =null;
try {
//获取一个连接
conn = JdbcConnct.fetchConnection();
//查询SQL语句
String sql1 = "select examid,coursename," +
"to_char(begintime,'yyyy-mm-dd hh24:mi:ss') begintime," +
"to_char(endtime,'yyyy-mm-dd hh24:mi:ss') endtime," +
"examplace,teachername,presentnum,remark from exam_course_teacher"+sql;
//创建一个Statement
stmt = conn.createStatement();
//得到一个结果集
rs = stmt.executeQuery(sql1);
//对结果集的操作
while(rs.next())
{
//把结果集中的数据存放到向量中
temp.addElement((String)rs.getString("examid"));
temp.addElement((String)rs.getString("coursename"));
String qbeginTime =rs.getString("begintime");
qbeginTime = qbeginTime.substring(0, 16);
String qendTime =rs.getString("endtime");
qendTime = qendTime.substring(0, 16);
temp.addElement(qbeginTime);
temp.addElement(qendTime);
temp.addElement((String)rs.getString("examplace"));
temp.addElement((String)rs.getString("teachername"));
temp.addElement((String)rs.getString("presentnum"));
temp.addElement((String)rs.getString("remark"));
}
//让查询出来的数据在表格中显示
int row = temp.size()/8;
if(row!=0){
String [] title=new String[]{"考试号","科目","开始时间","结束时间","地点","监考老师","参考人数","备注"};
String[][] aa = new String [row][8] ;
for(int i=0;i<row;i++)
{
for(int k=0;k<8;k++)
{
aa[i][k] = (String)temp.elementAt(i*8+k);
}
}
dataModel = new DefaultTableModel(aa,title){
/**
* 重写DefaultTableModel里的方法,设置表格不可编辑。
*/
public boolean isCellEditable(int row, int column)
{
return false;
}
};
examTable.setModel(dataModel);
examTable.setRowHeight(20);
}
else{
// 查询的数据不存在,提示查询出错。
JOptionPane.showMessageDialog(this, "要查找的数据不存在");
}
} catch (SQLException e)
{
//如果出现异常,提示查询出错
JOptionPane.showMessageDialog(this, "查询出错!");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -