1、数据结构课程设计报告课题名称:电脑存储结构设计与实现一、课题名称电脑存储结构的设计与实现二、主要内容电脑存储结构设计与实现主要是模拟“我的电脑”中硬盘信息的建立、查找、插入、修改、删除等功能。可。基本功能如下:(1)硬盘初始化信息:我的电脑(根结点)。(2)硬盘格式化:为我的电脑分区,分区的个数由后台终端输入决定,每个硬盘分区信息包括卷名、文件系统类型、容量等。(3)文件或文件夹的添加:即创建某个分区的孩子结点信息(文件(夹),孩子结点的数目由控制台端给出,信息包括文件(夹)名,文件(夹)大小,所有文件(夹)的文件名此处不能重复。 创建好的文件夹中还能创建其孩子结点信息(文件(夹)。(4)文件
2、或文件夹信息的修改:可以修改某一文件或文件夹的信息,包括名字和大小。(5)文件或文件夹的查询:查询某一文件或文件夹的具体路径。(从我的电脑开始)(6)文件或文件夹的删除:删除此文件,如果是文件夹,若其有后代,将删除其所有后代成员(文件或文件夹)。三、课题设计的基本思想,原理和算法描述首先,设计的电脑存储结构是一个非线性结构,因此不能用线性结构来做,要用树或是图。而,文件与文件之间的关系是一对多,所以,用树结构来描述。在确定了使用树结构之后,接着就是设计函数以及函数的各功能的实现了。然后,基本思路为:1、总程序包含了三个部分,有头文件,各个功能函数和主函数。头文件包含的是函数的外部声明,结构体的
3、定义,以及符号常量的定义。各个功能函数就是通过设计代码,实现程序所需的各个功能的实现。主函数用于设计显示界面和调用各个功能函数。接着,根据题目要求可知,需要实现的功能函数包括创建结点函数,查找函数,添加函数,修改函数和删除函数。设计的流程图:登陆界面初始化我的电脑格式化我的电脑添加文件,查询文件路径,删除文件等操作退出程序程序中包含的各个功能函数的流程:首先是初始化函数:赋予初始化空间输入初始化的主盘的名字初始化成功接着的是格式化函数:输入需要添加的主盘名判断是否存在该主盘存在输入分盘的数目以及名称等(for循环)不存在格式化成功!文件的添加函数:添加函数的开始部分需要判断flat是否等于1;
4、来判断是否已经格式化。然后:输入需要添加的文件的文件夹判断是否已存在存在不存在通过for循环,输入添加的各个文件信息添加成功!文件的修改流程:输入需要修改的文件夹名判断是否存在该文件夹存在不存在输入修改后的文件夹名修改成功!文件的查询流程:输入需要查询的文件夹判断是否存在该文件夹存在不存在输出所查询的文件信息与路径四、运行示例及结果分析 图1 将硬盘进行初始化 图2 将硬盘进行格式化,分成了两个区c和d. 图3 在c区内添加文件夹1和2. 图4 查询硬盘中的文件,并且输出它的路径 图5 修改文件名以及文件的容量 图6 再次查询是否修改成功 图7 通过删除操作删除了文件夹1,仍可点击查询文件夹2
5、五、调试和运行程序过程中产生的问题及采取的措施1、在进行编写输出路径函数的时候,最初的程序中添加了指针parent,但是这样编写起来觉得很复杂了,于是取消了这个指针,这时没办法找到双亲结点,Path功能无法实现,查找资料,得到了path函数。首先通过判断被查询结点的层数,然后利用for 循环中,从该层开始赋值到一个一维数组中,然后利用FindMother函数找到双亲结点,继续赋值给这个一维数组。最后,再通过for 循环将数组反向输出,则可得到路径的输出。2、由于每次运行一项选择之后,初始界面总是会再次的出现一遍,导致运行窗口显得杂乱,通过查询网上资料,得知使用头文件,可以使用system(“c
6、ls”);来进行清屏处理,显得整洁了不少,同时利用system(“pause”);也有效的使得在清屏前运行程序得到缓冲,不会一下子就进行清屏,让人反应不及。3、运行调试的时候经常会出现如下图的情况,这时候重新查看代码,一点点的修改,尤其是把一些有可能错误的代码先注释掉,然后换一种表达方式进行调试。这样能更好的快速找到错误的语句在哪里。六、总结这四天左右的课程设计可以说让我学到很多东西,而且也让我在实际操作中掌握了更多的课程知识。感觉用一两句真的是不能概括总结的。这已经是第二次的计算机课程设计了,同样是c语言的运用,大一时候的c语言还处于基础的阶段,现在这学期又学了不少的运用c语言编程的知识,包
7、括链表,栈的建立,队列的使用,二叉树,图的编写等等,写程序能力进一步提高了些,但还是遇到了不少的问题。题目是电脑存储结构的设计与实现,是利用树来实现的,如果利用二叉树来做,显然这样每个文件夹里只能够添加两个文件,不合理,于是我采用了的是孩子兄弟链来实现程序的主体结构。同时在程序的初始阶段我也特别注意了在结构体中,添加了每个结点的所代表的文件或是文件夹的类型的判断,这样在每次添加新的结点的时候都可以判断是否为文件夹,是否可以继续添加结点,然而随着对于查询某一个结点的函数的编写,添加判断文件的类型,加大了难度,我只能舍弃了对于文件类型的判断,这算是整个程序的最大的缺陷了。不过,在编写别的函数的时候
8、,也有很多的收获,比如对于递归函数的调用,好几个函数都是通过递归来实现的,这也大大加深了我对于递归调用的理解。尤其是查找双亲结点的递归调用,通过查找资料得到之后,理解后豁然开朗。在我看来,读懂递归程序不是难事,而递归调用的编写则是一大挑战,我在今后的学习中,要多多注意在这方面锻炼自己的编写能力。另外,在编写程序的时候的一大感受是千万不能够浮躁,看到别人编写完程序交作业,自己的心里就开始慌了,是不是做的不够好,怎么他这么快就完成了呢,这个一大忌。这种情况不要急躁,定下心来,钻研好自己的题目,把自己的做好,知道了与别人的差距就好,自己再继续努力就行。总之,我要努力,继续保持自己的信心,改进自己的不
9、足,在这学期学习的基础和经验上,在下学期把知识好好领悟透彻,争取在以后的课程设计中有更大的进步!七、参考文献1 李建学等著.数据结构课程设计案例精编清华大学出版社(2007)2 唐宁九等主编数据结构与算法(C+版)实验和课程设计教程. 清华大学出版社,(2008)3谭浩强等编著 C语言教程 清华大学出版社 (2009年)程序如下:#include #include #include #define MAX 30typedef struct Datachar nameMAX;char typeMAX;int vol; ElemType; typedef struct tnode ElemType
10、 data; ElemType dateMAX; struct tnode *child; struct tnode *brother; TreeNode;int flat=0;void Display(TreeNode *q) printf(文件(夹)名:%sn,q-data.name);printf(容量:%dn,q-data.vol);int Generation(TreeNode *t,TreeNode *q) if(t=NULL)return 0;elseif(strcmp(t-data.name,q-data.name)=0)return 1; elseif(Generation(
11、t-brother,q)!=0) return Generation(t-brother,q);elseif(Generation(t-child,q)!=0)return (Generation(t-child,q)+1);elsereturn 0;TreeNode *FindMother(TreeNode *t,TreeNode *q)TreeNode *p;if(t!=NULL)p=t-child;while (p!=NULL) if (p=q) return t;p=p-brother;p=FindMother(t-child,q);if(p!=NULL)return p;elsere
12、turn FindMother(t-brother,q);return NULL;TreeNode *FindNode(TreeNode *t,char name)TreeNode *p;if(t=NULL)return NULL;else if(strcmp(t-data.name,name)=0)return t;elsep=FindNode(t-child,name);if(p!=NULL)return p;elsereturn FindNode(t-brother,name);void Path(TreeNode *t,TreeNode *q) TreeNode *m;m=q;if(G
13、eneration(t,q)=0) printf(无路径!); elseint j; j=Generation(t,q);for(int i=1;idatei.name,FindMother(t,q)-data.name);q=FindMother(t,q);printf(该文件(夹)路径为:);for(i=j-1;i=1;i-)printf(%s-,t-datei.name);printf(%sn,m-data.name);void Create(TreeNode *&t)t=NULL; t=(TreeNode *)malloc(sizeof(TreeNode);if(flat=1)prin
14、tf(已经格式化了!n);elseprintf(请输入主盘的名字:n);scanf(%s,&t-data.name); t-child=t-brother=NULL;printf(硬盘初始化成功!n); system(pause);system(cls);void CleNode(TreeNode *&t) TreeNode *pMAX,*q; int childnum;char name1MAX;char nameMAX;if (flat=1)printf(已经格式化了!n);else printf(请输入主盘的名字:n); scanf(%s,&name1); q=FindNode(t,na
15、me1); while(q=NULL)printf(不存在此盘,请重新输入:);scanf(%s,&name);q=FindNode(t,name);printf(请输入分区的数目:); scanf(%d,&childnum); for(int i=1;ichild=pi-brother=NULL;printf(请输入第%d个分区的信息:n,i);printf(卷名:); scanf(%s,&pi-data.name);printf(容量:); scanf(%d,&pi-data.vol);printf(类型:); scanf(%s,&pi-data.type);if(i=1)q-child=
16、pi;elsepi-1-brother=pi;flat=1;printf(硬盘格式化成功!n);system(pause);system(cls);void Add(TreeNode *&t) TreeNode *pMAX,*q;int childnum;char nameMAX;if(flat=0)printf(t对不起,电脑硬盘还未格式化!nnn);elseprintf(请输入需要添加到分区或文件夹的名称:);scanf(%s,&name);q=FindNode(t,name);while(q=NULL)printf(不存在此文件,请重新输入:);scanf(%s,&name);q=Fin
17、dNode(t,name);printf(请输入文件或文件夹的数目:); scanf(%d,&childnum); for(int i=1;ichild=pi-brother=NULL;printf(请输入第%d个文件或文件夹的信息:n,i);printf(名字:); scanf(%s,&pi-data.name);printf(容量:); scanf(%d,&pi-data.vol);printf(类型:); scanf(%s,&pi-data.type);if(i=1)q-child=pi;elsepi-1-brother=pi;system(pause);system(cls);void
18、 change(TreeNode *t) if(flat=0)printf(硬盘还未进行格式化!n);elseTreeNode *q;char nameMAX;printf(请输入需要修改文件(夹)名:);scanf(%s,&name); q=FindNode(t,name);while(q=NULL)printf(不存在此文件(夹),请重新输入:);scanf(%s,&name);q=FindNode(t,name);printf(请输入修改后的文件(夹)名为:);scanf(%s,&q-data.name);printf(请输入修改后的容量:);scanf(%d,&q-data.vol);
19、system(pause);system(cls);void search(TreeNode *t) if(flat=0)printf(硬盘还未进行格式化!n);elseTreeNode *q;char nameMAX;printf(请输入你要查询的文件(夹)名:);scanf(%s,&name); q=FindNode(t,name);while(q=NULL)printf(不存在此文件(夹),请重新输入:);scanf(%s,&name);q=FindNode(t,name);printf(你要查询的文件(夹)的信息为:n);Display(q);printf(你要查询的文件(夹)的路径为
20、:n);Path(t,q);system(pause);system(cls);TreeNode * TreeFront(TreeNode *&t,char *name) if(t-brother!=NULL&t-child=NULL)if(strcmp(t-brother-data.name,name)return TreeFront(t-brother,name);elsereturn t;if(t-child!=NULL&t-brother=NULL)if(strcmp(t-child-data.name,name)return TreeFront(t-child,name);elser
21、eturn t;if(t-child!=NULL&t-brother!=NULL)if(strcmp(t-child-data.name,name)=0|strcmp(t-brother-data.name,name)=0)return t;elseif(TreeFront(t-brother,name)=NULL)return TreeFront(t-child,name);elsereturn TreeFront(t-brother,name);if(t-brother=NULL&t-child=NULL)return NULL;void DelTreeNode(TreeNode *t)
22、if(t-brother=NULL&t-child=NULL)free(t);elseif(t-brother!=NULL) DelTreeNode(t-brother);if(t-child!=NULL)DelTreeNode(t-child);void Delete(TreeNode *t) if(flat=0)printf(t对不起,电脑硬盘还未格式化!nnn);elsechar name12;printf(t请输入您要删除的文件(夹)名称:);scanf(%s,name);TreeNode *p=FindNode(t,name); if(p=NULL)printf(t该文件夹里无此文件
23、(夹)!nn);elseif(p=t)flat=0; if(p-child!=NULL) DelTreeNode(p-child); elseTreeNode *q=TreeFront(t,name); if(p-brother=NULL)if(q-child=p)q-child=NULL; if(p-child!=NULL) DelTreeNode(p-child); free(p);elseq-brother=NULL; if(p-child!=NULL) DelTreeNode(p-child); free(p); elseif(q-child=p) q-child=p-brother;
24、 if(p-child!=NULL) DelTreeNode(p-child); free(p); else q-brother=p-brother; if(p-child!=NULL) DelTreeNode(p-child); free(p);printf(t该文件夹信息已删除!nnn);system(pause);system(cls);void main() TreeNode *t; int n;while(1) printf( 电脑存储结构设计与实现 n);printf(*n);printf( 1.硬盘初始化信息n);printf( 2.硬盘格式化n);printf( 3.文件或文件
25、夹的添加n);printf( 4.文件或文件夹信息的修改n);printf( 5.文件或文件夹的查询n);printf( 6.文件或文件夹的删除n);printf( 0.退出n);printf(*n);printf(n请选择功能选项:);scanf(%d,&n);switch(n)case 1:Create(t);break;case 2: CleNode(t);break;case 3: Add(t);break;case 4: change(t);break;case 5: search(t);break;case 6: Delete(t);break;case 0: return;bre
26、ak;default:printf(输入无效!重新输入!n);1. 基于C8051F单片机直流电动机反馈控制系统的设计与研究2. 基于单片机的嵌入式Web服务器的研究 3. MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究 4. 基于模糊控制的电阻钎焊单片机温度控制系统的研制 5. 基于MCS-51系列单片机的通用控制模块的研究 6. 基于单片机实现的供暖系统最佳启停自校正(STR)调节器7. 单片机控制的二级倒立摆系统的研究8. 基于增强型51系列单片机的TCP/IP协议栈的实现 9. 基于单片机的蓄电池自动监测系统 10. 基于32位
27、嵌入式单片机系统的图像采集与处理技术的研究11. 基于单片机的作物营养诊断专家系统的研究 12. 基于单片机的交流伺服电机运动控制系统研究与开发 13. 基于单片机的泵管内壁硬度测试仪的研制 14. 基于单片机的自动找平控制系统研究 15. 基于C8051F040单片机的嵌入式系统开发 16. 基于单片机的液压动力系统状态监测仪开发 17. 模糊Smith智能控制方法的研究及其单片机实现 18. 一种基于单片机的轴快流CO,2激光器的手持控制面板的研制 19. 基于双单片机冲床数控系统的研究 20. 基于CYGNAL单片机的在线间歇式浊度仪的研制 21. 基于单片机的喷油泵试验台控制器的研制
28、22. 基于单片机的软起动器的研究和设计 23. 基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究 24. 基于单片机的机电产品控制系统开发 25. 基于PIC单片机的智能手机充电器 26. 基于单片机的实时内核设计及其应用研究 27. 基于单片机的远程抄表系统的设计与研究 28. 基于单片机的烟气二氧化硫浓度检测仪的研制 29. 基于微型光谱仪的单片机系统 30. 单片机系统软件构件开发的技术研究 31. 基于单片机的液体点滴速度自动检测仪的研制32. 基于单片机系统的多功能温度测量仪的研制 33. 基于PIC单片机的电能采集终端的设计和应用 34. 基于单片机的光纤光栅解调仪的
29、研制 35. 气压式线性摩擦焊机单片机控制系统的研制 36. 基于单片机的数字磁通门传感器 37. 基于单片机的旋转变压器-数字转换器的研究 38. 基于单片机的光纤Bragg光栅解调系统的研究 39. 单片机控制的便携式多功能乳腺治疗仪的研制 40. 基于C8051F020单片机的多生理信号检测仪 41. 基于单片机的电机运动控制系统设计 42. Pico专用单片机核的可测性设计研究 43. 基于MCS-51单片机的热量计 44. 基于双单片机的智能遥测微型气象站 45. MCS-51单片机构建机器人的实践研究 46. 基于单片机的轮轨力检测 47. 基于单片机的GPS定位仪的研究与实现 4
30、8. 基于单片机的电液伺服控制系统 49. 用于单片机系统的MMC卡文件系统研制 50. 基于单片机的时控和计数系统性能优化的研究 51. 基于单片机和CPLD的粗光栅位移测量系统研究 52. 单片机控制的后备式方波UPS 53. 提升高职学生单片机应用能力的探究 54. 基于单片机控制的自动低频减载装置研究 55. 基于单片机控制的水下焊接电源的研究 56. 基于单片机的多通道数据采集系统 57. 基于uPSD3234单片机的氚表面污染测量仪的研制 58. 基于单片机的红外测油仪的研究 59. 96系列单片机仿真器研究与设计 60. 基于单片机的单晶金刚石刀具刃磨设备的数控改造 61. 基于
31、单片机的温度智能控制系统的设计与实现 62. 基于MSP430单片机的电梯门机控制器的研制 63. 基于单片机的气体测漏仪的研究 64. 基于三菱M16C/6N系列单片机的CAN/USB协议转换器 65. 基于单片机和DSP的变压器油色谱在线监测技术研究 66. 基于单片机的膛壁温度报警系统设计 67. 基于AVR单片机的低压无功补偿控制器的设计 68. 基于单片机船舶电力推进电机监测系统 69. 基于单片机网络的振动信号的采集系统 70. 基于单片机的大容量数据存储技术的应用研究 71. 基于单片机的叠图机研究与教学方法实践 72. 基于单片机嵌入式Web服务器技术的研究及实现 73. 基于
32、AT89S52单片机的通用数据采集系统 74. 基于单片机的多道脉冲幅度分析仪研究 75. 机器人旋转电弧传感角焊缝跟踪单片机控制系统 76. 基于单片机的控制系统在PLC虚拟教学实验中的应用研究77. 基于单片机系统的网络通信研究与应用 78. 基于PIC16F877单片机的莫尔斯码自动译码系统设计与研究79. 基于单片机的模糊控制器在工业电阻炉上的应用研究 80. 基于双单片机冲床数控系统的研究与开发 81. 基于Cygnal单片机的C/OS-的研究82. 基于单片机的一体化智能差示扫描量热仪系统研究 83. 基于TCP/IP协议的单片机与Internet互联的研究与实现 84. 变频调速
33、液压电梯单片机控制器的研究 85. 基于单片机-免疫计数器自动换样功能的研究与实现 86. 基于单片机的倒立摆控制系统设计与实现 87. 单片机嵌入式以太网防盗报警系统 88. 基于51单片机的嵌入式Internet系统的设计与实现 89. 单片机监测系统在挤压机上的应用 90. MSP430单片机在智能水表系统上的研究与应用 91. 基于单片机的嵌入式系统中TCP/IP协议栈的实现与应用92. 单片机在高楼恒压供水系统中的应用 93. 基于ATmega16单片机的流量控制器的开发 94. 基于MSP430单片机的远程抄表系统及智能网络水表的设计95. 基于MSP430单片机具有数据存储与回放
34、功能的嵌入式电子血压计的设计 96. 基于单片机的氨分解率检测系统的研究与开发 97. 锅炉的单片机控制系统 98. 基于单片机控制的电磁振动式播种控制系统的设计 99. 基于单片机技术的WDR-01型聚氨酯导热系数测试仪的研制 100. 一种RISC结构8位单片机的设计与实现 101. 基于单片机的公寓用电智能管理系统设计 102. 基于单片机的温度测控系统在温室大棚中的设计与实现103. 基于MSP430单片机的数字化超声电源的研制 104. 基于ADC841单片机的防爆软起动综合控制器的研究105. 基于单片机控制的井下低爆综合保护系统的设计 106. 基于单片机的空调器故障诊断系统的设
35、计研究 107. 单片机实现的寻呼机编码器 108. 单片机实现的鲁棒MRACS及其在液压系统中的应用研究 109. 自适应控制的单片机实现方法及基上隅角瓦斯积聚处理中的应用研究110. 基于单片机的锅炉智能控制器的设计与研究 111. 超精密机床床身隔振的单片机主动控制 112. PIC单片机在空调中的应用 113. 单片机控制力矩加载控制系统的研究 项目论证,项目可行性研究报告,可行性研究报告,项目推广,项目研究报告,项目设计,项目建议书,项目可研报告,本文档支持完整下载,支持任意编辑!选择我们,选择成功!项目论证,项目可行性研究报告,可行性研究报告,项目推广,项目研究报告,项目设计,项目建议书,项目可研报告,本文档支持完整下载,支持任意编辑!选择我们,选择成功!单片机论文,毕业设计,毕业论文,单片机设计,硕士论文,研究生论文,单片机研究论文,单片机设计论文,优秀毕业论文,毕业论文设计,毕业过关论文,毕业设计,毕业设计说明,毕业论文,单片机论文,基于单片机论文,毕业论文终稿,毕业论文初稿,本文档支持完整下载,支持任意编辑!本文档全网独一无二,放心使用,下载这篇文档,定会成功!22