四则运算小程序

PSP表格

计划 计划完成需要的时间 实际完成需要的时间
估计这个任务需要多少时间,并规划大致工作步骤 15  10
需求分析 (包括学习新技术) 150 120
生成设计文档 30 20
设计复审 10 8
代码规范 (为目前的开发制定合适的规范) 10 10
具体设计 30 20
具体编码 20 15
代码复审 20 10
测试(自我测试,修改代码,提交修改) 30 30
测试报告 20 15
计算工作量 20 10
事后总结 ,并提出过程改进计划 10 20
总计 365 288

1、欢迎界面

 

 

 

 

 

 

 

 

 

 

 

 

//登录界面
package AllCode;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;

public class Welcome extends JPanel{
    static JFrame w = new JFrame ( "Managementsystem");
    JPanel p2 = new JPanel();
    JButton b = new JButton("确定" );
    //背景
      void bj(){
          //1.把图片添加到标签里(把标签的大小设为和图片大小相同),把标签放在分层面板的最底层;
          ImageIcon bg=new ImageIcon("src/imgs/789.jpeg");
          JLabel label=new JLabel(bg);
          label.setSize(bg.getIconWidth(),bg.getIconHeight());
          w.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));
          //2.把窗口面板设为内容面板并设为透明
          JPanel pan=(JPanel)w.getContentPane();
          pan.setOpaque(false);    
          }
         //按钮
         void button() {
//              setLayout(null);//设置任意布局
              JButton button1 = new JButton("登录");
              JButton button2 = new JButton("注    册");
              button1.addMouseListener(new Monitor2());
              button2.addMouseListener(new Monitor3());
              button1.setBounds(342,285,80,40);
              button2.setBounds(445,285,80,40);
              button1.setBackground(Color.green);
              button2.setBackground(Color.red);
              add(button1);
              add(button2);
             }
         void bj2() {
             //放置图片
             w.setLayout(null);//设置任意布局
             JLabel bj2=new JLabel(new ImageIcon("src/imgs/123.png"));
             bj2.setBounds(728, 0, 100, 100);
             w.add(bj2);
         }
    //总排版
    Welcome(){
        setLayout(null);//设置任意布局
        bj();
        button();
//        bj2();
        w.addWindowListener(new Wind());
        b.addMouseListener(new Monitor2());
    //    自定义窗口位置、大小
        w.setBounds(400,200,843,550);
        w.setVisible(true);
        }
    //字体
    public void paint(Graphics g) {
        Graphics2D g2 = (Graphics2D)g;
        String value = "Java";
        String value2 = "Java";
        String value3 = "Java";
        int x = 30;
        int y =80;
        int x2 =530;
        int y2 =180;
        int x3 =350;
        int y3 =500;
        Font font = new Font("方正舒体",Font.BOLD,60);
        GradientPaint paint = new GradientPaint(400,200,Color.BLUE,600,200,Color.RED,true);
        g2.setPaint(paint);
        g2.setFont(font);
        value = "欢迎进入学生信息管理系统!";
        g2.drawString(value,x,y);
        
        Font font2 = new Font("方正舒体",Font.BOLD,40);
        GradientPaint paint2 = new GradientPaint(200,100,Color.BLUE,600,200,Color.RED,true);
        g2.setPaint(paint2);
        g2.setFont(font2);
        value2 = "——19信计1班";
        g2.drawString(value2,x2,y2);
        
        Font font3 = new Font("方正舒体",Font.BOLD,30);
        GradientPaint paint3 = new GradientPaint(400,200,Color.BLUE,600,200,Color.RED,true);
        g2.setPaint(paint3);
        g2.setFont(font3);
        value3 = "广东技术师范大学";
        g2.drawString(value3,x3,y3);
    }
    //主函数
    public static void main(String args[]){
        Welcome wm=    new Welcome( );
        w.add(wm);
    }
    //鼠标事件--登录
    private class Monitor2 extends MouseAdapter{
        public void mousePressed(MouseEvent e) {
            new Login_Register();
            w.setVisible(false);
        }
    }
    //鼠标事件--注册
    private class Monitor3 extends MouseAdapter{
        public void mousePressed(MouseEvent e) {
            new AdminRegister();
            w.setVisible(false);
        }
    }
    //窗口事件
    private class Wind extends WindowAdapter{
        public void windowClosing(WindowEvent e) {
            w.setVisible(false);
            System.exit(0);
            }
        }
}

