简单文件管理系统.docx

上传人:b****1 文档编号:15177690 上传时间:2023-07-02 格式:DOCX 页数:30 大小:169.29KB
下载 相关 举报
简单文件管理系统.docx_第1页
第1页 / 共30页
简单文件管理系统.docx_第2页
第2页 / 共30页
简单文件管理系统.docx_第3页
第3页 / 共30页
简单文件管理系统.docx_第4页
第4页 / 共30页
简单文件管理系统.docx_第5页
第5页 / 共30页
简单文件管理系统.docx_第6页
第6页 / 共30页
简单文件管理系统.docx_第7页
第7页 / 共30页
简单文件管理系统.docx_第8页
第8页 / 共30页
简单文件管理系统.docx_第9页
第9页 / 共30页
简单文件管理系统.docx_第10页
第10页 / 共30页
简单文件管理系统.docx_第11页
第11页 / 共30页
简单文件管理系统.docx_第12页
第12页 / 共30页
简单文件管理系统.docx_第13页
第13页 / 共30页
简单文件管理系统.docx_第14页
第14页 / 共30页
简单文件管理系统.docx_第15页
第15页 / 共30页
简单文件管理系统.docx_第16页
第16页 / 共30页
简单文件管理系统.docx_第17页
第17页 / 共30页
简单文件管理系统.docx_第18页
第18页 / 共30页
简单文件管理系统.docx_第19页
第19页 / 共30页
简单文件管理系统.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

简单文件管理系统.docx

《简单文件管理系统.docx》由会员分享,可在线阅读,更多相关《简单文件管理系统.docx(30页珍藏版)》请在冰点文库上搜索。

简单文件管理系统.docx

简单文件管理系统

 

数据结构课程设计

 

题目:

简单文件管理系统

学生姓名:

丁东伟,黄益辉,冯建豪

学号:

丁东伟201441402143,冯建豪201441402140,黄益辉201441402131

院(系):

计算机学院

专业班级:

计算机科学与技术1班

一、需求分析

Generaldescription总体概述

AbouttheProject项目介绍

这是一个简单商品分类管理系统,对商品进行分类管理.,主要功能:

1、浏览当前商品分类目录的所有内容(子分类和当前目录下的商品)

2、切换当前分类目录到上一级分类目录或下一级子分类目录(扩展,切换到任何一个目录)或直接切换到根目录

3、在当前分类目录下添加新商品目录,或者添加新商品信息。

4、在当前目录下删除某个子商品分类或某个商品信息

5、在当前目录下修改某个商品或分类目录的信息

6、根据某个商品编号(或名称)在整个系统中查找某个商品并显示全部信息

EnvironmentofProduct产品环境介绍

本系统为Windows控制台应用程序,编程语言为C语言,在VC++6.0下编译。

Softwarefunction软件功能

Usercharacteristics用户特征

本软件适合小型商场的商品分类,无年龄限制,用户需会使用键盘及鼠标。

SpecificRequirements具体需求

2.1到根目录

1.介绍:

转到文件目录的根目录;

2.输入:

CatalogNode*pCurrCatNode

3.处理:

将当前目录指针pCurrCatNode指向根目录root

4.输出:

true或者false

2.2到子目录

1.介绍:

转到当前文件目录的子目录;

2.输入:

CatalogNode*pCurrCatNode

3.处理:

判断当前目录指针pCurrCatNode的子目录指针choiceCatalog是否为空,若为空返回false,否则返回true

5.输出:

true或者false

2.3到父目录

1.介绍:

转到当前文件目录的父目录;

2.输入:

CatalogNode*pCurrCatNode

3.处理:

判断当前目录指针pCurrCatNode的父目录指针fatherCatalogNode是否为空,若为空返回false,否则返回true

4.输出:

true或者false

2.4添加目录

1.介绍:

在当前文件目录下添加一个新的子目录;

2.输入:

CatalogNode*currCatalogNode,CatalogNode*catNode

3.处理:

输入新目录名、创建年月日,调用目录添加函数addCatalog_fun(),若添加成功则返回true,否则返回false

4.输出:

true或者false

2.5修改目录

1.介绍:

修改当前目录下的一个子目录;

2.输入:

CatalogNode*currCatalogNode,CatalogNode*catNode

3.处理:

选择目录序号,修改所选目录的名称。

成功则返回true,否则返回false

4.输出:

true或者false

2.6删除目录

1.介绍:

删除当前目录下的一个子目录;

