家族关系查询系统程序设计算法思路_数据结构课程设计--
數據結構課程設計-- 家族關系查詢系統
課 程 設 計 任 務 書 題目題目 家族關系查詢系統家族關系查詢系統 主要內容、基本要求、主要參考資料等主要內容、基本要求、主要參考資料等 主要內容主要內容 建立家族關系數據庫,實現對家族成員關系的相關查詢。 基本要求基本要求 (1)建立家族關系并能存儲到文件中; (2)實現家族成員的添加。 (3)可以查詢家族成員的雙親、祖先、兄弟、孩子和后代等信息。 課程設計按照教學要求需要一周時間完成,總共要上機調試程序 10 小時。 對每個題目要有需求分析, 在需求分析中, 將題目中要求的功能進行敘述分析, 并且設計解決此問題的數據存儲結構,設計或敘述解決此問題的算法,描述算法 建議使用流程圖,進行算法分析指明關鍵語句的時間復雜度。給出實現功能的一 組或多組測試數據,程序調試后,將按照此測試數據進行測試的結果列出來 。 源程序要按照寫程序的規則來編寫。要結構清晰,重點函數的重點變量, 重點功能部分要加上清晰的程序注釋。 程序能夠運行,要有基本的容錯功能。 盡量避免出現操作錯誤時出現死循環; 主要參考資料主要參考資料數據結構(C 語言版) ,在網上查詢的相關資料及部 分代碼 完完 成成 期期 限限 2013.6.2013.6.1818- -2013.6.20 2013.6.20 指 導教師簽名指 導教師簽名 課程負責人簽名課程負責人簽名 20132013 年年 6 6 月月 18 18 日日 一、一、 設計題目(任選其一)設計題目(任選其一) 家族關系查詢系統 二、二、 運行環境(軟、硬件環境)運行環境(軟、硬件環境) 電腦 及 Visual C 6.0 三、三、 算法設計的思想算法設計的思想 隨著社會發展,人們使用紙質的家譜已經非常不方便 而且不利于在家譜里進行添加和修改。而用算法設計一個 家族關系查詢系統則可以解決這個問題。數據結構的二叉 樹剛好滿足家譜的基本結構。 首先建立一個文件作為家譜,然后在文件中輸入字符 串,實現了在文件中按照數據的邏輯關系進進輸入便可建 立相應的三叉鏈表。然后就是進行數據的存儲、刪除及查 找工作。 四、四、 算法的流程圖算法的流程圖 家譜的創建家譜的創建 載入家譜載入家譜 開始開始 輸入家譜名稱輸入家譜名稱 輸入家族成員輸入家族成員 結束結束 開始開始 修改家譜修改家譜 成員查詢成員查詢 輸入家譜名輸入家譜名 載入成功載入成功 結束結束 家譜是否存在家譜是否存在 家譜打開失敗家譜打開失敗 是是 否否 開始開始 選擇選擇 輸入成員姓名輸入成員姓名 結束結束 添加成員添加成員 輸入成員姓名輸入成員姓名 是是 否否 返回上一級返回上一級 刪除成員刪除成員 成員是否存在成員是否存在 刪除成功刪除成功 請重新輸入請重新輸入 五、五、 算法設計分析算法設計分析 本次設計研究的是建立家族關系, 實現對家族成員關 系相關查詢的問題。 在設計中使用的數據結構為樹狀結構, 樹狀結構采用三叉鏈表實現。我們在建立好家族關系后將 其存儲在文件中,在文件中家族關系是以樹的形式存儲, 運用樹的操作使家族關系得以準確建立。 家族關系查詢系 統可分為六大模塊,分別是創建、修改、查詢、保存、退 出等。建立家族關系模塊,建立家族關系并存入文件。建 立時首先輸入家族關系的名稱,以此名稱為名建立文本文 件。接下來按層輸入成員姓名,輸入一個在文件中寫入一 個字符串,以回車鍵結束。打開一個家族關系。在界面輸 開始開始 輸入成員名輸入成員名 輸出成員信息輸出成員信息 結束結束 成員成員是否存在是否存在 不在家譜中,請重新不在家譜中,請重新 輸入輸入 是是 否否 入選項名,以家族關系名為文件名打開文件,如果家族關 系不存在,返回空;如果存在,打開文件,讀取文件。。向 家族中添加一個新成員,添加的新成員要根據其父親確定 其在家族中的位置。 首先判斷該父親是否在此家族關系中, 若存在,則查找其父親,將新節點插入其父親的最后一個 孩子之后;若沒有孩子,直接作為左孩子插入。以寫入的 方式打開文件,更新數組中的信息,然后將數組中的信息 寫入文件保存,關閉文件。查找功能模塊,查找一個成員 的所有祖先及其兄弟,查找一個成員的所有祖先路徑,需 要從它的父親一直向上查找帶根結點。查找一個成員的兄 弟, 一個成員的兄弟為其父親除了該結點以外的所有孩子。 對于要操作的結點, 先判斷它是否是根結點, 若是根結點, 則無兄弟;若不是根結點,則找到該結點的父親。接著判 斷父親的兄弟是否都存在,如果都不存在,則無兄弟;如 果都存在,對父親的孩子操作。 六六、、源代碼源代碼 include
總結
以上是生活随笔為你收集整理的家族关系查询系统程序设计算法思路_数据结构课程设计--的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 刺猬法则
- 下一篇: Windows服务器更改远程端口3389