// 按照studentID和courseName来查找学生成绩信息,返回查找到的成绩信息,没有找到则抛出异常
public static Grade findByIDAddCourseName(String studentID, String courseName) throws GradeNotFoundException { String condition = \ + studentID + \ + courseName + \; List
throw new GradeNotFoundException(); }
return grade.get(0); }
// 查询出所有的学生成绩
public static int findAll(List
return find(grades, condition); }
// 一个私有方法,查找的核心方法,condition是sq语言的查找条件
private static int find(List
PreparedStatement pstmt = null; ResultSet rs = null; int record = 0; try {
conn = DBConnection.getConn();
String sql = \ + condition; pstmt = DBConnection.getPstmt(conn, sql); rs = DBConnection.executeQuery(pstmt); while (rs.next()) {
grades.add(new Grade(rs.getString(1), rs.getString(2), rs
.getInt(3), rs.getInt(4), rs.getDouble(5))); record++; }
} catch (SQLException e) { e.printStackTrace(); } finally {
DBConnection.closeRs(rs);
DBConnection.closePstmt(pstmt); DBConnection.closeConn(conn); }
return record;
{ }
}
public static boolean updateSchoolSemester(int school, int semester) }
Connection conn = null;
PreparedStatement pstmt = null; boolean flag = false; try {
conn = DBConnection.getConn();
String sql = \grade set semester = ?, schoolYear = ?\; pstmt = DBConnection.getPstmt(conn, sql); pstmt.setInt(1, semester); pstmt.setInt(2, school);
if (pstmt.executeUpdate() > 0) { flag = true; }
} catch (SQLException e) { e.printStackTrace(); } finally {
DBConnection.closePstmt(pstmt); DBConnection.closeConn(conn); }
return flag;
com.ccniit.student.view.Login类
说明:此类是显示层的登录界面,此界面类似一个对话框,但是他是继承JFrame,分为两个模块:学生登录和教师登录。有一个下拉条可以选择是学生登录还是教师登录,当选择学生登录时,会登录进入学生界面,当选择教师登录时会进入教师界面。
package com.ccniit.student.view;
import java.awt.Font;
import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
import javax.swing.ImageIcon; 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.JPasswordField; import javax.swing.JTextField; import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import com.ccniit.student.Student;
import com.ccniit.student.manage.PasswordNotCorrectException; import com.ccniit.student.manage.StudentManage;
import com.ccniit.student.manage.StudentNotFoundException; /*
* 此系统为学生管理系统0.0.4的升级版本,在上一个版本基础上对系统进行了大量优化和改进,使用户有更佳的体验 */
public class Login extends JFrame {
private Font fontLogo = new Font(\楷体\, 1, 20);
private JLabel jlLogo = new JLabel(\学生管理系统登录界面\); private Font font = new Font(\楷体\, 1, 25); private JLabel jlLogin = new JLabel(\教师登录\); String[] post = { \教师\, \学生\ };
private JComboBox jcbPost = new JComboBox(post); private JLabel jlID = new JLabel(\教师号:\); private JTextField jtfID = new JTextField(20); private JLabel jlPassword = new JLabel(\密码:\);
private JPasswordField jpfPassword = new JPasswordField(20); private JButton jbLogin = new JButton(\登录\); private JButton jbCancel = new JButton(\退出\); // 设置背景图片
private JLabel jlImage = new JLabel(); private ImageIcon iiImage;
public Login() {
setTitle(\学生管理系统0.0.5-登录\); setSize(400, 300);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE); setResizable(false);
// setLayout(new FlowLayout(FlowLayout.CENTER,100,30)); setLayout(null);
iiImage = new ImageIcon(\); jlImage.setIcon(iiImage);
}
jlImage.setSize(400, 300); jlImage.setLocation(0, 0);
getLayeredPane().add(jlImage, new Integer(Integer.MIN_VALUE)); JPanel jp = (JPanel) getContentPane(); jp.setOpaque(false); init();
public void init() {
jlLogo.setLocation(100, 5); jlLogo.setSize(250, 40); jlLogo.setFont(fontLogo);
add(jlLogo);
jlLogin.setFont(font);
jlLogin.setLocation(140, 30); jlLogin.setSize(150, 50); add(jlLogin);
jcbPost.setLocation(150, 75); jcbPost.setSize(80, 25);
jcbPost.setFocusable(false); // 添加登录界面的角色选择监听
jcbPost.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
if (jcbPost.getSelectedItem().equals(\学生\)) { jlLogin.setText(\学生登录\); jlID.setText(\学号:\); } else {
jlLogin.setText(\教师登录\); jlID.setText(\教师号:\); } } });
add(jcbPost);
jlID.setLocation(80, 120); jlID.setSize(50, 30); add(jlID);
jtfID.setLocation(130, 120); jtfID.setSize(150, 25); add(jtfID);
jlPassword.setLocation(80, 160); jlPassword.setSize(50, 30);
add(jlPassword);
jpfPassword.setLocation(130, 160); jpfPassword.setSize(150, 25); add(jpfPassword);
// 监听登录按钮
jbLogin.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
// 由于一般就是一个教师修改学生信息,所以教师没有建表,所有的教师都通过一个id号和密码登录
if (jcbPost.getSelectedItem().equals(\教师\)) { if (jtfID.getText().trim().equals(\) &&
String.valueOf(jpfPassword.getPassword()).trim()
.equals(\)) { setVisible(false);
new Teacher().setVisible(true); } else {
JOptionPane.showMessageDialog(Login.this,
\登录失败!教师号:jiaoshi 密码:jiaoshi.\); } } else {
String id = jtfID.getText().trim(); String password =
String.valueOf(jpfPassword.getPassword()) .trim();
if (\.equals(id)) {
JOptionPane.showMessageDialog(Login.this, \请输入学号!\);
return;
} else if (\.equals(password)) {
JOptionPane.showMessageDialog(Login.this, \请输入密码!\);
return; }
try {
// 检查学生登录是否正确,会抛出下面的两种异常,返回登录的学生信息,传递给StudentGrade类
Student student = StudentManage.check(id, password);
setVisible(false);
new StudentGrade(student, false).setVisible(true);
} catch (StudentNotFoundException e1) {