2、登录界面

package szys;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;


public class Login_Register extends JFrame{    
 
 
 Login_Register() {
     
  init();
 }

 //登录界面初始化
 public void init() {
     
     JFrame frame = new JFrame("登录");
        frame.setLayout(null);
        //
        //1.把图片添加到标签里(把标签的大小设为和图片大小相同),把标签放在分层面板的最底层;
        ImageIcon bg=new ImageIcon("src/imgs/dlym.jpg");
        JLabel label=new JLabel(bg);
        label.setSize(bg.getIconWidth(),bg.getIconHeight());
        frame.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));
        //2.把窗口面板设为内容面板并设为透明
        JPanel pan=(JPanel)frame.getContentPane();
        pan.setOpaque(false);
        //
        JLabel nameStr = new JLabel("账号:");
        nameStr.setBounds(250, 200, 100, 25);
        frame.add(nameStr);
        
        JLabel passwordStr = new JLabel("密码:");
        passwordStr.setBounds(250, 250, 100, 25);
        frame.add(passwordStr);  
        
        JTextField userID = new JTextField();
        userID.setBounds(300, 200, 150, 25);
        frame.add(userID);
        
        JPasswordField password = new JPasswordField();
        password.setBounds(300, 250, 150, 25);
        frame.add(password);
        
        JButton buttonlogin = new JButton("登录");
        buttonlogin.setBounds(275, 300, 70, 25);
        frame.add(buttonlogin);
        
        JButton buttonregister = new JButton("注册");
        buttonregister.setBounds(375, 300, 70, 25);
        frame.add(buttonregister);  
        
        frame.setBounds(400, 100, 800, 640);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        
        //为登录按钮添加监听器
         buttonlogin.addActionListener(new ActionListener() {  
            public void actionPerformed(ActionEvent e) {
                String ID = userID.getText();
                String passwd = new String (password.getPassword());
       
                  
                //创建一个Admin用户,把输入框中的用户名密码和提出来
                Admin admin = new Admin();
                admin.setID(ID);
                admin.setPassword(passwd);
                
                //登录
                Login login = new Login();
                login.setAdmin(admin);
          
                if(login.JudgeAdmin()==0) {
                 //弹出账号或密码错误的窗口
                 JOptionPane.showMessageDialog(null, "账号或密码错误", "账号或密码错误", JOptionPane.WARNING_MESSAGE);
                 //清除密码框中的信息
                 password.setText("");
                 //清除账号框中的信息
                 userID.setText("");
                 
                 //System.out.println("登陆失败");
                } else {
                 //弹出登录成功的窗口
                 JOptionPane.showMessageDialog(null, "登陆成功", "登陆成功", JOptionPane.NO_OPTION);
                 //点击确定后会跳转到主窗口
                 new MainMenu();
                 frame.setVisible(false);
                    
                        
                }
               
            }
        });
         
         //为注册按钮添加监听器
         buttonregister.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
                  //注册页面
                 frame.setVisible(false);
                 new AdminRegister(); 
                 
          }
         });
 }
 
    public static void main(String []args) { 
       //主程序
     new Login_Register();
    }
}

3、注册界面

package szys;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

/*
 * 管理员注册界面
 * 
 */
public class AdminRegister extends JFrame{
 AdminRegister () {
  init();
 }
 
