家谱管理系统设计.docx

上传人:b****5 文档编号:6491333 上传时间:2023-01-07 格式:DOCX 页数:14 大小:410.50KB
下载 相关 举报
家谱管理系统设计.docx_第1页
第1页 / 共14页
家谱管理系统设计.docx_第2页
第2页 / 共14页
家谱管理系统设计.docx_第3页
第3页 / 共14页
家谱管理系统设计.docx_第4页
第4页 / 共14页
家谱管理系统设计.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

家谱管理系统设计.docx

《家谱管理系统设计.docx》由会员分享,可在线阅读,更多相关《家谱管理系统设计.docx(14页珍藏版)》请在冰豆网上搜索。

家谱管理系统设计.docx

家谱管理系统设计

 

《软件综合设计》

家谱管理系统

 

院系:

计算机科学技术学院二系

班级:

计11–2班

姓名:

刘文秀(15)

合作者:

姜雪(05)、岳奉宜(33)

指导教师:

薛曼玲

 

2013年12月01日

《软件综合设计》任务书

一、题目:

家谱管理系统

二、设计要求

(1)刘文秀(组长)、姜雪和岳奉宜组成课程设计小组。

(2)小组成员分工协作完成。

要求每个成员有自己相对独立的模块,,同时要了解其他组员完成的内容。

(3)查阅相关资料,自学具体课题中涉及到的新知识。

(4)采用结构化、模块化程序设计方法设计,功能要完善,界面美观。

(5)所设计的系统应有菜单、动画和音乐。

(6)按要求写出课程设计报告,并于设计结束后1周内提交。

其主要内容包括:

封皮、课程设计任务书,指导教师评语与成绩、目录、概述、软件需求分析、总体设计、详细设计、程序的调试与测试、总结与体会、结束语、程序清单(带中文注释)、参考文献等。

报告一律用A4纸打印,正文的中文字体为宋体,西文字体用TimeNewRoma,一律用小四号字,行距采用“固定值”18磅,首行缩进2字符。

1级标题中文字体为黑体,西文字体为TimeNewRoma,采用三号字;段落为居中、段前18磅、段后12磅、行距采用“固定值”18磅,首行缩进:

无,段中不分页,与下段同页。

仅一级标题上目录。

三、课程设计工作量

由于是设计小组团结协作完成设计任务,一般每人的程序量在400行有效程序行以上,不得抄袭。

四、课程设计工作计划

2013年12月2日,指导教师讲课,学生根据题目准备资料,需求分析;

2013年12月3日,设计小组进行总体方案设计和任务分工;

2013年12月4日~2013年12月10日,每人完成自己承担的程序模块并通过独立编译;

2013年12月11日~12日,将各模块集成为一个完整的系统,并录入足够的数据进行调试运行;

2013年12月13日,验收、开始撰写课程设计报告;

2013年12月18日前,提交课程设计报告和软件。

指导教师签章:

教研室主任签章

指导教师评语与成绩

指导教师评语:

 

课程设计验收成绩:

课程设计报告成绩:

课程设计总成绩:

指导教师签章

年月日

 

 

第1章概述

课题研究的目的和技术发展现状

本《家谱管理系统》是以电子家谱的形式记载父系家族世袭、人物为中心。

电子能准确记录家族成员出生卒年,以及生活地点、家庭成员等信息。

一般情况下是不会出现信息丢失情况。

更不需要担心传统家谱随着年代的久远字迹不清晰,有破损等情况的出现。

所以本课题的研究目的是让大家不但能够非常容易的记录家族情况,而且能清楚的了解本家族信息,使用起来非常方便。

现有的计算机技术足以支撑电子家谱的开发。

家谱的科学管理不但有助于民族文化和地方文化的发展,而且有其自身的积极意义。

例如本电子家谱是利用VisvalC++开发完成的。

电子家谱的出现无疑让家谱焕然一新,但是传统家谱更能凸显出历史的韵味,文化的内涵。

这是电子家谱所不能够替代的,电子家谱不可能成为文物。

