资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Java

JAVA 实验三 数据库编程

Java 更新时间: 发布时间: 计算机考试归档 最新发布

实验任务:

编程管理学生数据。要求:

1. 自选数据库管理系统创建数据库stu,按照下表的结构创建"student"表:

字段名

Java数据类型

宽度

SQL数据类型

id

int

10

int

Name

String

20

Char(20)

Sex

String

2

Char(2)

Age

Int

3

Integer

假设表中已有3个学生的数据:

id

Name

Sex

Age

1

张小明

18

2

李雷

19

3

韩梅梅

18

2. 设计图形用户界面,通过事件处理实现学生数据管理功能。

3. 用恰当的方法处理可能出现的异常。

4. 将数据表stu及其数据操作封装成类,将数据操作功能封装成类的方法,通过该类,借助图形用户界面实现下面功能:

(1)向表中增加记录并显示增加后的所有记录(新增记录的具体数据自定);

(2)从表中删除id=1的记录,并显示删除后的所有记录;

(3)修改表中记录:查询条件id=2,将name修改为:王杰,修改完毕显示所有记录;

(4)查询表中id=3的记录并显示。

四、实验要求

1. 程序要添加适当的注释,程序的书写要采用缩进格式。

2. 程序要具备一定的健壮性,即当输入数据非法时,程序也能适当地做出反应,如插入删除时指定的位置不对等等。

3. 程序要做到界面友好,在程序运行时用户可以根据相应的提示信息进行操作。

4. 提交源程序和实验报告。实验报告命名为:学号姓名实验n.doc,如541713460101白坤鹏-实验1.doc。所有源程序压缩为一个文件,按以下方式命名:学号姓名实验n.rar,如541713460101白坤鹏-实验1.rar。将541713460101白坤鹏-实验1.doc和541713460101白坤鹏-实验1.rar均上传到对应的文件夹中。

代码模块:

由于我是将每一个java类都分开写了,所以看起来很多,但里面有很多都可以复制粘贴。

当然可以写一起,不过看起来不好看,凑活着看吧,嘿嘿。

先看Student类(里面是封装的一些方法)

先声明一下,想要链接数据库的话,要有比如mysql-connector-j-8.0.33.jar这个jar包,

当然jar包的版本越新越好,下面是链接:

https://dev.mysql.com/downloads/connector/j/

