第一天:
————————————————————————————————————————————————————————————————————
一:首先创建一个名为student的MySQL数据库,里面包含四张表:
t_college:学院信息
t_status:系统信息
t_student:学生信息
t_user:用户信息
以下为四张表分别的数据:
二:在“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)