开发人员应该清楚的认识到这一点。

课题研究的主要内容

家谱,又称族谱、祖谱、宗谱等。

一种以表谱形式,记载一个以血缘关系为主题的家族世系繁衍。

本课题研究的主要内容是以电子家谱的形式记录、查询父系家族历史信息为主要内容。

课题研究的难点

建立输入文件以存放最初家谱中各成员的信息,以及能够对修改后的家谱存盘以备以后使用。

用户界面的设计不够完美。

功能上的设计难度很大。

 

第2章需求分析

性能需求

系统的核心是利用对话框的连接和文本处理来存储和修改家族管理系统的信息联系,其中的每一个动作都可能影响到其他的功能。

使用方便,易于传播,数据共享等性能。

易于维护。

功能需求

建立输入文件以存放最初家谱中各成员的信息。

成员的信息中均应包含以下内容:

姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡)也可附加其它信息、但不是必需的。

能对修改后的家谱存盘以备以后使用。

能从文件中读出已有的家谱,形成树状关系。

家谱建立好之后,以图形方式显示出来。

显示第n代所有人的信息。

按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。

按照出生日期查询成员名单。

输入两人姓名,确定其关系。

某人添加孩子。

删除某人(若其还有后代,则一并删除)。

修改某人信息。

按出生日期对家谱中所有人排序。

打开一家谱时,若家谱中某人的生日在打开家谱的那一天,应给出提示。

第3章可行性分析

经济可行性分析

对系统开发规模进行估算属此软件项目属于小规模软件开发。

所以开发人员三到五人即可。

开发,维护等成本相对较低。

所以从经济可行性分析的角度来看此《家谱管理系统》适于开发。

技术可行性分析

根据软件系统功能、性能要求的各项约束条件从技术的角度实现系统的可行性。

家谱信息以树的形式一次读入内存,而个人的各种资料虽然目前条目不多,但随着程序的升级,以后可能越来越大。

我把树形结构和个人信息记录的文档分为两个文件保存在外存中,一个文件串行化的记录家谱树的结构化信息,保持少量个人信息作为识别标志;另一个文档保存完整的个人信息。

索引时,以树形中的少量信息为依据在另一个文件中找到全部个人信息资料。

第4章概要设计

程序设计的基本思想

《家谱管理系统》的总体设计思路是先为程序搭建好一个人结构框架,家庭成员之间的关系,用树形结构(家族树)表示,这是本《家谱管理系统》的逻辑结构。

根据MFC的特点,采用CfamilytreeDlg类实现用户窗口界面指令对于家谱的各种操作。

有文件控制和家谱控制两大模块,按生日查找、删除成员、文件输入输出、修改成员信息、按名字查找、成员关系显示、按代数显示等各种操作。

然后再根据需求分析逐步增强程序的功能和性能。

总体功能模块图

 

相关应用技术

1.定义“家谱”类型

2.用结构Date存储日期

3.用结构QuickSortNode存储快速排序数组值(为快速排序而设)

4.根据家谱的特点,采用孩子-兄弟的二叉树链表表示法(链表的基本单位为以结构PersonNode表示的结点),各种操作以COperationFamilytree类来实现。

5.根据MFC的特点,采用CfamilytreeDlg类实现用户窗口界面指令对于家谱的各种操作。

 

第5章详细设计

日期信息的合法性检验

图5-1日期信息的合法性检查

IntCOperationFamilytree:

:

ReadNode(FILE*fp,Person&T,char*parentname)

{

neself);

delete[]order;

}

voidCOperationFamilytree:

:

SortByBirthday(QuickSortNode*order)

{

irthday;irthday,pivotkey)==1

||CompareDate(order[high].birthday,pivotkey)==0))

--high;

order[low]=order[high];irthday=order[high].birthday;neself=order[high].oneself;

while(low

||CompareDate(order[low].birthday,pivotkey)==0))

++low;

order[high]=order[low];.high]作快速排序

intpivotloc;

