目錄html
本次做業,我是駕駛員,主要負責代碼的編寫和圖形用戶界面的實現,用的語言是Java語言,屬於現學現賣,但也很有收穫。
本次做業能夠分爲兩大類,一是隨機題目的生成,二是圖形畫界面。具體實現以下:
java
shuji[0]=getnum(); for(int i=1;i<=(int)(Math.random()*3)+1;i++) { shuji[i]=getnum(); getchar(); fuhaoji=fuhaoji+fuhao_sel; } private double getnum() { double a=(Math.random()*max)+1; a=((int)(a*100))/100.0; return (a); } public void getchar() { int le=(int)(Math.random()*(fuhao.length()-1))+1; fuhao_sel=fuhao.substring(le, le+1); }
int id=Math.abs((int)(Math.random()*(fuhaoji.length()-1))); String a,b,c; a=fuhaoji.substring(0, id+1); b=fuhaoji.substring(id+1,id+2); if ((id+2) < (fuhaoji.length())) c=fuhaoji.substring(id+2,fuhaoji.length()); else c=""; fuhaoji=a+"("+b+")"+c;
private void show() { int no=1,ni=0; ti=" "; if (kuohao==1&&fuhaoji.charAt(1)=='(') { while(true) { if (no>=fuhaoji.length()) break; ti=ti+fuhaoji.substring(no,no+1); if (fuhaoji.charAt(no)==')') { no++; if (no>=fuhaoji.length()) break; ti=ti+fuhaoji.substring(no,no+1); } if (xiaoshu==1) ti=ti+String.valueOf(shuji[ni]); else ti=ti+String.valueOf((int)shuji[ni]); ni++;no++; if (no==fuhaoji.length()) break; } } else if (kuohao==1&&fuhaoji.charAt(1)!='(') { if (xiaoshu==1) ti=ti+String.valueOf(shuji[0]); else ti=ti+String.valueOf((int)shuji[0]); ni++; while(true) { if (no>=fuhaoji.length()) break; ti=ti+fuhaoji.substring(no,no+1); no++; if (no>=fuhaoji.length()) break; if (fuhaoji.charAt(no)=='(') { //no++; ti=ti+fuhaoji.substring(no,no+1); } else no--; if (fuhaoji.charAt(no)==')'&&no<fuhaoji.length()) { no++; ti=ti+fuhaoji.substring(no,no+1); } if (xiaoshu==1) ti=ti+String.valueOf(shuji[ni]); else ti=ti+String.valueOf((int)shuji[ni]); ni++;no++; if (no==fuhaoji.length()) break; } } else if(kuohao==0) { if (xiaoshu==1) ti=ti+String.valueOf(shuji[ni]); else ti=ti+String.valueOf((int)shuji[ni]); ni++; while(true) { if (no>=fuhaoji.length()) break; ti=ti+fuhaoji.substring(no,no+1); if (xiaoshu==1) {ti=ti+String.valueOf(shuji[ni]);} else {ti=ti+String.valueOf((int)shuji[ni]);} ni++; no++; if (no>=fuhaoji.length()) break; } } }
private void count() { int no=1,ni=0,top1=0,top2=0; double a[]={0,0,0,0}; char[] b=new char[5]; a[top1]=shu_new[ni]; top1++; ni++; while(true) { if (no>=fuhao_new.length()) break; char ch=fuhao_new.charAt(no); no++; if (ch=='*'||ch=='/') { double s=shu_new[ni]; ni++; if (ch=='*') a[top1-1]=a[top1-1]*s; else if (ch=='/') a[top1-1]=a[top1-1]/s; } else if (ch=='+'||ch=='-') { double s=shu_new[ni]; ni++; if (top2==1&&top1==2) { if (b[0]=='+') a[0]=a[0]+a[1]; else if (b[0]=='-') a[0]=a[0]-a[1]; b[1]=ch; a[1]=s; } else { b[top2]=ch; top2++; a[top1]=s; top1++; } } // else if (fuhaoji.charAt(no+1)!='('); } if (top2==1&&top1==2) { if (b[0]=='+') a[0]=a[0]+a[1]; else if (b[0]=='-') a[0]=a[0]-a[1]; } if (xiaoshu==1) daan=String.valueOf(a[0]); else daan=String.valueOf((int)a[0]); }
package cn.window.java; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.File; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.OutputStream; import java.io.Writer; public class face_1 extends JFrame implements ActionListener { /** * */ private static final long serialVersionUID = 1L; private JCheckBox checkbox[]; private JComboBox<Integer> comb_num,comb_max; private int num=1; private int max=10; private int style =0; private int iss=0; private JButton bcreat,bput; private JButton[] submit = new JButton[20]; private JTextField[] timu=new JTextField[20],ans1=new JTextField[20],ans2=new JTextField[20],ans3=new JTextField[20]; private test[] t=new test[20]; public face_1() { super("簡單四則運算"); this.setSize(900,600); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(HIDE_ON_CLOSE); JToolBar toolbar = new JToolBar(); this.getContentPane().add(toolbar, "North"); String str[][]={{"題目個數 :"},{"+","-","*","/","()","小數"},{" 最大值:"}}; toolbar.add(new JLabel(" ")); toolbar.add(new JLabel(str[0][0])); Integer num1[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; this.comb_num=new JComboBox<Integer>(num1); this.comb_num.addActionListener(this); toolbar.add(this.comb_num); toolbar.add(new JLabel(" 選擇運算符和數據類型:")); this.checkbox=new JCheckBox[str[1].length]; for (int i=0;i<str[1].length;i++) { this.checkbox[i]=new JCheckBox(str[1][i]); toolbar.add(this.checkbox[i]); this.checkbox[i].addActionListener(this); } toolbar.add(new JLabel(" ")); toolbar.add(new JLabel(str[2][0])); Integer max1[]={10,50,100,1000,10000}; this.comb_max=new JComboBox<Integer>(max1); this.comb_max.addActionListener(this); toolbar.add(this.comb_max); toolbar.add(new JLabel(" ")); this.bcreat=new JButton(" 生成 "); this.bcreat.addActionListener(this); toolbar.add(bcreat); toolbar.add(new JLabel(" ")); this.bput=new JButton(" 打印 "); this.bput.addActionListener(this); toolbar.add(bput); toolbar.add(new JLabel(" ")); JPanel equ=new JPanel(); this.getContentPane().add(equ, "Center"); equ.setLayout(new GridLayout(21, 7, 5, 5)); equ.add(new JLabel(" 題號") ); equ.add(new JLabel(" 題目") ); equ.add(new JLabel(" 個人答案") ); equ.add(new JLabel(" 提交") ); equ.add(new JLabel(" 結果") ); equ.add(new JLabel(" 正確答案") ); String no[]={" 1"," 2"," 3"," 4"," 5"," 6"," 7"," 8"," 9"," 10"," 11"," 12"," 13"," 14"," 15"," 16"," 17"," 18"," 19"," 20"}; for (int i=0;i<20;i++) { equ.add(new JLabel (no[i])); this.timu[i]=new JTextField ("題目在這兒!"); equ.add(this.timu[i]); this.ans1[i]=new JTextField (); this.ans1[i].addActionListener(this); equ.add(this.ans1[i]); this.submit[i]=new JButton("提交"); this.submit[i].addActionListener(this); equ.add(this.submit[i]); this.ans2[i]=new JTextField ("對不對提交一下才知道"); this.ans2[i].addActionListener(this); equ.add(this.ans2[i]); this.ans3[i]=new JTextField ("正確答案看這兒!"); this.ans3[i].addActionListener(this); equ.add(this.ans3[i]); } this.setVisible(true); } private void submit(int n) { if (n>=num) { JOptionPane.showMessageDialog(this, "此處沒有題目哦,不能提交!"); return; } String str=this.ans1[n].getText(); if (str.equals("")) { JOptionPane.showMessageDialog(this, "不寫答案還有勇氣提交?"); return; } String s=t[n].daan; if (str.equals(s)) // { this.ans2[n].setCaretColor(Color.blue); this.ans2[n].setText("正確"); } else { this.ans2[n].setCaretColor(Color.red); this.ans2[n].setText("錯誤"); } this.ans3[n].setText(t[n].daan); this.ans3[n].setCaretColor(Color.darkGray); } public void bcreatsx() { if (style==0) { JOptionPane.showMessageDialog(this, "尚未選擇符號哦,不能生成!"); return; } if (style==16||style==32) { if (style==16)JOptionPane.showMessageDialog(this, "小朋友,只有括號是不行滴!"); if (style==32)JOptionPane.showMessageDialog(this, "小朋友,只有小數是不行滴!"); return; } JOptionPane.showMessageDialog(this, "原有題目就沒有了哦!"); for (int i=0;i<num;i++) { this.ans1[i].setText(""); this.ans2[i].setText("對不對提交一下才知道"); this.ans3[i].setText("正確答案看這兒!"); t[i]=new test(max,style);// t[i].creat(); this.timu[i].setText(t[i].ti); } iss++; } public void charOutStream() throws Exception{ // 1:利用File類找到要操做的對象 File file = new File("D:" + File.separator + "JAVA" + File.separator + "test.txt"); if(!file.getParentFile().exists()){ file.getParentFile().mkdirs(); } Writer out = new FileWriter(file); for (int i=0;i<num;i++) { out.write("題目:"); out.write(t[i].ti); out.write(" 正確答案:"); out.write(t[i].daan); out.write(" 個人答案:"); out.write(this.ans1[i].getText()); out.write("\r\n"); } out.close(); JOptionPane.showMessageDialog(this, "已經打印成功了!在D:JAVA:test.txt中。"); } public void actionPerformed(ActionEvent ev) { if (ev.getSource()==this.bcreat) { bcreatsx();// } if (ev.getSource()==this.bput) { if (iss==0) { JOptionPane.showMessageDialog(this, "尚未題目哦,不能打印!"); return ; } try { charOutStream(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }//dayin } if (ev.getSource()instanceof JComboBox<?>||ev.getSource()instanceof JCheckBox||ev.getSource()instanceof JMenuItem) { Object obj1=this.comb_num.getSelectedItem(); num=((Integer)obj1).intValue(); Object obj2=this.comb_max.getSelectedItem(); max=((Integer)obj2).intValue(); if (ev.getActionCommand().equals("+")) style=style^1; if (ev.getActionCommand().equals("-")) style=style^2; if (ev.getActionCommand().equals("*")) style=style^4; if (ev.getActionCommand().equals("/")) style=style^8; if (ev.getActionCommand().equals("()")) style=style^16; if (ev.getActionCommand().equals("小數")) style=style^32; } if (ev.getSource()==submit[0]) submit(0); else if (ev.getSource()==submit[1]) submit(1); // else if (ev.getSource()==submit[2]) submit(2); else if (ev.getSource()==submit[3]) submit(3); else if (ev.getSource()==submit[4]) submit(4); else if (ev.getSource()==submit[5]) submit(5); else if (ev.getSource()==submit[6]) submit(6); else if (ev.getSource()==submit[7]) submit(7); else if (ev.getSource()==submit[8]) submit(8); else if (ev.getSource()==submit[9]) submit(9); else if (ev.getSource()==submit[10]) submit(10); else if (ev.getSource()==submit[11]) submit(11); else if (ev.getSource()==submit[12]) submit(12); else if (ev.getSource()==submit[13]) submit(13); else if (ev.getSource()==submit[14]) submit(14); else if (ev.getSource()==submit[15]) submit(15); else if (ev.getSource()==submit[16]) submit(16); else if (ev.getSource()==submit[17]) submit(17); else if (ev.getSource()==submit[18]) submit(18); else if (ev.getSource()==submit[19]) submit(19); } public static void main(String args[]) { new face_1(); } }
本次咱們這個項目的的領航員是楊港同窗。
在做業的初期,咱們兩個進行了計劃的分配,我是駕駛員,他是領航員。後來咱們一塊兒構造工做的思路,各部分功能的實現,以及圖形畫界面的佈局等等。最後制定出了完整的開發計劃。他在初期設計工做中起到了關鍵性的做用,和他合做也是很是的愉快。
在編程工做中,領航員可以認真的對個人工做以及代碼進行很好的監督,也給我提出了許多頗有效的編碼技巧和部分功能的實現方法,可以及時和我討論出現的問題。
在編程結束後,領航員可以和我進行程序的審覈,看看各部分功能是否都已經實現,提出改進的建議。代碼寫完後也能很負責的進行單元測試。
總的來講,此次的結對編程,領航員起到了相當重要的做用。從初期的設計,中期的編碼,以及後期的測試等,若是沒有領航員的監督指導,一我的是很難很好的完成這麼多的工做的。也很是感謝可以和他一塊兒合做。 git
本次做業,使我從一個Java小白晉級爲一個Java入門,能夠說是又接觸了一門新的語言。很有收穫。
以往的的做業,課設等咱們用的都是小黑框,每次面對小黑框,都會產生一個疑惑,在大學的這三年多的學習中,一直都是小黑框,面對天天接觸的那麼多形形色色的軟件,功能那麼強大,但我只能作小黑框,沒有一件能夠拿的出手的東西,外加前幾天去招聘會,和一個招聘老師談了談,當她問到咱們平時都有沒有作過什麼,咱們只能搖頭的時候,就決定作一個能夠拿得出手的做品。
因此撈起了一本Java的書開始現學現賣。完成了本次的做業,收穫滿滿,並且之後也不用每天面對小黑框了。
github