数据结构大作业(级)
提交时间: 2012年6月3日前
提交方式: 各班同学在提交时间之前将压缩文件分别提交给本
班的学习委员,学委按班级名称建立文件夹,然后统一刻盘(两
个班可以刻到一张光盘上),交给助教老师,联系方式( qq: 0)
提交内容: 源程序、文档
提交方式:每个人独立完成一个选题,每个人所有的文件放到一
个文件夹中,压缩成 .rar文件,文件名为:姓名_学
号_班级
文档要求:
1. 对问题的分析、所选用的数据结构及理由、所选方法的优点及问题。
2. 程序模块的构成及功能、特殊技巧的说明。
3. 程序运行结果及结果分析。
4. 交互式程序需说明使用方法;输入的参数个数、类型及实例。
代码要求:统一用C++语言编写,尽量不要调用C++语言提供的
库函数(如栈、队列),也不允许用数据库软件来实现。
说明:
“数据结构课程设计(大作业)”是与“数据结构”课程配套的实践性课程。
其目的是让学生运用所学的“数据结构”课程知识,编写一个解决实际问题的大
型或中等规模的计算机程序,使学生掌握综合运用数据结构与算法的知识和方
法。这里选择4个题目列出,具体作业只要求选择一个完成,基本要求必作,扩
展要求和增强要求为选作。数据结构大作业跟数据结构课程是分开的,具有独立
的1个学分,
请同学们按时提交,不要延迟时间,否则影响该独立
学分的成绩。
(一)、图书信息管理系统
1.问题阐述:
某校图书馆需要一套图书信息管理系统,图书管理员用此系统记录和处理图
书、作者和出版社信息。(注:一本图书可以有多个作者,一个作者可以编写多
本图书)。需存储的信息包括:图书号、图书名;作者号、作者姓名;出版社号、
出版社名;现存量和总库存量。
2.基本要求
基本业务活动包括:
1)
对一本书进行采编入库、清除库存、借阅、和归还等。
i. 采编入库:
新购入一种书,经分类和确定书号之后登记到图书帐目中去。如果
这种书在帐中已有,则只将总库存量增加。
ii. 清除库存:
某种书已无保留价值,将它从图书帐目中注销。
iii. 借阅:
如果一种书的现存量大于零,则借出一本,登记借阅者的图书证号
和归还期限,改变该书的现存量。
iv. 归还:
注销对借阅者的登记,改变该书的现存量。
2)
查询图书信息:
i. 按书名查询:如查找所有书名为“数据结构”的图书。
ii. 按作者姓名查询:如查找所有“张三”编写的图书。
iii. 按出版社名查询:如查找所有“机械工业出版社”出版的图书。
iv. 以上条件的各种组合查询:
如查找所有“张三”编写的、由“机械工业出版社”出版的图书。
(二)停车场管理系统
1.问题描述
设停车场内只有一个可以停放n俩汽车的狭长通道,且只有一个大门可供
汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大
门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆
车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第
一辆车即可开入。当停车场内某辆车要离开时,在它之后进入的车辆必须退出车
场为它让路,待该车辆开出大门外,其他车辆再按原次序进入车场,每辆停放在
车场的车在它离开停车场时必须按它停留的时间长短交纳费用。整个停车场的示
意图如下图所示。要求设计一个程序,为停车场编制按上述要求进行管理的程序。
2.基本要求
1) 以栈模拟停车场,以队列模拟车场外便道,按照从终端读入的输入数据
序列进行模拟管理。
2) 每一组输入数据包括三个数据项:汽车“到达”(用1表示)或“离开”
(用2表示)的信息、汽车牌照号码以及到达或离去的时刻。
3) 对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽
车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留
的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队
列以顺序循环结构实现。
4) 另外还需要设一个临时栈,用于临时存放为要给离去的汽车让路而从停
车场退出来的汽车,也用顺序结构实现。
5) 用户输入的命令有以下5种:
a. 汽车到达
b. 汽车离去
c. 输出停车场中所有汽车牌号
d. 输出便道上所有汽车牌号
e. 退出系统运行。
(三)家谱管理系统设计与实现
1.问题阐述:
家谱用于记录某家族历代家族成员的情况与关系。本课程设计要求设计并实
现一个计算机软件,支持对家谱的存储、更新、查询、统计等操作。
2.基本要求
内部要求:要求将家谱信息看作树形结构处理,并可存储在外存。数据可一次读
入内存;
外部要求:这一级要求系统具备下列基本功能:
1)家庭成员信息存储:将每个家庭成员的基本信息存储在计算机中(可永
久保存)。家庭成员的基本信息至少应包括:
(姓名,出生地,出生日期,死亡日期,性别,身高,学历,职业,最高职
务/职称,…);
2)家族关系存储:将各家庭成员之间的关系,存储在计算机中(可永久保
存);
3)更新:家谱数据的更新(修改、删除、加入);D)输出:将家谱以较友
好的格式输出(显示);
4)查询:按基本信息查询成员,按亲戚关系查询;
3.增强要求
A)统计:统计并打印(显示)结果,统计的项目有:平均寿命、平均身高、
男女比例、家庭平均人口、平均(最高/低)学历、… …
4.扩展要求
内部要求:数据较大时,不一次读入内存,采用分块读入;
外部要求:这一级要求系统具备下列基本功能:屏幕显示树形(类似Windows 目
录)、全屏可视化操作、支持鼠标;
5.设计提示
家庭成员基本信息用线性表表示,程序结束后存储在磁盘上,程序开始是从
磁盘读出;
家庭成员之间的关系,用树形结构(家族树)表示;
家族树在程序结束后存储在磁盘上,程序开始是从磁盘读出;
树在内存中的存储结构:邻接表或孩子兄弟链,带父指示器;
家庭成员基本信息设置数字编号,用于唯一地标识记录;
树结点用家庭成员的编号标识。通过编号,建立家庭成员的基本信息与树结
点的联系;
树在磁盘文件中的存储结构:存储串行化结果,如“根-叶序列”;
所谓“根-叶序列”,是指,从树根到每个叶子结点的路径。路径的排列次序
表示兄弟的次序。例如,下图表示的树的“根-叶序列”为:
1, 2, 4
1, 2, 6
1, 2, 8, 5(这三行的次序,表示4,6,8的次序,即4,6,8分别是2的第
1,2,3个孩子)
1, 7
1, 3, 9
1, 3, 10
(四)航空客运订票系统
1.问题描述
航空客运订票的业务活动包括:查询航线、客票预订和办理退票等。试设计
一个航空客运订票系统,以使上述业务可以借助计算机来完成。
2.基本要求
1). 每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日(星期
几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位
等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量);
2). 全部数据可以只放在内存中;
3). 系统能实现的操作和功能如下:
a) 查询航线:
根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,
最近一天航班的日期和余票额;
1
2
3
4
10
9
7
6
8
5
b) 承办订票业务:
根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚
有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于定票
额,则需重新询问客户要求。若需要,可登记排队候补;
c) 承办退票业务:
根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询
该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他
的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。
3. 增强要求
当客户订票要求不能满足时,系统可向客户提供到达同一目的地的其他
航线情况。
《数据结构》连远锋
2009 至2010 学年第二学期
教学日历
课程名称数据结构性质选修
总学时64讲课56实验8其它
授课班级电子07 学生人数44
任课教师连远锋职称讲师
所在院(系、部) 计算机科学与技术系
系(教研室)主任签字_________________________
教材名称:数据结构作者:严蔚敏、吴伟民
出版单位:清华大学出版社出版时间:1997年4月
中国石油大学(北京)教务处制
填写说明:
1.每上一次课填写一行,节次填写数字“1-5”,一天共分5大节课,例如:一周上三次课填写三行,并在周学时栏合并单元格填写“6”,周一第3、4节,在节次栏中填写2。
2.教学日历一经制订,不应出现大的变动,但允许主讲教师在完成课程教学大纲规定的教
学要求前提下,进行必要的调整,以适应不断出现的新情况。
如有变动,须经课程所属系主任(教研室主任)批准,并报院(系、部)办公室备查。
3.上机、大作业、课堂讨论、外出参观、考试等如占课内学时,在“备注”栏内注明。
4.教学日历由教师自存一份、课程所属系存一份,在每学期开学后第一周内送课程所属院(系、部)办公室并发一份电子版给课程所属院(系、部)办公室;有实验和上机学时的须发一份电子版的给实践科sjk@。
c语言大作业需要改进的地方
c语言大作业需要改进的地方对于C语言大作业的改进,可以从多个方面入手。
以下是一些可能的方向:1.算法和数据结构优化:如果大作业中的算法或数据结构不够高效,可能会导致程序运行时间过长或占用过多内存。
考虑是否有更高效的数据结构或算法来解决相同问题。
2.错误处理:加强错误处理可以使程序更健壮。
考虑增加更多的错误检查,以及在出现错误时提供有用的反馈信息。
3.代码可读性:良好的代码风格和注释可以使代码更容易阅读和维护。
注意变量命名、代码布局和注释的清晰度。
4.代码复用:如果有很多重复的代码片段,考虑将其封装为函数或模块,以提高代码复用率。
5.测试和调试:增加单元测试和集成测试可以确保代码的正确性。
同时,使用调试工具可以帮助定位和修复问题。
6.性能优化:如果程序运行缓慢,可以考虑优化性能。
例如,减少不必要的计算、使用更有效的数据结构或算法等。
7.文档和注释:为代码添加清晰的文档和注释可以帮助他人理解你的代码。
即使是自己将来回顾,也能更快地理解代码的逻辑。
8.用户界面:如果程序有用户界面,考虑是否友好易用。
如果没有用户界面,考虑是否有必要添加一个,以便用户更容易地使用程序。
9.安全性和健壮性:检查程序是否有可能受到恶意攻击或产生不期望的行为。
例如,检查缓冲区溢出、格式化字符串漏洞等常见问题。
10.可扩展性和模块化:如果计划对程序进行扩展或修改,考虑使其模块化,以便更容易地添加新功能或修改现有功能。
这只是一些基本的建议,具体改进方向应根据大作业的具体要求和遇到的问题来确定。
计算机程序设计基础 大作业 报告 猜价格游戏
STRING x1,x2,x; x1=DuplicateString("PlayerInfoOf "); x2=DuplicateString(".txt"); x=ConcatenateString(ConcatenateString(x1,s),x2); fp=Openfile(x,"w+"); …… fclose(fp);
4
输入整数,故只要考虑用户输入其他整数的情况。这里我给出的解决方法比较简
单:主菜单的模块选择,若用户输入 012345 之外的数字,一律返回主菜单;老 用户输入 1 清空记录输入 0 回主菜单的选择,若用户输入 01 之外的数字,都需 重新输入,否则程序会提示用户输入 0 或 1。
2、主菜单模块选择的算法 主要是 if 语句和 goto 语句结合。
5
4、文件的保存 本程序实现的是每一个用户都有一个属于自己的游戏信息存储文件,所有文 件里都只有 1 行信息,新的信息产生时会覆盖原信息。 这样,文件名必须和用户名相关,系统才能从文件名直接判断出这是哪个用 户的信息文件。下面是将文件名和用户名关联起来的算法,s 是用户名,主要是 利用了文件名也是字符串这一点。
软件工程大作业(2)(答案)
软件工程大作业(2)(答案)软件工程作业第二部分一、填空1.结构化分析方法的分析策略是___自顶向下逐步求精_______。
2.衡量模块独立性的两个定性标准是_耦合性与内聚性________。
3.软件集成测试的方法主要有两种,它们是___渐增式与非渐增式测试_______。
4.继承性是子类自动共享其父类的__数据结构和方法____________机制。
5.在面向对象方法中,人们常用状态图描述类中对象的___动态行为________。
6.规定功能的软件,在一定程度上能从错误状态自动恢复到正常状态,则称该软件为____容错_____软件。
7.可行性研究的目的是用最小的代价在尽可能短的时间内确定该软件项目_是否值得开发_。
8.需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是__功能需求_。
9.软件生存周期中时间最长、花费的精力和费用最多的一个阶段是__维护_____阶段。
10.对象之间进行通信叫做__消息_____。
11.计算机辅助软件工程这一术语的英文缩写为_CASE_______。
12.McCall提出的软件质量模型包括______11________个软件质量特性。
13.为了便于对照检查,测试用例应由输入数据和预期的___输出结果____两部分组成。
14.软件结构是以____模块__________为基础而组成的一种控制层次结构。
15.结构化语言(PDL)是介于自然语言和____形式语言____之间的一种半形式语言。
16.软件概要设计的主要任务就是__软件结构的设计______。
17.结构化程序设计方法是使用___三种基本控制结构____构造程序。
18.软件开发是一个自顶向下逐步细化和求精过程,而软件测试是一个__自底向上或相反顺序 _____集成的过程。
19.在建立对象的功能模型时,使用的数据流图中包含有处理、数据流、动作对象和__数据存储对象_____。
二、选择1.UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法( C )A、基于瀑布模型的结构化方法B、基于需求动态定义的原型化方法C、基于对象的面向对象的方法D、基于数据的数据流开发方法2.面向对象的开发方法中,(B)将是面向对象技术领域内占主导地位的标准建模语言。
工厂数据库管理系统-华工数据库大作业(含源文件)之欧阳理创编
课程设计任务书课程名称:数据库系统原理设计题目:工厂数据库管理系统已知技术参数和设计要求:需求说明及要求题目:工厂数据库管理系统一、工厂管理数据库工厂需建立一个管理数据库存储以下信息:*工厂信息包括工厂代号,工厂名,厂长名及工厂运营开销。
*一个厂内有多个车间,每个车间有车间号、车间主任姓名、地址,电话及每个月的车间运营开销。
*一个车间有多个工人,每个工人有职工号、姓名、年龄、性别,工种及月工资。
*一个车间生产多种产品,产品有产品号、产品名、规格,制造成本和销售价格。
*一个车间生产多个零件,一个零件也可能由多个车间制造。
零件有零件号、零件名,制造成本和销售价格。
*一个产品由多个零件组成,一个零件也可装配出多种产品。
*产品与零件均存入仓库中。
*厂内有多个仓库,仓库有仓库号,仓库主任姓名、电话及仓库的运营成本。
应完成的主要功能:(1)各种各样的管理功能,如工厂信息的管理功能,包括录入、修改、查询、输出工厂的信息;车间信息的管理功能,包括录入、修改、查询、输出车间的信息;还有工人,零件,产品,仓库等的信息管理功能。
(2) 工厂的利润统计,包括月利润和年利润统计。
(3) 能输出各种各样的报表,如工人工资月报表,年报表;每个车间生产的产品和零件数量的月报表;仓库存储产品和零件数量的月报表;工厂运营开销和车间运营开销的月报表等。
二、开发环境数据库选用微软的SQL SERVER。
开发环境可以选择:(1)Delphi;(2)Visual Basic; (3) C++ builder; (4) Visual C++。
只选择其中的一种软件开发工具就可以。
三、基本要求(1)完成问题陈述中所提到的所有需求功能(2)要求撰写不少于2500个文字的文档。
(3)文档中至少要包括:ER模型图、系统功能图、数据字典、表关系的详细说明。
(4)用户界面设计:采用窗口式,色彩要柔和,界面要友好,操作要简单。
(5)用户手册,描述软件系统所具有的功能及基本的使用方法。
软件工程大作业(答案)
3
A、数据流 B、数据流图 C、数据库 D、数据结构
105.数据流图中,当数据流向或流自文件时(B )。
A、数据流要命名,文件不必命名
B、数据不必命名,有文件名就足够了
C、数据流和文件均要命名,因为流出和流进的数据流是不同的
D、数据流和文件均不要命名,通过加工可自然反映出。
106.结构化程序设计主要强调程序的(C )。
聚称为偶然内聚。 77. 一个模块直接调用的模块数目称为模块的扇出,一个模块被多少上级模块直接调用称为模块的扇
入。 78. 详细设计的工具有图形工具、表格工具和语言工具。 79. 为使用流程图描述结构化程序,限制流程图有五种基本的控制结构顺序型、选择型、while型循
环、until循环、多情况型选择。 80. IPO图由输入、处理和输出三个框组成。这个图的特点是能够直观的显示三者之间的关系。 81. 面向对象方法是一种运用对象、类、封装、聚合、消息传送、多态性等概念来构造系统的软件开
并估算每个不同之处对成本的影响,得出开发项目的总成本。这种成本估算方法称为差别估算法 ____。 三、 选择题 102.程序设计属于软件开发过程(C )阶段。 A、设计 B、编程 C、实现 D、编码 103.在软件的分析阶段,常用(C )来描述业务处理系统的信息来源、存储、处理和去向。 A、E-R 图 B、框图 C、DFD D、时序网络 104.结构设计是一种应用最广泛的系统设计方法,是以(A )为基础、自顶向下、逐步求精和模块化 的过程。
大工20秋《人工智能》大作业题目及要求精选全文
可编辑修改精选全文完整版学习中心:专业:年级:年春/秋季学号:学生:完整答案下载后可见题目:深度优先搜索算法1.谈谈你对本课程学习过程中的心得体会与建议?通过这学期的学习,我对人工智能有了一定的感性认识,个人觉得人工智能是一门极富挑战性的科学,从事这项工作的人必须懂得计算机知识,心理学和哲学。
人工智能是包括十分广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等等,总的说来,人工智能研究的一个主要目标是使机器能够胜任一些通常需要人类智能才能完成的复杂工作。
人工智能的定义可以分为两部分,即“人工”和“智能”。
“人工”比较好理解,争议性也不大。
有时我们会要考虑什么是人力所能及制造的,或者人自身的智能程度有没有高到可以创造人工智能的地步,等等。
但总的来说,“人工系统”就是通常意义下的人工系统。
关于什么是“智能”,就问题多多了。
这涉及到其它诸如意识、自我、思维等等问题。
人唯一了解的智能是人本身的智能,这是普遍认同的观点。
但是我们对我们自身智能的理解都非常有限,对构成人的智能的必要元素也了解有限,所以就很难定义什么是“人工”制造的“智能”了。
关于人工智能一个大家比较容易接受的定义是这样的:人工智能是人造的智能是计算机科学、逻辑学、认知科学交叉形成的一门科学,简称AI。
人类正向信息化的时代迈进,信息化是当前时代的主旋律。
信息抽象结晶为知识,知识构成智能的基础。
因此,信息化到知识化再到智能化,必将成为人类社会发展的趋势。
人工智能已经并且广泛而有深入的结合到科学技术的各门学科和社会的各个领域中,她的概念,方法和技术正在各行各业广泛渗透。
而在我们的身边,智能化的例子也屡见不鲜。
在军事、工业和医学等领域中人工智能的应用已经显示出了它具有明显的经济效益潜力,和提升人们生活水平的最大便利性和先进性。
2.《人工智能》课程设计,从以下5个题目中任选其一作答。
《人工智能》课程设计题目三:深度优先搜索算法要求:(1)撰写一份word文档,里面包括(算法思路、算法程序框图、主要函数代码)章节。
软件工程大作业
软件工程大作业软件工程大作业一、引言二、目标软件工程大作业的目标是让学生们通过一个实际的项目,了解软件开发的整个过程,并培养其解决问题的能力和团队协作能力。
为了达到这个目标,大作业需要具备以下几个方面的要求:1. 实践性:大作业应该是一个实践性的项目,能够让学生们真正动手去做,并通过实际操作来巩固所学的知识。
2. 复杂性:大作业应该具备一定的复杂性,要求学生们能够面对实际的问题,并通过分析和解决来完成任务。
3. 团队协作:大作业可以以团队为单位来完成,这样可以培养学生们的团队协作能力和沟通能力。
4. 实际应用:大作业应该具备一定的实际应用价值,可以解决某个具体领域的问题。
三、需求分析在开始进行大作业的设计和实施之前,需要先进行需求分析。
需求分析是整个软件开发过程中的第一步,它的目的是明确用户对于软件的需求和期望。
在需求分析阶段,可以进行以下几个步骤:1. 问题定义:明确大作业所要解决的问题,并对问题进行描述和分析。
2. 用户调研:与潜在用户进行沟通,了解他们的需求和期望,进一步明确问题的范围和目标。
3. 功能需求:根据问题定义和用户需求,确定大作业所需要实现的功能,并进行详细的功能描述。
4. 非功能需求:除了功能需求外,还需考虑大作业的性能要求、安全性要求等非功能需求。
四、设计与实施在完成需求分析后,接下来是设计与实施阶段。
这个阶段可以分为以下几个步骤:1. 总体设计:在总体设计阶段,需要对大作业进行整体的设计,包括系统的架构设计、模块的划分和数据的设计等。
2. 详细设计:在详细设计阶段,需要对每个模块进行具体的设计,包括接口的定义、算法的选择和数据结构的设计等。
3. 编码实现:在编码实现阶段,可以根据设计文档进行编码,并通过测试来验证代码的正确性。
4. 系统测试:在系统测试阶段,可以对整个大作业进行综合性的测试,以确保系统的功能和性能达到要求。
五、软件工程大作业是一次实践性的项目,通过这个项目可以让学生们在实际的开发过程中学习和应用所学的软件工程知识。
Swift期末测试大作业
Swift期末测试大作业介绍本次期末测试大作业是针对Swift编程语言的。
我们将要完成一个小型的应用程序,用于管理学生的信息和课程成绩。
需求1. 学生信息管理- 实现一个学生信息管理系统,包括学生姓名、学号和年龄等基本信息。
- 必须能够添加新学生信息、修改学生信息、查询学生信息和删除学生信息。
- 学生信息应该以合适的数据结构进行存储和管理。
2. 课程成绩管理- 实现一个课程成绩管理系统,包括学生姓名、学号和课程成绩等信息。
- 必须能够添加学生的课程成绩、修改学生的课程成绩、查询学生的课程成绩和删除学生的课程成绩。
- 课程成绩应该以合适的数据结构进行存储和管理。
3. 应用程序交互- 提供一个用户界面,以便用户能够使用应用程序的各种功能。
- 用户界面应该简洁直观,并且能够清楚地显示学生信息和课程成绩。
- 用户界面应该能够接受用户输入,执行相应的操作,并显示结果。
技术要求- 应用程序必须使用Swift编程语言进行开发。
- 可以选择任意适合的开发框架和库。
- 代码必须清晰、易读、易于维护,并且要遵循良好的编码规范。
- 需要提供必要的注释和文档,以便他人能够理解和使用你的代码。
提交要求- 请将你的代码和文档打包成一个压缩文件。
- 压缩文件的命名格式为:`Swift期末测试大作业_学号.zip`。
- 提交你的压缩文件到指定的提交渠道。
时间安排- 开始时间:[填写开始时间]- 截止时间:[填写截止时间]评分标准- 功能完整性:应用程序是否实现了所有的需求功能。
- 代码质量:代码是否清晰、易读、易于维护,并且是否遵循良好的编码规范。
- 用户界面设计:用户界面是否简洁直观,并且能够清楚地显示学生信息和课程成绩。
- 注释和文档:是否提供了必要的注释和文档,以便他人能够理解和使用你的代码。
- 时间管理:是否按时完成作业。
请于截止时间前完成作业,并提交你的压缩文件。
如果有任何问题,请及时与任课老师联系。
祝你成功完成本次期末测试大作业!。
数据结构课程设计—家谱系统
一.前言1 项目简介家谱(或称族谱)是一种以表谱形式,记载一个以血缘关系为主体的家族世系繁衍和重要人物事迹的特殊图书文体。
家谱是中国特有的文化遗产,是中华民族的三大文献(国史,地志,族谱)之一,属宝贵的人文资料,关于历史学、风俗学、人口学、社会学和经济学的深切研究,均有其不可替代的独特功能。
2系统功能本项目对家谱治理进行简单的模拟,以实现查看先人和子孙个人信息、插入家族成员、删除家族成员等功能。
本项目的实质是完成对家谱成员信息的成立、查找、插入、修改、删除等功能,能够第一概念家族成员的数据结构,然后将每一个功能写成一个函数来完成对数据的操作,最后完成主函数以验证各个函数功能并得出运行结果。
一.需求分析1.系统需求本系统是家谱治理系统,顾名思义,是用来治理家族资料的,要实现成立新家谱,查找家谱文件,增加家族成员,修改家族成员,删除家族成员和查找家族成员等大体功能。
家谱治理系统是给家族长辈治理家族资料用的,对电脑的操作不必然熟悉,因此操作界面必然要友好,必然要方便,dos界面的操作一样比较枯燥,综合各类缘故,要用MFC实现可视化的界面。
2.环境需求硬件:acer ASPIRE 4740GI5处置器2G内存320G硬盘软件:vs 2020二.整体设计整体设计框架图1系统整体设计模块结构图数据结构设计关于树形的结构:在树形结构的选择上,依如实际中多子女的现象选择一样树,考虑抵家谱中成员可能存在的不定成员数问题,抛弃了以数组为基础的一样树方案,决定用链表来实现。
树形结构的外存保留。
为了提高效率,树形结构在程序初始化时由外存文件一次读入内存,尔后不管插入仍是修改,删除都再也不对外存的树结构保留文件进行操作,只在内存中处置,程序退出时对外存树结构文件进行一次更新。
也确实是说,不管在程序运行中中对家谱结构进行多少种,多少次的操作,外存的树结构文件始终只会被程序访问两次。
以二叉链表作为树的存储结构,链表中的两个链域别离指向该结点的第一个小孩结点和下一个兄弟结点,它通过描述每一个结点的一个小孩和兄弟信息来反映结点之间的层次关系,其具体的结点结构为:其中,firstchild为指向该结点第一个小孩的指针,nextsibling为指向该结点下一个兄弟,elem是数据元素内容,举例如下:算法设计一、家谱的创建和结点的添加家谱采纳的树的结构,通过左小孩,右兄弟的方式变成二叉树,创建的进程事实上确实是二叉树的添加结点的进程,依照父亲的名字添加在父亲结点的左侧。
