数据结构-家谱管理系统
更新时间:2023-12-21 20:11:01 阅读量: 教育文库 文档下载
宁波大红鹰学院
项目名称:项目组长:项目成员:班级名称:专业名称:完成时间:信息工程学院
课 程 设 计 报 告
家谱查询系统 白钰琦
徐程凯、徐海域、项鸿伟
10计科1班 计算机科学与技术 2012年12月1日
信息工程学院制
- 1 -
目 录
一、案例描述........................................................................................................... - 3 -
1、总体描述...................................................................................................... - 3 - 2、模块描述...................................................................................................... - 3 - 二、设计思路........................................................................................................... - 3 - 三、程序设计........................................................................................................... - 4 -
1、数据结构描述.............................................................................................. - 4 - 2、主函数及其流程图...................................................................................... - 4 - 3、源程序.......................................................................................................... - 5 - 四、调试与分析....................................................................................................... - 5 -
1、主菜单........................................................................................................ - 10 - 2、显示家谱信息............................................................................................ - 11 - 3、显示家谱中第n代人所有信息................................................................ - 11 - 4、按姓名查找某人并相应输出.................................................................... - 11 - 5、按出生日期查找家谱成员信息.....................................错误!未定义书签。 6、为家谱中成员添加孩子信息.................................................................... - 12 - 7、为家谱中成员添加妻子信息.........................................错误!未定义书签。 8、删除家谱中成员及其后代信息.....................................错误!未定义书签。 9、修改家谱中成员信息................................................................................ - 12 - 10、确定家谱中两个成员关系...........................................错误!未定义书签。 11、按出生年月排序家谱 ...................................................错误!未定义书签。 五、设计总结......................................................................................................... - 13 -
1、完成情况.................................................................................................... - 13 - 2、心得体会.................................................................................................... - 13 -
- 2 -
一、案例描述
1、总体描述
家谱管理系统是查询家谱信息必不可少的一部分,利用家谱管理系统可以清楚的查询到家族成员的详细信息。该家谱管理系统是通过树来实现的。本程序具有插入、查找等功能,可以实现存放家谱中各成员的信息。程序的操作界面简洁美观,易于操作。本程序运用了函数、循环、树等知识来进行设计,实现系统和数据结构设计。 2、模块描述
1). 输入文件以存放最初家谱中各成员的信息,成员的信息中均应包含以下内
容:
姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡),也可附加其它信息、但不是必需的。
2). 实现数据的存盘和读盘。 3). 以图形方式显示家谱。
4). 显示第n 代所有人的信息。
5). 按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。 6). 按照出生日期查询成员名单。 7). 输入两人姓名,确定其关系。 8). 某成员添加孩子。
9). 删除某成员(若其还有后代,则一并删除)。 10).修改某成员信息。
11).按出生日期对家谱中所有人排序。
12).打开一家谱时,提示当天生日的健在成员。
主程序模块 菜单选择模块 树操作模块
图1 模块调用示意图
二、设计思路
本程序要求模块化管理,分成菜单函数、创建函数、添加函数、查找函数、控制各个部分从而将程序简单化出来分析。本程序的主要功能是:创建
- 3 -
数据:创建各相关数据,例如创建家谱信息。添加数据:增加家谱成员孩子信息。查询信息:按照姓名来查询成员信息,还可以通过输入出生日期来查询该家谱信息。退出系统:程序编译结束后退出系统。
三、程序设计
1、数据结构描述
本程序首先定义了结构体,定义了lc,rc两个指针域; 定义如下:
typedef struct BiTNode {
int mark;//标记 int level;
char name[50];//姓名
char birthday[50];//生日 char address[MAXN];//住址
int marriage;//婚否(true表示结婚,false表示没结婚) int live;//建在(true表示活着,false表示过世) int sex;//性别(true表示男,false表示女)
char livemassage[50];//死亡日期(如果其已经死亡) Elemtype data;//
struct BiTNode *lc,*rc; }BiTNode,*BiTree; 2、主函数及其流程图
Main LocateTime(); ShowFamilyTree(T); ShowNth(T); SearchByName(T); SearchByBirthday(T); AddChild(T); AddWife(T); DeleteByName(T); - 4 - 退出
图3 家谱管理流程图 CreateeTree()() 申请节点,int i=1 输入成员名Tree->Name,给定Node->Num 分配节点 输入成员名Tree->Name CreatTree(Node->NextNode[i]); Y i<=node->num N 结束
图4 创建家谱流程图 3、源程序
#include
char male[10]; char female[10];
int n;
struct pnode *fchild,*brother; }pnode,*ptree;
void creatfamily(ptree ,FILE ); void preorder(ptree p); void show(ptree p);
- 5 -
int Menu(){
system(\
system(\int i;
printf(\欢迎使用爱新觉罗家族管理系统*****************\\n\\n\printf(\请选择:\\n\printf(\printf(\printf(\printf(\
\\n\
1.读取一个家庭关系\\n\ \\n\
2.显示一个家庭关系\\n\
printf(\ \\n\
printf(\ 3.查找成员\\n\printf(\ \\n\
printf(\ 4.添加新成员\\n\printf(\ \\n\
printf(\ 5.修改成员\\n\printf(\ \\n\
printf(\ 6.保存\\n\printf(\ \\n\
printf(\ 7.退出系统\\n\\n\\n\printf(\ \\n\
printf(\n\\n\ printf(\输入1~6之间的数字选择相应功能:\ }
scanf(\return i;
ptree creatfamily(FILE *fp) {
if(!feof(fp)) {
ptree p;
p=(ptree)malloc(sizeof(pnode)); char fname[10],mname[10];
int i;
fscanf(fp,\
if((strcmp(fname,\ && (strcmp(mname,\ && (i==0)) { p=NULL; return p; }
else {
strcpy(p->male,fname);
- 6 -
strcpy(p->female,mname); p->n=i;
printf(\读取成功\\n\ p->fchild=creatfamily(fp); p->brother=creatfamily(fp);
return p;
} } }
void PreOrder(ptree p) {
if(p) {
show(p);
PreOrder(p->fchild); PreOrder(p->brother);
} }
void show(ptree p)
{
printf(\名字 配偶 第几代\\n\
printf(\}
void search(ptree p,char name[]) {
if(p) {
if(strcmp(p->male,name)==0) {
show(p); getchar(); getchar();
}
search(p->fchild,name); search(p->brother,name); } }
void add(ptree p,char name[]) {
char fname[10],mname[10]; int i;
if(p) {
if(strcmp(p->male,name)==0)
- 7 -
{
printf(\名字 配偶 第几代\\n\ scanf(\ p->fchild=(ptree)malloc(sizeof(pnode)); strcpy(p->fchild->male,fname); strcpy(p->fchild->female,mname); p->fchild->n=i;
p->fchild->fchild=NULL; p->fchild->brother=NULL; }
add(p->fchild,name); add(p->brother,name); }
}
void gai(ptree p,char name[]) {
char fname[10],mname[10]; int i;
if(p) {
if(strcmp(p->male,name)==0) {
printf(\名字 配偶 第几代\\n\ scanf(\ strcpy(p->male,fname); strcpy(p->female,mname); p->n=i; }
gai(p->fchild,name); gai(p->brother,name); } }
void save(ptree p,FILE *stream) {
if(p)
{
fprintf(stream,\ save(p->fchild,stream); save(p->brother,stream); } else {
- 8 -
char out[20] = \ fprintf(stream,\ } }
int main() { int status; char name[10];
ptree p;
FILE *fp= fopen(\ while(1){
status=Menu(); switch(status)
{
case 1:
p=creatfamily(fp); getchar(); getchar(); break; case 2:
PreOrder(p); getchar();
getchar(); break; case 3: printf(\请输入搜索的名字\\n\
scanf(\search(p,name);
break; case 4: printf(\请输入要孩子的人\\n\
scanf(\add(p,name);
break; case 5: printf(\请输入要修该的人\\n\
scanf(\gai(p,name);
break; case 6: save(p,fp); getchar(); getchar(); break; case 7:
- 9 -
}
printf(\感谢使用本系统\\n\
fclose(fp); fclose(fp);
exit(0); //如果选择5,则退出循环终止程序 break;
default : printf(\您选择有误\\n\ }
getchar();
}四、调试与分析
1、主菜单
- 10 -
家谱管理系统的主界面
2、显示家谱信息
读取家谱信息
3、显示家谱中第n代人所有信息
显示家谱中第n代人所有信息
4、按姓名查找某人并相应输出
- 11 -
查询家谱成员信息的界面
5、为家谱中成员添加孩子信息
为家谱中成员添加孩子信息
6、修改家谱中成员信息
- 12 -
修改家谱中成员信息
五、设计总结
1、完成情况
进程 项目计划 总体方案 编写代码 实验报告 视频制作 整体完善 答辩 第1次课 第2次课 第3次课 第4次课 负责人 全体成员 全体成员 徐程凯 徐海域 白钰琦 全体成员 全体成员 2、心得体会
白钰琦:从这个项目中,我懂得了代码编写能力的提高不是一天两天的事,而是一个日积月累的过程。在不断地编写调试,是在提出问题解决问题的过程中慢慢提升起来的。所以,自己决定向编程高手看齐,多编程多提问多思考。在今后的时间里更加努力地学习。
徐程凯:在这个项目里我做了对家谱管理的系统分析。刚开始我们从网上下载好了我们需要的资料,通过取其精华去其糟粕,本来是想把系统整合的很完美,可是由于我c语言基础不太扎实,未能完成。也向同学请教,只能做到现在这个地步。通过这次课程设计,我对这个树的操作有了深刻的了解,对C语言也有了更
- 13 -
深刻的了解。但我们需要更深刻地思考其实质是什么。了解实验所需的基本程序,并用所学知识实现它。
徐海域:这次的项目我的主要任务是撰写实验报告,刚开始的几天我开始写项目描述,接着我也卡了下代码,关于树我懂的不多,看了以前的书,也是浑浑噩噩的。通过之前下载好的资料,我也试着去整合一些好的地方,不过未能完成。通过本次的项目我意识到自己知识的匮乏。在之后的日子里我会好好的补习知识。希望在下次的项目中可以完成的好点。
项鸿伟:这次课程设计着实让人头疼,我们多次运行了程序,很可惜许多功能无法实现,
这使我们非常的头疼,但是在百度强大的搜索下,我们找到了模版,经过了艰难的研究,我们终于完善了这个程序。
- 14 -
正在阅读:
数据结构-家谱管理系统12-21
论析房地产开发企业项目管理创新07-27
武汉市2018年中考化学试题(word版,含答案)01-30
建档立卡户档案09-01
历史文化名村保护规划说明书 - 图文11-15
模拟电子技术实验教学改革与探索06-23
中国科举制度的历史意义及解释05-28
2016年建筑工程项目管理复习题453403-25
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 家谱
- 数据结构
- 管理系统
- 什么是真正的香港危机
- 交通灯控制系统课程设计 - 图文
- 建设领域农民工工资支付管理暂行办法
- 小学生发展性评价实施方案
- 悬挑脚手架拆除安全技术交底(全) - 图文
- 现行医保政策实施对医院影响及对策探讨
- 7.14二年级奥数有几种走法
- 静态工作点稳定电路doc
- 三级人力资源管理师计算题汇总部分
- 施工组织设计(中青)
- 反腐倡廉网评文章
- 电大市场营销案例分析题答案
- 重大危险源监理细则 - 图文
- 民族认同感下的民族凝聚力-2019年精选文档
- 优秀范文:中国共产党员“保先”教育学习体会
- 贵金属交易师(高级)- 华夏银都 湖南华夏银都大宗商品 …
- 最新2018户籍迁移证明书怎么写-实用word文档(5页)
- 鲁科高中化学选修三2.4《分子间作用力与物质性质》教案
- 泄露天机--33位06年高考状元学习方法揭密
- 货币题目