JAVA教务系统项目报告

目录

一、需求分析(三号,宋体,粗体) 2

二、系统设计(三号,宋体,粗体) 2

(一)系统中的数据定义(四号,黑体,粗体) 2

(二)系统的概要设计 2

(三)系统的详细设计 2

(四)系统的核心算法 2

三、系统编码及运行(三号,宋体,粗体) 3

(一)系统开发涉及的软件 3

(二)系统运行界面及结果 3

四、系统测试(三号,宋体,粗体) 3

五、总结 3

附录(源代码) 4

(注:这部分可以点击右键更新生成,重新设置字体为四号)

 

 

 

 

 

  • 需求分析

教务管理是大学的主要日常管理工作之一,涉及到师生方面的诸多信息,随着教学体制的不断改革,教务管理日常的工作日趋繁重,复杂,如何把教务工作信息化,模块化,便捷化是现代高效发展的重点,所以迫于需要研制开发一种综合教务管理软件,建成一个完整统一,技术先进,高效稳定,安全可靠的教学信息管理系统

这款教务系统比以往传统的人工管理更具有安全性和快捷性,更方便我们管理,对学校的整个教务系统变动进行综合管理和快速查询。为了节省在教务管理花费的人力和物力,同时便于学校掌握这方面的详细情况,有助于提高整个学校的教务水平和管理水平。

 

系统设计

系统中的数据定义

     管理员:增加数据

             删除数据

             修改数据

             查询数据

学生:增加数据

            删除数据

            修改数据

            查询数据

 

(二)系统的概要设计

     

  • 系统的详细设计

     管理员(学生)增加信息功能模块:管理员登入系统(进入图形化界面显示),输入待添加学生姓名,性别,学号,院系,籍贯,学分,电子邮件,联系方式等信息,是否继续添加,确认,保存信息

     管理员(学生)删除信息功能模块:管理员登入系统(进入图形化界面显示),输入待删除学生姓名,学号信息,是否继续删除,确认,成功删除学生信息

     管理员(学生)更新信息功能模块:管理员登入系统(进入图形化界面显示),输入待更新学生姓名,性别,学号,院系,籍贯,学分,电子邮件,联系方式等信息,是否继续更新,确认,保存信息

     管理员(学生)查找信息功能模块:管理员登入系统(进入图形化界面显示),输入待查找学生姓名信息,是否继续查找,确认,显示学生信息    

      

  • 系统的核心算法

       // jdbc

public static final String JDBC_URL = "jdbc:mysql://127.0.0.1:3306/student?useUnicode=true&characterEncodeing=UTF-8";

public static final String JDBC_USERNAME = "root";

public static final String JDBC_PASSWORD = "3.1415926";

public static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; //mySQL的JDBC驱动

 

// student field

public static final String STUDENT_NAME = "姓名";

public static final String STUDENT_SNO = "学号";

public static final String STUDENT_SEX = "性别";

public static final String STUDENT_DEPARTMETN = "院系";

public static final String STUDENT_HOMETOWN = "籍贯";

public static final String STUDENT_EMAIL = "电子邮件";

public static final String STUDENT_TEL = "联系方式";

public static final String STUDENT_MARK = "学分";

 

// login view

public static final String LOGIN_TITLE = "登录界面";

public static final String LOGIN_USERNAME = "用户名";

public static final String LOGIN_PASSWORD = "密码";

public static final String LOGIN = "登录";

public static final String RESET = "重置";

// main view

public static final String MAINVIEW_TITLE = "学生信息管理系统";

public static final String MAINVIEW_PAGENUM_JLABEL_DI = "第 ";

public static final String MAINVIEW_PAGENUM_JLABEL_YE = "/99 页";

public static final String MAINVIEW_FIND_JLABEL = "查询结果";

public static final String MAINVIEW_FIRST = "首页";

public static final String MAINVIEW_LAST = "末页";

public static final String MAINVIEW_PRE = "上一页";

public static final String MAINVIEW_NEXT = "下一页";

public static final String PARAM_FIND_CONDITION = "";

public static final String PARAM_FIND = "查找";

public static final String PARAM_ADD = "添加";

public static final String PARAM_DELETE = "删除";

public static final String PARAM_UPDATE = "更新";

 

// add view

public static final String ADDVIEW_TITLE = "添加学生信息";

public static final String ADDVIEW_ADDBUTTON = "添加";

public static final String EXITBUTTON = "退出";

// delete view

public static final String DELETEVIEW_TITLE = "删除学生信息";

public static final String DELETEVIEW_DELETEBUTTON = "删除";

// update view

public static final String UPDATEVIEW_TITLE = "更新学生信息";

public static final String UPDATEVIEW_UPDATEBUTTON = "更新";

 

 

     

系统编码及运行(三号,宋体,粗体)

系统开发涉及的软件

     Eclipse

     画图软件

     Microsoft Word

(二)系统运行界面及结果

     图1 主函数返回view界面

     

图2  图形化界面显示:

图3 原始数据库信息:

图4 查找信息:

图5 增加信息

图6 添加页面显示信息:

图7 删除信息现实页面:

图8 输入待删除学生的信息

图9 删除成功:

图10 信息的更新

图11 更新信息:

图12 更新后的结果显示

 

系统测试(三号,宋体,粗体)

     

  • 总结

教务管理系统是学校的管理核心,管理应设计到学校的专业设置,学籍管理,成绩管理,管理人员可以在互联网的任何地方办公,真正实现学校网上管理。开发“教务信息管理系统”的目的就是利用计算机的查询和运算功能,代替手工处理,提高了工作效力和质量,所以该系统是必要而且能够实现的。

在设计阶段,我们小组认为功能很容易可以实现,基本上都是对数据的增删改查,然而实际上在真正写代码的时候我们遇到了很多没有想到的问题,甚至一些问题会困扰我们程序的进行,我们组所以在各种论坛上寻求答案,花费长时间去参考其他项目的精髓,所以当我们成功运行程序,并且程序的功能越来越丰富时,我们都感受到了成就感,而且也增进了我们寝室共同学习的机会,也更让我们对Java、对数据库有了更深的了解和运用,知识真的不仅仅是停留在书本上,只有实际应用起来,才可以更好的运用,融会贯通,我们也感谢JAVA老师给了我们小组这一次通力学习的机会,让我们有机会赋予实践,以后的学习道路上,我们也会尽力合作,发挥特长,共同完成更好更优秀的项目

 

附录(源代码,注意代码格式)

第一个包:

package com.up.demo;

import junit.framework.Test;

import junit.framework.TestCase;

import junit.framework.TestSuite;

/**

* Unit test for simple App.

*/

public class AppTest  

 extends TestCase

{

 public AppTest(String testName)

{

super( testName );

  }

 public static Test suite()

    {

       return new TestSuite( AppTest.class );

 }

/*

* Rigourous Test :-)

*/

    public void testApp()

 {

assertTrue( true );

 }

}

第二个包:

第一个类:

/**

package com.up.student;

/**

+ * 模块说明: 常量

+ *  

+ */

public class AppConstants {

// jdbc

public static final String JDBC_URL = "jdbc:mysql://127.0.0.1:3306/student?useUnicode=true&characterEncodeing=UTF-8";

public static final String JDBC_USERNAME = "root";

public static final String JDBC_PASSWORD = "3.1415926";

public static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; //mySQL的JDBC驱动

 

// student field

public static final String STUDENT_NAME = "姓名";

public static final String STUDENT_SNO = "学号";

public static final String STUDENT_SEX = "性别";

public static final String STUDENT_DEPARTMETN = "院系";

public static final String STUDENT_HOMETOWN = "籍贯";

public static final String STUDENT_EMAIL = "电子邮件";

public static final String STUDENT_TEL = "联系方式";

public static final String STUDENT_MARK = "学分";

 

// login view

public static final String LOGIN_TITLE = "登录界面";

public static final String LOGIN_USERNAME = "用户名";

public static final String LOGIN_PASSWORD = "密码";

public static final String LOGIN = "登录";

public static final String RESET = "重置";

// main view

public static final String MAINVIEW_TITLE = "学生信息管理系统";

public static final String MAINVIEW_PAGENUM_JLABEL_DI = "第 ";

public static final String MAINVIEW_PAGENUM_JLABEL_YE = "/99 页";

public static final String MAINVIEW_FIND_JLABEL = "查询结果";

public static final String MAINVIEW_FIRST = "首页";

public static final String MAINVIEW_LAST = "末页";

public static final String MAINVIEW_PRE = "上一页";

public static final String MAINVIEW_NEXT = "下一页";

public static final String PARAM_FIND_CONDITION = "";

public static final String PARAM_FIND = "查找";

public static final String PARAM_ADD = "添加";

public static final String PARAM_DELETE = "删除";

public static final String PARAM_UPDATE = "更新";

 

// add view

public static final String ADDVIEW_TITLE = "添加学生信息";

public static final String ADDVIEW_ADDBUTTON = "添加";

public static final String EXITBUTTON = "退出";

// delete view

public static final String DELETEVIEW_TITLE = "删除学生信息";

public static final String DELETEVIEW_DELETEBUTTON = "删除";

// update view

public static final String UPDATEVIEW_TITLE = "更新学生信息";

public static final String UPDATEVIEW_UPDATEBUTTON = "更新";

}

第二个类:

package com.up.student;

/**

 * 模块说明: 定制枚举类型

 *  

 */ 

public enum DAO {

AdminDAO, StudentDAO;

// private String str;

// private Clazz(String str) {

// this.str = str;

    // }

// public String getStr() {

// return this.str;

// }

}

第三个包:

第一个类:

package com.up.student.base;

import java.sql.ResultSet;

import java.sql.SQLException;

import com.up.student.DAO;

import com.up.student.dao.AdminDAO;

import com.up.student.dao.StudentDAO;

import com.up.student.util.DBUtil;

/**

+ * 模块说明: DAO基类

+ *  

+ */

