家谱管理系统1

上传人:Sc****h 文档编号:134654867 上传时间:2022-08-13 格式:DOCX 页数:24 大小:354.80KB
收藏 版权申诉 举报 下载
家谱管理系统1_第1页
第1页 / 共24页
家谱管理系统1_第2页
第2页 / 共24页
家谱管理系统1_第3页
第3页 / 共24页
资源描述:

《家谱管理系统1》由会员分享,可在线阅读,更多相关《家谱管理系统1(24页珍藏版)》请在装配图网上搜索。

1、完美 WORD 格式软件综合设计家谱管理系统院系:计算机科学技术学院二系班级:计112班姓名:刘文秀( 15)合 作 者:姜雪 (05)、岳奉宜 (33)指导教师:薛曼玲2013年12 月01 日专业整理知识分享完美 WORD 格式软件 综合设计 任务书一、题目:家谱管理系统二、设计要求( 1)刘文秀(组长)、姜雪和岳奉宜组成课程设计小组。( 2)小组成员分工协作完成。要求每个成员有自己相对独立的模块, ,同时要了解其他组员完成的内容。( 3)查阅相关资料,自学具体课题中涉及到的新知识。( 4)采用结构化、模块化程序设计方法设计,功能要完善,界面美观。( 5)所设计的系统应有菜单、动画和音乐。

2、( 6)按要求写出课程设计报告,并于设计结束后1 周内提交。其主要内容包括:封皮、课程设计任务书,指导教师评语与成绩、目录、概述、软件需求分析、总体设计、详细设计、程序的调试与测试、总结与体会、结束语、程序清单(带中文注释)、参考文献等。报告一律用 A4 纸打印,正文的中文字体为宋体,西文字体用 Time NewRoma,一律用小四号字,行距采用“固定值” 18 磅,首行缩进 2 字符。 1 级标题中文字体为黑体,西文字体为 Time New Roma,采用三号字;段落为居中、段前 18 磅、段后 12 磅、行距采用“固定值” 18 磅,首行缩进:无,段中不分页,与下段同页。仅一级标题上目录。

3、三、课程设计工作量由于是设计小组团结协作完成设计任务, 一般每人的程序量在 400 行有效程序行以上,不得抄袭。四、课程设计工作计划2013 年 12 月 2 日,指导教师讲课,学生根据题目准备资料,需求分析;2013 年 12 月 3 日,设计小组进行总体方案设计和任务分工;2013 年 12 月 4 日 2013 年 12 月 10 日,每人完成自己承担的程序模块并通过独立编译;2013 年 12 月 11 日 12 日,将各模块集成为一个完整的系统,并录入足够的数据进行调试运行;2013 年 12 月 13 日,验收、开始撰写课程设计报告;2013 年 12 月 18 日前,提交课程设计

4、报告和软件。指导教师签章:教研室主任签章专业整理知识分享完美 WORD 格式指导教师评语与成绩指导教师评语:课程设计验收成绩:课程设计报告成绩:课程设计总成绩:指导教师签章年月日专业整理知识分享完美 WORD 格式目录第 1 章 概述11.1 课题研究的目的和技术发展现状11.2 课题研究的主要内容11.3 课题研究的难点1第 2 章 需求分析22.1 性能需求22.2 功能需求2第 3 章 可行性分析23.1 经济可行性分析23.2 技术可行性分析2第 4 章 概要设计34.1 程序设计的基本思想34.2 总体功能模块图34.3 相关应用技术3第 5 章详细设计45.1 日期信息的合法性检验

5、45.2 添加成员孩子模块55.3 添加成员兄弟模块85.4 按照出生日期对家谱排序95.5由兄弟、孩子二叉树生成家谱文件125.6按照姓名、出生日期查找家谱成员13第 6 章 调试分析与测试结果146.1测试方法146.2测试过程146.3测试结论15第 7 章 结束语19参考文献20附录20专业整理知识分享完美 WORD 格式第1章概述1.1课题研究的目的和技术发展现状本家谱管理系统是以电子家谱的形式记载父系家族世袭、人物为中心。电子能准确记录家族成员出生卒年, 以及生活地点、 家庭成员等信息。 一般情况下是不会出现信息丢失情况。更不需要担心传统家谱随着年代的久远字迹不清晰,有破损等情况的

