The_dream1121 2024-05-25 03:19 采纳率: 88.2%
浏览 3
已结题

(标签-sql|关键词-Set)



import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;

public class Calcuiator3 {


    public static class ZhuJieMian extends JFrame implements ActionListener {
        private static final long serialVersionUID = 1L;
        //实现序列化,serialVersionUID 用来表明实现序列化类的不同版本间的兼容性
        JTextField x;             //文本框
        String preOperater = "";  //上一次的运算符
        double sum = 0;           //运算结果

//        public caidanlan{
//            
//        }
//
//        private JMenuBar menuBar;
//        private JMenu menuFile;
//
//        public void JMDemo(){
//            JPanel caidan = new JPanel();//
//            JMenuBar caidanlan = new JMenuBar();
//            this.setJMenuBar(menuBar);
//            menuFile = new JMenu("菜单");
//            menuBar.add(menuFile);
////            miSave = new JMenuItem("简易计算器");
////            miExit = new JMenuItem("科学计算器");
////            miCopy = new JMenuItem("程序员");
//        }

        public ZhuJieMian(String title) {
            super(title);
            Container c = getContentPane();      //容器
            c.setLayout(new BorderLayout());     //容器采用边缘布局
            x = new JTextField(50);
            c.add("North", x);
            String[] buttoned = {"7","8", "9", "+/-", "C", "退格", "倒数",
                    "4", "5", "6",  "+", "-", "*", "/",
                    "1", "2", "3","sqrt", "pow", "log10", "%",
                    ".", "0","=","cos", "tan", "exp","历史"};
            JPanel p = new JPanel();      //面板
            p.setLayout(new GridLayout(4, 7, 10, 10)); //面板采用行列数3, 9的网格布局
            for (String s : buttoned) { //用一个for循环将按钮添加进面板并注册监听器
                JButton b = new JButton(s);
                p.add(b);
                b.addActionListener(this);
            }
            c.add("Center", p);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }

        //响应用户事件,根据点击按钮实现相关操作
        public void actionPerformed(ActionEvent e) {
            String Command = e.getActionCommand();
            try {
                if (Character.isDigit(Command.charAt(0))) {//如果按钮事件为数字键
                    x.setText(x.getText() + Command);       //添加数字
                } else if (Command.equals(".")) {            //如果按钮事件为”.”键
                    xiaoshu();
                } else if (Command.equals("+/-")) {          //如果按钮事件为”+/-”键"
                    fuhao();
                } else if (Command.equals("退格")) {          //如果按钮事件为”退格”键
                    backspace();
                } else if (Command.equals("=")) {            //如果按钮事件为"=”键
                    dengyu();
                } else if (Command.equals("sqrt")) {         //如果按钮事件为"sqrt"键
                    sqrt();
                } else if (Command.equals("log")) {          //如果按钮事件为"1og”键
                    log();
                } else if (Command.equals("cos")) {          //如果按钮事件为"cos”键
                    cos();
                } else if (Command.equals("tan")) {          //如果按钮事件为”tan”键
                    tan();
                } else if (Command.equals("exp")) {          //如果按钮事件为"exp”键
                    exp();
                } else if (Command.equals("倒数")) {          //如果按钮事件为”求倒”键"
                    qiudao();
                } else if (Command.equals("C")) {            //如果按钮事件为"C"键
                    clear();
                } else if (Command.equals("历史")){           //如果按钮事件为"历史"键
                    lishi();
                } else {
                    doOperation();                     //记录运算符和输入的数字
                    x.setText("");
                    preOperater = Command;
                }
            } catch (Exception ex) {
                sum = 0;
                x.setText("");
            }
        }

        void xiaoshu() { //添加小数点
            String s = x.getText();
            if (!s.contains(".")) x.setText(s + ".");
        }

        void fuhao() { //添加负号
            String s = x.getText();
            if (!s.contains("-"))
                x.setText("-" + x.getText());
        }

        void backspace() { //退格
            String s = x.getText();
            if (s.length() > 0)
                x.setText(s.substring(0, s.length() - 1));
        } //删除最后-一个字符

        void dengyu() {
            doOperation();
            x.setText("" + sum);
            ShuJu(sum);
            preOperater = "";

        }

        void sqrt() { //求该数的平方根
            double m = Double.parseDouble(x.getText());
            if (m < 0)
                x.setText("负数不能开根号");
            else
                x.setText("" + Math.sqrt(m));
        }