2.输入:

CatalogNode*currCatalogNode,CatalogNode*catNode

3.处理:

选择当前目录序号,删除所选序号的目录,成功则返回true,否则返回false

4.输出:

true或者false

2.7查看商品

1.介绍:

查看当前目录下的一个商品信息;

2.输入:

CatalogNode*rootCatNode,string*fileNumber

3.处理:

输入当前目录的一个商品的序号,显示该商品的信息。

查看成功则返回true,否则返回false

4.输出:

true或者false

2.8修改商品

1.介绍:

在当前文件目录下添加一个新的商品;

2.输入:

void

3.处理:

输入当前目录的一个商品的序号,修改该商品的信息。

修改成功则返回true,否则返回false

4.输出:

true或者false

2.9删除商品

1.介绍:

修改当前文件目录下的一个商品信息;

2.输入:

Catalog*currCatalog,FileNode*fileNode

3.处理:

输入当前目录的一个商品的序号,删除该商品的信息。

删除成功则返回true,否则返回false

4.输出:

true或者false

2.10添加商品

1.介绍:

删除当前文件目录下的一个商品信息;

2.输入:

void

3.处理:

先当前目录添加一个新的商品信息,若添加成功则返回true,否则返回false

4.输出:

true或者false

2.11查询商品

1.介绍:

按商品的编号在所有目录查找相符的商品信息并显示。

2.输入:

CatalogNode*rootCatNode,string*fileNumber

3.处理:

输入一个商品的编号,在所有目录进行查找该商品编号,若查找成功则返回true,否则返回false

4.输出:

true或者false

二、系统设计

1概要设计

1.1软件系统上下文定义

简单商品分类管理系统,对商品进行分类管理。

1.2DesignConsiderations设计思路

1)采用技术

本系统为Windows控制台应用程序,编程语言为C语言,开发工具为VC++6.0,在win7系统专业版下进行编程。

2)工程源码结构

1.3SystemArchitecture系统结构

系统功能包括到根目录,到父目录,到子目录,添加目录,修改目录,删除目录,查看商品,添加商品,修改商品,删除商品查询商品等11个模块。

1 到根目录:

转到文件目录的根目录;

2 到父目录:

转到当前文件目录的父目录;

3 到子目录:

转到当前文件目录的子目录;

4 添加目录:

在当前文件目录下添加一个新的子目录;

5 修改目录:

修改当前目录下的一个子目录;

6 删除目录:

删除当前目录下的一个子目录;

7 查看商品:

查看当前目录下的一个商品信息;

8 添加商品:

在当前文件目录下添加一个新的商品;

9 修改商品:

修改当前文件目录下的一个商品信息;

10 删除商品:

删除当前文件目录下的一个商品信息;

11 查询商品:

按商品的编号在所有目录查找相符的商品信息并显示。

1.4InterfaceDescription接口描述

程序分为三个层次:

界面层负责界面显示功能,包括选择菜单、目录及商品的输出;业务逻辑层负责调用数据访问层的方法,完成对菜单选项处理、目录及商品添加、修改和删除功能;数据访问层负责各项函数的实现,包括目录下文件链表及子目录链表中的信息。

1DataStructureDesignDescription数据结构设计

//字串结构体

typedefstruct

{

chars[81];

}string;

//商品文件结构体

typedefstruct

{

stringnumber;

stringname;

floatprice;

intcount;

}File;

//文件节点结构体

structFileNode

{

Filefile;

FileNode*nextFileNode;

};

//分类目录结构体

typedefstruct

{

stringname;

intbuildYear;//建立年份

intbuildMonth;//建立月份

intbuildDay;//建立日

FileNode*filesHead;//目录下文件链表头指针

}Catalog;

//目录节点结构体

structCatalogNode

{

CatalogNode*fatherCatalogNode;//父目录指针

Catalogcat;//目录

CatalogNode*nextCatNode;//下一个目录指针

CatalogNode*sonsCatHead;//子目录链表头指针

};

UIDesign界面设计

1)界面原型

2)界面说明

1 到根目录:

转到文件目录的根目录;

2 到父目录:

转到当前文件目录的父目录;

3 到子目录:

转到当前文件目录的子目录;

4 添加目录:

在当前文件目录下添加一个新的子目录;

5 修改目录:

修改当前目录下的一个子目录;

6 删除目录:

删除当前目录下的一个子目录;

7 查看商品:

查看当前目录下的一个商品信息;

8 添加商品:

