电脑的存储结构设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、课题名称

电脑存储结构设计与实现(树,查找)

二、主要容

电脑存储结构设计与实现主要是模拟“我的电脑”中硬盘信息的建立、查找、插入、修改、删除等功能。可。基本功能如下:

(1)硬盘初始化信息:我的电脑(根结点)。

(2)硬盘格式化:为我的电脑分区,分区的个数由后台终端输入决定,每个硬盘分区信息包括卷名、文件系统类型、容量等。

(3)文件或文件夹的添加:即创建某个分区的孩子结点信息(文件(夹)),孩子结点的数目由控制台端给出,信息包括文件(夹)名,文件(夹)大小,所有文件(夹)的文件名此处不能重复。创建好的文件夹中还能创建其孩子结点信息(文件(夹))。

(4)文件或文件夹信息的修改:可以修改某一文件或文件夹的信息,包括名字和大小。(5)文件或文件夹的查询:查询某一文件或文件夹的具体路径。(从我的电脑开始)

(6)文件或文件夹的删除:删除此文件,如果是文件夹,若其有后代,将删除其所有后代成员(文件或文件夹)。

三、课题设计的基本思想,原理和算法描述

此课题主要用树来建立电脑的存储结构设计,并用树的相关知识,递归的思想贯穿始终,实现硬盘的初始化和格式化,并在分区里实现文件(夹)的添加、修改、查询、删除的功能。主函数和总界面:

void menu()

{

system("cls");

printf(" ******************************************************\n");

printf(" * 欢迎进入电脑存储设计与实现系统! *\n");

printf(" * ----------------- * \n");

printf(" * 1.硬盘初始化信息:*\n");

printf(" * 2.硬盘格式化信息:* \n");

printf(" * 3.添加文件(夹)的信息:*\n");

printf(" * 4.修改文件(夹)的信息:* \n");

printf(" * 5.查询文件(夹)的信息:*\n");

printf(" * 6.删除文件(夹)的信息* \n");

printf(" * 7.退出*\n");

printf(" ******************************************************\n");

printf("请选择功能操作号:"); //选择相应数字实现对应功能项

void main()

{

TSBNode *b;

while(1)

{

menu();

int c;

scanf("%d",&c);

switch(c)

{

case 1:CreateBTNode(b);break;

case 2:areaTSBNode(b);break;

case 3:Add(b);break;

case 4:Change(b);break;

case 5:Search(b);break;

case 6:Delete(b);break;

case 7:return;

default:printf("选择有误,请重新选择!\n");

}

}

}

硬盘初始化中:直接输入主盘的名字,并将此名字赋给根节点。

void CreateBTNode(TSBNode *&b) //硬盘初始化信息#### 1 初始化####

{

system("cls");

printf(" ********欢迎来到硬盘初始化信息界面!********\n");

printf("\n");

b=NULL;

b=(TSBNode *)malloc(sizeof(TSBNode));

printf("请输入主盘的名字:");

scanf("%s",&b->);

b->child=b->brother=NULL;

printf("初始化成功!\n");

chushi=1;

system("pause");//按回车键继续

硬盘格式化中:首先输入主盘的名字,判断是否存在此主盘,同时也判断是否进行硬盘初始化,是的话继续,否则返回初始化的界面。判断结束后,输入需要添加分区的数目,一个一个地输入信息。此期间会判断是否重复,重复的话重新输入。最后在for循环里,对每个分区和根节点建立关系。

void areaTSBNode(TSBNode *&b)//硬盘格式化#### 2 格式化#### {

system("cls");

printf(" ********欢迎来到硬盘格式化信息界面!********\n");

printf("\n");

TSBNode *p[MAXCHILD];

char name[MAX]; //定义数组指针

printf("请输入需要添加分区的主盘的名字:");

scanf("%s",&name);

if(chushi==0) //判断是否进行初始化,否则返回初始化界面

{

printf("请先进行硬盘初始化!\n");

system("pause"); //按回车键继续;

CreateBTNode(b);

return;

}

if(strcmp(b->,name)!=0) //判断是否存在

{

printf("不存在此主盘,请重新输入!\n");

printf("请输入需要添加分区的主盘的名字:");

scanf("%s",&name);

}

int childnum; //定义分区数目

printf("请输入分区的数目:");

scanf("%d",&childnum);

for(int i=1;i<=childnum;i++) //for语句依次添加信息

{

p[i]=(TSBNode *)malloc(sizeof(TSBNode));

p[i]->child=p[i]->brother=NULL;

printf("请输入第%d个分区的信息:\n",i);

printf("卷名:");

scanf("%s",&p[i]->);

相关文档
最新文档