四则运算小程序
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; } } } }

浙公网安备 33010602011771号