C語言通訊錄課程設計報告

2021-03-04 05:38:54 字數 4152 閱讀 7180

面向過程程式設計(c語言通訊錄系統)課程設計

一、 課題任務

設計乙個通訊錄管理系統。

課題的主要任務是:

1.對通訊錄資訊有新增、查詢、顯示、儲存、刪除、修改等操作功能。

2.可以將輸入的資料儲存在文字檔案中,並可以將其調出使用。

我的主要任務是編寫主函式,查詢模組和修改模組。

二、設計要求

建立通訊錄資訊,資訊至少包含姓名、住址、單位、固定**、移動手機、分類(如同事、朋友、同學、家人等)、e-mail、**等。

該系統提供新增、刪除、修改和查詢功能,其中按姓名方式刪除、修改,按姓名、單位、分類方式查詢。

將通訊錄儲存在檔案中。

能夠輸出通訊錄中的資訊。

二、 程式的功能設計

建立:建立通訊錄檔案並對其命名

新增:新增通訊錄記錄

輸出:顯示通訊錄記錄

刪除:刪除通訊錄記錄

查詢:查詢通訊錄記錄

修改:修改通訊錄記錄

儲存:將資訊儲存到檔案中

四、程式的資料設計

該系統用下面六個功能模組編寫,每個模組執行不同的功能,體現了模組化設計的思想。下面六個模組都是利用c語言檔案,向檔案中追加資料、修改資料、查詢資料和刪除資料。

建立:用fopen()建立乙個文字檔案,然後用fprintf()向其中輸入資料(例如,向檔案中輸入「姓名」,「位址」等), 並對檔案進行命名。

新增:可以新增通訊錄記錄,利用c語言檔案,向檔案中按順序輸入姓名、住址、單位、固定**、手機號碼、分類(如同事、朋友、同學、家人等)、e-mail、**,再用fclose()函式關閉並儲存檔案。

輸出:也是用通過迴圈依次輸出檔案中的資料,即輸出所有通訊錄裡的記錄。

刪除:輸入你要刪除的人的姓名後,系統會自動刪除他(她)的記錄,在刪除通過switch語句滿足提示你確認刪除的功能,只有等你確認刪除後才會刪除。

查詢:為了滿足使用者的實際需求,設計了三種查詢方式,可以用姓名、單位、分類三種方式查詢通訊錄記錄。這裡用到strcmp()函式,通過比較字串是否相同來判別是否找到相關資訊,找到後,就把檔案中的資料賦給對應的變數,再把變數所帶的值輸出到螢幕上。

修改:輸入你要修改的那個人的姓名後,系統會查詢該通訊錄檔案(此時用發ftell()函式來跟蹤檔案指標的指向位址,找到個人的記錄後,會顯示他(她)的記錄,然後通過fseek()函式來找到修改處的位址,然後使用者再依次輸入他(她)的相關資訊來替代以前的記錄。

儲存:用到fclose()函式,每次操作成功後會自動儲存到指定的檔案中。

如下圖所示:

五、程式的函式設計

下面是主函式部分:

void main

while(1通過乙個無限迴圈來完成

無數條記錄的輸入*/

else

printf("\n\n選擇錯誤,請再次選擇!");

}}上面主要是選單部分,用來提醒使用者需要選擇哪些功能。

