按教师查询信息页面UI界面如下,当查询到信息时,可在下方显示该生信息,查询不到则显示“查无此教师”:
UI界面设计如下:
package ui;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import daoImp.ClassesDaoImp;
import entity.Classes;
public class SearchByTea extends JFrame implements ActionListener {
JLabel title,teacher;
JTextField tea;
JTextArea jt;
JButton dft,cla,rtn;
JPanel line,line1,line2,gird1,gird2;
JScrollPane jsp;
public SearchByTea() {
// TODO Auto-generated constructor stub
Container con=getContentPane();
con.setLayout(new BorderLayout());
line=new JPanel(new GridLayout(2,1));
gird1=new JPanel();
gird2=new JPanel();
line1=new JPanel();
line2=new JPanel();
title=new JLabel("学生管理系统");
title.setFont(new Font("黑体",Font.PLAIN, 20));
teacher=new JLabel("教师姓名:");
//初始化一个5行30列的文本域,用于显示多行数据
jt=new JTextArea(5,30);
//将jt放置于滚动面板jsp,可显示超出区域的内容
jsp=new JScrollPane(jt);
tea=new JTextField(10);
dft=new JButton("确定");
dft.addActionListener(this);
cla=new JButton("清空");
cla.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
tea.setText("");
jt.setText("");
}
});
rtn=new JButton("返回");
rtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
setVisible(false);
new Host().setVisible(true);
}
});
gird1.add(title);
gird2.add(teacher);
gird2.add(tea);
line.add(gird1);
line.add(gird2);
line1.add(jsp);
line2.add(dft);
line2.add(cla);
line2.add(rtn);
con.add(line,BorderLayout.NORTH);
con.add(line1,BorderLayout.CENTER);
con.add(line2,BorderLayout.SOUTH);
setTitle("按教师查询学生信息");
setSize(400,250);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
ClassesDaoImp cdi=new ClassesDaoImp();
if(cdi.sreachByTeacher(tea.getText())!=null) {
//foreach语句遍历返回的列表,显示到文本域里
for(Classes cs:cdi.sreachByTeacher(tea.getText()))
jt.append("学号:"+cs.getNum()+" 姓名:"+cs.getName()+" 教师:"+cs.getTeacher()+"\n");
}else {
jt.setText("查无此教师");
}
}
}
重写ClassesDaoImp类的按教师查询方法,实现查询功能:
package daoImp;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import dao.classesDao;
import db.DBCon;
import entity.Classes;
public class ClassesDaoImp implements classesDao {
Connection cn;
PreparedStatement psm=null;
private ResultSet rs;
@Override
public boolean add(Classes classes) throws SQLException {
// TODO Auto-generated method stub
//。。。。。。
return flag;
}
@Override
public boolean delete(String num) {
// TODO Auto-generated method stub
//。。。。。。
return flag;
}
@Override
public boolean update(Classes classes) {
// TODO Auto-generated method stub
//。。。。。。
return flag;
}
@Override
public Classes SearchByNum(String num) {
// TODO Auto-generated method stub
//。。。。。。
return null;
}
@Override
public List<Classes> sreachByTeacher(String teacher) {
// TODO Auto-generated method stub
DBCon dbcon=new DBCon();
cn=dbcon.getConnection();
//实例化一个Classes类型的列表,用来存放查询到的数据
List<Classes> listClass=new ArrayList<Classes>();
String sql="select * from classes where teacher=?";
try {
psm=cn.prepareStatement(sql);
psm.setString(1, teacher);
rs=psm.executeQuery();
if(rs.next()) { //判断是否查询到数据
rs.absolute(0); //将rs指针置于结果集首
while(rs.next()) { //从第一行开始遍历数据
Classes cs=new Classes();
cs.setNum(rs.getString(2));
cs.setName(rs.getString(3));
cs.setTeacher(rs.getString(4));
listClass.add(cs); //将得到的数据添加至列表
}
return listClass;
}
psm.close();
cn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
PS:
1.foreach语句是for语句的简化,它无需知道要遍历对象的长度,就可以自动遍历对象中的元素,语法如下:
for(元素遍历x:遍历对象obj){
。。。。。。
}
2.List列表和数组相似,它不同于数组的是不用指定长度,可根据索引随机访问