https://git.coding.net/Luo_yujie/sizeyunsuan.app.git
201421123034
201421123032
1. 需求分析
這次作業新引用了語言選擇,計時器與統計正确率功能。首先,在搜尋語言國際化後發現,現在程式的開發與使用不僅僅僅限于本地,java語言國際化、多元化已經成為一種必然趨勢,這就要求我們必須使用同一套規則,是以,語言選擇功能是适應潮流所必需的。計時器與統計正确率功能能讓使用本程式的使用者更加省心、便捷,限制性更強。
2. 程式設計:針對選擇的2-3個新開發功能做設計,使用思維導圖。
a.語言選擇 使用者可以在首界面選擇英文、中文、繁體中文語言
b.計時器 按下計時器按鈕開始計時,按下結束按鈕結束計時,使用者可以根據自己需求選擇開始做題時間
c.統計正确率 根據使用者輸入的回答與正确答案的比對,計算正确率并輸出

3. 代碼展示
a.語言選擇功能
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();//銷毀目前頁面
new English().setVisible(true); //下個頁面顯示出來
}
});
b.統計正确率功能
JButton button_1 = new JButton("送出答案");
button_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String[] ans =textArea_1.getText().split("\n");
String strings[]=new String[list11.size()];
for(int i=0,j=list11.size();i<j;i++){
strings[i]=list11.get(i);
} int count=0;
for(int i = 0;i < list11.size();i++){
if(ans[i].equals(strings[i]))
{
print.add("正确\n");
count++;
}
else{print.add("錯誤\n");}
}
textArea_2.append(print+"\n");
double sum =((double)count/(double)(list11.size()))*100;
lblNewLabel.setText("正确率為:"+sum+"%");
}
});
c.計時器功能
public class timer extends JFrame {
final Label lab = new Label();
Date now = new Date();
@SuppressWarnings("deprecation")
public timer() {
now.setHours(0);
now.setMinutes(0);
now.setSeconds(0);
setBounds(550, 270, 278, 245);
final Timer timer = new Timer(1000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
Date now2 = new Date(now.getTime() + 1000);
now = now2;
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
lab.setText(formatter.format(now));
}
});
Button b1 = new Button("開始");
Button b2 = new Button("停止");
b2.setBounds(235, 209, 67, 40);
b1.setBounds(65, 209, 67, 40);
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Button b = (Button) e.getSource();
b.setLabel("開始");
timer.start();
}
});
b2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Button b = (Button) e.getSource();
b.setLabel("停止");
timer.stop();
}
});
4. 程式運作:程式運作及每個功能的使用截圖。
a.歡迎界面,選擇語言
b.語言分類界面
c.主要功能界面
5. 小結感受:結對程式設計真的能夠帶來1+1>2的效果嗎?通過這次結對程式設計,請談談你的感受和體會。
本次結對程式設計兩個人一起讨論的效果明顯比第一次高效而且有幫助,第一次個人作業時,由于每個人的思路不一樣,尋求幫助時,聽别人的解釋也是一頭霧水。這次的結對程式設計時讨論起來就有目的有針對性得多了。
在語言國際化功能設計當中遇到了很多高深的代碼,是以這個功能還有待開發。設計過程中最難解決的時題目的輸出,經多次實驗發現,最合适的還是用JTextArea文本域輸出,雖然看起來像是用于輸入的文本框,但是像這種多行多個輸出還是用文本域比較合适。
在代碼設計過程當中,我們還是比較少用到第一次個人作業的思想與方法,基于GUI的設計許多語言跟控制台不一樣就得重新設計編寫。是以可能下次以結對作業開始,再進行個人作業,讓我們自己分開再完善我們自己的功能可能效果更好一點。
6.
PSP2.1 | Personal Software Process Stages | Time (h) Senior Student | Time (h) |
Planning | 計劃 | 0.2 | 0.3 |
· Estimate | 估計這個任務需要多少時間 | 0.1 | |
Development | 開發 | 5 | 6.3 |
· Analysis | 需求分析 (包括學習新技術) | 0.5 | 1 |
· Design Spec | 生成設計文檔 | ||
· Design Review | 設計複審 | 1.2 | |
· Coding Standard | 代碼規範 | ||
· Design | 具體設計 | ||
· Coding | 具體編碼 | 1.5 | |
· Code Review | 代碼複審 | ||
· Test | 測試(自我測試,修改代碼,送出修改) | 0.4 | |
Reporting | 報告 | 0.15 | |
· | 測試報告 | 0.05 | |
計算工作量 | |||
并提出過程改進計劃 |
7.過程