public abstract class BaseDAO {

protected final DBUtil db = DBUtil.getDBUtil();

protected ResultSet rs;

private static BaseDAO baseDAO;

public BaseDAO() {

init();

}

 

private void init() {

// buildAbilityDAO();

}

 

// protected abstract void buildAbilityDAO();

 

public static synchronized BaseDAO getAbilityDAO(DAO dao) {

switch (dao) {

case AdminDAO:

if (baseDAO == null || baseDAO.getClass() != AdminDAO.class) {

baseDAO = AdminDAO.getInstance();

}

break;

case StudentDAO:

if (baseDAO == null || baseDAO.getClass() != StudentDAO.class) {

baseDAO = StudentDAO.getInstance();

}

break;

default:

break;

}

return baseDAO;

}

 

protected void destroy() {

try {

if (rs != null) {

rs.close();

}

} catch (SQLException se) {

se.printStackTrace();

} finally {

db.close();

}

}

}

第四个包:

第一个类:

package com.up.student.dao;

import java.sql.SQLException;

import com.up.student.base.BaseDAO;

/**

* 模块说明: 管理员增删改查

* *  

*/

public class AdminDAO extends BaseDAO {

private static AdminDAO ad = null;

public static synchronized AdminDAO getInstance()

{

if (ad == null)

{

ad = new AdminDAO();

}

    return ad;

}

public boolean queryForLogin(String username, String password) {

boolean result = false;

if (username.length() == 0 || password.length() == 0)

{

return result;

}

String sql = "select * from admin where username=? and password=?";

String[] param = { username, password };

rs = db.executeQuery(sql, param);

try {

if (rs.next()) {

result = true;

}

} catch (SQLException e)

{

e.printStackTrace();

} finally

{

destroy();

}

return result;

}

}

第二个类:

package com.up.student.dao;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

import com.up.student.base.BaseDAO;

import com.up.student.model.Student;

/**

+ * 模块说明: 学生增删改查

+ *  

+ */

public class StudentDAO extends BaseDAO {

private final int fieldNum = 9;

private final int showNum = 15;

private static StudentDAO sd = null;

public static synchronized StudentDAO getInstance() {

if (sd == null) {

sd = new StudentDAO();

}

return sd;

}

// update

public boolean update(Student stu) {

boolean result = false;

if (stu == null) {

return result;

}

try {

// check

if (queryBySno(stu.getSno()) == 0) {

return result;

}

// update

String sql = "update student set sex=?,department=?,email=?,tel=?,hometown=?,mark=? where name=? and sno=?";

String[] param = { stu.getSex(), stu.getDepartment(), stu.getEmail(), stu.getTel(), stu.getHomeTown(),

stu.getMark(), stu.getName(), stu.getSno() };

int rowCount = db.executeUpdate(sql, param);

if (rowCount == 1) {

result = true;

}

} catch (SQLException se) {

se.printStackTrace();

} finally {

destroy();

}

return result;

}

 

// delete

public boolean delete(Student stu) {

boolean result = false;

if (stu == null) {

return result;

}

String sql = "delete from student where name=? and sno=?";

String[] param = { stu.getName(), stu.getSno() };

int rowCount = db.executeUpdate(sql, param);

if (rowCount == 1) {

result = true;

}

destroy();

return result;

}

 

// add

public boolean add(Student stu) {

boolean result = false;

if (stu == null) {

return result;

}

try {

// check

if (queryBySno(stu.getSno()) == 1) {

return result;

}

// insert

String sql = "insert into student(name,sno,sex,department,hometown,mark,email,tel) values(?,?,?,?,?,?,?,?)";

String[] param = { stu.getName(), stu.getSno(), stu.getSex(), stu.getDepartment(), stu.getHomeTown(),

stu.getMark(), stu.getEmail(), stu.getTel() };

if (db.executeUpdate(sql, param) == 1) {

result = true;

}

} catch (SQLException se) {

se.printStackTrace();

} finally {

destroy();

}

return result;

}

 

// query by name

public String[][] queryByName(String name) {

String[][] result = null;

if (name.length() < 0) {

return result;

}

List<Student> stus = new ArrayList<Student>();

int i = 0;

String sql = "select * from student where name like ?";

String[] param = { "%" + name + "%" };

rs = db.executeQuery(sql, param);

try {

while (rs.next()) {

buildList(rs, stus, i);

i++;

}

if (stus.size() > 0) {

result = new String[stus.size()][fieldNum];

for (int j = 0; j < stus.size(); j++) {

buildResult(result, stus, j);

}

}

} catch (SQLException se) {

se.printStackTrace();

} finally {

destroy();

}

return result;

}

 

// query

public String[][] list(int pageNum) {

String[][] result = null;

if (pageNum < 1) {

return result;

}

List<Student> stus = new ArrayList<Student>();

int i = 0;

int beginNum = (pageNum - 1) * showNum;

String sql = "select * from student limit ?,?";

Integer[] param = { beginNum, showNum };

rs = db.executeQuery(sql, param);

try {

while (rs.next()) {

buildList(rs, stus, i);

i++;

}

if (stus.size() > 0) {

result = new String[stus.size()][fieldNum];

for (int j = 0; j < stus.size(); j++) {

buildResult(result, stus, j);

}

}

} catch (SQLException se) {

se.printStackTrace();

} finally {

destroy();

}

 

return result;

}

 

// 将rs记录添加到list中

private void buildList(ResultSet rs, List<Student> list, int i) throws SQLException {

Student stu = new Student();

stu.setId(i + 1);

stu.setName(rs.getString("name"));

stu.setDepartment(rs.getString("department"));

stu.setEmail(rs.getString("email"));

stu.setHomeTown(rs.getString("hometown"));

stu.setMark(rs.getString("mark"));

stu.setSex(rs.getString("sex"));

stu.setSno(rs.getString("sno"));

stu.setTel(rs.getString("tel"));

list.add(stu);

}

 

// 将list中记录添加到二维数组中

private void buildResult(String[][] result, List<Student> stus, int j) {

Student stu = stus.get(j);

result[j][0] = String.valueOf(stu.getId());

result[j][1] = stu.getName();

result[j][2] = stu.getSno();

result[j][3] = stu.getSex();

result[j][4] = stu.getDepartment();

result[j][5] = stu.getHomeTown();

result[j][6] = stu.getMark();

result[j][7] = stu.getEmail();

result[j][8] = stu.getTel();

}

// query by sno

private int queryBySno(String sno) throws SQLException {

int result = 0;

if ("".equals(sno) || sno == null) {

return result;

}

String checkSql = "select * from student where sno=?";

String[] checkParam = { sno };

rs = db.executeQuery(checkSql, checkParam);

if (rs.next()) {

result = 1;

}

return result;

}

 

}

第五个包:

第一个类:

package com.up.student.model;

/**

+ * 模块说明:admin 

+ *  

+ */ 

public class Admin {

private int id;

private String name;

private String username;

private String password;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

}

第二个类:

package com.up.student.model;

/**

+ * 模块说明: 学生

+ *  

+ */ 

public class Student {

private int id;

private String sno;// 学号

private String name;

private String sex;

private String department;// 院系

private String homeTown;// 籍贯

private String mark;// 学分

private String email;

private String tel;// 联系方式

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getSno() {

return sno;

}

public void setSno(String sno) {

this.sno = sno;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public String getDepartment() {

return department;

}

public void setDepartment(String department) {

this.department = department;

}

public String getHomeTown() {

return homeTown;

}

public void setHomeTown(String homeTown) {

this.homeTown = homeTown;

}

public String getMark() {

return mark;

}

public void setMark(String mark) {

this.mark = mark;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public String getTel() {

return tel;

}

public void setTel(String tel) {

this.tel = tel;

}

}

第六个包:

package com.up.student.run;

import com.up.student.view.LoginView;

/**

* 模块说明:主函数

*  

*/ 

public class Main {

public static void main(String[] args) {

new LoginView();

  }

}

第七个包:

package com.up.student.util;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import com.up.student.AppConstants;

/**

+ * 模块说明:数据库工具类

+ *  

+ */

public class DBUtil {

private static DBUtil db;

private Connection conn;

private PreparedStatement ps;

private ResultSet rs;

private DBUtil() { }

public static DBUtil getDBUtil() {

if (db == null) {

db = new DBUtil();

}

return db;

}

 

public int executeUpdate(String sql) {

int result = -1;

if (getConn() == null) {

return result;

}

try {

ps = conn.prepareStatement(sql);

result = ps.executeUpdate();

} catch (SQLException e) {

e.printStackTrace();

}

return result;

}

public int executeUpdate(String sql, Object[] obj) {

int result = -1;

if (getConn() == null) {

return result;

}

try {

ps = conn.prepareStatement(sql);

for (int i = 0; i < obj.length; i++) {

ps.setObject(i + 1, obj[i]);

}

result = ps.executeUpdate();

close();

} catch (SQLException e) {

e.printStackTrace();

}

return result;

}

public ResultSet executeQuery(String sql) {

if (getConn() == null) {

return null;

}

try {

ps = conn.prepareStatement(sql);

rs = ps.executeQuery();

} catch (SQLException e) {

e.printStackTrace();

}

return rs;

}

 

public ResultSet executeQuery(String sql, Object[] obj) {

if (getConn() == null) {

return null;

}

try {

ps = conn.prepareStatement(sql);

for (int i = 0; i < obj.length; i++) {

ps.setObject(i + 1, obj[i]);

}

rs = ps.executeQuery();

} catch (SQLException e) {

e.printStackTrace();

}

return rs;

}

 

private Connection getConn() {

try {

if (conn == null || conn.isClosed()) {

Class.forName(AppConstants.JDBC_DRIVER);

conn = DriverManager.getConnection(AppConstants.JDBC_URL, AppConstants.JDBC_USERNAME,

com.up.student.AppConstants.JDBC_PASSWORD);

}

} catch (ClassNotFoundException e) {

System.out.println("jdbc driver is not found.");

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}

return conn;

}

 

public void close() {

try {

if (rs != null) {

rs.close();

}

if (ps != null) {

ps.close();

}

if (conn != null) {

conn.close();

}

} catch (SQLException e) {

e.printStackTrace();

}

}

}

第八个包:

第一个类:

package com.up.student.view;

import java.awt.BorderLayout;

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.JTextField;

import com.up.student.AppConstants;

import com.up.student.DAO;

import com.up.student.base.BaseDAO;

import com.up.student.dao.StudentDAO;

import com.up.student.model.Student;

/**

+ * 模块说明: 添加学生

+ *  

+ */

public class AddView extends JFrame {

private static final long serialVersionUID = -1984182788841566838L;

private JPanel jPanelCenter, jPanelSouth;

private JButton addButton, exitButton;

private JTextField name, sno, department, hometown, mark, email, tel, sex;

public AddView() {

init();

}

private void init() {

setTitle(AppConstants.ADDVIEW_TITLE);

// center panel

jPanelCenter = new JPanel();

jPanelCenter.setLayout(new GridLayout(9, 2));

jPanelCenter.add(new JLabel(AppConstants.STUDENT_NAME));

name = new JTextField();

jPanelCenter.add(name);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_SNO));

sno = new JTextField();

jPanelCenter.add(sno);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_SEX));