在当前文件目录下添加一个新的商品;

9 修改商品:

修改当前文件目录下的一个商品信息;

10 删除商品:

删除当前文件目录下的一个商品信息;

11 查询商品:

按商品的编号在所有目录查找相符的商品信息并显示。

DetailedDesignofModule模块详细设计

2.1界面层

/**面向数据结构内的函数**********************************************************************/

 

//功能:

初始化文件结构体函数

//参数:

f-所需初始化的文件

//返回值:

true-成功,false-失败

boolinitFile(File*f)

{

f->count=-1;

f->name.s[0]='\0';

f->number.s[0]='\0';

f->price=-1;

returntrue;

}

 

//功能:

复制文件函数

//参数:

toFile-复制的目标文件f-复制文件的模板

//返回值:

true-成功,false-失败

boolcopyFile(File*toFile,File*f)

{

toFile->count=f->count;

strcpy(toFile->name.s,f->name.s);

strcpy(toFile->number.s,f->number.s);

toFile->count=f->count;

toFile->price=f->price;

returntrue;

}

 

//功能:

初始化目录结构体函数

//参数:

cat-所需初始化的目录

//返回值:

true-成功,false-失败

boolinitCatalog(Catalog*cat)

{

cat->name.s[0]='\0';

cat->buildDay=-1;

cat->buildMonth=-1;

cat->buildYear=-1;

cat->filesHead=NULL;

returntrue;

}

//功能:

初始化目录节点函数

//参数:

catNode-所需初始化目录的节点

//返回值:

true-成功,false-失败

boolinitCatalogNode(CatalogNode*catNode)

{

initCatalog(&catNode->cat);

catNode->fatherCatalogNode=NULL;

catNode->nextCatNode=NULL;

catNode->sonsCatHead=NULL;

returntrue;

}

/**************************************************************/

 

/*****面向服务层的函数*********************************************************/

//功能:

添加文件函数

//参数:

currCatalog-当前目录file-所需添加的文件

//返回值:

true-成功,false-失败

booladdFile(Catalog*currCatalog,File*file)

{

FileNode*fn=(FileNode*)malloc(sizeof(structFileNode));

copyFile(&(fn->file),file);

fn->nextFileNode=NULL;

FileNode*fnTemp=currCatalog->filesHead;

currCatalog->filesHead=fn;

fn->nextFileNode=fnTemp;

returntrue;

}

//功能:

删除文件函数

//参数:

currCatalog-当前目录file-所需删除文件的所在节点

//返回值:

true-成功,false-失败

booldelFile(Catalog*currCatalog,FileNode*fileNode)

