0


Java课程设计之 学生成绩管理系统

实现内容:

更多Java学习资源尽在B站账号:清风学Java
https://space.bilibili.com/591988762
只做Java分享,欢迎个位小伙伴前来观看,更多优质学习资源持续更新中…

 设计开发一个学生成绩管理系统

(1)根据实现的功能,划分出合理的对象类,明确各个对象类之间的关系。为
各个对象类设计正确的域和方法,为每个方法设计合理的方法体。同时,为对象类及内部的域和方法运用正确的修饰符。
功能要求:
(1)录入成绩 (2) 查询成绩
(3) 成绩排序 (4) 修改成绩
(5) 删除成绩 (6) 将数据保存在数据库表中

该课程设计涉及MySQL数据库,建表操作,java操作SQL语句(JDBC数据库操作)以及JavaSwing与事件处理。
在这里插入图片描述
源程序(仅做参考):

//**学生类**publicclassStudent{

    String id;// 学号
    String name;// 姓名
    float math;//数学成绩
    float physics;//物理成绩
    float english;//英语成绩publicStudent(){}publicStudent(String id, String name, float math, float physics, float english){//定义带参的构造函数super();//调用父类的无参的构造函数this.id = id;this.name = name;this.math = math;this.physics = physics;this.english = english;}//定义一个方法设置个变量的值publicvoidset(String id,String name,float math,float physics,float english){this.id = id;this.name = name;this.math = math;this.physics = physics;this.english = english;}public String getId(){//定义一个方法获取学号return id;}public String getName(){//定义一个方法获取姓名return name;}public float getMath(){//定义一个方法获取数学成绩return math;}public float getPhysics(){//定义一个方法获取物理成绩return physics;}public float getEnglish(){//定义一个方法获取英语成绩return english;}//重写toString方法 使其输出指定的格式
    @Override
    public String toString(){// TODO Auto-generated method stubreturn"[ 学号: "+id+"  姓名: "+name+"  数学成绩: "+math+"   物理成绩: "+physics+"  英语成绩: "+english+"]";}}
//测试类import java.awt.BorderLayout;import javax.swing.JFrame;import javax.swing.JTabbedPane;classmySwing{
    JFrame frame;//定义一个窗口
    JTabbedPane tabbedPane;//定义一个选项卡窗格publicvoidinit(){//定义一个方法来对选项卡窗格进行操作
        tabbedPane =newJTabbedPane();//实例化选项卡窗格
        tabbedPane.add("录入成绩",newaddPanel().panel);//向选项卡窗格中添加”录入成绩“窗格
        tabbedPane.add("查询成绩",newcheckPanel().panel2);//向选项卡窗格中添加”查询成绩“窗格
        tabbedPane.add("排序成绩",newsortPanel().panel3);//向选项卡窗格中添加”排序成绩“窗格
        tabbedPane.add("修改成绩",newmodifyPanel().panel4);//向选项卡窗格中添加”修改成绩“窗格
        tabbedPane.add("删除记录",newdeletePanel().panel5);//向选项卡窗格中添加”删除记录“窗格}//先创建一个窗口publicmySwing(){//创建一个无参的构造方法由于初始化窗体
        frame =newJFrame("XXX学校学生成绩管理系统");//实例化窗口init();//调用init方法
        frame.add(tabbedPane,BorderLayout.NORTH);//向窗口中添加选项卡窗格
        frame.setVisible(true);//设置窗口可见
        frame.setSize(500,580);//设置窗口的大小
        frame.setLocationRelativeTo(null);//设置窗口的位置为桌面中心
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置单击窗口的关闭按钮后程序自动停止运行}}publicclassmyText{publicstaticvoidmain(String[] args){newmySwing();//通过匿名对象调用}}
//添加数据实现import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.Box;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextArea;import javax.swing.JTextField;publicclassaddPanel{
    MyDBUtil dbUtil =newMyDBUtil();//创建自己写的数据库对象
    JPanel panel;//定义一个面板引用//录入成绩 窗口组件设置
    JPanel p1,p2,p3,p4;//定义4个面板引用
    Box boxH1,boxH2;//创建两个行式盒。
    Box box1,box2,box3,box4;//创建四个列式盒
    JButton button;//定义一个按钮
    JTextField textField1,textField2,textField3,textField4,textField5;//定义五个单行文本框
    JTextArea area;//定义一个多行文本框//录入成绩窗口publicaddPanel(){//创建无参的构造函数
        boxH1 = Box.createHorizontalBox();//实例化行式盒 boxH1
        boxH2 = Box.createHorizontalBox();//实例化行式盒 boxH2
        
        box1 = Box.createVerticalBox();//实例化列式盒 box1
        box1.add(Box.createVerticalStrut(35));//向列式盒中添加不可见的垂直Strut对象
        box1.add(newJLabel("学号"));//向列式盒中添加  "学号" 标签
        box1.add(Box.createVerticalStrut(35));//向列式盒中添加不可见的垂直Strut对象
        box1.add(newJLabel("数学成绩"));//向列式盒中添加  "数学成绩" 标签
        box1.add(Box.createVerticalStrut(35));//向列式盒中添加不可见的垂直Strut对象
        box1.add(newJLabel("英语成绩"));//向列式盒中添加  "英语成绩" 标签
        boxH1.add(box1);//向行式盒中添加列式盒box1
        boxH1.add(Box.createHorizontalStrut(55));//在行式盒中设置一个不可见的长为55的水平Strut对象

        box2 = Box.createVerticalBox();//实例化列式盒 box2
        textField1 =newJTextField(12);//实例化单行文本框
        textField2 =newJTextField(12);//实例化单行文本框
        textField3 =newJTextField(12);//实例化单行文本框
        box2.add(Box.createVerticalStrut(35));//向列式盒中添加不可见的垂直Strut对象
        box2.add(textField1);//向列式盒中添加单行文本框
        box2.add(Box.createVerticalStrut(35));//向列式盒中添加不可见的垂直Strut对象
        box2.add(textField2);//向列式盒中添加单行文本框
        box2.add(Box.createVerticalStrut(35));//向列式盒中添加不可见的垂直Strut对象
        box2.add(textField3);//向列式盒中添加单行文本框
        boxH1.add(box2);//向行式盒中添加列式盒box2

        box3 = Box.createVerticalBox();//实例化列式盒 box3
        box3.add(Box.createVerticalStrut(35));//向列式盒中添加不可见的垂直Strut对象
        box3.add(newJLabel("姓名"));//向列式盒中添加  "姓名" 标签
        box3.add(Box.createVerticalStrut(35));//向列式盒中添加不可见的垂直Strut对象
        box3.add(newJLabel("物理成绩"));//向列式盒中添加 "物理成绩" 标签
        boxH2.add(box3);//向行式盒中添加列式盒box3
        boxH2.add(Box.createHorizontalStrut(55));//在行式盒中设置一个不可见的长为55的水平Strut对象
        
        box4 = Box.createVerticalBox();//实例化列式盒 box3
        box4.add(Box.createVerticalStrut(35));//向列式盒中添加不可见的垂直Strut对象
        textField4 =newJTextField(12);//实例化单行文本框
        textField5 =newJTextField(12);//实例化单行文本框
        box4.add(textField4);//向列式盒中添加单行文本框
        box4.add(Box.createVerticalStrut(35));//向列式盒中添加不可见的垂直Strut对象
        box4.add(textField5);//向列式盒中添加单行文本框
        boxH2.add(box4);//向行式盒中添加列式盒box4
        
        button =newJButton("录入");//实例化按钮对象
        button.addActionListener(newActionListener(){//事件处理 , 给按钮添加监视器
            
            @Override
            publicvoidactionPerformed(ActionEvent e){//实例化Student类对象并传值try{
                    Student student =newStudent(textField1.getText(), textField4.getText(), Float.parseFloat(textField2.getText()), Float.parseFloat(textField5.getText()), Float.parseFloat(textField3.getText()));
                    dbUtil.add(student);//调用MyDBUtil类中的add方法,并把student作为值传入
                    area.setText("你输入的信息添加成功!!"+"\r\n"+"你可以通过查询成绩来查看相关信息!!");//添加成功后设置area中的信息提示//执行上面的方法后将文本框中的值清除
                    textField1.setText("");
                    textField2.setText("");
                    textField3.setText("");
                    textField4.setText("");
                    textField5.setText("");}catch(NumberFormatException e1){// TODO Auto-generated catch block
                    area.setText("温馨提示!!"+"\r\n"+"添加成绩失败,请重新进行操作!!");//添加失败后设置area中的信息提示
                    textField1.setText("");
                    textField2.setText("");
                    textField3.setText("");
                    textField4.setText("");
                    textField5.setText("");}}});
        p3 =newJPanel();//实例化面板对象
        p3.setLayout(newFlowLayout(FlowLayout.CENTER,5,100));//设置p3面板的布局为FlowLayout布局,并设置水平和垂直间距
        p3.add(button);//将按钮添加到p3面板中
        
        p1 =newJPanel();//实例化面板对象
        p1.add(boxH1);//向p1面板里添加boxH1
        p2 =newJPanel();//实例化面板对象
        p2.add(boxH2);//向p2面板中添加boxH2对象
        
        p4 =newJPanel();//实例化面板对象
        area =newJTextArea("请在下面输入你想存入的相关的信息!!!",3,30);//实例化多行文本框并做初值的设定
        p4.add(area);//向p4面板中添加area
        
        panel =newJPanel();//实例化面板对象
        panel.setLayout(newBorderLayout());//设置panel面板的布局为BorderLayout布局
        panel.add(p1,BorderLayout.WEST);//向panel面板的西边添加p1面板
        panel.add(p2);//向panel面板中添加p2面板
        panel.add(p3,BorderLayout.SOUTH);//向panel面板的南面添加p3面板
        panel.add(p4,BorderLayout.NORTH);//向panel面板的北面添加p4面板                }}
//查询数据实现import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.ResultSet;import java.sql.SQLException;import java.util.LinkedList;import javax.swing.JButton;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;publicclasscheckPanelimplementsActionListener{
    JTable table;//定义一个表格引用
    Object name[]={"学号","姓名","数学成绩","物理成绩","英语成绩"};//定义一个姓名数组
    Object a[][];//定义一个a数组
    ResultSet rs=null;
    MyDBUtil dbUtil =newMyDBUtil();//创建一个MyDBUtil对象
    LinkedList <Student>list=null;//定义一个LinkedList集合对象
    
    JPanel panel2;//定义一个面板
    JButton button1;//定义一个按钮//查询成绩窗口设置publicvoidsetList(){//定义一个方法获取数据并将数据存入集合中
            
            rs= dbUtil.checkAll();//调用MyDBUtil类中的checkAll方法。
            list=newLinkedList<Student>();//实例化集合对象if(rs!=null){try{while(rs.next()){//通过循环将数据存入集合中
                        list.add(newStudent(rs.getString(1),rs.getString(2),rs.getFloat(3),rs.getFloat(4),rs.getFloat(5)));}}catch(SQLException e){// TODO Auto-generated catch block
                    e.printStackTrace();}}}publicvoidsetTable(){//定义一个方法设置表格setList();//调用setlist方法
        a=newObject[list.size()][name.length];//实例化数组a,并设置其行和列的大小for(int i=0;i<list.size();i++){//通过循环向数组中存入数据以放入表格中
            Student s=list.get(i);//拿到集合的第i个位置的元素并传给Student对象//通过Student对象的get方法获取相应的值
            a[i][0]=s.getId();
            a[i][1]=s.getName();
            a[i][2]=s.getMath();
            a[i][3]=s.getPhysics();
            a[i][4]=s.getEnglish();}
        panel2.removeAll();//使其面板刷新
        
        button1 =newJButton("刷新");//实例化按钮对象
        button1.addActionListener(this);//给按钮添加监视器
        table=newJTable(a, name);//实例化表格
        
        panel2.add(button1,BorderLayout.SOUTH);//向面板中添加按钮
        panel2.add(newJScrollPane(table),BorderLayout.NORTH);//向面板中添加表格}publiccheckPanel(){//定义一个无参的构造函数
        
        panel2 =newJPanel();//实例化面板对象
        panel2.setLayout(newBorderLayout());//设置面板的布局为BorderLayout()布局。setTable();//调用setTable方法}
    @Override
    publicvoidactionPerformed(ActionEvent e){//添加事件setTable();//调用上面的setTable方法}}
// 排序实现import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.ResultSet;import java.sql.SQLException;import java.util.LinkedList;import javax.swing.JButton;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JTextArea;import javax.swing.JTextField;publicclasssortPanelimplementsActionListener{

    JTable table;//定义一个表格引用
    Object name[]={"学号","姓名","数学成绩","物理成绩","英语成绩"};//定义一个姓名数组
    Object aa[][];//定义一个aa数组
    ResultSet rs=null;
    MyDBUtil dbUtil =newMyDBUtil();//创建一个MyDBUtil对象
    LinkedList <Student>list=null;//定义一个LinkedList集合对象
    
    JPanel panel3,p1,p2;//定义三个面板
    JTextField field;//定义一个单行文本框
    JTextArea area;//定义一个多行文本框
    JButton b1,b2;//定义两个按钮publicvoidsetList(){//定义一个方法获取数据并将数据存入集合中
        
        rs= dbUtil.checkAll();//调用MyDBUtil类中的checkAll方法。
        list=newLinkedList<Student>();//实例化集合对象if(rs!=null){try{while(rs.next()){//通过循环向集合中添加元素
                    list.add(newStudent(rs.getString(1),rs.getString(2),rs.getFloat(3),rs.getFloat(4),rs.getFloat(5)));}}catch(SQLException e){// TODO Auto-generated catch block
                e.printStackTrace();}}}publicvoidsetList1(String grade,String sort){//定义一个方法获取数据并将数据存入集合中 , 并设定指定的参数
        
        rs= dbUtil.checkAll(grade,sort);//调用MyDBUtil中的带参数的checkAll方法
        list=newLinkedList<Student>();//实例化集合对象if(rs!=null){try{while(rs.next()){//通过循环向集合中添加元素
                    list.add(newStudent(rs.getString(1),rs.getString(2),rs.getFloat(3),rs.getFloat(4),rs.getFloat(5)));}}catch(SQLException e){// TODO Auto-generated catch block
                e.printStackTrace();}}}publicvoidsetTable(){//定义一个方法设置表格setList();//初始情况下先调用setList方法
        aa=newObject[list.size()][name.length];//实例化数组aa,并设置其行和列的大小for(int i=0;i<list.size();i++){//通过循环向数组中存入数据以放入表格中
            Student s=list.get(i);//拿到集合的第i个位置的元素并传给Student对象//通过Student对象的get方法获取相应的值
            aa[i][0]=s.getId();
            aa[i][1]=s.getName();
            aa[i][2]=s.getMath();
            aa[i][3]=s.getPhysics();
            aa[i][4]=s.getEnglish();}
        panel3.removeAll();//使其面板刷新
        
        b1 =newJButton("升序");//实例化按钮对象
        b1.addActionListener(this);//给按钮添加监视器
        b2 =newJButton("降序");//实例化按钮对象
        b2.addActionListener(this);//给按钮添加监视器
       
        area =newJTextArea("请按表格输入你想排序的信息。如: 数学成绩!!",2,15);//实例化多行文本框
        field =newJTextField(16);//实例化单行文本框
        p1 =newJPanel();//实例化面板对象
        p1.add(field);//向面板中添加文本框
        p1.add(b1);//向面板中添加按钮
        p1.add(b2);//向面板中添加按钮
        
        p2 =newJPanel();//实例化面板对象
        p2.setLayout(newBorderLayout());//设置面板的布局为BorderLayout布局
        p2.add(p1,BorderLayout.SOUTH);//向p2面板中添加p1面板
        p2.add(area);//向p2面板中添加area
        
        table=newJTable(aa, name);//实例化表格
        panel3.add(p2);//向panel3面板中添加p1面板
        panel3.add(newJScrollPane(table),BorderLayout.NORTH);//向panel3面板中添加表格}publicsortPanel(){
            
            panel3 =newJPanel();//实例化面板对象
            panel3.setLayout(newBorderLayout());//设置面板的布局为BorderLayout布局setTable();//调用setTable方法。}
        @Override
        publicvoidactionPerformed(ActionEvent e){//添加事件//通过条件语句判断输入的信息是否符合要求if("学号".equals(field.getText())||"姓名".equals(field.getText())||"数学成绩".equals(field.getText())||"物理成绩".equals(field.getText())||"英语成绩".equals(field.getText())){if("升序".equals(e.getActionCommand())){//判断字符是否相等setList1(field.getText(),"asc");//条件成立的情况下设置参
                    aa=newObject[list.size()][name.length];//实例化数组aa,并设置其行和列的大小for(int i=0;i<list.size();i++){//通过循环向数组中存入数据以放入表格中
                        Student s=list.get(i);//拿到集合的第i个位置的元素并传给Student对象//通过Student对象的get方法获取相应的值
                        aa[i][0]=s.getId();
                        aa[i][1]=s.getName();
                        aa[i][2]=s.getMath();
                        aa[i][3]=s.getPhysics();
                        aa[i][4]=s.getEnglish();}
                    panel3.removeAll();//使其面板刷新
                    
                    b1 =newJButton("升序");//实例化按钮对象
                    b1.addActionListener(this);//给按钮添加监视器
                    b2 =newJButton("降序");//实例化按钮对象
                    b2.addActionListener(this);//给按钮添加监视器
                    
                    area =newJTextArea(field.getText()+"的升序如表格所示!!",2,15);//实例化多行文本框
                    field =newJTextField(16);//实例化单行文本框
                    p1 =newJPanel();//实例化面板对象
                    p1.add(field);//向面板中添加文本框
                    p1.add(b1);//向面板中添加按钮
                    p1.add(b2);//向面板中添加按钮
                    
                    p2 =newJPanel();//实例化面板对象
                    p2.setLayout(newBorderLayout());//设置面板的布局为BorderLayout布局
                    p2.add(p1,BorderLayout.SOUTH);//向p2面板中添加p1面板
                    p2.add(area);//向p2面板中添加area
                    
                    table=newJTable(aa, name);//实例化表格
                    panel3.add(p2);//向panel3面板中添加p1面板
                    panel3.add(newJScrollPane(table),BorderLayout.NORTH);//向panel3面板中添加表格}if("降序".equals(e.getActionCommand())){//判断获取的字符是否相等setList1(field.getText(),"desc");//条件成立的情况下设置参数
                    aa=newObject[list.size()][name.length];//实例化数组aa,并设置其行和列的大小for(int i=0;i<list.size();i++){//通过循环向数组中存入数据以放入表格中
                        Student s=list.get(i);//拿到集合的第i个位置的元素并传给Student对象//通过Student对象的get方法获取相应的值
                        aa[i][0]=s.getId();
                        aa[i][1]=s.getName();
                        aa[i][2]=s.getMath();
                        aa[i][3]=s.getPhysics();
                        aa[i][4]=s.getEnglish();}
                    panel3.removeAll();//使其面板刷新
                    
                    b1 =newJButton("升序");//实例化按钮对象
                    b1.addActionListener(this);//给按钮添加监视器
                    b2 =newJButton("降序");//实例化按钮对象
                    b2.addActionListener(this);//给按钮添加监视器
                    
                    area =newJTextArea(field.getText()+"的降序如表格所示!!",2,15);//实例化多行文本框
                    field =newJTextField(16);//实例化单行文本框
                    p1 =newJPanel();//实例化面板对象
                    p1.add(field);//向面板中添加文本框
                    p1.add(b1);//向面板中添加按钮
                    p1.add(b2);//向面板中添加按钮
                    
                    p2 =newJPanel();//实例化面板对象
                    p2.setLayout(newBorderLayout());//设置面板的布局为BorderLayout布局
                    p2.add(p1,BorderLayout.SOUTH);//向p2面板中添加p1面板
                    p2.add(area);//向p2面板中添加area
                    
                    table=newJTable(aa, name);//实例化表格
                    panel3.add(p2);//向panel3面板中添加p1面板
                    panel3.add(newJScrollPane(table),BorderLayout.NORTH);//向panel3面板中添加表格}}else{setList();//初始情况下先调用setList方法
            aa=newObject[list.size()][name.length];//实例化数组aa,并设置其行和列的大小for(int i=0;i<list.size();i++){//通过循环向数组中存入数据以放入表格中
                Student s=list.get(i);//拿到集合的第i个位置的元素并传给Student对象//通过Student对象的get方法获取相应的值
                aa[i][0]=s.getId();
                aa[i][1]=s.getName();
                aa[i][2]=s.getMath();
                aa[i][3]=s.getPhysics();
                aa[i][4]=s.getEnglish();}
            panel3.removeAll();//使其面板刷新
            
            b1 =newJButton("升序");//实例化按钮对象
            b1.addActionListener(this);//给按钮添加监视器
            b2 =newJButton("降序");//实例化按钮对象
            b2.addActionListener(this);//给按钮添加监视器
           
            area =newJTextArea("温馨提示!!"+"\r\n"+"你输入的信息有误,请按表格输入你想排序的信息!!",2,15);//实例化多行文本框
            field =newJTextField(16);//实例化单行文本框
            p1 =newJPanel();//实例化面板对象
            p1.add(field);//向面板中添加文本框
            p1.add(b1);//向面板中添加按钮
            p1.add(b2);//向面板中添加按钮
             
            p2 =newJPanel();//实例化面板对象
            p2.setLayout(newBorderLayout());//设置面板的布局为BorderLayout布局
            p2.add(p1,BorderLayout.SOUTH);//向p2面板中添加p1面板
            p2.add(area);//向p2面板中添加area
            
            table=newJTable(aa, name);//实例化表格
            panel3.add(p2);//向panel3面板中添加p1面板
            panel3.add(newJScrollPane(table),BorderLayout.NORTH);//向panel3面板中添加表格}}}