sex = new JTextField();

jPanelCenter.add(sex);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_DEPARTMETN));

department = new JTextField();

jPanelCenter.add(department);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_HOMETOWN));

hometown = new JTextField();

jPanelCenter.add(hometown);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_MARK));

mark = new JTextField();

jPanelCenter.add(mark);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_EMAIL));

email = new JTextField();

jPanelCenter.add(email);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_TEL));

tel = new JTextField();

jPanelCenter.add(tel);

jPanelCenter.add(new JLabel("-------------------------------------------------"));

jPanelCenter.add(new JLabel("-------------------------------------------------"));

 

// south panel

jPanelSouth = new JPanel();

jPanelSouth.setLayout(new GridLayout(1, 2));

addButton = new JButton(AppConstants.ADDVIEW_ADDBUTTON);

addButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

if (check()) {

Student stu = new Student();

buildStudent(stu);

boolean isSuccess = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).add(stu);

if (isSuccess) {

setEmpty();

if (MainView.currPageNum < 0 || MainView.currPageNum > 99) {

MainView.currPageNum = 1;

}

String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO))

.list(MainView.currPageNum);

MainView.initJTable(MainView.jTable, result);

}

}

}

});

jPanelSouth.add(addButton);

exitButton = new JButton(AppConstants.EXITBUTTON);

exitButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

dispose();

}

});

jPanelSouth.add(exitButton);

 

this.add(jPanelCenter, BorderLayout.CENTER);

this.add(jPanelSouth, BorderLayout.SOUTH);

 

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

setBounds(470, 200, 400, 270);

setResizable(false);

setVisible(true);

}

 

private boolean check() {

boolean result = false;

if ("".equals(name.getText()) || "".equals(sno.getText()) || "".equals(department.getText())

|| "".equals(sex.getText()) || "".equals(mark.getText()) || "".equals(tel.getText())

|| "".equals(email.getText()) || "".equals(hometown.getText())) {

return result;

} else {

result = true;

}

return result;

}

 

private void buildStudent(Student stu) {

stu.setDepartment(department.getText());

stu.setEmail(email.getText());

stu.setHomeTown(hometown.getText());

stu.setMark(mark.getText());

stu.setName(name.getText());

stu.setSno(sno.getText());

stu.setTel(tel.getText());

stu.setSex(sex.getText());

}

 

private void setEmpty() {

name.setText("");

sno.setText("");

department.setText("");

sex.setText("");

email.setText("");

hometown.setText("");

tel.setText("");

mark.setText("");

}

}

第二个类:

package com.up.student.view;

import java.awt.BorderLayout;

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.JTextField;

import com.up.student.AppConstants;

import com.up.student.DAO;

import com.up.student.base.BaseDAO;

import com.up.student.dao.StudentDAO;

import com.up.student.model.Student;

/**

+ * 模块说明: 删除学生

+ *  

+ */

public class DeleteView extends JFrame {

private static final long serialVersionUID = -7668153283910203959L;

 

private JPanel jPanelCenter, jPanelSouth;

private JButton deleteButton, exitButton;

private JTextField name, sno; // 根据姓名+学号删除学生

 

public DeleteView() {

init();

}

private void init() {

setTitle(AppConstants.DELETEVIEW_TITLE);

// center panel

jPanelCenter = new JPanel();

jPanelCenter.setLayout(new GridLayout(3, 2));

jPanelCenter.add(new JLabel(AppConstants.STUDENT_NAME));

name = new JTextField();

jPanelCenter.add(name);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_SNO));

sno = new JTextField();

jPanelCenter.add(sno);

jPanelCenter.add(new JLabel("-------------------------------------------------"));

jPanelCenter.add(new JLabel("-------------------------------------------------"));

// south panel

jPanelSouth = new JPanel();

jPanelSouth.setLayout(new GridLayout(1, 2));

deleteButton = new JButton(AppConstants.DELETEVIEW_DELETEBUTTON);

deleteButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

if (check()) {

Student stu = new Student();

buildStudent(stu);

boolean isSuccess = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).delete(stu);

if (isSuccess) {

setEmpty();

if (MainView.currPageNum < 0 || MainView.currPageNum > 99) {

MainView.currPageNum = 1;

}

String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO))

.list(MainView.currPageNum);

MainView.initJTable(MainView.jTable, result);

}

}

}

});

jPanelSouth.add(deleteButton);

exitButton = new JButton(AppConstants.EXITBUTTON);

exitButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

dispose();

}

});

jPanelSouth.add(exitButton);

this.add(jPanelCenter, BorderLayout.CENTER);

this.add(jPanelSouth, BorderLayout.SOUTH);

 

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

setBounds(470, 250, 400, 130);

setResizable(false);

setVisible(true);

}

 

private boolean check() {

boolean result = false;

if ("".equals(name.getText()) || "".equals(sno.getText())) {

return result;

} else {

result = true;

}

return result;

}

private void buildStudent(Student stu) {

stu.setName(name.getText());

stu.setSno(sno.getText());

}

private void setEmpty() {

name.setText("");

sno.setText("");

}

}

第三个类:

package com.up.student.view;

import java.awt.BorderLayout;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JPasswordField;

import javax.swing.JTextField;

import com.up.student.AppConstants;

import com.up.student.DAO;

import com.up.student.base.BaseDAO;

import com.up.student.dao.AdminDAO;

/**

* 模块说明: 登录界面

 *  

*/

public class LoginView extends JFrame {

private static final long serialVersionUID = -5278598737087831336L;

private JPanel jPanelCenter, jPanelSouth;

private JTextField username;

private JPasswordField password;

private JButton loginButton, resetButton;

 

public LoginView() {

init();

}

private void init() {

this.setTitle("Login");

 

jPanelCenter = new JPanel();

jPanelCenter.setLayout(new GridLayout(3, 2));

jPanelCenter.add(new JLabel(AppConstants.LOGIN_USERNAME));

username = new JTextField();

jPanelCenter.add(username);

jPanelCenter.add(new JLabel(AppConstants.LOGIN_PASSWORD));

password = new JPasswordField();

// enter key listener

password.addKeyListener(new LoginListener());

jPanelCenter.add(password);

jPanelCenter.add(new JLabel("----------------------------------------------"));

jPanelCenter.add(new JLabel("----------------------------------------------"));

jPanelSouth = new JPanel();

jPanelSouth.setLayout(new GridLayout(1, 2));

loginButton = new JButton(AppConstants.LOGIN);

loginButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

check();

}

});

jPanelSouth.add(loginButton);

resetButton = new JButton(AppConstants.RESET);

resetButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

username.setText("");

password.setText("");

}

});

jPanelSouth.add(resetButton);

this.add(jPanelCenter, BorderLayout.CENTER);

this.add(jPanelSouth, BorderLayout.SOUTH);

 

this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);

this.setBounds(450, 250, 375, 140);

this.setResizable(false);

this.setVisible(true);

}

 

private class LoginListener extends KeyAdapter {

 

@Override

public void keyPressed(KeyEvent e) {

if (e.getKeyCode() == KeyEvent.VK_ENTER) {

check();

}

}

}

private void check() {

AdminDAO adminDAO = (AdminDAO) BaseDAO.getAbilityDAO(DAO.AdminDAO);

if (adminDAO.queryForLogin(username.getText(), String.valueOf(password.getPassword()))) {

dispose();

new MainView();

} else {

username.setText("");

password.setText("");

}

}

 

}

第四个类:

package com.up.student.view;

import java.awt.BorderLayout;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import javax.swing.table.DefaultTableCellRenderer;

import javax.swing.table.DefaultTableModel;

import javax.swing.table.TableColumn;

import com.up.student.AppConstants;

import com.up.student.DAO;

import com.up.student.base.BaseDAO;

import com.up.student.dao.StudentDAO;

/**

+ * 模块说明: 首页

+ *  

 */

public class MainView extends JFrame {

 

private static final long serialVersionUID = 5870864087464173884L;

 

private final int maxPageNum = 99;

 

private JPanel jPanelNorth, jPanelSouth, jPanelCenter;

private JButton jButtonFirst, jButtonLast, jButtonNext, jButtonPre, jButtonAdd, jButtonDelete, jButtonUpdate,

jButtonFind;

private JLabel currPageNumJLabel;

private JTextField condition;

public static JTable jTable;

private JScrollPane jScrollPane;

private DefaultTableModel myTableModel;

public static String[] column = { "id", AppConstants.STUDENT_NAME, AppConstants.STUDENT_SNO,

AppConstants.STUDENT_SEX, AppConstants.STUDENT_DEPARTMETN, AppConstants.STUDENT_HOMETOWN,

AppConstants.STUDENT_MARK, AppConstants.STUDENT_EMAIL, AppConstants.STUDENT_TEL };

public static int currPageNum = 1;

 

public MainView() {

init();

}

private void init() {

setTitle(AppConstants.MAINVIEW_TITLE);

 

// north panel

jPanelNorth = new JPanel();

jPanelNorth.setLayout(new GridLayout(1, 5));

condition = new JTextField(AppConstants.PARAM_FIND_CONDITION);

condition.addKeyListener(new FindListener());

jPanelNorth.add(condition);

// query by name

jButtonFind = new JButton(AppConstants.PARAM_FIND);

jButtonFind.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

find();

}

});