 void init() {
            JFrame frame = new JFrame("注册管理员账号");
            frame.setLayout(null);
            
          //背景
           
                //1.把图片添加到标签里(把标签的大小设为和图片大小相同),把标签放在分层面板的最底层;
                ImageIcon bg=new ImageIcon("src/imgs/ZC.jpg");
                JLabel label=new JLabel(bg);
                label.setSize(bg.getIconWidth(),bg.getIconHeight());
                frame.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));
                //2.把窗口面板设为内容面板并设为透明
                JPanel pan=(JPanel)frame.getContentPane();
                pan.setOpaque(false);
            
            
            JLabel nameStr = new JLabel("用户名:");
            nameStr.setBounds(250, 150, 100, 25);
            nameStr.setForeground(Color.green);
            frame.add(nameStr);
        
            JLabel IDStr = new JLabel("账号:");
            IDStr.setBounds(250, 200, 100, 25);
            IDStr.setForeground(Color.green);
            frame.add(IDStr);

            JLabel passwordStr = new JLabel("密码:");
            passwordStr.setBounds(250, 250, 100, 25);
            passwordStr.setForeground(Color.green);
            frame.add(passwordStr);  
               
            JLabel confrimStr = new JLabel("确认密码:");
            confrimStr.setForeground(Color.green);
            confrimStr.setBounds(250, 300, 100, 30);
            frame.add(confrimStr);
            
            JTextField userName = new JTextField();
            userName.setBounds(320, 150, 150, 25);
            frame.add(userName);

            JTextField userID = new JTextField();
            userID.setBounds(320, 200, 150, 25);
            frame.add(userID);

            JPasswordField password = new JPasswordField();
            password.setBounds(320, 250, 150, 25);
            frame.add(password);

            JPasswordField confrimPassword = new JPasswordField();
            confrimPassword.setBounds(320, 300, 150, 25);
            frame.add(confrimPassword);
            
            JButton buttonregister = new JButton("注册");
            buttonregister.setBounds(320, 350, 70, 25);
            frame.add(buttonregister);
            
            JButton fh = new JButton("返回");
            fh.setBounds(430, 350, 70, 25);
            frame.add(fh);
            


            frame.setBounds(400, 100, 800, 640);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
            
          //为注册按钮增加监听器
            buttonregister.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    String name = userName.getText();
                    String ID = userID.getText();
                    String passwd = new String (password.getPassword());
                    String confrimpasswd = new String (confrimPassword.getPassword());
                    
                    //创建Register类
                    Register register = new Register();
                    register.setID(ID);
                    register.setName(name);
                    register.setPassword(passwd);
                    register.setconfirmpasswd(confrimpasswd);
                    
                    //如果注册成功,返回登录界面
                    try {
      if(register.JudgeRegister()) {

          frame.setVisible(false);
          Login_Register login_register = new Login_Register();
      }
     } catch (SQLException e1) {
      // TODO Auto-generated catch block
      //e1.printStackTrace();
     } catch (ClassNotFoundException e1) {
      // TODO Auto-generated catch block
      e1.printStackTrace();
     }

                }
                
            });
            //为返回按钮增加监听器
            fh.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {    
                    frame.setVisible(false);
                    Login_Register login_register = new Login_Register();
                    
                }
                
            });
 }
}

 

4、数据库连接

package szys;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

/*
 * 管理员注册界面
 * 
 */
public class AdminRegister extends JFrame{
 AdminRegister () {
  init();
 }
 
