U盘管理系统数据结构课程设计.doc

上传人:精*** 文档编号:865427 上传时间:2023-10-05 格式:DOC 页数:21 大小:340.08KB
下载 相关 举报
U盘管理系统数据结构课程设计.doc_第1页
第1页 / 共21页
U盘管理系统数据结构课程设计.doc_第2页
第2页 / 共21页
U盘管理系统数据结构课程设计.doc_第3页
第3页 / 共21页
U盘管理系统数据结构课程设计.doc_第4页
第4页 / 共21页
U盘管理系统数据结构课程设计.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、 U盘管理系统目 录 1 需求分析11.1任务与分析11.2测试数据12 概要设计22.1系统功能模块22.2功能介绍23 详细设计33.1主函数的实现33.2功能函数实现44 调试分析104.1调试104.2测试105 用户使用说明166 测试结果16结 论17摘 要 本课题是编写一个U盘管理系统。将所有U盘信息录入一个二进制文件中,要进行操作时(增、删、改、查),把这些信息读取到顺序栈中,完全在顺序栈内操作,确保原始数据的安全性。当已确认要对原始数据进行更新操作时,再把栈中的信息录入二进制文件中。关键词:管理系统;顺序栈;安全性引 言 本课题名为U盘管理系统,该系统通过C+编程语言,并借助

2、数据结构中的栈和文件流操作实现。系统共七个功能,分别实现对U盘信息的录入、显示、查找、删除等。这个系统大大减小人工管理U盘信息的难度和复杂度,且操作简单易懂,该管理人员带来莫大的好处。1 需求分析 1.1任务与分析 1.实现对U盘信息的录入,并以二进制文件保存。由于U盘信息非单一数据类型,所以需要借助结构体。2. 实现对U盘信息的读取(从二进制文本中),并将读取的信息存入顺序栈结构体中。此功能很重要,后面的功能实现都要借助栈来进行。3. 实现对U盘信息的查找,输入要查找的U盘容量进行查找。不改变栈中的数据。4. 实现对U盘信息的修改,在栈中找出需要修改的U盘,并进行修改。改变后的信息最终存入文

3、本中。5. 实现对U盘信息的删除,在栈中找出需要删除的U盘,并进行删除。改变后的信息最终存入文本中。6. 实现对U盘信息的显示,将存入栈中的信息全部显示出来,不改变栈中的数据。1.2测试数据 1.打开系统直接选择录入,并输入以下信息。000016 金士顿 16 2 1 1 2000014 金士顿 32 1 2 1 2000012 金士顿 16 2 2 1 1001022 台电 8 1 2 1 2001011 台电 32 2 1 1 2000112 惠普 16 1 2 2 2000114 惠普 8 2 2 1 22.读取信息后,查找到所有容量为16G的U盘,输入以下信息。163.修改第二条U盘信

4、息,输入以下信息。2 000018 金士顿 8 1 2 1 24删除所有名字为金士顿,容量为16G的U盘,输入以下信息。金士顿 162 概要设计 2.1系统功能模块 U盘管理系统录入信息查找信息读取信息显示信息修改信息删除信息保存信息保存信息系统功能图(2-1-1)2.2功能介绍1.录入信息:void add()。初始U盘信息或者中途添加U盘信息,并录入二进制文件。2.读取信息:void read()。将二进制文件中的所有信息读取到顺序栈中,方便后面的各种操作。3.显示信息:void show()。显示所有的U盘信息。4.修改信息:void alter()。找到要修改的U盘信息,并输入修改后的

5、新信息。5.删除信息:void del()。按名字和容量查找到要删除的U盘,进行一条或多条信息的删除。6.查找信息:void find()。按容量进行查找。7.保存信息:void save()。在修改或删除操作后,确认对信息的更新,将新信息录入二进制文件中。3 详细设计3.1主函数的实现void main() /主函数int option; bool exit = 0;while (!exit)cout endl;cout U盘管理系统 endl;cout endl;cout 请选择操作: endl;cout 1.录入U盘信息 endl;cout 2.读取U盘信息 endl;cout 3.显示

6、U盘信息 endl;cout 4.修改U盘信息 endl; cout 5.删除U盘信息 endl;cout 6.查找U盘信息 endl;cout 7.保存U盘信息 endl;cout 8.退出! endl;cout option;switch (option)case 1:add(); break;case 2:read(); break;case 3:show(); break;case 4:alter(); break;case 5:del(); break;case 6:find(); break;case 7:save(); break;case 8:exit = 1; break;d

7、efault:cout 请输入1-7 endl;break;if (option != 8)system(pause); system(cls);3.2功能函数实现1.录入U盘信息功能:手动输入U盘信息,该功能会将你输入的信息录入名为udisk.dat的二进制文本文件中。void add() /录入或添加记录udisk u,n; char j, b, m, x;cout u.number;cout u.name;cout u.capacity;cout j;if (j = 1) strcpy_s(u.inferface,usb2.0);else strcpy_s(u.inferface,usb

8、3.0); cout b;if (b = 1) u.back_up = Y;else u.back_up = N;cout m;if (m = 1) u.encrypt = Y;else u.encrypt = N;cout x;if (x = 1) u.write_protect = Y;else u.write_protect = N;fstream outf;outf.open(udisk.dat, ios:app|ios:binary);if (!outf)cout 打开文件失败! endl;elseoutf.write(char*)&u, sizeof(udisk);outf.clo

