白二娃
Scratch除了做一些簡單的小游戲,還能制作出復雜的通訊錄管理系統,具備市面通訊錄管理系統的所有基本功能。通過對通訊錄管理系統功能目標解析,自制相關素材,參考相應成品,完成Scratch版本的通訊錄管理系統。這將幫助我們掌握多功能程序框架構建,了解通訊錄基本功能要求,還能熟悉列表的增刪查改簡單操作,掌握變量顯示與隱藏的應用方法。

通訊錄管理系統是指幫助用戶管理多位聯系人信息,可以增加、刪除、查找、修改的系統,現今較流行的通訊錄管理系統還包括生日提醒、日程安排、一鍵整理等更多功能,我們這里只需完成增刪查改的基本功能即可。
增加聯系人:表示在原有聯系人不變的前提下,加入新聯系人的相關信息,包括且不限于“姓名、電話、住址、生日、學籍”。
刪除聯系人:表示刪除某個特定的聯系人全部信息或刪除全部聯系人全部信息。
查找聯系人:表示通過輸入姓名,返回輸出該姓名聯系人的其他信息。
修改聯系人:表示通過輸入姓名,返回輸出該姓名聯系人全部信息,并且可以對該聯系人信息進行修改。
通訊錄管理系統保存的通常是比較私密的聯系人信息,所以我們需要為通訊錄管理系統加入一個登錄頁面,登錄系統可以獨立于通訊錄管理系統之外,作為開啟通訊錄管理系統的門而存在。

登錄系統可分為登錄和注冊兩部分,登錄要求用戶名和密碼都正確,注冊要求輸入賬號和密碼,要求賬號和已有的賬號不同。登錄成功后即可進入通訊錄管理系統。

通訊錄管理系統分有四個基本功能:增、刪、查、改。
在制作程序前,我們需要先確定聯系人信息的保存形式。由于聯系人數量較多,是不適合使用變量保存的;又由于Scratch數據格式的局限,我們這里可以選擇的方式只有“列表”,我們可以使用多個列表分別保存聯系人的某個信息:例如“姓名”列表保存所有聯系人的姓名;“電話”列表保存所有聯系人的電話號碼等等。再通過項數一致確保同一聯系人所有信息都在某個列表的同一項中,保證跨列表調取聯系人信息。
程序分為兩個部分,主頁面與操作頁面。

其中主頁面分為登錄與注冊兩個部分,登錄成功即可進入操作頁面。

操作頁面包含增刪查改四個功能,選擇相應功能完成操作后可退回操作頁面選擇其他操作。

聯系人管理系統并不需要太多角色,只需要制作相應的按鈕和界面背景即可,比較簡單,這里直接展示需要的角色造型及背景。
1.背景:

2.角色(注冊):用文字標示按鈕。

“登錄、返回、增加聯系人、刪除聯系人、查找聯系人、修改聯系人”角色用同樣的樣式制作。
3.角色(用戶名):有輸入框的樣式。“密碼”角色用同樣外形。

4. 列表和變量
建立“賬號、密碼、聯系人、電話”四個列表。
建立“用戶名、密碼、項數”三個變量。
主頁面分為注冊和登錄,在登錄成功之前,會一直保持在主頁面,選擇注冊后,會在注冊成功后回到主頁面。登錄成功后進入操作頁面,可以選擇增刪查改四個功能,進入某一功能后,可在完成操作后回到操作頁面,直到程序停止運行。
程序開始廣播主頁面,出現登錄與注冊按鈕。當兩個按鈕被點擊,則廣播相應的“登錄”或“注冊”消息并隱藏。
1. 舞臺背景部分代碼

2. 角色(登錄)部分代碼

3. 角色(注冊)代碼

4. 注冊功能實現
當舞臺背景接收到“注冊”消息時,先顯示角色“用戶名”和“密碼”,并通過詢問獲得用戶想要注冊的用戶名和密碼,其中需要確保用戶名沒有被使用,這里需要使用循環判斷直到列表中沒有該用戶名的技巧來完成,可實現一直輸入用戶名,直到出現列表中不存在的用戶名為止。

然后需要通過詢問輸入密碼,并將用戶名和密碼顯示出來,以大字顯示模式放在相應角色上面,注冊完成后廣播主頁面。
在接收到“登錄”消息時,需要用戶輸入用戶名和密碼,同樣要顯示角色“用戶名”和“密碼”,將輸入的用戶名和密碼放到相應位置,效果如圖:

5. 登錄功能實現
輸入完成后,先對用戶名進行判斷,用戶名列表中含有輸入的用戶名再搜索輸入用戶的項數,否則直接通過詢問輸出“用戶名或密碼錯誤,按回車鍵返回主頁面”并廣播“主頁面”。

當舞臺接收到廣播“登錄”,搜索特定用戶名的項數,可采用遍歷的方法,設定變量“項數”,從用戶名列表的第0項開始與輸入用戶名進行比較,直到找到相等項為止。
然后判斷密碼列表的相同項數內容與輸入密碼是否一致,相同則說明登錄成功,廣播“操作頁面”,否則廣播“主頁面”。
當進入操作頁面后,有四個功能按鈕,每個按鈕被按下會發出相應廣播并全部隱藏。基本程序如下。
1. 角色(增加聯系人)代碼

2. 角色(刪除聯系人)代碼

3. 角色(查找聯系人)與上面兩個類似,當角色被點擊時廣播“查詢聯系人”并隱藏,接收“操作頁面”顯示,收到其他5條廣播隱藏。
4. 角色(修改聯系人)與其他三個類似,當角色被點擊時廣播“修改聯系人”并隱藏,接收“操作頁面”顯示,收到其他5條廣播隱藏。
5. 增加聯系人功能實現

當舞臺背景接收到消息“增加聯系人”時,可以通過詢問獲得用戶要添加的聯系人姓名和電話,但需要對輸入的聯系人進行查重判斷,不能和已有聯系人重名,若判斷通過,則將用戶輸入的聯系人和電話保存到相應列表中。
6. 刪除聯系人功能
當舞臺背景接收到消息“刪除聯系人”時,需要先通過詢問獲得用戶要刪除的聯系人姓名,同樣需要列表中有這個聯系人,并且通過遍歷找到該聯系人的項數,再刪除聯系人列表和電話列表的相應項數內容。

7. 查詢聯系人功能

當舞臺背景接收到消息“查詢聯系人”時,需要先通過詢問獲得用戶要查詢的聯系人姓名,同樣需要列表中有這個聯系人,并且通過遍歷找到該聯系人的項數,再輸出電話列表中相同項數的內容。
8. 修改聯系人功能

當舞臺背景接收到消息“修改聯系人”時,需要先通過詢問獲得用戶要修改的聯系人姓名,同樣需要列表中有這個聯系人,并且通過遍歷找到該聯系人的項數,再輸入修改后的電話,并將電話列表中相同項數的內容替換為新輸入的電話。
9. 返回按鈕

在接收到消息“操作完成”后,角色(返回)出現,并且在被點擊時廣播“操作頁面”,
程序至此基本完成,接下來對各項功能進行測試,測試順序為:注冊功能、登錄功能、增加聯系人功能、查找聯系人功能、修改聯系人功能、刪除聯系人功能,同時注意界面切換有無問題。再加上變量與列表的顯示隱藏即可完成整個程序。
某些軟件注冊時要求用戶輸入兩遍密碼,防止用戶輸錯,那么我們這里可不可以也輸入兩次密碼,相同時才可完成注冊呢?