- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE \* MERGEFORMAT 19
《数据结构》
课程设计报告
课题名称:电脑存储结构设计与实现
一、课题名称
电脑存储结构的设计与实现
二、主要内容
电脑存储结构设计与实现主要是模拟“我的电脑”中硬盘信息的建立、查找、插入、修改、删除等功能。可。基本功能如下:
(1)硬盘初始化信息:我的电脑(根结点)。
(2)硬盘格式化:为我的电脑分区,分区的个数由后台终端输入决定,每个硬盘分区信息包括卷名、文件系统类型、容量等。
(3)文件或文件夹的添加:即创建某个分区的孩子结点信息(文件(夹)),孩子结点的数目由控制台端给出,信息包括文件(夹)名,文件(夹)大小,所有文件(夹)的文件名此处不能重复。 创建好的文件夹中还能创建其孩子结点信息(文件(夹))。
(4)文件或文件夹信息的修改:可以修改某一文件或文件夹的信息,包括名字和大小。
(5)文件或文件夹的查询:查询某一文件或文件夹的具体路径。(从我的电脑开始)
(6)文件或文件夹的删除:删除此文件,如果是文件夹,若其有后代,将删除其所有后代成员(文件或文件夹)。
三、课题设计的基本思想,原理和算法描述
首先,设计的电脑存储结构是一个非线性结构,因此不能用线性结构来做,要用树或是图。而,文件与文件之间的关系是一对多,所以,用树结构来描述。
在确定了使用树结构之后,接着就是设计函数以及函数的各功能的实现了。
然后,基本思路为:1、总程序包含了三个部分,有头文件,各个功能函数和主函数。头文件包含的是函数的外部声明,结构体的定义,以及符号常量的定义。各个功能函数就是通过设计代码,实现程序所需的各个功能的实现。主函数用于设计显示界面和调用各个功能函数。
接着,根据题目要求可知,需要实现的功能函数包括创建结点函数,查找函数,添加函数,修改函数和删除函数。
设计的流程图:
登陆界面
初始化我的电脑
格式化我的电脑
添加文件,查询文件路径,删除文件等操作
退出程序
程序中包含的各个功能函数的流程:
首先是初始化函数:
赋予初始化空间
输入初始化的主盘的名字
初始化成功
接着的是格式化函数:
输入需要添加的主盘名
判断是否存在该主盘
存在
输入分盘的数目以及名称等(for循环)
不存在
格式化成功!
文件的添加函数:
添加函数的开始部分需要判断flat是否等于1;来判断是否已经格式化。然后:
输入需要添加的文件的文件夹
判断是否已存在
存在
不存在
通过for循环,输入添加的各个文件信息
添加成功!
文件的修改流程:
输入需要修改的文件夹名
判断是否存在该文件夹
存在
不存在
输入修改后的文件夹名
修改成功!
文件的查询流程:
输入需要查询的文件夹
判断是否存在该文件夹
存在
不存在
输出所查询的文件信息与路径
四、运行示例及结果分析
图1 将硬盘进行初始化
图2 将硬盘进行格式化,分成了两个区c和d.
图3 在c区内添加文件夹1和2.
图4 查询硬盘中的文件,并且输出它的路径
图5 修改文件名以及文件的容量
图6 再次查询是否修改成功
图7 通过删除操作删除了文件夹1,仍可点击查询文件夹2
五、调试和运行程序过程中产生的问题及采取的措施
1、在进行编写输出路径函数的时候,最初的程序中添加了指针parent,但是这样编写起来觉得很复杂了,于是取消了这个指针,这时没办法找到双亲结点,Path功能无法实现,查找资料,得到了path函数。首先通过判断被查询结点的层数,然后利用for 循环中,从该层开始赋值到一个一维数组中,然后利用FindMother函数找到双亲结点,继续赋值给这个一维数组。最后,再通过for 循环将数组反向输出,则可得到路径的输出。
2、由于每次运行一项选择之后,初始界面总是会再次的出现一遍,导致运行窗口显得杂乱,通过查询网上资料,得知使用头文件stdlib.,q-data.name);
printf(容量:%d\n,q-data.vol);
}
int Generation(TreeNode *t,TreeNode *q)
{
if(t==NULL)
return 0;
else
{
if(strcmp(t-data.name,q-data.name)==0)
return 1;
else
{
if(Generation(t-brother,q)!=0)
return Generation(t-brother,q);
else
{
if(Generation(t-child,q)!=0)
retur
文档评论(0)