精华内容
下载资源
问答
  • 步骤 数据库准备 CREATE DATABASE stus; USE stus; CREATE TABLE stu ( sid INT PRIMARY KEY AUTO_INCREMENT, sname VARCHAR (20), gender VARCHAR (5), phone VARCHAR (20), birthday DATE, hobby ...

    主要是用了开源的JDBC连接池c3p0+DBUtils+El+jstl里得taglib标签实现变量传输
    三层结构+MVC模式
    三层结构+MVC模式

    步骤

    数据库准备

    CREATE DATABASE stus;
    USE stus;
    CREATE TABLE stu (
    	sid INT PRIMARY KEY  AUTO_INCREMENT,
    	sname VARCHAR (20),
    	gender VARCHAR (5),
    	phone VARCHAR (20),
    	birthday DATE,
    	hobby VARCHAR(50),
    	info VARCHAR(200)
    );
    

    查询

    1. 先写一个index 页面, 里面放一个超链接 。 (web层——view模式)
    < a href="StudentListServlet"> 学生列表显示	</ a>
    
    1. 写Servlet, 接收请求, 去调用 Service , 由service去调用dao (web层——controll模式)

    2. 封装的学生对象 bean——(业务逻辑层——Model模式)

    3. 先写Dao , 做Dao实现——(业务逻辑层——Model模式)

      Dao接口:查询所有学生
      @return List

     	public interface StudentDao {
          	
                List<Student> findAll()  throws SQLException ;
                }
    
    		public class StudentDaoImpl implements StudentDao {
    

    Dao实现: 查询所有学生
    @throws SQLException
    @Override

    public List<Student> findAll() throws SQLException {
    				QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());//DButils
    				return runner.query("select * from stu", new BeanListHandler<Student>(Student.class));
    				}
    		}	
    
    1. 再Service , 做Service的实现。(业务逻辑层——Model模式)

    学生的业务处理规范

    查询所有学生
    @return List

    	public interface StudentService {
    			List<Student> findAll()  throws SQLException ;
    	}
    

    学生业务实现

    public class StudentServiceImpl implements StudentService{
    		
    	@Override
    			public List<Student> findAll() throws SQLException {
    				StudentDao dao = new StudentDaoImpl();
    				return dao.findAll();
    			}
    		}
    
    1. 在servlet 存储数据,并且做出页面响应。(web层——controll模式)
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
     
    	try {
       			//1. 查询出来所有的学生
       			StudentService service = new StudentServiceImpl();
       			List<Student> list = service.findAll();
       			
       			//2. 先把数据存储到作用域中
       			request.setAttribute("list", list);  //注意四大作用域知识点
       			//3. 跳转页面
       			request.getRequestDispatcher("list.jsp").forward(request, response);
       			   		}
    	catch (SQLException e) {
    			e.printStackTrace();
       		}
       	}
    
    1. 在list.jsp上显示数据

      EL + JSTL + 表格
      El和jstl: 简化jsp页面中的java代码,增强jsp页面的功能

    EL表达式:${“aa”}代替输出<%=request.getAttribute(“aa”)%>

    jstl:apache出品的标签库语言
    使用步骤:
    1.导入jar包
    2.在页面上引入标签库
    <%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>

    forEach标签的高级使用 :在页面上遍历数组,单列集合和map
    格式
    <c:forEach items=“从域中通过el获取集合” var=“n”>
    ${n}
    </c:forEach>
    例子:

     <c:forEach items="${list }" var="stu">
    				  <tr align="center">
    					<td>${stu.sid }</td>
    					<td>${stu.sname }</td>
    					<td>${stu.gender }</td>
    					<td>${stu.phone }</td>
    					<td>${stu.birthday }</td>
    					<td>${stu.hobby }</td>
    					<td>${stu.info }</td>
    				  </tr>
    			  </c:forEach>
    

    增加

    1. 先跳转到增加的页面 , 编写增加的页面 Add.jsp

    2. 点击添加,提交数据到AddServlet . 处理数据。
      (1)获取客户端提交上来的数据|
      爱好的value 值有多个,需要转换成字符串

      request.getParameter("hobby");
       String[] hobby = 	request.getParameterValues("hobby") ---> String[] 
       String value = Arrays.toString(hobby): // 爱好, 篮球, 足球 | 
    

    日期格式需要转换,String–Date

    Date date= new SimpleDateFormat("yyyy-MM-dd").parse(birthday);  
    
    1. 调用service,service调用dao,完成数据持久化, 添加到数据库
      添加学生Service规范

      @param student 需要添加到数据库的学生对象
      @throws SQLException

    void insert(Student student) throws SQLException ;
    

    添加学生Service实现

    	@Override
    	public void insert(Student student) throws SQLException {
    		StudentDao dao = new StudentDaoImpl();
    		dao.insert(student);
    	}
    

    添加学生dao
    @param student 需要添加到数据库的学生对象
    @throws SQLException

    	void insert(Student student) throws SQLException ;
    

    添加学生 dao实现

    @Override
    	public void insert(Student student) throws SQLException {
    		QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
    		
    		runner.update("insert into stu values(null , ?,?,?,?,?,?)" ,
    				student.getSname(),
    				student.getGender(),
    				student.getPhone(),		
    				student.getHobby(),
    				student.getInfo(),
    				student.getBirthday()
    				);
    	}
    

    添加到数据库

    Student student = new Student(sname, gender, phone, hobby,info, date);
    			StudentService service = new StudentServiceImpl();
    			service.insert(student);
    

    3 跳转到列表页
    完成了这些存储工作后,需要跳转到列表页面。
    如果直接跳转到list.jsp页面上, 那么这个页面会重新翻译一次,上面的那个request的请求存放的数据是没有了,没有什么内容显示。

    request.getRequestDispatcher("list.jsp").forward(request, response); //没有什么内容显示。
    

    应该先跳转到查询所有学生信息的那个Servlet, 由那个Servlet再去跳转到列表页面。
    //servlet除了能跳jsp之外。 还能跳servlet

    	request.getRequestDispatcher("StudentListServlet").forward(request, response);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    

    删除

    1. 点击超链接,弹出一个询问是否删除的对话框,如果点击了确定,那么就真的删除。

       <a href="#" onclick="doDelete(${stu.sid})">删除</a>​		
      

      让超链接,执行一个js方法

     	<script type="text/javascript">
    
       		function doDelete(sid) {
       			/* 如果这里弹出的对话框,用户点击的是确定,就马上去请求Servlet。 
       			如何知道用户点击的是确定。
       			如何在js的方法中请求servlet。 */
       			var flag = confirm("是否确定删除?");
       			if(flag){
       				//表明点了确定。 访问servlet。 在当前标签页上打开 超链接,
       				//window.location.href="DeleteServlet?sid="+sid;
       				location.href="DeleteServlet?sid="+sid;
       			}
       		}
       	</script>
    
    1. 在js访问里面判断点击的选项,然后跳转到servlet。

    2. servlet收到了请求,然后去调用service , service去调用dao

    更新

    1. 点击列表上的更新, 先跳转到一个EditServlet
      在这个Servlet里面,先根据ID 去查询这个学生的所有信息出来。

    2. 跳转到更新的页面。 ,然后在页面上显示数据

        <tr>
       	<td>姓名</td>
       	<td><input type="text" name="sname" value="${stu.sname }"></td>
         </tr>
      
          <tr>
       	<td>性别</td>
       	<td>
       		<!-- 如果性别是男的,  可以在男的性别 input标签里面, 出现checked ,
       		如果性别是男的,  可以在女的性别 input标签里面,出现checked -->
       		<input type="radio" name="gender" value="男" <c:if test="${stu.gender == '男'}">checked</c:if>>男
       		<input type="radio" name="gender" value="女" <c:if test="${stu.gender == '女'}">checked</c:if>>女
       	</td>
         </tr>
      
      
        <tr>
       	<td>爱好</td>
      
      
       	<td>
       		<!-- 爱好: 篮球 , 足球 , 看书 
       		因为爱好有很多个,  里面存在包含的关系 -->
       		<input type="checkbox" name="hobby" value="游泳" <c:if test="${fn:contains(stu.hobby,'游泳') }">checked</c:if>>游泳
       		<input type="checkbox" name="hobby" value="篮球" <c:if test="${fn:contains(stu.hobby,'篮球') }">checked</c:if>>篮球
       		<input type="checkbox" name="hobby" value="足球" <c:if test="${fn:contains(stu.hobby,'足球') }">checked</c:if>>足球
       		<input type="checkbox" name="hobby" value="看书" <c:if test="${fn:contains(stu.hobby,'看书') }">checked</c:if>>看书
       		<input type="checkbox" name="hobby" value="写字" <c:if test="${fn:contains(stu.hobby,'写字') }">checked</c:if>>写字
       	
       	</td>
         </tr>
      
    3. 修改完毕后,提交数据到UpdateServlet

    提交上来的数据是没有带id的,所以我们要手动创建一个隐藏的输入框, 在这里面给定id的值, 以便提交表单,带上id。

    	<form method="post" action="UpdateServlet">
    		<input type="hidden" name="sid" value="${stu.sid }">
    	</form>
    
    1. 获取数据,调用service, 调用dao.```

    模糊查询

    1.点击list.jsp页面上的姓名或性别 或者两者查询

    <form action="SearchStudentServlet" method="post">
    			<table border="1" width="700">
    			<tr >
    				<td colspan="8">		
    					按姓名查询:<input type="text" name="sname"/>
    					&nbsp;
    					按性别查询:<select name="sgender">
    								<option value="">--请选择--
    								<option value="男">男
    								<option value="女">女
    							  </select>
    					&nbsp;&nbsp;&nbsp;
    					<input type="submit" value="查询">
    					&nbsp;&nbsp;&nbsp;
    				</td>
    			</tr>
    		</table>
    	  </form>
    

    2.跳转到模糊查询的SearchStudentServlet,接收Name和Gender.

     //模糊查找的时候,如果输入中文字符,未设置兼容语言,也无法查到数据
    request.setCharacterEncoding("UTF-8");
    
    			//1. 取到了要查询的关键数据 姓名  , 性别。
    			String sname=  request.getParameter("sname");
    			String sgender=  request.getParameter("sgender");			
    

    3.调用service查找

    	//2. 找service去查询
    			StudentService service = new StudentServiceImpl();
    			List<Student> list = service.searchStudent(sname, sgender);
    

    Service调用Dao实现:

    public List<Student> searchStudent(String sname, String sgender) throws SQLException {
    		return new StudentDaoImpl().searchStudent(sname, sgender);
    	}
    

    Dao实现:
    /*
    * 这里要分析一下:
    * 如果只有姓名 ,select * from stu where sname like ? ;
    * 如果只有性别 , select * from stu where gender = ?
    *
    * 如果两个都有 select * from stu where sname like ? and gender=?
    *
    * 如果两个都没有就查询所有。
    *
    */

    public List<Student> searchStudent(String sname, String sgender) throws SQLException {	
    		QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
    	
    		String sql = "select * from stu where 1=1 ";
    		List<String> list = new ArrayList<String> ();		
    		//1,判断有没有姓名, 如果有,就组拼到sql语句里面
    		if(!TextUtils.isEmpty(sname)){
    			sql = sql + "  and sname like ?";
    			 //注意sql的where  like的模糊查询用法  %代表零个或多个字符
    			list.add("%"+sname+"%");
    		}
    		//2,判断有没有性别,有的话,就组拼到sql语句里面。
    		if(!TextUtils.isEmpty(sgender)){
    			sql = sql + " and gender = ?";
    			list.add(sgender);
    		}
    		return runner.query(sql , new BeanListHandler<Student>(Student.class) ,list.toArray() );
    	}
    

    4.将查找后的数据跳转到list.jsp显示
    //3. 跳转界面。列表界面
    request.getRequestDispatcher(“list.jsp”).forward(request, response);

    问题

    1.首先安装Mysql
    遇到一直卡在"start service"的
    直接关掉 在安装程序里打开就可以安装上了

    2.安装Mysql数据库建模工具 workbench
    提示You are running workbench on unsupport system.
    我用的Mysql是5.1
    下载的workbench是8.0 这个平台不支持5.1
    所以下载了6.3的workbench就ok了

    3.在用jdbc驱动mysql数据库时
    没有把jdbc.properties拷贝在src下
    拷贝到src之后就连接上了

    4.在对数据库进行增加时,增加语句是没有按照数据里的字段名添加的,当各字段数据类型不同时,增加参数的顺序需要与数据库的字段顺序一致,否则会无法解析而报错。 (格式保持一致)
    下图要保证getBirthday在数据库Date格式的字段里。

    增加语句是没有按照数据里的字段名添加的,当各字段数据类型不同时,增加参数的顺序一致,否则会无法解析而报错

    5.在对数据库进行更新时,由于需要核实每个字段所对应更新的内容,因此字段名与程序的sql语句参数不能有差别,负责无法更新
    在这里插入图片描述

    错误:
    在这里插入图片描述
    因为数据库里的phone 多了一个空号没发现 而导致无找到phone列 而出现异常

    展开全文
  • 首先创建一个名为student的MySQL数据库,里面包含四张表: t_college:学院信息 t_status:系统信息 t_student:学生信息 t_user:用户信息 以下为四张表分别的数据: ...
    															第一天:
    

    ————————————————————————————————————————————————————————————————————

    一:首先创建一个名为student的MySQL数据库,里面包含四张表:
    t_college:学院信息
    t_status:系统信息
    t_student:学生信息
    t_user:用户信息
    名为student的数据库,里面包含四张数据表
    以下为四张表分别的数据:

    学校简介

    系统信息

    学生信息表

    用户表

    二:在“src”包中按照以下步骤输入:

    1.建立一个名为Status的java文件

    在这里插入图片描述

    2.可以选择加入文件注释

    在这里插入图片描述

    3.将status表中的字段名按照对应的数据类型定义出来

    在这里插入图片描述

    4.按住alt+insert热键 弹出如下图所示的提示框

    在这里插入图片描述

    5.选择Getter and Setter选项,打开如下图所示的窗口

    在这里插入图片描述

    6.全选之后点击ok,则会变成如下图所示:

    在这里插入图片描述

    7.继续按住alt+insert快捷键 打开如下提示框

    在这里插入图片描述

    8.点击toString()选项,弹出如下图所示的窗口:

    在这里插入图片描述

    9.全选之后点击ok,则出现如下图所示:

    在这里插入图片描述

    10.一个实体类就这样完成了,剩余三张表,重复操作。

    															第二天
    

    ——————————————————————————————————————————————————————————

    三:
    1.按照之前的创建一个子包dbutil,并创建一个java文件
    在这里插入图片描述
    2.输入以下数据库驱动程序

    在这里插入图片描述

    3.添加个私有化构造方法

    在这里插入图片描述

    4.获得数据库连接的静态方法

    在这里插入图片描述

    6.关闭数据连接静态方法
    在这里插入图片描述
    7.测试两个静态方法

    在这里插入图片描述

    四、
    1.在这个路径再创建一个dao包

    在这里插入图片描述 2.在dao包中创建一个java文件名为collegeDao,学校数据访问接口

    在这里插入图片描述
    3.在该文件中输入如下,创建第一个接口(学校数据访问接口)

    在这里插入图片描述
    4.创建第二个状态数据访问接口
    在这里插入图片描述
    5.创建第三个用户数据访问接口

    在这里插入图片描述
    6.创建第四个学生数据访问接口

    在这里插入图片描述五:
    1.在dao包中创建一个名为impl的包存放实现类

    在这里插入图片描述
    2.在impl中创建学校数据访问接口实现类

    在这里插入图片描述
    3.学校数据访问实现类代码如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    4.创建一个测试文件测试刚才的代码
    在这里插入图片描述
    5.在测试代码里面输入,Test会进行报错,则需要按alt+enter打开错误处理,选择下载junit到lib包中,尽量选择低版。
    在这里插入图片描述结果如下:
    在这里插入图片描述

    继续键入以下代码:
    在这里插入图片描述然后运行测试代码
    结果如下:
    在这里插入图片描述这儿可以更改相关信息,将上述代码部分修改成一下代码:
    在这里插入图片描述
    即可修改校长名字
    拓展:增加开始和结束语句
    在这里插入图片描述即可增加,运行如下:
    在这里插入图片描述关于学校信息的修改和查询就是这样完成了。

    													第三天
    

    ——————————————————————————————————————————————————

    六:在主路径下面创建一个app包,用于应用程序类
    在这里插入图片描述
    在主路径下创建一个包————服务实现类
    在这里插入图片描述
    创建一个Impl的包和四个服务接口
    在这里插入图片描述
    四个服务接口代码如下:
    学校服务接口

    package net.zzk.student.service;
    import net.zzk.student.bean.College;
    /**
     * 功能:学校服务接口
     * 作者:周昭考
     * 日期:2019-7-1
     */
    public interface CollegeService {
        College findCollegeById(int id);
        int updateCollege(College college);
    }
    

    状态服务接口

    package net.zzk.student.service;
    import net.zzk.student.bean.Status;
    
    /**
     * 功能:状态服务接口
     * 作者:周昭考
     * 日期:2019-7-1
     */
    public interface StatusService {
        Status findStatusById(int id);
        int updateStatus(Status status);
    }
    

    学生服务接口

    package net.zzk.student.service;
    import java.util.List;
    import java.util.Vector;
    import net.zzk.student.bean.Student;
    
    /**
     * 功能:学生服务接口
     * 作者:周昭考
     * 日期:2019-7-1
     */
    public interface StudentService {
        int addStudent(Student student);
        int deleteStudentById(String id);
        int deleteStudentsByClass(String clazz);
        int deleteStudentsByDepartment(String department);
        int updateStudent(Student student);
        Student findStudentById(String id);
        List<Student> findStudentsByName(String name);
        List<Student> findStudentsByClass(String clazz);
        List<Student> findStudentsByDepartment(String department);
        List<Student> findAllStudents();
        Vector findRowsBySex();
        Vector findRowsByClass();
        Vector findRowsByDepartment();
    
    }
    

    用户服务接口

    package net.zzk.student.service;
    import net.zzk.student.bean.User;
    import java.util.List;
    
    /**
     * 功能:用户服务接口
     * 作者:周昭考
     * 日期:2019-7-1
     */
    public interface UserService {
        int addUser(User user);
        int deleteUserById(int id);
        int updateUser(User user);
        User findUserById(int id);
        List<User> findAllUsers();
        User login(String username, String password);
        boolean isUsernameExisted(String username);
    
    }
    

    然后在Impl中创建四个服务接口实现类
    在这里插入图片描述
    代码如下:
    学校服务接口实现类:

    package net.zzk.student.service.Impl;
    import net.zzk.student.bean.College;
    import net.zzk.student.dao.CollegeDao;
    import net.zzk.student.dao.impl.CollegeDaoImpl;
    import net.zzk.student.service.CollegeService;
    
    /**
     * 功能:学校服务接口实现类
     * 作者:周昭考
     * 日期:2019-7-1
     */
    public class CollegeServiceImpl implements CollegeService {
    
        private CollegeDao collegeDao = new CollegeDaoImpl();
    
        @Override
        public College findCollegeById(int id) {
            return collegeDao.findById(id);
        }
    
    
        @Override
        public int updateCollege(College college) {
            return collegeDao.update(college);
        }
    
    }
    

    状态服务接口实现类:

    package net.zzk.student.service.Impl;
    import net.zzk.student.bean.Status;
    import net.zzk.student.dao.StatusDao;
    import net.zzk.student.dao.impl.StatusDaoImpl;
    import net.zzk.student.service.StatusService;
    
    
    /**
     * 功能:状态服务接口实现类
     * 作者:周昭考
     * 日期:2019-7-1
     */
    public class StatusServiceImpl implements StatusService {
    
        /**     * 声明状态数据访问对象     */
        private StatusDao statusDao = new StatusDaoImpl();
    
        @Override
        public Status findStatusById(int id) {
            return statusDao.findById(id);
        }
    
        @Override
        public int updateStatus(Status status) {
            return statusDao.update(status);
        }
    
    }
    

    学生服务接口实现类:

    package net.zzk.student.service.Impl;
    import net.zzk.student.bean.Student;
    import net.zzk.student.dao.StudentDao;
    import net.zzk.student.dao.impl.StudentDaoImpl;
    import net.zzk.student.service.StudentService;
    import java.util.List;
    import java.util.Vector;
    
    
    /**
     * 功能:学生服务接口实现类
     * 作者:周昭考
     * 日期:2019-7-1
     */
    public class StudentServiceImpl implements StudentService {
    
        /**
    
         * 声明学生数据访问对象
    
         */
    
        private StudentDao studentDao = new StudentDaoImpl();
    
        @Override
        public int addStudent(Student student) {
            return studentDao.insert(student);
        }
    
        @Override
        public int deleteStudentById(String id) {
            return studentDao.deleteById(id);
        }
    
        @Override
        public int deleteStudentsByClass(String clazz) {
            return studentDao.deleteByClass(clazz);
        }
    
        @Override
        public int deleteStudentsByDepartment(String department) {
            return studentDao.deleteByDepartment(department);
        }
    
        @Override
        public List<Student> findAllStudents() {
            return studentDao.findAll();
        }
    
        @Override
        public Vector findRowsByClass() {
            return studentDao.findRowsByClass();
        }
    
        @Override
        public Vector findRowsByDepartment() {
            return studentDao.findRowsByDepartment();
        }
    
        @Override
        public Vector findRowsBySex() {
            return studentDao.findRowsBySex();
        }
    
        @Override
        public Student findStudentById(String id) {
            return studentDao.findById(id);
        }
    
        @Override
        public List<Student> findStudentsByClass(String clazz) {
            return studentDao.findByClass(clazz);
        }
    
        @Override
        public List<Student> findStudentsByDepartment(String department) {
            return studentDao.findByDepartment(department);
        }
    
        @Override
        public List<Student> findStudentsByName(String name) {
            return studentDao.findByName(name);
        }
    
        @Override
        public int updateStudent(Student student) {
            return studentDao.update(student);
        }
    
    }
    

    用户服务接口实现类:

    package net.zzk.student.service.Impl;
    import net.zzk.student.bean.User;
    import net.zzk.student.dao.UserDao;
    import net.zzk.student.dao.impl.UserDaoImpl;
    import net.zzk.student.service.UserService;
    import java.util.List;
    
    
    /**
     * 功能:用户服务接口实现类
     * 作者:周昭考
     * 日期:2019-7-1
     */
    public class UserServiceImpl implements UserService{
        /**     * 声明用户数据访问对象     */
        private UserDao userDao = new UserDaoImpl();
        @Override
        public int addUser(User user) {
            return userDao.insert(user);
        }
        @Override
        public int deleteUserById(int id) {
            return userDao.deleteById(id);
        }
        @Override
        public List<User> findAllUsers() {
            return userDao.findAll();
        }
        @Override
        public User findUserById(int id) {
            return userDao.findById(id);
        }
        @Override
        public User login(String username, String password) {
            return userDao.login(username, password);
        }
        @Override
        public int updateUser(User user) {
            return userDao.update(user);
        }
        @Override
        public boolean isUsernameExisted(String username) {
            return userDao.isUsernameExisted(username);
        }
    
    }
    

    创建一个java文件Application,代码如下:
    在这里插入图片描述我们需要增加三个窗口文件:在主路径创建一个gui包,里面添加三个窗口文件

    在这里插入图片描述
    在主窗体中写入代码:在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    就成了以下结果:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    再i添加一个主方法

    在这里插入图片描述
    在这里插入图片描述以下是主界面代码块

    package net.zzk.student.gui;
    
    import net.zzk.student.app.Application;
    import net.zzk.student.bean.Status;
    import net.zzk.student.service.*;
    import net.zzk.student.service.Impl.StatusServiceImpl;
    
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    /**
     * 功能:系统主界面
     * 作者:周昭考
     * 日期:2019-7-1
     */
    public class MainFrame extends JFrame {
    
        private StatusService statusService;
        private Status status;
    
    
        /**
         * 构造方法
         * @param title
         * @throws HeadlessException
         */
        public MainFrame(String title) throws HeadlessException {
            super(title);
            initGUI();      //initialize gui
        }
    
        /**
         *
         * 初始化图形用户界面
         */
        private void initGUI(){
            //创建状态服务对象
            statusService = new StatusServiceImpl();
            //获取状态对象
            status = statusService.findStatusById(1);
    
    
            //设置窗口大小
            setSize(800,600);
            //设置窗口屏幕居中
            setLocationRelativeTo(null);
            //设置窗口标题
            setTitle("学生信息管理系统" + status.getVersion());
            //设置窗口可见
            setVisible(true);
    
            addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    exitSystem();
                }
            });
        }
    
    
        private void exitSystem(){
            int choice = JOptionPane.showConfirmDialog(this,
                    "您是否要退出系统?","学生信息管理系统", JOptionPane.YES_NO_OPTION);
            if (choice == JOptionPane.YES_OPTION) {
                System.exit(0);
            } else {
                 //卸载当前窗口
                 dispose();
                 //重新显示主窗口
                 Application.mainFrame = new MainFrame("学生信息管理系统" + status.getVersion());
            }
    
        }
    
        /**
         * 主方法
         *
         * @param args
         */
        public static void main(String[] args) {
            Application.mainFrame = new MainFrame("");
        }
    }
    
    										第四天
    

    ————————————————————————————————————————————————————————————————

    注册界面:

    package net.zzk.student.gui;
    
    
    import net.zzk.student.app.Application;
    
    import javax.swing.*;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    /**
     * 功能:注册窗口
     * 作者:周昭考
     * 日期:2019-7-1
     */
    public class RegisterFrame extends JFrame {
    
        /**
         * 构造方法
         * @param title
         */
        public RegisterFrame(String title){
            super(title);
            initGUI();
        }
    
    
        public void initGUI(){
            //设置窗体大小
            setSize(250,200);
            //设置窗口屏幕居中
            setLocationRelativeTo(null);
            //设置窗口不可调整大小
            setResizable(false);
            //设置窗口标题
            setTitle("用户注册");
            //设置窗体可见
            setVisible(true);
    
            //注册窗口监听器
            addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    //卸载当前窗口
                    dispose();
                    //让登录窗口可见
                    Application.loginFrame.setVisible(true);
                }
            });
        }
    
        /**
         * 主方法
         * @param args
         */
        public static void main(String[] args) {
    
            Application.registerFrame = new RegisterFrame("");
        }
    }
    

    登录界面

    package net.zzk.student.gui;
    
    import net.zzk.student.app.Application;
    
    import javax.swing.*;
    
    /**
     * 功能:登录窗体
     * 作者:周昭考
     * 日期:2019-7-1
     */
    public class LoginFrame extends JFrame {
    
        public LoginFrame(String title){
            super(title);
            initGUI();
        }
    
        private void initGUI(){
    
            //设置窗体大小
            setSize(400,300);
            //设置屏幕居中
            setLocationRelativeTo(null);
            //设置窗口不可调整大小
            setResizable(false);
            //设置窗体可见
            setVisible(true);
            //设置窗口默认关闭操作
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
    
        public static void main(String[] args) {
            Application.loginFrame = new LoginFrame("用户登录");
        }
    }
    

    声明变量

    在这里插入图片描述
    实例化组件

    在这里插入图片描述
    将控件添加到小面板,然后将小面板添加到主面板:
    在这里插入图片描述
    设置按钮热键字母,以及密码框的回显字符:
    在这里插入图片描述
    我们来编写登录方法login():

    /**
     *登录方法
     */
    private void login() {
        //获取用户名
        username = txtUsername.getText().trim();
        //获取密码
        password = new String(txtPassword.getPassword());
    
        //创建用户服务对象
        UserService userService = new UserServiceImpl();
        //调用登录方法,返回登录用户对象
        User user  = userService.login(username,password);
    
        //判断登录用户是否为空,决定登录是否成功
        if (user != null) {
            //隐藏登录窗口
            Application.loginFrame.setVisible(false);
            //定义状态服务对象
            StatusService statusService = new StatusServiceImpl();
            //获取状态对象
            Status status = statusService.findStatusById(1);
            //保存登录用户的信息
            Application.id = user.getId();
            Application.username = user.getUsername();
            Application.password = user.getPassword();
            //提示用户登录成功!
            JOptionPane.showMessageDialog(null,
                    "欢迎使用学生信息管理系统" + status.getVersion(),
                    "用户登录",JOptionPane.INFORMATION_MESSAGE);
    
            //显示系统主窗口
            Application.mainFrame = new MainFrame("");
            //释放登录窗口
            Application.loginFrame.dispose();
        } else {
            //隐藏登录窗口
            Application.loginFrame.setVisible(false);
            //提示用户登录失败,要重新输入用户名和密码
            JOptionPane.showMessageDialog(null,
                    "用户名或密码错误!请重新输入!",
                    "用户登录",JOptionPane.ERROR_MESSAGE);
            //显示登录窗口
            Application.loginFrame.setVisible(true);
            //用户名文本框全选
            txtUsername.selectAll();
            //密码文本框全选
            txtPassword.selectAll();
            //用户名文本框获得焦点
            txtUsername.requestFocus();
    
        }
    
    
    
    }

    创建SetCollegeInfoFrame设置学生信息

    package net.zzk.student.gui;
    
    import net.zzk.student.bean.College;
    import net.zzk.student.service.Impl.CollegeServiceImpl;
    import net.zzk.student.service.CollegeService;
    
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;
    import java.sql.Time;
    import java.sql.Timestamp;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.SimpleTimeZone;
    import java.util.logging.SimpleFormatter;
    
    /**
     * 功能:设置学校信息
     * 作者:周昭考
     * 日期:2019-7-2
     */
    public class SetCollegeInfoFrame extends JFrame {
        /**     * 面板     */
        JPanel panel;
        JPanel pnlNorth;
        JPanel panel1;
        JPanel panel2;
        JPanel panel3;
        JPanel panel4;
        JPanel panel5;
        JPanel pnlCenter;
        JPanel pnlSouth;
        /**     * 标签     */
        JLabel lblName;
        JLabel lblPresident;
        JLabel lblStartTime;
        JLabel lblTelephone;
        JLabel lblEmail;
        JLabel lblAddress;
        JLabel lblProfile;
        /**     * 按钮     */
        JButton btnSave;
        JButton btnExit;
        /**     * 文本框与文本区     */
        JTextField txtName;
        JTextField txtPresident;
        JTextField txtStartTime;
        JTextField txtTelephone;
        JTextField txtEMail;
        JTextField txtAddress;
        JTextArea txtProfile;
        /**
         * 滚动面板
         */
        JScrollPane scrollPane;
    
        /**
         * 学校服务
         */
        private CollegeService collegeService;
        private College college;
        private int id = 1;
    
    
        /**
         * 构造方法
         * @param title
         */
        public SetCollegeInfoFrame(String title){
            super(title);
            initGUI();
        }
    
        /**
         * 初始化用户界面
         */
        private void initGUI(){
            //创建组件(面板和控件)
            panel = (JPanel) getContentPane();
            pnlNorth = new JPanel();
            panel1 = new JPanel();
            panel2 = new JPanel();
            panel3 = new JPanel();
            panel4 = new JPanel();
            panel5 = new JPanel();
            pnlCenter = new JPanel();
            pnlSouth = new JPanel();
    
            lblName = new JLabel("学校名称:");
            lblPresident = new JLabel("校         长:");
            lblStartTime = new JLabel("建校时间:");
            lblTelephone = new JLabel("联系电话:");
            lblEmail = new JLabel("电子邮箱:");
            lblAddress = new JLabel("通讯地址:");
            lblProfile = new JLabel("学校简介:");
    
            txtName = new JTextField(30);
            txtPresident = new JTextField(11);
            txtStartTime = new JTextField(12);
            txtTelephone = new JTextField(11);
            txtEMail = new JTextField(12);
            txtAddress = new JTextField(30);
            txtProfile = new JTextArea(5, 37);
            txtProfile.setLineWrap(true);// 让文本区自动换行
            scrollPane = new JScrollPane(txtProfile,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
                    ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
            btnSave = new JButton("保存[S]");
            btnSave.setMnemonic(KeyEvent.VK_S);
            btnExit = new JButton("退出[X]");
            btnExit.setMnemonic(KeyEvent.VK_X);
    
            //设置大面板布局,将北面板、中面板与南面板添加到大面板
            panel.setLayout(new BorderLayout());
            panel.add(pnlNorth,"North");
            panel.add(pnlCenter,"Center");
            panel.add(pnlSouth,"South");
    
            //设置北面板布局,添加五个小面板
            pnlNorth.setLayout(new GridLayout(5,1));
            pnlNorth.add(panel1);
            pnlNorth.add(panel2);
            pnlNorth.add(panel3);
            pnlNorth.add(panel4);
            pnlNorth.add(panel5);
    
            // 将控件依次添加到五个小面板
             panel1.add(lblName);
             panel1.add(txtName);
             panel2.add(lblPresident);
             panel2.add(txtPresident);
             panel2.add(lblStartTime);
             panel2.add(txtStartTime);
             panel3.add(lblTelephone);
             panel3.add(txtTelephone);
             panel3.add(lblEmail);
             panel3.add(txtEMail);
             panel4.add(lblAddress);
             panel4.add(txtAddress);
             panel5.add(lblProfile);
    
             //将滚动面板添加到中面板
            pnlCenter.add(scrollPane);
    
            //将两个按钮添加到南面板
            pnlSouth.add(btnSave);
            pnlSouth.add(btnExit);
    
            //创建学校服务对象
            collegeService = new CollegeServiceImpl();
    
            //获取学校对象
            college = collegeService.findCollegeById(id);
            //利用学校对象属性设置想应控件的内容
            txtName.setText(college.getName());
            txtPresident.setText(college.getPresident());
            txtStartTime.setText(college.getStartTime().toString());
            txtTelephone.setText(college.getTelephone());
            txtEMail.setText(college.getEmail());
            txtAddress.setText(college.getAddress());
            txtProfile.setText(college.getProfile());
    
            //设置窗口大小
            setSize(450,350);
            //设置窗口屏幕居中
            setLocationRelativeTo(null);
            //设置窗口不可调整大小
            setResizable(false);
            //设置窗口刚好容纳组件
            pack();
            //设置窗口标题
            setTitle("设置学校信息");
            //设置窗口可见
            setVisible(true);
            //设置窗口默认关闭操作
            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    
            //关闭按钮单击事件
            btnExit.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    //关闭窗口
                    dispose();
                }
            });
    
            //保存按钮单击事件处理
            btnSave.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    try {
                        //设置学校对象属性
                        college.setName(txtName.getText());
                        college.setPresident(txtPresident.getText());
                        college.setStartTime(new Timestamp(
                                new SimpleDateFormat("yyyy-MM-dd")
                                        .parse(txtStartTime.getText().toString()).getTime()));
                        college.setTelephone(txtTelephone.getText());
                        college.setEmail(txtEMail.getText());
                        college.setAddress(txtAddress.getText());
                        college.setProfile(txtProfile.getText());
                        //更新学校信息
                        collegeService.updateCollege(college);
                        //提示用户更新成功
                        JOptionPane.showMessageDialog(null,"更新数据成功!");
                    } catch (ParseException ex) {
                        //提示用户更新失败
                        JOptionPane.showMessageDialog(null,"更新数据失败!");
                    }
                }
            });
        }
    
        /**
         * 主方法
         * @param args
         */
        public static void main(String[] args) {
            new SetCollegeInfoFrame("");
        }
    
    }
    

    创建SetStatusBarFrame设置状态栏信息

    
    package net.zzk.student.gui;
    
    
    
    import net.zzk.student.app.Application;
    
    import net.zzk.student.bean.Status;
    
    import net.zzk.student.service.StatusService;
    
    import net.zzk.student.service.Impl.StatusServiceImpl;
    
    
    
    import javax.swing.*;
    
    import java.awt.*;
    
    import java.awt.event.ActionEvent;
    
    import java.awt.event.ActionListener;
    
    import java.awt.event.KeyEvent;
    
    
    
    /**
    
     * 功能:设置状态栏信息
    
     * 作者:周昭考
    
     * 日期:2019-7-3
    
     */
    
    public class SetStatusBarFrame extends JFrame {
    
        /**
    
         * 面板
    
         */
    
        private JPanel panel;
    
        private JPanel panel1;
    
        private JPanel panel2;
    
        private JPanel panel3;
    
        private JPanel panel4;
    
        private JPanel panel5;
    
        /**
    
         * 标签
    
         */
    
        private JLabel lblCollege;
    
        private JLabel lblVersion;
    
        private JLabel lblAuthor;
    
        private JLabel lblTelephone;
    
        private JLabel lblAddress;
    
        private JLabel lblEmail;
    
        /**
    
         * 文本框
    
         */
    
        private JTextField txtCollege;
    
        private JTextField txtVersion;
    
        private JTextField txtAuthor;
    
        private JTextField txtTelephone;
    
        private JTextField txtAddress;
    
        private JTextField txtEmail;
    
        /**
    
         * 按钮
    
         */
    
        private JButton btnSave;
    
        private JButton btnExit;
    
        /**
    
         * 状态服务对象
    
         */
    
        private StatusService statusService;
    
    
    
        /**
    
         * 构造方法
    
         *
    
         * @param title
    
         */
    
        public SetStatusBarFrame(String title) {
    
            super(title);
    
            initGUI();
    
        }
    
    
    
        /**
    
         * 初始化用户界面
    
         */
    
        private void initGUI() {
    
            // 创建组件
    
            panel = (JPanel) getContentPane();
    
            panel1 = new JPanel();
    
            panel2 = new JPanel();
    
            panel3 = new JPanel();
    
            panel4 = new JPanel();
    
            panel5 = new JPanel();
    
    
    
            lblCollege = new JLabel("校名:");
    
            lblVersion = new JLabel("版本:");
    
            lblAuthor = new JLabel("作者:");
    
            lblTelephone = new JLabel("电话:");
    
            lblAddress = new JLabel("地址:");
    
            lblEmail = new JLabel("邮件:");
    
    
    
            txtCollege = new JTextField(12);
    
            txtVersion = new JTextField(12);
    
            txtAuthor = new JTextField(12);
    
            txtTelephone = new JTextField(12);
    
            txtAddress = new JTextField(29);
    
            txtEmail = new JTextField(29);
    
    
    
            btnSave = new JButton("保存[S]");
    
            btnSave.setMnemonic(KeyEvent.VK_S);
    
            btnExit = new JButton("退出[X]");
    
            btnExit.setMnemonic(KeyEvent.VK_X);
    
    
    
            // 添加组件
    
            panel.setLayout(new GridLayout(5, 1));
    
            panel.add(panel1);
    
            panel.add(panel2);
    
            panel.add(panel3);
    
            panel.add(panel4);
    
            panel.add(panel5);
    
    
    
            panel1.add(lblCollege);
    
            panel1.add(txtCollege);
    
            panel1.add(lblVersion);
    
            panel1.add(txtVersion);
    
    
    
            panel2.add(lblAuthor);
    
            panel2.add(txtAuthor);
    
            panel2.add(lblTelephone);
    
            panel2.add(txtTelephone);
    
    
    
            panel3.add(lblAddress);
    
            panel3.add(txtAddress);
    
            panel4.add(lblEmail);
    
            panel4.add(txtEmail);
    
    
    
            panel5.add(btnSave);
    
            panel5.add(btnExit);
    
    
    
            // 创建状态服务对象
    
            statusService = new StatusServiceImpl();
    
            // 按标识符获取状态对象
    
            Status status = statusService.findStatusById(1);
    
            if (status != null) {
    
                txtCollege.setText(status.getCollege());
    
                txtVersion.setText(status.getVersion());
    
                txtAuthor.setText(status.getAuthor());
    
                txtAddress.setText(status.getAuthor());
    
                txtTelephone.setText(status.getTelephone());
    
                txtAddress.setText(status.getAddress());
    
                txtEmail.setText(status.getEmail());
    
            }
    
    
    
            // 设置窗口大小
    
            setSize(450, 350);
    
            // 设置窗口屏幕居中
    
            setLocationRelativeTo(null);
    
            // 设置窗口不可调整大小
    
            setResizable(false);
    
            // 设置窗口刚好容纳组件
    
            pack();
    
            // 设置窗口标题
    
            setTitle("设置状态栏信息");
    
            // 设置窗口可见
    
            setVisible(true);
    
            // 设置窗口默认关闭操作(卸载当前窗口)
    
            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    
    
    
            // 【关闭】按钮事件处理
    
            btnExit.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent arg0) {
    
                    dispose();
    
                }
    
            });
    
    
    
            // 【保存】按钮事件处理
    
            btnSave.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent e) {
    
                    // 获取状态信息对象
    
                    Status status = statusService.findStatusById(1);
    
                    // 修改属性值
    
                    status.setCollege(txtCollege.getText());
    
                    status.setVersion(txtVersion.getText());
    
                    status.setAuthor(txtAuthor.getText());
    
                    status.setTelephone(txtTelephone.getText());
    
                    status.setAddress(txtAddress.getText());
    
                    status.setEmail(txtEmail.getText());
    
                    // 更新状态记录
    
                    int count = statusService.updateStatus(status);
    
                    // 判断是否更新成功
    
                    if (count > 0) {
    
                        Application.mainFrame.setStatusBar();
    
                        Application.mainFrame.setTitle("学生信息管理系统" + status.getVersion());
    
                    }
    
                }
    
            });
    
        }
    
    }
    

    创建FindStudentsByNameFrame按姓名查询学生

    
    package net.zzk.student.gui;
    
    
    
    import net.zzk.student.bean.Student;
    
    import net.zzk.student.service.StudentService;
    
    import net.zzk.student.service.Impl.StudentServiceImpl;
    
    
    
    import javax.swing.*;
    
    import javax.swing.border.TitledBorder;
    
    import java.awt.*;
    
    import java.awt.event.*;
    
    import java.awt.print.PrinterException;
    
    import java.util.Vector;
    
    import java.util.List;
    
    
    /**
     * 功能:按姓名查询学生
     * 作者:周昭考
     * 日期:2019-7-3
     */
    public class FindStudentsByNameFrame extends JFrame {
    
        /**
    
         * 姓名标签
    
         */
    
        private JLabel lblInputName;
    
        /**
    
         * 姓名文本框
    
         */
    
        private JTextField txtName;
    
    
    
        /**
    
         * 面板
    
         */
    
        private JPanel panel;
    
        private JPanel pnlSouth;
    
        private JPanel pnlCenter;
    
        private JPanel pnlNorth;
    
    
    
        /**
    
         * 按钮
    
         */
    
        private JButton btnQuery;
    
        private JButton btnBrowseAll;
    
        private JButton btnPrint;
    
        private JButton btnExit;
    
    
    
        /**
    
         * 记录行集
    
         */
    
        private Vector rows;
    
        /**
    
         * 表格列标题
    
         */
    
        private Vector<String> colHead;
    
        /**
    
         * 表格
    
         */
    
        private JTable table;
    
        /**
    
         * 滚动面板
    
         */
    
        private JScrollPane scroller;
    
    
    
        /**
    
         * 当前记录行号
    
         */
    
        private int currentRow;
    
        /**
    
         * 学生列表
    
         */
    
        private List<Student> students;
    
        /**
    
         * 创建学生服务对象
    
         */
    
        private StudentService studentService;
    
    
    
        /**
    
         * 构造方法
    
         *
    
         * @param title
    
         */
    
        public FindStudentsByNameFrame(String title) {
    
            super(title);
    
            intiGUI();
    
        }
    
    
    
        /**
    
         * 初始化用户界面
    
         */
    
        private void intiGUI() {
    
            // 创建对象
    
            panel = (JPanel) getContentPane();
    
            pnlNorth = new JPanel();
    
            pnlCenter = new JPanel();
    
            pnlSouth = new JPanel();
    
    
    
            rows = new Vector();
    
            colHead = new Vector();
    
    
    
            lblInputName = new JLabel("输入姓名:");
    
            txtName = new JTextField(10);
    
            txtName.setHorizontalAlignment(JTextField.CENTER);
    
            btnQuery = new JButton("查询[Q]");
    
            btnQuery.setMnemonic(KeyEvent.VK_Q);
    
            btnBrowseAll = new JButton("显示全部记录[A]");
    
            btnBrowseAll.setMnemonic(KeyEvent.VK_A);
    
            btnPrint = new JButton("打印[P]");
    
            btnPrint.setMnemonic(KeyEvent.VK_D);
    
            btnExit = new JButton("退出[X]");
    
            btnExit.setMnemonic(KeyEvent.VK_X);
    
    
    
            // 添加组件
    
            panel.add(pnlSouth, BorderLayout.SOUTH);
    
            panel.add(pnlCenter, BorderLayout.CENTER);
    
            panel.add(pnlNorth, BorderLayout.NORTH);
    
    
    
            pnlNorth.add(lblInputName);
    
            pnlNorth.add(txtName);
    
            pnlNorth.add(btnQuery);
    
            pnlNorth.add(btnBrowseAll);
    
            pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
    
            pnlSouth.add(btnPrint);
    
            pnlSouth.add(btnExit);
    
            pnlCenter.setLayout(new BorderLayout());
    
    
    
            // 创建标题边框对象
    
            TitledBorder tb = new TitledBorder("查询结果");
    
            pnlCenter.setBorder(tb);
    
    
    
            // 创建学生服务对象
    
            studentService = new StudentServiceImpl();
    
            // 获取全部学生列表
    
            students = studentService.findAllStudents();
    
            // 填充表格数据
    
            fillTableData();
    
    
    
            // 设置窗口大小
    
            setSize(600, 350);
    
            // 设置窗口不可调整大小
    
            setResizable(false);
    
            // 设置窗口屏幕居中
    
            setLocationRelativeTo(null);
    
            // 设置窗口标题
    
            setTitle("按姓名查询学生记录");
    
            // 设置窗口可见
    
            setVisible(true);
    
            // 设置窗口默认关闭操作(卸载当前窗口)
    
            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    
    
    
            // 【退出】按钮单击事件
    
            btnExit.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent event) {
    
                    dispose();
    
                }
    
            });
    
    
    
            // 【打印】按钮单击事件
    
            btnPrint.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent e) {
    
                    try {
    
                        table.print();
    
                    } catch (PrinterException e1) {
    
                        e1.printStackTrace();
    
                    }
    
                }
    
            });
    
    
    
            // 【查询】按钮单击事件
    
            btnQuery.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent event) {
    
                    doQuery();
    
                }
    
            });
    
    
    
            // 【显示全部记录】按钮单击事件
    
            btnBrowseAll.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent event) {
    
                    // 获取全部学生记录
    
                    students = studentService.findAllStudents();
    
                    // 填充表格数据
    
                    fillTableData();
    
                }
    
            });
    
    
    
            // 【姓名】文本框按键事件
    
            txtName.addKeyListener(new KeyAdapter() {
    
                @Override
    
                public void keyPressed(KeyEvent e) {
    
                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
    
                        doQuery();
    
                    }
    
                }
    
            });
    
    
    
            // 表格单击事件
    
            table.addMouseListener(new MouseAdapter() {
    
                public void mouseClicked(MouseEvent e) {
    
                    // 获取当前行的行数
    
                    int row = table.rowAtPoint(e.getPoint());
    
                    // 选中鼠标单击的行
    
                    table.setRowSelectionInterval(row, row);
    
                    // 设置文本框内容
    
                    txtName.setText(table.getValueAt(row, 1).toString());
    
                }
    
            });
    
        }
    
    
    
        /**
    
         * 查询方法
    
         */
    
        private void doQuery() {
    
            // 获取查询姓名
    
            String name = txtName.getText().trim();
    
            if (!name.equals("")) {
    
                // 按姓名查询获取学生列表
    
                students = studentService.findStudentsByName(name);
    
                // 填充表格
    
                fillTableData();
    
            } else {
    
                JOptionPane.showMessageDialog(this, "请输入待查学生姓名!", "警告", JOptionPane.WARNING_MESSAGE);
    
                txtName.requestFocus();
    
            }
    
        }
    
    
    
        /**
    
         * 填充表格方法
    
         */
    
        private void fillTableData() {
    
            // 填充表头
    
            colHead.clear();
    
            colHead.add("姓名");
    
            colHead.add("姓名");
    
            colHead.add("性别");
    
            colHead.add("年龄");
    
            colHead.add("系部");
    
            colHead.add("班级");
    
            colHead.add("电话");
    
    
    
            // 填充表记录
    
            rows.clear();
    
            for (Student student : students) {
    
                Vector<String> currentRow = new Vector<String>();
    
                currentRow.addElement(student.getId());
    
                currentRow.addElement(student.getName());
    
                currentRow.addElement(student.getSex());
    
                currentRow.addElement(student.getAge() + "");
    
                currentRow.addElement(student.getDepartment());
    
                currentRow.addElement(student.getClazz());
    
                currentRow.addElement(student.getTelephone());
    
                // 将当前行添加到记录行集
    
                rows.add(currentRow);
    
            }
    
    
    
            // 创建表格(参数1:记录集;参数2:表头)
    
            table = new JTable(rows, colHead);
    
    
    
            // 定义滚动面板
    
            scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
    
                    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    
            // 将滚动面板添加到中心面板
    
            pnlCenter.add(scroller, BorderLayout.CENTER);
    
    
    
            // 重绘窗体
    
            repaint();
    
    
    
            // 判断是否有记录行
    
            if (rows.isEmpty()) {
    
                JOptionPane.showMessageDialog(this, "没有符合条件的记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
    
                txtName.setText("");
    
            } else {
    
                // 让滚动条移到最上方
    
                scroller.getVerticalScrollBar().setValue(0);
    
            }
    
        }
    
    
    
        /**
    
         * 主方法
    
         *
    
         * @param args
    
         */
    
        public static void main(String[] args) {
    
            new FindStudentsByNameFrame("");
    
        }
    
    }
    

    创建FindStudentsByDepartmentFrame按系部查询学生记录

    
    package net.zzk.student.gui;
    
    
    
    import net.zzk.student.bean.Student;
    
    import net.zzk.student.service.StudentService;
    
    import net.zzk.student.service.Impl.StudentServiceImpl;
    
    
    
    import javax.swing.*;
    
    import javax.swing.border.TitledBorder;
    
    import java.awt.*;
    
    import java.awt.event.*;
    
    import java.awt.print.PrinterException;
    
    import java.util.Vector;
    
    import java.util.List;
    
    
    
    /**
    
     * 功能:按系部查询学生记录
    
     * 作者:周昭考
    
     * 日期:2019-7-3
    
     */
    
    public class FindStudentsByDepartmentFrame extends JFrame {
    
        /**
    
         * 系部标签
    
         */
    
        private JLabel lblInputDepartment;
    
        /**
    
         * 系部文本框
    
         */
    
        private JTextField txtDepartment;
    
        /**
    
         * 面板
    
         */
    
        private JPanel panel;
    
        private JPanel pnlSouth;
    
        private JPanel pnlCenter;
    
        private JPanel pnlNorth;
    
        /**
    
         * 按钮
    
         */
    
        private JButton btnQuery;
    
        private JButton btnBrowseAll;
    
        private JButton btnPrint;
    
        private JButton btnExit;
    
        /**
    
         * 记录行集
    
         */
    
        private Vector rows;
    
        /**
    
         * 表格列标题
    
         */
    
        private Vector<String> colHead;
    
        /**
    
         * 表格
    
         */
    
        private JTable table;
    
        /**
    
         * 滚动面板
    
         */
    
        private JScrollPane scroller;
    
    
    
        /**
    
         * 当前记录行号
    
         */
    
        private int currentRow;
    
        /**
    
         * 学生列表
    
         */
    
        private List<Student> students;
    
        /**
    
         * 创建学生服务对象
    
         */
    
        private StudentService studentService;
    
    
    
        /**
    
         * 构造方法
    
         *
    
         * @param title
    
         */
    
        public FindStudentsByDepartmentFrame(String title) {
    
            super(title);
    
            intiGUI();
    
        }
    
    
    
        /**
    
         * 初始化用户界面
    
         */
    
        private void intiGUI() {
    
            // 创建组件
    
            panel = (JPanel) getContentPane();
    
            pnlNorth = new JPanel();
    
            pnlCenter = new JPanel();
    
            pnlSouth = new JPanel();
    
    
    
            rows = new Vector();
    
            colHead = new Vector();
    
    
    
            lblInputDepartment = new JLabel("输入系部:");
    
            txtDepartment = new JTextField(10);
    
            txtDepartment.setHorizontalAlignment(JTextField.CENTER);
    
            btnQuery = new JButton("查询[Q]");
    
            btnQuery.setMnemonic(KeyEvent.VK_Q);
    
            btnBrowseAll = new JButton("显示全部记录[A]");
    
            btnBrowseAll.setMnemonic(KeyEvent.VK_A);
    
            btnPrint = new JButton("打印[P]");
    
            btnPrint.setMnemonic(KeyEvent.VK_D);
    
            btnExit = new JButton("退出[X]");
    
            btnExit.setMnemonic(KeyEvent.VK_X);
    
    
    
            // 添加组件
    
            panel.add(pnlSouth, BorderLayout.SOUTH);
    
            panel.add(pnlCenter, BorderLayout.CENTER);
    
            panel.add(pnlNorth, BorderLayout.NORTH);
    
    
    
            pnlNorth.add(lblInputDepartment);
    
            pnlNorth.add(txtDepartment);
    
            pnlNorth.add(btnQuery);
    
            pnlNorth.add(btnBrowseAll);
    
            pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
    
            pnlSouth.add(btnPrint);
    
            pnlSouth.add(btnExit);
    
            pnlCenter.setLayout(new BorderLayout());
    
    
    
            // 创建标题边框对象
    
            TitledBorder tb = new TitledBorder("查询结果");
    
            pnlCenter.setBorder(tb);
    
    
    
            // 创建学生服务对象
    
            studentService = new StudentServiceImpl();
    
            // 获取全部学生列表
    
            students = studentService.findAllStudents();
    
            // 填充表格数据
    
            fillTableData();
    
    
    
            // 设置窗口大小
    
            setSize(600, 350);
    
            // 设置窗口不可调整大小
    
            setResizable(false);
    
            // 设置窗口屏幕居中
    
            setLocationRelativeTo(null);
    
            // 设置窗口标题
    
            setTitle("按系部查询学生记录");
    
            // 设置窗口可见
    
            setVisible(true);
    
            // 设置窗口默认关闭操作(卸载当前窗口)
    
            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    
    
    
            // 【退出】按钮单击事件
    
            btnExit.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent event) {
    
                    dispose();
    
                }
    
            });
    
    
    
            // 【打印】按钮单击事件
    
            btnPrint.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent e) {
    
                    try {
    
                        table.print();
    
                    } catch (PrinterException e1) {
    
                        e1.printStackTrace();
    
                    }
    
                }
    
            });
    
    
    
            // 【查询】按钮单击事件
    
            btnQuery.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent event) {
    
                    doQuery();
    
                }
    
            });
    
    
    
            // 【显示全部记录】按钮单击事件
    
            btnBrowseAll.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent event) {
    
                    // 获取全部学生记录
    
                    students = studentService.findAllStudents();
    
                    // 填充表格数据
    
                    fillTableData();
    
                }
    
            });
    
    
    
            // 【系部】文本框按键事件
    
            txtDepartment.addKeyListener(new KeyAdapter() {
    
                @Override
    
                public void keyPressed(KeyEvent e) {
    
                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
    
                        doQuery();
    
                    }
    
                }
    
            });
    
    
    
            // 表格单击事件
    
            table.addMouseListener(new MouseAdapter() {
    
                public void mouseClicked(MouseEvent e) {
    
                    // 获取当前行的行数
    
                    int row = table.rowAtPoint(e.getPoint());
    
                    // 选中鼠标单击的行
    
                    table.setRowSelectionInterval(row, row);
    
                    // 设置文本框内容
    
                    txtDepartment.setText(table.getValueAt(row, 4).toString());
    
                }
    
            });
    
        }
    
    
    
        /**
    
         * 查询方法
    
         */
    
        private void doQuery() {
    
            // 获取查询系部
    
            String department = txtDepartment.getText().trim();
    
            if (!department.equals("")) {
    
                // 按系部查询获取学生列表
    
                students = studentService.findStudentsByDepartment(department);
    
                // 填充表格
    
                fillTableData();
    
            } else {
    
                JOptionPane.showMessageDialog(this, "请输入待查系部!", "警告", JOptionPane.WARNING_MESSAGE);
    
                txtDepartment.requestFocus();
    
            }
    
        }
    
    
    
        /**
    
         * 填充表格方法
    
         */
    
        private void fillTableData() {
    
            // 填充表头
    
            colHead.clear();
    
            colHead.add("系部");
    
            colHead.add("系部");
    
            colHead.add("性别");
    
            colHead.add("年龄");
    
            colHead.add("系部");
    
            colHead.add("系部");
    
            colHead.add("电话");
    
    
    
            // 填充表记录
    
            rows.clear();
    
            for (Student student : students) {
    
                Vector<String> currentRow = new Vector<String>();
    
                currentRow.addElement(student.getId());
    
                currentRow.addElement(student.getName());
    
                currentRow.addElement(student.getSex());
    
                currentRow.addElement(student.getAge() + "");
    
                currentRow.addElement(student.getDepartment());
    
                currentRow.addElement(student.getClazz());
    
                currentRow.addElement(student.getTelephone());
    
                // 将当前行添加到记录行集
    
                rows.add(currentRow);
    
            }
    
    
    
            // 创建表格(参数1:记录集;参数2:表头)
    
            table = new JTable(rows, colHead);
    
    
    
            // 定义滚动面板
    
            scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
    
                    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    
            // 将滚动面板添加到中心面板
    
            pnlCenter.add(scroller, BorderLayout.CENTER);
    
    
    
            // 重绘窗体
    
            repaint();
    
    
    
            // 判断是否有记录行
    
            if (rows.isEmpty()) {
    
                JOptionPane.showMessageDialog(this, "没有符合条件的记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
    
                txtDepartment.setText("");
    
            } else {
    
                // 让滚动条移到最上方
    
                scroller.getVerticalScrollBar().setValue(0);
    
            }
    
        }
    
    
    
        /**
    
         * 主方法
    
         *
    
         * @param args
    
         */
    
        public static void main(String[] args) {
    
            new FindStudentsByDepartmentFrame("");
    
        }
    
    }
    

    创建FindStudentsByClassFrame按班级查询学生记录

    
    package net.zzk.student.gui;
    
    
    
    import net.zzk.student.bean.Student;
    
    import net.zzk.student.service.StudentService;
    
    import net.zzk.student.service.Impl.StudentServiceImpl;
    
    
    
    import javax.swing.*;
    
    import javax.swing.border.TitledBorder;
    
    import java.awt.*;
    
    import java.awt.event.*;
    
    import java.awt.print.PrinterException;
    
    import java.util.Vector;
    
    import java.util.List;
    
    
    
    /**
    
     * 功能:按班级查询学生记录
    
     * 作者:周昭考
    
     * 日期:2019-7-3
    
     */
    
    public class FindStudentsByClassFrame extends JFrame {
    
        /**
    
         * 班级标签
    
         */
    
        private JLabel lblInputClass;
    
        /**
    
         * 班级文本框
    
         */
    
        private JTextField txtClass;
    
        /**
    
         * 面板
    
         */
    
        private JPanel panel;
    
        private JPanel pnlSouth;
    
        private JPanel pnlCenter;
    
        private JPanel pnlNorth;
    
        /**
    
         * 按钮
    
         */
    
        private JButton btnQuery;
    
        private JButton btnBrowseAll;
    
        private JButton btnPrint;
    
        private JButton btnExit;
    
        /**
    
         * 记录行集
    
         */
    
        private Vector rows;
    
        /**
    
         * 表格列标题
    
         */
    
        private Vector<String> colHead;
    
        /**
    
         * 表格
    
         */
    
        private JTable table;
    
        /**
    
         * 滚动面板
    
         */
    
        private JScrollPane scroller;
    
    
    
        /**
    
         * 当前记录行号
    
         */
    
        private int currentRow;
    
        /**
    
         * 学生列表
    
         */
    
        private List<Student> students;
    
        /**
    
         * 创建学生服务对象
    
         */
    
        private StudentService studentService;
    
    
    
        /**
    
         * 构造方法
    
         *
    
         * @param title
    
         */
    
        public FindStudentsByClassFrame(String title) {
    
            super(title);
    
            intiGUI();
    
        }
    
    
    
        /**
    
         * 初始化用户界面
    
         */
    
        private void intiGUI() {
    
            // 创建组件
    
            panel = (JPanel) getContentPane();
    
            pnlNorth = new JPanel();
    
            pnlCenter = new JPanel();
    
            pnlSouth = new JPanel();
    
    
    
            rows = new Vector();
    
            colHead = new Vector();
    
    
    
            lblInputClass = new JLabel("输入班级:");
    
            txtClass = new JTextField(10);
    
            txtClass.setHorizontalAlignment(JTextField.CENTER);
    
            btnQuery = new JButton("查询[Q]");
    
            btnQuery.setMnemonic(KeyEvent.VK_Q);
    
            btnBrowseAll = new JButton("显示全部记录[A]");
    
            btnBrowseAll.setMnemonic(KeyEvent.VK_A);
    
            btnPrint = new JButton("打印[P]");
    
            btnPrint.setMnemonic(KeyEvent.VK_D);
    
            btnExit = new JButton("退出[X]");
    
            btnExit.setMnemonic(KeyEvent.VK_X);
    
    
    
            // 添加组件
    
            panel.add(pnlSouth, BorderLayout.SOUTH);
    
            panel.add(pnlCenter, BorderLayout.CENTER);
    
            panel.add(pnlNorth, BorderLayout.NORTH);
    
    
    
            pnlNorth.add(lblInputClass);
    
            pnlNorth.add(txtClass);
    
            pnlNorth.add(btnQuery);
    
            pnlNorth.add(btnBrowseAll);
    
            pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
    
            pnlSouth.add(btnPrint);
    
            pnlSouth.add(btnExit);
    
            pnlCenter.setLayout(new BorderLayout());
    
    
    
            // 创建标题边框对象
    
            TitledBorder tb = new TitledBorder("查询结果");
    
            pnlCenter.setBorder(tb);
    
    
    
            // 创建学生服务对象
    
            studentService = new StudentServiceImpl();
    
            // 获取全部学生列表
    
            students = studentService.findAllStudents();
    
            // 填充表格数据
    
            fillTableData();
    
    
    
            // 设置窗口大小
    
            setSize(600, 350);
    
            // 设置窗口不可调整大小
    
            setResizable(false);
    
            // 设置窗口屏幕居中
    
            setLocationRelativeTo(null);
    
            // 设置窗口标题
    
            setTitle("按姓名查询学生记录");
    
            // 设置窗口可见
    
            setVisible(true);
    
            // 设置窗口默认关闭操作(卸载当前窗口)
    
            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    
    
    
            // 【退出】按钮单击事件
    
            btnExit.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent event) {
    
                    dispose();
    
                }
    
            });
    
    
    
            // 【打印】按钮单击事件
    
            btnPrint.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent e) {
    
                    try {
    
                        table.print();
    
                    } catch (PrinterException e1) {
    
                        e1.printStackTrace();
    
                    }
    
                }
    
            });
    
    
    
            // 【查询】按钮单击事件
    
            btnQuery.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent event) {
    
                    doQuery();
    
                }
    
            });
    
    
    
            // 【显示全部记录】按钮单击事件
    
            btnBrowseAll.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent event) {
    
                    // 获取全部学生记录
    
                    students = studentService.findAllStudents();
    
                    // 填充表格数据
    
                    fillTableData();
    
                }
    
            });
    
    
    
            // 【班级】文本框按键事件
    
            txtClass.addKeyListener(new KeyAdapter() {
    
                @Override
    
                public void keyPressed(KeyEvent e) {
    
                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
    
                        doQuery();
    
                    }
    
                }
    
            });
    
    
    
            // 表格单击事件
    
            table.addMouseListener(new MouseAdapter() {
    
                public void mouseClicked(MouseEvent e) {
    
                    // 获取当前行的行数
    
                    int row = table.rowAtPoint(e.getPoint());
    
                    // 选中鼠标单击的行
    
                    table.setRowSelectionInterval(row, row);
    
                    // 设置文本框内容
    
                    txtClass.setText(table.getValueAt(row, 5).toString());
    
                }
    
            });
    
        }
    
    
    
        /**
    
         * 查询方法
    
         */
    
        private void doQuery() {
    
            // 获取查询班级
    
            String clazz = txtClass.getText().trim();
    
            if (!clazz.equals("")) {
    
                // 按班级查询获取学生列表
    
                students = studentService.findStudentsByClass(clazz);
    
                // 填充表格
    
                fillTableData();
    
            } else {
    
                JOptionPane.showMessageDialog(this, "请输入待查班级!", "警告", JOptionPane.WARNING_MESSAGE);
    
                txtClass.requestFocus();
    
            }
    
        }
    
    
    
        /**
    
         * 填充表格方法
    
         */
    
        private void fillTableData() {
    
            // 填充表头
    
            colHead.clear();
    
            colHead.add("班级");
    
            colHead.add("班级");
    
            colHead.add("性别");
    
            colHead.add("年龄");
    
            colHead.add("系部");
    
            colHead.add("班级");
    
            colHead.add("电话");
    
    
    
            // 填充表记录
    
            rows.clear();
    
            for (Student student : students) {
    
                Vector<String> currentRow = new Vector<String>();
    
                currentRow.addElement(student.getId());
    
                currentRow.addElement(student.getName());
    
                currentRow.addElement(student.getSex());
    
                currentRow.addElement(student.getAge() + "");
    
                currentRow.addElement(student.getDepartment());
    
                currentRow.addElement(student.getClazz());
    
                currentRow.addElement(student.getTelephone());
    
                // 将当前行添加到记录行集
    
                rows.add(currentRow);
    
            }
    
    
    
            // 创建表格(参数1:记录集;参数2:表头)
    
            table = new JTable(rows, colHead);
    
    
    
            // 定义滚动面板
    
            scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
    
                    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    
            // 将滚动面板添加到中心面板
    
            pnlCenter.add(scroller, BorderLayout.CENTER);
    
    
    
            // 重绘窗体
    
            repaint();
    
    
    
            // 判断是否有记录行
    
            if (rows.isEmpty()) {
    
                JOptionPane.showMessageDialog(this, "没有符合条件的记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
    
                txtClass.setText("");
    
            } else {
    
                // 让滚动条移到最上方
    
                scroller.getVerticalScrollBar().setValue(0);
    
            }
    
        }
    
    
    
        /**
    
         * 主方法
    
         *
    
         * @param args
    
         */
    
        public static void main(String[] args) {
    
            new FindStudentsByClassFrame("");
    
        }
    
    }
    

    创建FindStudentByIdFrame按学号查询学生记录

    
    package net.zzk.student.gui;
    
    
    
    import net.zzk.student.bean.Student;
    
    import net.zzk.student.service.StudentService;
    
    import net.zzk.student.service.Impl.StudentServiceImpl;
    
    
    
    import javax.swing.*;
    
    import javax.swing.border.TitledBorder;
    
    import java.awt.*;
    
    import java.awt.event.*;
    
    import java.awt.print.PrinterException;
    
    import java.util.Vector;
    
    import java.util.List;
    
    
    
    /**
    
     * 功能:按学号查询学生记录
    
     * 作者:周昭考
    
     * 日期:2019-7-3
    
     */
    
    public class FindStudentByIdFrame extends JFrame {
    
        /**
    
         * 学号标签
    
         */
    
        private JLabel lblInputId;
    
        /**
    
         * 学号文本框
    
         */
    
        private JTextField txtId;
    
        /**
    
         * 面板
    
         */
    
        private JPanel panel;
    
        private JPanel pnlSouth;
    
        private JPanel pnlCenter;
    
        private JPanel pnlNorth;
    
        /**
    
         * 按钮
    
         */
    
        private JButton btnQuery;
    
        private JButton btnBrowseAll;
    
        private JButton btnPrint;
    
        private JButton btnExit;
    
        /**
    
         * 记录行集
    
         */
    
        private Vector rows;
    
        /**
    
         * 表格列标题
    
         */
    
        private Vector<String> colHead;
    
        /**
    
         * 表格
    
         */
    
        private JTable table;
    
        /**
    
         * 滚动面板
    
         */
    
        private JScrollPane scroller;
    
        /**
    
         * 当前记录行号
    
         */
    
        private int currentRow;
    
        /**
    
         * 学生列表
    
         */
    
        private List<Student> students;
    
        /**
    
         * 创建学生服务对象
    
         */
    
        private StudentService studentService;
    
    
    
        /**
    
         * 构造方法
    
         *
    
         * @param title
    
         */
    
        public FindStudentByIdFrame(String title) {
    
            super(title);
    
            intiGUI();
    
        }
    
    
    
        /**
    
         * 初始化用户界面
    
         */
    
        private void intiGUI() {
    
            // 创建组件
    
            panel = (JPanel) getContentPane();
    
            pnlNorth = new JPanel();
    
            pnlCenter = new JPanel();
    
            pnlSouth = new JPanel();
    
    
    
            rows = new Vector();
    
            colHead = new Vector();
    
    
    
            lblInputId = new JLabel("输入学号:");
    
            txtId = new JTextField(10);
    
            txtId.setHorizontalAlignment(JTextField.CENTER);
    
            btnQuery = new JButton("查询[Q]");
    
            btnQuery.setMnemonic(KeyEvent.VK_Q);
    
            btnBrowseAll = new JButton("显示全部记录[A]");
    
            btnBrowseAll.setMnemonic(KeyEvent.VK_A);
    
            btnPrint = new JButton("打印[P]");
    
            btnPrint.setMnemonic(KeyEvent.VK_D);
    
            btnExit = new JButton("退出[X]");
    
            btnExit.setMnemonic(KeyEvent.VK_X);
    
    
    
            // 添加组件
    
            panel.add(pnlSouth, BorderLayout.SOUTH);
    
            panel.add(pnlCenter, BorderLayout.CENTER);
    
            panel.add(pnlNorth, BorderLayout.NORTH);
    
    
    
            pnlNorth.add(lblInputId);
    
            pnlNorth.add(txtId);
    
            pnlNorth.add(btnQuery);
    
            pnlNorth.add(btnBrowseAll);
    
            pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
    
            pnlSouth.add(btnPrint);
    
            pnlSouth.add(btnExit);
    
            pnlCenter.setLayout(new BorderLayout());
    
    
    
            // 创建标题边框对象
    
            TitledBorder tb = new TitledBorder("查询结果");
    
            pnlCenter.setBorder(tb);
    
    
    
            // 创建学生服务对象
    
            studentService = new StudentServiceImpl();
    
            // 获取全部学生列表
    
            students = studentService.findAllStudents();
    
            // 填充表格数据
    
            fillTableData();
    
    
    
            // 设置窗口大小
    
            setSize(600, 350);
    
            // 设置窗口不可调整大小
    
            setResizable(false);
    
            // 设置窗口屏幕居中
    
            setLocationRelativeTo(null);
    
            // 设置窗口标题
    
            setTitle("按学号查询学生记录");
    
            // 设置窗口可见
    
            setVisible(true);
    
            // 设置窗口默认关闭操作(卸载当前窗口)
    
            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    
    
    
            // 【退出】按钮单击事件
    
            btnExit.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent event) {
    
                    dispose();
    
                }
    
            });
    
    
    
            // 【打印】按钮单击事件
    
            btnPrint.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent e) {
    
                    try {
    
                        table.print();
    
                    } catch (PrinterException e1) {
    
                        e1.printStackTrace();
    
                    }
    
                }
    
            });
    
    
    
            // 【查询】按钮单击事件
    
            btnQuery.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent event) {
    
                    doQuery();
    
                }
    
            });
    
    
    
            // 【显示全部记录】按钮单击事件
    
            btnBrowseAll.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent event) {
    
                    // 获取全部学生记录
    
                    students = studentService.findAllStudents();
    
                    // 填充表格数据
    
                    fillTableData();
    
                    // 删除按钮不可用
    
                    btnPrint.setEnabled(false);
    
                }
    
            });
    
    
    
            // 【学号】文本框按键事件
    
            txtId.addKeyListener(new KeyAdapter() {
    
                @Override
    
                public void keyPressed(KeyEvent e) {
    
                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
    
                        doQuery();
    
                    }
    
                }
    
            });
    
    
    
            // 表格单击事件
    
            table.addMouseListener(new MouseAdapter() {
    
                public void mouseClicked(MouseEvent e) {
    
                    // 获取当前行的行数
    
                    int row = table.rowAtPoint(e.getPoint());
    
                    // 选中鼠标单击的行
    
                    table.setRowSelectionInterval(row, row);
    
                    // 设置文本框内容
    
                    txtId.setText(table.getValueAt(row, 0).toString());
    
                }
    
            });
    
        }
    
    
    
        /**
    
         * 查询方法
    
         */
    
        private void doQuery() {
    
            // 获取查询学号
    
            String id = txtId.getText().trim();
    
            if (!id.equals("")) {
    
                students.clear();
    
                Student student = studentService.findStudentById(id);
    
                if (student != null) {
    
                    // 将查询到的学生添加到列表
    
                    students.add(student);
    
                }
    
                // 填充表格
    
                fillTableData();
    
            } else {
    
                JOptionPane.showMessageDialog(this, "请输入待查学生学号!", "警告", JOptionPane.WARNING_MESSAGE);
    
                txtId.requestFocus();
    
            }
    
        }
    
    
    
        /**
    
         * 填充表格方法
    
         */
    
        private void fillTableData() {
    
            // 填充表头
    
            colHead.clear();
    
            colHead.add("学号");
    
            colHead.add("姓名");
    
            colHead.add("性别");
    
            colHead.add("年龄");
    
            colHead.add("系部");
    
            colHead.add("班级");
    
            colHead.add("电话");
    
    
    
            // 填充表记录
    
            rows.clear();
    
            for (Student student : students) {
    
                Vector<String> currentRow = new Vector<String>();
    
                currentRow.addElement(student.getId());
    
                currentRow.addElement(student.getName());
    
                currentRow.addElement(student.getSex());
    
                currentRow.addElement(student.getAge() + "");
    
                currentRow.addElement(student.getDepartment());
    
                currentRow.addElement(student.getClazz());
    
                currentRow.addElement(student.getTelephone());
    
                // 将当前行添加到记录行集
    
                rows.add(currentRow);
    
            }
    
    
    
            // 创建表格(参数1:记录集;参数2:表头)
    
            table = new JTable(rows, colHead);
    
    
    
            // 定义滚动面板
    
            scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
    
                    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    
            // 将滚动面板添加到中心面板
    
            pnlCenter.add(scroller, BorderLayout.CENTER);
    
    
    
            // 重绘窗体
    
            repaint();
    
    
    
            // 判断是否有记录行
    
            if (rows.isEmpty()) {
    
                JOptionPane.showMessageDialog(this, "没有符合条件的记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
    
                txtId.setText("");
    
            } else {
    
                // 让滚动条移到最上方
    
                scroller.getVerticalScrollBar().setValue(0);
    
            }
    
        }
    
    
    
        /**
    
         * 主方法
    
         *
    
         * @param args
    
         */
    
        public static void main(String[] args) {
    
            new FindStudentByIdFrame("");
    
        }
    
    }
    

    创建EditStudentFrame编辑学生记录

    package net.zzk.student.gui;
    import net.zzk.student.bean.Student;
    import net.zzk.student.service.StudentService;
    import net.zzk.student.service.Impl.StudentServiceImpl;
    
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    import java.util.List;
    
    
    /**
     * 功能:编辑学生记录
     * 作者:周昭考
     * 日期2019-7-3
     */
    
    public class EditStudentFrame extends JFrame {
        /**
         * 声明面板
         */
    
        private JPanel panel;
        private JPanel pnlCenter;
        private JPanel pnlRow1;
        private JPanel pnlRow2;
        private JPanel pnlRow3;
        private JPanel pnlRow4;
        private JPanel pnlRow5;
        private JPanel pnlRow6;
        private JPanel pnlRow7;
        private JPanel pnlSouth;
        private JPanel pnlSouth1;
        private JPanel pnlSouth2;
    
        /**
         * 声明标签
         */
        private JLabel lblId;
        private JLabel lblName;
        private JLabel lblSex;
        private JLabel lblAge;
        private JLabel lblDepartment;
        private JLabel lblClass;
        private JLabel lblTelephone;
    
        /**
         * 声明文本框
         */
        private JTextField txtId;
        private JTextField txtName;
        private JTextField txtSex;
        private JTextField txtAge;
        private JTextField txtDepartment;
        private JTextField txtClass;
        private JTextField txtTelephone;
    
        /**
         * 声明按钮
         */
        private JButton btnTop;
        private JButton btnPrevious;
        private JButton btnNext;
        private JButton btnBottom;
        private JButton btnExit;
        private JButton btnEdit;
        private JButton btnOK;
        private JButton btnCancel;
    
        /**
         * 当前记录行号
         */
        private int currentRow;
    
        /**
         * 学生列表
         */
        private List<Student> students;
    
        /**
         * 创建学生服务对象
         */
        StudentService studentService;
    
        /**
         * 构造方法
         *
         * @param title
         */
    
        public EditStudentFrame(String title) {
            super(title);
            initGUI();
        }
    
        /**
         * 初始化用户界面
         */
        private void initGUI() {
            // 创建组件
            panel = (JPanel) getContentPane();
            pnlCenter = new JPanel();
            pnlSouth = new JPanel();
            pnlSouth.setLayout(new GridLayout(2, 1));
    
            pnlRow1 = new JPanel();
            pnlRow2 = new JPanel();
            pnlRow3 = new JPanel();
            pnlRow4 = new JPanel();
            pnlRow5 = new JPanel();
            pnlRow6 = new JPanel();
            pnlRow7 = new JPanel();
            pnlSouth1 = new JPanel();
            pnlSouth2 = new JPanel();
    
            pnlRow1.setLayout(new FlowLayout(FlowLayout.LEFT));
            pnlRow2.setLayout(new FlowLayout(FlowLayout.LEFT));
            pnlRow3.setLayout(new FlowLayout(FlowLayout.LEFT));
            pnlRow4.setLayout(new FlowLayout(FlowLayout.LEFT));
            pnlRow5.setLayout(new FlowLayout(FlowLayout.LEFT));
            pnlRow6.setLayout(new FlowLayout(FlowLayout.LEFT));
            pnlRow7.setLayout(new FlowLayout(FlowLayout.LEFT));
    
            lblId = new JLabel("学号:");
            lblName = new JLabel("姓名:");
            lblSex = new JLabel("性别:");
            lblAge = new JLabel("年龄:");
            lblDepartment = new JLabel("系部:");
            lblClass = new JLabel("班级:");
            lblTelephone = new JLabel("电话:");
    
            txtId = new JTextField(40);
            txtName = new JTextField(40);
            txtSex = new JTextField(40);
            txtAge = new JTextField(40);
            txtDepartment = new JTextField(40);
            txtClass = new JTextField(40);
            txtTelephone = new JTextField(40);
            txtId.setEditable(false);
            txtName.setEditable(false);
            txtSex.setEditable(false);
            txtAge.setEditable(false);
            txtDepartment.setEditable(false);
            txtClass.setEditable(false);
            txtTelephone.setEditable(false);
    
            btnTop = new JButton("第一条[T]");
            btnPrevious = new JButton("上一条[P]");
            btnNext = new JButton("下一条[N]");
            btnBottom = new JButton("最后一条[B]");
            btnExit = new JButton("退出[X]");
            btnEdit = new JButton("编辑[E]");
            btnOK = new JButton("确定[O]");
            btnCancel = new JButton("取消[C]");
            btnOK.setEnabled(false);
            btnCancel.setEnabled(false);
            btnTop.setMnemonic(KeyEvent.VK_T);
            btnPrevious.setMnemonic(KeyEvent.VK_P);
            btnNext.setMnemonic(KeyEvent.VK_N);
            btnBottom.setMnemonic(KeyEvent.VK_B);
            btnExit.setMnemonic(KeyEvent.VK_X);
            btnEdit.setMnemonic(KeyEvent.VK_E);
            btnOK.setMnemonic(KeyEvent.VK_O);
            btnCancel.setMnemonic(KeyEvent.VK_C);
    
            // 添加组件
            panel.setLayout(new BorderLayout());
            panel.add(pnlCenter, BorderLayout.CENTER);
            panel.add(pnlSouth, BorderLayout.SOUTH);
            pnlCenter.setLayout(new GridLayout(7, 1));
    
            pnlCenter.add(pnlRow1);
            pnlCenter.add(pnlRow2);
            pnlCenter.add(pnlRow3);
            pnlCenter.add(pnlRow4);
            pnlCenter.add(pnlRow5);
            pnlCenter.add(pnlRow6);
            pnlCenter.add(pnlRow7);
    
            pnlRow1.add(lblId);
            pnlRow1.add(txtId);
            pnlRow2.add(lblName);
            pnlRow2.add(txtName);
            pnlRow3.add(lblSex);
            pnlRow3.add(txtSex);
            pnlRow4.add(lblAge);
            pnlRow4.add(txtAge);
            pnlRow5.add(lblDepartment);
            pnlRow5.add(txtDepartment);
            pnlRow6.add(lblClass);
            pnlRow6.add(txtClass);
            pnlRow7.add(lblTelephone);
            pnlRow7.add(txtTelephone);
    
            pnlSouth.add(pnlSouth1);
            pnlSouth.add(pnlSouth2);
            pnlSouth1.add(btnTop);
            pnlSouth1.add(btnPrevious);
            pnlSouth1.add(btnNext);
            pnlSouth1.add(btnBottom);
            pnlSouth1.add(btnExit);
            pnlSouth2.add(btnEdit);
            pnlSouth2.add(btnOK);
            pnlSouth2.add(btnCancel);
    
            // 设置窗口属性
            setSize(500, 300);
            // 设置窗口不可调整大小
            setResizable(false);
            // 设置窗口刚好容纳组件
            pack();
            // 设置窗口屏幕居中
            setLocationRelativeTo(null);
            // 设置窗口可见
            setVisible(true);
            // 设置窗口默认关闭操作(卸载当前窗口)
            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    
            // 创建学生服务对象
            studentService = new StudentServiceImpl();
    
            // 获取全部学生列表
            students = studentService.findAllStudents();
    
            // 判断是否有学生记录
            if (students.size() > 0) {
                // 设置当前记录号
                currentRow = 1;
                // 设置窗口标题
                setTitle("浏览学生表记录" + " && 当前记录:" + currentRow);
                // 填充窗口各文本框数据
                fillFrameData(currentRow);
            } else {
                JOptionPane.showMessageDialog(null,
                        "表中没有记录!",
                        "浏览学生表记录", JOptionPane.ERROR_MESSAGE);
                btnTop.setEnabled(false);
                btnPrevious.setEnabled(false);
                btnNext.setEnabled(false);
                btnBottom.setEnabled(false);
            }
    
    
            // 【第一条】按钮单击事件
            btnTop.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    // 设置当前记录号
                    currentRow = 1;
                    // 填充当前记录数据
                    fillFrameData(currentRow);
                }
            });
    
    
    
            // 【上一条】按钮单击事件
            btnPrevious.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    if (currentRow > 1) {
                        // 设置当前记录号
                        currentRow--;
                        // 填充当前记录数据
                        fillFrameData(currentRow);
                    } else {
                        JOptionPane.showMessageDialog(null,
                                "已到第一条记录!",
                                "浏览学生表记录",
                                JOptionPane.WARNING_MESSAGE);
                    }
                }
            });
    
    
            // 【下一条】按钮单击事件
            btnNext.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    if (currentRow < students.size() - 1) {
                        // 设置当前记录号
                        currentRow++;
                        // 填充当前记录数据
                        fillFrameData(currentRow);
                    } else {
                        JOptionPane.showMessageDialog(null,
                                "已到最后一条记录!",
                                "浏览学生表记录",
                                JOptionPane.WARNING_MESSAGE);
                    }
                }
            });
    
    
            // 【最后一条】按钮单击事件
            btnBottom.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    // 设置当前记录号
                    currentRow = students.size() - 1;
                    // 填充当前记录数据
                    fillFrameData(currentRow);
                }
            });
    
            // 【退出】按钮单击事件
            btnExit.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    dispose();
                }
            });
    
            // 【编辑】按钮单击事件
            btnEdit.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    // 设置窗口标题
                    setTitle("编辑学生表记录" + " && 当前记录:" + currentRow);
    
                    txtName.setEditable(true);
                    txtSex.setEditable(true);
                    txtAge.setEditable(true);
                    txtDepartment.setEditable(true);
                    txtClass.setEditable(true);
                    txtTelephone.setEditable(true);
                    btnOK.setEnabled(true);
                    btnCancel.setEnabled(true);
                }
            });
    
            // 【确定】按钮单击事件
            btnOK.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    // 获取当前学生实体
                    Student student = students.get(currentRow);
    
                    if (isNumber(txtAge.getText())) {
                        if (isLegalTelephone(txtTelephone.getText())) {
                            // 修改学生实体属性
                            student.setName(txtName.getText());
                            student.setSex(txtSex.getText());
                            student.setAge(Integer.parseInt(txtAge.getText()));
                            student.setDepartment(txtDepartment.getText());
                            student.setClazz(txtClass.getText());
                            student.setTelephone(txtTelephone.getText());
                            // 更新学生信息
                            int count = studentService.updateStudent(student);
                            // 判断是否更新成功
                            if (count > 0) {
                                JOptionPane.showMessageDialog(null,
                                        "更新记录成功!",
                                        "编辑学生记录",
                                        JOptionPane.INFORMATION_MESSAGE);
                                btnOK.setEnabled(false);
                                btnCancel.setEnabled(false);
                                btnEdit.setEnabled(true);
                                txtName.setEditable(false);
                                txtSex.setEditable(false);
                                txtAge.setEditable(false);
                                txtDepartment.setEditable(false);
                                txtClass.setEditable(false);
                                txtTelephone.setEditable(false);
                                // 重新获取全部学生列表
                                students = studentService.findAllStudents();
                                // 设置窗口标题
                                setTitle("浏览学生表记录" + " && 当前记录:" + currentRow);
                            } else {
                                JOptionPane.showMessageDialog(null,
                                        "更新记录失败!",
                                        "编辑学生记录",
                                        JOptionPane.ERROR_MESSAGE);
                            }
                        } else {
                            JOptionPane.showMessageDialog(null,
                                    "非法手机号!",
                                    "编辑学生记录",
                                    JOptionPane.ERROR_MESSAGE);
                            txtTelephone.selectAll();
                            txtTelephone.requestFocus();
                        }
                    } else {
                        JOptionPane.showMessageDialog(null,
                                "年龄必须是数字!",
                                "编辑学生记录",
                                JOptionPane.ERROR_MESSAGE);
                        txtAge.selectAll();
                        txtAge.requestFocus();
                    }
                }
            });
    
            // 【取消】按钮单击事件
            btnCancel.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    btnOK.setEnabled(false);
                    btnCancel.setEnabled(false);
                    btnEdit.setEnabled(true);
                    txtName.setEditable(false);
                    txtSex.setEditable(false);
                    txtAge.setEditable(false);
                    txtDepartment.setEditable(false);
                    txtClass.setEditable(false);
                    txtTelephone.setEditable(false);
                    // 恢复文本框修改前的值
                    txtName.setText(students.get(currentRow).getName());
                    txtSex.setText(students.get(currentRow).getSex());
                    txtAge.setText(students.get(currentRow).getAge() + "");
                    txtDepartment.setText(students.get(currentRow).getDepartment());
                    txtClass.setText(students.get(currentRow).getClazz());
                    txtTelephone.setText(students.get(currentRow).getTelephone());
                }
            });
    
            // 【学号】文本框按键事件
            txtId.addKeyListener(new KeyAdapter() {
                @Override
                public void keyPressed(KeyEvent e) {
                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                        txtName.requestFocus();
                    }
                }
            });
    
            // 【姓名】文本框按键事件
            txtName.addKeyListener(new KeyAdapter() {
                @Override
                public void keyPressed(KeyEvent e) {
                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                        txtSex.requestFocus();
                    }
                }
            });
    
            // 【性别】文本框按键事件
    
            txtSex.addKeyListener(new KeyAdapter() {
                @Override
                public void keyPressed(KeyEvent e) {
                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                        txtAge.requestFocus();
                    }
                }
            });
    
            // 【年龄】文本框按键事件
            txtAge.addKeyListener(new KeyAdapter() {
                @Override
                public void keyPressed(KeyEvent e) {
                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                        txtDepartment.requestFocus();
                    }
                }
            });
    
            // 【系部】文本框按键事件
            txtDepartment.addKeyListener(new KeyAdapter() {
                @Override
                public void keyPressed(KeyEvent e) {
                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                        txtClass.requestFocus();
                    }
                }
            });
    
            // 【班级】文本框按键事件
    
            txtClass.addKeyListener(new KeyAdapter() {
                @Override
                public void keyPressed(KeyEvent e) {
                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                        txtTelephone.requestFocus();
                    }
                }
            });
        }
    
    
        /**
         * 将当前记录数据填充窗口各文本框
         *
         * @param currentRow
         */
        private void fillFrameData(int currentRow) {
            if (currentRow > 0) {
                setTitle("浏览学生表记录" + " && 当前记录:" + currentRow);
                txtId.setText(students.get(currentRow).getId());
                txtName.setText(students.get(currentRow).getName());
                txtSex.setText(students.get(currentRow).getSex());
                txtAge.setText(students.get(currentRow).getAge() + "");
                txtDepartment.setText(students.get(currentRow).getDepartment());
                txtClass.setText(students.get(currentRow).getClazz());
                txtTelephone.setText(students.get(currentRow).getTelephone());
            }
        }
    
        // 判断一个字符串是否全是数字
        private boolean isNumber(String str) {
            for (int i = 0; i < str.length(); i++) {
                if (str.charAt(i) < '0' || str.charAt(i) > '9') {
                    return false;
                }
            }
            return true;
        }
    
        /**
         * 判断是否合法手机号
         *
         * @param telephone
         * @return
         */
        private boolean isLegalTelephone(String telephone) {
            Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0-9]))\\d{8}$");
            Matcher m = p.matcher(telephone);
            return m.matches();
        }
    
        /**
         * 主方法
         *
         * @param args
         */
        public static void main(String[] args) {
            new EditStudentFrame("");
        }
    }
    

    创建DeleteStudentsByDepartmentFrame按系部删除学生记录

    
    package net.zzk.student.gui;
    
    
    
    import net.zzk.student.bean.Student;
    
    import net.zzk.student.service.StudentService;
    
    import net.zzk.student.service.Impl.StudentServiceImpl;
    
    
    
    import javax.swing.*;
    
    import javax.swing.border.TitledBorder;
    
    import java.awt.*;
    
    import java.awt.event.*;
    
    import java.util.Vector;
    
    import java.util.List;
    
    
    
    /**
    
     * 功能:按系部删除学生记录
    
     * 作者:周昭考
    
     * 日期:2019-7-3
    
     */
    
    public class DeleteStudentsByDepartmentFrame extends JFrame {
    
        /**
    
         * 系部标签
    
         */
    
        private JLabel lblInputDepartment;
    
        /**
    
         * 系部文本框
    
         */
    
        private JTextField txtDepartment;
    
        /**
    
         * 面板
    
         */
    
        private JPanel panel;
    
        private JPanel pnlSouth;
    
        private JPanel pnlCenter;
    
        private JPanel pnlNorth;
    
        /**
    
         * 按钮
    
         */
    
        private JButton btnQuery;
    
        private JButton btnBrowseAll;
    
        private JButton btnDelete;
    
        private JButton btnExit;
    
        /**
    
         * 记录行集
    
         */
    
        private Vector rows;
    
        /**
    
         * 表格列标题
    
         */
    
        private Vector<String> colHead;
    
        /**
    
         * 表格
    
         */
    
        private JTable table;
    
        /**
    
         * 滚动面板
    
         */
    
        private JScrollPane scroller;
    
    
    
        /**
    
         * 当前记录行号
    
         */
    
        private int currentRow;
    
        /**
    
         * 学生列表
    
         */
    
        private List<Student> students;
    
        /**
    
         * 创建学生服务对象
    
         */
    
        private StudentService studentService;
    
    
    
        /**
    
         * 构造方法
    
         *
    
         * @param title
    
         */
    
        public DeleteStudentsByDepartmentFrame(String title) {
    
            super(title);
    
            intiGUI();
    
        }
    
    
    
        private void intiGUI() {
    
            // 创建组件
    
            panel = (JPanel) getContentPane();
    
            pnlNorth = new JPanel();
    
            pnlCenter = new JPanel();
    
            pnlSouth = new JPanel();
    
    
    
            rows = new Vector();
    
            colHead = new Vector();
    
    
    
            lblInputDepartment = new JLabel("输入系部:");
    
            txtDepartment = new JTextField(10);
    
            txtDepartment.setHorizontalAlignment(JTextField.CENTER);
    
            btnQuery = new JButton("查询[Q]");
    
            btnQuery.setMnemonic(KeyEvent.VK_Q);
    
            btnBrowseAll = new JButton("显示全部记录[A]");
    
            btnBrowseAll.setMnemonic(KeyEvent.VK_A);
    
            btnDelete = new JButton("删除查询的记录[D]");
    
            btnDelete.setEnabled(false);// 删除按钮不可用
    
            btnDelete.setMnemonic(KeyEvent.VK_D);
    
            btnExit = new JButton("退出[X]");
    
            btnExit.setMnemonic(KeyEvent.VK_X);
    
    
    
            // 添加组件
    
            panel.add(pnlSouth, BorderLayout.SOUTH);
    
            panel.add(pnlCenter, BorderLayout.CENTER);
    
            panel.add(pnlNorth, BorderLayout.NORTH);
    
    
    
            pnlNorth.add(lblInputDepartment);
    
            pnlNorth.add(txtDepartment);
    
            pnlNorth.add(btnQuery);
    
            pnlNorth.add(btnBrowseAll);
    
            pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
    
            pnlSouth.add(btnDelete);
    
            pnlSouth.add(btnExit);
    
            pnlCenter.setLayout(new BorderLayout());
    
    
    
            // 创建标题边框对象
    
            TitledBorder tb = new TitledBorder("查询结果");
    
            pnlCenter.setBorder(tb);
    
    
    
            // 创建学生服务对象
    
            studentService = new StudentServiceImpl();
    
            // 获取全部学生列表
    
            students = studentService.findAllStudents();
    
            // 填充表格数据
    
            fillTableData();
    
    
    
            // 设置窗口大小
    
            setSize(600, 350);
    
            // 设置窗口不可调整大小
    
            setResizable(false);
    
            // 设置窗口屏幕居中
    
            setLocationRelativeTo(null);
    
            // 设置窗口标题
    
            setTitle("按系部删除学生记录");
    
            // 设置窗口可见
    
            setVisible(true);
    
            // 设置窗口默认关闭操作(卸载当前窗口)
    
            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    
    
    
    
    
            // 【退出】按钮单击事件
    
            btnExit.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent event) {
    
                    dispose();
    
                }
    
            });
    
    
    
            // 【删除】按钮单击事件
    
            btnDelete.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent e) {
    
                    if (!rows.isEmpty()) {
    
                        long choice = JOptionPane.showConfirmDialog(null, "是否要删除记录?");
    
                        if (choice == JOptionPane.OK_OPTION) {
    
                            // 获取待删系部
    
                            String department = txtDepartment.getText().trim();
    
                            // 按系部删除学生
    
                            int count = studentService.deleteStudentsByDepartment(department);
    
                            if (count > 0) {
    
                                JOptionPane.showMessageDialog(null, "记录删除成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
    
                                // 重新获取全部学生列表
    
                                students = studentService.findAllStudents();
    
                                // 清空待删班级文本框
    
                                txtDepartment.setText("");
    
                                // 填充数据
    
                                fillTableData();
    
                                // 删除按钮不可用
    
                                btnDelete.setEnabled(false);
    
                            } else {
    
                                JOptionPane.showMessageDialog(null, "记录删除失败!", "警告", JOptionPane.WARNING_MESSAGE);
    
                            }
    
                        }
    
                    }
    
                }
    
            });
    
    
    
            // 【查询】按钮单击事件
    
            btnQuery.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent event) {
    
                    doQuery();
    
                }
    
            });
    
    
    
            // 【显示全部记录】按钮单击事件
    
            btnBrowseAll.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent event) {
    
                    // 获取全部学生记录
    
                    students = studentService.findAllStudents();
    
                    // 填充表格数据
    
                    fillTableData();
    
                    // 删除按钮不可用
    
                    btnDelete.setEnabled(false);
    
                }
    
            });
    
    
    
            // 【系部】文本框按键事件
    
            txtDepartment.addKeyListener(new KeyAdapter() {
    
                @Override
    
                public void keyPressed(KeyEvent e) {
    
                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
    
                        doQuery();
    
                    }
    
                }
    
            });
    
    
    
            // 表格单击事件
    
            table.addMouseListener(new MouseAdapter() {
    
                public void mouseClicked(MouseEvent e) {
    
                    // 获取当前行的行数
    
                    int row = table.rowAtPoint(e.getPoint());
    
                    // 选中鼠标单击的行
    
                    table.setRowSelectionInterval(row, row);
    
                    // 设置文本框内容
    
                    txtDepartment.setText(table.getValueAt(row, 4).toString());
    
                }
    
            });
    
        }
    
    
    
        /**
    
         * 查询方法
    
         */
    
        private void doQuery() {
    
            // 获取查询系部
    
            String department = txtDepartment.getText().trim();
    
            if (!department.equals("")) {
    
                students = studentService.findStudentsByDepartment(department);
    
                if (students.size() > 0) {
    
                    // 让删除按钮可用
    
                    btnDelete.setEnabled(true);
    
                }
    
                // 填充表格
    
                fillTableData();
    
            } else {
    
                JOptionPane.showMessageDialog(this, "请输入待查系部!", "警告", JOptionPane.WARNING_MESSAGE);
    
                txtDepartment.requestFocus();
    
            }
    
        }
    
    
    
        /**
    
         * 填充表格方法
    
         */
    
        private void fillTableData() {
    
            // 填充表头
    
            colHead.clear();
    
            colHead.add("学号");
    
            colHead.add("姓名");
    
            colHead.add("性别");
    
            colHead.add("年龄");
    
            colHead.add("系部");
    
            colHead.add("班级");
    
            colHead.add("电话");
    
    
    
            // 填充表记录
    
            rows.clear();
    
            for (Student student : students) {
    
                Vector<String> currentRow = new Vector<String>();
    
                currentRow.addElement(student.getId());
    
                currentRow.addElement(student.getName());
    
                currentRow.addElement(student.getSex());
    
                currentRow.addElement(student.getAge() + "");
    
                currentRow.addElement(student.getDepartment());
    
                currentRow.addElement(student.getClazz());
    
                currentRow.addElement(student.getTelephone());
    
                // 将当前行添加到记录行集
    
                rows.add(currentRow);
    
            }
    
    
    
            // 创建表格(参数1:记录集;参数2:表头)
    
            table = new JTable(rows, colHead);
    
    
    
            // 定义滚动面板
    
            scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
    
                    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    
            // 将滚动面板添加到中心面板
    
            pnlCenter.add(scroller, BorderLayout.CENTER);
    
    
    
            // 重绘窗体
    
            repaint();
    
    
    
            // 判断是否有记录行
    
            if (rows.isEmpty()) {
    
                JOptionPane.showMessageDialog(this, "没有符合条件的记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
    
                txtDepartment.setText("");
    
            } else {
    
                // 让滚动条移到最上方
    
                scroller.getVerticalScrollBar().setValue(0);
    
            }
    
        }
    
    
    
        /**
    
         * 主方法
    
         *
    
         * @param args
    
         */
    
        public static void main(String[] args) {
    
            new DeleteStudentsByDepartmentFrame("");
    
        }
    
    }
    

    创建DeleteStudentsByClassFrame按班级删除学生记录

    
    package net.zzk.student.gui;
    
    
    
    import net.zzk.student.bean.Student;
    
    import net.zzk.student.service.StudentService;
    
    import net.zzk.student.service.Impl.StudentServiceImpl;
    
    
    
    import javax.swing.*;
    
    import javax.swing.border.TitledBorder;
    
    import java.awt.*;
    
    import java.awt.event.*;
    
    import java.util.Vector;
    
    import java.util.List;
    
    
    
    /**
    
     * 功能:按班级删除学生记录
    
     * 作者:周昭考
    
     * 日期:2019-7-3
    
     */
    
    public class DeleteStudentsByClassFrame extends JFrame {
    
        /**
    
         * 班级标签
    
         */
    
        private JLabel lblInputClass;
    
        /**
    
         * 班级文本框
    
         */
    
        private JTextField txtClass;
    
        /**
    
         * 面板
    
         */
    
        private JPanel panel;
    
        private JPanel pnlSouth;
    
        private JPanel pnlCenter;
    
        private JPanel pnlNorth;
    
        /**
    
         * 按钮
    
         */
    
        private JButton btnQuery;
    
        private JButton btnBrowseAll;
    
        private JButton btnDelete;
    
        private JButton btnExit;
    
        /**
    
         * 记录行集
    
         */
    
        private Vector rows;
    
        /**
    
         * 表格列标题
    
         */
    
        private Vector<String> colHead;
    
        /**
    
         * 表格
    
         */
    
        private JTable table;
    
        /**
    
         * 滚动面板
    
         */
    
        private JScrollPane scroller;
    
    
    
        /**
    
         * 当前记录行号
    
         */
    
        private int currentRow;
    
        /**
    
         * 学生列表
    
         */
    
        private List<Student> students;
    
        /**
    
         * 创建学生服务对象
    
         */
    
        private StudentService studentService;
    
    
    
        /**
    
         * 构造方法
    
         *
    
         * @param title
    
         */
    
        public DeleteStudentsByClassFrame(String title) {
    
            super(title);
    
            intiGUI();
    
        }
    
    
    
        private void intiGUI() {
    
            // 创建组件
    
            panel = (JPanel) getContentPane();
    
            pnlNorth = new JPanel();
    
            pnlCenter = new JPanel();
    
            pnlSouth = new JPanel();
    
    
    
            rows = new Vector();
    
            colHead = new Vector();
    
    
    
            lblInputClass = new JLabel("输入班级:");
    
            txtClass = new JTextField(10);
    
            txtClass.setHorizontalAlignment(JTextField.CENTER);
    
            btnQuery = new JButton("查询[Q]");
    
            btnQuery.setMnemonic(KeyEvent.VK_Q);
    
            btnBrowseAll = new JButton("显示全部记录[A]");
    
            btnBrowseAll.setMnemonic(KeyEvent.VK_A);
    
            btnDelete = new JButton("删除查询的记录[D]");
    
            btnDelete.setEnabled(false);// 删除按钮不可用
    
            btnDelete.setMnemonic(KeyEvent.VK_D);
    
            btnExit = new JButton("退出[X]");
    
            btnExit.setMnemonic(KeyEvent.VK_X);
    
    
    
            // 添加组件
    
            panel.add(pnlSouth, BorderLayout.SOUTH);
    
            panel.add(pnlCenter, BorderLayout.CENTER);
    
            panel.add(pnlNorth, BorderLayout.NORTH);
    
    
    
            pnlNorth.add(lblInputClass);
    
            pnlNorth.add(txtClass);
    
            pnlNorth.add(btnQuery);
    
            pnlNorth.add(btnBrowseAll);
    
            pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
    
            pnlSouth.add(btnDelete);
    
            pnlSouth.add(btnExit);
    
            pnlCenter.setLayout(new BorderLayout());
    
    
    
            // 创建标题边框对象
    
            TitledBorder tb = new TitledBorder("查询结果");
    
            pnlCenter.setBorder(tb);
    
    
    
            // 创建学生服务对象
    
            studentService = new StudentServiceImpl();
    
            // 获取全部学生列表
    
            students = studentService.findAllStudents();
    
            // 填充表格数据
    
            fillTableData();
    
    
    
            // 设置窗口大小
    
            setSize(600, 350);
    
            // 设置窗口不可调整大小
    
            setResizable(false);
    
            // 设置窗口屏幕居中
    
            setLocationRelativeTo(null);
    
            // 设置窗口标题
    
            setTitle("按班级删除学生记录");
    
            // 设置窗口可见
    
            setVisible(true);
    
            // 设置窗口默认关闭操作(卸载当前窗口)
    
            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    
    
    
    
    
            // 【退出】按钮单击事件
    
            btnExit.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent event) {
    
                    dispose();
    
                }
    
            });
    
    
    
            // 【删除】按钮单击事件
    
            btnDelete.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent e) {
    
                    if (!rows.isEmpty()) {
    
                        long choice = JOptionPane.showConfirmDialog(null, "是否要删除记录?");
    
                        if (choice == JOptionPane.OK_OPTION) {
    
                            // 获取待删班级
    
                            String clazz = txtClass.getText().trim();
    
                            // 按班级删除学生
    
                            int count = studentService.deleteStudentsByClass(clazz);
    
                            if (count > 0) {
    
                                JOptionPane.showMessageDialog(null, "记录删除成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
    
                                // 重新获取全部学生列表
    
                                students = studentService.findAllStudents();
    
                                // 清空待删班级文本框
    
                                txtClass.setText("");
    
                                // 填充数据
    
                                fillTableData();
    
                                // 删除按钮不可用
    
                                btnDelete.setEnabled(false);
    
                            } else {
    
                                JOptionPane.showMessageDialog(null, "记录删除失败!", "警告", JOptionPane.WARNING_MESSAGE);
    
                            }
    
                        }
    
                    }
    
                }
    
            });
    
    
    
            // 【查询】按钮单击事件
    
            btnQuery.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent event) {
    
                    doQuery();
    
                }
    
            });
    
    
    
            // 【显示全部记录】按钮单击事件
    
            btnBrowseAll.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent event) {
    
                    // 获取全部学生记录
    
                    students = studentService.findAllStudents();
    
                    // 填充表格数据
    
                    fillTableData();
    
                    // 删除按钮不可用
    
                    btnDelete.setEnabled(false);
    
                }
    
            });
    
    
    
            // 【班级】文本框按键事件
    
            txtClass.addKeyListener(new KeyAdapter() {
    
                @Override
    
                public void keyPressed(KeyEvent e) {
    
                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
    
                        doQuery();
    
                    }
    
                }
    
            });
    
    
    
            // 表格单击事件
    
            table.addMouseListener(new MouseAdapter() {
    
                public void mouseClicked(MouseEvent e) {
    
                    // 获取当前行的行数
    
                    int row = table.rowAtPoint(e.getPoint());
    
                    if (row <= table.getRowCount()) {
    
                        // 选中鼠标单击的行
    
                        table.setRowSelectionInterval(row, row);
    
                        // 设置文本框内容
    
                        txtClass.setText(table.getValueAt(row, 5).toString());
    
                    }
    
                }
    
            });
    
        }
    
    
    
        /**
    
         * 查询方法
    
         */
    
        private void doQuery() {
    
            // 获取查询班级
    
            String clazz = txtClass.getText().trim();
    
            if (!clazz.equals("")) {
    
                students = studentService.findStudentsByClass(clazz);
    
                if (students.size() > 0) {
    
                    // 让删除按钮可用
    
                    btnDelete.setEnabled(true);
    
                }
    
                // 填充表格
    
                fillTableData();
    
            } else {
    
                JOptionPane.showMessageDialog(this, "请输入待查班级!", "警告", JOptionPane.WARNING_MESSAGE);
    
                txtClass.requestFocus();
    
            }
    
        }
    
    
    
        /**
    
         * 填充表格方法
    
         */
    
        private void fillTableData() {
    
            // 填充表头
    
            colHead.clear();
    
            colHead.add("学号");
    
            colHead.add("姓名");
    
            colHead.add("性别");
    
            colHead.add("年龄");
    
            colHead.add("系部");
    
            colHead.add("班级");
    
            colHead.add("电话");
    
    
    
            // 填充表记录
    
            rows.clear();
    
            for (Student student : students) {
    
                Vector<String> currentRow = new Vector<String>();
    
                currentRow.addElement(student.getId());
    
                currentRow.addElement(student.getName());
    
                currentRow.addElement(student.getSex());
    
                currentRow.addElement(student.getAge() + "");
    
                currentRow.addElement(student.getDepartment());
    
                currentRow.addElement(student.getClazz());
    
                currentRow.addElement(student.getTelephone());
    
                // 将当前行添加到记录行集
    
                rows.add(currentRow);
    
            }
    
    
    
            // 创建表格(参数1:记录集;参数2:表头)
    
            table = new JTable(rows, colHead);
    
    
    
            // 定义滚动面板
    
            scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
    
                    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    
            // 将滚动面板添加到中心面板
    
            pnlCenter.add(scroller, BorderLayout.CENTER);
    
    
    
            // 重绘窗体
    
            repaint();
    
    
    
            // 判断是否有记录行
    
            if (rows.isEmpty()) {
    
                JOptionPane.showMessageDialog(this, "没有符合条件的记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
    
                txtClass.setText("");
    
            } else {
    
                // 让滚动条移到最上方
    
                scroller.getVerticalScrollBar().setValue(0);
    
            }
    
        }
    
    
    
        /**
    
         * 主方法
    
         *
    
         * @param args
    
         */
    
        public static void main(String[] args) {
    
            new DeleteStudentsByClassFrame("");
    
        }
    
    }
    

    创建DeleteStudentByIdFrame按学号删除学生记录

    
    package net.zzk.student.gui;
    
    
    
    import net.zzk.student.bean.Student;
    
    import net.zzk.student.service.StudentService;
    
    import net.zzk.student.service.Impl.StudentServiceImpl;
    
    import javax.swing.*;
    
    import javax.swing.border.TitledBorder;
    
    import java.awt.*;
    
    import java.awt.event.*;
    
    import java.util.Vector;
    
    import java.util.List;
    
    
    
    /**
    
     * 功能:按学号删除学生记录
    
     * 作者:周昭考
    
     * 日期:2019-7-3
    
     */
    
    public class DeleteStudentByIdFrame extends JFrame {
    
        /**
    
         * 学号标签
    
         */
    
        private JLabel lblInputId;
    
        /**
    
         * 学号文本框
    
         */
    
        private JTextField txtId;
    
        /**
    
         * 面板
    
         */
    
        private JPanel panel;
    
        private JPanel pnlSouth;
    
        private JPanel pnlCenter;
    
        private JPanel pnlNorth;
    
    
    
        /**
    
         * 按钮
    
         */
    
        private JButton btnQuery;
    
        private JButton btnBrowseAll;
    
        private JButton btnDelete;
    
        private JButton btnExit;
    
        /**
    
         * 记录行集
    
         */
    
        private Vector rows;
    
        /**
    
         * 表格列标题
    
         */
    
        private Vector<String> colHead;
    
        /**
    
         * 表格
    
         */
    
        private JTable table;
    
        /**
    
         * 滚动面板
    
         */
    
        private JScrollPane scroller;
    
        /**
    
         * 当前记录行号
    
         */
    
        private int currentRow;
    
        /**
    
         * 学生列表
    
         */
    
        private List<Student> students;
    
        /**
    
         * 创建学生服务对象
    
         */
    
        private StudentService studentService;
    
    
    
        /**
    
         * 构造方法
    
         *
    
         * @param title
    
         */
    
        public DeleteStudentByIdFrame(String title) {
    
            super(title);
    
            intiGUI();
    
        }
    
    
    
        private void intiGUI() {
    
            // 创建组件
    
            panel = (JPanel) getContentPane();
    
            pnlNorth = new JPanel();
    
            pnlCenter = new JPanel();
    
            pnlSouth = new JPanel();
    
    
    
            rows = new Vector();
    
            colHead = new Vector();
    
    
    
            lblInputId = new JLabel("输入学号:");
    
            txtId = new JTextField(10);
    
            txtId.setHorizontalAlignment(JTextField.CENTER);
    
            btnQuery = new JButton("查询[Q]");
    
            btnQuery.setMnemonic(KeyEvent.VK_Q);
    
            btnBrowseAll = new JButton("显示全部记录[A]");
    
            btnBrowseAll.setMnemonic(KeyEvent.VK_A);
    
            btnDelete = new JButton("删除查询的记录[D]");
    
            btnDelete.setEnabled(false);// 删除按钮不可用
    
            btnDelete.setMnemonic(KeyEvent.VK_D);
    
            btnExit = new JButton("退出[X]");
    
            btnExit.setMnemonic(KeyEvent.VK_X);
    
    
    
            // 添加组件
    
            panel.add(pnlSouth, BorderLayout.SOUTH);
    
            panel.add(pnlCenter, BorderLayout.CENTER);
    
            panel.add(pnlNorth, BorderLayout.NORTH);
    
    
    
            pnlNorth.add(lblInputId);
    
            pnlNorth.add(txtId);
    
            pnlNorth.add(btnQuery);
    
            pnlNorth.add(btnBrowseAll);
    
            pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
    
            pnlSouth.add(btnDelete);
    
            pnlSouth.add(btnExit);
    
            pnlCenter.setLayout(new BorderLayout());
    
    
    
            // 创建标题边框对象
    
            TitledBorder tb = new TitledBorder("查询结果");
    
            pnlCenter.setBorder(tb);
    
    
    
            // 创建学生服务对象
    
            studentService = new StudentServiceImpl();
    
            // 获取全部学生列表
    
            students = studentService.findAllStudents();
    
            // 填充表格数据
    
            fillTableData();
    
    
    
            // 设置窗口大小
    
            setSize(600, 350);
    
            // 设置窗口不可调整大小
    
            setResizable(false);
    
            // 设置窗口屏幕居中
    
            setLocationRelativeTo(null);
    
            // 设置窗口标题
    
            setTitle("按学号删除学生记录");
    
            // 设置窗口可见
    
            setVisible(true);
    
            // 设置窗口默认关闭操作(卸载当前窗口)
    
            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    
    
    
            // 【退出】按钮单击事件
    
            btnExit.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent event) {
    
                    dispose();
    
                }
    
            });
    
    
    
            // 【删除】按钮单击事件
    
            btnDelete.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent e) {
    
                    if (!rows.isEmpty()) {
    
                        long choice = JOptionPane.showConfirmDialog(null, "是否要删除记录?");
    
                        if (choice == JOptionPane.OK_OPTION) {
    
                            // 获取待删学生学号
    
                            String id = txtId.getText().trim();
    
                            // 按学号删除学生
    
                            int count = studentService.deleteStudentById(id);
    
                            if (count > 0) {
    
                                JOptionPane.showMessageDialog(null, "记录删除成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
    
                                // 重新获取全部学生列表
    
                                students = studentService.findAllStudents();
    
                                // 清空待删学生学号文本框
    
                                txtId.setText("");
    
                                // 填充数据
    
                                fillTableData();
    
                                // 删除按钮不可用
    
                                btnDelete.setEnabled(false);
    
                            } else {
    
                                JOptionPane.showMessageDialog(null, "记录删除失败!", "警告", JOptionPane.WARNING_MESSAGE);
    
                            }
    
                        }
    
                    }
    
                }
    
            });
    
    
    
            // 【查询】按钮单击事件
    
            btnQuery.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent event) {
    
                    doQuery();
    
                }
    
            });
    
    
    
            // 【显示全部记录】按钮单击事件
    
            btnBrowseAll.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent event) {
    
                    // 获取全部学生记录
    
                    students = studentService.findAllStudents();
    
                    // 填充表格数据
    
                    fillTableData();
    
                    // 删除按钮不可用
    
                    btnDelete.setEnabled(false);
    
                }
    
            });
    
    
    
            // 【学号】文本框按键事件
    
            txtId.addKeyListener(new KeyAdapter() {
    
                @Override
    
                public void keyPressed(KeyEvent e) {
    
                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
    
                        doQuery();
    
                    }
    
                }
    
            });
    
    
    
            // 表格单击事件
    
            table.addMouseListener(new MouseAdapter() {
    
                public void mouseClicked(MouseEvent e) {
    
                    // 获取当前行的行数
    
                    int row = table.rowAtPoint(e.getPoint());
    
                    // 选中鼠标单击的行
    
                    table.setRowSelectionInterval(row, row);
    
                    // 设置文本框内容
    
                    txtId.setText(table.getValueAt(row, 0).toString());
    
                }
    
            });
    
        }
    
    
    
        /**
    
         * 查询方法
    
         */
    
        private void doQuery() {
    
            // 获取查询学号
    
            String id = txtId.getText().trim();
    
            if (!id.equals("")) {
    
                students.clear();
    
                Student student = studentService.findStudentById(id);
    
                if (student != null) {
    
                    // 将查询到的学生添加到列表
    
                    students.add(student);
    
                    // 让删除按钮可用
    
                    btnDelete.setEnabled(true);
    
                }
    
                // 填充表格
    
                fillTableData();
    
            } else {
    
                JOptionPane.showMessageDialog(this, "请输入待查学生学号!", "警告", JOptionPane.WARNING_MESSAGE);
    
                txtId.requestFocus();
    
            }
    
        }
    
    
    
        /**
    
         * 填充表格方法
    
         */
    
        private void fillTableData() {
    
            // 填充表头
    
            colHead.clear();
    
            colHead.add("学号");
    
            colHead.add("姓名");
    
            colHead.add("性别");
    
            colHead.add("年龄");
    
            colHead.add("系部");
    
            colHead.add("班级");
    
            colHead.add("电话");
    
    
    
            // 填充表记录
    
            rows.clear();
    
            for (Student student : students) {
    
                Vector<String> currentRow = new Vector<String>();
    
                currentRow.addElement(student.getId());
    
                currentRow.addElement(student.getName());
    
                currentRow.addElement(student.getSex());
    
                currentRow.addElement(student.getAge() + "");
    
                currentRow.addElement(student.getDepartment());
    
                currentRow.addElement(student.getClazz());
    
                currentRow.addElement(student.getTelephone());
    
                // 将当前行添加到记录行集
    
                rows.add(currentRow);
    
            }
    
    
    
            // 创建表格(参数1:记录集;参数2:表头)
    
            table = new JTable(rows, colHead);
    
    
    
            // 定义滚动面板
    
            scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
    
                    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    
            // 将滚动面板添加到中心面板
    
            pnlCenter.add(scroller, BorderLayout.CENTER);
    
    
    
            // 重绘窗体
    
            repaint();
    
    
    
            // 判断是否有记录行
    
            if (rows.isEmpty()) {
    
                JOptionPane.showMessageDialog(this, "没有符合条件的记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
    
                txtId.setText("");
    
            } else {
    
                // 让滚动条移到最上方
    
                scroller.getVerticalScrollBar().setValue(0);
    
            }
    
        }
    
    
    
        /**
    
         * 主方法
    
         *
    
         * @param args
    
         */
    
        public static void main(String[] args) {
    
            new DeleteStudentByIdFrame("");
    
        }
    
    }
    

    创建CountStudentsBySexFrame按性别统计学生人数

    
    package net.zzk.student.gui;
    
    
    
    import net.zzk.student.service.StudentService;
    
    import net.zzk.student.service.Impl.StudentServiceImpl;
    
    
    
    import javax.swing.*;
    
    import javax.swing.border.TitledBorder;
    
    import java.awt.*;
    
    import java.awt.event.ActionEvent;
    
    import java.awt.event.ActionListener;
    
    import java.awt.event.KeyEvent;
    
    import java.awt.print.PrinterException;
    
    import java.util.Vector;
    
    import java.util.List;
    
    
    
    /**
    
     * 功能:按性别统计学生人数
    
     * 作者:周昭考
    
     * 日期:2019-7-3
    
     */
    
    public class CountStudentsBySexFrame extends JFrame {
    
        /**
    
         * 面板
    
         */
    
        private JPanel panel;
    
        private JPanel pnlSouth;
    
        private JPanel pnlCenter;
    
        /**
    
         * 按钮
    
         */
    
        private JButton btnPrint;
    
        private JButton btnExit;
    
        /**
    
         * 记录行集
    
         */
    
        private Vector rows;
    
        /**
    
         * 表格列标题
    
         */
    
        private Vector<String> colHead;
    
        /**
    
         * 表格
    
         */
    
        private JTable table;
    
        /**
    
         * 滚动面板
    
         */
    
        private JScrollPane scroller;
    
        /**
    
         * 创建学生服务对象
    
         */
    
        private StudentService studentService;
    
    
    
        public CountStudentsBySexFrame(String title) {
    
            super(title);
    
            initGUI();
    
        }
    
    
    
        /**
    
         * 初始化用户界面
    
         */
    
        private void initGUI() {
    
            // 创建组件
    
            panel = (JPanel) getContentPane();
    
            pnlCenter = new JPanel();
    
            pnlSouth = new JPanel();
    
    
    
            rows = new Vector();
    
            colHead = new Vector();
    
    
    
            btnPrint = new JButton("打印[P]");
    
            btnPrint.setMnemonic(KeyEvent.VK_P);
    
            btnExit = new JButton("退出[X]");
    
            btnExit.setMnemonic(KeyEvent.VK_X);
    
    
    
            // 添加组件
    
            panel.add(pnlSouth, BorderLayout.SOUTH);
    
            panel.add(pnlCenter, BorderLayout.CENTER);
    
    
    
            pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
    
            pnlSouth.add(btnPrint);
    
            pnlSouth.add(btnExit);
    
            pnlCenter.setLayout(new BorderLayout());
    
    
    
            TitledBorder tb = new TitledBorder("统计结果");
    
            pnlCenter.setBorder(tb);
    
    
    
            // 创建学生服务对象
    
            studentService = new StudentServiceImpl();
    
            // 获取按性别统计结果记录行集
    
            rows = studentService.findRowsBySex();
    
            // 设置表头
    
            colHead.add("性别");
    
            colHead.add("人数");
    
    
    
            // 创建表格(参数1:记录集;参数2:表头)
    
            table = new JTable(rows, colHead);
    
            scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
    
                    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    
            pnlCenter.add(scroller, BorderLayout.CENTER);
    
    
    
            repaint(); // 重绘窗体
    
    
    
            if (rows.isEmpty()) {
    
                JOptionPane.showMessageDialog(this, "没有记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
    
            }
    
    
    
            // 设置窗口大小
    
            setSize(300, 200);
    
            // 设置窗口不可调整大小
    
            setResizable(false);
    
            // 设置窗口屏幕居中
    
            setLocationRelativeTo(null);
    
            // 设置窗口标题
    
            setTitle("按性别统计学生人数");
    
            // 设置窗口可见
    
            setVisible(true);
    
            // 设置窗口默认关闭操作(卸载当前窗口)
    
            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    
    
    
            // 【退出】按钮单击事件
    
            btnExit.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent arg0) {
    
                    dispose();
    
                }
    
            });
    
    
    
            // 【打印】按钮单击事件
    
            btnPrint.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent e) {
    
                    try {
    
                        table.print();
    
                    } catch (PrinterException e1) {
    
                        e1.printStackTrace();
    
                    }
    
                }
    
            });
    
        }
    
    
    
        /**
    
         * 主方法
    
         *
    
         * @param args
    
         */
    
        public static void main(String[] args) {
    
            new CountStudentsBySexFrame("");
    
        }
    
    }
    

    创建CountStudentsByDepartmentFrame按系部统计学生人数

    
    package net.zzk.student.gui;
    
    
    
    import net.zzk.student.service.StudentService;
    
    import net.zzk.student.service.Impl.StudentServiceImpl;
    
    
    
    import javax.swing.*;
    
    import javax.swing.border.TitledBorder;
    
    import java.awt.*;
    
    import java.awt.event.ActionEvent;
    
    import java.awt.event.ActionListener;
    
    import java.awt.event.KeyEvent;
    
    import java.awt.print.PrinterException;
    
    import java.util.Vector;
    
    
    
    /**
    
     * 功能:按系部统计学生人数
    
     * 作者:周昭考
    
     * 日期:2019-7-3
    
     */
    
    public class CountStudentsByDepartmentFrame extends JFrame {
    
        /**
    
         * 面板
    
         */
    
        private JPanel panel;
    
        private JPanel pnlSouth;
    
        private JPanel pnlCenter;
    
        /**
    
         * 按钮
    
         */
    
        private JButton btnPrint;
    
        private JButton btnExit;
    
        /**
    
         * 记录行集
    
         */
    
        private Vector rows;
    
        /**
    
         * 表格列标题
    
         */
    
        private Vector<String> colHead;
    
        /**
    
         * 表格
    
         */
    
        private JTable table;
    
        /**
    
         * 滚动面板
    
         */
    
        private JScrollPane scroller;
    
        /**
    
         * 创建学生服务对象
    
         */
    
        private StudentService studentService;
    
    
    
        public CountStudentsByDepartmentFrame(String title) {
    
            super(title);
    
            initGUI();
    
        }
    
    
    
        /**
    
         * 初始化用户界面
    
         */
    
        private void initGUI() {
    
            // 创建组件
    
            panel = (JPanel) getContentPane();
    
            pnlCenter = new JPanel();
    
            pnlSouth = new JPanel();
    
    
    
            rows = new Vector();
    
            colHead = new Vector();
    
    
    
            btnPrint = new JButton("打印[P]");
    
            btnPrint.setMnemonic(KeyEvent.VK_P);
    
            btnExit = new JButton("退出[X]");
    
            btnExit.setMnemonic(KeyEvent.VK_X);
    
    
    
            // 添加组件
    
            panel.add(pnlSouth, BorderLayout.SOUTH);
    
            panel.add(pnlCenter, BorderLayout.CENTER);
    
    
    
            pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
    
            pnlSouth.add(btnPrint);
    
            pnlSouth.add(btnExit);
    
            pnlCenter.setLayout(new BorderLayout());
    
    
    
            TitledBorder tb = new TitledBorder("统计结果");
    
            pnlCenter.setBorder(tb);
    
    
    
            // 创建学生服务对象
    
            studentService = new StudentServiceImpl();
    
            // 获取按系部统计结果记录行集
    
            rows = studentService.findRowsByDepartment();
    
            // 设置表头
    
            colHead.add("系部");
    
            colHead.add("人数");
    
    
    
            // 创建表格(参数1:记录集;参数2:表头)
    
            table = new JTable(rows, colHead);
    
            scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
    
                    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    
            pnlCenter.add(scroller, BorderLayout.CENTER);
    
    
    
            repaint(); // 重绘窗体
    
    
    
            if (rows.isEmpty()) {
    
                JOptionPane.showMessageDialog(this, "没有记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
    
            }
    
    
    
            // 设置窗口大小
    
            setSize(300, 200);
    
            // 设置窗口不可调整大小
    
            setResizable(false);
    
            // 设置窗口屏幕居中
    
            setLocationRelativeTo(null);
    
            // 设置窗口标题
    
            setTitle("按系部统计学生人数");
    
            // 设置窗口可见
    
            setVisible(true);
    
            // 设置窗口默认关闭操作(卸载当前窗口)
    
            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    
    
    
            // 【退出】按钮单击事件
    
            btnExit.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent arg0) {
    
                    dispose();
    
                }
    
            });
    
    
    
            // 【打印】按钮单击事件
    
            btnPrint.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent e) {
    
                    try {
    
                        table.print();
    
                    } catch (PrinterException e1) {
    
                        e1.printStackTrace();
    
                    }
    
                }
    
            });
    
        }
    
    
    
        /**
    
         * 主方法
    
         *
    
         * @param args
    
         */
    
        public static void main(String[] args) {
    
            new CountStudentsByDepartmentFrame("");
    
        }
    
    }
    

    创建CountStudentsByClassFrame按班级统计学生人数

    
    package net.zzk.student.gui;
    
    
    
    import net.zzk.student.service.StudentService;
    
    import net.zzk.student.service.Impl.StudentServiceImpl;
    
    
    
    import javax.swing.*;
    
    import javax.swing.border.TitledBorder;
    
    import java.awt.*;
    
    import java.awt.event.ActionEvent;
    
    import java.awt.event.ActionListener;
    
    import java.awt.event.KeyEvent;
    
    import java.awt.print.PrinterException;
    
    import java.util.Vector;
    
    
    
    /**
    
     * 功能:按班级统计学生人数
    
     * 作者:周昭考
    
     * 日期:2019-7-3
    
     */
    
    public class CountStudentsByClassFrame extends JFrame {
    
        /**
    
         * 面板
    
         */
    
        private JPanel panel;
    
        private JPanel pnlSouth;
    
        private JPanel pnlCenter;
    
        /**
    
         * 按钮
    
         */
    
        private JButton btnPrint;
    
        private JButton btnExit;
    
        /**
    
         * 记录行集
    
         */
    
        private Vector rows;
    
        /**
    
         * 表格列标题
    
         */
    
        private Vector<String> colHead;
    
        /**
    
         * 表格
    
         */
    
        private JTable table;
    
        /**
    
         * 滚动面板
    
         */
    
        private JScrollPane scroller;
    
        /**
    
         * 创建学生服务对象
    
         */
    
        private StudentService studentService;
    
    
    
        public CountStudentsByClassFrame(String title) {
    
            super(title);
    
            initGUI();
    
        }
    
    
    
        /**
    
         * 初始化用户界面
    
         */
    
        private void initGUI() {
    
            // 创建组件
    
            panel = (JPanel) getContentPane();
    
            pnlCenter = new JPanel();
    
            pnlSouth = new JPanel();
    
    
    
            rows = new Vector();
    
            colHead = new Vector();
    
    
    
            btnPrint = new JButton("打印[P]");
    
            btnPrint.setMnemonic(KeyEvent.VK_P);
    
            btnExit = new JButton("退出[X]");
    
            btnExit.setMnemonic(KeyEvent.VK_X);
    
    
    
            // 添加组件
    
            panel.add(pnlSouth, BorderLayout.SOUTH);
    
            panel.add(pnlCenter, BorderLayout.CENTER);
    
    
    
            pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
    
            pnlSouth.add(btnPrint);
    
            pnlSouth.add(btnExit);
    
            pnlCenter.setLayout(new BorderLayout());
    
    
    
            TitledBorder tb = new TitledBorder("统计结果");
    
            pnlCenter.setBorder(tb);
    
    
    
            // 创建学生服务对象
    
            studentService = new StudentServiceImpl();
    
            // 获取按班级统计结果记录行集
    
            rows = studentService.findRowsByClass();
    
            // 设置表头
    
            colHead.add("班级");
    
            colHead.add("人数");
    
    
    
            // 创建表格(参数1:记录集;参数2:表头)
    
            table = new JTable(rows, colHead);
    
            scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
    
                    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    
            pnlCenter.add(scroller, BorderLayout.CENTER);
    
    
    
            repaint(); // 重绘窗体
    
    
    
            if (rows.isEmpty()) {
    
                JOptionPane.showMessageDialog(this, "没有记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
    
            }
    
    
    
            // 设置窗口大小
    
            setSize(300, 200);
    
            // 设置窗口不可调整大小
    
            setResizable(false);
    
            // 设置窗口屏幕居中
    
            setLocationRelativeTo(null);
    
            // 设置窗口标题
    
            setTitle("按班级统计学生人数");
    
            // 设置窗口可见
    
            setVisible(true);
    
            // 设置窗口默认关闭操作(卸载当前窗口)
    
            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    
    
    
            // 【退出】按钮单击事件
    
            btnExit.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent arg0) {
    
                    dispose();
    
                }
    
            });
    
    
    
            // 【打印】按钮单击事件
    
            btnPrint.addActionListener(new ActionListener() {
    
                @Override
    
                public void actionPerformed(ActionEvent e) {
    
                    try {
    
                        table.print();
    
                    } catch (PrinterException e1) {
    
                        e1.printStackTrace();
    
                    }
    
                }
    
            });
    
        }
    
    
    
        /**
    
         * 主方法
    
         *
    
         * @param args
    
         */
    
        public static void main(String[] args) {
    
            new CountStudentsByClassFrame("");
    
        }
    
    }
    

    创建ChangePasswordFrame修改用户密码

    package net.zzk.student.gui;
    
    
    import net.zzk.student.app.Application;
    import net.zzk.student.bean.User;
    import net.zzk.student.service.Impl.UserServiceImpl;
    import net.zzk.student.service.UserService;
    
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    
    /**
     * 功能:修改用户密码
     * 作者:周昭考
     * 日期:2019-7-2
     */
    public class ChangePasswordFrame extends JFrame {
        /**
         * 面板
         */
        private JPanel panel;
        private JPanel pnlRow1;
        private JPanel pnlRow2;
        private JPanel pnlRow3;
        private JPanel pnlRow4;
        private JPanel pnlRow5;
    
        /**
         * 标签
         */
    
        private JLabel lblUsername;
        private JLabel lblPassword;
        private JLabel lblNewPassword1;
        private JLabel lblNewPassword2;
    
        /**
         * 文本框
         */
        private JTextField txtUsername;
        private JPasswordField txtPassword;
        private JPasswordField txtNewPassword1;
        private JPasswordField txtNewPassword2;
    
        /**
         * 按钮
         */
        private JButton btnOK;
        private JButton btnCancel;
    
        /**
         * 用户服务对象
         */
        private UserService userService;
    
        /**
         * 构造方法
         * @param title
         */
        public ChangePasswordFrame(String title) {
            super(title);
            initGUI();
        }
    
        /**
         * 初始化用户界面
         */
        private void initGUI(){
            //创建组件(面板和控件)
            panel = (JPanel) getContentPane();
            pnlRow1 = new JPanel();
            pnlRow2 = new JPanel();
            pnlRow3 = new JPanel();
            pnlRow4 = new JPanel();
            pnlRow5 = new JPanel();
    
            lblUsername = new JLabel("用户名:");
            lblPassword = new JLabel("旧密码:");
            lblNewPassword1 = new JLabel("新密码:");
            lblNewPassword2 = new JLabel("确    认:");
    
            txtUsername = new JTextField(20);
            txtUsername.setEditable(false);
            txtPassword = new JPasswordField(20);
            txtNewPassword1 = new JPasswordField(20);
            txtNewPassword2 = new JPasswordField(20);
    
            btnOK = new JButton("确定[O]");
            btnOK.setMnemonic(KeyEvent.VK_O);
            btnCancel = new JButton("取消[C]");
            btnCancel.setMnemonic(KeyEvent.VK_C);
    
            // 设置大面板布局,添加五个小面板
             panel.setLayout(new GridLayout(5,1));
             panel.add(pnlRow1);
             panel.add(pnlRow2);
             panel.add(pnlRow3);
             panel.add(pnlRow4);
             panel.add(pnlRow5);
    
            // 将控件添加到五个小面板
             pnlRow1.add(lblUsername);
             pnlRow1.add(txtUsername);
    
             pnlRow2.add(lblPassword);
             pnlRow2.add(txtPassword);
             pnlRow3.add(lblNewPassword1);
             pnlRow3.add(txtNewPassword1);
             pnlRow4.add(lblNewPassword2);
             pnlRow4.add(txtNewPassword2);
             pnlRow5.add(btnOK);
             pnlRow5.add(btnCancel);
    
             //设置窗口不可调整大小
             setResizable(false);
             //设置窗口刚好容纳组件
             pack();
             //设置窗口屏幕居中
             setLocationRelativeTo(null);
             //设置窗口标题
             setTitle("修改用户密码");
             //设置窗口可见
             setVisible(true);
             //设置窗口默认关闭操作(卸载当前窗口)
             setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    
             //设置控件属性
            txtUsername.setEditable(false);
            txtUsername.setText(Application.username);
    
             //【取消】按钮单击事件处理
             btnCancel.addActionListener(new ActionListener() {
                 @Override
                 public void actionPerformed(ActionEvent e) {
                    dispose();
                 }
             });
    
    
             //确定按钮单击事件
            btnOK.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    changePassword();
                }
            });
    
    
            // 【确定】按钮按键事件处理
             btnOK.addKeyListener(new KeyAdapter() {
                 @Override
                 public void keyPressed(KeyEvent e) {
                     if (e.getKeyCode() == 10) {
                         changePassword();
                     }
                 }
             });
    
    
             // 用户名文本框按键事件处理
            txtUsername.addKeyListener(new KeyAdapter() {
                @Override
                public void keyPressed(KeyEvent e) {
                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                        txtPassword.requestFocus();
                    }
                }
            });
    
    
            // 【密码】文本框按键事件处理
             txtPassword.addKeyListener(new KeyAdapter() {
                 @Override
                 public void keyPressed(KeyEvent e) {
                     if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                     txtNewPassword1.requestFocus();
                     }
                 }
             });
    
            // 【新密码1】文本框按键事件处理
             txtNewPassword1.addKeyListener(new KeyAdapter() {
                 @Override
                 public void keyPressed(KeyEvent e) {
                     if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                     txtNewPassword2.requestFocus();
                     }
                 }
             });
    
            // 【新密码2】文本框按键事件处理
             txtNewPassword2.addKeyListener(new KeyAdapter() {
                 @Override
                 public void keyPressed(KeyEvent e) {
                     if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                     btnOK.requestFocus();
                     }
                 }
             });
        }
    
        private void changePassword(){
            // 获取用户信息
            int id = Application.id;
            String username = Application.username;
    
            // 保存用户输入的旧密码与两个新密码
             String password = new String(txtPassword.getPassword());
             String newPassword1 = new String(txtNewPassword1.getPassword());
             String newPassword2 = new String(txtNewPassword2.getPassword());
    
            // 创建学生服务对象
            userService = new UserServiceImpl();
    
            if (userService.login(username, password) == null) {
                JOptionPane.showMessageDialog(null,
                        "旧密码错误,请重新输入!",
                        "错误提示", JOptionPane.ERROR_MESSAGE);
                txtPassword.requestFocus();
                txtPassword.selectAll();
            }else if (newPassword1.equals("")) {
                JOptionPane.showMessageDialog(null,
                        "新密码不能为空!",
                        "错误提示",
                        JOptionPane.ERROR_MESSAGE);
                txtNewPassword1.requestFocus();
            }else if (newPassword2.equals("")) {
                JOptionPane.showMessageDialog(null,
                        "确认密码不能为空!",
                        "错误提示",
                        JOptionPane.ERROR_MESSAGE);
                txtNewPassword2.requestFocus();
            }else if (!newPassword1.equals(newPassword2)) {
                JOptionPane.showMessageDialog(null,
                        "两次密码不一致,请重新输入!",
                        "错误提示", JOptionPane.ERROR_MESSAGE);
                txtNewPassword1.setText("");
                txtNewPassword2.setText("");
                txtNewPassword1.requestFocus();
            }else {
                // 按标识符获取用户
                User user = userService.findUserById(id);
                 //修改用户的密码属性
                user.setPassword(newPassword1);
                // 调用用户服务对象的更新方法,更新用户信息
                int count = userService.updateUser(user);
    
                if (count > 0) {
                    JOptionPane.showMessageDialog(null,
                            "密码修改成功!",
                            "设置密码",
                            JOptionPane.INFORMATION_MESSAGE);
                    dispose();
                }else {
                    JOptionPane.showMessageDialog(null,
                            "密码修改失败!",
                            "设置密码",
                            JOptionPane.WARNING_MESSAGE);
                }
            }
        }
        /**
         * *
         * 主方法
         * *
         * * @param args
         * */
        public static void main(String[] args) {
            Application.id = 1;
            Application.username = "周昭考";
            new ChangePasswordFrame("");
        }
    }
    

    创建BrowseStudentsFrame浏览学生记录

    package net.zzk.student.gui;
    
    
    import net.zzk.student.bean.Student;
    import net.zzk.student.service.Impl.StudentServiceImpl;
    import net.zzk.student.service.StudentService;
    
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    
    /**
     * 功能:浏览学生记录
     * 作者:周昭考
     * 日期:2019-7-3
     */
    public class BrowseStudentsFrame extends JFrame {
    
        /**
         ** 声明面板
         **/
        private JPanel panel;
        private JPanel pnlCenter;
        private JPanel pnlRow1;
        private JPanel pnlRow2;
        private JPanel pnlRow3;
        private JPanel pnlRow4;
        private JPanel pnlRow5;
        private JPanel pnlRow6;
        private JPanel pnlRow7;
        private JPanel pnlSouth;
    
        /**
         * 声明标签
         */
        private JLabel lblId;
        private JLabel lblName;
        private JLabel lblSex;
        private JLabel lblAge;
        private JLabel lblDepartment;
        private JLabel lblClass;
        private JLabel lblTelephone;
    
        /**
         * 声明文本框
         */
        private JTextField txtId;
        private JTextField  txtName;
        private JTextField  txtSex;
        private JTextField  txtAge;
        private JTextField  txtDepartment;
        private JTextField  txtClass;
        private JTextField  txtTelephone;
    
        /**
         * 声明按钮
         */
    
        private JButton btnTop;
        private JButton btnPrevious;
        private JButton btnNext;
        private JButton btnBottom;
        private JButton btnExit;
    
        /**
         * 当前记录行号
         */
        private int currentRow;
    
        /**
         * 学生列表
         */
        private List<Student> students;
    
        /**
         * 创建学生服务对象
         */
        StudentService studentService;
    
        /**
         * 构造方法
         * @param title
         */
        public BrowseStudentsFrame(String title) {
            super(title);
            initGUI();
        }
    
    
        /**
         * 初始化用户界面
         */
        private void initGUI() {
            //创建组件
            panel = (JPanel) getContentPane();
            pnlCenter = new JPanel();
            pnlSouth = new JPanel();
    
            pnlRow1 = new JPanel();
            pnlRow2 = new JPanel();
            pnlRow3 = new JPanel();
            pnlRow4 = new JPanel();
            pnlRow5 = new JPanel();
            pnlRow6 = new JPanel();
            pnlRow7 = new JPanel();
    
            pnlRow1.setLayout(new FlowLayout(FlowLayout.LEFT));
            pnlRow2.setLayout(new FlowLayout(FlowLayout.LEFT));
            pnlRow3.setLayout(new FlowLayout(FlowLayout.LEFT));
            pnlRow4.setLayout(new FlowLayout(FlowLayout.LEFT));
            pnlRow5.setLayout(new FlowLayout(FlowLayout.LEFT));
            pnlRow6.setLayout(new FlowLayout(FlowLayout.LEFT));
            pnlRow7.setLayout(new FlowLayout(FlowLayout.LEFT));
    
            lblId = new JLabel("学号:");
            lblName = new JLabel("姓名:");
            lblSex = new JLabel("性别:");
            lblAge = new JLabel("年龄:");
            lblDepartment = new JLabel("系部:");
            lblClass = new JLabel("班级:");
            lblTelephone = new JLabel("电话:");
    
            txtId = new JTextField(40);
            txtName = new JTextField(40);
            txtSex = new JTextField(40);
            txtAge = new JTextField(40);
            txtDepartment = new JTextField(40);
            txtClass = new JTextField(40);
            txtTelephone = new JTextField(40);
            txtId.setEditable(false);
            txtName.setEditable(false);
            txtSex.setEditable(false);
            txtAge.setEditable(false);
            txtDepartment.setEditable(false);
            txtClass.setEditable(false);
            txtTelephone.setEditable(false);
    
            btnTop = new JButton("第一条[T]");
            btnPrevious = new JButton("上一条[P]");
            btnNext = new JButton("下一条[N]");
            btnBottom = new JButton("最后一条[B]");
            btnExit = new JButton("退出[X]");
            btnTop.setMnemonic(KeyEvent.VK_T);
            btnPrevious.setMnemonic(KeyEvent.VK_P);
            btnNext.setMnemonic(KeyEvent.VK_N);
            btnBottom.setMnemonic(KeyEvent.VK_B);
            btnExit.setMnemonic(KeyEvent.VK_X);
    
            //添加组件
            panel.setLayout(new BorderLayout());
            panel.add(pnlCenter, BorderLayout.CENTER);
            panel.add(pnlSouth, BorderLayout.SOUTH);
            pnlCenter.setLayout(new GridLayout(7, 1));
    
            pnlCenter.add(pnlRow1);
            pnlCenter.add(pnlRow2);
            pnlCenter.add(pnlRow3);
            pnlCenter.add(pnlRow4);
            pnlCenter.add(pnlRow5);
            pnlCenter.add(pnlRow6);
            pnlCenter.add(pnlRow7);
    
            pnlRow1.add(lblId);
            pnlRow1.add(txtId);
            pnlRow2.add(lblName);
            pnlRow2.add(txtName);
            pnlRow3.add(lblSex);
            pnlRow3.add(txtSex);
            pnlRow4.add(lblAge);
            pnlRow4.add(txtAge);
            pnlRow5.add(lblDepartment);
            pnlRow5.add(txtDepartment);
            pnlRow6.add(lblClass);
            pnlRow6.add(txtClass);
            pnlRow7.add(lblTelephone);
            pnlRow7.add(txtTelephone);
    
            pnlSouth.add(btnTop);
            pnlSouth.add(btnPrevious);
            pnlSouth.add(btnNext);
            pnlSouth.add(btnBottom);
            pnlSouth.add(btnExit);
    
            // 设置窗口属性
            setSize(500, 300);
            // 设置窗口不可调整大小
            setResizable(false);
            // 设置窗口刚好容纳组件
            pack();
            // 设置窗口屏幕居中
            setLocationRelativeTo(null);
            // 设置窗口可见
            setVisible(true);
            // 设置窗口默认关闭操作(卸载当前窗口)
            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    
            // 创建学生服务对象
            studentService = new StudentServiceImpl();
            // 获取全部学生列表
            students = studentService.findAllStudents();
    
            // 判断是否有学生记录
            if (students.size() > 0) {
                // 设置当前记录号
                currentRow = 1;
                // 设置窗口标题
                setTitle("浏览学生表记录" + " && 当前记录:" + currentRow);
                // 填充窗口各文本框数据
                fillFrameData(currentRow);
            } else {
                JOptionPane.showMessageDialog(null,
                        "表中没有记录!",
                        "浏览学生表记录",
                        JOptionPane.ERROR_MESSAGE);
                btnTop.setEnabled(false);
                btnPrevious.setEnabled(false);
                btnNext.setEnabled(false);
                btnBottom.setEnabled(false);
            }
    
            // 【第一条】按钮单击事件
            btnTop.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    //设置当前记录号
                    currentRow = 1;
                    //填充当前记录数据
                    fillFrameData(currentRow);
                }
            });
    
    
            //上一条,按钮单击事件处理
            btnPrevious.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    if (currentRow > 1) {
                         //设置当前记录号
                         currentRow--;
                         //填充当前记录数据
                         fillFrameData(currentRow);
                    } else {
                         JOptionPane.showMessageDialog(null,
                         "已到第一条记录!",
                         "浏览学生表记录",
                         JOptionPane.WARNING_MESSAGE);
                    }
                }
            });
    
    
            //下一条按钮单击事件处理
            btnNext.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    if (currentRow < students.size() - 1) {
                         //设置当前记录号
                         currentRow++;
                         //填充当前记录数据
                         fillFrameData(currentRow);
                    } else {
                         JOptionPane.showMessageDialog(null,
                         "已到最后一条记录!",
                         "浏览学生表记录",
                         JOptionPane.WARNING_MESSAGE);
                    }
                }
            });
    
    
            //最后一条-按钮单击事件处理
            btnBottom.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                     //设置当前记录号
                     currentRow = students.size() - 1;
                     //填充当前记录数据
                     fillFrameData(currentRow);
                }
            });
    
            //退出按钮单击事件处理
            btnExit.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    dispose();
                }
            });
        }
    
    
        /**
         * 将当前记录数据填充窗口各文本框
         * @param currentRow
         */
        private void fillFrameData (int currentRow){
            if (currentRow > 0) {
                setTitle("浏览学生表记录" + " && 当前记录:" + currentRow);
                txtId.setText(students.get(currentRow).getId());
                txtName.setText(students.get(currentRow).getName());
                txtSex.setText(students.get(currentRow).getSex());
                txtAge.setText(students.get(currentRow).getAge() + "");
                txtDepartment.setText(students.get(currentRow).getDepartment());
                txtClass.setText(students.get(currentRow).getClazz());
                txtTelephone.setText(students.get(currentRow).getTelephone());
            }
        }
    
        /**
         * 主方法
         * @param args
         */
        public static void main(String[] args) {
            new BrowseStudentsFrame("");
        }
    }
    

    创建AddStudentFrame添加学生记录

    package net.zzk.student.gui;
    
    
    import net.zzk.student.bean.Student;
    import net.zzk.student.service.Impl.StudentServiceImpl;
    import net.zzk.student.service.StudentService;
    
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.util.List;
    
    /**
     * 功能:添加学生记录
     * 作者:周昭考
     * 日期:2019-7-3
     */
    public class AddStudentFrame extends JFrame {
        /**
         * 声明面板
         */
        private JPanel panel;
        private JPanel pnlCenter;
        private JPanel pnlRow1;
        private JPanel pnlRow2;
        private JPanel pnlRow3;
        private JPanel pnlRow4;
        private JPanel pnlRow5;
        private JPanel pnlRow6;
        private JPanel pnlRow7;
        private JPanel pnlSouth;
    
        /**
         * 声明标签
         */
        private JLabel lblId;
        private JLabel lblName;
        private JLabel lblSex;
        private JLabel lblAge;
        private JLabel lblDepartment;
        private JLabel lblClass;
        private JLabel lblTelephone;
    
        /**
         * 声明文本框
         */
        private JTextField txtId;
        private JTextField txtName;
        private JTextField txtSex;
        private JTextField txtAge;
        private JTextField txtDepartment;
        private JTextField txtClass;
        private JTextField txtTelephone;
    
    
        /**
         * 声明按钮
         */
        private JButton btnExit;
        private JButton btnOK;
        private JButton btnCancel;
    
    
        /**
         * 当前记录行号
         */
        private int currentRow;
    
        /**
         * 学生列表
         */
        private List<Student> students;
    
        /**
         * 构造方法
         * @param title
         */
        public AddStudentFrame(String title) {
            super(title);
            initGUI();
        }
    
    
        /**
         * 初始化用户界面
         */
        private void initGUI() {
            //创建组件
            panel = (JPanel) getContentPane();
            pnlCenter = new JPanel();
            pnlSouth = new JPanel();
    
            pnlRow1 = new JPanel();
            pnlRow2 = new JPanel();
            pnlRow3 = new JPanel();
            pnlRow4 = new JPanel();
            pnlRow5 = new JPanel();
            pnlRow6 = new JPanel();
            pnlRow7 = new JPanel();
    
            pnlRow1.setLayout(new FlowLayout(FlowLayout.LEFT));
            pnlRow2.setLayout(new FlowLayout(FlowLayout.LEFT));
            pnlRow3.setLayout(new FlowLayout(FlowLayout.LEFT));
            pnlRow4.setLayout(new FlowLayout(FlowLayout.LEFT));
            pnlRow5.setLayout(new FlowLayout(FlowLayout.LEFT));
            pnlRow6.setLayout(new FlowLayout(FlowLayout.LEFT));
            pnlRow7.setLayout(new FlowLayout(FlowLayout.LEFT));
    
            lblId = new JLabel("学号:");
            lblName = new JLabel("姓名:");
            lblSex = new JLabel("性别:");
            lblAge = new JLabel("年龄:");
            lblDepartment = new JLabel("系部:");
            lblClass = new JLabel("班级:");
            lblTelephone = new JLabel("电话:");
    
            txtId = new JTextField(20);
            txtName = new JTextField(20);
            txtSex = new JTextField(20);
            txtAge = new JTextField(20);
            txtDepartment = new JTextField(20);
            txtClass = new JTextField(20);
            txtTelephone = new JTextField(20);
            btnOK = new JButton("确定[O]");
            btnCancel = new JButton("取消[C]");
            btnExit = new JButton("退出[X]");
            btnOK.setMnemonic(KeyEvent.VK_O);
            btnCancel.setMnemonic(KeyEvent.VK_C);
            btnExit.setMnemonic(KeyEvent.VK_X);
    
            // 添加组件
             panel.setLayout(new BorderLayout());
             panel.add(pnlCenter, BorderLayout.CENTER);
             panel.add(pnlSouth, BorderLayout.SOUTH);
             pnlCenter.setLayout(new GridLayout(7, 1));
             pnlCenter.add(pnlRow1);
             pnlCenter.add(pnlRow2);
             pnlCenter.add(pnlRow3);
             pnlCenter.add(pnlRow4);
             pnlCenter.add(pnlRow5);
             pnlCenter.add(pnlRow6);
             pnlCenter.add(pnlRow7);
    
            pnlRow1.add(lblId);
            pnlRow1.add(txtId);
            pnlRow2.add(lblName);
            pnlRow2.add(txtName);
            pnlRow3.add(lblSex);
            pnlRow3.add(txtSex);
            pnlRow4.add(lblAge);
            pnlRow4.add(txtAge);
            pnlRow5.add(lblDepartment);
            pnlRow5.add(txtDepartment);
            pnlRow6.add(lblClass);
            pnlRow6.add(txtClass);
            pnlRow7.add(lblTelephone);
            pnlRow7.add(txtTelephone);
    
            pnlSouth.add(btnOK);
            pnlSouth.add(btnCancel);
            pnlSouth.add(btnExit);
    
            //设置窗口属性
             setSize(500, 300);
            //设置窗口不可调整大小
             setResizable(false);
            //设置窗口刚好容纳组件
             pack();
            //设置窗口屏幕居中
             setLocationRelativeTo(null);
            //设置窗口标题
             setTitle("添加学生记录");
            //设置窗口可见
             setVisible(true);
            //设置窗口默认关闭操作(卸载当前窗口)
             setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    
    
             //确定按钮单击事件
            btnOK.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                     //学号非空校验
                     if (txtId.getText().trim().equals("")) {
                         JOptionPane.showMessageDialog(null,
                         "学号不能为空!", "增加学生记录",
                         JOptionPane.WARNING_MESSAGE);
                         txtId.requestFocus();
                         return;
                     }
    
                    // 年龄数字校验
                     if (!isNumber(txtAge.getText().trim())) {
                         JOptionPane.showMessageDialog(null,
                         "注意:年龄全由数字构成!", "增加学生记录",
                         JOptionPane.WARNING_MESSAGE);
                         txtAge.setText("");
                         txtAge.requestFocus();
                         return;
                     }
    
                     //创建学生实体
                     Student student = new Student();
                     //设置学生实体属性
                     student.setId(txtId.getText().trim());
                     student.setName(txtName.getText().trim());
                     student.setSex(txtSex.getText().trim());
                     student.setAge(Integer.parseInt(txtAge.getText()));
                     student.setDepartment(txtDepartment.getText().trim());
                     student.setClazz(txtClass.getText().trim());
                     student.setTelephone(txtTelephone.getText().trim());
    
                    // 创建学生服务对象
                     StudentService studentService = new StudentServiceImpl();
                    // 添加学生记录
                     int count = studentService.addStudent(student);
    
                    // 判断是否添加成功
                     if (count > 0) {
                         JOptionPane.showMessageDialog(null,
                         "添加记录成功!",
                         "增加学生记录",
                         JOptionPane.INFORMATION_MESSAGE);
                         txtId.setText("");
                         txtName.setText("");
                         txtSex.setText("");
                         txtAge.setText("");
                         txtDepartment.setText("");
                         txtClass.setText("");
                         txtTelephone.setText("");
                         txtId.requestFocus();
                     } else {
                         JOptionPane.showMessageDialog(null,
                         "添加记录失败!",
                         "增加学生记录",
                         JOptionPane.ERROR_MESSAGE);
                     }
                }
            });
    
    
            // 【取消】按钮单击事件处理
            btnCancel.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    txtId.setText("");
                    txtName.setText("");
                    txtSex.setText("");
                    txtAge.setText("");
                    txtDepartment.setText("");
                    txtClass.setText("");
                    txtTelephone.setText("");
                    txtId.requestFocus();
                }
            });
    
            // 【退出】按钮单击事件处理
            btnExit.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    dispose();
                }
            });
    
             //学号】文本框按键事件处理
             txtId.addKeyListener(new KeyAdapter() {
                 @Override
                 public void keyPressed(KeyEvent e) {
                     if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                         if (!txtId.getText().trim().equals("")) {
                         txtName.requestFocus();
                         }
                     }
                }
             });
    
            // 【姓名】文本框按键事件处理
            txtName.addKeyListener(new KeyAdapter() {
                @Override
                public void keyPressed(KeyEvent e) {
                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                        txtSex.requestFocus();
                    }
                }
            });
    
            // 【性别】文本框按键事件处理
            txtSex.addKeyListener(new KeyAdapter() {
                @Override
                public void keyPressed(KeyEvent e) {
                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                        txtAge.requestFocus();
                    }
                }
            });
    
    
            // 【年龄】文本框按键事件处理
            txtAge.addKeyListener(new KeyAdapter() {
                @Override
                public void keyPressed(KeyEvent e) {
                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                        txtDepartment.requestFocus();
                    }
                }
            });
    
    
            // 【系部】文本框按键事件处理
            txtDepartment.addKeyListener(new KeyAdapter() {
                @Override
                public void keyPressed(KeyEvent e) {
                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                        txtClass.requestFocus();
                    }
                }
            });
    
    
            // 【班级】文本框按键事件处理
            txtClass.addKeyListener(new KeyAdapter() {
                @Override
                public void keyPressed(KeyEvent e) {
                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                        txtTelephone.requestFocus();
                    }
                }
            });
        }
    
        /**
         * 判断一个字符串是否全是数字
         * @param str
         * @return
         */
        boolean isNumber(String str) {
            for (int i = 0; i < str.length(); i++) {
                if (str.charAt(i) < '0' || str.charAt(i) > '9') {
                    return false;
                }
            }
            return true;
        }
    
        /**
         * 主方法
         * @param args
         */
        public static void main(String[] args) {
            new AddStudentFrame("");
        }
    }
    

    然后运行LoginFrame窗体就可以了
    最后是整个结构

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 学生管理系统

    2020-02-29 20:05:01
    学生管理系统 步骤: 先写 login.jsp , 并且搭配一个LoginServlet 去获取登录信息。 在数据库中创建用户表, 里面只要有id , username 和 password 创建UserDao, 定义登录的方法 /** * 该dao定义了对用户表的...

    学生管理系统

    在这里插入图片描述

    步骤:

    1. 先写 login.jsp , 并且搭配一个LoginServlet 去获取登录信息。
    2. 在数据库中创建用户表, 里面只要有id , username 和 password
    3. 创建UserDao, 定义登录的方法
     	/**
         * 该dao定义了对用户表的访问规则
         */
            public interface UserDao {
    
             /**
             * 这里简单就返回一个Boolean类型, 成功或者失败即可。
             * ​
             * 但是开发的时候,登录的方法,一旦成功。这里应该返回该用户的个人信息
             * @param userName 
             * @param password
             * ​
             * @return true : 登录成功, false : 登录失败。
             */
             boolean login(String userName , String password);
                }
    
    1. 创建UserDaoImpl , 实现刚才定义的登录方法。
    public class UserDaoImpl implements UserDao {
    		@Override
    		public boolean login(String userName , String password) {
    				
    			Connection conn = null;
    			PreparedStatement ps = null;
    			ResultSet rs   = null;
    			try {
    				//1. 得到连接对象
    				conn = JDBCUtil.getConn();
    					
    				String sql = "select * from t_user where username=? and password=?";
    					
    				//2. 创建ps对象
    				ps = conn.prepareStatement(sql);
    				ps.setString(1, userName);
    				ps.setString(2, password);
    
    				//3. 开始执行。
    				rs = ps.executeQuery();
    					
    				//如果能够成功移到下一条记录,那么表明有这个用户。 
    				return rs.next();
    					
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}finally {
    				JDBCUtil.release(conn, ps, rs);
    			}
    			return false;
    		}
    	}
    
    1. 在LoginServlet里面访问UserDao, 判断登录结果。 以区分对待
    2. 创建stu_list.jsp , 让登录成功的时候跳转过去。
    3. 创建学生表 , 里面字段随意。
    4. 定义学生的Dao . StuDao
    public interface StuDao {
    /**
    * 查询出来所有的学生信息
    * @return List集合
    */
    	List<Student> findAll();
    }
    
    1. 对上面定义的StuDao 做出实现 StuDaoImpl
    public class StuDaoImpl implements StuDao {
    
       	@Override
       	public List<Student> findAll() {
       		List<Student> list = new ArrayList<Student>();
       		Connection conn = null;
       		PreparedStatement ps = null;
       		ResultSet rs   = null;
       		try {
       			//1. 得到连接对象
       			conn = JDBCUtil.getConn();
       				
       			String sql = "select * from t_stu";
       				
       			ps = conn.prepareStatement(sql);
       				
       			rs = ps.executeQuery();
       ​			
       			//数据多了,用对象装, 对象也多了呢? 用集合装。 
       			while(rs.next()){ //10 次 ,10个学生
       					
       				Student stu = new Student();
       					
       				stu.setId(rs.getInt("id"));
       				stu.setAge(rs.getInt("age"));
       				stu.setName(rs.getString("name"));
       				stu.setGender(rs.getString("gender"));
       				stu.setAddress(rs.getString("address"));
       					
       				list.add(stu);		
       			}
       		} catch (SQLException e) {
       			e.printStackTrace();
       		}finally {
       			JDBCUtil.release(conn, ps, rs);
       		}
       			return list;
       		}
       	} 
    
    1. 在登录成功的时候,完成三件事情。
    2. 查询所有的学生。
    1. 把这个所有的学生集合存储到作用域中。
    2. 跳转到stu_list.jsp
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    	//提交的数据有可能有中文, 怎么处理。
    	request.setCharacterEncoding("UTF-8");
    	response.setContentType("text/html;charset=utf-8");
    			
    	//1. 获取客户端提交的信息
    	String userName = request.getParameter("username");
    	String password = request.getParameter("password");
    			
    	//2. 去访问dao , 看看是否满足登录。
    	UserDao dao = new UserDaoImpl();
    	boolean isSuccess = dao.login(userName, password);
    			
    	//3. 针对dao的返回结果,做出响应
    	if(isSuccess){
    		//response.getWriter().write("登录成功.");
    				
    		//1. 查询出来所有的学生信息。
    		StuDao stuDao = new StuDaoImpl();
    		List<Student> list = stuDao.findAll();
    				
    		//2. 先把这个集合存到作用域中。
    		request.getSession().setAttribute("list", list);
    				
    		//2. 重定向
    		response.sendRedirect("stu_list.jsp");
    				
    	}else{
    		response.getWriter().write("用户名或者密码错误!");
    	}
    }
    
    1. 在stu_list.jsp中,取出域中的集合,然后使用c标签 去遍历集合。
    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
        
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>学生管理系统</title>
    </head>
    <body>
    		<br>学生列表<br>
    		
    		<table border="1" width="700">
    			<tr>
    				<td>编号</td>
    				<td>姓名</td>
    				<td>年龄</td>
    				<td>性别</td>
    				<td>住址</td>
    			</tr>
    			
    			<c:forEach items="${list }" var="stu">
    			<tr>
    				<td>${stu.id }</td>
    				<td>${stu.name }</td>
    				<td>${stu.age }</td>
    				<td>${stu.gender }</td>
    				<td>${stu.address }</td>
    				<td><a href="#">更新</a>  <a href="#">删除</a></td>
    			</tr>
    			</c:forEach>
    		</table>
    </body>
    </html>
    
    展开全文
  • 学生管理系统 增删改查

    千次阅读 多人点赞 2019-02-07 15:49:22
    学生管理系统 步骤如下: A:定义学生类 B:学生管理系统的主界面的代码编写 C:学生管理系统的查看所有学生的代码编写 D:学生管理系统的添加学生的代码编写 E:学生管理系统的删除学生的代码编写 F:学生管理系统的修改...
  • 农工商职业技术学院实验报告 实验人 _ 同组人 _ 班级 _ 指导老师 _ 1 实验题目 学生管理系统 2 实验目的 掌握实际开发的步骤 能够熟练开发和学生管理系统相类似的系统 掌握 Java 中的界面开发 掌握 Java 中如何连接...
  • 增加信息 def add_info(self): # id 不能重复 # 成绩不能超出范围 name = input('姓名:') std_id = input('学生id:') while not self.unique_id(std_id=std_id): print('id重复') std_id = input('学生id:') ...
  • 学生管理系统项目

    千次阅读 2019-07-09 19:36:11
    步骤如下: ...(2)学生管理系统的主界面的代码编写 (3)学生管理系统查看所有学生的代码编写 (4)学生管理系统添加学生的代码编写 (5)学生管理系统删除的代码编写 (6)学生管理系统修改的代码编写
  • 实用标准文案 农工商职业技术学院实验报告 实验人 _ 同组人 _ 班级 _ 指导老师 _ 1 实验题目 学生管理系统 2 实验目的 掌握实际开发的步骤 能够熟练开发和学生管理系统相类似的系统 掌握 Java 中的界面开发 掌握 ...
  • 这里写自定义目录标题实现步骤步骤一:创建Java项目步骤二:在项目文件中创建文件夹步骤三: 在lib...在Intellij IDEA中创建Java项目,并命名为GUI学生管理系统 步骤二:在项目文件中创建文件夹 在项目文件idea中创建h
  • JAVA学生管理系统

    2021-02-13 20:37:38
    2.1 学生管理系统实现步骤 案例需求 ​ 针对目前我们的所学内容,完成一个综合案例:学生管理系统!该系统主要功能如下: ​ 添加学生:通过键盘录入学生信息,添加到集合中 ​ 删除学生:通过键盘录入要删除学生...
  • 具体操作步骤: 1、建立 student 数据库 2、创建对应的四个数据表(t_college,t_status,t_student,t_user) 1、t_college表 2、t_status表 3、student表 4、user表 3、填入相应的数据 (1)college (2)status ...
  • Qt学生管理系统.zip

    2020-04-02 15:57:39
    本人的学习笔记,python的Qt开发,学生成绩管理系统源码。Qt学生管理系统.zip作为存档使用。后续可能会上传步骤参考。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 649
精华内容 259
关键字:

学生管理系统步骤