课程设计报告格式
更新时间:2023-03-09 15:11:01 阅读量: 综合文库 文档下载
洛 阳 理 工 学 院
课 程 设 计 说 明 书
课程名称 数据结构
设计课题 家谱管理系统 专 业 计算机科学与技术 班 级 B110503 学 号 B11050311 姓 名 欧阳斌 完成日期 2013年6月11日
课 程 设 计 任 务 书
设计题目:家谱管理系统 设计内容与要求:
实现具有下列功能的家谱管理系统
1). 输入文件以存放最初家谱中各成员的信息,成员的信息中均应包含以下内容: 姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡),也可附加其它信息、但不是必需的。
2). 实现数据的存盘和读盘。 3). 显示家谱。
4). 显示第n 代所有人的信息。
5). 按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。 6). 按照出生日期查询成员名单。 7). 输入两人姓名,确定其关系。 8). 某成员添加孩子。
9). 删除某成员(若其还有后代,则一并删除)。 10).修改某成员信息。
11).按出生日期对家谱中所有人排序。
12).打开一家谱时,提示当天生日的健在成员。
建立至少30个成员的数据,以直观的方式显示结果,并提供文稿形式以便检查。 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:学生自己根据系统功能要求自己设计,但是要求相关数据要存储在数据文件中。测试数据:要求使用1、全部合法数据;2、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;
指导教师:
年 月 日
课 程 设 计 评 语
成绩:
指导教师:
年 月 日
洛 阳 理 工 学 院 课 程 设 计 报 告
【问题描述】
设计一个家庭族谱系统,使其满足以下条件:
1). 输入文件以存放最初家谱中各成员的信息。 成员的信息中均应包含以下内容:
姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡)也可附加其它信息、但不是必需的。 2). 实现数据的存盘和读盘。 3). 以图形方式显示家谱。
4). 显示第n 代所有人的信息。
5). 按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。 6). 按照出生日期查询成员名单。 7). 输入两人姓名,确定其关系。 8). 某成员添加孩子。
9). 删除某成员(若其还有后代,则一并删除)。 10).修改某成员信息。
11).按出生日期对家谱中所有人排序。
12).打开一家谱时,提示当天生日的健在成员。
【基本要求】
建立至少30个成员的数据,以直观的方式显示结果,并提供文稿形式以便检查。 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:学生自己根据系统功能要求自己设计,但是要求相关数据要存储在数据文件中。测试数据:要求使用1、全部合法数据;2、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明; 【测试数据】
【算法思想】
抽象数据类型兄弟孩子树的定义如下: ADT CSNode{
数据对象:person是兄弟孩子树中的每一个节点,T是整个树的统一体
数据关系:R1={<personi-1,personi>|<personi-1,personi>表示personi-1和
personi之间有血缘关系}
基本操作:
CSNode *CreatTree(fstream &outfile);
初始条件:已经打开了文本文件PersonInfo.txt
操作结果:创建一个兄弟孩子树T,并把从文件中的数据送到树中,关闭文件。
void CreatParent_step(CSNode *parent);
初始条件:兄弟孩子树T已经存在
操作结果:对所有的孩子节点添加指向父亲的指针 void InOrderTraverse(CSNode *T); 初始条件:兄弟孩子树T已经存在 操作结果:对T进行中序遍历。
1
洛 阳 理 工 学 院 课 程 设 计 报 告
bool Today_Brithday(CSNode *T); 初始条件:兄弟孩子树T已经存在
操作结果:根据计算机系统的时间判断几天是否有人过生日,并显示他们的名字。
bool (int n,CSNode *T,LinkQueue &Q);
初始条件:兄弟孩子树T已经存在,队列Q也已经存在 操作结果:用队列Q返回第N代人的所有信息 void Link_Info(LinkQueue Q);
初始条件:队列Q中是第N代人的所有信息 操作结果:显示队列中所有人的信息。
CSNode *DetectMember_Name(CSNode *T,char name[]); 初始条件:兄弟孩子树T已经存在
操作结果:根据输入的姓名进行查找,如找到则返回该节点的指针。 CSNode *DetectMember_BornDate(CSNode *T,Date date); 初始条件:兄弟孩子树T已经存在
操作结果:根据输入的出生日期进行查找,如找到则返回该节点的指针。 void OutputOneInfo(CSNode *T); 初始条件:采集到一个节点T
操作结果:显示这一个节点的所有信息。 void Output_Name_Relation(CSNode *T); 初始条件:采集到一个节点T
操作结果:显示这一个节点的父亲和孩子的所有信息。 void Delete_Member(CSNode *T,char name[]); 初始条件:兄弟孩子树T已经存在
操作结果:根据输入的姓名进行查找,如找到则删除该节点和他所有的
孩子节点。
void Edit_Member_Info(CSNode *T,char name[]); 初始条件:兄弟孩子树T已经存在
操作结果:根据输入的姓名进行查找,如找到则根据用户要求修改相应
的信息。
bool Add_New_Child(CSNode *T); 初始条件:兄弟孩子树T已经存在
操作结果:根据输入的姓名进行查找,如找到则在他的孩子树中添加新
的孩子节点。
void InOrderInfile(CSNode *T,fstream &infile);
初始条件:兄弟孩子树T已经存在,且已经打开了文本文件
PersonInfo.txt
操作结果:把现在的数据读入文件中,关闭文件。 bool Generation(CSNode *T,CSNode *child); 初始条件:兄弟孩子树T已经存在 操作结果:判断child是否是T的后代,如果是返回true,否则返回false。 void Output_Two_Member_Realtionship(CSNode *T,char name1[],char
name2[]);
2
洛 阳 理 工 学 院 课 程 设 计 报 告
初始条件:兄弟孩子树T已经存在
操作结果:根据已经输入的两个姓名进行查找和判断,确定他们的关系。 void InOrderIn(CSNode *T,CSNode S[],int &num); 初始条件:兄弟孩子树T已经存在
操作结果:对T进行中序遍历,并且把每一个节点信息送到数组S中,
num为S中成员个数。
void LineChars(CSNode S[],int num); 初始条件:节点数组S已经存在
操作结果:对数组的节点信息按照出生日期进行排序,采用的是基数排序 }ADT CSNode
抽象数据类型队列的定义如下: ADT LinkQueue{
数据对象:D={ei| i=1,2,3,…,n;n≧0;ei∈LinkQueue}
数据关系:R1={<ei-1, ei>|<ei-1,ei>表示ei-1和ei之间有先后顺序关系} 基本操作:
bool InitQueue(LinkQueue &Q); 操作结果:创建一个空的队列Q。 bool DestroyQueue(LinkQueue &Q); 初始条件:队列Q存在
操作结果:销毁队列Q,Q不再存在。 bool EnQueue(LinkQueue &Q,CSNode e); 初始条件:队列Q存在
操作结果:插入元素e为Q的新的队尾元素。 bool ClearQueue(LinkQueue &Q); 初始条件:队列Q存在 操作结果:清空队列Q。
bool QueueEmpty(LinkQueue Q); 初始条件:队列Q存在
操作结果:若队列为空,则返回true,否则返回false。 bool DeQueue(LinkQueue &Q,CSNode &e); 初始条件:队列Q存在
操作结果:删除Q的队头元素,并用e返回其值,并返回true。 int QueueLength(LinkQueue Q); 初始条件:队列Q存在
操作结果:返回队列Q的长度。
bool GetHead(LinkQueue Q,CSNode &e); 初始条件:队列Q存在
操作结果:用e返回队首元素,并返回true。 } ADT LinkQueue
小四宋体,行间距单倍行距
【模块划分】
3
洛 阳 理 工 学 院 课 程 设 计 报 告
1). 输入文件以存放最初家谱中各成员的信息,成员的信息中均应包含以下内容:
1 创建模块:void CreatTree(TreeNode *Node) 1 修改模块:void Change(TreeNode * Tree) 2 添加模块:void AddNew(TreeNode * Tree)
3 查询模块:TreeNode * SearchTree(TreeNode *Tree,char name[],int length) 4 输出模块:(1)void OutPutAll(TreeNode *Tree)
(2)void OutPutMessage(TreeNode * Tree,char name[],int length) 5菜单模块:(1) void MainMenue(TreeNode *Tree); (2)void SubMenue1(TreeNode * Tree); (3)void SubMenue2(TreeNode *Tree);
这次课程设计,家谱系统的设计,着实让人头疼,不过还好,老师的要求并不是要求每位同学各做一个,而是要求我们四人一组来完成这个作业,我们小组四人也不是这方面的强人,所以做起来有一定难度。但是我们通过查阅资料,以及借鉴同学制作的链表,另外还有同学的讲解,我们克服了这方面的困难。另一重要方面就是小组成员之间的合作,怎样协调大家共同做好一件事情的问题,只有参与此过程才会体会到团队合作所带来的快乐。
总之,我们四人一起讨论了程序实现过程中所出现的问题,大家根据各自的意见共同对程序加以改进。知识要附之于实践相结合,这次作业让我们收获颇丰。
否、健在否,也可附加其它信息、但不是必需的。 2). 实现数据的存盘和读盘。 3). 显示家谱。
4). 显示第n 代所有人的信息。
5). 按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。 6). 某成员添加孩子。
7). 删除某成员(若其还有后代,则一并删除)。
4
洛 阳 理 工 学 院 课 程 设 计 报 告
8).修改某成员信息。
【数据结构】
小四宋体,行间距单倍行距
【测试情况】
小四宋体,行间距单倍行距
【心得】
小四宋体,行间距单倍行距
【源程序】
5号,Times New Roman
5
正在阅读:
课程设计报告格式03-09
新人教版初中物理9年级全一册各章每节课节(共39节课)达标训练题 - 图文03-12
关于开展基层政权社区建设检查调研的通知12-23
江苏13市全国重点文物保护单位名录04-18
ok高分子材料成型加工原理复习课提纲10-06
ios开发之FTCoreText的使用06-18
移动式压力容器充装许可申请书03-20
记忆中的温暖主题优秀作文精品例文08-02
锦溪镇统计工作流程图07-27
浅谈数学思维和方法在初中物理中的应用04-14
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 课程
- 格式
- 报告
- 设计
- 乳腺癌术后出血临床分析
- 小学低年级德育工作总结
- 国基城邦三期监理规划 - 图文
- 数列公式性质总结
- 程序员7年和我的7点感想
- 12月英语六级考试攻克语法必备练习(9)
- 2016-2022年中国果糖产业调研报告(目录) - 图文
- 舟山市人民政府关于印发《舟山市城市房屋拆迁管理暂行办法》的通
- 市场部工作手册-最全
- 小学低年级德育个人工作总结(精选多篇).doc
- 思科光交常用命令汇总
- 瑞基RJ电动门作业指导书 - 图文
- 天平铁路隧道人工敲击检查方案 - 图文
- 温度和水蒸汽分压对照表
- 宠物小精灵黑白二周目老宠简要捕捉地点
- 届高考政治第一轮复习第一单元生活与消费限时检测新人教版必修1
- 第二章 金融资产-答案 当时没有发这套题
- 翟老师作文课时四--写人作文
- 职业技能实训《政治经济学》参考答案
- 经济数学模型