小学生四则运算程序之前是使用c语言编写的,如今根据界面要求,故切换到Java编程环境,借助Eclipse开发工具
主要的4个拓展方向:
1.程序可以设置皮肤功能,可以改变界面的颜色即可。
2.程序可以出单个整数阶乘的题目:如:4!=24
3.程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。
4.可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。
以下是代码展示:
1 import java.awt.BorderLayout; 2 import java.awt.Color; 3 import java.awt.Component; 4 import java.awt.Container; 5 import java.awt.Dimension; 6 import java.awt.Font; 7 import java.awt.Panel; 8 import java.awt.Toolkit; 9 import java.awt.event.ActionEvent; 10 import java.awt.event.ActionListener; 11 import java.awt.event.MouseEvent; 12 import java.awt.event.MouseListener; 13 14 import javax.swing.ButtonGroup; 15 import javax.swing.ImageIcon; 16 import javax.swing.JButton; 17 import javax.swing.JColorChooser; 18 import javax.swing.JFrame; 19 import javax.swing.JLabel; 20 import javax.swing.JPanel; 21 import javax.swing.JPasswordField; 22 import javax.swing.JPopupMenu; 23 import javax.swing.JRadioButtonMenuItem; 24 import javax.swing.JTextField; 25 26 /** 27 * 倒计时 28 * 29 */ 30 public class Counter { 31 32 public static void main(String[] args) { 33 34 Xiao xiao=new Xiao(); 35 xiao.visiable(); 36 37 } 38 39 public void repaint() { 40 // TODO 自动生成的方法存根 41 42 } 43 44 public Component getContentPane() { 45 // TODO 自动生成的方法存根 46 return null; 47 } 48 49 public void visiable() { 50 51 52 } 53 } 54 55 /* 构造 实现界面的开发 GUI */ 56 class Xiao extends JFrame implements ActionListener{ 57 58 public static double daan=0; 59 public static double sum=0; 60 public static int a=0; 61 public static int b=0; 62 public static int ch=0; 63 public static int n=0; 64 public static double i=0 ; 65 public static double j=0 ; 66 public static double m=0 ; 67 public JFrame jf = new JFrame("小学生四则运算管理系统"); 68 public Container con = jf.getContentPane(); 69 Panel P1=new Panel(); 70 Panel P2=new Panel(); 71 Panel P3=new Panel(); 72 public Toolkit toolkit = Toolkit.getDefaultToolkit(); 73 public Dimension sc = toolkit.getScreenSize(); 74 public JLabel name1 = new JLabel("请输入答案"); 75 public JLabel pass1 = new JLabel("信息提醒"); 76 public JLabel pass2 = new JLabel("所剩时间"); 77 public JLabel pass3 = new JLabel("更换皮肤"); 78 public JLabel pass4 = new JLabel("时间提醒"); 79 public JTextField textName = new JTextField(); 80 public JTextField textPs = new JTextField(); 81 public JTextField text1 = new JTextField(); 82 public JTextField text2 = new JTextField(); 83 public JTextField text3 = new JTextField(); 84 public JButton button1 = new JButton("随机获取题目"); 85 public JButton button2 = new JButton("确定"); 86 public JButton button3 = new JButton("重置"); 87 public JButton button4 = new JButton("黄色"); 88 public JButton button5 = new JButton("绿色"); 89 public JButton button6 = new JButton("粉色"); 90 public Font font1 = new Font("宋体",1,14); 91 public Font font2 = new Font("宋体",0,12); 92 public Xiao() { 93 94 JPanel jp = new JPanel(); 95 con.setLayout(null); 96 name1.setFont(font1); 97 name1.setLocation(52,25); 98 name1.setSize(80,180); 99 name1.setForeground(Color.black); 100 pass1.setLocation(55,90); 101 pass1.setSize(80,250); 102 pass1.setForeground(Color.black); 103 pass1.setFont(font1); 104 pass2.setLocation(55,110); 105 pass2.setSize(100,300); 106 pass2.setForeground(Color.black); 107 pass2.setFont(font1); 108 pass3.setLocation(55,160); 109 pass3.setSize(100,305); 110 pass3.setForeground(Color.black); 111 pass3.setFont(font1); 112 pass4.setLocation(280,110); 113 pass4.setSize(100,300); 114 pass4.setForeground(Color.black); 115 pass4.setFont(font1); 116 textName.setSize(140, 20); 117 textName.setLocation(170, 70); 118 textPs.setSize(140, 20); 119 textPs.setLocation(170, 105); 120 text1.setSize(140, 20); 121 text1.setLocation(170, 205); 122 text2.setSize(100, 20); 123 text2.setLocation(170, 250); 124 text3.setSize(100, 20); 125 text3.setLocation(350, 250); 126 button1.setSize(110,30); 127 button1.setLocation(40,63 ); 128 button1.setFont(font2); 129 button2.setSize(60,25); 130 button2.setLocation(320, 100); 131 button2.setFont(font2); 132 button3.setSize(60,25); 133 button3.setLocation(400, 100); 134 button3.setFont(font2); 135 button4.setSize(60,25); 136 button4.setLocation(170, 300); 137 button4.setFont(font2); 138 button5.setSize(60,25); 139 button5.setLocation(240, 300); 140 button5.setFont(font2); 141 button6.setSize(60,25); 142 button6.setLocation(310, 300); 143 button6.setFont(font2); 144 145 con.add( button4, BorderLayout.NORTH); 146 con.add(name1); 147 con.add(pass1); 148 con.add(pass2); 149 con.add(pass3); 150 con.add(pass4); 151 con.add(textName); 152 con.add(textPs); 153 con.add(text1); 154 con.add(text2); 155 con.add(text3); 156 con.add(button1); 157 con.add(button2); 158 con.add(button3); 159 con.add(button4); 160 con.add(button5); 161 con.add(button6); 162 con.setBackground(Color.orange); 163 164 jf.setResizable(false); 165 jf.add(jp); 166 jf.setVisible(true); 167 jf.setLocation(300, 300); 168 jf.setSize(500, 400); 169 jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 170 textName.addActionListener(this); 171 textPs.addActionListener(this); 172 text1.addActionListener(this); 173 text2.addActionListener(this); 174 button1.addActionListener( this); 175 button2.addActionListener( this); 176 button3.addActionListener( this); 177 button3.addActionListener( this); 178 button4.addActionListener( this); 179 button5.addActionListener( this); 180 button6.addActionListener( this); 181 long time = 1 * 120; // 自定义倒计时时间 182 long hour = 0; 183 long minute = 0; 184 long seconds = 0; 185 186 while (time >= 0) { 187 188 minute = (time - hour * 3600) / 60; 189 seconds = time - hour * 3600 - minute * 60; 190 191 text2.setText(hour + "时"+minute + "分"+seconds + "秒"); 192 try { 193 Thread.sleep(1000); 194 } catch (InterruptedException e) { 195 e.printStackTrace(); 196 } 197 time--; 198 199 if(time==0){ 200 201 text3.setText("答题时间结束!!"); 202 } 203 } 204 205 } 206 void visiable() 207 { 208 this.setVisible(true); 209 } 210 211 public void actionPerformed(ActionEvent e) { 212 if (e.getSource() == button1) { 213 a=(int)(Math.random()*(-200))+100; 214 b=(int)(Math.random()*(-200))+100; 215 ch=(int)(Math.random()*5)+1; 216 n=(int)(Math.random()*5)+1; 217 218 if(a<0 && b>0){ 219 switch(ch){ 220 case 1: 221 { 222 sum=a+b; 223 textName.setText("("+a+")"+"+"+b+"=?"); 224 break; 225 } 226 case 2: 227 { 228 sum=a-b; 229 textName.setText("("+a+")"+"-"+b+"=?"); 230 break; 231 } 232 case 3: 233 { 234 sum=a*b; 235 textName.setText("("+a+")"+"*"+b+"=?"); 236 break; 237 } 238 case 4: 239 { 240 sum=a/b; 241 textName.setText("("+a+")"+"/"+b+"=?"); 242 break; 243 } 244 case 5: //6.阶乘算法,n为随机生成数 245 { 246 sum=1; 247 for(j=1;j<=n;i++) 248 sum=sum*i; 249 textName.setText(n+"!"+"=?"); 250 break; 251 } 252 } 253 } 254 255 256 else if(a>0 && b<0){ 257 switch(ch){ 258 case 1: 259 { 260 sum=a+b; 261 textName.setText(a+"+"+"("+b+")"+"=?"); 262 break; 263 } 264 case 2: 265 { 266 sum=a-b; 267 textName.setText(a+"-"+"("+b+")"+"=?"); 268 break; 269 } 270 case 3: 271 { 272 sum=a*b; 273 textName.setText(a+"*"+"("+b+")"+"=?"); 274 break; 275 } 276 case 4: 277 { 278 sum=a/b; 279 textName.setText(a+"/"+"("+b+")"+"=?"); 280 break; 281 } 282 case 5: //6.阶乘算法,n为随机生成数 283 { 284 sum=1; 285 for(j=1;j<=n;i++) 286 sum=sum*i; 287 textName.setText(n+"!"+"=?"); 288 break; 289 } 290 } 291 } 292 293 294 else if(a<0 && b<0){ 295 switch(ch){ 296 case 1: 297 { 298 sum=a+b; 299 textName.setText("("+a+")"+"+"+"("+b+")"+"=?"); 300 break; 301 } 302 case 2: 303 { 304 sum=a-b; 305 textName.setText("("+a+")"+"-"+"("+b+")"+"=?"); 306 break; 307 } 308 case 3: 309 { 310 sum=a*b; 311 textName.setText("("+a+")"+"*"+"("+b+")"+"=?"); 312 break; 313 } 314 case 4: 315 { 316 sum=a/b; 317 textName.setText("("+a+")"+"/"+"("+b+")"+"=?"); 318 break; 319 } 320 case 5: //6.阶乘算法,n为随机生成数 321 { 322 sum=1; 323 for(j=1;j<=n;i++) 324 sum=sum*i; 325 textName.setText(n+"!"+"=?"); 326 break; 327 } 328 } 329 } 330 else{ 331 switch(ch){ 332 case 1: 333 { 334 sum=a+b; 335 textName.setText(a+"+"+b+"=?"); 336 break; 337 } 338 case 2: 339 { 340 sum=a-b; 341 textName.setText(a+"-"+b+"=?"); 342 break; 343 } 344 case 3: 345 { 346 sum=a*b; 347 textName.setText(a+"*"+b+"=?"); 348 break; 349 } 350 case 4: 351 { 352 sum=a-b; 353 textName.setText(a+"/"+b+"=?"); 354 break; 355 } 356 case 5: //6.阶乘算法,n为随机生成数 357 { 358 sum=1; 359 for(j=1;j<=n;i++) 360 sum=sum*i; 361 textName.setText(n+"!"+"=?"); 362 break; 363 } 364 } 365 } 366 367 368 } 369 370 else if(e.getSource()==button2) 371 { 372 373 daan=Integer.parseInt(textPs.getText()); 374 375 if(daan==sum) 376 { 377 378 text1.setText("回答正确!你得到10分!"); 379 textPs.setText(null); 380 i=i+10; 381 } 382 else{ 383 text1.setText("回答错误,扣掉10分!" ); 384 i=i-10; 385 textPs.setText(null); 386 } 387 } 388 389 else if(e.getSource()== button3){ 390 textPs.setText(null); 391 } 392 else if(e.getSource()== button4){ 393 con.setBackground(Color.yellow); //设置窗口背景 394 repaint(); //重绘窗口 395 return; 396 } 397 else if(e.getSource()== button5){ 398 con.setBackground(Color.green); //设置窗口背景 399 repaint(); //重绘窗口 400 return; 401 } 402 else if(e.getSource()== button6){ 403 con.setBackground(Color.pink); //设置窗口背景 404 repaint(); //重绘窗口 405 return; 406 } 407 } 408 409 410 } 411 412 413
程序运行截图如下:
该程序由两人结对完成,分别是:12黄雄俊,13卢盛添(无博客地址)
结伴编程过程中,分工明确,12黄雄俊主要负责界面设计和布局,以及部分模块的功能实现,比如:阶乘运算。13卢盛添主要负责其他重要模块的调试和编写。
总结:
此次小项目的合作,在实践中收获了许多深刻的体会,对于同一个程序,两人的架构想法不一样,需要交流磨合,并且,在编写时,个人负责不同的功能模块,需要合理的调度、变成一个整体这样的话,就需要妥协自己的编程习惯,毕竟项目的完成是最重要的,所以说,对于分工合作的编程模式,对于目前来说,或许耗费的时间比起单人完成更多,但是,老师的出发点是为了让我们体验团队协作的过程,培养自己的融入团队的能力。受益匪浅。
时间: 2024-10-10 12:20:58