 void init() {
            JFrame frame = new JFrame("注册管理员账号");
            frame.setLayout(null);
            
          //背景
           
                //1.把图片添加到标签里(把标签的大小设为和图片大小相同),把标签放在分层面板的最底层;
                ImageIcon bg=new ImageIcon("src/imgs/ZC.jpg");
                JLabel label=new JLabel(bg);
                label.setSize(bg.getIconWidth(),bg.getIconHeight());
                frame.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));
                //2.把窗口面板设为内容面板并设为透明
                JPanel pan=(JPanel)frame.getContentPane();
                pan.setOpaque(false);
            
            
            JLabel nameStr = new JLabel("用户名:");
            nameStr.setBounds(250, 150, 100, 25);
            nameStr.setForeground(Color.green);
            frame.add(nameStr);
        
            JLabel IDStr = new JLabel("账号:");
            IDStr.setBounds(250, 200, 100, 25);
            IDStr.setForeground(Color.green);
            frame.add(IDStr);

            JLabel passwordStr = new JLabel("密码:");
            passwordStr.setBounds(250, 250, 100, 25);
            passwordStr.setForeground(Color.green);
            frame.add(passwordStr);  
               
            JLabel confrimStr = new JLabel("确认密码:");
            confrimStr.setForeground(Color.green);
            confrimStr.setBounds(250, 300, 100, 30);
            frame.add(confrimStr);
            
            JTextField userName = new JTextField();
            userName.setBounds(320, 150, 150, 25);
            frame.add(userName);

            JTextField userID = new JTextField();
            userID.setBounds(320, 200, 150, 25);
            frame.add(userID);

            JPasswordField password = new JPasswordField();
            password.setBounds(320, 250, 150, 25);
            frame.add(password);

            JPasswordField confrimPassword = new JPasswordField();
            confrimPassword.setBounds(320, 300, 150, 25);
            frame.add(confrimPassword);
            
            JButton buttonregister = new JButton("注册");
            buttonregister.setBounds(320, 350, 70, 25);
            frame.add(buttonregister);
            
            JButton fh = new JButton("返回");
            fh.setBounds(430, 350, 70, 25);
            frame.add(fh);
            


            frame.setBounds(400, 100, 800, 640);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
            
          //为注册按钮增加监听器
            buttonregister.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    String name = userName.getText();
                    String ID = userID.getText();
                    String passwd = new String (password.getPassword());
                    String confrimpasswd = new String (confrimPassword.getPassword());
                    
                    //创建Register类
                    Register register = new Register();
                    register.setID(ID);
                    register.setName(name);
                    register.setPassword(passwd);
                    register.setconfirmpasswd(confrimpasswd);
                    
                    //如果注册成功,返回登录界面
                    try {
      if(register.JudgeRegister()) {

          frame.setVisible(false);
          Login_Register login_register = new Login_Register();
      }
     } catch (SQLException e1) {
      // TODO Auto-generated catch block
      //e1.printStackTrace();
     } catch (ClassNotFoundException e1) {
      // TODO Auto-generated catch block
      e1.printStackTrace();
     }

                }
                
            });
            //为返回按钮增加监听器
            fh.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {    
                    frame.setVisible(false);
                    Login_Register login_register = new Login_Register();
                    
                }
                
            });
 }
}
package szys;

/*
处理用户登录
*/

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


public class Login {

 Admin admin;
 
 void setAdmin(Admin admin) {
  this.admin=admin;
  //System.out.println(this.admin.getPassword()+"   " + this.admin.getID());
 }
 /*
  * JudgeAdmin()方法
  * 判断Admin的ID和密码是否正确,如果正确,显示登录成功
  * 如果错误,弹出一个窗口,显示账号或密码错误
  */
 private String driver = "com.mysql.cj.jdbc.Driver";
    private String url = "jdbc:mysql://localhost:3306/java";
    private String user = "root";
    private String password = "123456";
    
    
 
  public boolean login(Admin admin) throws SQLException, ClassNotFoundException {
      String sql="select * from admin where id=? and password=?";
         
      Class.forName(driver);
      Connection conn = DriverManager.getConnection(url, user, password);
      PreparedStatement ps = conn.prepareStatement(sql);
      
         ps.setString(1,admin.getID());
         ps.setString(2,admin.getPassword());
         ResultSet rs = ps.executeQuery();
         int ans = 0;
         if(rs.next()) {
          ans = 1;
         }  
         rs.close();
         ps.close();
         conn.close();
         if(ans == 1) {
          return true;
         }
         else return false;
     }
 int JudgeAdmin() {
  
      try {
          if(login(this.admin)) {
           System.out.println("登录成功");
           return 1;
          }else {
              return 0;
          }
      }catch(Exception e) {
//       e.printStackTrace();
//       System.out.println("!!!!!!!!!");
      }
  return 0;
  
 } 
}
package szys;
/*
管理员实体
*/

public class Admin {
    private String id;                 //编号
    private String name;           //姓名
    private String password;      //密码
    void setID(String id) {
        this.id=id;
    }
    void setName(String name) {
        this.name=name;
    }
    void setPassword(String password) {
        this.password=password;
    }
 
    String getID() {
        return this.id;
    }
    String getName() {
         return this.name;
     }
    String getPassword() {
        return this.password;
    }

}

 

5、四则运算

package szys;


import javax.swing.*;
 
import java.awt.*;
import java.awt.event.*;
 
/**
 * 主窗口
 * @author yexiaoye
 *
 */

public class MainMenu extends JFrame implements ActionListener{
    
        MainMenu(){
        init();
        bj();
        setVisible(true);
    }