jButtonFind.addKeyListener(new FindListener());

// add

jPanelNorth.add(jButtonFind);

jButtonAdd = new JButton(AppConstants.PARAM_ADD);

jButtonAdd.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

new AddView();

}

});

jPanelNorth.add(jButtonAdd);

// delete

jButtonDelete = new JButton(AppConstants.PARAM_DELETE);

jButtonDelete.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

new DeleteView();

}

});

jPanelNorth.add(jButtonDelete);

// update

jButtonUpdate = new JButton(AppConstants.PARAM_UPDATE);

jButtonUpdate.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

new UpdateView();

}

});

jPanelNorth.add(jButtonUpdate);

// center panel

jPanelCenter = new JPanel();

jPanelCenter.setLayout(new GridLayout(1, 1));

// init jTable

String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).list(currPageNum);

myTableModel = new DefaultTableModel(result, column);

jTable = new JTable(myTableModel);

DefaultTableCellRenderer cr = new DefaultTableCellRenderer();

cr.setHorizontalAlignment(JLabel.CENTER);

jTable.setDefaultRenderer(Object.class, cr);

initJTable(jTable, result);

 

jScrollPane = new JScrollPane(jTable);

jPanelCenter.add(jScrollPane);

 

// south panel

jPanelSouth = new JPanel();

jPanelSouth.setLayout(new GridLayout(1, 5));

jButtonFirst = new JButton(AppConstants.MAINVIEW_FIRST);

jButtonFirst.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

currPageNum = 1;

String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).list(currPageNum);

initJTable(jTable, result);

currPageNumJLabel.setText(AppConstants.MAINVIEW_PAGENUM_JLABEL_DI + currPageNum

+ AppConstants.MAINVIEW_PAGENUM_JLABEL_YE);

}

});

jButtonPre = new JButton(AppConstants.MAINVIEW_PRE);

jButtonPre.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

currPageNum--;

if (currPageNum <= 0) {

currPageNum = 1;

}

initJTable(jTable, result);

currPageNumJLabel.setText(AppConstants.MAINVIEW_PAGENUM_JLABEL_DI + currPageNum

+ AppConstants.MAINVIEW_PAGENUM_JLABEL_YE);

}

});

jButtonNext = new JButton(AppConstants.MAINVIEW_NEXT);

jButtonNext.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

currPageNum++;

if (currPageNum > maxPageNum) {

currPageNum = maxPageNum;

}

String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).list(currPageNum);

initJTable(jTable, result);

currPageNumJLabel.setText(AppConstants.MAINVIEW_PAGENUM_JLABEL_DI + currPageNum

+ AppConstants.MAINVIEW_PAGENUM_JLABEL_YE);

}

});

jButtonLast = new JButton(AppConstants.MAINVIEW_LAST);

jButtonLast.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

currPageNum = maxPageNum;

String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).list(currPageNum);

initJTable(jTable, result);

currPageNumJLabel.setText(AppConstants.MAINVIEW_PAGENUM_JLABEL_DI + currPageNum

+ AppConstants.MAINVIEW_PAGENUM_JLABEL_YE);

}

});

 

currPageNumJLabel = new JLabel(

AppConstants.MAINVIEW_PAGENUM_JLABEL_DI + currPageNum + AppConstants.MAINVIEW_PAGENUM_JLABEL_YE);

currPageNumJLabel.setHorizontalAlignment(JLabel.CENTER);

 

jPanelSouth.add(jButtonFirst);

jPanelSouth.add(jButtonPre);

jPanelSouth.add(currPageNumJLabel);

jPanelSouth.add(jButtonNext);

jPanelSouth.add(jButtonLast);

this.add(jPanelNorth, BorderLayout.NORTH);

this.add(jPanelCenter, BorderLayout.CENTER);

this.add(jPanelSouth, BorderLayout.SOUTH);

 

setBounds(400, 200, 750, 340);

setResizable(false);

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

setVisible(true);

}

 

public static void initJTable(JTable jTable, String[][] result) {

((DefaultTableModel) jTable.getModel()).setDataVector(result, column);

jTable.setRowHeight(20);

TableColumn firsetColumn = jTable.getColumnModel().getColumn(0);

firsetColumn.setPreferredWidth(30);

firsetColumn.setMaxWidth(30);

firsetColumn.setMinWidth(30);

TableColumn secondColumn = jTable.getColumnModel().getColumn(1);

secondColumn.setPreferredWidth(60);

secondColumn.setMaxWidth(60);

secondColumn.setMinWidth(60);

TableColumn thirdColumn = jTable.getColumnModel().getColumn(2);

thirdColumn.setPreferredWidth(90);

thirdColumn.setMaxWidth(90);

thirdColumn.setMinWidth(90);

TableColumn fourthColumn = jTable.getColumnModel().getColumn(3);

fourthColumn.setPreferredWidth(30);

fourthColumn.setMaxWidth(30);

fourthColumn.setMinWidth(30);

TableColumn seventhColumn = jTable.getColumnModel().getColumn(6);

seventhColumn.setPreferredWidth(30);

seventhColumn.setMaxWidth(30);

seventhColumn.setMinWidth(30);

TableColumn ninthColumn = jTable.getColumnModel().getColumn(8);

ninthColumn.setPreferredWidth(90);

ninthColumn.setMaxWidth(90);

ninthColumn.setMinWidth(90);

}

private class FindListener extends KeyAdapter {

 

@Override

public void keyPressed(KeyEvent e) {

if (e.getKeyCode() == KeyEvent.VK_ENTER) {

find();

}

}

}

 

private void find() {

currPageNum = 0;

String param = condition.getText();

if ("".equals(param) || param == null) {

initJTable(MainView.jTable, null);

currPageNumJLabel.setText(AppConstants.MAINVIEW_FIND_JLABEL);

return;

}

String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).queryByName(param);

condition.setText("");

initJTable(MainView.jTable, result);

currPageNumJLabel.setText(AppConstants.MAINVIEW_FIND_JLABEL);

}

 

}

第五个类:

package com.up.student.view;

import java.awt.BorderLayout;

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.JTextField;

import com.up.student.AppConstants;

import com.up.student.DAO;

import com.up.student.base.BaseDAO;

import com.up.student.dao.StudentDAO;

import com.up.student.model.Student;

/**

+ * 模块说明: 更新学生信息

+ *  

+ */

public class UpdateView extends JFrame {

 

private static final long serialVersionUID = 5292738820127102731L;

 

private JPanel jPanelCenter, jPanelSouth;

private JButton updateButton, exitButton;

private JTextField name, sno, department, hometown, mark, email, tel, sex;

 

public UpdateView() {

init();

}

private void init() {

setTitle(AppConstants.UPDATEVIEW_TITLE);

// center panel

jPanelCenter = new JPanel();

jPanelCenter.setLayout(new GridLayout(9, 2));

jPanelCenter.add(new JLabel(AppConstants.STUDENT_NAME));

name = new JTextField();

jPanelCenter.add(name);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_SNO));

sno = new JTextField();

jPanelCenter.add(sno);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_SEX));

sex = new JTextField();

jPanelCenter.add(sex);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_DEPARTMETN));

department = new JTextField();

jPanelCenter.add(department);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_HOMETOWN));

hometown = new JTextField();

jPanelCenter.add(hometown);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_MARK));

mark = new JTextField();

jPanelCenter.add(mark);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_EMAIL));

email = new JTextField();

jPanelCenter.add(email);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_TEL));

tel = new JTextField();

jPanelCenter.add(tel);

jPanelCenter.add(new JLabel("-------------------------------------------------"));

jPanelCenter.add(new JLabel("-------------------------------------------------"));

 

// south panel

jPanelSouth = new JPanel();

jPanelSouth.setLayout(new GridLayout(1, 2));

updateButton = new JButton(AppConstants.UPDATEVIEW_UPDATEBUTTON);

updateButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

if (check()) {

Student stu = new Student();

buildStudent(stu);

boolean isSuccess = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).update(stu);

if (isSuccess) {

setEmpty();

if (MainView.currPageNum < 0 || MainView.currPageNum > 99) {

MainView.currPageNum = 1;

}

String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO))

.list(MainView.currPageNum);

MainView.initJTable(MainView.jTable, result);

}

}

}

});

jPanelSouth.add(updateButton);

exitButton = new JButton(AppConstants.EXITBUTTON);

exitButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

dispose();

}

});

jPanelSouth.add(exitButton);

 

this.add(jPanelCenter, BorderLayout.CENTER);

this.add(jPanelSouth, BorderLayout.SOUTH);

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

setBounds(470, 200, 400, 270);

setResizable(false);

setVisible(true);

}

 

private boolean check() {

boolean result = false;

if ("".equals(name.getText()) || "".equals(sno.getText()) || "".equals(department.getText())

|| "".equals(sex.getText()) || "".equals(mark.getText()) || "".equals(tel.getText())

|| "".equals(email.getText()) || "".equals(hometown.getText())) {

return result;

} else {

result = true;

}

return result;

}

private void buildStudent(Student stu) {

stu.setDepartment(department.getText());

stu.setEmail(email.getText());

stu.setHomeTown(hometown.getText());

stu.setMark(mark.getText());

stu.setName(name.getText());

stu.setSno(sno.getText());

stu.setTel(tel.getText());

stu.setSex(sex.getText());

}

 