// 修改数据实现import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.Box;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextArea;import javax.swing.JTextField;publicclassmodifyPanel{
    MyDBUtil dbUtil =newMyDBUtil();//创建MyDBUtil类的对象
    JPanel panel4;//创建一个面板//修改成绩窗口组件设置
    JPanel p1,p2,p3,p4;//定义四个面板
    Box boxH1,boxH2;//定义两个行式盒
    Box box1,box2,box3,box4;//定义四个列式盒
    JButton button1;//定义一个按钮
    JTextField t1,t2,t3,t4,t5,t6;//定义六个单号文本框
    JTextArea area;publicmodifyPanel(){//定义一个无参的构造函数//实例化行式盒
        boxH1 = Box.createHorizontalBox();
        boxH2 = Box.createHorizontalBox();
        
        box1 = Box.createVerticalBox();//实例化列式盒
        box1.add(Box.createVerticalStrut(50));//向列式盒中添加不可见的垂直Strut对象
        box1.add(newJLabel("学号"));//向列式盒中添加 “学号” 标签
        box1.add(Box.createVerticalStrut(35));//向列式盒中添加不可见的垂直Strut对象
        box1.add(newJLabel("数学成绩"));//向列式盒中添加 “数学成绩” 标签
        box1.add(Box.createVerticalStrut(35));//向列式盒中添加不可见的垂直Strut对象
        box1.add(newJLabel("英语成绩"));//向列式盒中添加 “英语成绩” 标签
        boxH1.add(box1);//向行式盒boxH1中添加列式盒box1
        boxH1.add(Box.createHorizontalStrut(50));//在行式盒boxH1中设置一个水平为50的不可见的Strut对象。
        
        box2 = Box.createVerticalBox();//实例化列式盒
        box2.add(Box.createVerticalStrut(50));//向列式盒中添加不可见的垂直Strut对象//实例化单行文本框
        t1 =newJTextField(12);   
        t2 =newJTextField(12);  
        t3 =newJTextField(12);//向列式盒中添加单行文本框
        box2.add(t1);
        box2.add(Box.createVerticalStrut(35));//向列式盒中添加不可见的垂直Strut对象
        box2.add(t2);
        box2.add(Box.createVerticalStrut(35));//向列式盒中添加不可见的垂直Strut对象
        box2.add(t3);
        boxH1.add(box2);//向行式盒中添加列式盒
        
        box3 = Box.createVerticalBox();//实例化列式盒
        box3.add(Box.createVerticalStrut(50));//向列式盒中添加不可见的垂直Strut对象
        box3.add(newJLabel("姓名"));//向列式盒中添加 “姓名” 标签
        box3.add(Box.createVerticalStrut(35));//向列式盒中添加不可见的垂直Strut对象
        box3.add(newJLabel("物理成绩"));//向列式盒中添加 “物理成绩” 标签
        boxH2.add(box3);//向行式盒中添加列式盒
        boxH2.add(Box.createHorizontalStrut(70));//在行式盒boxH2中设置一个水平为50的不可见的Strut对象
        
        box4 = Box.createVerticalBox();//实例化列式盒
        box4.add(Box.createVerticalStrut(50));//向列式盒中添加不可见的垂直Strut对象//实例化单行文本框
        t4 =newJTextField(12);
        t5 =newJTextField(12);//向列式盒中添加单行文本框
        box4.add(t4);
        box4.add(Box.createVerticalStrut(35));//向列式盒中添加不可见的垂直Strut对象
        box4.add(t5);
        boxH2.add(box4);//向行式盒中添加列式盒
        
        p2 =newJPanel();//实例化面板对象
        p2.add(boxH1);//向p2面板中添加行式盒boxH1
        p3 =newJPanel();//实例化面板对象
        p3.add(boxH2);//向p3面板中添加行式盒boxH2
        
        t6 =newJTextField(10);//实例化一个单行文本框
        button1 =newJButton("修改");//实例化一个按钮对象
        button1.addActionListener(newActionListener(){//给按钮添加监视器处理事件
            
            @Override
            publicvoidactionPerformed(ActionEvent e){try{//异常情况处理if(t1.getText().equals(t6.getText())){//通过条件判断语句判断输入的信息是否符合要求//获取到文本框中的内容传给Student类
                        Student student =newStudent(t1.getText(), t4.getText(), Float.parseFloat(t2.getText()), Float.parseFloat(t5.getText()), Float.parseFloat(t3.getText()));    
                        dbUtil.modify(student);//调用MyDBUtil类中的modify类
                        area.setText("成绩信息修改成功,你可以通过查询成绩来查看相关信息!!!");//给多行文本框设值//运行之后设置文本框的值为空
                        t1.setText("");
                        t2.setText("");
                        t3.setText("");
                        t4.setText("");
                        t5.setText("");
                        t6.setText("");}else{
                        area.setText("温馨提示!!"+"\r\n"+"由于两处学号信息不一致,无法进行修改.."+"\r\n"+"请重新输入你想修改的信息!!");//给多行文本框设值//运行之后设置文本框的值为空
                        t1.setText("");
                        t2.setText("");
                        t3.setText("");
                        t4.setText("");
                        t5.setText("");
                        t6.setText("");}}catch(NumberFormatException e1){//异常情况处理// TODO Auto-generated catch block
                    area.setText("温馨提示!!"+"\r\n"+"输入的成绩不符合要求,修改失败,请重新进行操作!!");//修改失败后设置area中的信息提示//运行之后设置文本框的值为空
                    t1.setText("");
                    t2.setText("");
                    t3.setText("");
                    t4.setText("");
                    t5.setText("");
                    t6.setText("");}}});
        p4 =newJPanel();//实例化面板对象
        p4.add(newJLabel("输入学号: "));//向p4面板中添加标签
        p4.add(t6);//向p4面板中添加t6文本框
        p4.add(button1);//向p4面板添加按钮
        
        area =newJTextArea("请按标签信息输入你想修改的信息!!",5,30);//实例化多行文本框
        p1 =newJPanel();//实例化面板
        p1.add(area);//向面板中添加area
        
        panel4 =newJPanel();//实例化面板对象
        panel4.setLayout(newBorderLayout());//设置panel4面板的布局为BorderLayout布局
        panel4.add(p2,BorderLayout.WEST);//向panel4面板中添加p2面板并放在panel4的西面。
        panel4.add(p3);//向panel4面板中添加p3面板
        panel4.add(p4,BorderLayout.SOUTH);//向panel4面板中添加p4面板并放在panel4的南面。
        panel4.add(p1,BorderLayout.NORTH);//向panel4面板中添加p1面板并放在panel4的北面。}}