    private static final long serialVersionUID = 1L;
    
    static int max = 20;// 声明int类型的全局变量max,为了给其他类的调用
    static int operat = 2;// 声明运算符:1为+,2为-,3为*,4为/
            
    // 主窗口中的组件
    Container winContainer;// 声明容器
    JMenuBar mbar;// 声明菜单栏
    JMenu fileMenu,systemMenu;// 声明菜单组
    JMenuItem startMenuItem,setMenuItem;// 声明子菜单项
    JMenuItem exitMenuItem,helpMenuItem;
    
    JLabel jl_hello;// 声明label
    
    //背景
      void bj(){
          //1.把图片添加到标签里(把标签的大小设为和图片大小相同),把标签放在分层面板的最底层;
          ImageIcon bg=new ImageIcon("src/imgs/456.jpeg");
          JLabel label=new JLabel(bg);
          label.setSize(bg.getIconWidth(),bg.getIconHeight());
          getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));
          //2.把窗口面板设为内容面板并设为透明
          JPanel pan=(JPanel)getContentPane();
          pan.setOpaque(false);    
          }

    public void init() {
        
        this.setBounds(400,200,843,550);// (x,y,width,height)
        winContainer = this.getContentPane();// 获取当前框架的容器
        winContainer.setLayout(null);// 自定义编辑布局方法(取消容器布局方式)
        
        jl_hello = new JLabel("四+则-运*算/");
        jl_hello.setBounds(250, 200, 400, 60);
        // 颜色转换网址:https://bj.96weixin.com/tools/rgb
        jl_hello.setForeground(new Color(255,0,0));
        jl_hello.setFont(new Font("方正舒体", Font.BOLD, 60));
        
        // 实例化菜单栏对象
        mbar = new JMenuBar();
        // 实例化菜单组
        fileMenu = new JMenu("模式");
        systemMenu = new JMenu("系统");
        // 实例化子菜单项
        startMenuItem = new JMenuItem("开始运算");
        setMenuItem = new JMenuItem("参数设置");
        exitMenuItem = new JMenuItem("退出");
        helpMenuItem = new JMenuItem("帮助");
        
        // 注册监听器
        startMenuItem.addActionListener(this); 
        setMenuItem.addActionListener(this);
        exitMenuItem.addActionListener(this);
        helpMenuItem.addActionListener(this);
        
        this.setJMenuBar(mbar);// 设置菜单栏(将菜单栏添加到框架上)
        mbar.add(fileMenu);// 将菜单组添加到菜单栏中
        mbar.add(systemMenu);// 将子菜单项添加到菜单组中
        
        // 将开始、参数设置子菜单项添加到文件菜单组中
        fileMenu.add(startMenuItem);
        fileMenu.add(setMenuItem);
        // 将退出、帮助子菜单项添加到系统菜单组中
        systemMenu.add(exitMenuItem);
        systemMenu.add(helpMenuItem);
        // 将欢迎标签添加到Container容器中
        winContainer.add(jl_hello);
        
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 框架关闭时,退出JVM
    }
    
    public void actionPerformed(ActionEvent e) {
        
        if(e.getSource() == startMenuItem) {// 开始游戏按钮触发事件
            winContainer.removeAll();// 清空当前winContainer(用户定义的Container名)上的所有控件
            Game g1 = new Game();
            g1.setSize(500, 400);
            g1.setLayout(null);// 设置为null即为清空布局管理器,之后添加组件
            winContainer.add(g1);
            winContainer.repaint();
            //new Game().setVisible(true);// 实例化游戏界面并设置可见性为true
            
        }else if(e.getSource() == exitMenuItem) {// 退出按钮触发事件
            System.exit(0);// 退出JVM
            
        }else if(e.getSource() == setMenuItem){// 参数设置按钮触发事件
            winContainer.removeAll();// 清空当前winContainer(用户定义的Container名)上的所有控件
            
            SetGame s1 = new SetGame();// 实例化参数设置
            s1.setSize(500, 400);// 必须设置s1对象的窗口大小
            winContainer.add(s1);// 将对象s1添加到容器中
            
            winContainer.repaint();// 在Container上生成新放置的控件后,使用此方法来刷新放置内容
        }
    }
    
