第四次團隊做業——系統設計

No Bug

031402401鮑亮 031402402曹鑫傑 031402403常鬆 031402412林淋 031402418汪培僑 031402426許秋鑫php


1、修改完善需求規格說明書

  • 《需求規格說明書》初稿不足html

    1.未設置管理員的角色,對系統進行維護。java

    2.缺乏數據精度規範。android

  • 改進內容git

    1.在性能需求中添加精度需求,對系統中運用到的數據進行類型定義,條件限制等。程序員

    2.設置管理員角色,更新類圖、用例圖、功能描述部分和驗收標準中管理員功能部分github

coding.net文檔連接


2、代碼規範和編碼原則

Android代碼規範

  • 命名基本規範

1.編程基本命名規範web

(1)避免難懂的名稱,如屬性名xxK8,這樣的名稱會致使多義性。sql

(2) 在面向對象的語言中,在類屬性的名稱中包含類名是多餘的,如Book.BookTitle,而是應該使用Book.Title數據庫

(3)在容許函數重載的語言中,全部重載都應該執行類似的函數。

(4)使用動詞-名詞的方法來命名對給定對象執行特定操做的例程,如CalculateInvoiceTotal()。(例程是某個系統對外提供的功能接口或服務的集合

(5)只要合適,在變量名的末尾或開頭加計算限定符(AvgSumMinMaxIndex)。

(6)在變量名中使用互補對,如min/maxbegin/endopen/close

(7)布爾變量名應該包含Is,這意味着Yes/No 或 True/False 值,如 fileIsFound

(8)即便對於可能僅出如今幾個代碼行中的生存期很短的變量,仍然使用有意義的名稱。僅對於短循環索引使用單字母變量名,如 i 或 j。

(9)爲了幫助區分變量和類型/類/函數名,對類型/類/函數名使用Pascal大小寫處理 (CalculateInvoiceTotal),其中每一個單詞的第 一個字母都是大寫的。對於變量名,使用 camel大小寫處理 (documentFormatType)。

(10)不要使用原義數字或原義字符串,而是使用命名常數,NUM_DAYS_IN_WEEK ,以便於維護和理解。

2.分類命名規範

(1)包的命名

Java包的名字都是由小寫單詞組成。可是因爲Java面向對象編程的特性,每一名Java程序員均可以編寫屬於本身的Java包,爲了保障每一個Java包命名的惟一性,在最新的Java編程規範中,要求程序員在本身定義的包的名稱以前加上惟一的前綴。因爲互聯網上的域名稱是不會重複的,因此程序員通常採用本身在互聯網上的域名稱做爲本身程序包的惟一前綴。 例如: net.frontfree.javagroup

(2)類的命名

類的名字必須由大寫字母開頭而單詞中的其餘字母均爲小寫;若是類名稱由多個單詞組成,則每一個單詞的首字母均應爲大寫例如TestPage;若是類名稱中包含單詞縮寫,則這個所寫詞的每一個字母均應大寫,如:XMLExample,還有一點命名技巧就是因爲類是設計用來表明對象的,因此在命名類時應儘可能選擇名詞。 例如: Circle

(3)常量的命名

常量的名字應該都使用大寫字母,而且指出該常量完整含義。若是一個常量名稱由多個單詞組成,則應該用下劃線來分割這些單詞。 例如: MAX_VALUE

(4)參數的命名

參數的命名規範和方法的命名規範相同,並且爲了不閱讀程序時形成迷惑,請在儘可能保證參數名稱爲一個單詞的狀況下使參數的命名儘量明確。

3 .註釋

(1)註釋不要解釋程序段是怎麼運行的,應該解釋程序作什麼,爲何這麼作。註釋也要隨着程序的修改而不斷更新。

(2)註釋放置的位置:對於比較短的註釋(如變量的解釋),不用另起一行註釋,對於比較長的註釋,要另起一行註釋。

(3)對於每一個變量名,每一個函數,都要註釋,對於一些較複雜的循環,要註釋該循環是爲了作什麼。

(4)一個工程應有一個統一的頭文件註釋,以說明整個工程的信息、建立日期、版本等等。

(5)修改代碼或刪除時,將原代碼用註釋的方法屏蔽,同時要加開發者自身對修改操做的註釋。格式爲:

//原代碼  //Added/(Modified/ Deleted) by 開發者姓名 年-月-日; //由於業務緣由修改的,要註明修改或刪除緣由) 新代碼

(6)使用XML文檔格式,以下面方法的註釋:

/// <summary> 

/// 獲得某人的年齡 

/// </summary> 

/// <param  name= "userName "> 用戶名 </param> 

///<returns> 用戶年齡 </returns>  

 public  int   GetUserAge(string  userName) 

 {      

//此處寫你的程序代碼 //

 }

(7)移除全部臨時或無關的註釋,以免在往後的維護工做中產生混亂。

(8)註釋應對代碼進行準確的說明,不該存在歧義。

(9)在整個應用程序中,使用具備一致的標點和結構的統同樣式來構造註釋。

4.基本數據類型命名規範

  • Integer:int+描述
  • Char:chr+描述
  • Boolean:bln+描述
  • Long:lng+描述
  • Short:shr +描述
  • Double:dbl+描述
  • String:str+描述
  • Float:flt+描述
  • Single:sng+描述
  • DataTime:dt+描述
  • Array:arr+描述
  • Object:obj+描述

如:String srtName

5.控件命名規範

  • TextView :txt_+描述
  • Button :btn_+描述
  • ImageButton :imgBtn_+描述
  • ImageView :imgView_+描述
  • CheckBox :chk_+描述
  • RadioButton :rdoBtn_+描述
  • AnalogClock :anaClk_+描述
  • DigitalClock :DgtClk_+描述 4
  • DatePicker :dtPk_+描述
  • TimePicker :tmPk _+描述
  • ToggleButton :tglBtn_+描述
  • EditText:edtTxt_+描述
  • ProgressBar:lcb_+描述
  • SeekBar:skBar _+描述
  • AutoCompleteTextView:autoTxt_+描述
  • MultiAutoCompleteTextView:mlAutoTxt_+描述
  • ZoomControls:zmCtrl_+描述
  • Include:ind_+描述
  • VideoView:vdoVi_+描述
  • WebView:webVi_+描述
  • RatingBar:ratBar_+描述
  • Tab:tab__+描述
  • Spinner:spn_+描述
  • Chronometer:Cmt_+描述
  • ScrollView:sclVi_+描述
  • TextSwitcher:txtSwt_+描述
  • Gallery:gal_+描述
  • ImageSwitcher:imgSwt_+描述
  • GridView:gV_+描述
  • ListView:lVi_+描述
  • ExpandableList: epdLt_+描述
  • MapView: mapVi_+描述

控件說明以下:

  • TextView - 文本顯示控件
  • Button - 按鈕控件
  • ImageButton - 圖片按鈕控件
  • ImageView - 圖片顯示控件
  • CheckBox - 複選框控件
  • RadioButton - 單選框控件
  • AnalogClock - 鐘錶(帶錶盤的那種)控件
  • DigitalClock - 電子錶控件
  • DatePicker - 日期選擇控件
  • TimePicker - 時間選擇控件
  • ToggleButton - 雙狀態按鈕控件
  • EditText - 可編輯文本控件
  • ProgressBar - 進度條控件
  • SeekBar - 可拖動的進度條控件
  • AutoCompleteTextView - 支持自動完成功能的可編輯文本控件
  • MultiAutoCompleteTextView - 支持自動完成功能的可編輯文本控件,容許輸入多值(多值之間會自動地用指定的分隔符分開)
  • ZoomControls - 放大/縮小按鈕控件
  • Include - 整合控件
  • VideoView - 視頻播放控件
  • WebView - 瀏覽器控件
  • RatingBar - 評分控件
  • Tab - 選項卡控件
  • Spinner - 下拉框控件
  • Chronometer - 計時器控件
  • ScrollView - 滾動條控件
  • TextSwitcher - 文字轉換器控件(改變文字時增長一些動畫效果)
  • Gallery –畫廊控件
  • ImageSwitcher - 圖片轉換器控件(改變圖片時增長一些動畫效果) • GridView - 網格控件
  • ListView - 列表控件
  • ExpandableList - 支持展開/收縮功能的列表控件
  • 代碼書寫規範

(1)創建標準的縮進大小(四個空格),並一致地使用此標準。用規定的縮進對齊代碼節。

(2)在發佈源代碼的硬拷貝版本時使用特定的字體以及字號(新宋體、小五號)。

(3)在括號對對齊的位置垂直對齊左括號和右括號。
格式以下:

Int Sum()

{

}

(4)當有多層嵌套時,每一層嵌套都要有完整的{ }。

(5)爲註釋和代碼創建最大的行長度,以免不得不滾動源代碼編輯器,而且能夠提供整齊的硬拷貝表示形式。

(6)當一行內容太長而必須換行時,在後面換行代碼中要使用縮進格式。每一行上放置的語句避免超過一條。特殊循環如for(i =0;i<100;i++)等除外。

(7)編寫SQL語句時,對於關鍵字使用所有大寫,對於數據庫元素(如表、列和視圖)使用大小寫混合。例如SELECT * FROM Table1;

(8)將每一個主要的SQL子句放在不一樣的行上,這樣更容易閱讀和編輯語句,例如:

SELECT   FirstName,   LastName     

FROM     Customers     

WHERE   State   =   'WA '

(9)在物理文件之間在邏輯上劃分源代碼。

(10)將大的複雜代碼段分爲較小的、易於理解的模塊。

  • 代碼設計規範

1.函數

app的絕大部分功能,都要在程序的函數中實現,函數要相對獨立。

2.類

使用類來封裝面向對象的概念和多態。

3.錯誤處理

(1)一般的法則是系統在正常狀態而且用戶正常操做下,不該產生任何異常。

(2)對可預見的錯誤不進行捕捉,而是在錯誤發生前經過條件判斷避免發生。

(3)對不可預見或者難以解決錯誤進行try{…}catch(e){..}捕捉處理。

php編碼規範

參考連接:1 2 3

參考別人的代碼規範後,汲取咱們須要的部分,造成編碼規範。附註:代碼規範制定了代碼基本元素的相關標準,確保共享的PHP代碼間具備較高程度的技術互通性。

  • 文件格式

1.縮進使用4個空格,不使用TAB鍵。每個單詞符號之間要有一個空格,除了()之外

例如:

if (1 == $x) {
    $indented_code = 1;
    if (1 == $new_line) {
        $more_indented_code = 1;
    }
}

2.對於只含有PHP代碼的文件,文件結尾忽略掉"?>"

3.PHP代碼文件必須統一採用UTF-8編碼。

4.PHP代碼文件必須以<?php標籤開始。

5.每行的結尾不容許出現多餘的空格。

6.每行代碼長度應控制在80個字符之內,最長不超過120個字符。爲了方便查看,也爲了系統爲此作出更大開銷。

  • 命名規定

1.文件名只容許出現字母,採用駝峯法命名,而且首字母大寫,每一個單詞首字母也要大寫。

例如:DbMysql.php

2.類的命名採用駝峯法命名,而且首字母要大寫,每一個單詞首字母也要大寫。

3.方法名只容許由字母組成,下劃線是不容許的,首字母要小寫,其後每一個單詞首字母要大寫,且越詳細越好,應該可以描述清楚該方法的功能。

例如:switchModel findPage

4.當類成員方法被聲明爲 private 時,必須分別以雙下劃線 "__"爲開頭;被聲明爲 protected 時,必須分別以單下劃線 "_" 爲開頭;通常狀況下的方法不含下劃線。例如 :

class Foo
{
    private function __example()
    {
        // ...
    }
    protected function _example()
    {
        // ...
    }
    public function example()
    {
        // ...
    }
}

5.屬性的命名只容許由字母組成,下劃線是不容許的,首字母要小寫,其後每一個單詞首字母要大寫。

例如:tablePrefixtableName 

6.被聲明爲 private的類成員屬性必須由雙下劃線 "__" 做爲開頭;被聲明爲 protected 的類成員屬性必須由下劃線 "_" 做爲開頭;而聲明爲 public 的成員屬性則在任什麼時候候都不容許含有下劃線。

class Foo
{
    private $__name;
    protected $_telephone;
    public $num;
}

7.函數的命名使用小寫字母和下劃線的方式,且越詳細越好,應該可以描述清楚該函數的功能。

例如:get_client_ip

8.當方法或函數參數不必定須要被賦值的時候,用 "null" 來代替 "false" 做爲函數參數的默認值,除非該參數是 boolean 值。

9.變量只容許由小寫字母和下劃線組成,且建議用描述性的變量的命名,越詳細越好,以致於像$i 或 $n 等等都是不鼓勵使用的。

例如$user_name

10.類中的常量 constant 和全局範圍內常量define,只能由大寫字母和下劃線組成,各個單詞之間如下劃線分割。

11.boolean 值和 null 值都採用小寫。

12.確保文件的命名和調用大小寫一致,是因爲在類Unix系統上面,對大小寫是敏感的。

  • 編碼風格

1.php 代碼必須以完整的形式來定界( ),即不要使用php 短標籤(<? … ?>),且保證在關閉標籤後不要有任何空格。

2.當一個字符串是純文本組成的時候(即不含有變量),則必須老是以單引號'做爲定界符。例如:

$a = 'Example String';

3.變量替換中的變量只容許用 $+變量名 的形式。

例如:

$greeting = "Hello $name, welcome back!";   // 容許
$greeting = "Hello {$name}, welcome back!"; // 容許
$greeting = "Hello ${name}, welcome back!"; // 不容許

4.當用點號 "." 鏈接各字符串的時候,字符串與點號間必須用一個空格隔開,且容許把它分割成多行以加強可讀性。在這種狀況下,點號 "." 必須與等於號 "=" 對齊。例如:

$sql = "SELECT `id`, `name` " . " FROM `people` "
      . "WHERE `name` = 'Susan' "
      . "ORDER BY `name` ASC ";

5.當用 array 類型符號來構造數組的時候,必須在每一個逗號以後加上一個空格來加強可讀性。例如:$sampleArray = array(1, 2, 3, 'Think', 'SNS');

6.當使用 array 類型符聲明關聯數組的時候,咱們鼓勵把它分紅多個行,只是咱們必須同時保證每行的鍵與值的對齊,以保持美觀。例如:

$sampleArray = array(
                   'firstKey'  => 'firstValue',
                   'secondKey' => 'secondValue'
               )

7.大括號的開始必須在類名的下一行頂格。例如:

class Think
{
    // ...
}

8.不容許用 var 符號來聲明變量,類成員變量必須以 private,protected 和 public 來聲明。其次,把類成員聲明爲 public 而直接引用雖然是容許的,但一般更好的方法是使用 get 和 set 方法來訪問類成員。

例如:

class Foo
{
    protected $_testObj;
    public function getTestObj()
    {
        return $this->_testObj;
    }
    public function setTestObj($testObj)
    {
        $this->testObj = $_testObj;
    }
}

9.方法必須老是用 private,protected 或者 public 來聲明其做用域。

10.函數或方法的初始大括號應該在函數聲明的下一行頂格。例如:

function get_client_ip()
{
    // …
}

11.在函數或方法名與參數括號之間不容許出現多餘的空格。例如:

function get_client_ip()
{
    // …
}

12.引用只容許定義在函數參數中,實時傳遞引用是禁止的。

// 引用定義在函數參數-容許的
function defineRefInMethod(&$a)
{
    $a = 'a';
} 
defineRefInMethod($b);
echo $b; // 'a'
// 實時傳遞引用-禁止的
function callTimePassRef($a)
{
    $a = 'a';
}
callTimePassRef(&$c);
echo $c; // 'a'

13.基於"if", "else"和"else if"的條件控制裏,咱們必須用空格間隔開語句和括號,大括號的開始 "{" 必須與條件控制語句位於同一行,結束 "}" 必須老是獨佔一行且頂格,控制流程內容必須用四個空格進行縮進,且不使用"elseif"。

if ($condition) {
    // ...
} else if ($_condition) {
    // ...
} else {
    // ...
}

14.在條件控制語句的條件括號內,必須用空格將操做符與其它元素隔開。若是遇到很長的邏輯判斷,則鼓勵用內嵌括號來分割各個邏輯。例如:

if (($a != 2) and ($b == 1)) {
    $a = $b;
}

15."switch" 條件控制語句中,必須用空格將待測參數與其它元素分隔開。例如:

switch ($num) {
    // …
}

16."switch" 語句的內容必須以四個空格縮進,"case" 條件控制的內容必須再加四個空格進行縮進。例如:

switch ($indentedSpaces) {
    case 2:
        echo "錯誤";
        break;
    case 4:
        echo "正確";
        break;
    default:
        break;
}

17.在 "switch" 語句中應該老是包括 "default" 控制。

18.有時候咱們須要在 "case" 語境中省略掉 "break" 或 "return" ,這個時候咱們必須爲這些 "case" 語句加上 "// 此處無break" 註釋。例如:

switch ($numPeople) {
case 1: // 此處無break
case 2:
      break;
default:
      break;
}
  • 總結

對於方法或屬性,這些在類裏面的統一採用,駝峯法命名,首字母小寫,後面每一個單詞開頭要大寫,除了上面的private,等等要加相應的下劃線。

對於函數或變量,這些在類外面的,統一採用小寫字母,函數和變量要儘可能詳細,都是小寫字母+下劃線的組合。

對於花括號的換行,對於函數,方法,類這些主題部分,花括號都要從新換行寫,在這些主題部份內部的花括號不換行,直接接到對應關鍵的後面,例如:

for(){
}
if(){
}
switch(){
}

3、數據庫設計

PowerDesigner設計圖






  • 註釋

用戶:User

用戶名:userName

手機號:phoneNumber

密碼:password

性別:sex

學校:school

頭像:headportrait

生日:birthday

職業:occupation

我的說明:description

帖子:Message

帖子ID:messageId

類型:type

標題:title

來源:location

物品名稱:commodity

狀態:state

發佈時間:postTime

單價:price

單位:unit

人數:member

截止時間:deadline

描述:description

圖片:photo

聯繫方式:contact

用戶相關帖子:UserMessage

瀏覽時間:readTime

收藏時間:collectTime

被舉報帖子:ReportedMessage

舉報者手機號:reporterNumber

管理員:Admin

用戶名:Name

ER圖


4、體系結構設計

採起MVC框架

  • 模型(Model)封裝的是數據源和全部基於對這些數據的操做。在一個組件中,Model每每表示組件的狀態和操做狀態的方法。模型持有全部的數據、狀態和程序邏輯。模型獨立於視圖和控制器。

  • 視圖(View)封裝的是對數據源Model的一種顯示。一個模型能夠由多個視圖,而一個視圖理論上也能夠同不一樣的模型關聯起來。

  • 控制器(Controller)封裝的是外界做用於模型的操做。一般,這些操做會轉發到模型上,並調用模型中相應的一個或者多個方法。通常Controller在Model和View之間起到了溝通的做用,處理用戶在View上的輸入,並轉發給Model。這樣Model和View二者之間能夠作到鬆散耦合,甚至能夠彼此不知道對方,而由Controller鏈接起這兩個部分。

主要功能流程描述

  • 註冊

  • 發帖

  • 舉報


5、分工和工做量比例

  • 分工
隊員 工做
鮑亮 項目的體系結構設計和界面設計;隨筆撰寫
曹鑫傑 Android編碼規範
常鬆 需求規格說明書改進;項目的體系結構設計和界面設計
林淋 數據庫設計,ER圖
汪培僑 PHP編碼規範
許秋鑫 Android編碼規範
  • 工做量比例
隊員 工做比例
031402401鮑亮 0.17
031402402曹鑫傑 0.16
031402403常鬆 0.17
031402412林淋 0.17
031402418汪培僑 0.16
031402426許秋鑫 0.17
相關文章
相關標籤/搜索