四則運算分析與設計
一、四則運算調查報告
1、您的角色是?
A、老師(轉到2題) |
B、學生(跳轉24題) |
2您教的是什麽學科?
A、數學 |
B、語文 |
C、英語 |
D、其他 |
3、您教幾年級的學生?
A、一年級 |
B、二年級 |
C、三年級 |
D、四年級 |
E、五年級 |
F、六年級 |
4、學生需要練習哪種類型的運算題? [多選題]
A、簡單算數題 例如 2+2-1=3 |
B、帶分數的四則運算 |
C、四則混合運算 |
D、其他 _________________* |
5、希望學生每次在運算器中練習多少題才能達到練習效果: [單選題] *
A 、10道 |
B、20道 |
C、 30道 |
D、其他: _________________ * |
6、練習中做的錯題需要有單獨的記錄嗎?[單選題] *
A、需要 |
B、不需要 |
7、錯誤題目是否需要在練習中重復出現? [單選題] *
A、需要 |
B、不需要 |
8、是否需要出題功能嗎? [單選題] *
A、需要 |
B、不需要 |
9、您希望四則運算的什麽難度合適? [單選題] *
A 、簡單加減乘除 |
B、帶有真分數的加減乘除 |
C、 帶有括號和分數的加減乘除 |
D、開方或平方難度及以上 |
10、您希望我們提供練習是專項練習還是混合練習? [單選題] *
A 、專項練習 |
B、混合練習 |
11、您希望我們提供一些高分記錄或速度紀錄來鼓勵答題者嗎? [單選題] *
A 、建議 |
B、不建議 |
C、無所謂 |
12、您對我們的項目有什麽意見或建議: [填空題]
_________________________________
13、您的孩子現在在上小學幾年級? [單選題] *
A、一年級 |
B、二年級 |
C、三年級 |
D、四年級 |
E、五年級 |
F、六年級 |
14、您的孩子現在會自己操作使用電腦嗎? [單選題] *
A、會 |
B、不會 |
15、如果有一款小學生練習四則運算的系統,您會讓您的孩子使用嗎? [單選題] *
A、會 |
B、不會 |
16、您覺得孩子在線答題需要監督嗎? [單選題] *
A、需要 |
B、不需要 |
17、您覺得查看孩子做題情況的時候需要知道在錯題本裏顯示之前的錯誤答案嗎? [單選題] *
A、需要 |
B、不需要 |
18、您查看孩子做題情況希望看到的信息是: [多選題] *
A、看孩子做錯的題 |
B、查看孩子做題頻率 |
C、看孩子做題總量 |
D、看孩子完成一次練習的時間 |
19、您希望孩子在線上做什麽類型的題? [多選題] *
A 、簡單加減乘除 |
B、帶有真分數的加減乘除 |
C、 帶有括號和分數的加減乘除 |
D、開方或平方難度及以上 |
20、您希望有出題功能嗎? [單選題] *
A、希望 |
B、不希望 |
21、您希望四則運算的什麽難度合適? [單選題] *
A 、簡單加減乘除 |
B、帶有真分數的加減乘除 |
C、 帶有括號和分數的加減乘除 |
D、開方或平方難度及以上 |
22、您希望我們提供練習是專項練習還是混合練習? [單選題] *
A 、專項練習 |
B、混合練習 |
23、您希望我們提供一些高分記錄或速度紀錄來鼓勵答題者嗎? [單選題] *
A 、建議 |
B、不建議 |
C、無所謂 |
24、你今年在上幾年級? [單選題] *
A、一年級 |
B、二年級 |
C、三年級 |
D、四年級 |
E、五年級 |
F、六年級 |
25、你會自己操作電腦嗎? [單選題] *
A、會 |
B、不會 |
26、你希望四則運算的什麽難度合適? [單選題] *
A 、簡單加減乘除 |
B、帶有真分數的加減乘除 |
C、 帶有括號和分數的加減乘除 |
D、開方或平方難度及以上 |
27、練習算數題,你想一次做多少道題? [單選題] *
A 、20道 |
B、30道 |
C、 50道 |
D、80道 |
E、其它 _________________ * |
|
28、查看錯題的時候,你希望看到自己的錯誤答案嗎? [單選題] *
A、希望 |
B、不希望 |
29、你希望我們提供練習是專項練習還是混合練習? [單選題] *
A 、專項練習 |
B、混合練習 |
調查結果:
用戶1:1.A 2.A 3.A 4.C 5.C 6.A 7.A 8.A 9.D 10.B 11.A 12.出題模塊能更加有針對性 13.A 14. A 15. A 16. A 17.A 18.ABCD 19.D 20.A 21.D 22.B 23.A
用戶2:1.A 2.B 3.B 4.D 5.C 6.B 7.B 8.A 9.D 10.B 11.A 12.查看錯題集是能顯示相對應的錯題答案 13.B 14. A 15. A 16. A 17.A 18.BCD 19.D 20.A 21.D 22.A 23.A
用戶3:1.A 2.C 3.C 4.A 5.D 6.B 7.A 8.A 9.B 10.B 11.A 12.無 13.A 14. A 15.B 16. B 17.A 18.ABCD 19.D 20.A 21.D 22.A 23.B
用戶4:1.A 2.B 3.F 4.C 5.C 6.A 7.A 8.A 9.D 10.B 11.A 12.界面設置希望更活潑生動一些 13.A 14. A 15. A 16. A 17.A 18.ABCD 19.D 20.A 21.D 22.B 23.A
用戶5:1.A 2.B 3.E 4.B 5.A 6.B 7.C 8.A 9.D 10.B 11.B 12.查看錯題集是能顯示相對應的錯題答案 13.B 14. A 15. B 16. A 17.A 18.BCD 19.D 20.A 21.D 22.A 23.A
用戶6:1.B 24.E 25.A 26. C 27.C 28.A 29.B
用戶7:1.B 24.B 25.A 26. A 27.D 28.A 29.A
用戶8:1.B 24.A 25.B 26. C 27.B 28.A 29.B
用戶9:1.B 24.F 25.A 26. B 27.D 28.A 29.A
用戶10:1.B 24.C 25.B 26. D 27.A 28.A 29.B
綜合調查結果可知,教師對該軟件的需求比較高。普遍的教師希望通過簡單網上練習方式對學生的知識點進行考察,並從中得知學生對知識點掌握不清的地方。由此錯題集的功能在該軟件中重要性相對較高。教師的軟件出題量的要求比起學生也相對較高,折合老師和學生的出題量要求進行折中選擇。由調查統計也能得出,教師和學生都希望題量進行專項練習,可以考慮在設計軟件時先由專項練習為主,最後的復習模塊可以為混合練習。學生相對此軟件功能要求不高,大多只希望達到方便做題的效果。由此,功能的設計可以偏向教師的需求。
一、總體描述
1.產品描述
這個產品是面向小學低年級的“四則運算系統”軟件,能自動生成簡單的四則運算題目,方便老師出題、學生做題的軟件。
2.產品功能
用戶對象為老師和學生。用戶可以進行註冊、修改密碼和自己的用戶信息。老師註冊登錄後可以創建班級、布置作業、查看學生的作業完成情況。學生註冊登錄後可以加入班級,進行題目練習,查看自己的錯題情況。
二、具體需求
1.外部接口需求
I.用戶界面需求
具體見原型設計:https://modao.cc/app/tIQGJJKdFMQNqOiF3HfG9s0eJoeJ0hV
2.功能需求
I.類圖
II.功能描述
用例圖如下所示:
用例規約:
III.用戶場景
順序圖為:
四、編碼規範:格式規範
a)縮進
使用配置文件進行格式化:
配置文件中一個TAB等於4個空格。
b)行長度
每行100字符
註: 使用eclipse自帶的Format方法(快捷鍵:Ctrl+Shift+F)時,需要配置“Maximum line width”設置長度為100
c)聲明
d)聲明變量、常量
一行只聲明一個變量或常量;
在代碼塊的開始處聲明實例變量,不要在首次用到該變量時才聲明【推薦】
e)聲明類
左大括號”{“位於聲明語句同行的末尾,右大括號”}”另起一行;
方法與方法之間以空行分隔
f)語句
可以使用eclipse自帶的Format方法(快捷鍵:Ctrl+Shift+F)時 使用eclipse默認的“Control Statements ”格式化方法進行
註:if語句總是用”{“和”}”括起來
示例
class Example {
void
bar() {
do
{
}
while(
true);
try
{
}
catch(Exception e) {
}
finally{
}
}
void
foo2() {
if
(
true) {
return
;
}
if
(
true) {
return
;
}
elseif
(
false) {
return
;
}
else{
return
;
}
}
}
等號左右必須各有一個空格:
button = null;
雙目運算符左右必須各有一個空格:
imageWidth = imagePadding + imageSize;
標點符號後面必須跟一個空格
標點符號包括“,”、“;”等,下面列出幾個例子。
一行定義多個變量時,“,”後跟空格:
int i, j;
在for循環中,“;”後跟空格:
for (int i = 0; i < count; ++i)
在有多個入口參數的函數調用中,“,”後跟一個空格:
addContentView(view, params);
h)變量類型的使用
編程的過程中盡量使用接口編程,而少用類編程。
如:
List<String>
names
=new
ArrayList
<String>();
命名規範
通用規則
命名規範使程序更易讀,從而更易於理解。它們也可以提供一些有關標識符功能的信息,以助於理解代碼,例如,不論它是一個常量,包,還是類。
包(Packages) 一個唯一包名的前綴總是全部小寫的ASCII字母並且是一個頂級域名,通常是com,edu,gov,mil,net,org,或1981年ISO 3166標準所指定的標識國家的英文雙字符代碼。包名的後續部分根據不同機構各自內部的命名規範而不盡相同。這類命名規範可能以特定目錄名的組成來區分部門(department),項目(project),機器(machine),或註冊名(login names)。
如:
package
com.itotem.view
package
com.itotem.utils.xxxx
類(Classes) 命名規則:類名是個一名詞,采用大小寫混合的方式,每個單詞的首字母大寫。盡量使類名簡潔而富於描述。使用完整單詞,避免縮寫詞(除非該縮寫詞被更廣泛使用,像URL,HTML)
如:
publicclass
Button
publicclass
EditText
接口(Interfaces) 命名規則:接口類名以大寫“I”開頭,大小寫規則與類名相似,
如:
publicinterface
IProjGroupService
方法(Methods) 方法名是一個動詞,采用大小寫混合的方式,第一個單詞的首字母小寫,其後單詞的首字母大寫。
如:
publicvoid
onCreate
(Bundle savedInstanceState)
publicvoid
run
()
局部變量(Local Variables) 采用大小寫混合的方式,第一個單詞的首字母小寫,其後單詞的首字母大寫。變量名應簡短且富於描述。變量名的選用應該易於記憶,即,能夠指出其用途。盡量避免單個字符的變量名,除非是一次性的臨時變量。臨時變量通常被取名為i,j,k,m和n,它們一般用於整型。c,d,e,它們一般用於字符型,變量名不應以下劃線或美元符號開頭。
如:
inti =
0;
floatimageWidth =
0;
實例變量(Instance Variables) 大小寫規則和類名相似,除了前面需要一個m。
如:
private
int
mEmployeeId =
0;
private
String mName =
"";
若實例變量為public類型的則和局部變量采用相同的命名規則。
如:
public
int
width =
0;
public
String contactName =
"";
常量(Constants [采用stiatc final 修飾]) 類常量的聲明,應該全部大寫,單詞間用下劃線隔開。(類似C語言的宏定義)。
如:
private
static
final
int
MIN_WIDTH =
4;
private
static
final
int
MAX_WIDTH =
999;
- 1
- 2
資源id 資源id全部采用小寫,單詞之間用下劃線隔開。
註意:這個小寫規範是Android強制執行的,如果出現大寫或者特殊字符工程是不能編譯的。會報錯
如:
download
app_name
call_log_
type
備註(Remark)
所有的標識符名稱要求取有意義的單詞,不能使用myXXXX和button01等風格的名稱。
附加說明
1、從命名中可以直觀看懂其定義和用途,否則必須增加註釋說明;
2、在同一系統內命名必須保持統一;避免出現類似示例中的情況;
示例:項目組id 變量定義:pgid、projectgroupId、idprojectgroup、idProjGroup
3、避免名字過長、命名采用英文縮寫,避免使用漢語拼音【推薦】
組織規範
引入包規範
不允許引入類中未使用的包;
引入包時不能直接引入“.*”,必須明確到引入的類名
可以通過快捷鍵引入包。Ctrl+Shift+O;
註釋規範
a)通用註釋規則
b)說明
註釋要精簡並清晰容易理解;
保持註釋與代碼同步。
代碼質量不好但能正常運行,或者還沒有實現的代碼用
//TODO:任務 ;
存在錯誤隱患的代碼用 //FIXME:聲明;
對於不建議使用(廢棄)的類或者方法,必須在他們的註釋中增加 @deprecated
c)javadoc註釋標簽語法定義說明
@author 對類的說明 標明開發該類模塊的作者
@version 對類的說明 標明該類模塊的版本
@see 對類、屬性、方法的說明 參考轉向,也就是相關主題
@param 對方法的說明 對方法中某參數的說明
@return 對方法的說明 對方法返回值的說明
@exception 對方法的說明 對方法可能拋出的異常進行說
@deprecated 對類或方法的說明 該類或方法不建議使用
d)類的註釋
目的:簡單概述該類作用
範圍:所有java類,可以不包括javabean
書寫規範:類的註釋必須寫在該類的聲明語法之前。在註釋中要描述該類的描述,創建者,創建日期。
類註釋模板:可以通過eclipse配置(Code Templates 中的 Code 的New Java files)
${filecomment}
${package_declaration}
/**
* Title: ${project_name}<br>
* Description: <br>
* Copyright: Copyright (c) ${year} <br>
* Create DateTime: ${date} ${time} <br>
* @author perry.li
*/
${typecomment}
${type_declaration}
類註釋示例:
package cn
.sh.sstic.projectmanagement.projectfeasibleschemaeval;
/**
* Title: mwbas2008<br>
* Description: 可行性方案套數數組定義類<br>
* Create DateTime: Oct 6, 2008 4:41:03 PM <br>
* @author perry.li
*/public
class FormUtil {
e)方法的註釋
目的:簡要概述該方法的功能,包括其參數、返回值意義的註釋
範圍:java類中的各種方法
註:接口的實現方法的註釋應寫在接口中而不是實現代碼中;
對自動生成的get/set方法不需要添加註釋;
如果方法允許null作為參數,或者允許返回值為null,必須在JavaDoc中說明,如果沒有說明,方法的調用者不允許使用null作為參數,並認為返回值是null 安全的。
書寫規範:方法註釋必須寫在方法定義之前。該註釋包括:方法其功能的簡單 描述,方法的參數、返回值類型、返回值意義簡單的描述。
模板:對於已定義好的接口的方法,可以直接輸入 /**回車 eclipse可自動生成註釋模板
示例:
/**
* 演示方法註釋
* @param args
* @return
* 返回 null 表示沒有找到
* @throws Exception
*/
private
String[]
demoFunction(String args)
throwsException{
return
null
;
}
f)失效代碼塊的註釋
目的:對一塊暫時不啟用的代碼進行註釋。
註:這裏並不是指垃圾、無用的代碼,只是暫時不啟用或暫時不明確的代碼
書寫規範:失效代碼塊采用塊註釋方法行註釋方法進行標註。
註:采用註釋塊在 使用eclipse自帶的Format方法(快捷鍵:Ctrl+Shift+F)時需要配置,去掉選中 “Enable block commnet formatting”
示例:
// if (1==1) {
//
// } else {
//
// }
或者
/* if (1 == 1) {
//
如果1與1相等的時候
String code1;
} else {
//
如果1與1不相等的時候
String code2;
}*/
g)分支語句的註釋
目的:簡單描述該分支條件的意義
書寫規範:在分支語句代碼的下一行進行註釋
示例:
if
(
1==
1) {
//如果1與1相等的時候
code
}
else{
//如果1與1不相等的時候
code
}
h)變量、常量的註釋
目的:簡單描述該變量、常量的意義。
書寫規範:變量、常量註釋必須寫在變量、常量定義之前或同一行中,簡單描述其代表的意義。
註:對自循環所用的變量(i,j,k,)可以不需要註釋。
示例:
StringcommitFlag;
//提交標誌
i)@
Override的使用
所有的重寫方法,在方法開始加上 @
Override
關鍵字。
@Overridepublicvoid
onCreate
(Bundle savedInstanceState) {
}
異常處理規範
重新拋出的異常必須保留原來的異常,即throw new NewException(“message”, e); 而不能寫成throw new NewException(“message”),更不能不繼續往上層拋出異常。
針對重要的可捕獲的業務相關異常,需創建異常處理類,在方法中捕獲到異常後,反饋到用戶界面上,提示用戶【推薦】
補充規範
代碼在提交版本控制之前,請確保已清除不必要的log調試語句
明確的垃圾或無用代碼必須刪除
四則運算分析與設計