//    public static void main(String[] args) {// 主方法
//        MainMenu a = new MainMenu();
//        a.setVisible(true);
//    }
 
}
 
package szys;


import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
 
/**
 * 游戏参数设置类
 * @author yexiaoye
 *
 */
public class SetGame extends JPanel implements ActionListener {//继承JPanel(面板)实现ActionListener(监听器)接口
 
    private static final long serialVersionUID = 1L;
    
    JButton jb_enter;// 参数设置确定键
    JTextField jt_max;// 用户输入最大值的输入框
    
    public SetGame(){// 无参构造方法
        // 实例化组件
        JLabel jl_reset = new JLabel("参数设置");
        JLabel jl_number = new JLabel("运算数范围:1-");
        jt_max = new JTextField(""+MainMenu.max,15);
        jb_enter = new JButton("确定");
        // 为确定按钮添加监听
        jb_enter.addActionListener(this);
        // 组件的参数设置
        jl_reset.setFont(new Font("微软雅黑", Font.BOLD, 20));
        jl_number.setFont(new Font("宋体", Font.BOLD, 15));
        jl_reset.setForeground(Color.blue);
        jl_reset.setBounds(180, 60, 120, 20);
        jl_number.setBounds(150,110,120,20);
        jt_max.setBounds(265, 110, 40, 20);
        jb_enter.setBounds(190, 160, 65, 25);
        
        // 将组件添加到JPanel
        this.add(jl_reset);
        this.add(jl_number);
        this.add(jt_max);
        this.add(jb_enter);
    }
    
    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == jb_enter){
            new SetPrompt().setVisible(true);
            // 先将文本输入框中的string转换为int类型,在max值赋值给MainMenu中的max
            MainMenu.max = Integer.parseInt(jt_max.getText());
        }
    }
}
 
package szys;



import javax.swing.*;
 
import java.awt.*;
import java.awt.event.*;
/**
 * 游戏窗口类
 * @author yexiaoye
 *
 */
public class Game extends JPanel implements ActionListener{
 
    Game(){
        init();
        bj();
        setVisible(true);
    }
    
//
    //背景
      void bj(){ 
          //1.把图片添加到标签里(把标签的大小设为和图片大小相同),把标签放在分层面板的最底层;
          ImageIcon bg=new ImageIcon("src/imgs/456.jpeg");
          JLabel label=new JLabel(bg);
          label.setSize(bg.getIconWidth(),bg.getIconHeight());
          setVisible(true);
          }

//    
     
    
    private static final long serialVersionUID = 1L;
    
    /*JLabel label[]= new JLabel[10];// 显示10个随机的式子
    JLabel err[] = new JLabel[10];// 显示10个提示信息
    JTextField text[] = new JTextField[10];// 10个文本输入
    static String[] question = new String[10];// 接收随机式子的字符串
    static int[] result = new int[10];// 接收结果int变量*/
    
    JLabel label[];
    JLabel err[];
    JTextField text[];
    static String[] question;
    static int[] result;
 