6、出现。 所以本课题的研究目的是让大家不但能够非常容易的记录家族情况, 而且能清楚的了解本家族信息, 使用起来非常方便。 现有的计算机技术足以支撑电子家谱的开发。 家谱的科学管理不但有助于民族文化和地方文化的发展,而且有其自身的积极意义。例如本电子家谱是利用 Visval C+ 6.0 开发完成的。电子家谱的出现无疑让家谱焕然一新, 但是传统家谱更能凸显出历史的韵味,文化的内涵。 这是电子家谱所不能够替代的, 电子家谱不可能成为文物。开发人员应该清楚的认识到这一点。1.2课题研究的主要内容家谱,又称族谱、祖谱、宗谱等。一种以表谱形式,记载一个以血缘关系为主题的家族世系繁衍。 本课题研究的主要内容

7、是以电子家谱的形式记录、查询父系家族历史信息为主要内容。1.3课题研究的难点建立输入文件以存放最初家谱中各成员的信息, 以及能够对修改后的家谱存盘以备以后使用。用户界面的设计不够完美。功能上的设计难度很大。专业整理知识分享完美 WORD 格式第 2章需求分析2.1性能需求系统的核心是利用对话框的连接和文本处理来存储和修改家族管理系统的信息联系,其中的每一个动作都可能影响到其他的功能。使用方便,易于传播,数据共享等性能。易于维护。2.2功能需求建立输入文件以存放最初家谱中各成员的信息。成员的信息中均应包含以下内容:姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡)也可附加其它信息、但不是

8、必需的。能对修改后的家谱存盘以备以后使用。能从文件中读出已有的家谱,形成树状关系。家谱建立好之后,以图形方式显示出来。显示第 n 代所有人的信息。按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。按照出生日期查询成员名单。输入两人姓名,确定其关系。某人添加孩子。删除某人(若其还有后代,则一并删除)。修改某人信息。按出生日期对家谱中所有人排序。打开一家谱时,若家谱中某人的生日在打开家谱的那一天,应给出提示。第 3章可行性分析3.1经济可行性分析对系统开发规模进行估算属此软件项目属于小规模软件开发。 所以开发人员三到五人即可。 开发,维护等成本相对较低。 所以从经济可行性分析的角度来看此

9、家谱管理系统适于开发。3.2技术可行性分析根据软件系统功能、性能要求的各项约束条件从技术的角度实现系统的可行性。家谱信息以树的形式一次读入内存,而个人的各种资料虽然目前条目不多,但随着程序的升级, 以后可能越来越大。 我把树形结构和个人信息记录的文档分为两个文件保存在外存中, 一个文件串行化的记录家谱树的结构化信息, 保持少量个人信息作为识别标志; 另一个文档保存完整的个人信息。 索引时,以树形中的少量信息为依据在另一个文件中找到全部个人信息资料。专业整理知识分享完美 WORD 格式第 4章概要设计4.1程序设计的基本思想家谱管理系统 的总体设计思路是先为程序搭建好一个人结构框架, 家庭成员之

10、间的关系,用树形结构(家族树)表示,这是本家谱管理系统的逻辑结构。根据 MFC的特点,采用 CfamilytreeDlg 类实现用户窗口界面指令对于家谱的各种操作。 有文件控制和家谱控制两大模块 , 按生日查找、 删除成员、文件输入输出、修改成员信息、按名字查找、成员关系显示、 按代数显示等各种操作。然后再根据需求分析逐步增强程序的功能和性能。4.2总体功能模块图4.3 相关应用技术1. 定义“家谱”类型2. 用结构 Date 存储日期3. 用结构 QuickSortNode 存储快速排序数组值(为快速排序而设)4. 根据家谱的特点,采用孩子 - 兄弟的二叉树链表表示法(链表的基本单位为以结构

11、 ersonNode 表示的结点),各种操作以 COperationFamilytree 类来实现。5. 根据 MFC的特点,采用 CfamilytreeDlg 类实现用户窗口界面指令对于家谱的各种操作。专业整理知识分享完美 WORD 格式第 5章详细设计5.1 日期信息的合法性检验图 5-1日期信息的合法性检查IntCOperationFamilytree:ReadNode(FILE*fp,Person&T,char*parentname)/ 本函数从文件 fp 中读取信息到结点T 中 , 并读取结点的父亲名字到字符数专业整理知识分享完美 WORD 格式组 parentname 中/ 分别读

