做這個軟體的時候 ,我應該從用戶的角度考慮問題,而不是簡單實現了老師交代的功能。 於是我把功能的選擇變成了年級的選擇 ,
選擇哪一個年級的,然後填寫出題的數量,按下出題按鈕,然後在下面的文本框中就會出現對應年級的難度的題目,這樣簡化的用戶的選擇。
開始的時候我將數字生成單獨寫在一個類裡邊的,但是後來做界面的時候,本想調用實例化對象,但是出現了線程的問題,嘗試了解決方法但是沒有奏效
於是我又將生成數字的方法直接寫在一個類裡邊直接就是利用這一個形成了出題的界面和處理。
當然本軟體是為小學生準備的 於是我去百度了小學各個年級數學題出題範圍 ,於是發現自己寫的方法沒有調用上,是因為小學難度還沒有達到那個水平 ,但是
方法我已經寫出了,如果要用的話,到時候可以調用就可以了。
原始碼如下:
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;
import java.util.Random;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Jiemian extends JFrame{
public JPanel Panel1;
public JLabel graselect;//年紀選擇
public JLabel questnum;//題目數量
public ButtonGroup buttonGroup;
public JTextField textnum;//添加題目數量
public JButton chuti;
public JButton chongzhi;
public JTextArea quest;//出題的地方
public JRadioButton gradetwo;
public JRadioButton gradethree;
public JRadioButton gradefour;
public JRadioButton gradefive;
public static void main(String[] args) {
try{
Jiemian jm=new Jiemian();
jm.setVisible(true);
}
catch(Exception e){
e.printStackTrace();
}
}
public Jiemian(){
super();
setTitle("隨機出題系統");
setBounds(0,0,400,500);
getContentPane().setLayout(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//年級選擇
graselect=new JLabel();
graselect.setBounds(0, 30, 50, 30);
graselect.setText("年級:");
getContentPane().add(graselect);
//二年級
buttonGroup=new ButtonGroup();
gradetwo =new JRadioButton();
buttonGroup.add(gradetwo);
gradetwo.setText("二年級");
gradetwo.setBounds(60, 30, 80, 30);
gradetwo.setSelected(true);
getContentPane().add(gradetwo);
//三年級
gradethree =new JRadioButton();
buttonGroup.add(gradethree);
gradethree.setText("三年級");
gradethree.setBounds(140, 30, 80, 30);
//gradetwo.setSelected(false);
getContentPane().add(gradethree);
//四年級
gradefour =new JRadioButton();
buttonGroup.add(gradefour);
gradefour.setText("四年級");
gradefour.setBounds(220, 30, 80, 30);
//gradetwo.setSelected(false);
getContentPane().add(gradefour);
//五年級
gradefive =new JRadioButton();
buttonGroup.add(gradefive);
gradefive.setText("五年級");
gradefive.setBounds(300, 30, 80, 30);
//gradetwo.setSelected(false);
getContentPane().add(gradefive);
questnum=new JLabel();
questnum.setText("題目數量:");
questnum.setBounds(0, 80, 80, 40);
getContentPane().add(questnum);
//題目數量
textnum=new JTextField();
textnum.setBounds(90,90, 80, 20);
getContentPane().add(textnum);
//出題的按鈕
chuti= new JButton();
chuti.setText("出題");
chuti.setBounds(60, 150, 60, 30);
chuti.addActionListener( new chutiListener());
getContentPane().add(chuti);
//重置的按鈕
chongzhi =new JButton();
chongzhi.setText("重置");
chongzhi.setBounds(240, 150, 60, 30);
chongzhi.addActionListener(new chongzhiListener());
getContentPane().add(chongzhi);
//出題的方框
quest=new JTextArea();
quest.setColumns(15);
quest.setRows(3);
quest.setLineWrap(true);
JScrollPane scrollPane=new JScrollPane();
scrollPane.setViewportView(quest);
Dimension dime=quest.getPreferredSize();
scrollPane.setBounds(0, 200, 400, 200);
getContentPane().add(scrollPane);
}
//生成數的方法
public int shenchengnum(int a){
Random rand=new Random();
int k=0;
int j=0;
for(int i=0;i<a;i++)
{
j=rand.nextInt(9)+1;
k=k*10+j;
}
return k;
}
public char shengchenchar(boolean zhfu){
Random rand=new Random();
char c=' ';
if(zhfu){
int j=rand.nextInt()%2;
if(j==0)
{
c='-';
}
}
return c;
}
public void fenshunum(int a,int b,int c){
a=shenchengnum(c);
b=shenchengnum(c);
}
public String xiaoshusc(){
Random rand=new Random();
DecimalFormat dcmFmt = new DecimalFormat("0.00");
float a=rand.nextFloat()*100;
String b=dcmFmt.format(a);
return b;
}
public char yunsuanchar(boolean szyf){
Random rand=new Random();
int j=0;
char c=' ';
if(szyf){
j=rand.nextInt(2);
if(j==0){
c='/';
} else if(j==1){
c='*';
}
}
else{
j=rand.nextInt()%2;
if(j==0){
c='+';
}
else {
c='-';
}
}
return c;
}
//生成數的方法
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String num=textnum.getText();
int qtnum=Integer.parseInt(num);
if(gradetwo.isSelected()){
for(int i=0;i<qtnum;i++){
Random rand=new Random();
int k=rand.nextInt()%2;
if(k==0){
String fnum=String.valueOf(shenchengnum(4));
String snum=String.valueOf(shenchengnum(4));
String ch=String.valueOf(yunsuanchar(false));
quest.append(fnum+" "+" "+ch+" "+snum+"=");
quest.append("\n");
}else{
String fnum=String.valueOf(shenchengnum(2));
String snum=String.valueOf(shenchengnum(1));
String ch=String.valueOf(yunsuanchar(true));
quest.append(fnum+" "+" "+ch+" "+snum+"=");
quest.append("\n");
}
}
}
else if(gradethree.isSelected()){
for(int i=0;i<qtnum;i++){
Random rand=new Random();
int k=rand.nextInt()%2;
if(k==0){
String fnum=String.valueOf(shenchengnum(4));
String snum=String.valueOf(shenchengnum(4));
String ch=String.valueOf(yunsuanchar(false));
quest.append(fnum+" "+" "+ch+" "+snum+"=");
quest.append("\n");
}else{
String fnum=String.valueOf(shenchengnum(4));
String snum=String.valueOf(shenchengnum(1));
String ch=String.valueOf(yunsuanchar(true));
quest.append(fnum+" "+" "+ch+" "+snum+"=");
quest.append("\n");
}
}
}else if(gradefour.isSelected()){
for(int i=0;i<qtnum;i++){
String fnum=String.valueOf(shenchengnum(3));
String snum=String.valueOf(shenchengnum(2));
String ch=String.valueOf(yunsuanchar(true));
quest.append(fnum+" "+" "+ch+" "+snum+"=");
quest.append("\n");
}
}
else if (gradefive.isSelected()){
for(int i=0;i<qtnum;i++){
String fnum=xiaoshusc();
String snum=xiaoshusc();
String ch=String.valueOf(yunsuanchar(true));
quest.append(fnum+" "+" "+ch+" "+snum+"=");
quest.append("\n");
}
}
}
} public class chongzhiListener implements ActionListener{
@Override public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
textnum.setText(null);
quest.setText(null);
}
}
}