if(low

QuickSort(order,low,pivotloc-1);irthday=T->;

(*order).oneself=T;

order++;

CopyInfoFromBiTreeToArray(T->child,order);

CopyInfoFromBiTreeToArray(T->sibling,order);

}

}

由兄弟、孩子二叉树生成家谱文件

voidSaveNode(FILE*fp,Person&pNode)

{

tf)

(2)按下按钮“新建家谱”,新建一个家谱文件(*.ftf)

(3)按下按钮“保存家谱”,将修改过的家谱保存

(4)按下按钮“另存家谱”,将修改过的家谱另存为一个家谱文件(*.ftf)

(5)按下按钮“删除该人”,将树型控件中选中的成员及其后代删除

(6)按下按钮“增加孩子”,给树型控件中选中的成员增加一个孩子

 

(7)按下按钮“更改资料”,更改树型控件中选中的成员的资料

(8)按下按钮“按照姓名查找”,将家谱中特定名字的成员的信息显示在列表控件中

(9)按下按钮“确定两人关系”,将家谱中某两人的关系显示出来

(10)按下按钮“出生日期排序”,将家谱中的所有成员按出生日期排序并显示在列表控件中

(11)按下按钮“按照生日查找”,将家谱中特定日期出生的成员的信息显示在列表控件中

(12)选择菜单项目“关于”,显示该程序的版权信息

(13)选择菜单项目“退出”,结束该程序的运行

 

第7章结束语

通过这次大作业,体会很深刻,将一直以来学到的东西都运用到实际上来,学以致用,对所学知识有了更深刻的理解,同时还发现了许多平时在书本上没有遇见过的问题,促进了自己对知识的渴望,遇见了问题,就希望能够通过查找课外书来解决它们。

刚接触题目的时候,自己就有了一定的想法,觉得这个程序做起来是问题不大的,但到了自己真正开始编程的时候却发现远远没有想象中那么简单,很多细节的问题没有预想到,很多关系的处理想得过于简单,以至于实施起来遇到了很大的困难,花了大量的时间。

同时还有一个比较深刻的体会就是要尽量多在源码上作注释,以前编一些功能简单的程序,总能很清楚每个函数和每个变量的作用,但到了做这个大作业,由于分开了各个功能板块去实现,很多时候是做了后面就忘了前面,后来意识到这个问题,便开始在编程时加入注释,而且是越详细越好,这样做了以后,很多时候需要查看自己原来写的源代码,也能够很方便地了解了,跟上了思路,也方便以后的维护。

 

关于这个程序的缺点方面,由于自己花的时间不是很多,再加上知识有限,编写出来的界面不够友好,在功能上还是有不完善的地方,譬如说各项数据的统计还没有弄,数据的存储还不够理想等等。

  

对于这个程序的改进,我自己还是有不少想法的。

首先是需要加强数据的存储这方面的知识,使自己编写出来的程序能以一种标准的格式存储下来,方便以后其它程序的读取。

 

总的来说,通过这次作业,收获还是挺多的,也发现了不少的问题,并给自己以后的学习指引了方向,知道自己缺少哪方面的知识,需要补充哪些知识等等。

自己将会以这次作业为契机,看更多编程方面的书籍,不断充实自己的知识库。

参考文献

《数据结构(C语言版)》——清华大学出版社——严蔚敏、吴伟民编著

《C至VisualC++程序设计语言》——科学出版社——蔡常丰、林小苹编著

《MicrosoftVisualC++高手速成》——兵器工业出版社——步行者工作室编著

《C++程序设计》——清华大学出版社——谭浩强编著

 

附录

源程序文件名清单:

&——主程序实现单元

&——文件输入输出实现单元

&——家谱操作实现单元

&&——MFC类实现及资源头文件

&&——资源文件

&——增加成员的实现单元

&——删除成员的实现单元

&——修改成员资料的实现单元

&——按出生日期查找成员的实现单元

&——按姓名查找成员的实现单元

&——显示成员关系的实现单元

&SearchGenerationDlgh——显示代数的实现单元

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1