private void setEmpty() {

name.setText("");

sno.setText("");

department.setText("");

sex.setText("");

目录

一、需求分析(三号,宋体,粗体) 2

二、系统设计(三号,宋体,粗体) 2

(一)系统中的数据定义(四号,黑体,粗体) 2

(二)系统的概要设计 2

(三)系统的详细设计 2

(四)系统的核心算法 2

三、系统编码及运行(三号,宋体,粗体) 3

(一)系统开发涉及的软件 3

(二)系统运行界面及结果 3

四、系统测试(三号,宋体,粗体) 3

五、总结 3

附录(源代码) 4

(注:这部分可以点击右键更新生成,重新设置字体为四号)

 

 

 

 

 

  • 需求分析

教务管理是大学的主要日常管理工作之一,涉及到师生方面的诸多信息,随着教学体制的不断改革,教务管理日常的工作日趋繁重,复杂,如何把教务工作信息化,模块化,便捷化是现代高效发展的重点,所以迫于需要研制开发一种综合教务管理软件,建成一个完整统一,技术先进,高效稳定,安全可靠的教学信息管理系统

这款教务系统比以往传统的人工管理更具有安全性和快捷性,更方便我们管理,对学校的整个教务系统变动进行综合管理和快速查询。为了节省在教务管理花费的人力和物力,同时便于学校掌握这方面的详细情况,有助于提高整个学校的教务水平和管理水平。

 

系统设计

系统中的数据定义

     管理员:增加数据

             删除数据

             修改数据

             查询数据

学生:增加数据

            删除数据

            修改数据

            查询数据

 

(二)系统的概要设计

     

  • 系统的详细设计

     管理员(学生)增加信息功能模块:管理员登入系统(进入图形化界面显示),输入待添加学生姓名,性别,学号,院系,籍贯,学分,电子邮件,联系方式等信息,是否继续添加,确认,保存信息

     管理员(学生)删除信息功能模块:管理员登入系统(进入图形化界面显示),输入待删除学生姓名,学号信息,是否继续删除,确认,成功删除学生信息

     管理员(学生)更新信息功能模块:管理员登入系统(进入图形化界面显示),输入待更新学生姓名,性别,学号,院系,籍贯,学分,电子邮件,联系方式等信息,是否继续更新,确认,保存信息

     管理员(学生)查找信息功能模块:管理员登入系统(进入图形化界面显示),输入待查找学生姓名信息,是否继续查找,确认,显示学生信息    

      

  • 系统的核心算法

       // jdbc

public static final String JDBC_URL = "jdbc:mysql://127.0.0.1:3306/student?useUnicode=true&characterEncodeing=UTF-8";

public static final String JDBC_USERNAME = "root";

public static final String JDBC_PASSWORD = "3.1415926";

public static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; //mySQL的JDBC驱动

 

// student field

public static final String STUDENT_NAME = "姓名";

public static final String STUDENT_SNO = "学号";

public static final String STUDENT_SEX = "性别";

public static final String STUDENT_DEPARTMETN = "院系";

public static final String STUDENT_HOMETOWN = "籍贯";

public static final String STUDENT_EMAIL = "电子邮件";

public static final String STUDENT_TEL = "联系方式";

public static final String STUDENT_MARK = "学分";

 

// login view

public static final String LOGIN_TITLE = "登录界面";

public static final String LOGIN_USERNAME = "用户名";

public static final String LOGIN_PASSWORD = "密码";

public static final String LOGIN = "登录";

public static final String RESET = "重置";

// main view

public static final String MAINVIEW_TITLE = "学生信息管理系统";

public static final String MAINVIEW_PAGENUM_JLABEL_DI = "第 ";

public static final String MAINVIEW_PAGENUM_JLABEL_YE = "/99 页";

public static final String MAINVIEW_FIND_JLABEL = "查询结果";

public static final String MAINVIEW_FIRST = "首页";

public static final String MAINVIEW_LAST = "末页";

public static final String MAINVIEW_PRE = "上一页";

public static final String MAINVIEW_NEXT = "下一页";

public static final String PARAM_FIND_CONDITION = "";

public static final String PARAM_FIND = "查找";

public static final String PARAM_ADD = "添加";

public static final String PARAM_DELETE = "删除";

public static final String PARAM_UPDATE = "更新";

 

// add view

public static final String ADDVIEW_TITLE = "添加学生信息";

public static final String ADDVIEW_ADDBUTTON = "添加";

public static final String EXITBUTTON = "退出";

// delete view

public static final String DELETEVIEW_TITLE = "删除学生信息";

public static final String DELETEVIEW_DELETEBUTTON = "删除";

// update view

public static final String UPDATEVIEW_TITLE = "更新学生信息";

public static final String UPDATEVIEW_UPDATEBUTTON = "更新";

 

 

     

系统编码及运行(三号,宋体,粗体)

系统开发涉及的软件

     Eclipse

     画图软件

     Microsoft Word

(二)系统运行界面及结果

     图1 主函数返回view界面

     

图2  图形化界面显示:

图3 原始数据库信息:

图4 查找信息:

图5 增加信息

图6 添加页面显示信息:

图7 删除信息现实页面:

图8 输入待删除学生的信息

图9 删除成功:

图10 信息的更新

图11 更新信息:

图12 更新后的结果显示

 

系统测试(三号,宋体,粗体)

     

  • 总结

教务管理系统是学校的管理核心,管理应设计到学校的专业设置,学籍管理,成绩管理,管理人员可以在互联网的任何地方办公,真正实现学校网上管理。开发“教务信息管理系统”的目的就是利用计算机的查询和运算功能,代替手工处理,提高了工作效力和质量,所以该系统是必要而且能够实现的。

在设计阶段,我们小组认为功能很容易可以实现,基本上都是对数据的增删改查,然而实际上在真正写代码的时候我们遇到了很多没有想到的问题,甚至一些问题会困扰我们程序的进行,我们组所以在各种论坛上寻求答案,花费长时间去参考其他项目的精髓,所以当我们成功运行程序,并且程序的功能越来越丰富时,我们都感受到了成就感,而且也增进了我们寝室共同学习的机会,也更让我们对Java、对数据库有了更深的了解和运用,知识真的不仅仅是停留在书本上,只有实际应用起来,才可以更好的运用,融会贯通,我们也感谢JAVA老师给了我们小组这一次通力学习的机会,让我们有机会赋予实践,以后的学习道路上,我们也会尽力合作,发挥特长,共同完成更好更优秀的项目

 

附录(源代码,注意代码格式)

第一个包:

package com.up.demo;

import junit.framework.Test;

import junit.framework.TestCase;

import junit.framework.TestSuite;

/**

* Unit test for simple App.

*/

public class AppTest  

 extends TestCase

{

 public AppTest(String testName)

{

super( testName );

  }

 public static Test suite()

    {

       return new TestSuite( AppTest.class );

 }

/*

* Rigourous Test :-)

*/

    public void testApp()

 {

assertTrue( true );

 }

}

第二个包:

第一个类:

/**

package com.up.student;

/**

+ * 模块说明: 常量

+ *  

+ */

public class AppConstants {

// jdbc

public static final String JDBC_URL = "jdbc:mysql://127.0.0.1:3306/student?useUnicode=true&characterEncodeing=UTF-8";

public static final String JDBC_USERNAME = "root";

public static final String JDBC_PASSWORD = "3.1415926";

public static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; //mySQL的JDBC驱动

 

// student field

public static final String STUDENT_NAME = "姓名";

public static final String STUDENT_SNO = "学号";

public static final String STUDENT_SEX = "性别";

public static final String STUDENT_DEPARTMETN = "院系";

public static final String STUDENT_HOMETOWN = "籍贯";

public static final String STUDENT_EMAIL = "电子邮件";

public static final String STUDENT_TEL = "联系方式";

public static final String STUDENT_MARK = "学分";

 

// login view

public static final String LOGIN_TITLE = "登录界面";

public static final String LOGIN_USERNAME = "用户名";

public static final String LOGIN_PASSWORD = "密码";

public static final String LOGIN = "登录";

public static final String RESET = "重置";

// main view

public static final String MAINVIEW_TITLE = "学生信息管理系统";

public static final String MAINVIEW_PAGENUM_JLABEL_DI = "第 ";

public static final String MAINVIEW_PAGENUM_JLABEL_YE = "/99 页";

public static final String MAINVIEW_FIND_JLABEL = "查询结果";

public static final String MAINVIEW_FIRST = "首页";

public static final String MAINVIEW_LAST = "末页";

public static final String MAINVIEW_PRE = "上一页";

public static final String MAINVIEW_NEXT = "下一页";

public static final String PARAM_FIND_CONDITION = "";

public static final String PARAM_FIND = "查找";

public static final String PARAM_ADD = "添加";

public static final String PARAM_DELETE = "删除";

public static final String PARAM_UPDATE = "更新";

 

// add view

public static final String ADDVIEW_TITLE = "添加学生信息";

public static final String ADDVIEW_ADDBUTTON = "添加";

public static final String EXITBUTTON = "退出";

// delete view

public static final String DELETEVIEW_TITLE = "删除学生信息";

public static final String DELETEVIEW_DELETEBUTTON = "删除";

// update view

public static final String UPDATEVIEW_TITLE = "更新学生信息";

public static final String UPDATEVIEW_UPDATEBUTTON = "更新";

}

第二个类:

package com.up.student;

/**

 * 模块说明: 定制枚举类型

 *  

 */ 

public enum DAO {

AdminDAO, StudentDAO;

// private String str;

// private Clazz(String str) {

// this.str = str;

    // }

// public String getStr() {

// return this.str;

// }

}

第三个包:

第一个类:

package com.up.student.base;

import java.sql.ResultSet;

import java.sql.SQLException;

import com.up.student.DAO;

import com.up.student.dao.AdminDAO;

import com.up.student.dao.StudentDAO;

import com.up.student.util.DBUtil;

/**

+ * 模块说明: DAO基类

+ *  

+ */

public abstract class BaseDAO {

protected final DBUtil db = DBUtil.getDBUtil();

protected ResultSet rs;

private static BaseDAO baseDAO;

public BaseDAO() {

init();

}

 

private void init() {

// buildAbilityDAO();

}

 

// protected abstract void buildAbilityDAO();

 

public static synchronized BaseDAO getAbilityDAO(DAO dao) {

switch (dao) {

case AdminDAO:

if (baseDAO == null || baseDAO.getClass() != AdminDAO.class) {

baseDAO = AdminDAO.getInstance();

}

break;

case StudentDAO:

if (baseDAO == null || baseDAO.getClass() != StudentDAO.class) {

baseDAO = StudentDAO.getInstance();

}

break;

default:

break;

}

return baseDAO;

}

 

protected void destroy() {

try {

if (rs != null) {

rs.close();

}

} catch (SQLException se) {

se.printStackTrace();

} finally {

db.close();

}

}

}

第四个包:

第一个类:

package com.up.student.dao;

import java.sql.SQLException;

import com.up.student.base.BaseDAO;

/**

* 模块说明: 管理员增删改查

* *  

*/

public class AdminDAO extends BaseDAO {

private static AdminDAO ad = null;

public static synchronized AdminDAO getInstance()

{

if (ad == null)

{

ad = new AdminDAO();

}

    return ad;

}

public boolean queryForLogin(String username, String password) {

boolean result = false;

if (username.length() == 0 || password.length() == 0)

{

return result;

}

String sql = "select * from admin where username=? and password=?";

String[] param = { username, password };

rs = db.executeQuery(sql, param);

try {

if (rs.next()) {

result = true;

}

} catch (SQLException e)

{

e.printStackTrace();

} finally

{

destroy();

}

return result;

}

}

第二个类:

package com.up.student.dao;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

import com.up.student.base.BaseDAO;

import com.up.student.model.Student;

/**

+ * 模块说明: 学生增删改查

+ *  

+ */

public class StudentDAO extends BaseDAO {

private final int fieldNum = 9;

private final int showNum = 15;

private static StudentDAO sd = null;

public static synchronized StudentDAO getInstance() {

if (sd == null) {

sd = new StudentDAO();

}

return sd;

}

// update

public boolean update(Student stu) {

boolean result = false;

if (stu == null) {

return result;

}

try {

// check

if (queryBySno(stu.getSno()) == 0) {

return result;

}

// update

String sql = "update student set sex=?,department=?,email=?,tel=?,hometown=?,mark=? where name=? and sno=?";

String[] param = { stu.getSex(), stu.getDepartment(), stu.getEmail(), stu.getTel(), stu.getHomeTown(),

stu.getMark(), stu.getName(), stu.getSno() };

int rowCount = db.executeUpdate(sql, param);

if (rowCount == 1) {

result = true;

}

} catch (SQLException se) {

se.printStackTrace();

} finally {

destroy();

}

return result;

}

 

// delete

public boolean delete(Student stu) {

boolean result = false;

if (stu == null) {

return result;

}

String sql = "delete from student where name=? and sno=?";

String[] param = { stu.getName(), stu.getSno() };

int rowCount = db.executeUpdate(sql, param);

if (rowCount == 1) {

result = true;

}

destroy();

return result;

}

 

// add

public boolean add(Student stu) {

boolean result = false;

if (stu == null) {

return result;

}

try {

// check

if (queryBySno(stu.getSno()) == 1) {

return result;

}

// insert

String sql = "insert into student(name,sno,sex,department,hometown,mark,email,tel) values(?,?,?,?,?,?,?,?)";

String[] param = { stu.getName(), stu.getSno(), stu.getSex(), stu.getDepartment(), stu.getHomeTown(),

stu.getMark(), stu.getEmail(), stu.getTel() };

if (db.executeUpdate(sql, param) == 1) {

result = true;

}

} catch (SQLException se) {

se.printStackTrace();

} finally {

destroy();

}

return result;

}

 

// query by name

public String[][] queryByName(String name) {

String[][] result = null;

if (name.length() < 0) {

return result;

}

List<Student> stus = new ArrayList<Student>();

int i = 0;

String sql = "select * from student where name like ?";

String[] param = { "%" + name + "%" };

rs = db.executeQuery(sql, param);

try {

while (rs.next()) {

buildList(rs, stus, i);

i++;

}

if (stus.size() > 0) {

result = new String[stus.size()][fieldNum];

for (int j = 0; j < stus.size(); j++) {

buildResult(result, stus, j);

}

}

} catch (SQLException se) {

se.printStackTrace();

} finally {

destroy();

}

return result;

}

 

// query

public String[][] list(int pageNum) {

String[][] result = null;

if (pageNum < 1) {

return result;

}

List<Student> stus = new ArrayList<Student>();

int i = 0;

int beginNum = (pageNum - 1) * showNum;

String sql = "select * from student limit ?,?";

Integer[] param = { beginNum, showNum };

rs = db.executeQuery(sql, param);

try {

while (rs.next()) {

buildList(rs, stus, i);

i++;

}

if (stus.size() > 0) {

result = new String[stus.size()][fieldNum];

for (int j = 0; j < stus.size(); j++) {

buildResult(result, stus, j);

}

}

} catch (SQLException se) {

se.printStackTrace();

} finally {

destroy();

}

 

return result;

}

 

// 将rs记录添加到list中

private void buildList(ResultSet rs, List<Student> list, int i) throws SQLException {

Student stu = new Student();

stu.setId(i + 1);

stu.setName(rs.getString("name"));

stu.setDepartment(rs.getString("department"));

stu.setEmail(rs.getString("email"));

stu.setHomeTown(rs.getString("hometown"));

stu.setMark(rs.getString("mark"));

stu.setSex(rs.getString("sex"));

stu.setSno(rs.getString("sno"));

stu.setTel(rs.getString("tel"));

list.add(stu);

}

 

// 将list中记录添加到二维数组中

private void buildResult(String[][] result, List<Student> stus, int j) {

Student stu = stus.get(j);

result[j][0] = String.valueOf(stu.getId());

result[j][1] = stu.getName();

result[j][2] = stu.getSno();

result[j][3] = stu.getSex();

result[j][4] = stu.getDepartment();

result[j][5] = stu.getHomeTown();

result[j][6] = stu.getMark();

result[j][7] = stu.getEmail();

result[j][8] = stu.getTel();

}

// query by sno

private int queryBySno(String sno) throws SQLException {

int result = 0;

if ("".equals(sno) || sno == null) {

return result;

}

String checkSql = "select * from student where sno=?";

String[] checkParam = { sno };

rs = db.executeQuery(checkSql, checkParam);

if (rs.next()) {

result = 1;

}

return result;

}

 

}

第五个包:

第一个类:

package com.up.student.model;

/**

+ * 模块说明:admin 

+ *  

+ */ 

public class Admin {

private int id;

private String name;

private String username;

private String password;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

}

第二个类:

package com.up.student.model;

/**

+ * 模块说明: 学生

+ *  

+ */ 

public class Student {

private int id;

private String sno;// 学号

private String name;

private String sex;

private String department;// 院系

private String homeTown;// 籍贯

private String mark;// 学分

private String email;

private String tel;// 联系方式

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getSno() {

return sno;

}

public void setSno(String sno) {

this.sno = sno;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public String getDepartment() {

return department;

}

public void setDepartment(String department) {

this.department = department;

}

public String getHomeTown() {

return homeTown;

}

public void setHomeTown(String homeTown) {

this.homeTown = homeTown;

}

public String getMark() {

return mark;

}

public void setMark(String mark) {

this.mark = mark;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public String getTel() {

return tel;

}

public void setTel(String tel) {

this.tel = tel;

}

}

第六个包:

package com.up.student.run;

import com.up.student.view.LoginView;

/**

* 模块说明:主函数

*  

*/ 

public class Main {

public static void main(String[] args) {

new LoginView();

  }

}

第七个包:

package com.up.student.util;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import com.up.student.AppConstants;

/**

+ * 模块说明:数据库工具类

+ *  

+ */

public class DBUtil {

private static DBUtil db;

private Connection conn;

private PreparedStatement ps;

private ResultSet rs;

private DBUtil() { }

public static DBUtil getDBUtil() {

if (db == null) {

db = new DBUtil();

}

return db;

}

 

public int executeUpdate(String sql) {

int result = -1;

if (getConn() == null) {

return result;

}

try {

ps = conn.prepareStatement(sql);

result = ps.executeUpdate();

} catch (SQLException e) {

e.printStackTrace();

}

return result;

}

public int executeUpdate(String sql, Object[] obj) {

int result = -1;

if (getConn() == null) {

return result;

}

try {

ps = conn.prepareStatement(sql);

for (int i = 0; i < obj.length; i++) {

ps.setObject(i + 1, obj[i]);

}

result = ps.executeUpdate();

close();

} catch (SQLException e) {

e.printStackTrace();

}

return result;

}

public ResultSet executeQuery(String sql) {

if (getConn() == null) {

return null;

}

try {

ps = conn.prepareStatement(sql);

rs = ps.executeQuery();

} catch (SQLException e) {

e.printStackTrace();

}

return rs;

}

 

public ResultSet executeQuery(String sql, Object[] obj) {

if (getConn() == null) {

return null;

}

try {

ps = conn.prepareStatement(sql);

for (int i = 0; i < obj.length; i++) {

ps.setObject(i + 1, obj[i]);

}

rs = ps.executeQuery();

} catch (SQLException e) {

e.printStackTrace();

}

return rs;

}

 

private Connection getConn() {

try {

if (conn == null || conn.isClosed()) {

Class.forName(AppConstants.JDBC_DRIVER);

conn = DriverManager.getConnection(AppConstants.JDBC_URL, AppConstants.JDBC_USERNAME,

com.up.student.AppConstants.JDBC_PASSWORD);

}

} catch (ClassNotFoundException e) {

System.out.println("jdbc driver is not found.");

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}

return conn;

}

 

public void close() {

try {

if (rs != null) {

rs.close();

}

if (ps != null) {

ps.close();

}

if (conn != null) {

conn.close();

}

} catch (SQLException e) {

e.printStackTrace();

}

}

}

第八个包:

第一个类:

package com.up.student.view;

import java.awt.BorderLayout;

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.JTextField;

import com.up.student.AppConstants;

import com.up.student.DAO;

import com.up.student.base.BaseDAO;

import com.up.student.dao.StudentDAO;

import com.up.student.model.Student;

/**

+ * 模块说明: 添加学生

+ *  

+ */

public class AddView extends JFrame {

private static final long serialVersionUID = -1984182788841566838L;

private JPanel jPanelCenter, jPanelSouth;

private JButton addButton, exitButton;

private JTextField name, sno, department, hometown, mark, email, tel, sex;

public AddView() {

init();

}

private void init() {

setTitle(AppConstants.ADDVIEW_TITLE);

// center panel

jPanelCenter = new JPanel();

jPanelCenter.setLayout(new GridLayout(9, 2));

jPanelCenter.add(new JLabel(AppConstants.STUDENT_NAME));

name = new JTextField();

jPanelCenter.add(name);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_SNO));

sno = new JTextField();

jPanelCenter.add(sno);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_SEX));

sex = new JTextField();

jPanelCenter.add(sex);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_DEPARTMETN));