    JLabel head;// 声明标题标签
    JButton jb_enter;// 声明确认按钮
    JButton jb_reset;// 声明重置按钮

    
    public void init(){// 构造方法
        //super("四则运算");// 初始化父类型特征
        Color bj = new Color(0,255,255);
        this.setBackground(bj);
        label = new JLabel[10];// 显示10个随机的式子
        err = new JLabel[10];// 显示10个提示信息
        text = new JTextField[10];// 10个文本输入
        question = new String[10];// 接收随机式子的字符串
        result = new int[10];// 接收结果int变量
        
        Tools.rand();// 调用工具类中生成十个式子的方法
        
        this.setBounds(155, 55, 400, 300);// 设置主窗口大小
        //Container c1 = this.getContentPane();// 获得当前框架的容器
        //c1.setLayout(null);// 自定义编辑布局方法
        
        head = new JLabel("请答题,同学");
        head.setBounds(145, -35, 150, 150);// 设置标签的显示位置和大小 
        head.setForeground(new Color(255,8,2));// 设置标签字体颜色
        head.setFont(new Font("方正舒体", Font.BOLD, 35));// 字体,加粗,字号
        
        jb_enter = new JButton("确认");// 创建“确认”按钮对象
        jb_reset = new JButton("重置");// 创建“重置”按钮对象
        jb_enter.setBounds(110, 190, 60, 20);
        jb_reset.setBounds(245, 190, 60, 20);
        
        // 注册监听器
        jb_enter.addActionListener(this);
        jb_reset.addActionListener(this);
        
        // 将组件添加到框架中
        this.add(jb_reset);
        this.add(jb_enter);
        this.add(head);
        
        // 循环出十个式子,每行两道题
        for(int i = 0; i<10; i+=2){
            label[i] = new JLabel(question[i]);// 第一列第i个式子
            label[i].setBounds(70,70+10*i,60,15);
            
            err[i]= new JLabel("");// 定义第一列第i个内容为""提示标签
            err[i].setBounds(180,70+10*i,40,15);
            err[i].setForeground(new Color(239,131,84));
 
            text[i] = new JTextField("",20);// 第一列第i行文本输入框
            text[i].setBounds(130,70+10*i,40,15);
 
            label[i+1] = new JLabel(question[i+1]);// 第二列第i个式子
            label[i+1].setBounds(230,70+10*i,60,15);
 
            err[i+1] = new JLabel("");// 定义第二列第i个内容为""提示标签
            err[i+1].setBounds(340,70+10*i,40,15);
            err[i+1].setForeground(new Color(239,131,84));
 
            text[i+1] = new JTextField("",20);// 第二列第i行文本输入框
            text[i+1].setBounds(290,70+10*i,40,15);
            
            // 将组件添加到框架中
            this.add(label[i]);
            this.add(label[i+1]);
            this.add(err[i]);
            this.add(err[i+1]);
            this.add(text[i]);
            this.add(text[i+1]);
        }
        
        //这句话需要注释,当在Jemnu实例化出此窗口,并且关闭时
        //会关闭整个程序,非常的不合理!
        //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//窗口关闭时,退出JVM
        this.setVisible(true);//可见性为true
    }
 
    int error = 0;// 错误题数计数器
    // 监听按钮事件
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()== jb_enter){// 单击确认按钮
            for(int i = 0; i<10;i++){
                try{
                    if(result[i] != Integer.parseInt(text[i].getText())){
                        error++;
                        err[i].setText("错误!");// 更改第i个err[]文本为错误
                    }else{
                        err[i].setText("正确!");// 更改第i个err[]文本为正确
                    }
                }catch(NumberFormatException f){
                    JOptionPane.showMessageDialog(this,"请全部输入!","警告",JOptionPane.WARNING_MESSAGE);
                    error++;
                    break;
                }
            }
            if(error == 0){
                JOptionPane.showMessageDialog(this,"过关!","恭喜",1 );
            }
        }else if(e.getSource()==jb_reset){
            Tools.rand();// 调用生成10个式子的方法
            for(int i=0;i<10;i++){//通过循环重新赋值
                err[i].setText("");
                text[i].setText("");
                label[i].setText(question[i]);
            }
        }
    }
 
}
package szys;



import java.util.Random;
/**
 * 工具类
 * @author yexiaoye
 *
 */
public class Tools {
    /**
     *    生成十个式子的方法
     */
    public static void rand(){
        int a,b,operator;
        Random ran = new Random();
        for(int i= 0;i<10;i++){
            a= ran.nextInt(MainMenu.max)+1;// 随机数范围
            b= ran.nextInt(MainMenu.max)+1;
            operator=ran.nextInt(MainMenu.operat)+1;// 自定义运算符
            switch(operator){
                case 1:// "+"
                    Game.question[i] = a + "+" + b + "=";
                    Game.result[i] = a + b;
                    break;
                case 2:// "-"
                    Game.question[i] = a + "-" + b + "=";
                    Game.result[i] = a - b;
                    break;
                case 3:// "*"
                    Game.question[i] = a + "*" + b + "=";
                    Game.result[i] = a * b;
                    break;
                case 4:// "/"
                    Game.question[i] = a + "/" + b + "=";
                    Game.result[i] = a / b;
                    break;
            }
        }
    }
 
}

 

posted @ 2021-09-28 12:32  燎沉香  阅读(175)  评论(0)    收藏  举报