个人在经过长久以来(约等于4小时)的奋战,终于实现了一个上课老师提问并抽奖的小程序。希望这个程序变得非常非常实用
课程的理解:在我的项目开始之前,先学习了一下UML项目类图的画法,和类与类之间的关系。类图的3个基本组件:类名、属性、方法。其中类有6种关系:泛化,实现,依赖,关联,聚合,组合。类进行封装之后才好和其他的类发生关系,所以java的封装,继承,多态必不可少。在一个java项目开始之前。我们必须要使用类图对要干的事情进行需求分析,这样在项目代码编写和具体实现过程中才不会自乱阵脚。
设计实现:
本应用针对如下的要求,为满足老师的使用需求,我提出如下的解决方案
- 考虑实现一个老师随机选学生回答问题的小程序,可随机选取学生以及奖口
- 老师很花心,需要考虑两种以上界面呈现随机的结果。比如一种用图形,一种用控制台或一种是web。
- 注意实现的类的相互关系,怎样设计类的交互更合理。
- 扩展:这个模式是不是可以有很多游戏可以实现呢?想想还可以做什么?如何在现在设计的结构基础之上,更容易扩展出其他游戏。举个例,实现并说明你所设计的结构的优越性。
关系类图:
其中筛子依赖筛盅,而筛盅的GUI调用生成新筛盅,筛盅依赖于GUI界面。sifter类用于生成筛子对象,sifterCUP将生成一个筛盅类,用于模拟生成的筛子对象放入一个盅内并摇筛子获得筛子值的类的过程。而GUI则是为了发布一个可视化的界面,方便老师上课使用。其中用到了GUI可视化界面和控制台两种交互方式,其中摇筛子和随机获得奖品的代码,可用于各种通过随机事件获得结果的小游戏或软件之上。图片和代码简单易改,容易阅读。
代码说明:
sifter类用于生成筛子对象
1 import java.util.*; 2 3 public class Sifter{ 4 public int value = 0; 5 6 public static void getValue(Sifter S){ 7 S.value = (int)(1+Math.random()*6); 8 } 9 } 10
sifterCUP将生成一个筛盅类,用于模拟生成的筛子对象放入一个盅内并摇筛子获得筛子值的类的过程。可通过其他类调用生成i个数量的筛子数组,并同时获得筛子的value值
1 import java.util.Scanner; 2 3 public class SifterCup { 4 int amount = 0; 5 int sum = 0; 6 7 8 public void howMany(){ 9 10 System.out.println("请输入想要使用筛子的数量:"); 11 Scanner sc = new Scanner(System.in); 12 int amount = sc.nextInt(); 13 Sifter[] sifter = new Sifter[amount]; 14 int[] arr = new int[2]; 15 16 for(int i = 0; i < amount; i = i+1){ 17 sifter[i] = new Sifter(); 18 sifter[i].getValue(sifter[i]); 19 System.out.println(sifter[i].value); 20 sum = sum + sifter[i].value; 21 } 22 System.out.println("最终您roll出的点数为:" + sum); 23 } 24 25 }
而GUI则是为了发布一个可视化的界面,方便老师上课使用。
1 import java.awt.EventQueue; 2 import java.awt.Image; 3 4 import javax.swing.JFrame; 5 import javax.swing.JPanel; 6 import java.awt.BorderLayout; 7 import javax.swing.JButton; 8 import java.awt.event.ActionListener; 9 import java.util.Scanner; 10 import java.awt.event.ActionEvent; 11 import javax.swing.JTextField; 12 import javax.swing.JEditorPane; 13 import java.awt.Canvas; 14 import javax.swing.JLabel; 15 import javax.swing.ImageIcon; 16 17 public class SifterGUI { 18 19 private JFrame frame; 20 21 /** 22 * Launch the application. 23 */ 24 public