U盘管理系统数据结构与算法课程设计文档格式.docx
- 文档编号:1482897
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:21
- 大小:268.03KB
U盘管理系统数据结构与算法课程设计文档格式.docx
《U盘管理系统数据结构与算法课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《U盘管理系统数据结构与算法课程设计文档格式.docx(21页珍藏版)》请在冰点文库上搜索。
5.实现对U盘信息的删除,在栈中找出需要删除的U盘,并进行删除。
6.实现对U盘信息的显示,将存入栈中的信息全部显示出来,不改变栈中的数据。
1.2测试数据
1.打开系统直接选择录入,并输入以下信息。
000016金士顿162112
000014金士顿321212
000012金士顿162211
001022台电81212
001011台电322112
000112惠普161222
000114惠普82212
2.读取信息后,查找到所有容量为16G的U盘,输入以下信息。
16
3.修改第二条U盘信息,输入以下信息。
2000018金士顿81212
4.删除所有名字为金士顿,容量为16G的U盘,输入以下信息。
金士顿16
2概要设计
2.1系统功能模块
系统功能图(2-1-1)
2.2功能介绍
1.录入信息:
voidadd()。
初始U盘信息或者中途添加U盘信息,并录入二进制文件。
2.读取信息:
voidread()。
将二进制文件中的所有信息读取到顺序栈中,方便后面的各种操作。
3.显示信息:
voidshow()。
显示所有的U盘信息。
4.修改信息:
voidalter()。
找到要修改的U盘信息,并输入修改后的新信息。
5.删除信息:
voiddel()。
按名字和容量查找到要删除的U盘,进行一条或多条信息的删除。
6.查找信息:
voidfind()。
按容量进行查找。
7.保存信息:
voidsave()。
在修改或删除操作后,确认对信息的更新,将新信息录入二进制文件中。
3详细设计
3.1 主函数的实现
voidmain()//主函数
{
intoption;
boolexit=0;
while(!
exit)
{
cout<
<
"
︿﹀︿﹀︿﹀︿﹀︿"
<
endl;
*U盘管理系统*"
﹀︿﹀︿﹀︿﹀︿﹀"
请选择操作:
"
1.录入U盘信息"
2.读取U盘信息"
3.显示U盘信息"
4.修改U盘信息"
cout<
5.删除U盘信息"
6.查找U盘信息"
7.保存U盘信息"
8.退出!
你的选择:
;
cin>
>
option;
switch(option)
{
case1:
add();
break;
case2:
read();
case3:
show();
case4:
alter();
case5:
del();
case6:
find();
case7:
save();
case8:
exit=1;
default:
cout<
请输入1-7"
break;
}
if(option!
=8)
system("
pause"
);
system("
cls"
}
}
3.2功能函数实现
1.录入U盘信息功能:
手动输入U盘信息,该功能会将你输入的信息录入名为"
udisk.dat"
的二进制文本文件中。
voidadd()//录入或添加记录
{
udisku,n;
charj,b,m,x;
cout<
请输入编号:
cin>
u.number;
请输入名字:
u.name;
请输入容量:
u.capacity;
请选择接口:
1.usb2.02.usb3.0"
j;
if(j=='
1'
)strcpy_s(u.inferface,"
usb2.0"
elsestrcpy_s(u.inferface,"
usb3.0"
请选择是否备份:
1.yes2.no"
b;
if(b=='
)u.back_up='
Y'
elseu.back_up='
N'
请选择是否加密:
m;
if(m=='
)u.encrypt='
elseu.encrypt='
请选择是否写保护:
x;
if(x=='
)u.write_protect='
elseu.write_protect='
fstreamoutf;
outf.open("
ios:
:
app|ios:
binary);
if(!
outf)
cout<
打开文件失败!
!
else
outf.write((char*)&
u,sizeof(udisk));
outf.close();
ss1.push(u);
录入成功!
}
2.读取U盘信息功能:
点击此选项,程序会自动将二进制文件"
中的记录压到顺序栈ss1中,并提示读取记录的个数。
voidread()//读取文本信息
fstreaminf("
in|ios:
inf)
else{
ss1.isempty())
ss1.pop();
udisku;
inf.eof())
inf.read((char*)&
ss1.push(u);
ss1.pop();
inf.close();
读取成功,共有"
ss1.count()<
条记录"
3.显示U盘信息功能:
点击此选项,系统直接将所有的U盘信息显示出来,若无信息,则显示无信息。
voidshow()//显示U盘信息
if(ss1.count()==0)cout<
未读取或无U盘信息!
inti=0;
番号"
setw(10)<
编号"
setw(w)<
名字"
容量"
接口"
是否备份"
是否加密"
是否写保护"
u=ss1.pop();
ss2.push(u);
++i<
u.number<
u.name<
setw(7)<
u.capacity<
setw(12)<
u.inferface<
setw(5)<
u.back_up<
u.encrypt<
u.write_protect<
ss2.isempty())
ss1.push(ss2.pop());
4.修改U盘信息功能:
点击此选项,系统会自动显示出所有的U盘信息,你只需选择要修改的U盘的番号,并输入修改后的信息,修改后需点击保存选项将修改的信息存入二进制文件中。
voidalter()//修改U盘信息
inta,i=1;
udisku;
show();
请选择您要修改U盘的番号:
cin>
a;
if(a>
ss1.count())cout<
您输入有误!
else
while(i<
a)
ss2.push(ss1.pop());
i++;
请输入新编号:
请输入新名字:
请输入新容量:
if(j=='
)strcpy_s(u.inferface,"
elsestrcpy_s(u.inferface,"
if(b=='
elseu.back_up='
if(m=='
elseu.encrypt='
if(x=='
elseu.write_protect='
while(!
ss1.push(ss2.pop());
修改成功!
5.删除U盘信息功能:
点击此选项,系统会自动显示出所有的U盘信息,你只需选择要删除的U盘的番号,系统会自动删除你选择的信息,删除后需点击保存选项将信息存入二进制文件中。
voiddel()//删除U盘信息
inti=0;
udisku,n;
请输入您要删除U盘的名字:
cin>
n.name;
请输入您要删除U盘的容量:
n.capacity;
ss1.isempty())
if(!
strcmp(u.name,n.name)&
&
u.capacity==n.capacity)
i++;
else
ss2.push(u);
if(i)cout<
成功删除"
i<
条信息!
elsecout<
无此属性的U盘!
6.查找U盘信息功能:
输入你要查找的U盘的容量,程序后自动输出所有满足要求的信息,若无,则显示未找到。
voidfind()//按容量查找
intcapa,i=0,j=0;
请输入您要查找U盘的容量:
capa;
if(u.capacity==capa)
if(j==0)
{
cout<
j++;
}
if(i==0)
未找到!
4调试分析
4.1调试
对字符串的比较,直接用“==”,导致删除操作无法实现。
最后查阅资料,才发现有strcmp()函数进行比较。
4.2测试
1、打开系统软件,选择录入信息,并依次输入测试信息(如图4-2-1、4-2-2)
(图4-2-1)
(图4-2-2)
2、将信息读取到顺序栈中(如图4-2-3)
(图4-2-3)
3、显示U盘信息(如图4-2-4)
(图4-2-4)
4、按容量大小查找U盘信息(如图4-2-5)
(图4-2-5)
5、点击修改U盘信息,选择要修改的记录,输入修改结果,并保存(如图4-2-6、4-2-7、4-2-8)
(图4-2-6)
(图4-2-7)
(图4-2-8)
6、点击删除U盘信息,选择要删除的记录,并保存(如图4-2-9、4-2-10、4-2-11)
(图4-2-9)
(图4-2-10)
(图4-2-11)
5用户使用说明
启动该管理系统后,根据界面显示的选项选择你所要进行的功能。
若是第一次启动,请先选择录入U盘信息,因为此时文本文件为空,执行其他功能无效。
若非第一次启动,在选择显示、修改、查找、删除功能之前要先选择读取U盘信息,因为尽管文本文件中有记录,但顺序栈为空,而这些功能都是在栈内操作。
当栈内数据有改动(进行过修改或删除操作),要保存改动后的信息,一定要选择保存U盘信息选项,否则文本文件中的记录不会发生改动,修改无效。
6测试结果
基本功能实现无错,基本能识别不正确的测试数据,并能给出错误输入的提示。
但界面设计不够美观,而且有两个bug未修复,一个就是当输入相同U盘信息时,系统不能识别出来,依然保存在文本中。
之所以存在这个bug,是因为我对字符数组的比较还不够熟悉,不知道怎么实现。
还有一个是,我用的编程软件VC++2013,当将这个管理系统移植到其他版本的软件时会提示错误且不能运行。
结论
本次课程设计用C++编写,运用顺序栈存储结构,完成增、删、改、查等功能,并且都能运行成功。
致谢
致谢指导老师周立章!
参考文献
[1]杨宝刚.开展企业管理信息化工作的步骤[J].企业管理.2002.(11).12~15
[2]Islamabad.Softwaretoolsforforgerydetection[J].Businessline.2001.(5).29~32
[3][Cline]
Marshall
P.
Cline
and
Greg
A.
Lomow,
C++
FAQs,
Addison-Wesley,
1995
[4][Eckel]
Bruce
Eckel,
Thinking
in
C++(C++
编程思想,刘宗田
等译),机械工业出版社,2000
[5][Maguire]
Steve
Maguire,
Writing
Clean
Code(编程精粹,姜静波
等译),电子工业出版社,1993
[6][Meyers]
Scott
Meyers,
Effective
C++,
1992
[7][Summit]
Summit,
C
Programming
1996
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 管理 系统 数据结构 算法 课程设计