// 删除数据实现import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.Box;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextArea;import javax.swing.JTextField;publicclassdeletePanel{
    MyDBUtil dbUtil =newMyDBUtil();//创建MyDBUtil类的对象
    JPanel panel5;//定义一个面板对象
    
    JPanel p1,p2,p3,p4;//定义四个面板对象
    Box boxH1,boxH2;//定义两个行式盒
    Box boxV1,boxV2,boxV3,boxV4;//定义四个列式盒
    JButton button1;//定义一个按钮
    JTextField te1,te2,te3,te4,te5,te6;//定义六个单行文本框
    JTextArea area;//定义一个多行文本框publicdeletePanel(){//定义一个无参的构造函数//实例化行式盒
        boxH1 = Box.createHorizontalBox();
        boxH2 = Box.createHorizontalBox();
        
        boxV1 = Box.createVerticalBox();//实例化列式盒
        boxV1.add(Box.createVerticalStrut(50));//向列式盒中添加不可见的垂直Strut对象
        boxV1.add(newJLabel("学号"));//向列式盒中添加 “学号” 标签
        boxV1.add(Box.createVerticalStrut(35));//向列式盒中添加不可见的垂直Strut对象
        boxV1.add(newJLabel("数学成绩"));//向列式盒中添加 “数学成绩” 标签
        boxV1.add(Box.createVerticalStrut(35));//向列式盒中添加不可见的垂直Strut对象
        boxV1.add(newJLabel("英语成绩"));//向列式盒中添加 “英语成绩” 标签
        boxH1.add(boxV1);//向行式盒boxH1中添加列式盒boxV1
        boxH1.add(Box.createHorizontalStrut(50));//在行式盒boxH1中设置一个水平为50的不可见的Strut对象。
        
        boxV2 = Box.createVerticalBox();//实例化列式盒
        boxV2.add(Box.createVerticalStrut(50));//向列式盒中添加不可见的垂直Strut对象//实例化单行文本框
        te1 =newJTextField(12);
        te2 =newJTextField(12);
        te3 =newJTextField(12);//向列式盒中添加单行文本框
        boxV2.add(te1);
        boxV2.add(Box.createVerticalStrut(35));//向列式盒中添加不可见的垂直Strut对象
        boxV2.add(te2);
        boxV2.add(Box.createVerticalStrut(35));//向列式盒中添加不可见的垂直Strut对象
        boxV2.add(te3);
        boxH1.add(boxV2);//向行式盒中添加列式盒
        
        boxV3 = Box.createVerticalBox();//实例化列式盒
        boxV3.add(Box.createVerticalStrut(50));//向列式盒中添加不可见的垂直Strut对象
        boxV3.add(newJLabel("姓名"));//向列式盒中添加 “姓名” 标签
        boxV3.add(Box.createVerticalStrut(35));//向列式盒中添加不可见的垂直Strut对象
        boxV3.add(newJLabel("物理成绩"));//向列式盒中添加 “物理成绩” 标签
        boxH2.add(boxV3);//向行式盒中添加列式盒
        boxH2.add(Box.createHorizontalStrut(70));//在行式盒boxH2中设置一个水平为50的不可见的Strut对象
        
        boxV4 = Box.createVerticalBox();//实例化列式盒
        boxV4.add(Box.createVerticalStrut(50));//向列式盒中添加不可见的垂直Strut对象//实例化单行文本框
        te4 =newJTextField(12);
        te5 =newJTextField(12);//向列式盒中添加单行文本框
        boxV4.add(te4);
        boxV4.add(Box.createVerticalStrut(35));//向列式盒中添加不可见的垂直Strut对象
        boxV4.add(te5);
        boxH2.add(boxV4);//向行式盒中添加列式盒
        
        p1 =newJPanel();//实例化面板对象
        p1.add(boxH1);//向p1面板中添加行式盒boxH1
        p2 =newJPanel();//实例化面板对象
        p2.add(boxH2);//向p2面板中添加行式盒boxH2
        
        te6 =newJTextField(10);//实例化一个单行文本框
        button1 =newJButton("删除");//实例化一个按钮对象
        button1.addActionListener(newActionListener(){//给按钮添加监视器处理事件
            
            @Override
            publicvoidactionPerformed(ActionEvent e){try{//异常处理if(te1.getText().equals(te6.getText())){//通过条件判断语句判断输入的信息是否符合要求//获取到文本框中的内容传给Student类
                        Student student =newStudent();    
                        student.set(te1.getText(), te4.getText(), Float.parseFloat(te2.getText()), Float.parseFloat(te5.getText()), Float.parseFloat(te3.getText()));
                        dbUtil.delete(student);//调用MyDBUtil类中的modify类
                        area.setText("成绩信息删除成功,你可以通过查询成绩来查看相关信息!!!");//给多行文本框设值//运行之后设置文本框的值为空
                        te1.setText("");
                        te2.setText("");
                        te3.setText("");
                        te4.setText("");
                        te5.setText("");
                        te6.setText("");}else{
                        area.setText("温馨提示!!"+"\r\n"+"由于两处学号信息不一致,无法进行删除.."+"\r\n"+"请重新输入你想删除的信息!!");//给多行文本框设值//运行之后设置文本框的值为空
                        te1.setText("");
                        te2.setText("");
                        te3.setText("");
                        te4.setText("");
                        te5.setText("");
                        te6.setText("");}}catch(NumberFormatException e1){// TODO Auto-generated catch block
                    area.setText("温馨提示!!"+"\r\n"+"输入的成绩不符合要求,删除失败,请重新进行操作!!!");//删除失败后设置area中的信息提示//运行之后设置文本框的值为空
                    te1.setText("");
                    te2.setText("");
                    te3.setText("");
                    te4.setText("");
                    te5.setText("");
                    te6.setText("");}}});
        p3 =newJPanel();//实例化面板对象
        p3.add(newJLabel("输入学号: "));//向p3面板中添加标签
        p3.add(te6);//向p3面板中添加t6文本框
        p3.add(button1);//向p3面板添加按钮
        
        area =newJTextArea("请按标签信息输入你想删除的信息!!",5,30);//实例化多行文本框
        p4 =newJPanel();//实例化面板
        p4.add(area);//向面板中添加area
        
        panel5 =newJPanel();//实例化面板对象
        panel5.setLayout(newBorderLayout());//设置panel5面板的布局为BorderLayout布局
        panel5.add(p1,BorderLayout.WEST);//向panel5面板中添加p1面板并放在panel5的西面
        panel5.add(p2);//向panel5面板中添加p2面板
        panel5.add(p3,BorderLayout.SOUTH);//向panel5面板中添加p3面板并放在panel5的南面。
        panel5.add(p4,BorderLayout.NORTH);//向panel5面板中添加p4面板并放在panel5的北面。}}
