学号 ********Java程序设计实验报告数据库连接实现查询学生姓名苗莉萍专业、班级12计算机12班指导教师成绩计算机与信息工程学院2013 年 7 月 4 日一.实验名称:数据库连接实现查询二.实验目的与环境:环境:Eclipse8.0。
目的:图形界面设计---熟悉java.awt包中的组件,掌握图形界面设计方法,理解委托事件处理模型。
编写一个简单的java连接数据库程序,掌握Java语言的程序设计的能力,程序有合理的界面设计,能够在界面中实现对记录进行的录入,增添新的记录,实现上一页,下一页以及最后一页查询等,实现删除和修改等功能。
并且能够顺利关闭界面,退出程序。
(1)掌握Java语言的程序设计方法;(2)理论联系实际,进一步提高学生的软件开发技术;(3)培养学生分析、解决问题的能力;三.实验要求:(1)设计图形界面添加菜单:窗口上添加各种组件及菜单,并处理组件及菜单的事件监听程序。
(2)熟悉JAVA开发环境,掌握JAVA程序的编译和运行;(3)掌握JAVA基本编程技术和方法;(4)掌握GUI图形界面编程技术;(5)了解异常处理机制。
四.设计步骤:1:界面设计创建一个登录名和登录密码,实现用户的登录。
2:功能设计对每个菜单项进行注册监听。
点击四个按钮时时,显示不同记录数据。
3.对数据库进行查询,方便用户查找记录并且及时进行修改。
4.熟练掌握对话框及框架的布局,当添加一新记录时,跳出对话框,填写数据,并显示添加成功。
5.在窗口上方,有四个button按钮,分别是首页,上一页,下一页,最后一页,程序源代码:package com.group.view;import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import java.util.Vector;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import com.group.db.OperateDB;import com.group.function.Mytable;/*在actionListener 中不能传递当前对象*/public class MainFrame extends JFrame {private JButton jb_firstp;private JButton jb_frontp;private JButton jb_behindp;private JButton jb_lastp;private JButton jb_add;private JButton jb_edit;private JButton jb_delete;private JPanel jp_north;private JPanel jp_south;private JScrollPane sp;private JTable jtable;private int page;public MainFrame() {super("操作界面");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);initGUI();}void initGUI() {jp_north = new JPanel();this.add(jp_north, new BorderLayout().NORTH);jb_firstp = new JButton("最前一页");jb_firstp.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {page = 0;refresh(page);}});jp_north.add(jb_firstp);jb_frontp = new JButton("前一页");jb_frontp.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {if(page == 0) {JOptionPane.showMessageDialog(null, "这已经是第一页了!");} else {page --;refresh(page * 3);}}});jp_north.add(jb_frontp);jb_behindp = new JButton("后一页");jb_behindp.addActionListener(new ActionListener() {int num=0;public void actionPerformed(ActionEvent e) {page ++;try {if(OperateDB.selectNum()%3 == 0) {num = OperateDB.selectNum() / 3;} else {num = OperateDB.selectNum() / 3 + 1;}} catch (SQLException e1) {e1.printStackTrace();}if(page >= num) {JOptionPane.showMessageDialog(null, "已经是最后一页了!");} else {refresh(page * 3);}}});jp_north.add(jb_behindp);jb_lastp = new JButton("最后一页");jb_lastp.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {try {page = OperateDB.selectNum() / 3;refresh((page*3));//System.out.println(page);} catch (SQLException e1) {e1.printStackTrace();}}});jp_north.add(jb_lastp);jp_south = new JPanel();this.add(jp_south, new BorderLayout().SOUTH);jb_add = new JButton("添加");final AddFrame af = new AddFrame(this);jb_add.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {af.setVisible(true);}});jp_south.add(jb_add);jb_edit = new JButton("编辑");jp_south.add(jb_edit);jb_delete = new JButton("删除");jb_delete.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {boolean flag = true;int row = jtable.getSelectedRow();//int column = jtable.getSelectedColumn();int id = (Integer) jtable.getValueAt(row, 0);int option = JOptionPane.showConfirmDialog(null, "确定删除编号为:"+id+"的用户数据吗?", "消息提示", JOptionPane.OK_CANCEL_OPTION);if(option == JOptionPane.OK_OPTION) {try {OperateDB.deleteUserById(id);} catch (SQLException e1) {flag = false;e1.printStackTrace();}if(flag) {JOptionPane.showMessageDialog(null, "删除成功!");refresh(0);} else {JOptionPane.showMessageDialog(null, "删除失败!");}} else {}}});jp_south.add(jb_delete);sp = new JScrollPane();this.add(sp, new BorderLayout().CENTER);setBounds(300, 200, 400, 450);this.setVisible(true);refresh(page);final EditFrame ef = new EditFrame(this, jtable);jb_edit.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {ef.setJtable(jtable);ef.setTextInit();ef.setVisible(true);}});}//jscrollpane 显示用户数据public void refresh(int page) {Vector<Object> result = new Vector();try {result = OperateDB.selectAll(page);} catch (SQLException e) {e.printStackTrace();}Mytable table = new Mytable(result);jtable = new JTable(table);sp.getViewport().add(jtable);}public static void main(String[] args) throws SQLException {MainFrame mf = new MainFrame();}}六、实验心得通过本次实验,编写一个简单的java连接数据库程序,实现简单的增、删、改、查功能,让我对java程序有了进一步的理解,熟悉了java.awt包中的组件,掌握图形界面设计方法,理解委托事件处理模型。