團隊做業之四則運算GUI展現

1、項目Coding.net原碼倉庫地址:https://git.coding.net/caoying/Teamwork.git前端

 

隊員:java

盧琪:2016011986git

曹瀅:2016012102web

2、PSP表格之時間規劃算法

PSP編程

任務內容小程序

計劃時間(min後端

Planning網絡

計劃架構

30

Estimate

估計這個任務須要多少時間,並規劃大體工做步驟

 

30

Development

開發

2880

Analysis

需求分析

30

Design Spec

生成文檔

40

Design Review

設計複審

20

Coding Standard

代碼規範

10

Design

具體設計

40

Coding

具體編碼

2000

Code Review

代碼複審

30

Test

測試

30

Reporting

報告

180

Test Report

測試報告

30

Size Measurement

計算工做量

20

Postmortem & Process Improvement Plan

過後總結,並提出過程改進計劃

 

30

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3、接口設計介紹

Information Hiding, Interface Design, Loose Coupling

信息隱藏(Information Hiding)

信息隱藏是指在設計和肯定模塊時,使得一個模塊內包含的特定信息(過程或數據),對於不須要這些信息的其餘模塊來講,是不可訪問的。

接口設計(Interface Design)

接口泛指實體把本身提供給外界的一種抽象化物(能夠爲另外一實體),用以由內部操做分離出外部溝通方法,使其能被內部修改而不影響外界其餘實體與其交互的方式。

鬆耦合(Loose Coupling)

鬆耦合系統一般是基於消息的系統,此時客戶端和遠程服務並不知道對方是如何實現的。客戶端和服務之間的通信由消息的架構支配。只要消息符合協商的架構,則客戶端或服務的實現就能夠根據須要進行更改,而沒必要擔憂會破壞對方。

4、計算模塊接口的設計及實現(獨立完成)

1.類和函數的組成及關係

咱們設計了一些函數,例如生成只含加減號的四則運算還有包括加減乘除的四則運算,還能夠控制括號的有無,生成題目的時候就有對這些函數的調用

2.函數流程圖

4.算法的關鍵及獨到之處

咱們的獨到之處是界面模塊簡潔、功能齊全,算法易懂易理解。

5、計算模塊接口的性能改進

1.性能改進思路及時間花費

    爲確保軟件知足或超過設計的指望值,有必要分析應用程序的性能以發現潛在的問題。這個過程被稱爲「性能分析」。它包括檢查應用程序以確保每一個組件有效地工做,並根據設計密切注視處理器的使用、網絡和系統服務、存儲和輸入/輸出(I/O)。

    在運行代碼的性能分析中,咱們發現資源回收不徹底。通過各類調試,咱們發現是輸入輸出流的關係,因此咱們關閉輸出流、修改了代碼。整個過程花費了接近三個小時。

2.性能分析圖展現及程序中消耗最大函數

展現圖:

 

程序中消耗最大的函數無疑是包含過程最多、工程量最大的函數Calculate。

6、單元測試展現(展現出項目部分單元測試代碼,並說明測試的函數,構造測試數據的思路。並將單元測試獲得的測試覆蓋率截圖,發表在博客中。只須要測試命令行部分,且該部分覆蓋率到90%以上。)

1.單元測試代碼及函數

單元測試的代碼:(這裏就以算分這個類爲例,其他測試相似)

public class CoreTest extends TestCase {
 
    public void testNewExpSome() {
        Core.newExpSome(true, 50, 1, 3);
    }
 
    public void testNewExpAll() {
        Core.newExpAll(false, 50, 1, 3);
    }
 
    public void testDivideExactly() {
        Core.divideExactly(48, 8,5);
    }
 
}

單元測試的函數:(這裏就以算分這個類爲例,其他測試相似)

2.構造測試數據的思路

    咱們的思路是從要測試的對象出發:首先,咱們有一個生成加減乘除類、有一個能夠計算式子並返回結果的類、有一個判斷優先級的類;接下來咱們就要對它們測試。其次咱們還有GUI窗口,所以也要進行測試。

3.測試覆蓋率截圖

在同窗的幫助下,使得咱們團隊的測試覆蓋率達到了97%。以下圖

7、異常處理說明(詳細介紹每種異常的設計目標。每種異常都要選擇一個單元測試樣例發佈在博客中,並指明錯誤對應的場景)

1.輸入數判斷是否超範圍

    這裏用try——catch方法來捕獲異常:

try {
    n = Integer.parseInt(n.getText());
    if (n<0 || n > 10000) {
        n.setText("n不在範圍內,需重輸");
        return;
    }
    flag0 = 1;
} catch (Exception a) {
    n.setText("n異常,需重輸");
}

2.文件處理異常

   這裏一樣用try——catch方法來捕獲異常:

try {
  Ffile = new PrintStream("result.txt");
   System.setOut(Ffile);
 } catch (Exception e) {
  System.out.println("文件生成錯誤");
 }

8、界面設計過程(詳細介紹界面模塊是如何設計的,並寫一些必要的代碼說明解釋實現過程)(獨立完成)

1.設計思路

   咱們要設計各個界面的GUI,就要弄清楚分幾個界面、各個界面要包含哪些組件、要實現什麼具體的功能。因此咱們根據分析,有這些:首頁GUI設計,分爲兩塊,出題和作題、出題界面GUI的設計、答題界面GUI的設計及文件上傳界面GUI的設計。

2.實現過程

首頁界面GUI代碼:

static class Hello extends JPanel {
        JLabel title = new JLabel("歡迎來到四則運算小程序!");
        JLabel l = new JLabel();
        JButton timu = new JButton("生成題目");
        JButton finish = new JButton("完成題目");

出題界面GUI代碼:

static class InMakeExp extends JPanel{
        JLabel timunum = new JLabel("題目數量");
        JLabel timulower = new JLabel("數值的下界範圍");
        JLabel timuupper = new JLabel("數值的上界範圍");
        JLabel most = new JLabel("運算符最多個數");
        JCheckBox chenchu = new JCheckBox("乘除法",false);
        JCheckBox bracket = new JCheckBox("括號",false);
        JButton ok = new JButton("提交");<br>               
        JTextField num = new JTextField(10); <br>                
        JTextField lower = new JTextField(10); <br>               
        JTextField upper = new JTextField(10); <br>                
        JTextField most_ = new JTextField(10);

答題界面GUI代碼:

timu = new JLabel("題目:");
    timu.setSize(100, 40);
    timu.setLocation(650, 100);
    l.add(timu);
    timu.setVisible(false);
 
    daan = new JLabel("答案:");
    daan.setSize(100, 40);
    daan.setLocation(650, 160);
    l.add(la22);
    daan.setVisible(false);
 
    question = new JTextArea();
    question.setSize(150, 30);
    question.setLocation(700, 100);
    l.add(question);
    question.setVisible(false);
 
    answer = new JTextArea();
    answer.setSize(70, 30);
    answer.setLocation(700, 160);
    l.add(answer);
    answer.setVisible(false);
 
    tijiao= new JButton("提交");
    tijiao.addActionListener(this);
    tijiao.setSize(70, 30);
    tijiao.setLocation(780, 160);
    tijiao.setFont(new Font("Dialog", 1, 14));
    l.add(next);
    tijiao.setVisible(false);
}

文件上傳界面GUI代碼:

shangchuan= new JButton("上傳文件");
shangchuan.addActionListener(this);
shangchuan.setFont(new Font("Dialog", 1, 18));
shangchuan.setSize(120, 30);
shangchuan.setLocation(515, 140);
l.add(upload);

9、界面模塊與計算模塊的對接(詳細地描述UI模塊的設計與兩個模塊的對接,並截圖實現的功能)(獨立完成)

1.對接描述

    咱們GUI界面與計算模塊的對接是經過獲取參數,調用方法來實現的。出題時,將題目寫入文件,而後文件下載到本地。作題時,上傳題目後,將題目和答案封裝到result集合中。

2.功能截圖

首頁:

出題界面:

 

答題界面:

文件上傳截圖:

生成題目截圖:

作題判斷結果:

10、結對過程描述及合照

和曹瀅同窗結對打代碼是一件使人開心的事,雖然咱們倆對java都不是特別瞭解,可是咱們互相陪伴互相鼓舞,也是完成了這份做業。請教了室友呂曉真同窗,原本我和曹瀅同窗準備作先後臺網頁版的,可是請教過周圍一些同窗,發現咱們倆都比較傾向於前端,然後端代碼不是很熟悉,沒法作到與前臺緊密結合,也很抱歉曹瀅同窗已經完成一份前臺樣式代碼了,因此咱們改戰GUI。

合照:

圖左是我,圖右是曹瀅同窗~

11、結對編程的優缺點(同時指出結對的每個人的優勢和缺點在哪裏 (至少三個優勢和一個缺點))

結對編程的優勢:1.兩我的有商有量,能夠各自分擔項目的一半;

                2.兩我的互相學習,能夠相互鼓勵增長彼此信心;

                3.兩我的更有動力,能夠促進各自寫代碼的效率。

結對編程的缺點:1.兩我的商量可能會出現意見有分歧;

                2.兩我的分開完成項目的一部分,可能會致使事倍功半,好比咱們以前作web項目卻中途進行不下去了;

                3.兩我的之中有一個更厲害的,那麼另外一人可能會產生依賴、付出也較少。

個人隊友曹瀅同窗的優勢:1.爲人和藹,易溝通;2.前端技術掌握的好,善於學習;3.作事認真負責   缺點:對後端java不是特別熟悉

個人優勢:1.易於溝通;2.認真學習;3.虛心請教。 缺點:對技術方面掌握的很差;缺少耐心;有時候碰到困難會不知道怎樣解決

12、總結與反思

經過此次的結對項目,讓我清晰地體會到本身的不足,還有不少地方欠缺,但願在從此的學習中可以有所提高!

 

PSP

任務內容

實際完成時間(min

Planning

計劃

60

Estimate

估計這個任務須要多少時間,並規劃大體工做步驟

 

60

Development

開發

3000

Analysis

需求分析

30

Design Spec

生成文檔

60

Design Review

設計複審

30

Coding Standard

代碼規範

20

Design

具體設計

50

Coding

具體編碼

2100

Code Review

代碼複審

40

Test

測試

50

Reporting

報告

185

Test Report

測試報告

35

Size Measurement

計算工做量

30

Postmortem & Process Improvement Plan

過後總結,並提出過程改進計劃

 

40

相關文章
相關標籤/搜索