[
  {
    "path": "README.md",
    "content": "# student\njava swing\n默认测试账户：test/test\n"
  },
  {
    "path": "pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n\t<modelVersion>4.0.0</modelVersion>\n\n\t<groupId>com.up</groupId>\n\t<artifactId>student</artifactId>\n\t<version>0.0.1-SNAPSHOT</version>\n\t<packaging>jar</packaging>\n\t<name>student</name>\n\n\t<properties>\n\t\t<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n\t</properties>\n\n\t<dependencies>\n\t\t<dependency>\n\t\t\t<groupId>junit</groupId>\n\t\t\t<artifactId>junit</artifactId>\n\t\t\t<version>3.8.1</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>org.xerial</groupId>\n\t\t\t<artifactId>sqlite-jdbc</artifactId>\n\t\t\t<version>3.23.1</version>\n\t\t</dependency>\n\t</dependencies>\n\n\t<build>\n\t\t<finalName>student</finalName>\n\t\t<plugins>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-compiler-plugin</artifactId>\n\t\t\t\t<version>3.0</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<source>1.8</source>\n\t\t\t\t\t<target>1.8</target>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\t\t</plugins>\n\t\t<sourceDirectory>src/main/java</sourceDirectory>\n\t\t<testSourceDirectory>src/test/java</testSourceDirectory>\n\t\t<resources>\n\t\t\t<resource>\n\t\t\t\t<directory>src/main/resources</directory>\n\t\t\t</resource>\n\t\t</resources>\n\t\t<testResources>\n\t\t\t<testResource>\n\t\t\t\t<directory>src/test/resources</directory>\n\t\t\t</testResource>\n\t\t</testResources>\n\t</build>\n</project>\n"
  },
  {
    "path": "src/main/java/com/up/student/AppConstants.java",
    "content": "/**\n * 项目名：student\n * 修改历史：\n * 作者： MZ\n * 创建时间： 2016年1月6日-上午9:41:57\n */\npackage com.up.student;\n\n/**\n * 模块说明： 常量\n * \n */\npublic class AppConstants {\n\t// jdbc\n\tpublic static final String JDBC_URL = \"jdbc:sqlite:test.db\";\n\tpublic static final String JDBC_USERNAME = \"test\";\n\tpublic static final String JDBC_PASSWORD = \"test\";\n\tpublic static final String JDBC_DRIVER = \"org.sqlite.JDBC\";\n\n\t// student field\n\tpublic static final String STUDENT_NAME = \"姓名\";\n\tpublic static final String STUDENT_SNO = \"学号\";\n\tpublic static final String STUDENT_SEX = \"性别\";\n\tpublic static final String STUDENT_DEPARTMETN = \"院系\";\n\tpublic static final String STUDENT_HOMETOWN = \"籍贯\";\n\tpublic static final String STUDENT_EMAIL = \"电子邮件\";\n\tpublic static final String STUDENT_TEL = \"联系方式\";\n\tpublic static final String STUDENT_MARK = \"学分\";\n\n\t// login view\n\tpublic static final String LOGIN_TITLE = \"登录界面\";\n\tpublic static final String LOGIN_USERNAME = \"用户名\";\n\tpublic static final String LOGIN_PASSWORD = \"密码\";\n\tpublic static final String LOGIN = \"登录\";\n\tpublic static final String RESET = \"重置\";\n\n\t// main view\n\tpublic static final String MAINVIEW_TITLE = \"学生信息管理系统\";\n\tpublic static final String MAINVIEW_PAGENUM_JLABEL_DI = \"第 \";\n\tpublic static final String MAINVIEW_PAGENUM_JLABEL_YE = \"/99 页\";\n\tpublic static final String MAINVIEW_FIND_JLABEL = \"查询结果\";\n\tpublic static final String MAINVIEW_FIRST = \"首页\";\n\tpublic static final String MAINVIEW_LAST = \"末页\";\n\tpublic static final String MAINVIEW_PRE = \"上一页\";\n\tpublic static final String MAINVIEW_NEXT = \"下一页\";\n\tpublic static final String PARAM_FIND_CONDITION = \"\";\n\tpublic static final String PARAM_FIND = \"查找\";\n\tpublic static final String PARAM_ADD = \"添加\";\n\tpublic static final String PARAM_DELETE = \"删除\";\n\tpublic static final String PARAM_UPDATE = \"更新\";\n\n\t// add view\n\tpublic static final String ADDVIEW_TITLE = \"添加学生信息\";\n\tpublic static final String ADDVIEW_ADDBUTTON = \"添加\";\n\tpublic static final String EXITBUTTON = \"退出\";\n\n\t// delete view\n\tpublic static final String DELETEVIEW_TITLE = \"删除学生信息\";\n\tpublic static final String DELETEVIEW_DELETEBUTTON = \"删除\";\n\n\t// update view\n\tpublic static final String UPDATEVIEW_TITLE = \"更新学生信息\";\n\tpublic static final String UPDATEVIEW_UPDATEBUTTON = \"更新\";\n\n}\n"
  },
  {
    "path": "src/main/java/com/up/student/DAO.java",
    "content": "/**\n * 项目名：student\n * 修改历史：\n * 作者： MZ\n * 创建时间： 2016年1月6日-上午11:26:11\n */\npackage com.up.student;\n\n/**\n * 模块说明： 定制枚举类型\n * \n */\npublic enum DAO {\n\tAdminDAO, StudentDAO;\n\n\t// private String str;\n\t//\n\t// private Clazz(String str) {\n\t// this.str = str;\n\t// }\n\t//\n\t// public String getStr() {\n\t// return this.str;\n\t// }\n}\n"
  },
  {
    "path": "src/main/java/com/up/student/base/BaseDAO.java",
    "content": "/**\n * 项目名：student\n * 修改历史：\n * 作者： MZ\n * 创建时间： 2016年1月6日-上午10:04:37\n */\npackage com.up.student.base;\n\nimport java.sql.ResultSet;\nimport java.sql.SQLException;\n\nimport com.up.student.DAO;\nimport com.up.student.dao.AdminDAO;\nimport com.up.student.dao.StudentDAO;\nimport com.up.student.util.DBUtil;\n\n/**\n * 模块说明： DAO基类\n * \n */\npublic abstract class BaseDAO {\n\tprotected final DBUtil db = DBUtil.getDBUtil();\n\tprotected ResultSet rs;\n\tprivate static BaseDAO baseDAO;\n\n\tpublic BaseDAO() {\n\t\tinit();\n\t}\n\n\tprivate void init() {\n\t\t// buildAbilityDAO();\n\t}\n\n\t// protected abstract void buildAbilityDAO();\n\n\tpublic static synchronized BaseDAO getAbilityDAO(DAO dao) {\n\t\tswitch (dao) {\n\t\tcase AdminDAO:\n\t\t\tif (baseDAO == null || baseDAO.getClass() != AdminDAO.class) {\n\t\t\t\tbaseDAO = AdminDAO.getInstance();\n\t\t\t}\n\t\t\tbreak;\n\t\tcase StudentDAO:\n\t\t\tif (baseDAO == null || baseDAO.getClass() != StudentDAO.class) {\n\t\t\t\tbaseDAO = StudentDAO.getInstance();\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\t\treturn baseDAO;\n\t}\n\n\tprotected void destroy() {\n\t\ttry {\n\t\t\tif (rs != null) {\n\t\t\t\trs.close();\n\t\t\t}\n\t\t} catch (SQLException se) {\n\t\t\tse.printStackTrace();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/up/student/dao/AdminDAO.java",
    "content": "/**\n * 项目名：student\n * 修改历史：\n * 作者： MZ\n * 创建时间： 2016年1月6日-上午9:59:58\n */\npackage com.up.student.dao;\n\nimport java.sql.SQLException;\n\nimport com.up.student.base.BaseDAO;\n\n/**\n * 模块说明： 管理员增删改查\n * \n */\npublic class AdminDAO extends BaseDAO {\n\n\tprivate static AdminDAO ad = null;\n\n\tpublic static synchronized AdminDAO getInstance() {\n\t\tif (ad == null) {\n\t\t\tad = new AdminDAO();\n\t\t}\n\t\treturn ad;\n\t}\n\n\tpublic boolean queryForLogin(String username, String password) {\n\t\tboolean result = false;\n\t\tif (username.length() == 0 || password.length() == 0) {\n\t\t\treturn result;\n\t\t}\n\t\tString sql = \"select * from admin where username=? and password=?\";\n\t\tString[] param = { username, password };\n\t\trs = db.executeQuery(sql, param);\n\t\ttry {\n\t\t\tif (rs.next()) {\n\t\t\t\tresult = true;\n\t\t\t}\n\t\t} catch (SQLException e) {\n\t\t\te.printStackTrace();\n\t\t} finally {\n\t\t\tdestroy();\n\t\t}\n\t\treturn result;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/up/student/dao/StudentDAO.java",
    "content": "/**\n * 项目名：student\n * 修改历史：\n * 作者： MZ\n * 创建时间： 2016年1月6日-上午10:00:07\n */\npackage com.up.student.dao;\n\nimport java.sql.ResultSet;\nimport java.sql.SQLException;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport com.up.student.base.BaseDAO;\nimport com.up.student.model.Student;\n\n/**\n * 模块说明： 学生增删改查\n * \n */\npublic class StudentDAO extends BaseDAO {\n\tprivate final int fieldNum = 9;\n\tprivate final int showNum = 15;\n\tprivate static StudentDAO sd = null;\n\n\tpublic static synchronized StudentDAO getInstance() {\n\t\tif (sd == null) {\n\t\t\tsd = new StudentDAO();\n\t\t}\n\t\treturn sd;\n\t}\n\n\t// update\n\tpublic boolean update(Student stu) {\n\t\tboolean result = false;\n\t\tif (stu == null) {\n\t\t\treturn result;\n\t\t}\n\t\ttry {\n\t\t\t// check\n\t\t\tif (queryBySno(stu.getSno()) == 0) {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\t// update\n\t\t\tString sql = \"update student set sex=?,department=?,email=?,tel=?,hometown=?,mark=? where name=? and sno=?\";\n\t\t\tString[] param = { stu.getSex(), stu.getDepartment(), stu.getEmail(), stu.getTel(), stu.getHomeTown(),\n\t\t\t\t\tstu.getMark(), stu.getName(), stu.getSno() };\n\t\t\tint rowCount = db.executeUpdate(sql, param);\n\t\t\tif (rowCount == 1) {\n\t\t\t\tresult = true;\n\t\t\t}\n\t\t} catch (SQLException se) {\n\t\t\tse.printStackTrace();\n\t\t} finally {\n\t\t\tdestroy();\n\t\t}\n\t\treturn result;\n\t}\n\n\t// delete\n\tpublic boolean delete(Student stu) {\n\t\tboolean result = false;\n\t\tif (stu == null) {\n\t\t\treturn result;\n\t\t}\n\t\tString sql = \"delete from student where name=? and sno=?\";\n\t\tString[] param = { stu.getName(), stu.getSno() };\n\t\tint rowCount = db.executeUpdate(sql, param);\n\t\tif (rowCount == 1) {\n\t\t\tresult = true;\n\t\t}\n\t\tdestroy();\n\t\treturn result;\n\t}\n\n\t// add\n\tpublic boolean add(Student stu) {\n\t\tboolean result = false;\n\t\tif (stu == null) {\n\t\t\treturn result;\n\t\t}\n\t\ttry {\n\t\t\t// check\n\t\t\tif (queryBySno(stu.getSno()) == 1) {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\t// insert\n\t\t\tString sql = \"insert into student(name,sno,sex,department,hometown,mark,email,tel) values(?,?,?,?,?,?,?,?)\";\n\t\t\tString[] param = { stu.getName(), stu.getSno(), stu.getSex(), stu.getDepartment(), stu.getHomeTown(),\n\t\t\t\t\tstu.getMark(), stu.getEmail(), stu.getTel() };\n\t\t\tif (db.executeUpdate(sql, param) == 1) {\n\t\t\t\tresult = true;\n\t\t\t}\n\t\t} catch (SQLException se) {\n\t\t\tse.printStackTrace();\n\t\t} finally {\n\t\t\tdestroy();\n\t\t}\n\t\treturn result;\n\t}\n\n\t// query by name\n\tpublic String[][] queryByName(String name) {\n\t\tString[][] result = null;\n\t\tif (name.length() < 0) {\n\t\t\treturn result;\n\t\t}\n\t\tList<Student> stus = new ArrayList<Student>();\n\t\tint i = 0;\n\t\tString sql = \"select * from student where name like ?\";\n\t\tString[] param = { \"%\" + name + \"%\" };\n\t\trs = db.executeQuery(sql, param);\n\t\ttry {\n\t\t\twhile (rs.next()) {\n\t\t\t\tbuildList(rs, stus, i);\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (stus.size() > 0) {\n\t\t\t\tresult = new String[stus.size()][fieldNum];\n\t\t\t\tfor (int j = 0; j < stus.size(); j++) {\n\t\t\t\t\tbuildResult(result, stus, j);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (SQLException se) {\n\t\t\tse.printStackTrace();\n\t\t} finally {\n\t\t\tdestroy();\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// query\n\tpublic String[][] list(int pageNum) {\n\t\tString[][] result = null;\n\t\tif (pageNum < 1) {\n\t\t\treturn result;\n\t\t}\n\t\tList<Student> stus = new ArrayList<Student>();\n\t\tint i = 0;\n\t\tint beginNum = (pageNum - 1) * showNum;\n\t\tString sql = \"select * from student limit ?,?\";\n\t\tInteger[] param = { beginNum, showNum };\n\t\trs = db.executeQuery(sql, param);\n\t\ttry {\n\t\t\twhile (rs.next()) {\n\t\t\t\tbuildList(rs, stus, i);\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (stus.size() > 0) {\n\t\t\t\tresult = new String[stus.size()][fieldNum];\n\t\t\t\tfor (int j = 0; j < stus.size(); j++) {\n\t\t\t\t\tbuildResult(result, stus, j);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (SQLException se) {\n\t\t\tse.printStackTrace();\n\t\t} finally {\n\t\t\tdestroy();\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// 将rs记录添加到list中\n\tprivate void buildList(ResultSet rs, List<Student> list, int i) throws SQLException {\n\t\tStudent stu = new Student();\n\t\tstu.setId(i + 1);\n\t\tstu.setName(rs.getString(\"name\"));\n\t\tstu.setDepartment(rs.getString(\"department\"));\n\t\tstu.setEmail(rs.getString(\"email\"));\n\t\tstu.setHomeTown(rs.getString(\"hometown\"));\n\t\tstu.setMark(rs.getString(\"mark\"));\n\t\tstu.setSex(rs.getString(\"sex\"));\n\t\tstu.setSno(rs.getString(\"sno\"));\n\t\tstu.setTel(rs.getString(\"tel\"));\n\t\tlist.add(stu);\n\t}\n\n\t// 将list中记录添加到二维数组中\n\tprivate void buildResult(String[][] result, List<Student> stus, int j) {\n\t\tStudent stu = stus.get(j);\n\t\tresult[j][0] = String.valueOf(stu.getId());\n\t\tresult[j][1] = stu.getName();\n\t\tresult[j][2] = stu.getSno();\n\t\tresult[j][3] = stu.getSex();\n\t\tresult[j][4] = stu.getDepartment();\n\t\tresult[j][5] = stu.getHomeTown();\n\t\tresult[j][6] = stu.getMark();\n\t\tresult[j][7] = stu.getEmail();\n\t\tresult[j][8] = stu.getTel();\n\t}\n\n\t// query by sno\n\tprivate int queryBySno(String sno) throws SQLException {\n\t\tint result = 0;\n\t\tif (\"\".equals(sno) || sno == null) {\n\t\t\treturn result;\n\t\t}\n\t\tString checkSql = \"select * from student where sno=?\";\n\t\tString[] checkParam = { sno };\n\t\trs = db.executeQuery(checkSql, checkParam);\n\t\tif (rs.next()) {\n\t\t\tresult = 1;\n\t\t}\n\t\treturn result;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/up/student/model/Admin.java",
    "content": "/**\n * 项目名：student\n * 修改历史：\n * 作者： MZ\n * 创建时间： 2016年1月6日-上午9:42:48\n */\npackage com.up.student.model;\n\n/**\n * 模块说明：admin\n * \n */\npublic class Admin {\n\tprivate int id;\n\tprivate String name;\n\tprivate String username;\n\tprivate String password;\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\n\tpublic int getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(int id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic String getUsername() {\n\t\treturn username;\n\t}\n\n\tpublic void setUsername(String username) {\n\t\tthis.username = username;\n\t}\n\n\tpublic String getPassword() {\n\t\treturn password;\n\t}\n\n\tpublic void setPassword(String password) {\n\t\tthis.password = password;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/up/student/model/Student.java",
    "content": "/**\n * 项目名：student\n * 修改历史：\n * 作者： MZ\n * 创建时间： 2016年1月6日-上午9:42:36\n */\npackage com.up.student.model;\n\n/**\n * 模块说明： 学生\n * \n */\npublic class Student {\n\tprivate int id;\n\tprivate String sno;// 学号\n\tprivate String name;\n\tprivate String sex;\n\tprivate String department;// 院系\n\tprivate String homeTown;// 籍贯\n\tprivate String mark;// 学分\n\tprivate String email;\n\tprivate String tel;// 联系方式\n\n\tpublic int getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(int id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic String getSno() {\n\t\treturn sno;\n\t}\n\n\tpublic void setSno(String sno) {\n\t\tthis.sno = sno;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\n\tpublic String getSex() {\n\t\treturn sex;\n\t}\n\n\tpublic void setSex(String sex) {\n\t\tthis.sex = sex;\n\t}\n\n\tpublic String getDepartment() {\n\t\treturn department;\n\t}\n\n\tpublic void setDepartment(String department) {\n\t\tthis.department = department;\n\t}\n\n\tpublic String getHomeTown() {\n\t\treturn homeTown;\n\t}\n\n\tpublic void setHomeTown(String homeTown) {\n\t\tthis.homeTown = homeTown;\n\t}\n\n\tpublic String getMark() {\n\t\treturn mark;\n\t}\n\n\tpublic void setMark(String mark) {\n\t\tthis.mark = mark;\n\t}\n\n\tpublic String getEmail() {\n\t\treturn email;\n\t}\n\n\tpublic void setEmail(String email) {\n\t\tthis.email = email;\n\t}\n\n\tpublic String getTel() {\n\t\treturn tel;\n\t}\n\n\tpublic void setTel(String tel) {\n\t\tthis.tel = tel;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/up/student/run/Main.java",
    "content": "/**\n * 项目名：student\n * 修改历史：\n * 作者： MZ\n * 创建时间： 2016年1月6日-上午9:43:05\n */\npackage com.up.student.run;\n\nimport com.up.student.util.DBUtil;\nimport com.up.student.view.LoginView;\n\n/**\n * 模块说明：主函数\n * \n */\npublic class Main {\n\tpublic static void initDB() {\n\t\tDBUtil dbUtil = DBUtil.getDBUtil();\n\n\t\t//检查数据库是否初始化\n\t\tif (dbUtil.exeute(\"select 1 from  admin\")) {\n\t\t\treturn;\n\t\t}\n\n\t\t//初始化数据库\n\t\t//admin表\n\t\tdbUtil.exeute(\"create table if not exists admin(id int primary key,\" +\n\t\t\t\t\"name varchar(32),\" +\n\t\t\t\t\"username varchar(32),\" +\n\t\t\t\t\"password varchar(32))\");\n\t\tdbUtil.exeute(\"insert into admin(id, name, username, password) values(1, 'admin', 'test', 'test')\");\n\n\t\t//student\n\t\tdbUtil.exeute(\"create table if not exists student(\" +\n\t\t\t\t\"id int primary key,\" +\n\t\t\t\t\"sno varchar(16),\" +\n\t\t\t\t\"name varchar(32),\" +\n\t\t\t\t\"sex varchar(8),\" +\n\t\t\t\t\"department varchar(32),\" +\n\t\t\t\t\"hometown varchar(64),\" +\n\t\t\t\t\"mark varchar(32),\" +\n\t\t\t\t\"email varchar(32),\" +\n\t\t\t\t\"tel varchar(16))\");\n\t}\n\n\tpublic static void main(String[] args) {\n\t\tinitDB();\n\t\tnew LoginView();\n\t\tDBUtil.getDBUtil().close();\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/up/student/util/DBUtil.java",
    "content": "/**\n * 项目名：student\n * 修改历史：\n * 作者： MZ\n * 创建时间： 2016年1月6日-上午9:43:21\n */\npackage com.up.student.util;\n\nimport java.sql.*;\n\nimport com.up.student.AppConstants;\n\n\n/**\n * 模块说明：数据库工具类\n * \n */\npublic class DBUtil {\n\tprivate static DBUtil db;\n\n\tprivate Connection conn;\n\tprivate PreparedStatement ps;\n\tprivate ResultSet rs;\n\n\tprivate DBUtil() {\n\n\t}\n\n\tpublic static DBUtil getDBUtil() {\n\t\tif (db == null) {\n\t\t\tdb = new DBUtil();\n\t\t}\n\t\treturn db;\n\t}\n\n\tpublic int executeUpdate(String sql) {\n\t\tint result = -1;\n\t\tif (getConn() == null) {\n\t\t\treturn result;\n\t\t}\n\t\ttry {\n\t\t\tps = conn.prepareStatement(sql);\n\t\t\tresult = ps.executeUpdate();\n\t\t} catch (SQLException e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t\treturn result;\n\t}\n\n\tpublic int executeUpdate(String sql, Object[] obj) {\n\t\tint result = -1;\n\t\tif (getConn() == null) {\n\t\t\treturn result;\n\t\t}\n\t\ttry {\n\t\t\tps = conn.prepareStatement(sql);\n\t\t\tfor (int i = 0; i < obj.length; i++) {\n\t\t\t\tps.setObject(i + 1, obj[i]);\n\t\t\t}\n\t\t\tresult = ps.executeUpdate();\n\t\t\tclose();\n\t\t} catch (SQLException e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t\treturn result;\n\t}\n\n\tpublic ResultSet executeQuery(String sql) {\n\t\tif (getConn() == null) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\tps = conn.prepareStatement(sql);\n\t\t\trs = ps.executeQuery();\n\t\t} catch (SQLException e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t\treturn rs;\n\t}\n\n\tpublic ResultSet executeQuery(String sql, Object[] obj) {\n\t\tif (getConn() == null) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\tps = conn.prepareStatement(sql);\n\t\t\tfor (int i = 0; i < obj.length; i++) {\n\t\t\t\tps.setObject(i + 1, obj[i]);\n\t\t\t}\n\t\t\trs = ps.executeQuery();\n\t\t} catch (SQLException e) {\n\t\t\te.printStackTrace();\n\t\t}\n\n\t\treturn rs;\n\t}\n\n\tpublic boolean exeute(String sql) {\n\t\tif (getConn() == null) {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\tStatement statement = conn.createStatement();\n\t\t\tstatement.execute(sql);\n\t\t\tstatement.close();\n\t\t\treturn true;\n\t\t} catch (SQLException e) {\n//\t\t\te.printStackTrace();\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tprivate Connection getConn() {\n\t\ttry {\n\t\t\tif (conn == null || conn.isClosed()) {\n\t\t\t\tClass.forName(AppConstants.JDBC_DRIVER);\n\t\t\t\tconn = DriverManager.getConnection(AppConstants.JDBC_URL, AppConstants.JDBC_USERNAME,\n\t\t\t\t\t\tcom.up.student.AppConstants.JDBC_PASSWORD);\n\t\t\t}\n\t\t} catch (ClassNotFoundException e) {\n\t\t\tSystem.out.println(\"jdbc driver is not found.\");\n\t\t\te.printStackTrace();\n\t\t} catch (SQLException e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t\treturn conn;\n\t}\n\n\tpublic void close() {\n\t\ttry {\n\t\t\tif (rs != null) {\n\t\t\t\trs.close();\n\t\t\t}\n\t\t\tif (ps != null) {\n\t\t\t\tps.close();\n\t\t\t}\n\t\t\tif (conn != null) {\n\t\t\t\tconn.close();\n\t\t\t}\n\t\t} catch (SQLException e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/up/student/view/AddView.java",
    "content": "/**\n * 项目名：student\n * 修改历史：\n * 作者： MZ\n * 创建时间： 2016年1月6日-下午4:56:01\n */\npackage com.up.student.view;\n\nimport java.awt.BorderLayout;\nimport java.awt.GridLayout;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\n\nimport javax.swing.JButton;\nimport javax.swing.JFrame;\nimport javax.swing.JLabel;\nimport javax.swing.JPanel;\nimport javax.swing.JTextField;\n\nimport com.up.student.AppConstants;\nimport com.up.student.DAO;\nimport com.up.student.base.BaseDAO;\nimport com.up.student.dao.StudentDAO;\nimport com.up.student.model.Student;\n\n/**\n * 模块说明： 添加学生\n * \n */\npublic class AddView extends JFrame {\n\n\tprivate static final long serialVersionUID = -1984182788841566838L;\n\n\tprivate JPanel jPanelCenter, jPanelSouth;\n\tprivate JButton addButton, exitButton;\n\tprivate JTextField name, sno, department, hometown, mark, email, tel, sex;\n\n\tpublic AddView() {\n\t\tinit();\n\t}\n\n\tprivate void init() {\n\t\tsetTitle(AppConstants.ADDVIEW_TITLE);\n\t\t// center panel\n\t\tjPanelCenter = new JPanel();\n\t\tjPanelCenter.setLayout(new GridLayout(9, 2));\n\t\tjPanelCenter.add(new JLabel(AppConstants.STUDENT_NAME));\n\t\tname = new JTextField();\n\t\tjPanelCenter.add(name);\n\t\tjPanelCenter.add(new JLabel(AppConstants.STUDENT_SNO));\n\t\tsno = new JTextField();\n\t\tjPanelCenter.add(sno);\n\t\tjPanelCenter.add(new JLabel(AppConstants.STUDENT_SEX));\n\t\tsex = new JTextField();\n\t\tjPanelCenter.add(sex);\n\t\tjPanelCenter.add(new JLabel(AppConstants.STUDENT_DEPARTMETN));\n\t\tdepartment = new JTextField();\n\t\tjPanelCenter.add(department);\n\t\tjPanelCenter.add(new JLabel(AppConstants.STUDENT_HOMETOWN));\n\t\thometown = new JTextField();\n\t\tjPanelCenter.add(hometown);\n\t\tjPanelCenter.add(new JLabel(AppConstants.STUDENT_MARK));\n\t\tmark = new JTextField();\n\t\tjPanelCenter.add(mark);\n\t\tjPanelCenter.add(new JLabel(AppConstants.STUDENT_EMAIL));\n\t\temail = new JTextField();\n\t\tjPanelCenter.add(email);\n\t\tjPanelCenter.add(new JLabel(AppConstants.STUDENT_TEL));\n\t\ttel = new JTextField();\n\t\tjPanelCenter.add(tel);\n\t\tjPanelCenter.add(new JLabel(\"-------------------------------------------------\"));\n\t\tjPanelCenter.add(new JLabel(\"-------------------------------------------------\"));\n\n\t\t// south panel\n\t\tjPanelSouth = new JPanel();\n\t\tjPanelSouth.setLayout(new GridLayout(1, 2));\n\t\taddButton = new JButton(AppConstants.ADDVIEW_ADDBUTTON);\n\t\taddButton.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tif (check()) {\n\t\t\t\t\tStudent stu = new Student();\n\t\t\t\t\tbuildStudent(stu);\n\t\t\t\t\tboolean isSuccess = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).add(stu);\n\t\t\t\t\tif (isSuccess) {\n\t\t\t\t\t\tsetEmpty();\n\t\t\t\t\t\tif (MainView.currPageNum < 0 || MainView.currPageNum > 99) {\n\t\t\t\t\t\t\tMainView.currPageNum = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tString[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO))\n\t\t\t\t\t\t\t\t.list(MainView.currPageNum);\n\t\t\t\t\t\tMainView.initJTable(MainView.jTable, result);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tjPanelSouth.add(addButton);\n\t\texitButton = new JButton(AppConstants.EXITBUTTON);\n\t\texitButton.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tdispose();\n\t\t\t}\n\t\t});\n\t\tjPanelSouth.add(exitButton);\n\n\t\tthis.add(jPanelCenter, BorderLayout.CENTER);\n\t\tthis.add(jPanelSouth, BorderLayout.SOUTH);\n\n\t\tsetDefaultCloseOperation(DISPOSE_ON_CLOSE);\n\t\tsetBounds(470, 200, 400, 270);\n\t\tsetResizable(false);\n\t\tsetVisible(true);\n\t}\n\n\tprivate boolean check() {\n\t\tboolean result = false;\n\t\tif (\"\".equals(name.getText()) || \"\".equals(sno.getText()) || \"\".equals(department.getText())\n\t\t\t\t|| \"\".equals(sex.getText()) || \"\".equals(mark.getText()) || \"\".equals(tel.getText())\n\t\t\t\t|| \"\".equals(email.getText()) || \"\".equals(hometown.getText())) {\n\t\t\treturn result;\n\t\t} else {\n\t\t\tresult = true;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate void buildStudent(Student stu) {\n\t\tstu.setDepartment(department.getText());\n\t\tstu.setEmail(email.getText());\n\t\tstu.setHomeTown(hometown.getText());\n\t\tstu.setMark(mark.getText());\n\t\tstu.setName(name.getText());\n\t\tstu.setSno(sno.getText());\n\t\tstu.setTel(tel.getText());\n\t\tstu.setSex(sex.getText());\n\t}\n\n\tprivate void setEmpty() {\n\t\tname.setText(\"\");\n\t\tsno.setText(\"\");\n\t\tdepartment.setText(\"\");\n\t\tsex.setText(\"\");\n\t\temail.setText(\"\");\n\t\thometown.setText(\"\");\n\t\ttel.setText(\"\");\n\t\tmark.setText(\"\");\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/up/student/view/DeleteView.java",
    "content": "/**\n * 项目名：student\n * 修改历史：\n * 作者： MZ\n * 创建时间： 2016年1月7日-上午10:27:11\n */\npackage com.up.student.view;\n\nimport java.awt.BorderLayout;\nimport java.awt.GridLayout;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\n\nimport javax.swing.JButton;\nimport javax.swing.JFrame;\nimport javax.swing.JLabel;\nimport javax.swing.JPanel;\nimport javax.swing.JTextField;\n\nimport com.up.student.AppConstants;\nimport com.up.student.DAO;\nimport com.up.student.base.BaseDAO;\nimport com.up.student.dao.StudentDAO;\nimport com.up.student.model.Student;\n\n/**\n * 模块说明： 删除学生\n * \n */\npublic class DeleteView extends JFrame {\n\n\tprivate static final long serialVersionUID = -7668153283910203959L;\n\n\tprivate JPanel jPanelCenter, jPanelSouth;\n\tprivate JButton deleteButton, exitButton;\n\tprivate JTextField name, sno; // 根据姓名+学号删除学生\n\n\tpublic DeleteView() {\n\t\tinit();\n\t}\n\n\tprivate void init() {\n\t\tsetTitle(AppConstants.DELETEVIEW_TITLE);\n\t\t// center panel\n\t\tjPanelCenter = new JPanel();\n\t\tjPanelCenter.setLayout(new GridLayout(3, 2));\n\t\tjPanelCenter.add(new JLabel(AppConstants.STUDENT_NAME));\n\t\tname = new JTextField();\n\t\tjPanelCenter.add(name);\n\t\tjPanelCenter.add(new JLabel(AppConstants.STUDENT_SNO));\n\t\tsno = new JTextField();\n\t\tjPanelCenter.add(sno);\n\t\tjPanelCenter.add(new JLabel(\"-------------------------------------------------\"));\n\t\tjPanelCenter.add(new JLabel(\"-------------------------------------------------\"));\n\n\t\t// south panel\n\t\tjPanelSouth = new JPanel();\n\t\tjPanelSouth.setLayout(new GridLayout(1, 2));\n\t\tdeleteButton = new JButton(AppConstants.DELETEVIEW_DELETEBUTTON);\n\t\tdeleteButton.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tif (check()) {\n\t\t\t\t\tStudent stu = new Student();\n\t\t\t\t\tbuildStudent(stu);\n\t\t\t\t\tboolean isSuccess = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).delete(stu);\n\t\t\t\t\tif (isSuccess) {\n\t\t\t\t\t\tsetEmpty();\n\t\t\t\t\t\tif (MainView.currPageNum < 0 || MainView.currPageNum > 99) {\n\t\t\t\t\t\t\tMainView.currPageNum = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tString[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO))\n\t\t\t\t\t\t\t\t.list(MainView.currPageNum);\n\t\t\t\t\t\tMainView.initJTable(MainView.jTable, result);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tjPanelSouth.add(deleteButton);\n\t\texitButton = new JButton(AppConstants.EXITBUTTON);\n\t\texitButton.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tdispose();\n\t\t\t}\n\t\t});\n\t\tjPanelSouth.add(exitButton);\n\n\t\tthis.add(jPanelCenter, BorderLayout.CENTER);\n\t\tthis.add(jPanelSouth, BorderLayout.SOUTH);\n\n\t\tsetDefaultCloseOperation(DISPOSE_ON_CLOSE);\n\t\tsetBounds(470, 250, 400, 130);\n\t\tsetResizable(false);\n\t\tsetVisible(true);\n\t}\n\n\tprivate boolean check() {\n\t\tboolean result = false;\n\t\tif (\"\".equals(name.getText()) || \"\".equals(sno.getText())) {\n\t\t\treturn result;\n\t\t} else {\n\t\t\tresult = true;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate void buildStudent(Student stu) {\n\t\tstu.setName(name.getText());\n\t\tstu.setSno(sno.getText());\n\t}\n\n\tprivate void setEmpty() {\n\t\tname.setText(\"\");\n\t\tsno.setText(\"\");\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/up/student/view/LoginView.java",
    "content": "/**\n * 项目名：student\n * 修改历史：\n * 作者： MZ\n * 创建时间： 2016年1月6日-上午9:43:48\n */\npackage com.up.student.view;\n\nimport java.awt.BorderLayout;\nimport java.awt.GridLayout;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.KeyAdapter;\nimport java.awt.event.KeyEvent;\n\nimport javax.swing.JButton;\nimport javax.swing.JFrame;\nimport javax.swing.JLabel;\nimport javax.swing.JPanel;\nimport javax.swing.JPasswordField;\nimport javax.swing.JTextField;\n\nimport com.up.student.AppConstants;\nimport com.up.student.DAO;\nimport com.up.student.base.BaseDAO;\nimport com.up.student.dao.AdminDAO;\n\n/**\n * 模块说明： 登录界面\n * \n */\npublic class LoginView extends JFrame {\n\n\tprivate static final long serialVersionUID = -5278598737087831336L;\n\tprivate JPanel jPanelCenter, jPanelSouth;\n\tprivate JTextField username;\n\tprivate JPasswordField password;\n\tprivate JButton loginButton, resetButton;\n\n\tpublic LoginView() {\n\t\tinit();\n\t}\n\n\tprivate void init() {\n\t\tthis.setTitle(\"Login\");\n\n\t\tjPanelCenter = new JPanel();\n\t\tjPanelCenter.setLayout(new GridLayout(3, 2));\n\t\tjPanelCenter.add(new JLabel(AppConstants.LOGIN_USERNAME));\n\t\tusername = new JTextField();\n\t\tjPanelCenter.add(username);\n\t\tjPanelCenter.add(new JLabel(AppConstants.LOGIN_PASSWORD));\n\t\tpassword = new JPasswordField();\n\t\t// enter key listener\n\t\tpassword.addKeyListener(new LoginListener());\n\t\tjPanelCenter.add(password);\n\t\tjPanelCenter.add(new JLabel(\"----------------------------------------------\"));\n\t\tjPanelCenter.add(new JLabel(\"----------------------------------------------\"));\n\n\t\tjPanelSouth = new JPanel();\n\t\tjPanelSouth.setLayout(new GridLayout(1, 2));\n\t\tloginButton = new JButton(AppConstants.LOGIN);\n\t\tloginButton.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tcheck();\n\t\t\t}\n\t\t});\n\t\tjPanelSouth.add(loginButton);\n\t\tresetButton = new JButton(AppConstants.RESET);\n\t\tresetButton.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tusername.setText(\"\");\n\t\t\t\tpassword.setText(\"\");\n\t\t\t}\n\t\t});\n\t\tjPanelSouth.add(resetButton);\n\n\t\tthis.add(jPanelCenter, BorderLayout.CENTER);\n\t\tthis.add(jPanelSouth, BorderLayout.SOUTH);\n\n\t\tthis.setDefaultCloseOperation(DISPOSE_ON_CLOSE);\n\t\tthis.setBounds(450, 250, 375, 140);\n\t\tthis.setResizable(false);\n\t\tthis.setVisible(true);\n\t}\n\n\tprivate class LoginListener extends KeyAdapter {\n\n\t\t@Override\n\t\tpublic void keyPressed(KeyEvent e) {\n\t\t\tif (e.getKeyCode() == KeyEvent.VK_ENTER) {\n\t\t\t\tcheck();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void check() {\n\t\tAdminDAO adminDAO = (AdminDAO) BaseDAO.getAbilityDAO(DAO.AdminDAO);\n\t\tif (adminDAO.queryForLogin(username.getText(), String.valueOf(password.getPassword()))) {\n\t\t\tdispose();\n\t\t\tnew MainView();\n\t\t} else {\n\t\t\tusername.setText(\"\");\n\t\t\tpassword.setText(\"\");\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/up/student/view/MainView.java",
    "content": "/**\n * 项目名：student\n * 修改历史：\n * 作者： MZ\n * 创建时间： 2016年1月6日-下午1:37:39\n */\npackage com.up.student.view;\n\nimport java.awt.BorderLayout;\nimport java.awt.GridLayout;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.KeyAdapter;\nimport java.awt.event.KeyEvent;\n\nimport javax.swing.JButton;\nimport javax.swing.JFrame;\nimport javax.swing.JLabel;\nimport javax.swing.JPanel;\nimport javax.swing.JScrollPane;\nimport javax.swing.JTable;\nimport javax.swing.JTextField;\nimport javax.swing.table.DefaultTableCellRenderer;\nimport javax.swing.table.DefaultTableModel;\nimport javax.swing.table.TableColumn;\n\nimport com.up.student.AppConstants;\nimport com.up.student.DAO;\nimport com.up.student.base.BaseDAO;\nimport com.up.student.dao.StudentDAO;\n\n/**\n * 模块说明： 首页\n * \n */\npublic class MainView extends JFrame {\n\n\tprivate static final long serialVersionUID = 5870864087464173884L;\n\n\tprivate final int maxPageNum = 99;\n\n\tprivate JPanel jPanelNorth, jPanelSouth, jPanelCenter;\n\tprivate JButton jButtonFirst, jButtonLast, jButtonNext, jButtonPre, jButtonAdd, jButtonDelete, jButtonUpdate,\n\t\t\tjButtonFind;\n\tprivate JLabel currPageNumJLabel;\n\tprivate JTextField condition;\n\tpublic static JTable jTable;\n\tprivate JScrollPane jScrollPane;\n\tprivate DefaultTableModel myTableModel;\n\n\tpublic static String[] column = { \"id\", AppConstants.STUDENT_NAME, AppConstants.STUDENT_SNO,\n\t\t\tAppConstants.STUDENT_SEX, AppConstants.STUDENT_DEPARTMETN, AppConstants.STUDENT_HOMETOWN,\n\t\t\tAppConstants.STUDENT_MARK, AppConstants.STUDENT_EMAIL, AppConstants.STUDENT_TEL };\n\tpublic static int currPageNum = 1;\n\n\tpublic MainView() {\n\t\tinit();\n\t}\n\n\tprivate void init() {\n\t\tsetTitle(AppConstants.MAINVIEW_TITLE);\n\n\t\t// north panel\n\t\tjPanelNorth = new JPanel();\n\t\tjPanelNorth.setLayout(new GridLayout(1, 5));\n\t\tcondition = new JTextField(AppConstants.PARAM_FIND_CONDITION);\n\t\tcondition.addKeyListener(new FindListener());\n\t\tjPanelNorth.add(condition);\n\t\t// query by name\n\t\tjButtonFind = new JButton(AppConstants.PARAM_FIND);\n\t\tjButtonFind.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tfind();\n\t\t\t}\n\t\t});\n\t\tjButtonFind.addKeyListener(new FindListener());\n\t\t// add\n\t\tjPanelNorth.add(jButtonFind);\n\t\tjButtonAdd = new JButton(AppConstants.PARAM_ADD);\n\t\tjButtonAdd.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tnew AddView();\n\t\t\t}\n\t\t});\n\t\tjPanelNorth.add(jButtonAdd);\n\t\t// delete\n\t\tjButtonDelete = new JButton(AppConstants.PARAM_DELETE);\n\t\tjButtonDelete.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tnew DeleteView();\n\t\t\t}\n\t\t});\n\t\tjPanelNorth.add(jButtonDelete);\n\t\t// update\n\t\tjButtonUpdate = new JButton(AppConstants.PARAM_UPDATE);\n\t\tjButtonUpdate.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tnew UpdateView();\n\t\t\t}\n\t\t});\n\t\tjPanelNorth.add(jButtonUpdate);\n\n\t\t// center panel\n\t\tjPanelCenter = new JPanel();\n\t\tjPanelCenter.setLayout(new GridLayout(1, 1));\n\n\t\t// init jTable\n\t\tString[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).list(currPageNum);\n\t\tmyTableModel = new DefaultTableModel(result, column);\n\t\tjTable = new JTable(myTableModel);\n\t\tDefaultTableCellRenderer cr = new DefaultTableCellRenderer();\n\t\tcr.setHorizontalAlignment(JLabel.CENTER);\n\t\tjTable.setDefaultRenderer(Object.class, cr);\n\t\tinitJTable(jTable, result);\n\n\t\tjScrollPane = new JScrollPane(jTable);\n\t\tjPanelCenter.add(jScrollPane);\n\n\t\t// south panel\n\t\tjPanelSouth = new JPanel();\n\t\tjPanelSouth.setLayout(new GridLayout(1, 5));\n\n\t\tjButtonFirst = new JButton(AppConstants.MAINVIEW_FIRST);\n\t\tjButtonFirst.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tcurrPageNum = 1;\n\t\t\t\tString[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).list(currPageNum);\n\t\t\t\tinitJTable(jTable, result);\n\t\t\t\tcurrPageNumJLabel.setText(AppConstants.MAINVIEW_PAGENUM_JLABEL_DI + currPageNum\n\t\t\t\t\t\t+ AppConstants.MAINVIEW_PAGENUM_JLABEL_YE);\n\t\t\t}\n\t\t});\n\t\tjButtonPre = new JButton(AppConstants.MAINVIEW_PRE);\n\t\tjButtonPre.addActionListener(new ActionListener() {\n\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tcurrPageNum--;\n\t\t\t\tif (currPageNum <= 0) {\n\t\t\t\t\tcurrPageNum = 1;\n\t\t\t\t}\n\t\t\t\tString[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).list(currPageNum);\n\t\t\t\tinitJTable(jTable, result);\n\t\t\t\tcurrPageNumJLabel.setText(AppConstants.MAINVIEW_PAGENUM_JLABEL_DI + currPageNum\n\t\t\t\t\t\t+ AppConstants.MAINVIEW_PAGENUM_JLABEL_YE);\n\t\t\t}\n\t\t});\n\t\tjButtonNext = new JButton(AppConstants.MAINVIEW_NEXT);\n\t\tjButtonNext.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tcurrPageNum++;\n\t\t\t\tif (currPageNum > maxPageNum) {\n\t\t\t\t\tcurrPageNum = maxPageNum;\n\t\t\t\t}\n\t\t\t\tString[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).list(currPageNum);\n\t\t\t\tinitJTable(jTable, result);\n\t\t\t\tcurrPageNumJLabel.setText(AppConstants.MAINVIEW_PAGENUM_JLABEL_DI + currPageNum\n\t\t\t\t\t\t+ AppConstants.MAINVIEW_PAGENUM_JLABEL_YE);\n\t\t\t}\n\t\t});\n\t\tjButtonLast = new JButton(AppConstants.MAINVIEW_LAST);\n\t\tjButtonLast.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tcurrPageNum = maxPageNum;\n\t\t\t\tString[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).list(currPageNum);\n\t\t\t\tinitJTable(jTable, result);\n\t\t\t\tcurrPageNumJLabel.setText(AppConstants.MAINVIEW_PAGENUM_JLABEL_DI + currPageNum\n\t\t\t\t\t\t+ AppConstants.MAINVIEW_PAGENUM_JLABEL_YE);\n\t\t\t}\n\t\t});\n\n\t\tcurrPageNumJLabel = new JLabel(\n\t\t\t\tAppConstants.MAINVIEW_PAGENUM_JLABEL_DI + currPageNum + AppConstants.MAINVIEW_PAGENUM_JLABEL_YE);\n\t\tcurrPageNumJLabel.setHorizontalAlignment(JLabel.CENTER);\n\n\t\tjPanelSouth.add(jButtonFirst);\n\t\tjPanelSouth.add(jButtonPre);\n\t\tjPanelSouth.add(currPageNumJLabel);\n\t\tjPanelSouth.add(jButtonNext);\n\t\tjPanelSouth.add(jButtonLast);\n\n\t\tthis.add(jPanelNorth, BorderLayout.NORTH);\n\t\tthis.add(jPanelCenter, BorderLayout.CENTER);\n\t\tthis.add(jPanelSouth, BorderLayout.SOUTH);\n\n\t\tsetBounds(400, 200, 750, 340);\n\t\tsetResizable(false);\n\t\tsetDefaultCloseOperation(DISPOSE_ON_CLOSE);\n\t\tsetVisible(true);\n\t}\n\n\tpublic static void initJTable(JTable jTable, String[][] result) {\n\t\t((DefaultTableModel) jTable.getModel()).setDataVector(result, column);\n\t\tjTable.setRowHeight(20);\n\t\tTableColumn firsetColumn = jTable.getColumnModel().getColumn(0);\n\t\tfirsetColumn.setPreferredWidth(30);\n\t\tfirsetColumn.setMaxWidth(30);\n\t\tfirsetColumn.setMinWidth(30);\n\t\tTableColumn secondColumn = jTable.getColumnModel().getColumn(1);\n\t\tsecondColumn.setPreferredWidth(60);\n\t\tsecondColumn.setMaxWidth(60);\n\t\tsecondColumn.setMinWidth(60);\n\t\tTableColumn thirdColumn = jTable.getColumnModel().getColumn(2);\n\t\tthirdColumn.setPreferredWidth(90);\n\t\tthirdColumn.setMaxWidth(90);\n\t\tthirdColumn.setMinWidth(90);\n\t\tTableColumn fourthColumn = jTable.getColumnModel().getColumn(3);\n\t\tfourthColumn.setPreferredWidth(30);\n\t\tfourthColumn.setMaxWidth(30);\n\t\tfourthColumn.setMinWidth(30);\n\t\tTableColumn seventhColumn = jTable.getColumnModel().getColumn(6);\n\t\tseventhColumn.setPreferredWidth(30);\n\t\tseventhColumn.setMaxWidth(30);\n\t\tseventhColumn.setMinWidth(30);\n\t\tTableColumn ninthColumn = jTable.getColumnModel().getColumn(8);\n\t\tninthColumn.setPreferredWidth(90);\n\t\tninthColumn.setMaxWidth(90);\n\t\tninthColumn.setMinWidth(90);\n\t}\n\n\tprivate class FindListener extends KeyAdapter {\n\n\t\t@Override\n\t\tpublic void keyPressed(KeyEvent e) {\n\t\t\tif (e.getKeyCode() == KeyEvent.VK_ENTER) {\n\t\t\t\tfind();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void find() {\n\t\tcurrPageNum = 0;\n\t\tString param = condition.getText();\n\t\tif (\"\".equals(param) || param == null) {\n\t\t\tinitJTable(MainView.jTable, null);\n\t\t\tcurrPageNumJLabel.setText(AppConstants.MAINVIEW_FIND_JLABEL);\n\t\t\treturn;\n\t\t}\n\t\tString[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).queryByName(param);\n\t\tcondition.setText(\"\");\n\t\tinitJTable(MainView.jTable, result);\n\t\tcurrPageNumJLabel.setText(AppConstants.MAINVIEW_FIND_JLABEL);\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/up/student/view/UpdateView.java",
    "content": "/**\n * 项目名：student\n * 修改历史：\n * 作者： MZ\n * 创建时间： 2016年1月7日-上午11:07:57\n */\npackage com.up.student.view;\n\nimport java.awt.BorderLayout;\nimport java.awt.GridLayout;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\n\nimport javax.swing.JButton;\nimport javax.swing.JFrame;\nimport javax.swing.JLabel;\nimport javax.swing.JPanel;\nimport javax.swing.JTextField;\n\nimport com.up.student.AppConstants;\nimport com.up.student.DAO;\nimport com.up.student.base.BaseDAO;\nimport com.up.student.dao.StudentDAO;\nimport com.up.student.model.Student;\n\n/**\n * 模块说明： 更新学生信息\n * \n */\npublic class UpdateView extends JFrame {\n\n\tprivate static final long serialVersionUID = 5292738820127102731L;\n\n\tprivate JPanel jPanelCenter, jPanelSouth;\n\tprivate JButton updateButton, exitButton;\n\tprivate JTextField name, sno, department, hometown, mark, email, tel, sex;\n\n\tpublic UpdateView() {\n\t\tinit();\n\t}\n\n\tprivate void init() {\n\t\tsetTitle(AppConstants.UPDATEVIEW_TITLE);\n\t\t// center panel\n\t\tjPanelCenter = new JPanel();\n\t\tjPanelCenter.setLayout(new GridLayout(9, 2));\n\t\tjPanelCenter.add(new JLabel(AppConstants.STUDENT_NAME));\n\t\tname = new JTextField();\n\t\tjPanelCenter.add(name);\n\t\tjPanelCenter.add(new JLabel(AppConstants.STUDENT_SNO));\n\t\tsno = new JTextField();\n\t\tjPanelCenter.add(sno);\n\t\tjPanelCenter.add(new JLabel(AppConstants.STUDENT_SEX));\n\t\tsex = new JTextField();\n\t\tjPanelCenter.add(sex);\n\t\tjPanelCenter.add(new JLabel(AppConstants.STUDENT_DEPARTMETN));\n\t\tdepartment = new JTextField();\n\t\tjPanelCenter.add(department);\n\t\tjPanelCenter.add(new JLabel(AppConstants.STUDENT_HOMETOWN));\n\t\thometown = new JTextField();\n\t\tjPanelCenter.add(hometown);\n\t\tjPanelCenter.add(new JLabel(AppConstants.STUDENT_MARK));\n\t\tmark = new JTextField();\n\t\tjPanelCenter.add(mark);\n\t\tjPanelCenter.add(new JLabel(AppConstants.STUDENT_EMAIL));\n\t\temail = new JTextField();\n\t\tjPanelCenter.add(email);\n\t\tjPanelCenter.add(new JLabel(AppConstants.STUDENT_TEL));\n\t\ttel = new JTextField();\n\t\tjPanelCenter.add(tel);\n\t\tjPanelCenter.add(new JLabel(\"-------------------------------------------------\"));\n\t\tjPanelCenter.add(new JLabel(\"-------------------------------------------------\"));\n\n\t\t// south panel\n\t\tjPanelSouth = new JPanel();\n\t\tjPanelSouth.setLayout(new GridLayout(1, 2));\n\t\tupdateButton = new JButton(AppConstants.UPDATEVIEW_UPDATEBUTTON);\n\t\tupdateButton.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tif (check()) {\n\t\t\t\t\tStudent stu = new Student();\n\t\t\t\t\tbuildStudent(stu);\n\t\t\t\t\tboolean isSuccess = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO)).update(stu);\n\t\t\t\t\tif (isSuccess) {\n\t\t\t\t\t\tsetEmpty();\n\t\t\t\t\t\tif (MainView.currPageNum < 0 || MainView.currPageNum > 99) {\n\t\t\t\t\t\t\tMainView.currPageNum = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tString[][] result = ((StudentDAO) BaseDAO.getAbilityDAO(DAO.StudentDAO))\n\t\t\t\t\t\t\t\t.list(MainView.currPageNum);\n\t\t\t\t\t\tMainView.initJTable(MainView.jTable, result);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tjPanelSouth.add(updateButton);\n\t\texitButton = new JButton(AppConstants.EXITBUTTON);\n\t\texitButton.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tdispose();\n\t\t\t}\n\t\t});\n\t\tjPanelSouth.add(exitButton);\n\n\t\tthis.add(jPanelCenter, BorderLayout.CENTER);\n\t\tthis.add(jPanelSouth, BorderLayout.SOUTH);\n\n\t\tsetDefaultCloseOperation(DISPOSE_ON_CLOSE);\n\t\tsetBounds(470, 200, 400, 270);\n\t\tsetResizable(false);\n\t\tsetVisible(true);\n\t}\n\n\tprivate boolean check() {\n\t\tboolean result = false;\n\t\tif (\"\".equals(name.getText()) || \"\".equals(sno.getText()) || \"\".equals(department.getText())\n\t\t\t\t|| \"\".equals(sex.getText()) || \"\".equals(mark.getText()) || \"\".equals(tel.getText())\n\t\t\t\t|| \"\".equals(email.getText()) || \"\".equals(hometown.getText())) {\n\t\t\treturn result;\n\t\t} else {\n\t\t\tresult = true;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate void buildStudent(Student stu) {\n\t\tstu.setDepartment(department.getText());\n\t\tstu.setEmail(email.getText());\n\t\tstu.setHomeTown(hometown.getText());\n\t\tstu.setMark(mark.getText());\n\t\tstu.setName(name.getText());\n\t\tstu.setSno(sno.getText());\n\t\tstu.setTel(tel.getText());\n\t\tstu.setSex(sex.getText());\n\t}\n\n\tprivate void setEmpty() {\n\t\tname.setText(\"\");\n\t\tsno.setText(\"\");\n\t\tdepartment.setText(\"\");\n\t\tsex.setText(\"\");\n\t\temail.setText(\"\");\n\t\thometown.setText(\"\");\n\t\ttel.setText(\"\");\n\t\tmark.setText(\"\");\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/up/demo/AppTest.java",
    "content": "package com.up.demo;\n\nimport junit.framework.Test;\nimport junit.framework.TestCase;\nimport junit.framework.TestSuite;\n\n/**\n * Unit test for simple App.\n */\npublic class AppTest \n    extends TestCase\n{\n    /**\n     * Create the test case\n     *\n     * @param testName name of the test case\n     */\n    public AppTest( String testName )\n    {\n        super( testName );\n    }\n\n    /**\n     * @return the suite of tests being tested\n     */\n    public static Test suite()\n    {\n        return new TestSuite( AppTest.class );\n    }\n\n    /**\n     * Rigourous Test :-)\n     */\n    public void testApp()\n    {\n        assertTrue( true );\n    }\n}\n"
  }
]