{

FileNode*pFileNode=currCatalog->filesHead;

FileNode*p1FileNode=pFileNode;

while(pFileNode!

=NULL)

{

if(pFileNode==fileNode)break;

p1FileNode=pFileNode;

pFileNode=pFileNode->nextFileNode;

}

if(pFileNode==NULL)

{

printf("Thefileisnoexit!

");

returnfalse;

}

else

{

if(pFileNode==currCatalog->filesHead)currCatalog->filesHead=pFileNode->nextFileNode;

else

{

p1FileNode->nextFileNode=pFileNode->nextFileNode;

}

returntrue;

}

}

//功能:

查询文件函数

//参数:

rootCatNode-根目录file-所需查询商品编号

//返回值:

查询到的商品文件节点,查询失败返回NULL

File*searchFile(CatalogNode*rootCatNode,string*fileNumber)

{

FileNode*pfn=rootCatNode->cat.filesHead;

while(pfn!

=NULL)

{

if(strcmp(pfn->file.number.s,fileNumber->s)==0)return&(pfn->file);

pfn=pfn->nextFileNode;

}

CatalogNode*pcn=rootCatNode->sonsCatHead;

File*f=NULL;

while(pcn!

=NULL)

{

f=searchFile(pcn,fileNumber);

if(f!

=NULL)returnf;

pcn=pcn->nextCatNode;

}

returnf;

}

//功能:

添加目录函数

//参数:

currCatalog-当前目录catNode-所需添加目录的节点

//返回值:

true-成功,false-失败

booladdCatalog(CatalogNode*currCatalogNode,CatalogNode*catNode)

{

CatalogNode*fnTemp=currCatalogNode->sonsCatHead;

currCatalogNode->sonsCatHead=catNode;

catNode->nextCatNode=fnTemp;

catNode->fatherCatalogNode=currCatalogNode;

returntrue;

}

//功能:

删除目录函数

//参数:

currCatalog-当前目录catNode-所需删除目录的节点

//返回值:

true-成功,false-失败

booldelCatalog(CatalogNode*currCatalogNode,CatalogNode*catNode)

{

CatalogNode*pCatNode=currCatalogNode->sonsCatHead;

CatalogNode*p1CatNode=pCatNode;

while(pCatNode!

=NULL)

{

if(pCatNode==catNode)break;

p1CatNode=pCatNode;

pCatNode=pCatNode->nextCatNode;

}

if(pCatNode==NULL)

{

printf("Thecatalogisnoexit!

");

returnfalse;

}

else

{

if(pCatNode==currCatalogNode->sonsCatHead)currCatalogNode->sonsCatHead=pCatNode->nextCatNode;

else

{

p1CatNode->nextCatNode=pCatNode->nextCatNode;

}

returntrue;

}

}

2.2业务逻辑层

//功能:

添加目录服务函数

//参数:

currCatalog-当前目录catNode-所需添加目录的节点

//返回值:

true-成功,false-失败

booladdCatalog_fun(CatalogNode*currCatalogNode,CatalogNode*catNode)

{

returnaddCatalog(currCatalogNode,catNode);

}

//功能:

删除目录服务函数

//参数:

currCatalog-当前目录catNode-所需删除目录的节点

//返回值:

true-成功,false-失败

booldelCatalog_fun(CatalogNode*currCatalogNode,CatalogNode*catNode)

{

returndelCatalog(currCatalogNode,catNode);

}

//功能:

添加文件服务函数

//参数:

currCatalog-当前目录file-所需添加的文件

//返回值:

true-成功,false-失败

booladdFile_fun(Catalog*currCatalog,File*f)

{

returnaddFile(currCatalog,f);

}

//功能:

删除文件服务函数

//参数:

currCatalog-当前目录file-所需删除文件的所在节点

//返回值:

true-成功,false-失败

booldelFile_fun(Catalog*currCatalog,FileNode*fileNode)

{

returndelFile(currCatalog,fileNode);

}

//功能:

查询文件服务函数

//参数:

rootCatNode-根目录file-所需查询商品编号

//返回值:

查询到的商品文件节点,查询失败返回NULL

File*searchFile_fun(CatalogNode*rootCatNode,string*fileNumber)

{

returnsearchFile(rootCatNode,fileNumber);

}

 

//功能:

输入数值函数

//参数:

//返回值:

返回输入的数值,输入非法返回-1

intinputANumber()

{

charstr[16];

intres;

fflush(stdin);

scanf("%s",str);

inti=0;

while(str[i]!

='\0')

{

if(str[i]<'0'&&str[i]>'9')return-1;

i++;

}

res=0;

i--;

intt=i;

while(i>=0)

{

res+=(int)(pow(10,t-i)*(str[i]-'0'));

i--;

}

returnres;

}

2.3数据访问层

/**面向数据结构内的函数**********************************************************************/

//功能:

初始化文件结构体函数

//参数:

f-所需初始化的文件

//返回值:

true-成功,false-失败

boolinitFile(File*f)

{

f->count=-1;

f->name.s[0]='\0';

f->number.s[0]='\0';

f->price=-1;

returntrue;

}

//功能:

复制文件函数

//参数:

toFile-复制的目标文件f-复制文件的模板

//返回值:

true-成功,false-失败

boolcopyFile(File*toFile,File*f)

{

toFile->count=f->count;

strcpy(toFile->name.s,f->name.s);

strcpy(toFile->number.s,f->number.s);

toFile->count=f->count;

toFile->price=f->price;

returntrue;

}

//功能:

初始化目录结构体函数

//参数:

cat-所需初始化的目录

//返回值:

true-成功,false-失败

boolinitCatalog(Catalog*cat)

{

cat->name.s[0]='\0';

cat->buildDay=-1;

cat->buildMonth=-1;

cat->buildYear=-1;

cat->filesHead=NULL;

returntrue;

}

//功能:

初始化目录节点函数

//参数:

catNode-所需初始化目录的节点

//返回值:

true-成功,false-失败

boolinitCatalogNode(CatalogNode*catNode)

{

initCatalog(&catNode->cat);

catNode->fatherCatalogNode=NULL;

catNode->nextCatNode=NULL;

catNode->sonsCatHead=NULL;

returntrue;

}

/**************************************************************/

/*****面向服务层的函数*********************************************************

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2