這部分是來通過乙個無限迴圈(用while(1))來執行上述所有的功能模組,不斷的輸出選單專案,用switch語句來執行使用者選擇的功能模組,每乙個case後面就是對應的功能函式,(比如,使用者輸入數字2,那麼就是執行新增功能,相應的就是執行case 2 後面的add()函式,然後用break語句跳出迴圈,再輸出主選單,如果使用者要退出的話,只需選擇「0」就可以成功退出並且自動將資料儲存到指定的檔案中。如果使用者選擇的時輸入的資料有誤的話,會提示「選擇錯誤,請再次選擇!」,這樣,使用者就能夠再次輸入資料。

查詢模組:

該查詢功能分3種方式查詢,姓名查詢(按1),分類查詢(按2),單位查詢(按3)。這是通過switch語句來實現,case 1後面是按姓名查詢函式,case 2 後面是按分類查詢函式,case 3 後面是按單位查詢函式。如果使用者要選擇一種方式查詢通訊錄記錄,只需輸入對應的數字就可以。

三種方法大同小異,下面就說明姓名查詢吧!查詢使用者,進入查詢介面後並且鍵入「1」後,就執行姓名查詢方式,此時介面上會顯示「請輸入姓名」,然後系統將使用者輸入的姓名賦給對應的變數,然後用迴圈(用while(!feof(fp))這條語句來完成)來找出這個人的所有記錄,並將其輸出到螢幕上。

如果沒有此人的記錄,那就會輸出「對不起,通訊錄中沒有此人的記錄」或「對不起,通訊錄中沒有此類人的記錄」或「對不起,通訊錄中沒有此單位的記錄」,這裡輸出視查詢方式而定。執行查詢功能後會返回主選單,並提示使用者再次選擇。

修改模組:

使用者使用這個功能的時候,介面上會顯示「請你輸入要修改人的姓名:」等使用者輸入資料後,系統會通過迴圈從檔案中尋找此人,該過程和刪除模組是一樣的,每次從檔案中讀取資料後,便把資料賦給相應的變數,再用該資料與使用者輸入字串比較,如果相同,那就說明已找到該人的資料;如果不同,那就執行下乙個迴圈,直到找出為止,在尋找過程中,用ftell()函式來跟蹤位址,修改的時候用fseek()函式來尋找位址,找到要修改的位址後,系統會顯示該人的所有記錄,然後輸出「請輸入新的姓名、住址、工作(或學習)單位、固定**、手機號碼、郵箱、**以及分類。」這時使用者要按順序輸入資料。

使用者輸入完成後,系統會顯示「已修改!」並且返回主選單。

六、函式編碼及除錯

編寫的程式中很容易出現一些低階語法錯誤,(比如,有時候把%s寫成了%d),當然這很容易找出並且更正,主要是一些演算法錯誤很難找到,在除錯的過程中,最令我頭痛的就是編寫修改模組時用到的ftell和fseek函式,好鬱悶的,改了好幾天都沒有進展,最後在機房裡的時候請教了一下老師,經老師指點後,我就頓然開朗啦,原來是在尋找位址的時候出了錯,但是待我修改後還是不可以,每次執行修改的時候總是修改了別的資料,不過我發現這個被修改的資料和我想修改的資料的都靠在一起,我就想是不是我輸入資料的時候漏掉了乙個字元?本來文字檔案用ftell和fseek函式的時候就特別容易出錯,所以我碰到這個麻煩的時候,心情一點也不好,但潛意識告訴我,我不能放棄,然後我就再把程式看了幾遍,我試著把下列的程式

fprintf(fp,"%-10s%-20s%-20s%-15s%-15s%-20s%-15s%-10s", one.addr, one.work_place,one.

fixed_telephone, one.e_mail, one.**, one.

category);

改為fprintf(fp,"%-10s%-20s%-20s%-15s%-15s%-20s%-15s%-10s\n", one.addr, one.work_place,one.

fixed_telephone, one.e_mail, one.**, one.

category);

改的時候就加了乙個轉義字元「\n」,然後我再執行了一下,結果竟然對了,太巧了,我把整個程式仔細一看,原來是在新增和建立模組的時候都有這個字元,如果後面修改的時候不加的話,檔案上就會在排版上不符合導致在修改的時候修改錯位置,嘿嘿,終於找到錯誤了,好有成就感的,就是這個小小的字元害我花了好幾天時間,不過也獲得了乙個教訓,那就是寫程式的時候一定要注意前後的格式,要整體把握。

七、總結

這個課題是設計乙個通訊錄系統,該通訊系統能夠較好的管理好我們的通訊錄記錄,也擁有比較完善的功能,但是該系統依舊有漏洞,此程式必須按照系統提示的操作來執行,不然的話就會使程式進入死迴圈,比如,如果我輸入字串的長度過長的話,程式就會終止執行了,並且還沒有提示;後面的刪除模組所用的方法是用空格替代,雖然可以刪除,但達不到理想的效果。

在編寫過程中,我逐步的了解了程式模組化設計的思想含義。在整個程式設計的過程中語法的錯誤還是比較容易檢查的,但是對於那些邏輯思維的問題方面的缺陷不易查出,因此常常出現系統提示沒有錯誤但是仍然不能夠正常執行的境況,儘管有很多不足之處,但我在整個系統程式設計的過程中,我可以感受到自己對c語言有了一定的掌握,對整體的把握度也提高了很多。

此外程式設計是一項高精度的工作,所以我們要有規範化,標準化的**編寫習慣,良好的編寫習慣,不但有助於**的糾錯,也有助於不同人員之間的協作。

我們還要有模組化思維能力,模組化思維就是程式設計任何乙個功能模組或函式的時候,要多想一些,不要侷限在完成當前任務的簡單思路上,想想看該模組是否可以脫離這個系統存在,是否可以通過簡單的修改引數的方式在其他系統和應用環境下直接引用,這樣就能極大的避免重複性的工作。另外我們要重視程式的演算法,在程式中,演算法是靈魂,我們要努力學習各種先進的演算法,提高自己的程式設計能力。

附:系統的主要程式**

主函式部分:

#include

#include

#include

struct person

{char name[10姓名*/

char mobile_phone[16手機號碼*/

char fixed_telephone[16固定***/

C語言通訊錄課程設計報告

2013 2014學年第1學期 c語言實訓報告 課程名稱 c語言實訓 班級 xx 姓名 xx 學號 教學週數 xx 地點 xx 指導教師 xx 1 系統分析 1.1系統功能分析 1.2開發平台及工具介紹 2 系統整體功能模組圖 3 系統具體功能流程圖 4 系統執行介面 附錄 原始碼 include ...

c語言課程設計報告通訊錄

程式設計基礎課程設計 報告 題目通訊錄程式設計 專業 10資訊與計算科學 班級 1班 2班 學生 201041410139 莊 201041410208 張 目錄一 系統軟體環境 3 二 課程設計題目 3 三 課程設計的基本要求 3 四 系統結構設計描述 4 五 各變數的定義和作用 4 六 系統各函...

C通訊錄課程設計

一 設計任務分析 實現以下功能 1 通訊錄編輯 新增 刪除 2 按不同的項進行查詢 3 對已存在的通訊錄按不同的項排序 4 將通訊錄寫入檔案 5 從檔案讀入通訊錄。二 模組設計 本次程式設計主要設計了六個模組 主要是 函式用於通訊錄中的資訊進行新增,主要流程如下 函式用於通訊錄中的資訊進行刪除,主要...