        void log() { //求该数的自然对数
            double m = Double.parseDouble(x.getText());
            if (m < 0)
                x.setText("负数不能进行自然对数运算");
            else
                x.setText("" + Math.log10(m));
        }

        void cos() { //求该数的余弦
            double m = Double.parseDouble(x.getText());
            x.setText("" + Math.cos(Math.toRadians(m)));
        }

        void tan() {//求该数的正切
            double m = Double.parseDouble(x.getText());
            x.setText("" + Math.tan(Math.toRadians(m)));
        }

        void exp() { //求e的幂
            double m = Double.parseDouble(x.getText());
            x.setText("" + Math.exp(m));
        }

        void qiudao() { //求倒数
            if (Double.parseDouble(x.getText()) == 0)
                x.setText("除数不能为零");
            else {
                x.setText(" " + 1 / (Double.parseDouble(x.getText())));
                preOperater = "";
            }
        }

        void clear() { //清零
            sum = 0;
            x.setText("");
            preOperater = "";
        }

        //根据记录的运算符将前面记录的结果sum与文本框中的数据进行运算
        void doOperation() {
            double m = Double.parseDouble(x.getText());
            if (preOperater.equals("")) sum = m;     //将结果与文本框中的数据按照前一个运算符运算
            if (preOperater.equals("+")) sum = sum + m; //加法运算
            if (preOperater.equals("-")) sum = sum - m; //减法运算
            if (preOperater.equals("*")) sum = sum * m; //乘法运算
            if (preOperater.equals("/")) sum = sum / m; //除法运算
            if (preOperater.equals("%")) sum = sum % m; //求余
            if (preOperater.equals("pow")) sum = Math.pow(sum, m);
        }
        void ShuJu(double sum){
            SimpleDateFormat data=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            double s1=sum;
            Connection con = null;
            PreparedStatement ps = null;
            try {
                try {
                    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                }
                con = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;database=KECHENGSHEJI", "shengyiguo", "gena20031121");
                con.setAutoCommit(true);
                System.out.println("已将数据添加到表格");
                String sql = "INSERT INTO shuju(日期,数据) VALUES (?,?)";
                ps = con.prepareStatement(sql);
                ps.setString(1, data.format(new Date()));
                ps.setString(2, String.valueOf(s1));
                ps.executeUpdate();
            }catch (SQLException e){
                e.printStackTrace();
            }
            try {
                if (con != null)
                    con.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
            try {
                if (ps != null)
                    ps.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        void lishi(){
            ResultSet resultSet=null;
            Connection con = null;
            Statement stat;
            PreparedStatement ps= null;
            String time;
            Double shuju;
            try {
                try {
                    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                }
                con = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;database=KECHENGSHEJI","shengyiguo","gena20031121");
                con.setAutoCommit(true);
                stat=con.createStatement();
                String sql="SELECT 日期,数据 FROM shuju";
                resultSet=stat.executeQuery(sql);
                ps=con.prepareStatement(sql);
                System.out.println("    "+"日期"+"                "+"数据");
                while(resultSet.next()){
                    time=resultSet.getString("日期");
                    shuju=resultSet.getDouble("数据");
                    ArrayList<String> arrayList1=new ArrayList<>();
                    ArrayList<String> arrayList2=new ArrayList<>();
                    arrayList1.add(time);
                    arrayList2.add(String.valueOf(shuju));
                    Object[][] table=new Object[arrayList1.size()][2];
                    for (int i = 0; i < arrayList1.size(); i++) {
                        table[i][0]=arrayList1.get(i);
                        table[i][1]=arrayList2.get(i);
                    }

                    System.out.println(Arrays.deepToString(table));
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            if (con!=null) {
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (ps!=null) {
                try {
                    ps.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (resultSet!=null){
                try{
                    resultSet.close();
                }catch (SQLException e){
                    e.printStackTrace();
                }
            }
        }
    }
    public static void main(String[] args) {
        JFrame x=new ZhuJieMian("计算器");
        JMenuBar menuBar = new JMenuBar();
        x.setBounds(300,100,630,290);
        //x.setSize(630,290);         //按键大小,若大小不合适则会出现文字显示不全的现象
        x.setVisible(true);
    }
}

在这个代码的基础上怎么添加菜单以及二进制转换,请求完整的代码

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-25 03:19
    关注

    引自免费微信小程序:皆我百晓生

    在给定的Java代码基础上,我们可以添加一个简单的菜单栏,并且增加一个功能来处理二进制转换。以下是修改后的代码:

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.*;
    import java.text.SimpleDateFormat;
    import java.util.*;
    
    public class Calculator3 {
    
        public static class ZhuJieMian extends JFrame implements ActionListener {
            private static final long serialVersionUID = 1L;
            private JTextField x;
            String preOperater = "";
            double sum = 0;
    
            public ZhuJieMian(String title) {
                super(title);
                Container c = getContentPane();
                c.setLayout(new BorderLayout());
                x = new JTextField(50);
                c.add("North", x);
    
                String[] buttoned = {"7", "8", "9", "+/-", "C", "退格", "倒数",
                        "4", "5", "6", "+", "-", "*", "/", 
                        "1", "2", "3", "sqrt", "pow", "log10", "%",
                        ".", "0", "=", "cos", "tan", "exp", "历史"};
                JPanel p = new JPanel();
                p.setLayout(new GridLayout(4, 7, 10, 10));
                for (String s : buttoned) {
                    JButton b = new JButton(s);
                    p.add(b);
                    b.addActionListener(this);
                }
                c.add("Center", p);
    
                JMenuBar menuBar = createMenuBar();
                setJMenuBar(menuBar);
    
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            }
    
            // 创建菜单栏
            private JMenuBar createMenuBar() {
                JMenuBar menuBar = new JMenuBar();
    
                // 创建文件菜单
                JMenu menuFile = new JMenu("文件");
                menuBar.add(menuFile);
    
                // 创建转换子菜单
                JMenu menuConvert = new JMenu("转换");
                menuFile.add(menuConvert);
    
                // 添加二进制转换菜单项
                JMenuItem menuItemBinary = new JMenuItem("二进制");
                menuItemBinary.addActionListener(e -> binaryConversion());
                menuConvert.add(menuItemBinary);
    
                return menuBar;
            }
    
            // 响应用户事件,根据点击按钮实现相关操作
            @Override
            public void actionPerformed(ActionEvent e) {
                String command = e.getActionCommand();
                try {
                    if (Character.isDigit(command.charAt(0))) {
                        x.setText(x.getText() + command);
                    } else if (command.equals(".")) {
                        xiaoshu();
                    } else if (command.equals("+/-")) {
                        fuhao();
                    } else if (command.equals("退格")) {
                        backspace();
                    } else if (command.equals("=")) {
                        dengyu();
                    } else if (command.equals("sqrt")) {
                        sqrt();
                    } else if (command.equals("log")) {
                        log();
                    } else if (command.equals("cos")) {
                        cos();
                    } else if (command.equals("tan")) {
                        tan();
                    } else if (command.equals("exp")) {
                        exp();
                    } else if (command.equals("倒数")) {
                        qiudao();
                    } else if (command.equals("C")) {
                        clear();
                    } else if (command.equals("历史")) {
                        lishi();
                    } else {
                        doOperation();
                        x.setText("");
                        preOperater = command;
                    }
                } catch (Exception ex) {
                    sum = 0;
                    x.setText("");
                }
            }
    
            // ...其他方法保持不变...
    
            // 二进制转换方法
            private void binaryConversion() {
                String inputText = x.getText();
                if (inputText.matches("\\d+")) {
                    int decimalNumber = Integer.parseInt(inputText);
                    String binaryString = Integer.toBinaryString(decimalNumber);
                    JOptionPane.showMessageDialog(null, "十进制:" + decimalNumber + "\n二进制:" + binaryString);
                } else {
                    JOptionPane.showMessageDialog(null, "请输入一个整数进行二进制转换");
                }
            }
        }
    
        public static void main(String[] args) {
            ZhuJieMian calculator = new ZhuJieMian("计算器");
            calculator.setBounds(300, 100, 630, 290);
            calculator.setVisible(true);
        }
    }
    

    这个修改后的代码在ZhuJieMian类中创建了一个新的createMenuBar方法,用于构建菜单栏。我们还添加了一个名为menuConvert的新菜单,其中包含一个名为menuItemBinary的菜单项,它关联到binaryConversion方法。当用户从菜单中选择“二进制”时,会弹出一个消息框,显示输入的十进制数对应的二进制表示。

    注意:为了使此示例运行,确保已经导入了Microsoft SQL Server JDBC驱动程序,并且数据库连接信息(URL、用户名和密码)是正确的。此外,数据库中需要有一个名为shuju的表,包含字段日期数据

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 6月11日
  • 已采纳回答 6月3日
  • 创建了问题 5月25日