电脑的存储结构设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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]->);