12、取结点值 , 为: 姓名 , 出生日期 ( 年, 月 , 日), 婚否 , 地址, 健在否 ,( 如过世,还有死亡日期 )fscanf(fp,%s%d%d%d%d%s%d,T-info.name,&T-info.birthday.year,&T -info.birthday.month,&T-info.birthday.day,&T-info.marry,T-info.addr,&T-info.live); if(T-info.live=0)fscanf(fp,%d%d%d,&T-info.deathday.year,&T-info.deathday.month,&T-info.deathda

13、y.day);fscanf(fp,%s,parentname);if(!IsDateValid(T-info.birthday)/ 出生日期合法性检查return FILE_DATA_NOT_PRACTICAL;if(T-info.live=0)/ 若过世 , 死亡日期合法性检查if(!IsDateValid(T-info.deathday)return FILE_DATA_NOT_PRACTICAL;return OK;5.2添加成员孩子模块图 5-2添加成员孩子流程图专业整理知识分享完美 WORD 格式Int COperationFamilytree:CreateFamilytree(CS

14、tring filename)/ 本函数建立一新家谱DestroyFamilytree();/ 建立一新家谱之前,清空原有家谱FILE* fp;if(fp=fopen(filename,r)=0)/ 打开文件 filenamereturn READ_FILE_ERROR;T=new PersonNode;/ 定义根结点if(!T)return NOT_ENOUGH_MEMORY;T-child=0;T-sibling=0;T-parent=0;Person parentT, temp;/ 定义两个临时结点char parentnameMAX_CHARNUM;/ 定义一个临时字符串数组/ 读取根

15、结点值 ,( 姓名 , 出生日期 ( 年 , 月 , 日), 婚否 , 地址 , 健在否 ,( 如过世,还有死亡日期 )int result; result=ReadNode(fp,T,parentname); if(result=FILE_DATA_NOT_PRACTICAL)delete T;/ 若不合法,删除申请的堆空间T=0;return result;if(strcmp(T-info.name,parentname)=0)/ 根结点名字与其父亲名字相同,说明为空树 delete T;T=0;return PEDIGREE_EMPTY;temp=new PersonNode;/ 申请一

16、结点if(!temp)/ 申请失败DestroyFamilytree();/ 释放申请空间return NOT_ENOUGH_MEMORY;result=ReadNode(fp,temp,parentname);while(strcmp(temp-info.name,parentname)&strcmp(temp-info.name,专业整理知识分享完美 WORD 格式end)/ 读取信息结束的条件是两个人的名字同为endif(result=FILE_DATA_NOT_PRACTICAL)/ 若数据不合法,释放已申请空间,然后返回 delete temp; DestroyFamilytree(

17、);return result;parentT=0;Find(T,parentT,parentname);/找到parentname 所在结点parentTif(parentT)/如果 parentT 存在,说明 parentname 在家谱中/ 并且 parentname 为 temp 的父亲int cmp;cmp=CompareDate(temp-info.birthday,parentT-info.birthday);if(cmpchild=temp-sibling=0;temp-parent=parentT;/temp 的父指针指向 parentT;if(parentT-child)/

18、parentname已经有孩子InsertSibling(parentT-child,temp);/ifelse/parentname无孩子 , 则 temp 应为parentT-child=temp;/parentname的第一个孩子/ifelse/parentT不存在 , 说明家谱中不存在 parentname 此人DestroyFamilytree();/ 返回出错信息return FILE_DATA_ERROR;temp=new PersonNode;/ 申请一结点if(!temp)/ 申请失败DestroyFamilytree();/ 释放申请空间return NOT_ENOUGH_

19、MEMORY;result=ReadNode(fp,temp,parentname);/ 继续读取数据专业整理知识分享完美 WORD 格式/whileif(temp)delete temp;fclose(fp);return OK;5.3添加成员兄弟模块图 5-3添加成员兄弟模块void SaveNode(FILE *fp, Person &pNode)/ 本函数向文件 fp 中存取一结点 pNode char ch=n;if(pNode)fprintf(fp,%s%d%d%d%d%s%d,pNode-info.name,pNode-info.birthday.year,pNode-info.

20、birthday.month,pNode-info.birthday.day,pNode-info.m arry,pNode-info.addr,pNode-info.live);if(pNode-info.live=0)专业整理知识分享完美 WORD 格式fprintf(fp, %d %d %d ,pNode-info.deathday.year,pNode-info.deathday.month,pNode-info.deathday.day);if(pNode-parent)/家谱结束fprintf(fp, %s ,pNode-parent-info.name);elsefprintf(

21、fp, %s,-1);fprintf(fp, %c,ch);int COperationFamilytree:SaveFamilytree(CString filename)/ 本函数保存家谱到文件 filename 中FILE* fp;if(fp=fopen(filename,w)=0)/ 打开文件 filenamereturn WRITE_FILE_ERROR;PreOrderTraverse(fp,T,SaveNode);/ 从根结点开始存储家谱数据/ 置家谱数据结束标记 ( 一结点的名字与其父结点的名字同为 end) fprintf(fp,%s %d %d %d %d %s %d %s

22、,end,1999,12,2,1,end,1,end);fclose(fp);return OK;voidCOperationFamilytree:PreOrderTraverse(FILE*fp,Person&T, void(_cdecl *Visit)(FILE* fp,Person &)/ 本函数把所有以 T 结点为根结点的结点值存到文件 fp 中if(T)(*Visit)(fp,T);PreOrderTraverse(fp,T-child,Visit);PreOrderTraverse(fp,T-sibling,Visit);5.4按照出生日期对家谱排序void CFamilytree

23、Dlg:OnFamilytreeSort()/ TODO: Add your command handler code here专业整理知识分享完美 WORD 格式RefreshList();QuickSortNode* order;int totalNums=0;operFamilytree.GetPersonNums(operFamilytree.GetRoot(),totalNums);order=new QuickSortNodetotalNums+1;if(!order)AfxMessageBox( 内存不足 !);return;AfxMessageBox(排序后结果请见下部列表。)

24、;operFamilytree.SortByBirthday(order);for(int i=1;itotalNums+1;i+)DisplayInListCtrl(orderi.oneself);delete order;void COperationFamilytree:SortByBirthday(QuickSortNode *order)/ 本函数对顺序表 order 以出生日期的大小排序 int totalNums=0;QuickSortNode* startaddr=order; startaddr+;GetPersonNums(T,totalNums);CopyInfoFrom

25、BiTreeToArray(T,startaddr);QuickSort(order,1,totalNums);int COperationFamilytree:Partition(QuickSortNode *order, int low, int high)/ 本函数供 QuickSort 函数调用/ 交换顺序表 order 中从 low 到 high 的记录,便枢轴记录到位,并返回其所在位置,此时/ 在它之前(后)的记录均不大(小)于它order0=orderlow;/ 用子表的第一个记录做枢轴记录Date pivotkey=orderlow.birthday; /枢轴记录关键字whil

26、e(lowhigh)/ 从表的两端交替地向中间扫描while(lowhigh&(CompareDate(orderhigh.birthday,pivotkey)=1|CompareDate(orderhigh.birthday,pivotkey)=0)专业整理知识分享完美 WORD 格式-high;orderlow=orderhigh;/ 将比枢轴记录小的记录移到低端orderlow.birthday=orderhigh.birthday;/枢轴记录到位orderlow.oneself=orderhigh.oneself;while(lowhigh&(CompareDate(orderlow.

27、birthday,pivotkey)=-1|CompareDate(orderlow.birthday,pivotkey)=0)+low;orderhigh=orderlow;/ 将比枢轴记录大的记录移到高端orderlow=order0;/枢轴记录到位return low;/ 返回枢轴位置void COperationFamilytree:QuickSort(QuickSortNode*order,intlow, inthigh)/ 本函数对顺序表orderlow.high作快速排序int pivotloc;if(lowchild,personNums); / 递归调用 GetPersonN

28、ums(T-sibling,personNums);voidCOperationFamilytree:CopyInfoFromBiTreeToArray(Person&T,QuickSortNode *&order)/ 本函数先序遍历以T 为根结点的所有结点, 并把每一个结点的出生日期信专业整理知识分享完美 WORD 格式息及其指针值/ 依次存入顺序表 order 中if(T)(*order).birthday=T-info.birthday;(*order).oneself=T;order+;CopyInfoFromBiTreeToArray(T-child,order);CopyInfoF

29、romBiTreeToArray(T-sibling,order);5.5由兄弟、孩子二叉树生成家谱文件void SaveNode(FILE *fp, Person &pNode)/ 本函数向文件 fp 中存取一结点 pNode char ch=n;if(pNode)fprintf(fp,%s %d %d %d %d %s %d,pNode-info.name,pNode-info.bi rthday.year,pNode-info.birthday.month,pNode-info.birthday.day,pNode-info.m arry,pNode-info.addr,pNode-in

30、fo.live);if(pNode-info.live=0)fprintf(fp,%d%d%d,pNode-info.deathday.year,pNode-info.deathday.month,pNode-info.deathday.day);if(pNode-parent)/家谱结束fprintf(fp, %s ,pNode-parent-info.name);elsefprintf(fp, %s,-1);fprintf(fp, %c,ch);int COperationFamilytree:SaveFamilytree(CString filename)/ 本函数保存家谱到文件 fil

31、ename 中FILE* fp;if(fp=fopen(filename,w)=0)/ 打开文件 filename专业整理知识分享完美 WORD 格式return WRITE_FILE_ERROR;PreOrderTraverse(fp,T,SaveNode);/ 从根结点开始存储家谱数据/ 置家谱数据结束标记 ( 一结点的名字与其父结点的名字同为 end) fprintf(fp,%s %d %d %d %d %s %d %s,end,1999,12,2,1,end,1,end);fclose(fp); return OK;voidCOperationFamilytree:PreOrderTr

32、averse(FILE*fp,Person&T, void(_cdecl *Visit)(FILE* fp,Person &)/ 本函数把所有以 T 结点为根结点的结点值存到文件 fp 中 if(T)(*Visit)(fp,T); PreOrderTraverse(fp,T-child,Visit); PreOrderTraverse(fp,T-sibling,Visit);5.6按照姓名、出生日期查找家谱成员void COperationFamilytree:Find(Person& T,Person& Tname,char* name)/ 本函数以 T 为根结点开始 , 搜索结点信息中名字

33、等于 name的结点if(T)/如果 T存在if(strcmp(T-info.name,name)=0)/T 结点姓名和 name相同,把 T结点指针传给 TnameTname=T;elseFind(T-sibling,Tname,name);/ 对 T 的兄弟递归搜索Find(T-child,Tname,name);/ 对 T 的孩子递归搜索void COperationFamilytree:Find(Person&T, Person*& Tname,int month, intday)/ 本函数以 T 为根结点开始 , 搜索结点信息中生日等于 month,day 的结点 ,/ 并把所有符合

34、条件的结点指针值存入以 Tname为起始地址的地址数组中专业整理知识分享完美 WORD 格式if(T) / 如果 T 存在 if(T-info.birthday.month=month&T-info.birthday.day=day)/T 结点生日与所给相同,把T 结点指针传给Tname,同时 Tname指针前进*Tname=T;Tname+;elseFind(T-sibling,Tname,month,day);/ 对 T 的兄弟递归搜索Find(T-child,Tname,month,day);/ 对 T 的孩子递归搜索第 6章调试分析与测试结果6.1测试方法该课程设计只有一个主要类, 即

35、对孩子兄弟二叉树的操作类。 该类主要包括文件读取函数、 创建孩子兄弟二叉树函数、 在树中查找函数、 遍历函数以及对树中结点进行加入、删除、修改的函数。由于树存储结构的特殊性,故编制这些算法时大量使用了递归, 虽然这样做可能会降低程序的执行效率, 但程序的易读性较强。6.2测试过程在调试时,遇到的几个问题如下:(1)建立树时,由于新申请结点的孩子指针、兄弟指针、及双亲指针均未赋空值。而在以后的函数中对树进行递归操作时均以这些指针值中的一个或几个是否为空作为递归结束条件。 从而导致调用这些函数时出现系统保护异常(使用了不安全的指针) 。(2)刚开始删除结点时,只考虑到删除其本身结点的情况,而删除其

36、孩子结点的情况未考虑到,故在删除某些结点时使树出现了“断链”现象。故在程序代码中对删除某一结点进行操作时, 首先要判断此结点是否有孩子及兄弟,然后进行相应操作。(3)刚开始进行程序概要设计时,曾考虑到用控制台下的文本方式作为程序界面,实际操作后发现并不理想。 一方面字符形式的界面友好性较差,另一方面显示整个家谱树的信息时不方便。 故考虑用 VC+中 MFC类自带的树型控件显示家谱层次,而用列表控件显示家谱中的信息。用后效果专业整理知识分享完美 WORD 格式不错。6.3测试结论(1)按下按钮“打开家谱” ,打开一个家谱文件( *.ftf)专业整理知识分享完美 WORD 格式( 2)按下按钮“新

37、建家谱” ,新建一个家谱文件( *.ftf)(3)按下按钮“保存家谱” ,将修改过的家谱保存(4)按下按钮“另存家谱”,将修改过的家谱另存为一个家谱文件(*.ftf)(5)按下按钮“删除该人” ,将树型控件中选中的成员及其后代删除专业整理知识分享完美 WORD 格式( 6)按下按钮“增加孩子” ,给树型控件中选中的成员增加一个孩子(7)按下按钮“更改资料” ,更改树型控件中选中的成员的资料专业整理知识分享完美 WORD 格式( 8)按下按钮 “按照姓名查找”,将家谱中特定名字的成员的信息显示在列表控件中(9)按下按钮“确定两人关系” ,将家谱中某两人的关系显示出来(10)按下按钮“出生日期排序

38、” ,将家谱中的所有成员按出生日期排序并显示在列表控件中专业整理知识分享完美 WORD 格式(11)按下按钮“按照生日查找” ,将家谱中特定日期出生的成员的信息显示在列表控件中(12)选择菜单项目“关于” ,显示该程序的版权信息(13)选择菜单项目“退出” ,结束该程序的运行第 7章结束语通过这次大作业,体会很深刻,将一直以来学到的东西都运用到实际上来,学以致用,对所学知识有了更深刻的理解, 同时还发现了许多平时在书本上没有遇见过的问题, 促进了自己对知识的渴望, 遇见了问题, 就希望能够通过查找课外书来解决它们。 刚接触题目的时候, 自己就有了一定的想法, 觉得这个程序做起来是问题不大的,

39、但到了自己真正开始编程的时候却发现远远没有想象中那么简单,很多细节的问题没有预想到, 很多关系的处理想得过于简单, 以至于实施起来遇到了很大的困难, 花了大量的时间。 同时还有一个比较深刻的体会就是要尽量多在源码上作注释, 以前编一些功能简单的程序, 总能很清楚每个函数和每个变量的作用, 但到了做这个大作业, 由于分开了各个功能板块去实现, 很多时候是做了后面就忘了前面, 后来意识到这个问题, 便开始在编程时加入注释, 而且是越详细越好, 这样做了以后, 很多时候需要查看自己原来写的源代码, 也能够很方便地了解了,跟上了思路,也方便以后的维护。关于这个程序的缺点方面,由于自己花的时间不是很多,

40、再加上知识有限,编写出来的界面不够友好 , 在功能上还是有不完善的地方,譬如说各项数据的统计还没有弄,数据的存储还不够理想等等。对于这个程序的改进, 我自己还是有不少想法的。 首先是需要加强数据的存储这方面的知识 , 使自己编写出来的程序能以一种标准的格式存储下来 , 方便以后其它程序的读取。总的来说,通过这次作业,收获还是挺多的,也发现了不少的问题,并给自己以后的学习指引了方向, 知道自己缺少哪方面的知识, 需要补充哪些知识等等。自己将会以这次作业为契机,看更多编程方面的书籍,不断充实自己的知识库。专业整理知识分享完美 WORD 格式参考文献数据结构( C语言版)清华大学出版社严蔚敏、吴伟民

41、编著 C至 Visual C+ 程序设计语言科学出版社蔡常丰、林小苹编著 Microsoft Visual C+ 6.0 高手速成兵器工业出版社步行者工作室编著 C+程序设计清华大学出版社谭浩强编著附录源程序文件名清单:Familytree.cpp& Familytree.h 主程序实现单元 FileOpenAndSaveDlg.cpp& FileOpenAndSaveDlg.h 文件输入输出实现单元OperationFamilytree.cpp& OperationFamilytree.h家谱操作实现单元StdAfx.cpp& StdAfx.h &Resourse.h MFC类实现及资源头文

42、件Familytree.rc& Familytree.rc2& Familytree.ico资源文件AddInfoDlg.cpp& AddInfoDlg.h增加成员的实现单元DelInfoDlg.cpp& DelInfoDlg.h删除成员的实现单元ModifyInfoDlg.cpp& ModifyInfoDlg.h修改成员资料的实现单元BirthdayDlg.cpp& BirthdayDlg.h按出生日期查找成员的实现单元PersonalInfoDlg.cpp& PersonalInfoDlg.h按姓名查找成员的实现单元RelationsDlg.cpp& RelationsDlg.h 显示成员关系的实现单元 SearchGenerationDlg.cpp& SearchGenerationDlgh 显示代数的实现单元专业整理知识分享

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!