department = new JTextField();

jPanelCenter.add(department);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_HOMETOWN));

hometown = new JTextField();

jPanelCenter.add(hometown);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_MARK));

mark = new JTextField();

jPanelCenter.add(mark);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_EMAIL));

email = new JTextField();

jPanelCenter.add(email);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_TEL));

tel = new JTextField();

jPanelCenter.add(tel);

jPanelCenter.add(new JLabel("-------------------------------------------------"));

jPanelCenter.add(new JLabel("-------------------------------------------------"));

 

// south panel

jPanelSouth = new JPanel();

jPanelSouth.setLayout(new GridLayout(1, 2));

addButton = new JButton(AppConstants.ADDVIEW_ADDBUTTON);

addButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

if (check()) {

Student stu = new Student();

buildStudent(stu);

boolean isSuccess = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).add(stu);

if (isSuccess) {

setEmpty();

if (MainView.currPageNum < 0 || MainView.currPageNum > 99) {

MainView.currPageNum = 1;

}

String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO))

.list(MainView.currPageNum);

MainView.initJTable(MainView.jTable, result);

}

}

}

});

jPanelSouth.add(addButton);

exitButton = new JButton(AppConstants.EXITBUTTON);

exitButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

dispose();

}

});

jPanelSouth.add(exitButton);

 

