天天看點

團隊作業二關于英語字典的開發文檔1 概述2.需求分析3 總體設計4 詳細設計5 實作6 維護

關于英語字典的開發文檔

1 概述

1.1開發背景

  英語作為一種通用語言,部分單詞已成為公共詞彙,并直接應用到漢語中來。但新引入的或是涉及到某種專業領域的專業術語,對于不常關注新聞,網絡或是一些非專業領域人員而言,閱讀較為困難。傳統的紙質英漢詞典更新周期久,不便于攜帶,價格昂貴。不适合生活節奏快的現代人群。相反,電子詞典便于攜帶,查詢友善,高效,更能滿足現代人的使用需要。随着科技的不斷進步,Android系統逐漸的成為現階段的主流軟體,電子詞典也逐漸的将該系統應用到自身的設計中,并取得了很好的效果。

1.2開發目标

系統基本功能:

1.登入系統。分為使用者登入與管理者登入。使用者登入功能主要友善使用者保留使用痕迹,管理個人的單詞應用。管理者登入是為了讓開發者能及時更新英語詞彙,更新系統,修複系統漏洞與錯誤。

2.自定義詞彙。支援已登入使用者的自定義的單詞,用于記錄該系統未錄入過的單詞或單詞釋義。

3.查詢功能。支援英譯漢功能。使用者輸入想要查詢的單詞,點選查詢後即可展示該單詞的釋義,例句,讀音。

4.單詞本功能。支援已登入使用者建立新的單詞清單。使用者可以在此功能下對個人建立的單詞清單中的單詞進行删除,增加或寫入自定義詞彙。

1.3參考資料

  英語詞典軟體——有道詞典。該軟體是一個開源項目。源碼可被公衆使用的軟體,且此軟體的使用,修改與發行不受許可證的限制。提高了我們開發此項軟體的效率。有道詞典作為免費的翻譯軟體,界面樸素,功能強大,是以此次團隊作業主要借鑒了單詞查詢的功能代碼。

1.4設計原則

  電子詞典的應用前景是很廣闊的。為了友善使用者使用,取得較好效果在軟體設計過程中,設計者要考慮多方面問題。是以資料庫結構設計的好壞直接對應用系統的效率及實作的效果産生影響。該資料庫系統要求具有以下方面的特點:結構合理,所建立的資料備援度小,獨立性強。建檔,修改,查詢快而準确。

商業化的軟體開發要求有很好的移植性。而PowerBuilder可以跨平台開發,也可以發行跨平台軟體。

  AdaptiveServerAnywhere是PowerBuilder自帶的資料庫管理系統,有如下好處:

  AdaptiveServerAnywhere本身已經是一個完整的資料庫管理系統,是以在項目開發階段,單機即可開發大型資料庫應用,而不必在網絡狀态下與大型資料庫管理系統連接配接起來開發。

2.需求分析

2.1需求陳述

目前,市場上的一些常見的電子詞典主要分為如下幾種:

1.基于PC的電子詞典。此種電子詞典,可移動性差,對于使用有很大的局限性。

2.專用電子詞典。此種電子詞典使用人群主要局限于青少年。該類産品為獨立的電子産品,較少随身攜帶。而且中老年人極少有人使用此類産品。

3.嵌入式電子詞典。此種電子詞典可以安裝到我們平時使用頻率極高的移動裝置中,例如手機,平闆電腦等。友善攜帶與查詢。

是以,此次團隊作業項目為适應使用者需求,開發了電子詞典的單詞查詢顯示功能,新詞添加功能。

1.使用者打開該軟體界面可選擇功能:單詞查詢,單詞本建立。

1.單詞查詢。當使用者需要查詢時,軟體需提供這個單詞的所有資訊:釋義,例句,讀音。以便使用者獲得所需要的資訊。

2.單詞本建立。當使用者建立一個單詞本後,可添加系統中所錄入的單詞及釋義也可添加使用者自定義的單詞與釋義。

2.2操作用例

  使用者在登入視窗,填入使用者名與密碼,登入完畢後。可選擇單詞選擇子產品,例如“apple”,在單詞查詢處填入“apple”,點選查詢,軟體界面則顯示 “apple  n.蘋果;珍寶;家夥。”

  當選擇單詞本功能時,進入此項功能界面,可選擇“添加”“删除”。選擇“添加”後,可在系統錄入單詞進行選擇添加,也可直接在此頁面進行自定義單詞添加操作。例如添加“apple”。可進行上一步操作,再點選添加鍵,則該界面會顯示出“apple  n.蘋果;珍寶;家夥。”執行删除操作時,可直接點選删除鍵,對需要删除的單詞進行删除即可。

