1、問題定義
創(chuàng)建一個(gè)通訊錄系統(tǒng)。假設(shè)系統(tǒng)中每個(gè)聯(lián)系人記錄只包括姓名,年齡,性別,電話號(hào)碼,QQ、住址及生日等信息。程序的運(yùn)行效果如下圖所示,選擇任意菜單后,實(shí)現(xiàn)相應(yīng)功能。
圖1.1? 通訊錄系統(tǒng)功能需求
2、系統(tǒng)設(shè)計(jì)
2.1 總體設(shè)計(jì)
采用模塊化的程序設(shè)計(jì)方法,即將較大的任務(wù)按照一定的原則分為一個(gè)個(gè)較小的任務(wù),然后分別設(shè)計(jì)各個(gè)小任務(wù)。需要注意的是劃分出來的模塊應(yīng)該相對(duì)獨(dú)立但又相關(guān),且容易理解??梢杂媚K化層次結(jié)構(gòu)圖(即模塊圖)來分析其任務(wù)的劃分,一般從上到下進(jìn)行,最上面一層是主模塊,下面各層是其上一層模塊的逐步細(xì)化描述。
圖2.1?? 通訊錄系統(tǒng)功能模塊圖
本通訊錄系統(tǒng)要求采用數(shù)組實(shí)現(xiàn),如圖2.1所示,它由如下五大功能模塊組成:
- 輸入記錄模塊。完成將數(shù)據(jù)存入數(shù)組的工作。記錄可以從通過記錄函數(shù)存儲(chǔ)的數(shù)據(jù)文件中讀入,也可從鍵盤逐個(gè)輸入聯(lián)系人記錄。聯(lián)系人記錄由聯(lián)系人的基本信息字段構(gòu)成。
- 查詢記錄模塊。完成在數(shù)組中查找滿足相關(guān)條件的聯(lián)系人記錄。在此通訊錄系統(tǒng)中,用戶可以按照聯(lián)系人的姓名或電話號(hào)碼在數(shù)組中進(jìn)行查找。
- 更新記錄模塊。完成對(duì)聯(lián)系人記錄的維護(hù)。在此通訊錄系統(tǒng)中,它實(shí)現(xiàn)了對(duì)聯(lián)系人記錄的增加、刪除及修改操作,并將修改后的數(shù)據(jù)存入源數(shù)據(jù)文件。
- 輸出記錄模塊。一是實(shí)現(xiàn)對(duì)聯(lián)系人記錄的存盤,即將記錄寫入數(shù)據(jù)文件中;二是實(shí)現(xiàn)將記錄信息以表格的形式在屏幕上打印出來。
2.2 詳細(xì)設(shè)計(jì)
2.2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)
}per[N];
注:per[N]中的N為記錄的總個(gè)數(shù),程序中用宏定義的方式,可以隨時(shí)在源程序宏定義中修改。本程序的宏定義為#define N 100。
.2.2 主控main()函數(shù)執(zhí)行流程
圖2.2? 主控函數(shù)執(zhí)行流程圖
本通訊錄系統(tǒng)執(zhí)行主流程如圖2.2所示。它先以目錄形式顯示一系列功能選項(xiàng),接著由用戶通過鍵盤輸入數(shù)值。
在判斷鍵值時(shí),有效的輸入為0至6之間的任意數(shù)值,其他輸入都被視為錯(cuò)誤按鍵。
若選擇1,則調(diào)用append()函數(shù),執(zhí)行增加聯(lián)系人記錄操作;若選擇2,則調(diào)用del()函數(shù),執(zhí)行刪除聯(lián)系人記錄操作;若選擇3,則調(diào)用alt()函數(shù),執(zhí)行修改聯(lián)系人記錄操作;若選擇4,則調(diào)用search()函數(shù),執(zhí)行查找聯(lián)系人記錄操作;若選擇5,則調(diào)用print()函數(shù),執(zhí)行打印聯(lián)系人記錄操作;若選擇6,則退出該程序。若輸入為0~9之外的值,則提示“輸入有誤,請(qǐng)重新輸入”。
2.2.3輸入記錄模塊
輸入記錄模塊主要實(shí)現(xiàn)將數(shù)據(jù)存入數(shù)組中。若數(shù)據(jù)文件中無記錄,則無法從文件中讀取數(shù)據(jù)輸入到數(shù)組中。此時(shí),用戶應(yīng)選擇1,調(diào)用add()函數(shù),進(jìn)行聯(lián)系人記錄的輸入,即完成在數(shù)組中添加記錄的操作。
2.2.4查詢記錄模塊
查詢記錄模塊主要實(shí)現(xiàn)了在數(shù)組中按姓名或電話號(hào)碼查找滿足相關(guān)條件的聯(lián)系人記錄。在查詢函數(shù)search()
中,通過判斷鍵入號(hào)碼是否存在于通訊錄中而判斷函數(shù)常量是否被賦值。若存在,則表示已被賦值,將其輸出。否
則,進(jìn)行錯(cuò)誤提示。
2.2.5更新記錄模塊
此模塊主要實(shí)現(xiàn)了對(duì)聯(lián)系人記錄的增加、刪除及修改操作。因?yàn)槁?lián)系人記錄是以數(shù)組的結(jié)構(gòu)形式存儲(chǔ)的,所以這些操作都在數(shù)組中完成。下面分別介紹這3個(gè)功能模塊。
- 增加記錄。該操作完成增加聯(lián)系人記錄。
輸入要增加的聯(lián)系人姓名,回車;輸入要增加的聯(lián)系人年齡,回車;輸入要增加的聯(lián)系人性別,回車;輸入要增加的聯(lián)系人電話,回車;輸入要增加的聯(lián)系人QQ,回車;輸入要增加的聯(lián)系人住址,回車;輸入要增加的聯(lián)系人生日,回車。完成后,系統(tǒng)提示“保存成功”。
- 刪除記錄。該操作完成刪除指定姓名的聯(lián)系人記錄。
選擇“刪除聯(lián)系人”選項(xiàng)后屏幕上將自動(dòng)打印出通訊錄所有記錄信息,輸入要?jiǎng)h除的聯(lián)系人姓名,回車,則現(xiàn)實(shí)系統(tǒng)提示“刪除成功”。
- ?修改記錄。該操作完成修改制定姓名的聯(lián)系人記錄。
選擇“修改聯(lián)系人”選項(xiàng)后屏幕將自動(dòng)打印出通訊錄所有記錄信息,輸入要修改的聯(lián)系人姓名,回車,選擇要修改的項(xiàng)目,輸入修改后的記錄,回車,退出程序。
2.2.6輸出記錄模塊
當(dāng)把記錄輸出至文件時(shí),調(diào)用記錄函數(shù),將程序所保存的數(shù)據(jù)寫入文件指針fp所指的文件。當(dāng)把記錄輸出至屏幕時(shí),調(diào)用print函數(shù),將數(shù)組中的聯(lián)系人記錄信息以表格的形式在屏幕上打印出來。
2.2.7函數(shù)功能描述
- menu()
menu()函數(shù)用于展示功能項(xiàng),供用戶完成任務(wù)。
- append()
append()函數(shù)用于增加聯(lián)系人記錄。
- del()
del()函數(shù)用于刪除聯(lián)系人記錄。
- alt()
alt()函數(shù)用于修改單個(gè)記錄。
- search()
search()函數(shù)用于搜索聯(lián)系人記錄。
- print()
print()函數(shù)用于打印聯(lián)系人記錄。
- back()
back()函數(shù)作為公告函數(shù),提供從各個(gè)子模塊返回主菜單或者退出。