this.add(jPanelCenter, BorderLayout.CENTER);

this.add(jPanelSouth, BorderLayout.SOUTH);

 

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

setBounds(470, 200, 400, 270);

setResizable(false);

setVisible(true);

}

 

private boolean check() {

boolean result = false;

if ("".equals(name.getText()) || "".equals(sno.getText()) || "".equals(department.getText())

|| "".equals(sex.getText()) || "".equals(mark.getText()) || "".equals(tel.getText())

|| "".equals(email.getText()) || "".equals(hometown.getText())) {

return result;

} else {

result = true;

}

return result;

}

 

private void buildStudent(Student stu) {

stu.setDepartment(department.getText());

stu.setEmail(email.getText());

stu.setHomeTown(hometown.getText());

stu.setMark(mark.getText());

stu.setName(name.getText());

stu.setSno(sno.getText());

stu.setTel(tel.getText());

stu.setSex(sex.getText());

}

 

private void setEmpty() {

name.setText("");

sno.setText("");

department.setText("");

sex.setText("");

email.setText("");

hometown.setText("");

tel.setText("");

mark.setText("");

}

}

第二个类:

package com.up.student.view;

import java.awt.BorderLayout;

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.JTextField;

import com.up.student.AppConstants;

import com.up.student.DAO;

import com.up.student.base.BaseDAO;

import com.up.student.dao.StudentDAO;

import com.up.student.model.Student;

/**

+ * 模块说明: 删除学生

+ *  

+ */

public class DeleteView extends JFrame {

private static final long serialVersionUID = -7668153283910203959L;

 

private JPanel jPanelCenter, jPanelSouth;

private JButton deleteButton, exitButton;

private JTextField name, sno; // 根据姓名+学号删除学生

 

public DeleteView() {

init();

}

private void init() {

setTitle(AppConstants.DELETEVIEW_TITLE);

// center panel

jPanelCenter = new JPanel();

jPanelCenter.setLayout(new GridLayout(3, 2));

jPanelCenter.add(new JLabel(AppConstants.STUDENT_NAME));

name = new JTextField();

jPanelCenter.add(name);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_SNO));

sno = new JTextField();

jPanelCenter.add(sno);

jPanelCenter.add(new JLabel("-------------------------------------------------"));

jPanelCenter.add(new JLabel("-------------------------------------------------"));

// south panel

jPanelSouth = new JPanel();

jPanelSouth.setLayout(new GridLayout(1, 2));

deleteButton = new JButton(AppConstants.DELETEVIEW_DELETEBUTTON);

deleteButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

if (check()) {

Student stu = new Student();

buildStudent(stu);

boolean isSuccess = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).delete(stu);

if (isSuccess) {

setEmpty();

if (MainView.currPageNum < 0 || MainView.currPageNum > 99) {

MainView.currPageNum = 1;

}

String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO))

.list(MainView.currPageNum);

MainView.initJTable(MainView.jTable, result);

}

}

}

});

jPanelSouth.add(deleteButton);

exitButton = new JButton(AppConstants.EXITBUTTON);

exitButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

dispose();

}

});

jPanelSouth.add(exitButton);

this.add(jPanelCenter, BorderLayout.CENTER);

this.add(jPanelSouth, BorderLayout.SOUTH);

 

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

setBounds(470, 250, 400, 130);

setResizable(false);

setVisible(true);

}

 

private boolean check() {

boolean result = false;

if ("".equals(name.getText()) || "".equals(sno.getText())) {

return result;

} else {

result = true;

}

return result;

}

private void buildStudent(Student stu) {

stu.setName(name.getText());

stu.setSno(sno.getText());

}

private void setEmpty() {

name.setText("");

sno.setText("");

}

}

第三个类:

package com.up.student.view;

import java.awt.BorderLayout;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JPasswordField;

import javax.swing.JTextField;

import com.up.student.AppConstants;

import com.up.student.DAO;

import com.up.student.base.BaseDAO;

import com.up.student.dao.AdminDAO;

/**

* 模块说明: 登录界面

 *  

*/

public class LoginView extends JFrame {

private static final long serialVersionUID = -5278598737087831336L;

private JPanel jPanelCenter, jPanelSouth;

private JTextField username;

private JPasswordField password;

private JButton loginButton, resetButton;

 

public LoginView() {

init();

}

private void init() {

this.setTitle("Login");

 

jPanelCenter = new JPanel();

jPanelCenter.setLayout(new GridLayout(3, 2));

jPanelCenter.add(new JLabel(AppConstants.LOGIN_USERNAME));

username = new JTextField();

jPanelCenter.add(username);

jPanelCenter.add(new JLabel(AppConstants.LOGIN_PASSWORD));

password = new JPasswordField();

// enter key listener

password.addKeyListener(new LoginListener());

jPanelCenter.add(password);

jPanelCenter.add(new JLabel("----------------------------------------------"));

jPanelCenter.add(new JLabel("----------------------------------------------"));

jPanelSouth = new JPanel();

jPanelSouth.setLayout(new GridLayout(1, 2));

loginButton = new JButton(AppConstants.LOGIN);

loginButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

check();

}

});

jPanelSouth.add(loginButton);

resetButton = new JButton(AppConstants.RESET);

resetButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

username.setText("");

password.setText("");

}

});

jPanelSouth.add(resetButton);

this.add(jPanelCenter, BorderLayout.CENTER);

this.add(jPanelSouth, BorderLayout.SOUTH);

 

this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);

this.setBounds(450, 250, 375, 140);

this.setResizable(false);

this.setVisible(true);

}

 

private class LoginListener extends KeyAdapter {

 

@Override

public void keyPressed(KeyEvent e) {

if (e.getKeyCode() == KeyEvent.VK_ENTER) {

check();

}

}

}

private void check() {

AdminDAO adminDAO = (AdminDAO) BaseDAO.getAbilityDAO(DAO.AdminDAO);

if (adminDAO.queryForLogin(username.getText(), String.valueOf(password.getPassword()))) {

dispose();

new MainView();

} else {

username.setText("");

password.setText("");

}

}

 

}

第四个类:

package com.up.student.view;

import java.awt.BorderLayout;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import javax.swing.table.DefaultTableCellRenderer;

import javax.swing.table.DefaultTableModel;

import javax.swing.table.TableColumn;

import com.up.student.AppConstants;

import com.up.student.DAO;

import com.up.student.base.BaseDAO;

import com.up.student.dao.StudentDAO;

/**

+ * 模块说明: 首页

+ *  

 */

public class MainView extends JFrame {

 

private static final long serialVersionUID = 5870864087464173884L;

 

private final int maxPageNum = 99;

 

private JPanel jPanelNorth, jPanelSouth, jPanelCenter;

private JButton jButtonFirst, jButtonLast, jButtonNext, jButtonPre, jButtonAdd, jButtonDelete, jButtonUpdate,

jButtonFind;

private JLabel currPageNumJLabel;

private JTextField condition;

public static JTable jTable;

private JScrollPane jScrollPane;

private DefaultTableModel myTableModel;

public static String[] column = { "id", AppConstants.STUDENT_NAME, AppConstants.STUDENT_SNO,

AppConstants.STUDENT_SEX, AppConstants.STUDENT_DEPARTMETN, AppConstants.STUDENT_HOMETOWN,

AppConstants.STUDENT_MARK, AppConstants.STUDENT_EMAIL, AppConstants.STUDENT_TEL };

public static int currPageNum = 1;

 

public MainView() {

init();

}

private void init() {

setTitle(AppConstants.MAINVIEW_TITLE);

 

// north panel

jPanelNorth = new JPanel();

jPanelNorth.setLayout(new GridLayout(1, 5));

condition = new JTextField(AppConstants.PARAM_FIND_CONDITION);

condition.addKeyListener(new FindListener());

jPanelNorth.add(condition);

// query by name

jButtonFind = new JButton(AppConstants.PARAM_FIND);

jButtonFind.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

find();

}

});

