ImageVerifierCode 换一换
格式:DOC , 页数:8 ,大小:58KB ,
资源ID:5549607      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-5549607.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构大作业(家谱管理系统).doc)为本站会员(eukav)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

数据结构大作业(家谱管理系统).doc

1、1序號 1 2010-2011 學年度第一學期大作業課程名稱: 數據結構 任課教師: 李合龍 作業題目: 家譜管理系統設計與實現 姓 名: 潘應妙 學 號: 201004953013001 專 業: 計算機科學與技術 教學中心: 珠海教學辦 聯繫電話: 0085366694440 評審日期_成績_評審教師(簽名)_華南理工大學網路教育學院2一、需求分析1. 建立輸入文件以存放最初家譜中各成員的資訊。2. 成員的資訊中均應包含以下內容:姓名、出生地、出生日期、性別、身高、學歷、職業、婚否、地址、健在否、死亡日期(若其已死亡)3. 能對修改後的家譜存檔以備以後使用。4. 能從文件中讀出已有的家譜,

2、形成樹狀關係。5. 家譜建立好之後,以圖形方式顯示出來。6. 顯示第n代所有人的資訊。7. 按照姓名查詢,輸出成員資訊(包括其本人、父親、孩子的資訊) 。8. 按照出生日期查詢成員名單。9. 輸入兩人姓名,確定其關係。10. 某人添加孩子。11. 刪除某人(若其還有後代,則一併刪除) 。12. 修改某人資訊。13. 按出生日期對家譜中所有人排序。14. 打開一家譜時,若家譜中某人的生日在打開家譜的那一天,應給出提示。3二、概要設計採用二叉樹進行家譜的管理、樹形控制項及列表控制項進行家譜的顯示。程式涉及以下三種類型,但基本操作均在“家譜” 類型中。1定義“個人資訊 ”類型:ADT Person

3、資料物件:D=Pj | Pj=姓名、出生日期、婚否、地址、健在否(如過世,還應有其死亡日期),j=0,1,2,n,其中n=0 資料關係:R= 基本操作:無。ADT Person2.定義“家譜類型文件 ”類型 ADT FamilytreeFile 資料物件:D=Aj | Aj屬於Person,j=1,2,3,n其中n=1 資料關係:D中每個物件用換行符隔開, R= | Aj屬於D,j=1,3,n其中n=1,String屬於字串類型,爲Aj父親姓名(若String=-1,Aj無父親,若 String=Aj的姓名,表示家譜文件結束) 基本操作:1打開家譜類型文件,並建立兄弟、孩子二叉樹。2從記憶體中

4、讀取兄弟、孩子二叉樹,並建立家譜類型文件。ADT FamilytreeFlie3定義“家譜 ”類型ADT Familytree 資料物件:D=Aj | Aj屬於Person,j=1,2,3,n其中n=0 資料關係:V= | Aj-1,Aj屬於D,j=2,3,n其中n=2 ,且Aj-1與Aj爲祖先與後代關係(parent) 、後代與祖先關係(child) 、兄弟之間關係( sibling) 基本操作:1顯示某人資訊。2修改某人資訊。3增加某人孩子。4刪除某人。5通過某人查找其雙親、孩子、兄弟。ADT Familytree 4三、詳細設計1定義“個人資訊 ”類型:struct Info /一個人的

5、有關資訊在記憶體中的存儲結構char nameMAX_CHARNUM; /姓名char sexMAX_CHARNUM /性別Date birthday; /出生日期Char brithpaceMAX_CHARNUM; /出生地Int height /身高Char educationMAX_CHARNUM; /學歷Char jobMAX_CHARNUM; /職業int marry; /婚否char addrMAX_CHARNUM ; /住址int live; /健在否Date deathday; /死亡日期; 2.定義“家譜類型文件 ”類型 /一個人的有關資訊在磁片文件中存儲結構char nam

6、eMAX_CHARNUM; /姓名char sexMAX_CHARNUM; /性別cahr brithpaceMAX_CHARNUM; /出生地char educationMAX_CHARNUM; /學歷char jobMAX_CHARNUM; /職業int height /身高int birthday.year; /出生年份int birthday.month; /出生月份int birthday.day; /出生日期int marry; /婚否char addrMAX_CHARNUM; /住址int live; /健在否int deathday.year; /死亡年份int deathda

7、y.month; /死亡月份int deathday.day; /死亡日期char fathername; /父親名字; 3定義“家譜 ”類型struct PersonNode 5/一個人的資訊和與其他人關係的存儲結構Info info; /自己的資訊PersonNode* parent; /指向父親的指標PersonNode* child; /指向孩子的指標PersonNode* sibling; /指向兄弟的指標*Person; 4.用結構Date存儲日期struct Date /年、月、日存儲結構int year; /年int month; /月int day; /日; 5用結構Quic

8、kSortNode 存儲快速排序陣列值(爲快速排序而設)struct QuickSortNode /爲以出生日期大小快速排序建立的存儲結構Date birthday; /出生日期Person oneself; /指向自己的指標; 6.根據家譜的特點,採用孩子-兄弟的二叉樹鏈表表示法(鏈表的基本單位爲以結構ersonNode表示的結點) ,各種操作以COperationFamilytree類來實現。以下是CoperationFamilytree類包含的資料成員及基本操作class COperationFamilytree public: COperationFamilytree(); /構造函數

