logo资料库

数据结构中的简易电子表格.doc

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
“数据结构”课程设计题目与要求
1.目的意义
“数据结构”课程设计题目与要求 1.目的意义 “数据结构课程设计(大作业)”是与“数据结构”课程配套的实践性课程和必修课程(1 个学分)。其目的是让学生运用所学的“数据结构”课程知识,编写一个解决实际问题的大型 或中等规模的计算机程序,使学生掌握综合运用数据结构与算法的知识和方法。大作业与课 程中的普通实验环节不同。普通实验环节是随课程阶段或知识点进行的,针对每个阶段或知 识点,重点是实践单元知识。而大作业是综合性的,强调综合运用整个课程的重要知识。大 作业一般是按 20 个课时安排,提倡学生花更多的时间完成。 2.总体要求 下面列出了 4 个参考题目,每位同学只需要选择完成一个题目。但是,要求每位同学参 考给出的题目和设计要求,分别以广州市的政治、经济、文化、工业、农业、服务、贸易、 旅游、教育、科学、公安、医疗、卫生、建筑、工商、历史、地理、环境、银行、交通、餐 饮等行业为背景,用 Visual C++ 6.0 来编写一个解决这些领域中实际问题的大型或中等规模的 计算机程序(也即,自己编写的程序要能够在上述行业里应用),要求源代码在 4000 行左右。 3.实现要求 使用 Visual C++ 6.0 在非 GUI 环境下实现。非 GUI 环境的例子有 MS-DOS、MS Windows /9x/Me/NT/2000/XP 下的控制台(Console)、Linux/Unix 等。这里,GUI 指各种 MS Windows、 各种 X Windows、MacOS、OSWap,还有某些编程环境下的支持屏幕对话功能(菜单、对话 框等)的工具包,也禁止使用。 4.提交形式 本课程设计与“数据结构”课程独立记分(做为不同的课程)。每个学生必须分别独立完 成,不准合作。考试形式为实践考核与设计报告评分。实践考核:现场测试所编制的计算机 程序,并由教师现场提问,学生负责现场回答问题。设计报告:提交相应设计报告与完整源 程序。设计报告形式要求图文不少于 4 千字的篇幅(约相当于 16 开教科书的 5 页以上),提 交电子与打印稿各一份;内容要求:设计报告主要包括下列几个方面的内容。a) 问题陈述: 概述要解决的问题,要实现的功能等;b) 设计方法阐述:各种重要问题(包括程序实现方法) 的解决方法/方案,并阐述主要理由;c) 总结:体会、不足点、改进。 5.提交时间 在本学期之内将程序(CPP 文件和 EXE 文件)电子版写到一个光盘中,并与设计报告 打印版一起后交给各个班主任,由各个班主任收齐后再一起交给我。请遵守时间,过期不交 后果自负。 1
(一) 变长记录文件存取类库 1.问题陈述 设计一个类库,支持对变长记录文件的存贮、插入、删除、查找、修改等功能。文件中 的每条记录可以有不同的大小,是任意长度的字节流。每条记录对应一个序号(记录号)和 一个字串型标识。记录的记录号和标识均可用作对记录的定位和引用。这种文件的每个记录 实质上相当于一个子文件,可以存储任意的多媒体数据,如声音、图形、图像等。文件记录 号自动按记录进入次序生成,而记录标识由用户随意指定。变长记录文件中的记录,既可以是 普通的字节流(嵌入),也可以是其他文件的链接。 2.基本要求 内部要求:这一级只要求支持字节流嵌入方式(不要求文件链接),也不要求建立索引。具体 实现可直接通过操作系统的文件功能(顺序组织)。外部要求:这一级要求提供的类库具有下 列基本功能: A)文件的创建、打开与关闭。创建:创建一个空文件;打开:打开一个已存在的文件,使 其处于可存取状态;关闭:关闭一个已打开的文件,缓冲区全部内容写回外存; B)顺序读:按记录的逻辑次序依次读取各记录。刚打开时文件时,当前记录指针在第一条 上,此后,每调用一次顺序读,读出当前记录,并使当前记录指针后移一条; C)顺序写:从当前记录起,顺序写入新记录,自动编排记录号。当前记录及其后面记录被 自动删去; 注:记录标识是独立于记录内容的字段,应提在 B)和 C)中可读写。注意,同一文件内记 录标识不可重复。 D)当前记录指针判断:判断当前记录指针位置,即分别判别当前记录指针是否已到达文件 尾(结束标记)和头; E)此外,还要求编写一个演示/测试程序,能演示前面所建立的类库。 3.增强要求 内部要求:这一级要求同时支持字节流嵌入方式和文件链接方式。具体实现可直接通过操作 系统的文件功能(顺序组织),但要求建立记录标识的索引文件; 外部要求:这一级要求提供的类库新增下列基本功能: A)加入记录:加到尾部;插到指定的位置之前(按记录号或记录标识);插到当前记录之前; B)删除记录:按记录号或标识删除记录;删除当前记录; C)定位记录:顺序移动记录指针(向后和向前);按记录号定位记录;按记录标识定位记录; D)修改记录标识:修改任一条记录的标识。注意,同一文件内记录标识不可重复; E)重写一条记录:重写指定记录(注意:新旧记录长度可能不同); F)写为文件:将一个文件中的若干条记录或全部记录写到一个文件中(新文件); G)计数:求文件记录数、文件字节数; 2
4.扩展要求 内部要求:这一级同样要求同时支持字节流嵌入方式和文件链接方式。具体实现采用 VSAM 组织方式;外部要求:这一级要求提供的类库新增下列基本功能。A)排序:记录按 标识排序,同时改变记录等;B)文件应能被共享打开,共享操作; 5. 性能要求 A)可按记录标识快速找到记录;B)文件超大,不能一次读入内存,要分快读入;C) 灵活友好的调用接口;D)类中的属性和方法设置合理,命名友好; 6.设计提示 A)记录结构:对嵌入式记录,每条记录应分两大部分: 记录头 数据 其中记录头长度固定,数据部分长度不定。记录头包含的内容有:记录号、记录标识、 删除标志、数据块长度(或记录总长)、.....,数据部分为字节流。对文件链接式记录,“数据” 部分存放对应文件的位置信息。对顺序存储方式,增加记录时,是加到文件尾;删除记录时, 只打上删除标志。 (二) 家谱管理系统设计与实现 1.问题阐述: 家谱用于记录某家族历代家族成员的情况与关系。本课程设计要求设计并实现一个计算 机软件,支持对家谱的存储、更新、查询、统计等操作。 2.基本要求 内部要求:要求将家谱信息看作树形结构处理,并可存储在外存。数据可一次读入内存; 外部要求:这一级要求系统具备下列基本功能。A)家庭成员信息存储:将每个家庭成员的 基本信息存储在计算机中(可永久保存)。家庭成员的基本信息至少应包括:(姓名,出生地, 出生日期,死亡日期,性别,身高,学历,职业,最高职务/职称,…);B)家族关系存储: 将各家庭成员之间的关系,存储在计算机中(可永久保存);C)更新:家谱数据的更新(修 改、删除、加入);D)输出:将家谱以较友好的格式输出(显示);E)查询:按基本信息查 询成员,按亲戚关系查询; 3.增强要求 A)统计:统计并打印(显示)结果,统计的项目有:平均寿命、平均身高、男女比例、 家庭平均人口、平均(最高/低)学历、…。 3
4.扩展要求 内部要求:数据较大时,不一次读入内存,采用分块读入;外部要求:这一级要求系统 具备下列基本功能:屏幕显示树形(类似 Windows 目录)、全屏可视化操作、支持鼠标; 5.设计提示 家庭成员基本信息用线性表表示,程序结束后存储在磁盘上,程序开始是从磁盘读出; 家庭成员之间的关系,用树形结构(家族树)表示; 家族树在程序结束后存储在磁盘上,程序开始是从磁盘读出; 树在内存中的存储结构:邻接表或孩子兄弟链,带父指示器; 家庭成员基本信息设置数字编号,用于唯一地标识记录; 树结点用家庭成员的编号标识。通过编号,建立家庭成员的基本信息与树结点的联系; 树在磁盘文件中的存储结构:存储串行化结果,如“根-叶序列”; 所谓“根-叶序列”,是指,从树根到每个叶子结点的路径。路径的排列次序表示兄弟的 次序。例如,下图表示的树的“根-叶序列”为: 1 7 3 9 10 2 6 4 8 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.基本要求 内部要求:电子表格在处理时可一次全部读入内存。单元格可支持多种数据类型,如数值、 字符串;外部要求:该级要求所设计的电子表格具备下列基本功能。A)表格显示与操作方 式:按表格形式显示表格,并支持用户使用简单的功能键(按键选择式的简单菜单)进行操 4
作;B)建立表格:建立空白表格,同时在屏幕上显示,使其处于可输入数据状态;C)输入 数据与编辑数据:通过键盘将数据输入在屏幕上的电子表格上,同时要支持基本的数据输入 编辑)D)基本统计计算:统计计算的种类包括:合计、求平均、求最大/小;统计计算方式: 表格按行/列统计计算,表格按块统计计算;E)排序:使任一行/列中的数据按大小(升或降) 排列,对字符串型数据,还要可选大小写敏感;F)表格保存:使电子表格存储在磁盘上(磁 盘文件),并可随时读入,供继续处理; 注:表格成分的命名(兼容 MS Excel 等电子表格软件) (1)行命名:依次用自然数 1,2,…; (2)列命名:使用英文字,第 1~26 列的名字依次为 A~Z,大小写不敏感,下同。第 27~32 列名字依次为:AA,AB,AC,…AZ,以后的列,以 B 打头,第二个字母依次是 A~Z,再 后以 C 打头,等等,构成方法类推; (3)单元命名:单元格的名称格式为:列名后随行号。例如,A1, B100, BA101; (4)单元块命名:单元块的名称格式为:左上角单元名称、右下角单元名称。例如: A1:A10----第 1 列上的第 1~10 行; C10:F10----第 10 行上的列 C~F; C10:F16----以 C10 为左上角,F16 为右下角的矩形构成的块; 3. 增强要求 内部要求:表格大小应该自适应,所占用的存储空间应该根据内容多少自动调整;外部 要求:该级要求的功能如下。A)数据复制:将表格中任数据块复制到另一块中。复制到目 标快时,对目标块中原内容的处理,可选择的方式有:代替、相加、相减、按条件替换;B) 公式支持:单元格内可输入公式(表达式),使对应单元格的最终内容为公式的计算结果;公 式最基本的形式是算术计算公式。公式中可以按名引用其他单元格(或单元格构成的块)。公 式被复制时,应能自动调整公式中单元格名称。 4.扩展要求 内部要求:列数可确定最大范围,但行数可任意。表格较大时不完全读入内存;外部要求: 该级要求的功能如下:A)打印输出:在打印机上以友好格式输出电子表格,并可在屏幕上 预览;B)公式中也可以支持预定义的数学函数;C)对话功能支持:使用字符模式的菜单、 按纽、对话框等屏幕会话元素,调用基本功能;D)鼠标支持:完全通过自编程序支持鼠标 控制;E)支持中文:完全通过自编程序支持汉字显示、输入;注:功能要求可进一步参考 MS Excel 5.设计提示 A)表格数据结构设计。(1)使用顺序结构: 为每行设立一块动态的连续储存空间,用做存储该 5
行中对应的各个单元格,并设立各行的头结点。各行的头结点构成另一个数据结构;(2)使用 动态结构:类似于十字链表; (四) XML 文档存取类库与编辑器 1.问题陈述 设计一个关于 XML 文档存取的类库,并在此基础上给出一个 XML 文档的交互式编辑器。 2.基本要求 内部要求:XML 文档可一次全部读入内存后处理。按树的方式处理 XML 文档。至少设置文 档类、XML 元素类等。提供基本的树结构访问接口。对 XML 文档的一切其它操作(如编辑 器功能)都要求在类库的基础上进行; 外部功能:类库功能:具体的功能要求参阅后面的“设计提示”;编辑器功能:在非 Windows(MS, X 系列)环境下建立一个小型的全屏幕编辑器,支持以树的形式编辑 XML 文档。具体的功能 包括:修改:修改任一成份(文本、标签、属性等)的内容;插入:在当前位置上插入对应 的成份(元素、文本、属性等);删除:删除当前位置上的对应的成份(元素、文本、属性等); 查找功能:可按属性值、标签名、文本内容定位;文件操作:支持创建新文档(空)、文档保 存(到磁盘)、读磁盘文档等编辑交互:支持简单的字符模式的菜单、对话框; 3.增强要求 内部要求:XML 文档很大时,不一次全部读入内存,而采用动态分块读入;外部功能: 更完善的类库功能和编辑器功能。 4.扩展要求 外部功能:支持比较友好的菜单、对话框等屏幕元素,支持鼠标、中文(自建中文系统)。 5.设计提示 A)对象体系 (见图 B4) B)类形式参考 (1) 树结点类 TTreeNode: 多叉树结点,其仅与树结构有关。其它种类结点均由此结点派生。 主要包括下列成员: Generation:整数,为本元素在所在树中的层号(根层号为 1); Parent:xiTreeNode 型,读写型,指出该结点在树中的父结点; Children:xiTreeNodeList 型,指出该结点在树中的各个儿子; (2) 标记(标签)类:该类由 TTreeNode 派生而来,描述文档树中的标记,即一对尖括号之 间的部分。 6
主要包括下列成员: Name:XAM 字串型,是标记的名称; AttrList:属性表型,是标记对应的各属性构成的集合(表); Type:枚举型,为标记的类型,即指出是非空标记还是空标记; (3) XML 元素类 xiElement:用于描述 XML 文档中的元素,它代表某一完整元素,包括该元 素的下属的各元素,因此相当于一棵(子)树。提供了对子树的各种访问方法。 主要包括下列成员: Root:根指示器; Content:元素内容; ClusterDescendants(travMode,startLevel, endLevel,elemName,attrName,attrValue, elemText):遍历结果存引用集的条件遍历,即本元素的各指定的直系后代(儿子,及儿子的 后代),按指定的次序,组成一个引用集。 ClusterAncestors(startLevel,endLevel,elemName,attrName,attrValue,elemText):将本 元素的各指定的直系前辈(父亲及父亲的前辈),组成一个引用集。 ClusterJuniors(travMode,startLevel,endLevel,elemName,attrName,attrValue,elemText): 类似于 ClusterDescendants,不同之处是,ClusterDescendants 涉及的元素是本对象的各直系后 代(儿子,及儿子的后代),而 ClusterJuniors 涉及的是本对象的所有后代(层号大于本对象 的各元素)。另外,这里的遍历次序是按从树根开始的; ClusterSeniors(travMode,startLevel,endLevel,elemName,attrName,attrValue,elemText): 类似于 ClusterAncestors,不同之处是,ClusterAncestors 涉及的元素是本对象的各直系前辈(父 亲及父亲的前辈),而 ClusterSeniors 涉及的是本对象的所有前辈(层号小于本对象的各元素)。 另外,这里的遍历次序是按从树根开始的; ClusterCousins (elemName,attrName,attrValue="*",elemText="*"):将本元素的各指定 的兄弟及堂兄弟,组成一个引用集; ClusterAttribute(fieldDelimiter,travMode,startLevel,endLevel,elemName,attrName): 按指定的方式遍历本元素对应的子树,将遍历到的元素的属性名与值存入一个新引用集; ClusterText(travMode,startLevel,endLevel,elemName,attrName,attrValue):按指定的 方式遍历本元素对应的子树,将遍历到的元素对应的文本存入一个新引用集; Insert(elem,beforeNo):为本元素插入一棵子树(元素); Delete(idxSelector):删除本元素的若干棵子树(元素); Replace(idxSelector, elem):用给定的元素替换本元素中的指定元素; SaveAsXMLDocFile(docFile):将本元素(含其各子元素)读出,转换为标准的 XML 格 式,存入指定的文件中; SaveAsXMLDoc(in xiXMLStr docStr):将本元素(含其各子元素)读出,转换为标准的 XML 格式,存入指定的字符串中; 7
LoadFromXMLDocFile(docFile):将指定的 XML 文档文件读出,将其转换为一个 xiElement 型元素,代替本元素: LoadFromXMLDoc(docStr):将指定的 XML 文档字符串转换为一个 xiElement 型元素, 代替本元素; xiXAMObj xiTreeNode xiMarkup xiElement xiXMLDoc xiXAMList xiStrList xiAttrList xiTreeNodeList xiElementList 图 B4 XML 类结构图 xiXAMStr xiXMLAttr xiXAMExceptio n 8
分享到:
收藏