jButtonFind.addKeyListener(new FindListener());

// add

jPanelNorth.add(jButtonFind);

jButtonAdd = new JButton(AppConstants.PARAM_ADD);

jButtonAdd.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

new AddView();

}

});

jPanelNorth.add(jButtonAdd);

// delete

jButtonDelete = new JButton(AppConstants.PARAM_DELETE);

jButtonDelete.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

new DeleteView();

}

});

jPanelNorth.add(jButtonDelete);

// update

jButtonUpdate = new JButton(AppConstants.PARAM_UPDATE);

jButtonUpdate.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

new UpdateView();

}

});

jPanelNorth.add(jButtonUpdate);

// center panel

jPanelCenter = new JPanel();

jPanelCenter.setLayout(new GridLayout(1, 1));

// init jTable

String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).list(currPageNum);

myTableModel = new DefaultTableModel(result, column);

jTable = new JTable(myTableModel);

DefaultTableCellRenderer cr = new DefaultTableCellRenderer();

cr.setHorizontalAlignment(JLabel.CENTER);

jTable.setDefaultRenderer(Object.class, cr);

initJTable(jTable, result);

 

jScrollPane = new JScrollPane(jTable);

jPanelCenter.add(jScrollPane);

 

// south panel

jPanelSouth = new JPanel();

jPanelSouth.setLayout(new GridLayout(1, 5));

jButtonFirst = new JButton(AppConstants.MAINVIEW_FIRST);

jButtonFirst.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

currPageNum = 1;

String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).list(currPageNum);

initJTable(jTable, result);

currPageNumJLabel.setText(AppConstants.MAINVIEW_PAGENUM_JLABEL_DI + currPageNum

+ AppConstants.MAINVIEW_PAGENUM_JLABEL_YE);

}

});

jButtonPre = new JButton(AppConstants.MAINVIEW_PRE);

jButtonPre.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

currPageNum--;

if (currPageNum <= 0) {

currPageNum = 1;

}

initJTable(jTable, result);

currPageNumJLabel.setText(AppConstants.MAINVIEW_PAGENUM_JLABEL_DI + currPageNum

+ AppConstants.MAINVIEW_PAGENUM_JLABEL_YE);

}

});

jButtonNext = new JButton(AppConstants.MAINVIEW_NEXT);

jButtonNext.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

currPageNum++;

if (currPageNum > maxPageNum) {

currPageNum = maxPageNum;

}

String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).list(currPageNum);

initJTable(jTable, result);

currPageNumJLabel.setText(AppConstants.MAINVIEW_PAGENUM_JLABEL_DI + currPageNum

+ AppConstants.MAINVIEW_PAGENUM_JLABEL_YE);

}

});

jButtonLast = new JButton(AppConstants.MAINVIEW_LAST);

jButtonLast.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

currPageNum = maxPageNum;

String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).list(currPageNum);

initJTable(jTable, result);

currPageNumJLabel.setText(AppConstants.MAINVIEW_PAGENUM_JLABEL_DI + currPageNum

+ AppConstants.MAINVIEW_PAGENUM_JLABEL_YE);

}

});

 

currPageNumJLabel = new JLabel(

AppConstants.MAINVIEW_PAGENUM_JLABEL_DI + currPageNum + AppConstants.MAINVIEW_PAGENUM_JLABEL_YE);

currPageNumJLabel.setHorizontalAlignment(JLabel.CENTER);

 

jPanelSouth.add(jButtonFirst);

jPanelSouth.add(jButtonPre);

jPanelSouth.add(currPageNumJLabel);

jPanelSouth.add(jButtonNext);

jPanelSouth.add(jButtonLast);

this.add(jPanelNorth, BorderLayout.NORTH);

this.add(jPanelCenter, BorderLayout.CENTER);

this.add(jPanelSouth, BorderLayout.SOUTH);

 

setBounds(400, 200, 750, 340);

setResizable(false);

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

setVisible(true);

}

 

public static void initJTable(JTable jTable, String[][] result) {

((DefaultTableModel) jTable.getModel()).setDataVector(result, column);

jTable.setRowHeight(20);

TableColumn firsetColumn = jTable.getColumnModel().getColumn(0);

firsetColumn.setPreferredWidth(30);

firsetColumn.setMaxWidth(30);

firsetColumn.setMinWidth(30);

TableColumn secondColumn = jTable.getColumnModel().getColumn(1);

secondColumn.setPreferredWidth(60);

secondColumn.setMaxWidth(60);

secondColumn.setMinWidth(60);

TableColumn thirdColumn = jTable.getColumnModel().getColumn(2);

thirdColumn.setPreferredWidth(90);

thirdColumn.setMaxWidth(90);

thirdColumn.setMinWidth(90);

TableColumn fourthColumn = jTable.getColumnModel().getColumn(3);

fourthColumn.setPreferredWidth(30);

fourthColumn.setMaxWidth(30);

fourthColumn.setMinWidth(30);

TableColumn seventhColumn = jTable.getColumnModel().getColumn(6);

seventhColumn.setPreferredWidth(30);

seventhColumn.setMaxWidth(30);

seventhColumn.setMinWidth(30);

TableColumn ninthColumn = jTable.getColumnModel().getColumn(8);

ninthColumn.setPreferredWidth(90);

ninthColumn.setMaxWidth(90);

ninthColumn.setMinWidth(90);

}

private class FindListener extends KeyAdapter {

 

@Override

public void keyPressed(KeyEvent e) {

if (e.getKeyCode() == KeyEvent.VK_ENTER) {

find();

}

}

}

 

private void find() {

currPageNum = 0;

String param = condition.getText();

if ("".equals(param) || param == null) {

initJTable(MainView.jTable, null);

currPageNumJLabel.setText(AppConstants.MAINVIEW_FIND_JLABEL);

return;

}

String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).queryByName(param);

condition.setText("");

initJTable(MainView.jTable, result);

currPageNumJLabel.setText(AppConstants.MAINVIEW_FIND_JLABEL);

}

 

}

第五个类:

package com.up.student.view;

import java.awt.BorderLayout;

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.JTextField;

import com.up.student.AppConstants;

import com.up.student.DAO;

import com.up.student.base.BaseDAO;

import com.up.student.dao.StudentDAO;

import com.up.student.model.Student;

/**

+ * 模块说明: 更新学生信息

+ *  

+ */

public class UpdateView extends JFrame {

 

private static final long serialVersionUID = 5292738820127102731L;

 

private JPanel jPanelCenter, jPanelSouth;

private JButton updateButton, exitButton;

private JTextField name, sno, department, hometown, mark, email, tel, sex;

 

public UpdateView() {

init();

}

private void init() {

setTitle(AppConstants.UPDATEVIEW_TITLE);

// center panel

jPanelCenter = new JPanel();

jPanelCenter.setLayout(new GridLayout(9, 2));

jPanelCenter.add(new JLabel(AppConstants.STUDENT_NAME));

name = new JTextField();

jPanelCenter.add(name);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_SNO));

sno = new JTextField();

jPanelCenter.add(sno);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_SEX));

sex = new JTextField();

jPanelCenter.add(sex);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_DEPARTMETN));

department = new JTextField();

jPanelCenter.add(department);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_HOMETOWN));

hometown = new JTextField();

jPanelCenter.add(hometown);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_MARK));

mark = new JTextField();

jPanelCenter.add(mark);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_EMAIL));

email = new JTextField();

jPanelCenter.add(email);

jPanelCenter.add(new JLabel(AppConstants.STUDENT_TEL));

tel = new JTextField();

jPanelCenter.add(tel);

jPanelCenter.add(new JLabel("-------------------------------------------------"));

jPanelCenter.add(new JLabel("-------------------------------------------------"));

 

// south panel

jPanelSouth = new JPanel();

jPanelSouth.setLayout(new GridLayout(1, 2));

updateButton = new JButton(AppConstants.UPDATEVIEW_UPDATEBUTTON);

updateButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

if (check()) {

Student stu = new Student();

buildStudent(stu);

boolean isSuccess = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).update(stu);

if (isSuccess) {

setEmpty();

if (MainView.currPageNum < 0 || MainView.currPageNum > 99) {

MainView.currPageNum = 1;

}

String[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO))

.list(MainView.currPageNum);

MainView.initJTable(MainView.jTable, result);

}

}

}

});

jPanelSouth.add(updateButton);

exitButton = new JButton(AppConstants.EXITBUTTON);

exitButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

dispose();

}

});

jPanelSouth.add(exitButton);

 

this.add(jPanelCenter, BorderLayout.CENTER);

this.add(jPanelSouth, BorderLayout.SOUTH);

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

setBounds(470, 200, 400, 270);

setResizable(false);

setVisible(true);

}

 

private boolean check() {

boolean result = false;

if ("".equals(name.getText()) || "".equals(sno.getText()) || "".equals(department.getText())

|| "".equals(sex.getText()) || "".equals(mark.getText()) || "".equals(tel.getText())

|| "".equals(email.getText()) || "".equals(hometown.getText())) {

return result;

} else {

result = true;

}

return result;

}

private void buildStudent(Student stu) {

stu.setDepartment(department.getText());

stu.setEmail(email.getText());

stu.setHomeTown(hometown.getText());

stu.setMark(mark.getText());

stu.setName(name.getText());

stu.setSno(sno.getText());

stu.setTel(tel.getText());

stu.setSex(sex.getText());

}

 

private void setEmpty() {

name.setText("");

sno.setText("");

department.setText("");

sex.setText("");

email.setText("");

hometown.setText("");

tel.setText("");

mark.setText("");

}

}

email.setText("");

hometown.setText("");

tel.setText("");

mark.setText("");

}

}

猜你喜欢

转载自blog.csdn.net/nanaz11/article/details/81148379