9、virtual COperationFamilytree(); /析構函數void NewFamilytree(); /新建一空家譜int CreateFamilytree(CString filename); /從輸入文件filename中讀取資料建立家譜void DestroyFamilytree(); /刪除家譜int SaveFamilytree(CString filename); /保存家譜void PreOrderTraverse(FILE* fp,Person /先序遍曆( 爲保存家譜而做) void PostOrderTraverse(Person /後序遍曆( 爲刪除家譜而

10、做) void Find(Person /從根結點出發,搜索name所在結點,如找到,存於Tname 中,找不到,Tname 爲 0使用前確保Tname指標爲0 void Find(Person /從根結點出發,搜索家6譜中birthday.month等於month,birthday.day等於day的所有結點,如找到,存於以Tname爲首位址的指標陣列中,找不到, Tname爲 0使用前確保/Tname指標爲0 void Add(Person parent,Person addNode); /把addnode加爲結點parent的孩子void Delete(Person /刪除以rootNo

11、de爲根結點的所有結點void Modify(Person /修改 pNode結點爲新值newValue void SortByBirthday(QuickSortNode* order);/對家譜以出生日期排序,並把排序結果放在陣列order中void GetPersonNums(Person /得到家譜中總人數int InGenerationPos(Person pNode); /返回pNode在家譜中是第幾代int InSiblingPos(Person pNode); /返回pNode在其兄弟中的排行int ChildNums(Person pNode); /返回pNode孩子數int

12、 CompareDate(Date date1,Date date2); /比較兩日期的大小bool IsDateValid(Date date); /檢驗日期是否合法Person /得到根結點friend void SaveNode(FILE* fp,Person /保存結點pNode到文件fp中friend void DestroyNode(Person /刪除結點private: Person T; /二叉樹的根結點int ReadNode(FILE* fp,Person /從文件fp中讀取資訊到結點T中,讀取此結點的父親姓名到 parentnaem中(供CreateFamilytree

13、函數調用) void InsertSibling(Person /把insertSibling插入到以firstSibling爲首的兄弟中( 供CreateFamilytree函數調用) void CopyInfoFromBiTreeToArray(Person /把家譜中以pNode結點爲根結點的出生日期拷貝到快速排序結構陣列order中(供SortByBirthday函數調用) void QuickSort(QuickSortNode* order,int low,int high); /對orderlow.high 中的記錄進行快速排序(供SortByBirthday函數調用) int

14、Partition(QuickSortNode* order,int low,int high); /對orderlowhigh 中的記錄進行一次排序(供QuickSort函數調用) bool IsLeapYear(int year); /判斷是否閏年(供IsDateValid調用,以檢查日期是否合法); 7.根據MFC的特點,採用 CfamilytreeDlg類實現用戶視窗介面指令對於家譜的各種操作。class CFamilytreeDlg : public CDialog public: void SaveTip(); /保存提示void InitListCtrl(); /初始化列表控制項

15、void RefreshTree(); /刷新樹,(即刷新顯示) void RefreshList(); /刷新列表void DisplayFamilytree(Person /顯示樹7void DisplayInListCtrl(Person pNode); /把pNode結點的資訊在列表控制項中顯示出來void Display(CString temp); /在列表控制項中顯示其他資訊void FindInTree(HTREEITEM /在樹hRootItem中查找name所在結點,如找到,把其結點控制碼存入hItem中,找不到,/hItem 爲0.注意,使用該函數時,確保 hItem初值

16、爲0 void BirthdayTip(); /每次打開一新家譜文件時的生日提示void DisplayGenerationInfo(Person /顯示所有第generation 代人的資訊void AddToTree(HTREEITEM hParentItem,Person addnode ); /把addnode 加入到樹的hParentItem 結點中去private: char savepathMAX_CHARNUM; /家譜第一次被保存時的路徑bool IsFamilytreeModified; /家譜是否被修改標記COperationFamilytree operFamilytr

17、ee; /對家譜操作的一個類實例,所有的家譜操作均由它調用成員函數來完成; 8爲使程式結構趨於清晰,分別使用CAddInfoDlg、CBirthdayDlg、CDelInfoDlg、CFileOpenAndSaveDlg、CModifyInfoDlg 、CPersonalInfoDlg、CRelationsDlg、CSearchGenerationDlg類實現用戶窗口對於家譜的增加成員、按生日查找、刪除成員、文件輸入輸出、修改成員資訊、按名字查找、成員關係顯示、按代數顯示等各種操作。縱上所示,本程式的兩主要類爲CoperationFamilytree類:所有對家譜的操作均由此類完成。CFami

18、lytreeDlg類:所有對用戶功能表命令的解釋均由此類完成,然後調用CoperationFamilytree 類的成員函數執行命令並顯示結果。根源程式檔案名清單:Familytree.cpp& Familytree.h主程序實現單元FileOpenAndSaveDlg.cpp& FileOpenAndSaveDlg.h文件輸入輸出實現單元OperationFamilytree.cpp& OperationFamilytree.h家譜操作實現單元StdAfx.cpp& StdAfx.h &Resourse.hMFC類實現及資源頭文件Familytree.rc& Familytree.rc2&

19、Familytree.ico資源檔案AddInfoDlg.cpp& AddInfoDlg.h增加成員的實現單元DelInfoDlg.cpp& DelInfoDlg.h刪除成員的實現單元ModifyInfoDlg.cpp& ModifyInfoDlg.h修改成員資料的實現單元BirthdayDlg.cpp& BirthdayDlg.h按出生日期查找成員的實現單元PersonalInfoDlg.cpp& PersonalInfoDlg.h按姓名查找成員的實現單元8RelationsDlg.cpp& RelationsDlg.h顯示成員關係的實現單元SearchGenerationDlg.cpp& SearchGenerationDlgh顯示代數的實現單元SP.本人所用的是繁體中文 ,可能在編程時有些轉換違留而引起亂碼 ,望老師見諒!

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报