9、se();ss1.push(u);cout 录入成功! endl;2. 读取U盘信息功能:点击此选项,程序会自动将二进制文件udisk.dat中的记录压到顺序栈ss1中,并提示读取记录的个数。void read() /读取文本信息fstream inf(udisk.dat, ios:in | ios:binary);if (!inf)cout 打开文件失败! endl;elsewhile (!ss1.isempty()ss1.pop();udisk u;while (!inf.eof()inf.read(char*)&u, sizeof(udisk);ss1.push(u);ss1.pop()

10、;inf.close();cout 读取成功,共有ss1.count()条记录 endl;3. 显示U盘信息功能:点击此选项,系统直接将所有的U盘信息显示出来,若无信息,则显示无信息。void show() /显示U盘信息if (ss1.count() = 0)cout 未读取或无U盘信息! endl;elseint i = 0;cout 番号 setw(10) 编号 setw(w) 名字 setw(10) 容量 setw(10) 接口 setw(10) 是否备份 setw(10) 是否加密 setw(10) 是否写保护 endl;udisk u;while (!ss1.isempty()u

11、= ss1.pop();ss2.push(u);cout +i setw(10) u.number setw(w) u.name setw(7) u.capacity setw(12) u.inferface setw(5) u.back_up setw(10) u.encrypt setw(10) u.write_protect endl;while (!ss2.isempty()ss1.push(ss2.pop();4.修改U盘信息功能:点击此选项,系统会自动显示出所有的U盘信息,你只需选择要修改的U盘的番号,并输入修改后的信息, 修改后需点击保存选项将修改的信息存入二进制文件中。void

12、 alter() /修改U盘信息if (ss1.count() = 0)cout 未读取或无U盘信息! endl;elseint a, i = 1; udisk u;show();cout a;if (a ss1.count() cout 您输入有误! endl;elsewhile (i a)ss2.push(ss1.pop();i+;u = ss1.pop(); char j, b, m, x;cout u.number;cout u.name;cout u.capacity;cout j;if (j = 1) strcpy_s(u.inferface, usb2.0);else strcp

13、y_s(u.inferface, usb3.0);cout b;if (b = 1) u.back_up = Y;else u.back_up = N;cout m;if (m = 1) u.encrypt = Y;else u.encrypt = N;cout x;if (x = 1) u.write_protect = Y;else u.write_protect = N;ss1.push(u);while (!ss2.isempty()ss1.push(ss2.pop();cout 修改成功! endl;5. 删除U盘信息功能:点击此选项,系统会自动显示出所有的U盘信息,你只需选择要删除

14、的U盘的番号,系统会自动删除你选择的信息,删除后需点击保存选项将信息存入二进制文件中。void del() /删除U盘信息if (ss1.count() = 0)cout 未读取或无U盘信息! endl;elseshow();int i=0;udisk u,n;cout n.name;cout n.capacity;while (!ss1.isempty() u = ss1.pop();if(!strcmp(u.name,n.name)&u.capacity=n.capacity)cout u.number setw(w) u.name setw(7) u.capacity setw(12)

15、u.inferface setw(5) u.back_up setw(10) u.encrypt setw(10) u.write_protect endl; i+;elsess2.push(u);while (!ss2.isempty() ss1.push(ss2.pop();if(i) cout 成功删除i条信息! endl;else cout 无此属性的U盘! endl; 6.查找U盘信息功能:输入你要查找的U盘的容量,程序后自动输出所有满足要求的信息,若无,则显示未找到。void find() /按容量查找if (ss1.count() = 0)cout 未读取或无U盘信息! endl

16、;elseint capa, i = 0, j = 0;cout capa;udisk u;while (!ss1.isempty()u = ss1.pop();if (u.capacity = capa)if (j = 0)cout 编号 setw(w) 名字 setw(10) 容量 setw(10) 接口 setw(10) 是否备份 setw(10) 是否加密 setw(10) 是否写保护 endl;j+;cout u.number setw(w) u.name setw(7) u.capacity setw(12) u.inferface setw(5) u.back_up setw(1

17、0) u.encrypt setw(10) u.write_protect endl;i+;ss2.push(u);if (i = 0)cout 未找到! endl;while (!ss2.isempty()ss1.push(ss2.pop();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

18、)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盘信息,因为尽管文本文件

19、中有记录,但顺序栈为空,而这些功能都是在栈内操作。当栈内数据有改动(进行过修改或删除操作),要保存改动后的信息,一定要选择保存U盘信息选项,否则文本文件中的记录不会发生改动,修改无效。6 测试结果 基本功能实现无错,基本能识别不正确的测试数据,并能给出错误输入的提示。但界面设计不够美观,而且有两个bug未修复,一个就是当输入相同U盘信息时,系统不能识别出来,依然保存在文本中。之所以存在这个bug,是因为我对字符数组的比较还不够熟悉,不知道怎么实现。还有一个是,我用的编程软件VC+2013,当将这个管理系统移植到其他版本的软件时会提示错误且不能运行。结 论 本次课程设计用C+编写,运用顺序栈存储

20、结构,完成增、删、改、查等功能,并且都能运行成功。 致 谢 致谢指导老师XXX!参考文献 1杨宝刚.开展企业管理信息化工作的步骤J.企业管理.2002.(11).12152Islamabad. Software tools for forgery detectionJ. Business line.2001. (5). 2932 3ClineMarshallP.ClineandGregA.Lomow,C+FAQs,Addison-Wesley,1995 4EckelBruceEckel,ThinkinginC+(C+编程思想,刘宗田等译),机械工业出版社,2000 5MaguireSteveMaguire,WritingCleanCode(编程精粹,姜静波等译),电子工业出版社,1993 6MeyersScottMeyers,EffectiveC+,Addison-Wesley,1992 7SummitSteveSummit,CProgrammingFAQs,Addison-Wesley,199619

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 技术资料 > 课程设计

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922