图书管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四川师范大学成都学院C/C++程序设计实训图书信息管理系统
学生姓名Xxxx
学号2012101255
所在学院通信工程学院
专业名称移动通信
班级移动2班
指导教师石彬
四川师范大学成都学院
二○一三年十二月
目录
1.前言 (3)
2.设计目的 (3)
3.功能描述 (3)
4.总体设计 (4)
1、功能模块设计 (4)
2、数据结构设计 (6)
3、函数功能描述 (7)
5.程序实现 (7)
1、源程序(略) (7)
2、运行结果 (7)
6.小结 (12)
1.前言
图书信息管理系统是我国大部分院校或其它部门不可缺少的部分,书籍是人类的精神食粮,尤其对一些学校来说非常重要。图书信息管理系统能够方便地为用户呈现书籍资料,为用户借阅相关书籍提供了便利途径。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对图书资源信息进行管理,具有手工管理所无法比拟的优点。比如:查阅迅速、安全性高、可靠性高、存储量大、保密性好、成本低等。
图书信息管理系统具有实用,精简功能等优点,这些优点能够极大地提高图书管理的效率,也是企业、学校的科学化、正规化管理,是与世界接轨的重要条件。
2.设计目的
本程序旨在训练基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和结构数组的各种基本操作。本程序中涉及结构体、数组、文件等方面的知识。通过本程序的训练,能对C语言的文件操作有一个更深刻的了解,掌握利用数组存储结构实现图书信息管理的原理,为进一步开发出高质量的信息管理系统打下坚实的基础。
3.功能描述
如图1所示,图书信息管理系统主要利用数组来实现,其数组元素是结构体类型,整个系统由如下几大功能模块组成。
图1 图书信息管理系统功能模块
(1)输入记录模块:输入记录模块主要完成将数据存入数组中的工作。在此图书信息管理系统中,记录可以从以文本形式存储的数据文件中读入,也可从键盘逐个输入记录。记录由与图书有关的基本信息字段构成。当从数据文件中读入记录时,它就是在以记录为单位存储的数据文件中,将记录逐条复制到结构体类型的数组元素中。
(2)查询记录模块:查询记录模块主要完成在数组中查找满足相关条件的记录。在此图书信息管理系统中,用户可以按照图书的书名或作者名在数组中进行查找。若找到该记录,则以表格形式打印出此记录的信息;否则,屏幕打印出未找到该条记录的提示信息。
(3)更新记录模块:更新记录模块主要完成对记录的维护。在此图书信息管理系统中,它实现对记录的删除、修改、排序。一般而言,系统进行了这些操作之后,需要将修改的数据存入源数据文件。
(4)输出记录模块:输出记录模块主要完成两个任务。第一,它实现对记录的存盘操作,即将数组中各元素中存储的记录信息写入数据文件中。第二,它实现将数组中存储的记录信息以表格的形式在屏幕上打印显示出来。
4.总体设计
1、功能模块设计
(1)主控main()函数执行流程
图书信息管理系统执行主流程如图2所示。
它先以可读写的方式打开文本类型的数据文件,此文件默认为“c:\library”,若该文件不存在,则新建此数据文件。当打开文件操作成功后,从文件中一次读出一条记录,添加到新建的数组中,然后执行显示主菜单和进入主循环操作,进行按键判断。值得一提的是,文本类型文件与二进制类型文件不同,它可以使用Windows自带的记事本打开并查看到存储的文件内容。
图2 主控函数执行流程图
在判断键值时,有效的输入为1-7之间的任意数值,其他输入都被视为错误按键。
若选择1,则调用input ()函数,执行输入记录操作;若选择2,则调用show()函数,执行将记录以表格形式打印输出至屏幕的操作;若选择3,则调用search()函数,执行查询记录操作;若选择4,则调用delet()函数,执行删除记录操作:若选择5,则调用modify()函数,执行修改记录操作;若选择6,则调用sort()函数,执行记录排序操作;若选择7,则执行将记录存入数据文件的操作,最后,系统n执行退出图书信息管理系统的操作;
若输入为1-7之外的值,则给出输入有误的提示信息。
(2)输入记录模块
输入记录模块主要实现将数据存入数组中,屏幕一步一步提示填写相应的图书信息。
如“请输入登录号”,将此时键入的数据存入数组“login”中;“请输入书名:”,将此时键入的数据存入数组“book”中;“请输入作者名:”,将此时键入的数据存入数组“author”中;“请输入分类号:”,将此时键入的数据存入数组“classy”中;“请输入出版单位:”,将此时键入的数据键入数组“company”中;“请输入出版时间:”,将此时键入的数据存入数组“time”中;“请输入价格:”,将此时键入的数据存入数组“price”中;
存完填写的信息后,在屏幕上打印“输入记录完成!”,按任意键返回主菜单。
(3)查询记录模块
查询记录模块主要实现在数组中按书名或作者名查找满足条件的记录。
第一步,屏幕提示,让用户选择查询方式,利用switch-case语句进行选择操作;
第二步,提示用户输入要查询的书名,键盘接收后,存入name数组;
第三步,运用字符串比较函数“if(strcmp(name,t[i].book)==0)”在数组中逐个对name数组中储存的值与结构体数组中的书名数组(t[i].book)或者是作者名数组(t[i].author)的值进行比较,直到找到匹配的记录,返回指向该记录的数组元素下标,再利用输出语句,在屏幕上显示出查询到的结果,并打印“查询记录完成!”,按任意键返回主菜单。否则,若没找到要查询的书籍,则在屏幕上打印“输入的书名(作者名)不存在,查询失败...”,按任意键返回主菜单。
需要补充的是,当按作者名进行查询时,由于记录中不同书籍,可能对应相同的作者名,于是增设了变量count,令其初值为0,目的是为了记录下查找到的匹配记录的个数,方便在屏幕上打印多个匹配的记录查询结果。
(4)更新记录模块
更新记录模块主要实现了对记录的删除、修改、插入和排序操作。因为记录是以数组的结构形式存储的,所以这些操作都在数组中完成。
下面分别介绍这3个功能模块。
1)删除记录
删除记录操作完成删除指定图书的记录。
第一步,提示用户输入要删除的书名,键盘接收后,存入name数组;
第二步,运用字符串比较函数“if(strcmp(name,t[i].book)==0)”在数组中逐个对name数组中储存的值与结构体数组中的书名数组的值进行比较,直到找到该书名的记录,返回指向该记录的数组元素下标;
第三步,若找到该记录,则从该记录所在元素的后续元素起,依次向前移一个元素位置,有值的数组元素个数减1,其具体过程如图3所示,在删除了数组元素A2后,数组元素A3和A4向前移动了一个位置。删除成功后,在屏幕上打印“删除记录成功!”,按任意键返回主菜单。否则,在屏幕上打印“输入的书名(作者名)不存在,删除失败...”,按任意键返回主菜单。