重庆科技学院《数据结构》课程设计报告学院:_电气与信息工程学院_ 专业班级:计科2010-X学生姓名: XXX 学号: XXX设计地点(单位)__ _ 计算机基础自主学习中心 __ _ _设计题目:____ __ __图书检索系统 _____________ ____完成日期:2012年 1 月 13 日指导教师评语: ________________________________________________________________________________________________________ __________________________________________________________________________________ _____________________________________ __________ _成绩(五级记分制):______ __________指导教师(签字):________ ________重庆科技学院课程设计任务书设计题目:图书检索系统的设计系主任:雷亮指导教师:向毅/彭军/王双明/龙冯文/黄永文2011年 12月 26日摘要随着时代的发展,科技的进步,传统的图书管理是必然会被计算机上的图书管理系统所替代;和人工管理图书相比,图书管理系统具有较大的优点,例如:查找方便、检索迅速、整理方便等。
在本课程设计是正是用于图书的管理,本系统是基于数据结构中的链表完成的。
在本系统中,具有新增图书、修改图书信息、删除图书信息、查找图书、根据不同的图书内容进行排序、还可将图书信息写入文件中。
在整个运行过程中,本系统运用c++文件输入输出流对信息进行存储,对于图书的排序,本系统运用了冒泡排序和简单选择排序,可以清楚地将图书信息显示在屏幕上。
关键字:数据结构链表 c++ 排序目录1 设计内容和要求 (1)1.1 图书检索系统基本要求 (1)1.2 主要功能的设计要求 (2)2 需求分析 (3)2.1 界面设计分析 (3)2.2 文件保存方法 (3)3 系统设计 (5)3.1 总体功能分析 (5)3.2 总体流程图 (5)4 主要功能设计 (6)4.1 新增图书模块 (6)4.2 查找图书模块 (6)4.3 修改图书模块 (7)4.4 删除图书模块 (7)4.5 图书信息排序模块 (8)5系统代码分析与测试 (9)5.1 系统主要代码分析 (9)5.2 新建追加信息代码分析 (11)5.3 查找修改删除代码分析 (12)5.5 图书排序代码分析 (14)总结 (18)致谢 (19)参考文献 (20)1 设计内容和要求1.1 图书检索系统基本要求(1)图书检索系统主菜单界面的设计:程序采用的是使用者根据系统的界面提示而选择相应功能的控制型界面,只需跟着系统提示即可进行功能的选择,界面效果图如下:图1.1.1 主菜单界面效果图(2)其他界面的设计:在其他界面功能运行完成时,界面会显示“请按任意键继续”字样(如下图1.1.2),当使用者按任意键后,屏幕即可接着显示提示用户的界面,图1.1.2 界面提示字样图(3)图书检索系统数据结构要求:本系统主要是运用链表将图书信息存储在内存上,其次运用文件输入输出流将链表中的信息写入相应文件夹中。
总之,在进行系统的运行时,系统将会自动将图书信息存储在链表中;在系统关闭时,图书信息将存储在文件夹中,且再次打开不会消失或者发生改变。
1.2 主要功能的设计要求(1)新增图书功能:此功能用于初始建库和追加图书信息,且在每加如一种新书时总的类型个数也会有相应的增加。
此功能要求使用者将图书信息通过键盘输入并且确认图书信息是否真确后才将图书信息写入文件夹中。
(2)修改图书信息功能:此功能时用于修改图书错误信息,此功能不会影响到其他图书信息,且不会改变图书总类型数量。
此功能要求使用者将图书信息通过键盘输入到内存中,然后存入到文件夹中。
(3)删除图书信息功能:此功能是用于删除已经不存在的书籍,在删除一种图书时,图书总类型的总数也会有相应的改变。
此功能只要求将所要删除书籍信息的书名输入即可。
(4)查找图书功能:此功能是用于查找使用者所需要的书籍,可通过书名和作者姓名进行查找,此功能不会改变系统中的图书信息。
此功能只需按照界面提示和输入所要查找信息即可。
(5)排序功能:此功能将系统中的图书信息根绝书名、作者、价格、字数、出版时间等进行不同的排序,并且将排序后的信息显示在屏幕上,同时也会将信息写入文件中。
(6)显示图书信息功能:此功能是将文件中的所有图书信息显示到屏幕上,此功能不会修改图书信息的任何部分,只可用于浏览图书信息。
(7)退出检索系统:此功能用于退出整个检索系统的,只需按操作界面意外的数字即可安全退出此系统。
2 需求分析2.1 界面设计分析界面的设计运用的c++的标准输入输出流,只需将字符输出到屏幕上即可,具体代码如下:void menu(){cout<<"+--------------------------------主菜单--------------------------------+"<<endl;cout<<"|--------------------------新增图书请按【1】-----------------------|"<<endl;cout<<"|--------------------------修改图书请按【2】-----------------------|"<<endl;cout<<"|--------------------------删除图书请按【3】-----------------------|"<<endl;cout<<"|--------------------------查找图书请按【4】-----------------------|"<<endl;cout<<"|--------------------------价格排序请按【5】-----------------------|"<<endl;cout<<"|--------------------------书名排序请按【6】-----------------------|"<<endl;cout<<"|--------------------------字数排序请按【7】-----------------------|"<<endl;cout<<"|--------------------------出版日期排序【8】-----------------------|"<<endl;cout<<"|--------------------------出版社排序按【9】-----------------------|"<<endl;cout<<"|--------------------------显示书库请按【0】-----------------------|"<<endl;cout<<"+--------------------------按任意数字退出--------------------------+"<<endl;}所对应的效果图如第一章中图1.1.1 主菜单界面效果图。
2.2 文件保存方法本系统中运用的是c++中的文件输入输出流,打开文件运用的是open函数,其中open函数中的参数为文件路径名和文件打开方式,其中需注意的是系统中运用了较多类型的输入输出流,如:ios::out、ios::in、ios::app,其中代表的意思如下:(1)ios::out 以输出(写入)方式打开文件夹,且ios::out打开文件以后,从文件头开始写入文件,也就是若使用者想追加图书信息时,则不能使此功能。
(2)ios::in 以输入(读)方式打开文件,此功能不会影响到文件中的信息,只将文件中的信息读出即可,同时,判断文件是否读完用函数eof()判断即可。
(3)ios::app 以输出(写入)方式打开文件夹,且在打开文件后,在文件末尾继续添加写入信息,即图书写入信息和追加以此文件写入功能实现。
如上可知,在使用文件输入输出流的过程时需注意其功能。
3 系统设计3.1 总体功能分析根据对系统的功能分析,在此系统中必须要有以下功能:新增图书、修改图书、删除图书、查找图书、排序功能(其中包括价格排序、书名排序、字数排序、出版日期排序、出版社排序)、显示书库、退出功能。
其此功能分析有以下总共能图:图3.1 总体功能图3.2 总体流程图根据系统功能及过程,可得到系统 总体流程图,如右图:如图,系统开始运行后,需要使用 者手动输入数字,如果符合功能数字的 要,则选择图3.1 总功能图中相应的功 能;若不符合功能的数字要求,则只几 天退出程序。
N图3.2 总体流程图4 主要功能设计4.1 新增图书模块本模块可用来初始建库,也可用于追加图书信息,本模块流程图如下右图:如右流程图,在此功能模块中,最重要的就是将已输入的信息保存至文件夹,保存至文件夹的函数在之后又详细解说;保存文后,需用户手动输入数字,选择接下来的功能,判断数值大小即可,最后退出此函数模块。
4.2 查找图书模块此模块用于使用者查找他所需要的图书信息,且在之后的修改功能和删除功能都会用到此功能;此模块流程图如右图:如右流程图,在此模块中用了两个读文件函数,一个是用来读取系统中总的书的类型,再将图书信息从文件中读出,最后根据函数查找使用者所需信息。
4.3 修改图书模块此模块用于修改错误的信息,在修改完成后可存入文件夹中,且此功能是基于查找功能上完成的,模块功能图如右图:如右图,此模块功能基于上一模块功能看流程图即可。
其中,在此模块中的修改信息时,查找信息囊括在修改信息中;修改信息以后将信息存储至文件中即可。
4.4 删除图书模块此模块用于删除错误信息和不需要的信息,且删除信息后直接存入文件中,也不会改变文件中其他信息。
如右图,此模块功能也基于查找功能,不过查找功能是囊括在删除中;其中删除的时候需要将删除信息所在的空间释放掉;最后写入文件即可。