📄 selectscore.java
字号:
package com.exam.ui.teacher;
import java.awt.Color;
import java.awt.Component;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.JTableHeader;
import com.exam.db.bean.BanJi;
import com.exam.db.bean.Course;
import com.exam.db.bean.ExamDB;
import com.exam.db.dao.BanJiDao;
import com.exam.db.dao.CourseDao;
import com.exam.db.dao.ExamDBDao;
import com.exam.db.dao.StudentDao;
import com.exam.ui.SuperFrame;
public class SelectScore extends SuperFrame {
private static final long serialVersionUID = 1L;
private JTable tblInfo;
private int currentPage = 1;
private int totalPage = 1;
private JLabel lblPage;
private JButton btnFirstPage;
private JButton btnPreviousPage;
private JButton btnNextPage;
private JButton btnLastPage;
private List<ExamDB> listExamDB;
public SelectScore() {
try {
init();
this.setVisible(true);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
} catch (Exception e) {
e.printStackTrace();
}
}
private void init() {
this.setTitle("成绩查询");
this.setSize(600, 450);
this.setCenter();
JPanel pnlTotal = new JPanel();
this.getContentPane().add(pnlTotal);
pnlTotal.setLayout(null);
JLabel lblBanJi = new JLabel("班级");
lblBanJi.setBounds(50, 20, 30, 25);
pnlTotal.add(lblBanJi);
final JComboBox cboBanJi = new JComboBox();
cboBanJi.setBounds(80, 20, 120, 25);
cboBanJi.addItem("");
pnlTotal.add(cboBanJi);
BanJiDao banJiDao = new BanJiDao();
List<BanJi> listBanJi = new ArrayList<BanJi>();
listBanJi = banJiDao.selectBanJiAll();
for (BanJi banJi : listBanJi) {
cboBanJi.addItem(banJi.getBanJiID());
}
JLabel lblCouName = new JLabel("科目");
lblCouName.setBounds(250, 20, 30, 25);
pnlTotal.add(lblCouName);
final JComboBox cboCouName = new JComboBox();
cboCouName.setBounds(280, 20, 120, 25);
cboCouName.addItem("");
pnlTotal.add(cboCouName);
List<Course> listCourse = new ArrayList<Course>();
CourseDao courseDao = new CourseDao();
listCourse = courseDao.selectAllCourse();
for (int i = 0; i < listCourse.size(); i++) {
cboCouName.addItem(listCourse.get(i).getGrade() + "-"
+ listCourse.get(i).getCouName());
}
JButton btnFind = new JButton("查询");
btnFind.setBounds(460, 20, 60, 25);
btnFind.setMargin(new Insets(0, 0, 0, 0));
pnlTotal.add(btnFind);
JPanel pnlInfo = new JPanel();
pnlInfo.setBounds(30, 50, 530, 350);
pnlInfo.setBorder(BorderFactory.createTitledBorder("成绩信息"));
pnlTotal.add(pnlInfo);
pnlInfo.setLayout(null);
Object[][] cells = new String[12][5];
Object[] col = { "姓名", "成绩", "最高分", "最低分", "平均分" };
tblInfo = new JTable(cells, col) {
private static final long serialVersionUID = 1L;
public boolean isCellEditable(int row, int col) {
return false;
}
};
JTableHeader tbhInfo = tblInfo.getTableHeader();
tbhInfo.setBounds(20, 25, 490, 25);
tbhInfo.setReorderingAllowed(false);
tblInfo.setSelectionMode(0);
tblInfo.setRowHeight(20);
tblInfo.setBounds(20, 50, 490, 240);
pnlInfo.add(tbhInfo);
pnlInfo.add(tblInfo);
DefaultTableCellRenderer dtcrStudent = new DefaultTableCellRenderer() {
private static final long serialVersionUID = 1L;
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
if (row % 2 != 0) {
setBackground(new Color(206, 231, 255));
} else {
setBackground(new Color(255, 255, 255));
}
setHorizontalAlignment(SwingConstants.CENTER);
return super.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
}
};
for (int i = 0; i < tblInfo.getColumnCount(); i++) {
tblInfo.getColumn(col[i]).setCellRenderer(dtcrStudent);
}
lblPage = new JLabel("第 " + currentPage + " / " + totalPage + " 页");
btnFirstPage = new JButton("第一页");
btnPreviousPage = new JButton("上一页");
btnNextPage = new JButton("下一页");
btnLastPage = new JButton("最末页");
lblPage.setBounds(50, 305, 80, 25);
btnFirstPage.setBounds(150, 305, 60, 25);
btnFirstPage.setMargin(new Insets(0, 0, 0, 0));
btnPreviousPage.setBounds(230, 305, 60, 25);
btnPreviousPage.setMargin(new Insets(0, 0, 0, 0));
btnNextPage.setBounds(310, 305, 60, 25);
btnNextPage.setMargin(new Insets(0, 0, 0, 0));
btnLastPage.setBounds(390, 305, 60, 25);
btnLastPage.setMargin(new Insets(0, 0, 0, 0));
btnFirstPage.setEnabled(false);
btnPreviousPage.setEnabled(false);
btnNextPage.setEnabled(false);
btnLastPage.setEnabled(false);
pnlInfo.add(lblPage);
pnlInfo.add(btnFirstPage);
pnlInfo.add(btnPreviousPage);
pnlInfo.add(btnNextPage);
pnlInfo.add(btnLastPage);
btnFirstPage.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
currentPage = 1;
showTblInfo(currentPage);
}
});
btnPreviousPage.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
currentPage--;
if (currentPage < 1) {
currentPage = 1;
}
showTblInfo(currentPage);
}
});
btnNextPage.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
currentPage++;
if (currentPage == totalPage) {
currentPage = totalPage;
}
showTblInfo(currentPage);
}
});
btnLastPage.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
currentPage = totalPage;
showTblInfo(currentPage);
}
});
btnFind.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
currentPage = 1;
String banJiID = cboBanJi.getSelectedItem().toString();
String str = cboCouName.getSelectedItem().toString();
if (banJiID.equals("") && str.equals("")) {
JOptionPane.showMessageDialog(null, "请选择科目和班级!");
return;
}
BanJiDao banJiDao = new BanJiDao();
BanJi banJi = banJiDao.selectBanJiByID(banJiID);
String stuID;
String grade = str.substring(0, 2);
if (banJi.getGrade().equals("S1")) {
stuID = "S" + banJi.getBanJiDate().substring(2) + "1%";
} else if (banJi.getGrade().equals("S2")) {
stuID = "S" + banJi.getBanJiDate().substring(2) + "2%";
} else {
stuID = "S" + banJi.getBanJiDate().substring(2) + "3%";
}
String couName = str.substring(3);
CourseDao courseDao = new CourseDao();
Course course = courseDao.selectCourseByNameAndGrade(couName,
grade);
int couID = course.getCouID();
ExamDBDao examDBDao = new ExamDBDao();
listExamDB = examDBDao.selectAvrScoreByStuIDAndCouID(stuID,
couID);
showInfo();
}
});
}
private void showInfo() {
showTblInfo(currentPage);
}
private void showTblInfo(int num) {
if (listExamDB.size() % 12 == 0) {
if (listExamDB.size() == 0) {
totalPage = 1;
} else {
totalPage = listExamDB.size() / 12;
}
} else {
totalPage = listExamDB.size() / 12 + 1;
}
lblPage.setText("第 " + num + " / " + totalPage + " 页");
if (num == 1) {
btnFirstPage.setEnabled(false);
btnPreviousPage.setEnabled(false);
} else {
btnFirstPage.setEnabled(true);
btnPreviousPage.setEnabled(true);
}
if (totalPage == num) {
btnNextPage.setEnabled(false);
btnLastPage.setEnabled(false);
} else {
btnNextPage.setEnabled(true);
btnLastPage.setEnabled(true);
}
for (int i = 0; i < 12; i++) {
for (int j = 0; j < 5; j++) {
tblInfo.setValueAt("", i, j);
}
}
if(listExamDB.size()==0){
JOptionPane.showMessageDialog(null, "该班还没有参加此科目的考试!");
return;
}
float sum = 0;
int max = 0;
int min = 0;
for (int j = 0; j < listExamDB.size(); j++) {
int score = listExamDB.get(j).getScore();
sum += score;
if (j == 0) {
max = score;
min = score;
}
if (max < score) {
max = score;
}
if (min > score) {
min = score;
}
}
float avg = sum / listExamDB.size();
int first = (num - 1) * 12;
for (int i = first; i < listExamDB.size(); i++) {
StudentDao studentDao = new StudentDao();
String stuName = studentDao.selectStudentByStuID(
listExamDB.get(i).getStuID()).getStuName();
tblInfo.setValueAt(stuName, i % 12, 0);
tblInfo.setValueAt(listExamDB.get(i).getScore() + "", i % 12, 1);
tblInfo.setValueAt(max + "", i % 12, 2);
tblInfo.setValueAt(min + "", i % 12, 3);
tblInfo.setValueAt(avg + "", i % 12, 4);
if (i % 12 == 11) {
break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -