如何让自己的JAVA学生管理系统作业脱颖而出?可视化!

就这?
源代码链接:https://download.csdn.net/download/weixin_46840974/12546310

当你的同学还在DOS界面苦心挣扎的时候,脱颖而出的做法就是让你的程序“可视化”。
那到底要用到来实现?
就我个人而言,如果要完成一个可视化窗口,那么就需要寻找一个简单的窗体实现的代码借此学习。因此我找到了这个网站(https://segmentfault.com/a/1190000009308776)并学习。
那么我们可以得到这样一个思路:想要完成一个大项目,那么就需要懂得如何学习每个小功能。
以下就是我所用到的一些网址整理,免去大家花费时间。希望对大家有帮助。

创建表格JTable(用来输出学生信息):
	https://docs.oracle.com/javase/tutorial/uiswing/components/table.html#data
替换左上角图标:
	https://blog.csdn.net/qxhly/article/details/71541248
登录界面的文字(JTable)、填空格(JTextField)、按钮功能(JButton):
	http://c.biancheng.net/view/1206.html(swing功能首页,具体功能可以在左栏找)
	https://www.cnblogs.com/biehongli/p/5751149.html

此外还有我所用到但并不是很重要的小功能:

关于JTable所用到的Objcet的一些问题:
	https://bbs.csdn.net/topics/350210032
通过JButton关闭应用程序:
	https://blog.csdn.net/oojustin/article/details/84294603
限制文本域输写:(防止暴力破解密码)
	https://zhidao.baidu.com/question/936778205491188492.html
更改并美化JButton:
	https://blog.csdn.net/pinkriverside/article/details/71104575
将窗体置顶:
	https://blog.csdn.net/friendan/article/details/7036394
删除窗体:
	https://blog.csdn.net/sky15737/article/details/50850315
同一个类下创建两个窗口:
	https://blog.csdn.net/zhangzhikang_zzk/article/details/51416878

同时在我自学的过程中也遇到了许多问题:

读取学生时的编码问题:
	https://blog.csdn.net/zhu1371884551/article/details/103713306?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
	

总结下来上面的三个功能应该是首要功能,这样就可一实现一个登陆界面

@[TOC]登录界面的实现
登录界面

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.Random;


public class window {
    public static void main(String[] args) {
        new TestDemo("学生管理系统");


    }
}

class TestDemo extends JFrame {

    private final String userName = "123";
    private final String passWord = "123";

    private int windowWidth;
    private int windowHeight;
    private int screenSizeWidth;
    private int screenSizeHeight;

    public TestDemo(String title) {
        super(title);
        super.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setSize(256,300);
        this.setLayout(null);
        this.setResizable(false);
        setWindow();
        this.setVisible(true);

    }
    public void setWindow() {

        //ImageIcon icon = new ImageIcon("logo.png");
        //this.setIconImage(icon.getImage());
        ImageIcon icon = new ImageIcon("pic\\logo.png");
        this.setIconImage(icon.getImage());

        Dimension screenSize = getToolkit().getDefaultToolkit().getScreenSize();
        screenSizeWidth = (int)screenSize.getWidth();
        screenSizeHeight= (int)screenSize.getHeight();
        windowWidth = this.getWidth();
        windowHeight= this.getHeight();
        this.setBounds((int)(screenSizeWidth-windowWidth)/2, (int)(screenSizeHeight-windowHeight)/2,windowWidth,windowHeight);

        JLabel userName_label = new JLabel("姓名:");
        JLabel passWord_label = new JLabel("密码:");
        JLabel TipsInfo = new JLabel("请输入账号和密码:");
        JLabel capStr = new JLabel("");
        final JTextField user_field = new JTextField();
        final JTextField capStr_field = new JTextField();
        final JPasswordField pass_field = new JPasswordField();
        JButton login_btn = new JButton("登录");
        JButton regis_btn = new JButton("咨询");

        TipsInfo.setBounds(15,0,300,50);
        userName_label.setBounds(30, 50, 100, 50);
        passWord_label.setBounds(30,80,100,50);
        user_field.setBounds(30+50,50+15,125,25);
        pass_field.setBounds(30+50,80+15,125,25);
        login_btn.setBounds(125,180,80,40);
        regis_btn.setBounds(25,180,80,40);

        this.add(TipsInfo);
        this.add(userName_label);
        this.add(passWord_label);
        this.add(user_field);
        this.add(pass_field);
        this.add(login_btn);
        this.add(regis_btn);

        regis_btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null,"如需帮助请联系作者"+"\n"+"LC","帮助",JOptionPane.QUESTION_MESSAGE);
            }
        });

        login_btn.addActionListener(new ActionListener() {
            int Hub;
            int readHuB;
            @Override
            public void actionPerformed(ActionEvent e) {
                //if(Hub == 0) -->  ~~~~~~~此处验证码先行~~~~~~~

                try {
                    if(user_field.getText().equals(userName) && pass_field.getText().equals(passWord)){                  
 //此处调用下一个窗口并关闭当前窗口
     			setVisible(false);
                        systemMenu systemmenu = new systemMenu();
                        new Menu("主菜单");

                        //System.txt --> 0
                        Writer wr = new FileWriter("dataFiles\\System.txt");
                        wr.write(String.valueOf(Hub));
                        wr.close();

                    }else{
                        readTxt readHub = new readTxt();
                        readHuB = readHub.hub;

                        if (readHuB>50){
                            JOptionPane.showMessageDialog(null, "登陆失败,请检查账号和密码是否错误\n剩余机会:(0/3)请联系管理员", "Login", JOptionPane.ERROR_MESSAGE);
                            user_field.setEnabled(false);           //阻止输入
                        }else {

                            Hub++;  
                            File writeHub = new File("dataFiles\\System.txt");
                            BufferedWriter out = new BufferedWriter(new FileWriter(writeHub));
                            out.write(String.valueOf(Hub));
                            out.flush();
                            out.close();

                            System.out.println(readHuB);

                            switch (Hub) {
                                case 0:
                                    break;
                                case 1:
                                    JOptionPane.showMessageDialog(null, "登陆失败,请检查账号和密码是否错误\n剩余机会:(3/3)", "Login", JOptionPane.ERROR_MESSAGE);
                                    break;
                                case 2:
                                    JOptionPane.showMessageDialog(null, "登陆失败,请检查账号和密码是否错误\n剩余机会:(2/3)", "Login", JOptionPane.ERROR_MESSAGE);
                                    break;
                                case 3:
                                    JOptionPane.showMessageDialog(null, "登陆失败,请检查账号和密码是否错误\n剩余机会:(1/3)", "Login", JOptionPane.ERROR_MESSAGE);
                                    break;
                                default:
                                    JOptionPane.showMessageDialog(null, "登陆失败,请检查账号和密码是否错误\n剩余机会:(0/3)请联系管理员", "Login", JOptionPane.ERROR_MESSAGE);
                                    break;
                            }
                            user_field.setText("");
                            pass_field.setText("");
                        }
                    }
                } catch (IOException ioException) {
                    ioException.printStackTrace();
                }
            }
        });
    }
}

@[TOC]登录后调用的功能主菜单(我们学校JAVA作业就是以下要求)
系统菜单


import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class systemMenu {
    public static void main(String[] args) {
        new Menu("主菜单");
    }
}
class Menu extends JFrame{
    private int windowWidth;
    private int windowHeight;
    private int screenSizeWidth;
    private int screenSizeHeight;

    public Menu(String title){
        super(title);
        super.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setSize(220,300);
        //this.setLocation();
        this.setLayout(null);
        this.setResizable(false);
        setMenu();
        this.setVisible(true);
        this.setAlwaysOnTop(true);

    }
    public void setMenu(){
        ImageIcon icon = new ImageIcon("pic\\logo.png");
        this.setIconImage(icon.getImage());

        Dimension screenSize = getToolkit().getDefaultToolkit().getScreenSize();
        screenSizeWidth = (int)screenSize.getWidth();
        screenSizeHeight= (int)screenSize.getHeight();
        windowWidth = this.getWidth();
        windowHeight= this.getHeight();
        this.setBounds((int)(screenSizeWidth-windowWidth)/2, (int)(screenSizeHeight-windowHeight)/2,windowWidth,windowHeight);

        JButton Menu1 = new JButton("1学生原始成绩输出");
        JButton Menu2 = new JButton("2根据学号升序输出");
        JButton Menu3 = new JButton("3根据均分降序输出");
        JButton Menu4 = new JButton("4输出指定学院学生");
        JButton Menu5 = new JButton("5搜索查询学生成绩");
        JButton Menu6 = new JButton("6修改学生信息成绩");
        JButton Menu7 = new JButton("退出");

        Menu1.setBounds(10,10,182,30);
        Menu2.setBounds(10,10+32,182,30);
        Menu3.setBounds(10,42+32,182,30);
        Menu4.setBounds(10,74+32,182,30);
        Menu5.setBounds(10,106+32,182,30);
        Menu6.setBounds(10,138+32,182,30);
        Menu7.setBounds(10,180+32,182,30);

        this.add(Menu1);
        this.add(Menu2);
        this.add(Menu3);
        this.add(Menu4);
        this.add(Menu5);
        this.add(Menu6);
        this.add(Menu7);


        Menu1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                testOfJTable stuSystem = new testOfJTable("0");
                stuSystem.createAndShowGUI("0");
            }
        });

        Menu2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                sortSystem sortByName = new sortSystem("stuId");
                sortByName.createAndShowGUI("stuId");
            }
        });

        Menu3.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                sortSystem sortByName = new sortSystem("avg");
                sortByName.createAndShowGUI("avg");
            }
        });

        Menu4.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                collegeSystem collegesys = new collegeSystem();
                new collegeSys("学院");
                setVisible(false);
            }
        });

        Menu5.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                searchStudents stuSearch =  new searchStudents();
                new simpleSearch("搜索");

            }
        });

        Menu6.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                changeStudents changeInfo = new changeStudents();
                new changeSearch("修改");

            }
        });

        Menu7.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
    }
}

@[TOC]学生信息输出
值得注意的是,如果想通过JTable输出学生数据,需要把读取的信息变为Object(如下),这里我的代码太长了,大家可以下载我的project。我把我学习的源码写下来好了:(https://docs.oracle.com/javase/tutorial/displayCode.html?code=https://docs.oracle.com/javase/tutorial/uiswing/examples/components/SimpleTableDemoProject/src/components/SimpleTableDemo.java)


import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
 
public class SimpleTableDemo extends JPanel {
    private boolean DEBUG = false;
 
    public SimpleTableDemo() {
        super(new GridLayout(1,0));
 //如果需要添加别的数据,就可以在这里多加一个元素
        String[] columnNames = {"First Name",
                                "Last Name",
                                "Sport",
                                "# of Years",
                                "Vegetarian",
                                "在这里加~~"};
 
        Object[][] data = {
        {"Kathy", "Smith",
         "Snowboarding", new Integer(5), new Boolean(false)},
        {"John", "Doe",
         "Rowing", new Integer(3), new Boolean(true)},
        {"Sue", "Black",
         "Knitting", new Integer(2), new Boolean(false)},
        {"Jane", "White",
         "Speed reading", new Integer(20), new Boolean(true)},
        {"Joe", "Brown",
         "Pool", new Integer(10), new Boolean(false)}
        };
 
        final JTable table = new JTable(data, columnNames);
        table.setPreferredScrollableViewportSize(new Dimension(500, 70));
        table.setFillsViewportHeight(true);
 
        if (DEBUG) {
            table.addMouseListener(new MouseAdapter() {
                public void mouseClicked(MouseEvent e) {
                    printDebugData(table);
                }
            });
        }
 
        //Create the scroll pane and add the table to it.
        JScrollPane scrollPane = new JScrollPane(table);
 
        //Add the scroll pane to this panel.添加滚轮
        add(scrollPane);
    }
 
    private void printDebugData(JTable table) {
        int numRows = table.getRowCount();
        int numCols = table.getColumnCount();
        javax.swing.table.TableModel model = table.getModel();
 
        System.out.println("Value of data: ");
        for (int i=0; i < numRows; i++) {
            System.out.print("    row " + i + ":");
            for (int j=0; j < numCols; j++) {
                System.out.print("  " + model.getValueAt(i, j));
            }
            System.out.println();
        }
        System.out.println("--------------------------");
    }
 
    /**
     * Create the GUI and show it.  For thread safety,
     * this method should be invoked from the
     * event-dispatching thread.
     */
    private static void createAndShowGUI() {
        //Create and set up the window.
        JFrame frame = new JFrame("SimpleTableDemo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        //Create and set up the content pane.
        SimpleTableDemo newContentPane = new SimpleTableDemo();
        newContentPane.setOpaque(true); //content panes must be opaque
        frame.setContentPane(newContentPane);
 
        //Display the window.
        frame.pack();
        frame.setVisible(true);
    }
 
    public static void main(String[] args) {
        //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}

@[TOC]功能1:学生原始成绩输出
这个功能就好似照搬上面这个代码,但是如果照搬的话,岂不是要写100个data?所以一定要用到循环了。我是通过for来实现

for(int i = 0; i < 100; i++){
    data0[i][0] = (Object)stus[i].stuId;
    data0[i][1] = (Object)stus[i].stuName;
    data0[i][2] = (Object)stus[i].sex;
    data0[i][3] = (Object)stus[i].college;

    data0[i][4] = (Object)stus[i].scores[0];
    data0[i][5] = (Object)stus[i].scores[1];
    data0[i][6] = (Object)stus[i].scores[2];
    data0[i][7] = (Object)stus[i].scores[3];
    data0[i][8] = (Object)stus[i].scores[4];
    data0[i][9] = (Object)stus[i].scores[5];
    data0[i][10] = (Object)stus[i].scores[6];
    data0[i][11] = (Object)stus[i].scores[7];
    data0[i][12] = (Object)stus[i].scores[8];
    data0[i][13] = (Object)stus[i].scores[9];
    data0[i][14] = (Object)stus[i].avg;

}
final JTable table = new JTable(data0, columnNames);

这样就把String类型的学生转成Object以此输出(名单信息均为随机生成,不存在侵犯隐私的问题)
功能1
@[TOC]功能2:根据学号升序输出
@[TOC]功能3:根据均分降序输出
这两个功能的原理相似同时也非常好理解。通过对String类型时的学生信息进行冒泡排序,之后再将排完序的信息转给Object的data让其显示在JTable中。

i < 100;i++) {
    for (int j = i + 1; j < 100; j++) {
        if (stus[i].stuId.compareTo(stus[j].stuId)>0?true:false) {
            stus2[i] = stus[i];
            stus[i] = stus[j];
            stus[j] = stus2[i];
        }
    }
}
for (int i = 0; i < 100; i++) {
    data0[i][0] = (Object) stus[i].stuId;
    data0[i][1] = (Object) stus[i].stuName;
    data0[i][2] = (Object) stus[i].sex;
    data0[i][3] = (Object) stus[i].college;

    data0[i][4] = (Object) stus[i].scores[0];
    data0[i][5] = (Object) stus[i].scores[1];
    data0[i][6] = (Object) stus[i].scores[2];
    data0[i][7] = (Object) stus[i].scores[3];
    data0[i][8] = (Object) stus[i].scores[4];
    data0[i][9] = (Object) stus[i].scores[5];
    data0[i][10] = (Object) stus[i].scores[6];
    data0[i][11] = (Object) stus[i].scores[7];
    data0[i][12] = (Object) stus[i].scores[8];
    data0[i][13] = (Object) stus[i].scores[9];
    data0[i][14] = (Object) stus[i].avg;
}
final JTable table = new JTable(data0, columnNames);
for(int i = 0 ;i < 100;i++) {
    for (int j = i + 1; j < 100; j++) {
        if (stus[i].avg < stus[j].avg) {
            stus2[i] = stus[i];
            stus[i] = stus[j];
            stus[j] = stus2[i];
        }
    }
}
for (int i = 0; i < 100; i++) {
    data0[i][0] = (Object) stus[i].stuId;
    data0[i][1] = (Object) stus[i].stuName;
    data0[i][2] = (Object) stus[i].sex;
    data0[i][3] = (Object) stus[i].college;

    data0[i][4] = (Object) stus[i].scores[0];
    data0[i][5] = (Object) stus[i].scores[1];
    data0[i][6] = (Object) stus[i].scores[2];
    data0[i][7] = (Object) stus[i].scores[3];
    data0[i][8] = (Object) stus[i].scores[4];
    data0[i][9] = (Object) stus[i].scores[5];
    data0[i][10] = (Object) stus[i].scores[6];
    data0[i][11] = (Object) stus[i].scores[7];
    data0[i][12] = (Object) stus[i].scores[8];
    data0[i][13] = (Object) stus[i].scores[9];
    data0[i][14] = (Object) stus[i].avg;
}
final JTable table = new JTable(data0, columnNames);

@[TOC]功能4:输出指定学院学生
学院系统
以信息学院为例
所用的主要方法是,通过JButton来调用其他方法(具体在testOfJTable.java和sortSystem.java中)

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class systemMenu {
    public static void main(String[] args) {
        new Menu("主菜单");
    }
}
class Menu extends JFrame{
    private int windowWidth;
    private int windowHeight;
    private int screenSizeWidth;
    private int screenSizeHeight;

    public Menu(String title){
        super(title);
        super.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setSize(220,300);
        //this.setLocation();
        this.setLayout(null);
        this.setResizable(false);
        setMenu();
        this.setVisible(true);
        this.setAlwaysOnTop(true);

    }
    public void setMenu(){
        ImageIcon icon = new ImageIcon("pic\\logo.png");
        this.setIconImage(icon.getImage());

        Dimension screenSize = getToolkit().getDefaultToolkit().getScreenSize();
        screenSizeWidth = (int)screenSize.getWidth();
        screenSizeHeight= (int)screenSize.getHeight();
        windowWidth = this.getWidth();
        windowHeight= this.getHeight();
        this.setBounds((int)(screenSizeWidth-windowWidth)/2, (int)(screenSizeHeight-windowHeight)/2,windowWidth,windowHeight);

        JButton Menu1 = new JButton("1学生原始成绩输出");
        JButton Menu2 = new JButton("2根据学号升序输出");
        JButton Menu3 = new JButton("3根据均分降序输出");
        JButton Menu4 = new JButton("4输出指定学院学生");
        JButton Menu5 = new JButton("5搜索查询学生成绩");
        JButton Menu6 = new JButton("6修改学生信息成绩");
        JButton Menu7 = new JButton("退出");

        Menu1.setBounds(10,10,182,30);
        Menu2.setBounds(10,10+32,182,30);
        Menu3.setBounds(10,42+32,182,30);
        Menu4.setBounds(10,74+32,182,30);
        Menu5.setBounds(10,106+32,182,30);
        Menu6.setBounds(10,138+32,182,30);
        Menu7.setBounds(10,180+32,182,30);

        this.add(Menu1);
        this.add(Menu2);
        this.add(Menu3);
        this.add(Menu4);
        this.add(Menu5);
        this.add(Menu6);
        this.add(Menu7);


        Menu1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                testOfJTable stuSystem = new testOfJTable("0");
                stuSystem.createAndShowGUI("0");
            }
        });

        Menu2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                sortSystem sortByName = new sortSystem("stuId");
                sortByName.createAndShowGUI("stuId");
            }
        });

        Menu3.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                sortSystem sortByName = new sortSystem("avg");
                sortByName.createAndShowGUI("avg");
            }
        });

        Menu4.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                collegeSystem collegesys = new collegeSystem();
                new collegeSys("学院");
                setVisible(false);
            }
        });

        Menu5.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                searchStudents stuSearch =  new searchStudents();
                new simpleSearch("搜索");

            }
        });

        Menu6.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                changeStudents changeInfo = new changeStudents();
                new changeSearch("修改");

            }
        });

        Menu7.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
    }
}

@[TOC]功能5:搜索查询学生成绩
该功能主要是在testOfJTable中进行比较,然后再通过Object[1][15]来输出
搜索学生
可以同时根据学号或姓名搜索学生信息:
搜索结果
(这里 当学生姓名错误以后 会有个小BUG)
核心代码(testOfJTable中):

//具体是通过比较学号和姓名来完成的compereTo()
int i=0;
int ii=0;
Object[][] dataStu = new Object[1][15];
searchStudents searchStu_field = new searchStudents();
System.out.println(searchStu_field);
String testOfthis;
testOfthis = Menu;      //可算成功了,这里需要一个String变量当作强梁进行过渡
for(int j=0;j<100;j++){
    if (stus[j].stuName.equals(testOfthis)){//stus[j].stuName.equals(Menu)==true
        dataStu[i][0] = (Object)stus[j].stuId;
        dataStu[i][1] = (Object)stus[j].stuName;
        dataStu[i][2] = (Object)stus[j].sex;
        dataStu[i][3] = (Object)stus[j].college;

        dataStu[i][4] = (Object)stus[j].scores[0];
        dataStu[i][5] = (Object)stus[j].scores[1];
        dataStu[i][6] = (Object)stus[j].scores[2];
        dataStu[i][7] = (Object)stus[j].scores[3];
        dataStu[i][8] = (Object)stus[j].scores[4];
        dataStu[i][9] = (Object)stus[j].scores[5];
        dataStu[i][10] = (Object)stus[j].scores[6];
        dataStu[i][11] = (Object)stus[j].scores[7];
        dataStu[i][12] = (Object)stus[j].scores[8];
        dataStu[i][13] = (Object)stus[j].scores[9];
        dataStu[i][14] = (Object)stus[j].avg;
        i++;
    }
    if (stus[j].stuId.equals(testOfthis)){//stus[j].stuName.equals(Menu)==true
        dataStu[i][0] = (Object)stus[j].stuId;
        dataStu[i][1] = (Object)stus[j].stuName;
        dataStu[i][2] = (Object)stus[j].sex;
        dataStu[i][3] = (Object)stus[j].college;

        dataStu[i][4] = (Object)stus[j].scores[0];
        dataStu[i][5] = (Object)stus[j].scores[1];
        dataStu[i][6] = (Object)stus[j].scores[2];
        dataStu[i][7] = (Object)stus[j].scores[3];
        dataStu[i][8] = (Object)stus[j].scores[4];
        dataStu[i][9] = (Object)stus[j].scores[5];
        dataStu[i][10] = (Object)stus[j].scores[6];
        dataStu[i][11] = (Object)stus[j].scores[7];
        dataStu[i][12] = (Object)stus[j].scores[8];
        dataStu[i][13] = (Object)stus[j].scores[9];
        dataStu[i][14] = (Object)stus[j].avg;
        ii++;
    }
}

if(i == 0 || ii==0){
    JOptionPane.showMessageDialog(null,"请输入正确的学生姓名","姓名输入错误",JOptionPane.PLAIN_MESSAGE);
}else{
    JTable table = new JTable(dataStu, columnNames);
    table.setPreferredScrollableViewportSize(new Dimension(1250,17));
    table.setFillsViewportHeight(true);
    rollPane = new JScrollPane(table);
    add(scrollPane);
}

@[TOC]功能6:修改学生信息成绩
这里我先是通过功能5的调用,搜索出了学生以后用以预览原成绩,再通过新建另一个窗口用JComboBox进行修改。
信息修改窗口
相较于上面提到的相比,唯一多的代码在CreateAndShowGUI()中:

public void createAndShowGUI(String searchPerson, Boolean bool){
    JFrame infoFrame = new JFrame("学生信息");
    ImageIcon icon = new ImageIcon("pic\\logo.png");
    infoFrame.setIconImage(icon.getImage());

    testChange newContentPane = new testChange(searchPerson,true);
    newContentPane.setOpaque(false);
    infoFrame.setContentPane(newContentPane);

    infoFrame.setBounds(300,250,0,0);

    infoFrame.pack();
    infoFrame.setVisible(bool);
    infoFrame.setAlwaysOnTop(true);

    JComboBox oldScore = new JComboBox();
    oldScore.setBounds(70,15,80,25);
    JTextField newScore = new JTextField();
    //newScore.setEditable(true);
    newScore.setBounds(70,50,80,25);
    JButton changeScore = new JButton("修改");
    changeScore.setBounds(10,100,60,50);

    JLabel Old = new JLabel("旧成绩");
    JLabel New = new JLabel("新成绩");
    Old.setBounds(15,10,50,30);
    New.setBounds(15,45,50,30);


    JFrame cerFrame = new JFrame("窗体");
    cerFrame.setIconImage(icon.getImage());
    JButton certain = new JButton("确认");
    certain.setBounds(90,100,60,50);
    cerFrame.setUndecorated(true);
    cerFrame.setLayout(null);
    cerFrame.setBounds(300,500,166,180);
    cerFrame.add(certain);
    cerFrame.add(Old);
    cerFrame.add(New);
    cerFrame.setVisible(bool);
    cerFrame.setAlwaysOnTop(true);


    String[] weekDays = {
            "课程1",
            "课程2",
            "课程3",
            "课程4",
            "课程5",
            "课程6",
            "课程7",
            "课程8",
            "课程9",
            "课程10"
    };

    for (int i = 0;i < 10;i++){
        oldScore.addItem(weekDays[count++]);
    }
    cerFrame.add(oldScore);
    cerFrame.add(newScore);
    cerFrame.add(changeScore);

    oldScore.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println(oldScore.getSelectedItem());		//测试用
        }
    });

    changeScore.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            if( Integer.parseInt(newScore.getText()) >100 || Integer.parseInt(newScore.getText()) <0){
                JOptionPane.showMessageDialog(null,"分数范围错误!\n(0-100)");
            }else{
                modifyScores(String.valueOf(oldScore.getSelectedItem()),newScore.getText(),stuID);
                System.out.println(String.valueOf(oldScore.getSelectedItem()));
                wFile(modifyScores(String.valueOf(oldScore.getSelectedItem()),newScore.getText(),stuID));

            }

        }
    });

    certain.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            infoFrame.setVisible(false);
            cerFrame.setVisible(false);
        }
    });
    count = 0;
}

鄙人自学粗陋,定有不足之处还望谅解并指出。如果哪里有不明白的地方也欢迎讨论,洗耳恭听。虽然篇幅有些长,鄙人可是花了几天时间慢慢写下,也非常佩服你能看到这儿~


版权声明:本文为weixin_46840974原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。