2.3功能劃分

1.漢譯英功能:可以實作對英文單詞對中文單詞的查詢功能。當使用者在輸入第一個字元時,以這個字元作為開頭的單詞會顯示在下邊的資料視窗中,使用者可以直接點選便可顯示單詞的中文解釋。也就是說,不需要完全輸入使用者想要找的單詞,系統會根據輸入的提示顯示所有使用者可能要查詢的單詞。

2.新使用者注冊:可以注冊新的使用者,但不允許已存在使用者注冊。若注冊使用者倆次密碼輸入不一緻,系統無法通過驗證。

3.使用者登入:使用者驗證界面。正确的使用者登入後,可進入功能選擇視窗。且曆史記錄視窗會顯示相應的曆史記錄。

4.單詞本設定:使用者可以在這裡設定單詞本。使用者剛登入時的單詞本為空,必須在單詞本設定裡添加單詞後才可進行浏覽。

2.4運作環境

作業系統:WINDOWS  7

程式設計工具:Visual Studio 2013

運作要求配置:

  處理器:AMD A8-7100 Radeon R5,8 Compute Cores 4C+4G 1.80GHZ

  安裝記憶體:4.00GB

  系統類型:64位作業系統

3 總體設計

3.1 系統模組化

3.1.1 層次方框圖

團隊作業二關于英語字典的開發文檔1 概述2.需求分析3 總體設計4 詳細設計5 實作6 維護

3.1.2  ER圖(實體-聯系圖)

團隊作業二關于英語字典的開發文檔1 概述2.需求分析3 總體設計4 詳細設計5 實作6 維護

3.1.3 類圖設計

團隊作業二關于英語字典的開發文檔1 概述2.需求分析3 總體設計4 詳細設計5 實作6 維護

3.2 接口設計

内部接口設計

  為了實作系統内部各個類之間和各個元素之間的有機連接配接,在内部接口方面,各個子產品之間采用了函數調用、參數傳遞、傳回值的方式進行資訊傳遞。接口傳遞的資訊通過結構體指針來對各個資料進行操作,來實作各種功能。

3.3 資料庫結構設計

  本軟體的設計共有三個資料庫,一個本地資料庫用來存儲使用者個人的生詞,還有賬戶資料庫是用來存儲各個使用者的帳号資訊,再有一個資料庫是軟體的核心,用來存儲單詞。各個資料庫均是通過檔案的形式進行資料的存儲。當軟體運作的時候,通過調用函數打開檔案來進行資料的交換。

3.3.1 資料庫E-R圖

團隊作業二關于英語字典的開發文檔1 概述2.需求分析3 總體設計4 詳細設計5 實作6 維護

3.3.2 資料庫邏輯設計

名稱 類型 長度 主鍵
帳号 String 20
密碼 Char 16
單詞 String ——
釋義 String ——

2.5 出錯處理

   當使用者在使用該軟體時,一旦發生了未知的錯誤可以選擇上傳錯誤資訊至管理者,之後管理者會定期處理各種錯誤,修補bug,然後在合适的時間釋出新版本,對軟體進行更新。

2.6 安全保密設計

  對于使用者資訊的安全保護,我們采用了密碼登陸,并且對于帳号資訊的管理設定了嚴格的權限限制。對于資料庫的安全設計,我們将采用獨特的資料加密措施,将資料加密後再錄入資料庫,同樣在提取資料時,也需要獨特的解密方式,對資料進行解密,極大限度的保護了資料的安全。

4 詳細設計

4.1 程式流程圖

1.登入部分

  本詞典使用前需登入,根據登入賬戶類型,使用者或是管理者再使用其對應功能。

團隊作業二關于英語字典的開發文檔1 概述2.需求分析3 總體設計4 詳細設計5 實作6 維護

2.管理者部分

  管理者的職責即是對單詞庫和賬号庫這兩大資料庫進行有效合理的管理。

團隊作業二關于英語字典的開發文檔1 概述2.需求分析3 總體設計4 詳細設計5 實作6 維護

3.使用者部分

  使用者可使用注冊、登入、查詞、增添本地(即個人的)單詞本等功能。

團隊作業二關于英語字典的開發文檔1 概述2.需求分析3 總體設計4 詳細設計5 實作6 維護

4.2 僞代碼編寫

1.頭檔案

#include <iostream>

#include <stdlib.h>  

#include "User.h"  

#include "Administrator.h"

using namespace std;

2.節點和類的封裝

存儲詞條的節點:

typedef struct LNode{

  string word;

  string phonogram;

  string meaning;

  struct LNode *next;

}LNode,*LinkList;

基類class Base

{

private:

  string account;

  char password[16];

public:

  void serachC();

}

