在项目中建立四个包,分别是com.wu.JavaBean、com.wuJavaDao、com.wu.JavaService、com.wu.JavaView
数据库表结构
学生表只有四个属性:学生姓名、学生性别、学生学号(主键)、学生班级
管理员表只有两个属性:管理员用户名(主键)、管理员密码
这里笔者为了简单,学生表只写了四个属性,管理员表只写了两个属性。
在JavaBean新建Student和Root类,如下:
Student.java:
package com.wu.JavaBean;
/**
*
* @date 2020年12月15日下午9:49:51
* @author 一夜星尘
*/
public class Student {
private String name;
private String gender;
private String id;
private String team;
public Student() {}
public Student(String name,String gender,String id,String team) {
this.name = name;
this.id = id;
this.team = team;
this.gender = gender;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTeam() {
return team;
}
public void setTeam(String team) {
this.team = team;
}
}
Root.java:
package com.wu.JavaBean;
/**
*
* @date 2020年12月15日下午9:50:30
* @author 一夜星尘
*/
public class Root {
private String username; // 账号
private String password; // 密码
private String superroot ; // 超级管理员身份 唯一一个
public Root(String username) {
this.username = username;
}
public Root(String username,String password,String superroot) {
this.username = username;
this.password = password;
this.superroot = superroot;
}
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;
}
public boolean isSuperRoot() {
return superroot.equals("1"); // 1代表超级管理员
}
}
建立数据库连接DAO层,即在JavaDao包下建立JDBC.java,该程序只是控制数据库的连接:
package com.wu.JavaDao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* @date 2020年12月15日下午9:58:11
* @author 一夜星尘
*/
public class JDBC {
private Connection sqllink = null;
/**
* 获取数据库连接对象
* @return
* @throws Exception
*/
public Connection getConnection() throws Exception{
String DATABASE_DRIVER = "com.mysql.cj.jdbc.Driver";
String DATABASE_URL = "jdbc:mysql://127.0.0.1:3306/jdbc_db"+
"?charcterEncoding=utf-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";
String DATABASE_USER = "root";
String DATABASE_PASSWORD = "root";
try {
Class.forName(DATABASE_DRIVER); // 注册驱动
sqllink = DriverManager.getConnection(DATABASE_URL,DATABASE_USER,DATABASE_PASSWORD); // 连接数据库
return this.sqllink;
}catch(SQLException e) {
e.printStackTrace();
System.out.println("连接数据库异常"); // 错误信息显示到控制台
return this.sqllink;
}
}
/**
* 关闭数据库连接对象
* @throws Exception
*/
public void closeConnection() throws Exception{
try {
if(this.sqllink != null) {
this.sqllink.close();
}
}catch(SQLException e) {
System.out.println("关闭数据库连接异常");
}
}
}
com.wu.JavaBean和com.wu.JavaDao已经全部完成了,接下来就是完成业务逻辑JavaService包下的实现
对于增添数据的业务方法Add.java:
package com.wu.JavaService;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import com.wu.JavaBean.Root;
import com.wu.JavaBean.Student;
import com.wu.JavaDao.JDBC;
/**
* @date 2020年12月15日下午9:59:09
* @author 一夜星尘
*/
public class Add {
/**
* 添加信息
* @param element 学生或者管理员
* @return
* @throws Exception
*/
public static boolean add(Object element) throws Exception{ // 多态
// 获取数据库对象
JDBC jdbc = new JDBC();
Connection sqllink = jdbc.getConnection();
PreparedStatement sqlaction = null; // 创建一个数据库操作对象
if(element instanceof Student) {
String sql = "insert into student(name,gender,id,team) values(?,?,?,?)"; // mysql插入语句
Student student = (Student) element; // 向下转型
try {
sqlaction = sqllink.prepareStatement(sql); // 操作对象
sqlaction.setString(1,student.getName());
sqlaction.setString(2,student.getGender());
sqlaction.setString(3,student.getId());
sqlaction.setString(4,student.getTeam());
int count = sqlaction.executeUpdate(); // 执行操作
return (count == 1) ? true : false;
}catch(SQLException e) {
return false;
}finally{
jdbc.closeConnection(); // 关闭数据库连接
if(sqlaction != null) {
sqlaction.close();
}
}
}else if(element instanceof Root) {
String sql = "insert into root(username,password,superroot) values(?,?,0)"; // mysql插入语句
Root root = (Root) element; // 向下转型
// 超级管理员权限
if(!root.isSuperRoot()) {
return false;
}
try {
sqlaction = sqllink.prepareStatement(sql); // 操作对象
sqlaction.setString(1,root.getUsername());
sqlaction.setString(2,root.getPassword());
int count = sqlaction.executeUpdate(); // 执行操作
return (count == 1) ? true : false;
}catch(SQLException e) {
return false;
}finally{
jdbc.closeConnection(); // 关闭数据库连接
if(sqlaction != null) {
sqlaction.close();
}
}
}else {
System.out.println("对象传入错误");
return false;
}
}
}
对于删除Remove.java:
package com.wu.JavaService;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import com.wu.JavaBean.Root;
import com.wu.JavaBean.Student;
import com.wu.JavaDao.JDBC;
/**
* @date 2020年12月15日下午10:00:30
* @author 一夜星尘
*/
public class Remove {
/**
* 移除学生信息
* @param student 待移除的学生
* @param pos 移除方式
* @return
* @throws Exception
*/
public static boolean removeStudent(Student student ,String username,int pos) throws Exception{ // 部分修改或者全部修改
// 权限判断 只有超级管理员才能实现全部学生删除
if (pos == 0 && !Find.getAccess(username).equals("1")) {
return false;
}
// 获取数据库对象
JDBC jdbc = new JDBC();
Connection sqllink = jdbc.getConnection();
PreparedStatement sqlaction = null; // 创建一个数据库操作对象
String sql = "";
String[] info = new String[4];
/**
* 0代表删除所有学生
* 1代表删除所有姓名为name的学生
* 2代表删除所有性别为gender的学生
* 3代表删除一个学号为id的学生
* 4代表删除所有班级为team的学生
* 5代表删除所有姓名为name性别为gender的学生
* 6代表删除一个学号为id姓名为name的学生
* 7代表删除所有姓名为name的班级为team的学生
* 8代表删除性别为gender学号为id的一个学生
* 9代表删除所有性别为gender班级为team的学生
* 10代表删除一个学号为id班级为team的学生
* 11代表删除一个姓名为name性别为gender学号为id的学生
* 12代表删除所有姓名为name性别为gender班级为team的学生
* 13代表删除删除一个姓名为name学号为id班级为team的学生
* 14代表删除一个性别为gender学号为id班级为team的学生
* 15代表删除一个姓名为name性别为gender学号为id班级为team的学生
*/
switch(pos) {
case 0:
sql = "delete from student";
try {
sqlaction = sqllink.prepareStatement(sql);
sqlaction.executeUpdate();
return true;
}catch(SQLException e) {
e.printStackTrace();
return false;
}finally {
jdbc.closeConnection();
if(sqlaction != null) {
sqlaction.close();
}
}
case 1:
sql = "delete from student where name = ?";
info[0] = student.getName();
break;
case 2:
sql = "delete from student where gender = ?";
info[0] = student.getGender();
break;
case 3:
sql = "delete from student where id = ?";
info[0] = student.getId();
break;
case 4:
sql = "delete from student where team = ?";
info[0] = student.getTeam();
break;
case 5:
sql = "delete from student where name = ? and gender = ?";
info[0] = student.getName();
info[1] = student.getGender();
break;
case 6:
sql = "delete from student where name = ? and id = ?";
info[0] = student.getName();
info[1] = student.getId();
break;
case 7:
sql = "delete from student where name = ? and team = ?";
info[0] = student.getName();
info[1] = student.getTeam();
break;
case 8:
sql = "delete from student where gender = ? and id = ?";
info[0] = student.getGender();
info[1] = student.getId();
break;
case 9:
sql = "delete from student where gender = ? and team = ?";
info[0] = student.getId();
info[1] = student.getTeam();
break;
case 10:
sql = "delete from student where id = ? and team = ?";
info[0] = student.getName();
info[1] = student.getGender();
break;
case 11:
sql = "delete from student where name = ? and gender = ? and id = ?";
info[0] = student.getName();
info[1] = student.getGender();
info[2] = student.getId();
break;
case 12:
sql = "delete from student where name = ? and gender = ? and team = ?";
info[0] = student.getName();
info[1] = student.getGender();
info[2] = student.getTeam();
break;
case 13:
sql = "delete from student where name = ? and id = ? and team = ?";
info[0] = student.getName();
info[1] = student.getId();
info[2] = student.getTeam();
break;
case 14:
sql = "delete from student where gender = ? and id = ? and team = ?";
info[0] = student.getGender();
info[1] = student.getId();
info[2] = student.getTeam();
break;
case 15:
sql = "delete from student where name = ? and gender = ? and id = ? and team = ?";
info[0] = student.getName();
info[1] = student.getGender();
info[2] = student.getId();
info[3] = student.getTeam();
}
try {
sqlaction = sqllink.prepareStatement(sql);
switch(pos) {
case 1:
case 2:
case 3:
case 4:
sqlaction.setString(1, info[0]);
break;
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
sqlaction.setString(1, info[0]);
sqlaction.setString(2, info[1]);
break;
case 11:
case 12:
case 13:
case 14:
sqlaction.setString(1, info[0]);
sqlaction.setString(2, info[1]);
sqlaction.setString(3, info[2]);
break;
case 15:
sqlaction.setString(1, info[0]);
sqlaction.setString(2, info[1]);
sqlaction.setString(3, info[2]);
sqlaction.setString(4, info[3]);
break;
}
sqlaction.executeUpdate();
return true;
}catch(SQLException e) {
e.printStackTrace();
return false;
}finally {
jdbc.closeConnection();
if(sqlaction != null) {
sqlaction.close();
}
}
}
/**
* 删除管理员信息
* @param root 待删除管理员
* @return
* @throws Exception
*/
public static boolean removeRoot(Root root) throws Exception{ // 完全删除
// 权限判断
if(!root.isSuperRoot()) {
return false;
}
// 获取数据库对象
JDBC jdbc = new JDBC();
Connection sqllink = jdbc.getConnection();
PreparedStatement sqlaction = null; // 创建一个数据库操作对象
String sql = "delete from root where username = ? ";
try {
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,root.getUsername());
int count = sqlaction.executeUpdate();
return count == 1?true : false;
}catch(SQLException e) {
e.printStackTrace();
return false;
}finally {
jdbc.closeConnection();
if(sqlaction != null) {
sqlaction.close();
}
}
}
}
对于查找Find.java:
package com.wu.JavaService;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import com.wu.JavaBean.Root;
import com.wu.JavaBean.Student;
import com.wu.JavaDao.JDBC;
/**
* @date 2020年12月15日下午10:01:05
* @author 一夜星尘
*/
public class Find {
/**
* 查找学生信息
* @param student 待查找的学生
* @param pos 查找方式
* @return
* @throws Exception
*/
public static ArrayList<Student> findStduent(Student student,int pos) throws Exception{ // 查询所有学生或者部分学生
// 获取数据库对象
JDBC jdbc = new JDBC();
Connection sqllink = jdbc.getConnection();
PreparedStatement sqlaction = null; // 创建一个数据库操作对象
ResultSet result = null; // 结果集
String sql = "";
ArrayList<Student> studentlist = new ArrayList<Student>(); // 返回的结果
/**
* 0 代表查询全部
* 1 代表查询所有姓名为name的学生
* 2 代表查询所有性别为gender的学生
* 3 代表查询一个学号为id的学生
* 4 代表查询所有班级为team的学生
* 5 代表查询...同删除操作
*/
switch(pos) {
case 0:
sql = "select * from student";
try {
sqlaction = sqllink.prepareStatement(sql);
result = sqlaction.executeQuery(); // 执行查询操作
while(result.next()) {
String name = result.getString("name");
String gender = result.getString("gender");
String id = result.getString("id");
String team = result.getString("team");
studentlist.add(new Student(name,gender,id,team)); // 添加至返回结果中
}
return studentlist;
}catch(SQLException e) {
e.printStackTrace();
return null;
}finally {
jdbc.closeConnection();
if(sqlaction != null) {
sqlaction.close();
}
}
case 1:
sql = "select * from student where name like ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,student.getName());
break;
case 2:
sql = "select * from student where gender like ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,student.getGender());
break;
case 3:
sql = "select * from student where id like ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,student.getId());
break;
case 4:
sql = "select * from student where team like ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,student.getTeam());
break;
case 5:
sql = "select * from student where name like ? and gender like ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,student.getName());
sqlaction.setString(2,student.getGender());
break;
case 6:
sql = "select * from student where name like ? and id like ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,student.getName());
sqlaction.setString(2,student.getId());
break;
case 7:
sql = "select * from student where name like ? and team like ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,student.getName());
sqlaction.setString(2,student.getTeam());
break;
case 8:
sql = "select * from student where gender like ? and id like ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,student.getGender());
sqlaction.setString(2,student.getId());
break;
case 9:
sql = "select * from student where gender like ? and team like ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,student.getGender());
sqlaction.setString(2,student.getTeam());
break;
case 10:
sql = "select * from student where id like ? and team like ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,student.getId());
sqlaction.setString(2,student.getTeam());
break;
case 11:
sql = "select * from student where name like ? and gender like ? and id like ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,student.getName());
sqlaction.setString(2,student.getGender());
sqlaction.setString(3,student.getId());
break;
case 12:
sql = "select * from student where name like ? and gender like ? and team like ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,student.getName());
sqlaction.setString(2,student.getGender());
sqlaction.setString(3,student.getTeam());
break;
case 13:
sql = "select * from student where name like ? and id like ? and team like ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,student.getName());
sqlaction.setString(2,student.getId());
sqlaction.setString(3,student.getTeam());
break;
case 14:
sql = "select * from student where gender like ? and id like ? and team like ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,student.getGender());
sqlaction.setString(2,student.getId());
sqlaction.setString(3,student.getTeam());
break;
case 15:
sql = "select * from student where name like ? and gender like ? and id like ? and team like ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,student.getName());
sqlaction.setString(2,student.getGender());
sqlaction.setString(3,student.getId());
sqlaction.setString(4,student.getTeam());
break;
}
try {
result = sqlaction.executeQuery(); // 执行查询操作
while(result.next()) {
String name = result.getString("name");
String gender = result.getString("gender");
String id = result.getString("id");
String team = result.getString("team");
studentlist.add(new Student(name,gender,id,team)); // 添加至返回结果中
}
return studentlist;
}catch(SQLException e) {
e.printStackTrace();
return null;
}finally {
jdbc.closeConnection();
if(sqlaction != null) {
sqlaction.close();
}
}
}
/**
* 超级管理员权限
* 查找所有管理员
* @param root 验证属性
* @return
* @throws Exception
*/
public static ArrayList<Root> findRoot(Root root) throws Exception{ // 完全查找权限
// 获取数据库对象
JDBC jdbc = new JDBC();
Connection sqllink = jdbc.getConnection();
PreparedStatement sqlaction = null; // 创建一个数据库操作对象
ResultSet result = null;
ArrayList<Root> rootlist = new ArrayList<Root>();
String sql = "select * from root";
try {
sqlaction = sqllink.prepareStatement(sql);
result = sqlaction.executeQuery();
while(result.next()) {
String username = result.getString("username");
String password = result.getString("password");
String superroot = result.getString("superroot");
rootlist.add(new Root(username,password,superroot));
}
return rootlist;
}catch(SQLException e) {
e.printStackTrace();
return null;
}finally {
jdbc.closeConnection();
if(sqlaction != null) {
sqlaction.close();
}
}
}
/**
* 获取权限信息
* @param username 用户名
* @return
* @throws Exception
*/
public static String getAccess(String username) throws Exception{
// 获取数据库对象
JDBC jdbc = new JDBC();
Connection sqllink = jdbc.getConnection();
PreparedStatement sqlaction = null; // 创建一个数据库操作对象
ResultSet result = null;
String sql = "select superroot from root where username = ?";
try {
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1, username);
result= sqlaction.executeQuery();
if(result.next()) {
return result.getString("superroot");
}else {
return "0";
}
}catch(SQLException e) {
e.printStackTrace();
return "0";
}finally {
jdbc.closeConnection();
if(sqlaction != null) {
sqlaction.close();
}
}
}
public static int getCount() throws Exception{
// 获取数据库对象
JDBC jdbc = new JDBC();
Connection sqllink = jdbc.getConnection();
PreparedStatement sqlaction = null; // 创建一个数据库操作对象
ResultSet result = null;
String sql = "select count(*) from student";
try {
sqlaction = sqllink.prepareStatement(sql);
result = sqlaction.executeQuery();
if(result.next()) {
return Integer.parseInt(result.getString(1));
}else {
return 0;
}
}catch(Exception e) {
e.printStackTrace();
return 0;
}
}
}
对于修改Update.java:
package com.wu.JavaService;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import com.wu.JavaBean.Root;
import com.wu.JavaBean.Student;
import com.wu.JavaDao.JDBC;
/**
* @date 2020年12月15日下午10:01:22
* @author 一夜星尘
*/
public class Update {
/**
* 更新学生信息
* @param oldstudent 待修改的学生
* @param newstudent 修改后的学生
* @param pos 修改方式
* @return
* @throws Exception
*/
public static boolean updateStudent(Student oldstudent,Student newstudent,int pos) throws Exception{ // 部分或者完全更新模式
// 获取数据库对象
JDBC jdbc = new JDBC();
Connection sqllink = jdbc.getConnection();
PreparedStatement sqlaction = null; // 创建一个数据库操作对象
String sql = "";
int count = 0;
switch(pos) {
case 0:
sql = "update student set name = ?,gender = ?,id = ?,team = ? where id = ?"; // id一定要存在
try {
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,newstudent.getName());
sqlaction.setString(2,newstudent.getGender());
sqlaction.setString(3,newstudent.getId());
sqlaction.setString(4,newstudent.getTeam());
sqlaction.setString(5,oldstudent.getId());
count = sqlaction.executeUpdate(); //执行操作
return count==1?true:false;
}catch(SQLException e) {
e.printStackTrace();
return false;
}finally {
jdbc.closeConnection();
if(sqlaction != null) {
sqlaction.close();
}
}
case 1:
sql = "update student set name = ? where name = ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,newstudent.getName());
sqlaction.setString(2, oldstudent.getName());
break;
case 2:
sql = "update student set name = ? where gender = ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,newstudent.getName());
sqlaction.setString(2, oldstudent.getGender());
break;
case 3:
sql = "update student set name = ? where id = ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,newstudent.getName());
sqlaction.setString(2, oldstudent.getId());
break;
case 4:
sql = "update student set name = ? where team = ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,newstudent.getName());
sqlaction.setString(2, oldstudent.getTeam());
break;
case 5:
sql = "update student set gender = ? where name = ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,newstudent.getGender());
sqlaction.setString(2, oldstudent.getName());
break;
case 6:
sql = "update student set gender = ? where gender = ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,newstudent.getGender());
sqlaction.setString(2, oldstudent.getGender());
break;
case 7:
sql = "update student set gender = ? where id = ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,newstudent.getGender());
sqlaction.setString(2, oldstudent.getId());
break;
case 8:
sql = "update student set gender = ? where team = ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,newstudent.getGender());
sqlaction.setString(2, oldstudent.getTeam());
break;
case 9:
sql = "update student set id = ? where id = ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,newstudent.getId());
sqlaction.setString(2, oldstudent.getId());
break;
case 10:
sql = "update student set team = ? where name = ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,newstudent.getTeam());
sqlaction.setString(2, oldstudent.getName());
break;
case 11:
sql = "update student set team = ? where gender = ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,newstudent.getTeam());
sqlaction.setString(2, oldstudent.getGender());
break;
case 12:
sql = "update student set team = ? where id = ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,newstudent.getTeam());
sqlaction.setString(2, oldstudent.getId());
break;
case 13:
sql = "update student set team = ? where team = ?";
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,newstudent.getTeam());
sqlaction.setString(2, oldstudent.getTeam());
break;
}
try {
count = sqlaction.executeUpdate();
return count >= 1 ? true:false;
}catch(SQLException e) {
e.printStackTrace();
return false;
}finally {
jdbc.closeConnection();
if(sqlaction != null) {
sqlaction.close();
}
}
}
/**
* 超级管理员权限
* @param root 待更新的管理员
* @param info 更新信息
* @param pos 更新方式
* @return
* @throws Exception
*/
public static boolean updateRoot(Root root ,String info,int pos) throws Exception{ // 完全更新模式
// 获取数据库对象
JDBC jdbc = new JDBC();
Connection sqllink = jdbc.getConnection();
PreparedStatement sqlaction = null; // 创建一个数据库操作对象
String sql = "";
switch(pos){
case 1:
sql = "update root set username = ? where username =?";
break;
case 2:
sql = "update root set password = ? where username =?";
break;
}
try {
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,info);
sqlaction.setString(2, root.getUsername());
int count = sqlaction.executeUpdate();
return count == 1?true:false;
}catch(SQLException e) {
e.printStackTrace();
return false;
}finally {
jdbc.closeConnection();
if(sqlaction != null) {
sqlaction.close();
}
}
}
}
加上管理员登录认证Exist.java:
package com.wu.JavaService;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.wu.JavaBean.Root;
import com.wu.JavaDao.JDBC;
/**
* @date 2020年12月15日下午10:41:32
* @author 一夜星尘
*/
public class Exist {
/**
* 管理员登录认证
* @param root 管理员
* @return
* @throws Exception
*/
public static boolean rootIsExist(Root root) throws Exception {
// 获取数据库对象
JDBC jdbc = new JDBC();
Connection sqllink = jdbc.getConnection();
PreparedStatement sqlaction = null; // 创建一个数据库操作对象
ResultSet result = null;
String sql = "select count(*) from root where username = ? and password = ?";
try {
sqlaction = sqllink.prepareStatement(sql);
sqlaction.setString(1,root.getUsername());
sqlaction.setString(2,root.getPassword());
result = sqlaction.executeQuery();
if(result.next()) {
int count = Integer.parseInt(result.getString(1));
return count == 1 ? true:false;
}else {
return false;
}
}catch(SQLException e) {
e.printStackTrace();
return false;
}finally {
jdbc.closeConnection(); // 关闭数据库连接
if(sqlaction != null) {
sqlaction.close();
}
}
}
}
处理模糊查询的DealString.java:
package com.wu.JavaService;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @date 2020年12月15日下午1:48:05
* @author 一夜星尘
*/
public class DealString {
public static String[] deal(String search) {
String[] searchs = search.split("&");
String regex = "([\\u4e00-\\u9fa5]+)=([ % _ a-z 0-9 \\u4e00-\\u9fa5]+)"; // 匹配中文或者数字模式
String[] result = new String[5];
result[0] = "0"; // 默认为全部
boolean nameflag = false;
boolean genderflag = false;
boolean idflag = false;
boolean teamflag = false;
HashMap<Integer, String> hashmap = new HashMap<Integer, String>();
for(String str : searchs) {
Matcher mattcher = Pattern.compile(regex).matcher(str);
if(mattcher.find()) {
if(mattcher.group(1).equals("姓名")) {
nameflag = true;
hashmap.put(1,mattcher.group(2));
}else if(mattcher.group(1).equals("性别")){
genderflag = true;
hashmap.put(2,mattcher.group(2));
}else if(mattcher.group(1).equals("学号")) {
idflag = true;
hashmap.put(3,mattcher.group(2));
}else if(mattcher.group(1).equals("班级")) {
teamflag = true;
hashmap.put(4,mattcher.group(2));
}else {
}
}
}
// 对应位置放置相关信息
Iterator<?> iter = hashmap.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
int key = (int) entry.getKey();
String val =(String) entry.getValue();
result[key] = val;
}
if(nameflag && !genderflag && !idflag && !teamflag) {
result[0] = "1";
return result;
}else if(!nameflag && genderflag && !idflag && !teamflag) {
result[0] = "2";
return result;
}else if(!nameflag && !genderflag && idflag && !teamflag) {
result[0] = "3";
return result;
}else if(!nameflag && !genderflag && !idflag && teamflag) {
result[0] = "4";
return result;
}else if(nameflag && genderflag && !idflag && !teamflag) {
result[0] = "5";
return result;
}else if(nameflag && !genderflag && idflag && !teamflag) {
result[0] = "6";
return result;
}else if(nameflag && !genderflag && !idflag && teamflag) {
result[0] = "7";
return result;
}else if(!nameflag && genderflag && idflag && !teamflag) {
result[0] = "8";
return result;
}else if(!nameflag && genderflag && !idflag && teamflag) {
result[0] = "9";
return result;
}else if(!nameflag && !genderflag && idflag && teamflag) {
result[0] = "10";
return result;
}else if(nameflag && genderflag && idflag && !teamflag) {
result[0] = "11";
return result;
}else if(nameflag && genderflag && !idflag && teamflag) {
result[0] = "12";
return result;
}else if(nameflag && !genderflag && idflag && teamflag) {
result[0] = "13";
return result;
}else if(!nameflag && genderflag && idflag && teamflag) {
result[0] = "14";
return result;
}else if(nameflag && genderflag && idflag && teamflag) {
result[0] = "15";
return result;
}
return result;
}
}
接下来就是可视化界面,在JavaView包下
Home.java:
package com.wu.JavaView;
/**
* @date 2020年12月16日下午5:09:16
* @author 一夜星尘
*/
public class Hemo {
public static void main(String[] args) {
try {
new Login();
}catch(Exception e) {
System.out.println("程序出错!");
}
}
}
登录界面Login.java:
package com.wu.JavaView;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRootPane;
import javax.swing.JTextField;
import javax.swing.border.Border;
import com.wu.JavaBean.Root;
import com.wu.JavaService.Exist;
/**
* @date 2020年12月16日下午10:02:08
* @author 一夜星尘
*/
public class Login extends JFrame{
private static final long serialVersionUID = 1L;
public Login() throws Exception{
this.setSize(450,350); // 设置宽高度
this.setTitle("登录界面"); // 设置标题
this.setResizable(false); // 固定窗口大小
this.setUndecorated(true); // 去掉窗口的装饰
this.getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG); //采用指定的窗口装饰风格
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 结束程序
this.setLocationRelativeTo(null); // 使之位于主窗口的中心
setBackGroundPanel();
this.setVisible(true); // 显示
}
public void setBackGroundPanel() throws Exception{
JPanel panel = new JPanel();
JButton jb=new JButton("测试按钮");
jb.setBounds(100,100,100,100);
this.add(panel);
panel.setLayout(null); // 空布局
Font font = new Font("微软雅黑",Font.BOLD,11);
Border border1 = BorderFactory.createLoweredBevelBorder();
Border border2 = BorderFactory.createLineBorder(Color.BLUE);
JLabel usernamelabel = new JLabel("账号: ");
usernamelabel.setFont(font);
usernamelabel.setForeground(Color.BLACK);
usernamelabel.setBounds(130,100,30,15);
JLabel passwordlabel = new JLabel("密码: ");
passwordlabel.setFont(font);
passwordlabel.setForeground(Color.BLACK);
passwordlabel.setBounds(130,150,30,15);
JTextField usernametext = new JTextField("I am superroot");
usernametext.setBounds(160,95,150,20);
usernametext.setBorder(border1);
// usernametext.setOpaque(false); // 透明框
JPasswordField passwordtext = new JPasswordField("password");
passwordtext.setBounds(160,145,150,20);
passwordtext.setBorder(border1);
JButton submit = new JButton("登录");
JButton close = new JButton("退出");
submit.setBorder(border2); // 登录键边框风格
submit.setBounds(130,210,90,25);
submit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
String username = usernametext.getText();
String password = new String(passwordtext.getPassword());
if(username.equals("")) {
JOptionPane.showMessageDialog(null, "用户名不能为空!", "错误",JOptionPane.WARNING_MESSAGE);
}else if(password.equals("")){
JOptionPane.showMessageDialog(null, "密码不能为空!", "错误",JOptionPane.WARNING_MESSAGE);
}else {
// 登录认证
Root root = new Root(username,password,"0"); // 新建一个虚拟管理员对象
try {
if(Exist.rootIsExist(root)) {
new Menu(username);
dispose(); // 关闭当前的窗口
}else {
JOptionPane.showMessageDialog(null, "用户名或密码错误!", "错误",JOptionPane.WARNING_MESSAGE);
}
}catch(Exception e) {
e.printStackTrace();
}finally {
usernametext.setText("");
passwordtext.setText("");
}
}
}
});
close.setBorder(border2); // 关闭键边框风格
close.setBounds(250,210,90,25);
close.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
int quit = JOptionPane.showConfirmDialog(null,"是否退出?","提示",JOptionPane.YES_NO_OPTION);
if(quit == JOptionPane.YES_OPTION) {
System.exit(0);
}
}
});
panel.add(submit);
panel.add(close);
panel.add(usernametext);
panel.add(passwordtext);
panel.add(usernamelabel);
panel.add(passwordlabel);
}
}
主页面Menu.java:
package com.wu.JavaView;
import java.awt.Color;
import java.awt.Font;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JRootPane;
/**
* @date 2020年12月16日上午10:53:39
* @author 一夜星尘
*/
public class Menu{
private static JFrame Frame = new JFrame();
private String username = null;
private static JPanel Panel = null;
public Menu(String username) {
this.username = username;
Frame.setSize(800,600); // 设置宽高度
Frame.setTitle("菜单界面"); // 设置标题
Frame.setResizable(false); // 固定窗口大小
Frame.setUndecorated(true); // 去掉窗口的装饰
Frame.getRootPane().setWindowDecorationStyle(JRootPane.FRAME); //采用指定的窗口装饰风格
Frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
Frame.setLocationRelativeTo(null); // 主窗口的中心
Panel = this.getPanel();
this.setMenu(); // 设置菜单项
Frame.add(Panel);
Frame.setVisible(true); // 可见
}
public JPanel getPanel() {
JPanel panel = new JPanel();
panel.setLayout(null);// 绝对布局
panel.setBackground(Color.LIGHT_GRAY);
Font font = new Font("微软雅黑",Font.BOLD,20);
JLabel title = new JLabel("管理员:"+username);
title.setBounds(300,500,250,40);
title.setFont(font);
panel.add(title); // 增加底部标签
return panel;
}
public void setMenu() {
// 菜单条
JMenuBar menubar = new JMenuBar();
menubar.setBounds(0,0,800,40);
Panel.add(menubar);
//菜单项
JMenu addmenu = new JMenu("添加");
JMenuItem addmenuItem1 = new JMenuItem("添加学生");
JMenuItem addmenuItem2 = new JMenuItem("添加管理员");
addmenu.add(addmenuItem1);
addmenu.add(addmenuItem2);
JMenu removemenu = new JMenu("删除");
JMenuItem removemenuItem1 = new JMenuItem("删除学生");
JMenuItem removemenuItem2 = new JMenuItem("删除管理员");
removemenu.add(removemenuItem1);
removemenu.add(removemenuItem2);
JMenu findmenu = new JMenu("查找");
JMenuItem findmenuItem1 = new JMenuItem("查找学生");
JMenuItem findmenuItem2 = new JMenuItem("查找管理员");
findmenu.add(findmenuItem1);
findmenu.add(findmenuItem2);
JMenu updatemenu = new JMenu("修改");
JMenuItem updatemenuItem1 = new JMenuItem("修改学生");
JMenuItem updatemenuItem2 = new JMenuItem("修改管理员");
updatemenu.add(updatemenuItem1);
updatemenu.add(updatemenuItem2);
JMenu accessmenu = new JMenu("账号设置");
JMenuItem accessmenuItem1 = new JMenuItem("修改用户名");
JMenuItem accessmenuItem2 = new JMenuItem("修改密码");
JMenuItem accessmenuItem3 = new JMenuItem("退出账号");
JMenuItem accessmenuItem4 = new JMenuItem("注销账号");
accessmenu.add(accessmenuItem1);
accessmenu.add(accessmenuItem2);
accessmenu.add(accessmenuItem3);
accessmenu.add(accessmenuItem4);
// 添加功能 监听器实现
{
addmenuItem1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
Menu.Frame.remove(Menu.Panel); // 移除当前的布局
Frame.repaint();
Panel = AddPanel.getPanel(Menu.this.username,1); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
addmenuItem2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
Menu.Frame.remove(Menu.Panel); // 移除当前的布局
Frame.repaint();
Panel = AddPanel.getPanel(Menu.this.username,2); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
}
// 移除功能 监听器实现
{
removemenuItem1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
Menu.Frame.remove(Menu.Panel); // 移除当前的布局
Frame.repaint();
Panel = RemovePanel.getPanel(Menu.this.username,1); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
removemenuItem2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
Menu.Frame.remove(Menu.Panel); // 移除当前的布局
Frame.repaint();
Panel = RemovePanel.getPanel(Menu.this.username,2); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
}
// 查找功能 监听器实现
{
findmenuItem1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
Menu.Frame.remove(Menu.Panel); // 移除当前的布局
Frame.repaint();
Panel = FindPanel.getPanel(Menu.this.username,1); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
findmenuItem2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
Menu.Frame.remove(Menu.Panel); // 移除当前的布局
Frame.repaint();
Panel = FindPanel.getPanel(Menu.this.username,2); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
}
// 修改功能 监听器实现
{
updatemenuItem1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
Menu.Frame.remove(Menu.Panel); // 移除当前的布局
Frame.repaint();
Panel = UpdatePanel.getPanel(Menu.this.username,1); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
updatemenuItem2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
Menu.Frame.remove(Menu.Panel); // 移除当前的布局
Frame.repaint();
Panel = UpdatePanel.getPanel(Menu.this.username,2); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
}
// 账号功能 监听器实现
{
accessmenuItem1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
Menu.Frame.remove(Menu.Panel); // 移除当前的布局
Frame.repaint();
Panel = UpdateUserPanel.getPanel(Menu.this.username,1); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
accessmenuItem2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
Menu.Frame.remove(Menu.Panel); // 移除当前的布局
Frame.repaint();
Panel = UpdateUserPanel.getPanel(Menu.this.username,2); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
accessmenuItem3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
Menu.Frame.remove(Menu.Panel); // 移除当前的布局
Frame.repaint();
Panel = AccountPanel.getPanel(Menu.this.username,1); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
accessmenuItem4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
Menu.Frame.remove(Menu.Panel); // 移除当前的布局
Frame.repaint();
Panel = AccountPanel.getPanel(Menu.this.username,2); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
}
menubar.add(addmenu);
menubar.add(removemenu);
menubar.add(findmenu);
menubar.add(updatemenu);
menubar.add(accessmenu);
}
public static JFrame getFrame() {
return Frame;
}
}
笔者这里由于增删改查界面设计繁琐,亦限于篇幅,只展示‘查’的这一部分FindPanel.java:
package com.wu.JavaView;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import com.wu.JavaBean.Root;
import com.wu.JavaBean.Student;
import com.wu.JavaService.DealString;
import com.wu.JavaService.Find;
/**
* @date 2020年12月16日上午10:09:35
* @author 一夜星尘
*/
public class FindPanel {
private static JPanel Panel = null;
private static JFrame Frame = null;
private static String username = null;
private static Icon buttonicon = new ImageIcon("src\\images\\searchbutton.png");
public static JPanel getPanel(String username,int flag) {
Frame = Menu.getFrame(); // 同一Frame
FindPanel.username = username;
Panel = new JPanel(); //生成新的布局
Panel.setLayout(null); // 绝对布局
Panel.setBounds(0,0,790,567); //设置布局大小
Panel.setBackground(Color.LIGHT_GRAY);
setMenu(); // 设置菜单项
find(flag); // 增添学生或管理员 flag 1:学生 2 :管理员
return Panel;
}
public static void setMenu() {
// 菜单条
JMenuBar menubar = new JMenuBar();
menubar.setBounds(0,0,800,40);
Panel.add(menubar);
//菜单项
JMenu addmenu = new JMenu("添加");
JMenuItem addmenuItem1 = new JMenuItem("添加学生");
JMenuItem addmenuItem2 = new JMenuItem("添加管理员");
addmenu.add(addmenuItem1);
addmenu.add(addmenuItem2);
JMenu removemenu = new JMenu("删除");
JMenuItem removemenuItem1 = new JMenuItem("删除学生");
JMenuItem removemenuItem2 = new JMenuItem("删除管理员");
removemenu.add(removemenuItem1);
removemenu.add(removemenuItem2);
JMenu findmenu = new JMenu("查找");
JMenuItem findmenuItem1 = new JMenuItem("查找学生");
JMenuItem findmenuItem2 = new JMenuItem("查找管理员");
findmenu.add(findmenuItem1);
findmenu.add(findmenuItem2);
JMenu updatemenu = new JMenu("修改");
JMenuItem updatemenuItem1 = new JMenuItem("修改学生");
JMenuItem updatemenuItem2 = new JMenuItem("修改管理员");
updatemenu.add(updatemenuItem1);
updatemenu.add(updatemenuItem2);
JMenu accessmenu = new JMenu("账号设置");
JMenuItem accessmenuItem1 = new JMenuItem("修改用户名");
JMenuItem accessmenuItem2 = new JMenuItem("修改密码");
JMenuItem accessmenuItem3 = new JMenuItem("退出账号");
JMenuItem accessmenuItem4 = new JMenuItem("注销账号");
accessmenu.add(accessmenuItem1);
accessmenu.add(accessmenuItem2);
accessmenu.add(accessmenuItem3);
accessmenu.add(accessmenuItem4);
// 添加功能 响应
{
addmenuItem1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
FindPanel.Frame.remove(FindPanel.Panel); // 移除当前的布局
Frame.repaint();
Panel = AddPanel.getPanel(FindPanel.username,1); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
addmenuItem2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
FindPanel.Frame.remove(FindPanel.Panel); // 移除当前的布局
Frame.repaint();
Panel = AddPanel.getPanel(FindPanel.username,2); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
}
//移除功能 响应
{
removemenuItem1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
FindPanel.Frame.remove(FindPanel.Panel); // 移除当前的布局
Frame.repaint();
Panel = RemovePanel.getPanel(FindPanel.username,1); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
removemenuItem2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
FindPanel.Frame.remove(FindPanel.Panel); // 移除当前的布局
Frame.repaint();
Panel = RemovePanel.getPanel(FindPanel.username,2); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
}
//查看功能 响应
{
findmenuItem1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
FindPanel.Frame.remove(FindPanel.Panel); // 移除当前的布局
Frame.repaint();
Panel = FindPanel.getPanel(FindPanel.username,1); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
findmenuItem2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
FindPanel.Frame.remove(FindPanel.Panel); // 移除当前的布局
Frame.repaint();
Panel = FindPanel.getPanel(FindPanel.username,2); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
}
//修改功能 响应
{
updatemenuItem1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
FindPanel.Frame.remove(FindPanel.Panel); // 移除当前的布局
Frame.repaint();
Panel = UpdatePanel.getPanel(FindPanel.username,1); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
updatemenuItem2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
FindPanel.Frame.remove(FindPanel.Panel); // 移除当前的布局
Frame.repaint();
Panel = UpdatePanel.getPanel(FindPanel.username,2); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
}
//账号功能 响应
{
accessmenuItem1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
FindPanel.Frame.remove(FindPanel.Panel); // 移除当前的布局
Frame.repaint();
Panel = UpdateUserPanel.getPanel(FindPanel.username,1); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
accessmenuItem2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
FindPanel.Frame.remove(FindPanel.Panel); // 移除当前的布局
Frame.repaint();
Panel = UpdateUserPanel.getPanel(FindPanel.username,2); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
accessmenuItem3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
FindPanel.Frame.remove(FindPanel.Panel); // 移除当前的布局
Frame.repaint();
Panel = AccountPanel.getPanel(FindPanel.username,1); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
accessmenuItem4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
FindPanel.Frame.remove(FindPanel.Panel); // 移除当前的布局
Frame.repaint();
Panel = AccountPanel.getPanel(FindPanel.username,2); // 切换布局
Frame.add(Panel);
Frame.setVisible(true);
}
});
}
menubar.add(addmenu);
menubar.add(removemenu);
menubar.add(findmenu);
menubar.add(updatemenu);
menubar.add(accessmenu);
}
public static void find(int flag) {
if(flag == 1) {
DefaultTableModel model = new DefaultTableModel();
JTable table = new JTable(model);
JScrollPane scrollpanel = new JScrollPane(table);
scrollpanel.setBounds(0,80,800 ,560);
Panel.add(scrollpanel);
JLabel title = new JLabel("学生信息查询");
title.setBounds(200,45,90,30);
Panel.add(title);
String[] Attribute = {"姓名","性别","学号","班级"};
// 构建搜索框
JTextField searchtext = new JTextField();
searchtext.setBounds(300,45,160,30);
Panel.add(searchtext);
JButton search = new JButton(buttonicon);
search.setBounds(460,45,30,30);
Panel.add(search);
// 搜索功能 响应
{
search.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
String search = searchtext.getText();
String[] deal = DealString.deal(search); // 第一个位置为对应的查找方式 第二至最后一个位置为存放的相应的信息
int pos = Integer.parseInt(deal[0]);
Object[][] dataVector = getStudentDateVector(new Student(deal[1],deal[2],deal[3],deal[4]),pos);
// System.out.println(deal[1]+deal[2]+deal[3]+deal[4]+pos);
model.setDataVector(dataVector, Attribute);
}
});
}
Object[][] dataVector = getStudentDateVector(new Student(),0); // 默认为查看所有学生
model.setDataVector(dataVector, Attribute);
}else if(flag == 2) {
try{
if(Find.getAccess(FindPanel.username).equals("0")) {
JOptionPane.showMessageDialog(null, "权限不够,无法访问!", "错误",JOptionPane.WARNING_MESSAGE);
}else {
DefaultTableModel model = new DefaultTableModel();
JTable table = new JTable(model);
JScrollPane scrollpanel = new JScrollPane(table);
scrollpanel.setBounds(0,80,800 ,560);
Panel.add(scrollpanel);
JLabel title = new JLabel("管理员信息查询");
title.setBounds(360,45,90,30);
Panel.add(title);
String[] Attribute = {"用户名","密码"};
Object[][] dataVector = getRootDateVector(new Root(FindPanel.username,"","")); // 查看所有管理员
model.setDataVector(dataVector, Attribute);
}
}catch(Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "权限不够,无法访问!", "错误",JOptionPane.WARNING_MESSAGE);
}
}
}
public static String[][] getStudentDateVector(Student student,int pos){
try {
String[][] data = new String[Find.getCount()][4];
ArrayList<Student> studentlist = Find.findStduent(student, pos);
int i = 0;
for(Student s : studentlist) {
data[i][0] = s.getName();
data[i][1] = s.getGender();
data[i][2] = s.getId();
data[i][3] = s.getTeam();
i++;
}
return data;
}catch(Exception e) {
e.printStackTrace();
return null;
}
}
public static String[][] getRootDateVector(Root root){
try {
String[][] data = new String[Find.getCount()][2];
ArrayList<Root> rootlist = Find.findRoot(root);
int i = 0;
for(Root r : rootlist) {
data[i][0] = r.getUsername();
data[i][1] = r.getPassword();
i++;
}
return data;
}catch(Exception e) {
e.printStackTrace();
return null;
}
}
}
具体效果如下:
支持模糊查询,即通过 属性1=内容1&属性2=内容2 可以配合%_两个符号查询
这里笔者为了简单,没有精雕细琢,读者可以根据自己的需要修改即可。