package 实验三;import java.sql.*;import java.util.ArrayList;import java.util.List;public class Student {    private int id;    private String name;    private String sex;    private int age;    public Student() {    }    public Student(int id, String name, String sex, int age) {        this.id = id;        this.name = name;        this.age = age;        this.sex = sex;    }    public int getId() {        return id;    }    public String getName() {        return name;    }    public int getAge() {        return age;    }    public String getSex() {        return sex;    }    public static List getAll() throws SQLException {        List students = new ArrayList<>();        Connection conn = null;        try {            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/stu", "root", "123456");            PreparedStatement stmt = conn.prepareStatement("SELECt * FROM student");            ResultSet rs = stmt.executeQuery();            while (rs.next()) {                int id = rs.getInt("id");                String name = rs.getString("Name");                String sex = rs.getString("Sex");                int age = rs.getInt("Age");                Student student = new Student(id, name, sex, age);                students.add(student);            }        } finally {            if (conn != null) conn.close();        }        return students;    }    public static void add(Student student) throws SQLException {        Connection conn = null;        try {            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/stu", "root", "123456");            PreparedStatement stmt = conn.prepareStatement("INSERT INTO student VALUES (?, ?, ?, ?)");            stmt.setInt(1, student.getId());            stmt.setString(2, student.getName());            stmt.setString(3, student.getSex());            stmt.setInt(4, student.getAge());            stmt.executeUpdate();        } finally {            if (conn != null) conn.close();        }    }    public static void delete(int id) throws SQLException {        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/stu", "root", "123456");        PreparedStatement stmt = conn.prepareStatement("DELETE FROM student WHERe id = ?");        stmt.setInt(1, id);        stmt.executeUpdate();        if (conn != null) conn.close();    }    public static void update(int id, String name,String sex,int age) throws SQLException {        Connection conn=null;        try {            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/stu", "root", "123456");            PreparedStatement stmt = conn.prepareStatement("UPDATE student SET name = ?,sex = ?,age = ? WHERe id = ?");            stmt.setString(1, name);            stmt.setString(2, sex);            stmt.setInt(3, age);            stmt.setInt(4, id);            stmt.executeUpdate();        } finally {                if (conn != null) conn.close();            }    }    public static Student get(int id) throws SQLException {        Student student=null;        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/stu", "root", "123456");            PreparedStatement stmt = conn.prepareStatement("SELECT * FROM student WHERe id = ?");            stmt.setInt(1, id);            ResultSet rs = stmt.executeQuery();            if (rs.next()) {                String name = rs.getString("Name");                String sex = rs.getString("Sex");                int age = rs.getInt("Age");                student = new Student(id, name, sex, age);            }            if (conn != null) conn.close();        return student;    }}

GUI界面的代码:

package 实验三;import javax.imageio.ImageIO;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.image.BufferedImage;import java.io.IOException;import java.net.URL;public class userJFrame extends JFrame implements ActionListener {    //文本框    JLabel label=new JLabel("请输入想要执行的操作");    //按钮    JButton addButton=new JButton("添加");    JButton deleteButton=new JButton("删除");    JButton alterButton=new JButton("修改");    JButton findButton=new JButton("查询");    JButton shutButton=new JButton("关闭");    public userJFrame() {        //初始化界面        initJFrame();        //初始化内容        initView();        //使界面显示出来        this.setVisible(true);    }    private void initView() {        //添加文本框        label.setBounds(180,0,400,200);        label.setForeground(Color.red);        label.setFont(label.getFont().deriveFont(32f));        this.getContentPane().add(label);        //添加按钮        addButton.setBounds(280,180,150,50);        addButton.addActionListener(this);        this.getContentPane().add(addButton);        deleteButton.setBounds(280,240,150,50);        deleteButton.addActionListener(this);        this.getContentPane().add(deleteButton);        alterButton.setBounds(280,300,150,50);        alterButton.addActionListener(this);        this.getContentPane().add(alterButton);        findButton.setBounds(280,360,150,50);        findButton.addActionListener(this);        this.getContentPane().add(findButton);        shutButton.setBounds(280,420,150,50);        shutButton.addActionListener(this);        this.getContentPane().add(shutButton);        //添加背景图片        try {            URL url = new URL("http://www.quxuehao.com/file/tupian/20230516/thumb_720_auto_202102282154171163.jpg");            BufferedImage image = ImageIO.read(url);            JLabel background = new JLabel(new ImageIcon(image));            background.setBounds(0, 0, 720, 510);            this.getContentPane().add(background);        } catch (IOException e) {            e.printStackTrace();        }    }    private void initJFrame() {        //先设置标题        this.setTitle("学生信息管理系统");        //设置宽高        this.setSize(735,555);        //设置点击窗口“关闭”按钮时,关闭窗口        this.setDefaultCloseOperation(3);        //居中位置出现        this.setLocationRelativeTo(null);        //窗口布局方式        this.setLayout(null);//这里我选择默认自定义布局    }    @Override    public void actionPerformed(ActionEvent e) {        if (e.getSource()==addButton){            System.out.println("点击了添加");            //打开新的界面            //在该界面中进行各项操作            new addButtonView();        }else if(e.getSource()==deleteButton){            System.out.println("点击了删除");            //打开新的界面            //在该界面中进行各项操作            new deleteButtonView();        }else if(e.getSource()==alterButton){            System.out.println("点击了修改");            //打开新的界面            //在该界面中进行各项操作            new alterButtonView();        }else if(e.getSource()==findButton){            System.out.println("点击了查找");            //打开新的界面            //在该界面中进行各项操作            new findButtonView();        }else if(e.getSource()==shutButton){            System.out.println("点击了关闭");            System.exit(0);//直接关闭虚拟机即可        }    }    public static void main(String[] args) {        new userJFrame();//创建GUI图形化界面    }}

添加界面:

package 实验三;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.SQLException;import java.util.List;public class addButtonView extends JFrame implements ActionListener {    //标签    JLabel jLabel1 = new JLabel("请输入想要添加的信息");    JLabel jLabel2 = new JLabel("id(字段名):");    JLabel jLabel3 = new JLabel("name(姓名):");    JLabel jLabel4 = new JLabel("sex(姓别):");    JLabel jLabel5 = new JLabel("int(年龄):");    //文本框    JTextField jTextField1 = new JTextField();    JTextField jTextField2 = new JTextField();    JTextField jTextField3 = new JTextField();    JTextField jTextField4 = new JTextField();    //按钮    JButton jButton1 = new JButton("添加");    //文本区域    JTextArea displayArea= new JTextArea(5, 10);    JScrollPane scrollPane = new JScrollPane(displayArea);    public addButtonView()  {        //初始化界面        initJFrame();        //初始化内容        initView();        //使界面显示出来        this.setVisible(true);    }    private void initView() {        //添加标签        //颜色        jLabel1.setForeground(Color.red);        //字号大小        jLabel1.setFont(jLabel1.getFont().deriveFont(16f));        JPanel panel1 = new JPanel(new GridLayout(1, 1));        panel1.add(jLabel1);        this.getContentPane().add(panel1,BorderLayout.NORTH);        //字号大小与添加文本框        JPanel panel2 = new JPanel(new GridLayout(9, 1,2,2));        jLabel2.setFont(jLabel2.getFont().deriveFont(14f));        jLabel3.setFont(jLabel3.getFont().deriveFont(14f));        jLabel4.setFont(jLabel4.getFont().deriveFont(14f));        jLabel5.setFont(jLabel5.getFont().deriveFont(14f));        panel2.add(jLabel2);panel2.add(jTextField1);        panel2.add(jLabel3);panel2.add(jTextField2);        panel2.add(jLabel4);panel2.add(jTextField3);        panel2.add(jLabel5);panel2.add(jTextField4);        this.getContentPane().add(panel2,BorderLayout.CENTER);        //添加按钮        jButton1.addActionListener(this);        panel2.add(jButton1);        this.getContentPane().add(panel2,BorderLayout.CENTER);        //添加文本区域        this.getContentPane().add(scrollPane,BorderLayout.SOUTH);        //让弹框展示出来        this.setVisible(true);    }    //界面    public void initJFrame() {        //设置标题        this.setTitle("查找");        //给界面设置大小        this.setSize(400,350);        //让界面置顶        this.setAlwaysOnTop(true);        //让界面居中        this.setLocationRelativeTo(null);        //界面不关闭永远无法操作下面的界面        //this.setModal(true);        //窗口布局方式        this.setLayout(new BorderLayout());    }    @Override    public void actionPerformed(ActionEvent e) {        try {            if(e.getSource()==jButton1){                System.out.println("点击了添加");                int id = Integer.parseInt(jTextField1.getText().trim());                String name = jTextField2.getText().trim();                String sex = jTextField3.getText().trim();                int age = Integer.parseInt(jTextField4.getText().trim());                Student student = new Student(id, name, sex, age);                Student.add(student);                displayAll();            }        }  catch (NumberFormatException ex) {            JOptionPane.showMessageDialog(this, "请输入正确的数字格式!", "错误", JOptionPane.ERROR_MESSAGE);        } catch (SQLException ex) {            JOptionPane.showMessageDialog(this, "数据库操作有误!", "错误", JOptionPane.ERROR_MESSAGE);        }    }    private void displayAll() throws SQLException {        List students = Student.getAll();        displayArea.setText("");        for (Student student : students) {            displayArea.append("id: " + student.getId() + "nname: " + student.getName() + "nsex: " + student.getSex() + "nage: " + student.getAge() + "nn");        }    }}

删除界面:

package 实验三;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.SQLException;import java.util.List;public class deleteButtonView extends JFrame implements ActionListener {    //标签    JLabel jLabel1 = new JLabel("请输入想要删除的字段名");    JLabel jLabel2 = new JLabel("id(字段名):");    //文本框    JTextField jTextField1 = new JTextField();    //按钮    JButton jButton1 = new JButton("删除");    //文本区域    JTextArea displayArea= new JTextArea(10, 20);    JScrollPane scrollPane = new JScrollPane(displayArea);    public deleteButtonView()  {        //初始化界面        initJFrame();        //初始化内容        initView();        //使界面显示出来        this.setVisible(true);    }    private void initView() {        //添加标签        //颜色        jLabel1.setForeground(Color.red);        //字号大小        jLabel1.setFont(jLabel1.getFont().deriveFont(16f));        JPanel panel1 = new JPanel(new GridLayout(1, 1));        panel1.add(jLabel1);        this.getContentPane().add(panel1,BorderLayout.NORTH);        //字号大小        JPanel panel2 = new JPanel(new GridLayout(3, 1,2,2));        jLabel2.setFont(jLabel2.getFont().deriveFont(14f));        panel2.add(jLabel2);        panel2.add(jTextField1);        jButton1.addActionListener(this);        panel2.add(jButton1);        this.getContentPane().add(panel2,BorderLayout.CENTER);        //添加文本区域        this.getContentPane().add(scrollPane,BorderLayout.SOUTH);        //让弹框展示出来        this.setVisible(true);    }    //界面    public void initJFrame() {        //设置标题        this.setTitle("删除");        //给界面设置大小        this.setSize(400,350);        //让界面置顶        this.setAlwaysOnTop(true);        //让界面居中        this.setLocationRelativeTo(null);        //界面不关闭永远无法操作下面的界面        //this.setModal(true);        //窗口布局方式        this.setLayout(new BorderLayout());    }    @Override    public void actionPerformed(ActionEvent e) {        try {            if(e.getSource()==jButton1){                System.out.println("点击了删除");                int id = Integer.parseInt(jTextField1.getText().trim());                Student.delete(id);                displayAll();            }        } catch (SQLException e1) {            e1.printStackTrace();        }    }    private void displayAll() throws SQLException {        List students = Student.getAll();        displayArea.setText("");        for (Student student : students) {            displayArea.append("id: " + student.getId() + "nname: " + student.getName() + "nsex: " + student.getSex() + "nage: " + student.getAge() + "nn");        }    }}

修改界面:

package 实验三;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.SQLException;import java.util.List;public class alterButtonView extends JFrame implements ActionListener {    //标签    JLabel jLabel1 = new JLabel("请输入想要修改的字段名的信息");    JLabel jLabel2 = new JLabel("id(字段名):");    JLabel jLabel6 = new JLabel("请输入想要修改的信息");    JLabel jLabel3 = new JLabel("name(名字):");    JLabel jLabel4 = new JLabel("sex(姓别):");    JLabel jLabel5 = new JLabel("int(年龄):");    //文本框    JTextField jTextField1 = new JTextField();    JTextField jTextField2 = new JTextField();    JTextField jTextField3 = new JTextField();    JTextField jTextField4 = new JTextField();    //按钮    JButton jButton1 = new JButton("修改");    //文本区域    JTextArea displayArea= new JTextArea(5, 10);    JScrollPane scrollPane = new JScrollPane(displayArea);    public alterButtonView()  {        //初始化界面        initJFrame();        //初始化内容        initView();        //使界面显示出来        this.setVisible(true);    }    private void initView() {        //添加标签        //颜色        jLabel1.setForeground(Color.red);        jLabel6.setForeground(Color.red);        //字号大小        jLabel1.setFont(jLabel1.getFont().deriveFont(16f));        JPanel panel1 = new JPanel(new GridLayout(1, 1));        panel1.add(jLabel1);        this.getContentPane().add(panel1,BorderLayout.NORTH);        //字号大小        JPanel panel2 = new JPanel(new GridLayout(10, 1,2,2));        jLabel2.setFont(jLabel2.getFont().deriveFont(14f));        jLabel3.setFont(jLabel3.getFont().deriveFont(14f));        jLabel4.setFont(jLabel4.getFont().deriveFont(14f));        jLabel5.setFont(jLabel5.getFont().deriveFont(14f));        panel2.add(jLabel2);panel2.add(jTextField1);panel2.add(jLabel6);        panel2.add(jLabel3);panel2.add(jTextField2);        panel2.add(jLabel4);panel2.add(jTextField3);        panel2.add(jLabel5);panel2.add(jTextField4);        //添加按钮        jButton1.addActionListener(this);        panel2.add(jButton1);        this.getContentPane().add(panel2,BorderLayout.CENTER);        //添加文本区域        this.getContentPane().add(scrollPane,BorderLayout.SOUTH);        //让弹框展示出来        this.setVisible(true);    }    //界面    public void initJFrame() {        //设置标题        this.setTitle("修改");        //给界面设置大小        this.setSize(400,350);        //让界面置顶        this.setAlwaysOnTop(true);        //让界面居中        this.setLocationRelativeTo(null);        //界面不关闭永远无法操作下面的界面        //this.setModal(true);        //窗口布局方式        this.setLayout(new BorderLayout());    }    @Override    public void actionPerformed(ActionEvent e) {        try {            if(e.getSource()==jButton1){                System.out.println("点击了修改");                int id = Integer.parseInt(jTextField1.getText().trim());                String name = jTextField2.getText().trim();                String sex = jTextField3.getText().trim();                int age = Integer.parseInt(jTextField4.getText().trim());                Student.update(id, name,sex,age);                displayAll();            }        } catch (SQLException e1) {            e1.printStackTrace();        }    }    private void displayAll() throws SQLException {        List students = Student.getAll();        displayArea.setText("");        for (Student student : students) {            displayArea.append("id: " + student.getId() + "nname: " + student.getName() + "nsex: " + student.getSex() + "nage: " + student.getAge() + "nn");        }    }}

查找界面:

package 实验三;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.SQLException;import java.util.List;public class findButtonView extends JFrame implements ActionListener {    //标签    JLabel jLabel1 = new JLabel("请输入想要查找的字段名");    JLabel jLabel2 = new JLabel("id(字段名):");    //文本框    JTextField jTextField1 = new JTextField();    //按钮    JButton jButton1 = new JButton("查询");    //文本区域    JTextArea displayArea= new JTextArea(10, 20);    JScrollPane scrollPane = new JScrollPane(displayArea);    public findButtonView()  {        //初始化界面        initJFrame();        //初始化内容        initView();    }    private void initView() {        //添加标签        //颜色        jLabel1.setForeground(Color.red);        //字号大小        jLabel1.setFont(jLabel1.getFont().deriveFont(16f));        JPanel panel1 = new JPanel(new GridLayout(1, 1));        panel1.add(jLabel1);        this.getContentPane().add(panel1,BorderLayout.NORTH);        //字号大小        JPanel panel2 = new JPanel(new GridLayout(3, 1,2,2));        jLabel2.setFont(jLabel2.getFont().deriveFont(14f));        panel2.add(jLabel2);        panel2.add(jTextField1);        jButton1.addActionListener(this);        panel2.add(jButton1);        this.getContentPane().add(panel2,BorderLayout.CENTER);        //添加文本区域        this.getContentPane().add(scrollPane,BorderLayout.SOUTH);        //让弹框展示出来        this.setVisible(true);    }    //界面    public void initJFrame() {        //设置标题        this.setTitle("查找");        //给界面设置大小        this.setSize(400,350);        //让界面置顶        this.setAlwaysOnTop(true);        //让界面居中        this.setLocationRelativeTo(null);        //界面不关闭永远无法操作下面的界面        //this.setModal(true);        //窗口布局方式        this.setLayout(new BorderLayout());    }    @Override    public void actionPerformed(ActionEvent e) {        try {            if(e.getSource()==jButton1){                System.out.println("点击了查询");                int id = Integer.parseInt(jTextField1.getText().trim());                Student student =  Student.get(id);                if (student != null) {                    displayAll(id);                } else {                    displayArea.setText("No such student.");                }            }        } catch (SQLException e1) {            e1.printStackTrace();        }    }    private void displayAll(int id) throws SQLException {        List students = Student.getAll();        displayArea.setText("");        for (Student student : students) {            if (id==student.getId()) {                displayArea.append("id: " + student.getId() + "nname: " + student.getName() + "nsex: " + student.getSex() + "nage: " + student.getAge() + "nn");            }        }    }}

运行结果截图:

添加截图:

删除截图:


修改截图:

 

查询截图:

代码挺多的,如果发现什么问题,评论区畅所欲言。

 完成收工,good!

语文学起来很枯燥,但脱离了考试,他的美才慢慢彰显出来,

最近又喜欢上了一句话:“少年没有乌托邦,心向远方自明朗”。

虽然“天不生无用之人,地不长无名之草”。但仍谨记“冰冻三尺,非一日之寒”。

执长剑纵马,执妙笔生花,我王某人在此邀请诸位与我共身!

转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/1098498.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【JAVA 实验三 数据库编程】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2