子類class User : public Base

{

public:

  void add1();

}

子類class Administrator : public Base

{

public:

  void addC();

  void deleteC();

  void changeC();

  void addZ();

  void deleteZ();

  void changeZ();

  void serachZ();

}

3.主程式Dictionary.cpp

int main(void)  

{     

    cout<<"          歡迎使用haha英漢字典         "<<endl;  

    cout<<"====================================================="<<endl;

//程式運作,将單詞庫中的詞條取出存傳入連結表中,以待後續使用

FILE *fp1,*fp2,*fp3;

fp1 = fopen("單詞庫.txt","r+");

L = (LinkList)malloc(sizeof(LNode));

char t = fget(fp);

//再根據t的ASCII碼判斷單詞、音标和釋義的邊界

//每個節點存儲四個資訊

word phonogram meaning *next

cout<<"登入or注冊?"<<endl;

//登入:

if(strcmp(輸入賬戶名,某庫存賬戶) == 0

&&

   strcmp(輸入賬号密碼,對應的庫存密碼) == 0)

{

登入成功

}

else

{

  登入失敗

  return 0;

}

//注冊

cin>>"賬戶名和密碼";

//向管理者送出注冊賬戶申請,并将已申請的賬戶資訊存入

fp2 = fopen("賬戶資訊.txt","w+");

使用者接口User.h

管理者接口Administrator.h

fclose(fp);

    return 0;

}

4.User.h

void Base :: serachC(LinkList L)

{

cout<<要查詢的單詞;

//從L的頭節點起,用strcmp()函數比較每個節點的word和要查的單詞

//用指針*p指向比對節點

cin>>p->word,p->phonogram,p->meaning

}

void User :: add1()

{

  fp3 = fopen("我的單詞本.txt","w+")

  //每個使用者對應一個本地單詞本,此文本檔案可以看成是單詞庫的一小部分

  fwrite(新單詞的word、phonogram、meaning,fp3);

}

5.Administrator.h

(1)單詞庫的管理:

void Administrator :: addC(LinkList &L)

{

  //按字母的排列順序找到添加的單詞的添加位置

  fwrite(添加單詞的word、phonogram、meaning,fp1);

}

void Administrator :: deleteC(LinkList &L)

{

  //用serachC()函數找到要删除的單詞

  删除連結清單中對應節點

  利用fp1删除單詞庫中該單詞

}

void Administrator :: changeC(LinkList &L)

{

  //用serachC()函數找到要修改的單詞

  修改連結清單中對應節點

  利用fp1重新寫入單詞庫中該單詞

}

(2)賬戶的管理:

  void Administrator :: addZ(){}

  void Administrator :: deleteZ(){}

  void Administrator :: changeZ(){}

  void Administrator :: serachZ(){}

  此管理功能的實作和對單詞庫的管理較相似,要注意的就是,這裡的四個功能函數增删改查必須都在“賬戶資訊.txt”中進行,否則賬戶管理就會出現大漏洞。

5 實作

5.1 編碼

5.1.1 代碼約定

1)存儲詞條的節點

word:單詞庫裡的英語單詞

Phonogram:單詞的音标

meaning:中文翻譯

2)基類

account:使用者賬戶名

password:賬戶密碼

serachC( ):查詢單詞函數

3)使用者

add1( ):使用者對自己單詞本的操作

4)管理者

addC( ):管理者向單詞庫中增加單詞

deleteC( ):管理者将某個單詞從單詞庫中删除

changeC( ):管理者對單詞庫中的某個詞條進行修改

addZ( ):管理者向賬戶資訊庫中增加一個新的賬戶

deleteZ( ):管理者将某個賬戶從賬戶資訊庫中删除

changeZ( ):管理者對某個賬戶的資訊進行修改

serachZ( ):管理者在賬戶資訊庫中搜尋某個賬戶的資訊

5.1.2 代碼編寫原則

1)代碼簡單明了、容易閱讀、無二義性;

2)代碼格式規範,同一級代碼的縮進要統一,這也是友善代碼的閱讀;

3)不要将多餘的語句放到一行上,将其分行放置;

4)對變量的命名要注意易懂且不容易與本程式中其他變量名混淆。

5.2 測試要點

登入測試要點

1)使用者注冊:測試使用者是否可以自定義使用者名及密碼,是否将申請送出至管理者處,以及管理者通過後使用者是否可以用其登陸。

2)使用者登陸:測試使用者是否可以正常登陸,如果密碼錯誤程式是否有後續反應。