// 数据库操作实现import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;publicclassMyDBUtil{//先单独写一个方法,获取连接public Connection getCon(){
            Connection con=null;//定义一个连接数据库的变量try{//在java文件中加载驱动类
                Class.forName("com.mysql.cj.jdbc.Driver");//连接数据库
                con=DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?user=root&password=root&useSSL=true&serverTimezone=GMT%2B8");}catch(ClassNotFoundException e){// TODO Auto-generated catch block
                e.printStackTrace();}catch(SQLException e){// TODO Auto-generated catch block
                e.printStackTrace();}return con;//返回连接}//查询所有记录public ResultSet checkAll(){
            Connection con =getCon();//获取上面的连接
            Statement statement=null;
            ResultSet rs=null;try{if(con!=null){//建立查询语句
                    statement = con.createStatement();//使用查询语句获取结果
                    rs=statement.executeQuery("select * from student");}}catch(SQLException e){// TODO Auto-generated catch block
                e.printStackTrace();}return rs;}//查询所有记录并按某一成绩进行排序(升序或降序)public ResultSet checkAll(String grade,String sort){
            Connection con =getCon();//获取上面的连接
            Statement statement=null;
            ResultSet rs=null;try{if(con!=null){//建立查询语句
                    statement = con.createStatement();//使用查询语句获取结果
                    rs=statement.executeQuery("select * from student order by "+grade+" "+sort+"");}}catch(SQLException e){// TODO Auto-generated catch block
                e.printStackTrace();}return rs;}//添加记录publicvoidadd(Student stu){//单独定义一个方法向数据库中添加数据。
            Connection con =getCon();//拿到连接
            PreparedStatement pst =null;//创建预处理对象try{if(con!=null){
                    pst=con.prepareStatement("insert into student values(?,?,?,?,?)");//使用预处理语句提高效率
                    pst.setString(1, stu.getId());//给第一个问号处设值
                    pst.setString(2,stu.getName());//给第二个问号处设值
                    pst.setDouble(3, stu.getMath());//给第三个问号处设值
                    pst.setDouble(4, stu.getPhysics());//给第四个问号处设值
                    pst.setDouble(5, stu.getEnglish());//给第五个问号处设值
                    pst.executeUpdate();//由于使用了预处理语句,执行时就不用传入执行语句。}}catch(SQLException e){// TODO Auto-generated catch block
                e.printStackTrace();}finally{//关闭资源  原则: 先打开的后关闭,后打开的先关闭。 异常最好各处理各的。if(pst!=null){try{
                        pst.close();}catch(SQLException e){// TODO Auto-generated catch block
                        e.printStackTrace();}}if(con!=null){try{
                        con.close();}catch(SQLException e){// TODO Auto-generated catch block
                        e.printStackTrace();}}}}//删除记录publicvoiddelete(Student stu){
            Connection con =getCon();//拿到连接
            PreparedStatement pst =null;//定义预处理变量try{if(con!=null){
                    String sql ="delete from student where 学号 = ?";//设置查询语句
                    pst = con.prepareStatement(sql);//使用预处理语句
                    pst.setString(1, stu.getId());//给问号设置值
                    pst.execute();//执行查询语句}}catch(SQLException e){// TODO Auto-generated catch block
                e.printStackTrace();}finally{if(pst!=null){try{
                        pst.close();}catch(SQLException e){// TODO Auto-generated catch block
                        e.printStackTrace();}}if(con!=null){try{
                        con.close();}catch(SQLException e){// TODO Auto-generated catch block
                        e.printStackTrace();}}}}//修改记录publicvoidmodify(Student stu){         
            Connection con =getCon();//拿到连接
            PreparedStatement pst =null;//预处理语句try{if(con!=null){
                    String sql ="update student set 姓名=?,数学成绩=?,物理成绩=?,英语成绩=? where 学号=?";//设置查询语句
                    pst = con.prepareStatement(sql);//建立查询语句的时候就把sql语句传递进去。
                    pst.setString(1, stu.getName());//给第一处问号设值
                    pst.setFloat(2, stu.getMath());//给第二处问号设值
                    pst.setFloat(3, stu.getPhysics());//给第三处问号设值
                    pst.setFloat(4, stu.getEnglish());//给第四处问号设值
                    pst.setString(5, stu.getId());//给第五处问号设值
                    pst.execute();//执行的时候就不传入sql语句了。}}catch(SQLException e){// TODO Auto-generated catch block
                e.printStackTrace();}finally{if(pst!=null){try{
                        pst.close();}catch(SQLException e){// TODO Auto-generated catch block
                        e.printStackTrace();}}if(con!=null){try{
                        con.close();}catch(SQLException e){// TODO Auto-generated catch block
                        e.printStackTrace();}}}}}

本代码完全由个人实现: (仅做参考)

标签: java sql mysql

本文转载自: https://blog.csdn.net/qq_49529322/article/details/111794487
版权归原作者 清风学Java(毕设君) 所有, 如有侵权,请联系我们删除。

“Java课程设计之 学生成绩管理系统”的评论:

还没有评论