3)查詢單詞:測試輸入規範的單詞後,是否可以正常顯示該詞條的資訊,如:輸入apple,是否顯示['æpәl] n.蘋果;輸入規範單詞但單詞庫中沒有該詞條時,是否可以提醒本詞庫沒有該詞條;輸入不規範的單詞時,是否可以提醒使用者輸入的格式錯誤,重新輸入,如:輸入wye6t。

4)使用者單詞本管理:測試使用者是否可以正常對單詞本進行增删。

5)單詞庫的管理:測試管理者是否可以對單詞庫的單詞進行增删改查,可在操作後由使用者身份驗證操作結果。

6)使用者資訊庫的管理:測試是否可以接收使用者的注冊及修改資訊申請,是否可以對使用者資訊庫進行增删改查。

5.3 測試結果和總結

  通過測試,我們對程式進行了一定程度的完善,在測試的過程中,我們發現了自己的不足之處,從不足中積累了經驗,代碼編寫的能力得到了提高。同時由于測試對代碼的完善提供了很多幫助,我們認識到了測試對一個程式的重要性,測試是必不可少的,它會讓我們更清楚的認識自己的代碼,以及團隊合作程式設計時代碼的整合情況,可以說隻有通過了測試才算是對代碼的肯定。

6 維護

6.1 維護方法

  軟體維護(Software maintenance)是一個軟體工程名詞,是指在軟體産品釋出後,因修正錯誤、提升性能或其他屬性而進行的軟體修改。軟體維護主要是指根據需求變化或硬體環境的變化對應用程式進行部分或全部的修改,修改時應充分利用源程式。

  軟體維護活動類型總起來大概有四種:

1)改正性維護

  改正型維護是指改正在系統開發階段已發生而系統測試階段尚未發現的錯誤。這方面的維護工作量要占整個維護工作量的17%~21%。所發現的錯誤有的不太重要,不影響系統的正常運作,其維護工作可随時進行:而有的錯誤非常重要,甚至影響整個系統的正常運作,其維護工作必須制定計劃,進行修改,并且要進行複查和控制。

2)适應性維護

  适應性維護是指使用軟體适應資訊技術變化和管理需求變化而進行的修改。這方面的維護工作量占整個維護工作量的18%~25%。由于計算機硬體價格的不斷下降,各類系統軟體屢出不窮,人們常常為改善系統硬體環境和運作環境而産生系統更新換代的需求;企業的外部市場環境和管理需求的不斷變化也使得各級管理人員不斷提出新的資訊需求。這些因素都将導緻适應性維護工作的産生。進行這方面的維護工作也要像系統開發一樣,有計劃、有步驟地進行。

3)完善性維護

  完善性維護是為擴充功能和改善性能而進行的修改,主要是指對已有的軟體系統增加一些在系統分析和設計階段中沒有規定的功能與性能特征。這些功能對完善系統功能是非常必要的。另外,還包括對處理效率和編寫程式的改進,這方面的維護占整個維護工作的50%~60%,比重較大.也是關系到系統開發品質的重要方面。這方面的維護除了要有計劃、有步驟地完成外.還要注意将相關的文檔資料加入到前面相應的文檔中去。

4)預防性維護

  預防性維護為了改進應用軟體的可靠性和可維護性,為了适應未來的軟硬體環境的變化,應主動增加預防性的新的功能,以使應用系統适應各類變化而不被淘汰。例如将專用報表功能改成通用報表生成功能,以适應将來報表格式的變化。這方面的維護工作量占整個維護工作量的4%左右。

6.2 維護文檔

  維護内容包括程式名稱、源程式語句條數、機器代碼指令條數、所用的程式設計語言、程式安裝的日期、程式安裝後的運作次數、與程式安裝後運作次數有關的處理故障次數、程式改變的層次及名稱、修改程式所增加的源程式語句條數、修改程式所減少的源程式語句條數、每次修改所付出的“人時”數、修改程式的日期、軟體維護人員的姓名、維護申請報告的名稱、維護類型、維護開始時間和維護結束時間、花費在維護上的累計“人時”數、維護工作的淨收益等。

  本英語詞典軟體除上述需維護處之外,還需花費大量“人時”在單詞資料庫的維護上,單詞庫内大量詞條的增删和修改都是十分複雜的過程。還有使用者的賬戶密碼資料庫的管理也得十分謹慎嚴密,管理者的工作量也十分繁雜。

團隊總結:

  隊長:牟鑫明

  成員:楊建華、王林峰、劉陽、曾洪鑫

  分工:每人負責自己力所能及的一部分,最後由隊長将各部分整合在一起,雖能力有限,但每人都盡自己最大努力完成此次團隊作業。

  合作愉快!!!^_^

轉載于:https://www.cnblogs.com/mxm5257/p/6094962.html