数据结构课程设计报告图书管理系统

合集下载

数据结构课程设计——图书管理信息系统

数据结构课程设计——图书管理信息系统

图书管理信息系统一、课程设计题目:图书管理信息系统二、课程设计内容:实现图书管理信息系统的设计。

这是一个数据结构的综合使用,涉及的知识比较全面,特别是对文件的使用更为全面。

进入系统后,操作员可进行系统维护、读者管理、图书管理、图书流通、退出系统等操作。

系统维护:有“初始化”和“读盘”两个重要操作。

第一次开始运行时,必须选择“初始化”,使有关文件指针、计数器等初始化为0;而在以后的每次操作开始时,选择“读盘”,将保存过的相关图书信息磁盘文件读入,以便进行各类操作。

读者管理:可实现读者信息的追加一项输入。

需要输入读者号、读者名、可借书数。

输入“y”可连续输入信息,若输入“n”则结束输入,退出读者管理。

图书管理:有“图书信息输入”和“图书信息查询”两个重要操作。

若选“图书信息输入”,就进入相关子模块,在输入信息的同时建立相应的索引及索引文件和索引链头文件,输入书号、书名、作者名、出版社、分类号、藏书量等信息,根据提示输入“y”实现连续输入,若输入“n”则结束输入,退出图书管理;有了图书信息数据之后,就可以进行图书信息的查询以及图书借阅等操作了。

若选“图书信息查询”,可根据提示按书号、书名、作者、出版社等进行查询,系统会将查询结果输出。

图书流通:有“借书处理”和“还书处理”两个重要操作。

当选择“借书处理”,系统接受输入信息后,首先查询读者文件。

若没查到,显示“非法读者!”,若查到,则再检查该读者书是否已借满,如果未借满,则继续检查图书文件;否则显示“书已借满!”。

检查图书文件如发现书号不存在或书已借出,都会提示读者“非法书号!”或“书已借出”,否则,进行借出处理,修改借阅文件、读者文件以及图书主文件的相关数据项,并显示“借书成功!”。

当选择“还书处理”,系统在接受输入信息之后,首先用书号查询借还书文件,若找到,则填入还书日期,然后再用书号查询图书主文件,修改借出数,用读者号查找读者文件,修改读者的借书数,而后显示“还书成功!”,否则显示“非法书号!”并返回主控菜单。

数据结构课程设计图书管理系统实验报告

数据结构课程设计图书管理系统实验报告

数据结构课程设计课程设计实验报告院(系、部): 信息工程学院 姓 名: 计141范文虎指导教师签名:2016年 6月29日·北京Beijing Institute of PetrochemicalTechnology目录一.设计题目····································二.设计目的····································三.实验分工····································四.算法思想分析································五.算法描述实现································1.数据结构类型定义2.算法流程图3.程序代码六.运行结果····································七.结论········································一.设计题目图书管理基本业务模拟图书管理一般包括图书采编、图书编目、图书查询及图书流通(借、还书)等基本业务。

数据结构课程设计图书馆管理系统

数据结构课程设计图书馆管理系统

目录摘要 (1)1 课程设计的目的和意义 (2)1.1设计目的 (2)1.2设计意义 (2)2 需求分析 ............................................................... (3)2.1所需系统: ....................................................................................................... .. (3)2.2所要达到的程度: (3)3 总体方案设计 (4)3.1详细设计.. (4)3.2关键代码段源码及分析 (4)5. 系统实现 (9)6 系统调试 (10)7 小结 (12)参考文献 (27)附录源程序 (14)摘要(字为黑体三号)数据结构是计算机科学及相关专业的重要核心课程。

学计算机专业的这是一门必修课,我当初就不太明白为什么要学数据结构算法与分析,导致我迟迟没认识到算法与分析的重要性。

直到老师说要写课程设计,经过一周的学习了解,让我渐渐意识到在生活与学习中有很多系统需要数据结构的算法设计来实现,比如要完成计算机管理系统完成图书管理基本业务,如果采用数据结构的算法,它能使我们的能够更好的对图书馆进行管理在图书馆管理基本任务程序中,我们所要研究的主要是如何实现图书馆的管理,在程序设计中,包括了下面几个内容:1)采编入库,他能实现的是新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;2)借阅:他能实现的是如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;3)归还:他能实现的是注销对借阅者的登记,改变该书的现存量。

关键词:数据结构,算法,图书管管理1 课程设计的目的和意义1.1设计目的(1)使我们更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。

(2)培养我们综合运用所学知识独立完成课题的能力。

数据结构课程设计——图书借阅管理系统

数据结构课程设计——图书借阅管理系统

数据结构课程设计——图书借阅管理系统图书馆管理系统目录一、问题描述:二、系统需求分析:1 功能要求:2 技术要求:3 方案分析:三、概要设计:四、详细设计与程序代码:五、运行结果与测试:六、设计体会与总结一、问题描述图书借阅管理系统是一个学校不可缺少的部分,它的内容对于学校的管理者和读者来说都至关重要,直接关系到图书的借用率,所以开发图书管理系统能够为管理员和读者提供充足的信息和快捷的查询手段。

编写程序系统主要实现图书馆的增加图书、查询图书、删除图书、借阅图书、还书;增加会员、查询会员、删除会员、借书信息、到期书催还等智能化管理过程。

图书管理者只需略懂电脑知识就可以简易的操作该图书借阅管理系统。

二、系统需求分析图书借阅管理系统主要分为两大功能:(1)图书管理(增加图书、查询图书、删除图书、图书借阅、还书到期书催还);(2)会员管理(增加会员、查询会员、删除会员、借书信息);要完成这个题目,主要是建立解决图书和会员的信息的存储,解决的方法是建立两个带头结点的单链表,分别用于存储图书和会员。

解决了这个问题后就是如何建立这两个链表的联系了,解决的方法是在图书结点中设一个借书人编号,在会员结点中设一个数组用于存会员借的书。

解决了这两个问题,剩下的工作就简单了。

只需按链表的操作就可以了。

1功能要求在图书借阅管理程序中须实现以下功能:(1)图书修改功能:能对图书借阅系统存储的信息进行修改。

提供两种修改方式,如按照图书编号修改、按照书名修改。

图书编号是图书记录的自然顺序编号。

(2)图书删除功能:能对图书借阅系统的图书信息进行删除。

删除时以记录为单位,能一次删除一条记录。

(3)借书功能:能对借出的图书作记录信息,能一次借出一本图书。

(4)还书功能:能将被借出的图书信息还原,能一次借出一本图书。

(5)保存功能:能将记录保存在任何自定义的文件中,如保存在:c:\\books 、c:\\lenders。

(6)通信录管理结束后,能够正常退出图书借阅管理程序。

图书管理系统数据结构课程设计报告

图书管理系统数据结构课程设计报告

图书管理系统数据结构课程设计报告目录1课题1——图书管理系统.................................. 错误!未定义书签。

1.1设计要求 (2)1.2创作的思路 (3)1.3创作和调试 (4)1.4心得体会 (9)附录 (10)1.设计要求小型图书购销管理系统2 / 171、需要处理的基础数据✧图书资料基本信息:图书编号、书名、作者、出版社、出版日期、定价等。

✧图书库存信息:图书编号、书名、作者、库存数量等。

✧图书采购信息:采购单号、图书编号、采购日期、采购数量、单价、采购金额等。

✧图书销售信息:销售单号、图书编号、销售日期、销售数量、单价、销售金额等。

2、系统的基本功能✧图书基本信息的录入和查询✧图书采购(1)输入要采购的图书编号,自动从图书基本资料中把相关信息提取出来。

(2)根据采购数量和单价,自动计算采购金额。

(3)根据采购数量,增加图书库存量。

✧图书销售(1)输入要采购的图书编号(或书名)、销售数量,从图书库存信息中查找是否合法,合法时进行销售,否则报错。

(2)根据采购数量和单价,自动计算销售金额。

(3)销售时,从库存中减去相应的数量。

✧利润计算:根据全部的采购金额和销售金额,计算书店的利润情况。

2.思路:3 / 171.基本模块:根据要求,应该有三个封装的类,包括:书籍信息,采购信息和销售信息。

其中以书籍信息为核心,在书籍信息中建立关于其它两类的友元函数,达到信息交流的目的。

2.功能实现:要求实现的功能有:对于书籍信息:录入,查询,采购和销售导致存量的改变对于采购信息:实施采购,查询采购对于销售信息:实施销售(需要判断是否合法),查询销售总利润的计算所以草图如下考虑到购买和销售时要输入书籍号,并且更改基本库存信息。

不如将销售和采购函数作为友元函数,或许能减少函数个数。

4 / 173.建立程序和调试改错因为是在模块的建设中边建设边调试,所以容易发现错误原因。

开始先建设基本类:Book,公有成员为:public:void set_book();录入功能函数void display_book();反馈功能函数void buy_book(Buy&);//此项在Buy类建立后再输入,为采购函数void sale_book(Sale&);//此项在Sale类建立后再输入,为销售函数int bianhao;书籍编号(设为公有是为了方便进行对比时调用,不然或许要一个公有函数来实现“查询是否有此书”的功能,if(i==b[i1].bianhao)可能比写函数更加简短。

数据结构课程设计图书管理系统实验报告

数据结构课程设计图书管理系统实验报告

数据结构课程设计课程设计实验报告院(系、部): 信息工程学院 姓 名: 计141范文虎指导教师签名:2016年 6月29日·北京Beijing Institute of PetrochemicalTechnology目录一.设计题目····································二.设计目的····································三.实验分工····································四.算法思想分析································五.算法描述实现································1.数据结构类型定义2.算法流程图3.程序代码六.运行结果····································七.结论········································一.设计题目图书管理基本业务模拟图书管理一般包括图书采编、图书编目、图书查询及图书流通(借、还书)等基本业务。

数据库系统原理课程设计报告-图书管理系统

数据库系统原理课程设计报告-图书管理系统

数据库系统原理课程设计报告设计题目:图书管理系统班级:学号:姓名:指导教师:完成日期:成绩:摘要在计算机日益普及的今天,对个人而言若采用一套行之有效的图书管理系统来管理自己的书籍,会方便许多。

对图书管理部门而言,以前单一的手工检索已不能满足人们的要求,往往是投入了大量的人力和财力却得不到搞笑的管理效率。

为了便于图书资料的管理需要有效的图书管理软件,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效,智能化管理,达到提高图书借阅信息管理效率的目的。

采用数据库技术生成的的图书借阅管理系统将会极大的方便借阅者并简化图书管理人员和工作人员的劳动,使工作人员从繁忙,复杂的工作进入到一个简单,高效的工作中。

基于这个问题,开发了大学图书管理系统。

目录第一章系统概述 (4)第二章系统数据库设计部分 (5)2.1 需求分析 (5)2.1.1 需求描述 (5)2.1.2 数据流图 (6)2.1.3 数据词典 (8)2.2 数据库概念结构设计 (9)2.2.1 E-R图 (9)2.3 数据库逻辑结构设计 (10)2.4 数据库物理结构设计 (10)第三章系统设计 (12)第四章总结 (15)主要参考文献 (16)附录一.................................................................................................................................................错误!未定义书签。

第一章系统概述《数据库原理及应用》课程的学习,其主要的目标是能利用课程中学习到的数据库知识与技术较好地开发设计出数据库应用系统,去解决各行各业信息化处理的要求。

本实验主要在于巩固学生对数据库的基本原理和基础理论的理解,掌握数据库应用系统的设计开发的基本方法,进一步提高学生的综合运用所学的知识能力。

数据结构课程设计个人书籍管理系统

数据结构课程设计个人书籍管理系统

数据结构课程设计课程设计说明书个人书籍管理系统起止日期:2010年6月1日至2011年6月20日目录一.问题分析—————————————————— 3 二.功能函数—————————————————— 4 三.程序基本框架图—————-—————————— 5 四.总结与心得——————————————-——— 6 五.程序截图—————————————-————— 7 六.源代码——————————————————-— 9问题分析学生在自己的学习和生活中会拥有很多的书籍,对所购买的书籍进行统计和分类是一种良好的习惯。

可以便于对这些知识资料的整理和查找使用。

如果用文件来存储相关的各种信息,包括分类,购买日期,价格,出版社信息等。

辅之一程序来使用这些文件对里面的书籍信息进行统计和查询的工作使得书籍管理工作变得轻松而有趣。

简单的个人书籍管理系统的开发就是为了解决这个实际的问题。

这个程序具备如下的功能:1.存储书籍各种相关的信息,可以随时增加书籍。

2.提供查找功能,按多种关键码查找需要的书籍。

3.提供排序的功能,按多种关键码对所有的书籍进行排序,例如按照购买日期进行排序。

4.提供删除的功能,可以把一些已丢失的从书籍库中删除。

5.为软件设置打开密码。

功能函数Check()函数:软件打开时检查E盘中的code.txt文件来进行密码验证。

Menu()函数:主菜单函数。

包含以下子函数:1.input函数:录入。

2.print函数:显示已录入的信息。

3.add函数:追加录入。

4.search函数:查询功能(包括search_name和search_price函数)。

5.delete函数:删除记录。

6.rank函数:排序功能(包括rank_data和rank_price函数)。

7.password函数:设置软件打开密码。

8.write函数:作者信息。

程序基本框架图书籍录入追加显示查询删除排序加密作者信息按书名查按价格查按书价排按购买日期排密码验证总结与心得数据结构一向是一门难学难懂的课程,其课程设计也一直是一件头疼的事,虽然如此,但是在我们做课程设计的过程中,感觉学到了许多的东西。

图书管理系统的设计数据库课程设计报告

图书管理系统的设计数据库课程设计报告

课程设计任务书一、设计题目图书管理系统的设计二、设计概述通过对典型的图书系统的订购、借阅、维护等业务流程进行分析,完成具有图书管理、用户管理等相关功能的数据库管理应用系统。

三、设计要求1、完成图书信息的维护2、完成按名称或作者条件的图书查找3、完成图书订购、入库功能4、实现借阅功能5、完成读者、操作员的管理四、进度安排目录1、设计概述31.1 设计目的31.2 设计容31.3 设计方法与步骤32.系统需求分析42.1系统需求42.1.1 文字描述42.1.2图形描述42.2数据流图:42.3数据字典:62.3.1数据项62.4数据结构82.5数据流92.6数据存储102.7处理过程113.概念模型设计133.1 E-R图133.1.1 分E-R图133.1.2 总E-R图164.逻辑结构设计164.1E-R图转换为关系模式164.2关系模式的优化174.3设计用户子模式195.数据库的物理设计205.1确定数据的存储结构205.2确定数据的存放位置205.3确定系统配置206.数据库的实施与维护216.1数据的载入和应用程序的调试216.1.1 数据表的建立语句21(1)图书信息表的建立21(2)图书类型表的建立21(3)图书借阅表的建立22(4)图书操作表的建立22(5)订购单表的建立22(6)读者信息表的建立23(7)图书库存表的建立236.1.2数据库关系图246.1.3应用程序的调试246.2数据库的试运行446.3数据库的运行与维护447.总结451、设计概述1.1 设计目的目前社会上信息管理系统发展飞速,为了使书店管理更加规化、程序化、科学化,我们设计了图书管理系统。

本系统为管理者提供方便的管理,主要子模块有图书管理、读者管理、用户管理等,可实现日常图书进货、借阅流程,最终达到提高工作效率的目的。

读者可以进入图书查询界面通过图书名称、图书作者等方式查询图书,查到满意的图书后可点击借阅。

数据结构图书管理系统实验报告

数据结构图书管理系统实验报告

竭诚为您提供优质文档/双击可除数据结构图书管理系统实验报告篇一:数据结构-图书管理系统实验报告数据结构课程设计报告课程名称_________题目名称学生学院专业班级学号学生姓名指导教师20XX年7月8日一、需求分析1.图书管理系统中图书管理模块包括图书类型定义:书号、现存量、总存量,出版时间为整型,定价为浮点型,书名、著者名为字符型,借阅指针、预约指针为读者类型;读者类型定义:证号为整型、姓名为字符型,另外借阅类型和预约类型组合成其中的共用体类型。

b树(2-3树)类型定义:关键字个数和关键字数组为整型、另外还有指向双亲的指针、指向子树的指针、记录单元指针;b树查找结果类型定义:节点指针、关键字序号和查找标志变量为整型。

2.演示程序以用户和计算机的对话方式进行,在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令,相应的输入数据和运算结果显示在后面。

该演示系统,没有使用文件,全部数据放在内存存放。

四项基本业务都以书号为关键字进行的,采用了b树(2-3树)对书号建立索引,以提高效率。

3.图书管理系统实现功能:①采编入库:新书购入,将书号、书名、著者、册数、出版时间添加入图书账目中去,如果这种书在帐中已有,则只将总库存量增加,每新增一个书号则以凹入表的形式显示b树现状。

②清除库存:实现某本书的全部信息删除操作,每清除一个书号则已以凹入表的形式显示b树现状。

③图书借阅:如果书的库存量大于零时则执行出借,登记借阅者的图书证号和姓名,系统自动抓取当前借阅时间和计算归还时间。

④图书预约:如果某书库存为零,则记录预约者姓名和证号,系统自动抓取当前预约时间和取书时间。

⑤图书归还:注销借阅者信息,并改变该书的现存量。

⑥作者专区:输入作者名字,系统将查找相应作者全部著作并显示出来。

⑦图书信息:可以根据书号查阅此书基本信息、借阅信息和预约信息,亦可以查找全部图书基本信息。

二、概要设计1.抽象数据类型b树定义:ADTbTree{数据对象:D是具有相同特性的数据元素的集合。

数据库课程设计图书管理系统报告

数据库课程设计图书管理系统报告

图书管理系统一.系统概论1.1系统开发背景和意义图书馆是信息交换和资源流通的重要媒介,人工方式管理图书资料方式存在许多缺点,如效率低、保密性差,且较为繁琐。

并且随着图书数量的增加,随之增加了图书资料管理者的工作量。

这将给图书信息的增加、查找、更新和维护带来很多困难。

图书馆的信息化管理将大大提高图书资源的利用和信息的交换速度。

开发的图书管理系统是通过将借阅信息以数据库的形式由网络传输来完成各用户的借阅要求,打破传统的人工管理模式,极大的方便了用户(读者)和管理员,节约了时间和空间,实现图书管理自动化,使图书资源得到充分的利用。

1.2 系统开发环境本系统为图书管理系统,采用软件作为系统开发工具, 2008作为系统数据库工具。

二.系统需求分析2.1 需求分析信息要求根据系统功能需求,将要记录的信息分类:1.图书信息:图书名,图书号,单价,作者,出版社,入库时间,借阅状态2.用户信息:,用户名,证件号,密码3.管理员信息:,管理员名称,证件号,密码4.借书信息:图书名,图书号,作者,证件号,借阅时间,还书时间5.用户(读者)借阅图书信息:,用户名,证件号,图书名,图书号,借阅时间处理要求本图书管理系统主要应该具有以下功能模块:A.普通读者用户端图书查询,根据索要查找的图书书名进行查询。

图书清单,可以对已经入库的所有图书进行浏览。

图书借阅,根据已经有的可以借阅的图书进行借阅。

借阅图书浏览,可以查看图书系统中已借出的图书清单。

修改密码,读者可以对自己的密码进行修改。

登录,可以登录或者注册新的用户。

B.管理员1(注册的管理员)图书查询,根据索要查找的图书书名进行查询。

图书清单,可以对已经入库的所有图书进行浏览。

图书入库,管理员可以将新进的图书入库。

图书删除,管理员可以删除不要的的图书。

修改密码,管理员可以修改自身密码。

B.管理员2(数据库定义的的管理员)图书查询,根据索要查找的图书书名进行查询。

图书清单,可以对已经入库的所有图书进行浏览。

数据结构_图书馆管理系统实验报告

数据结构_图书馆管理系统实验报告

实验报告题目:图书管理一,需求分析1.每种书的信息包括了书号书名,作者显存量和总库存等。

2.要实现的主要操作有,在B-树上的插入删除操作,并且在这些B-树的操作的基础上的图书馆借阅归还入库清除等操作。

3.每插入或删除一个关键字后就要显示B-树的状态。

也可以显示图书的相关借阅的信息。

4.借阅的信息链接在相应的那种数的记录之后。

2.两种抽象数据类型:Btree和Library。

3. 测试数据入库书号:35,16,18,70,5,50,22,60,13,17,12,45,25,42,15然后清除:45,50,22,42,90二.概要设计ADT BTree{数据对象:D={ai |ai E BTNode,I=2,3,……n,n>=0}数据关系:R1={<ai-1,ai>|ai-1,ai E D, I=2,3……N}基本操作:void InitBTree(BTree &T);int Search(BTree p,int k);Result SearchBTree(BTree T,int k);void split(BTree &q,int s,BTree &ap);void Insert(BTree &q,int i,KeyType x,BTree ap);void NewRoot(BTree &T,BTree q,KeyType x,BTree ap);Status InsertBTree(BTree &T,KeyType k,BTree q,int i);void FindSmallest(BTree p,BTree &q);int Parent(BTree p);void RightBrother(BTree p,BTree &right);void LeftBrother(BTree p,BTree &left);void LeftMove(BTree &p,int loc);Status DeleteBTree(BTree &T,int k);void PrintBTree(BTree T);}ADT Library{数据对象:D={ai |ai E RecordI=2,3,……n,n>=0}数据关系:R1={<ai-1,ai>|ai-1,ai E D, I=2,3……N}基本操作:void GetInformation(Record &book);void PrintBookInfomation(Record *book);void Procurement(BTree &T);void DeleteBook(BTree &T,int k);void Lending(BTree &T,int k,char librarynum[10],char data[10]); void Return(BTree &T,int k,char *librarynum);}3.程序的几个模块1)主程序模块void main(){接受命令初始化处理命令}2)B-树模块-------实现B-树的抽象数据类型3)图书馆模块-------实现图书馆的抽象数据类型调用关系如下:主程序模块图书馆模块-三.详细设计(在源代码上通过注释的方式来说明)1、基本结构typedef struct{int booknum;char name[20];char writer[20];int total;int current;char librarynum[MAX][MAX];char returndate[MAX][MAX];}Record;typedef struct{int k;Record *recptr;}KeyType;typedef struct BTNode{int keynum;struct BTNode *parent;KeyType *key[M+1];struct BTNode *ptr[M+1];}BTNode,*BTree;typedef struct{BTNode *pt;int i;int tag;}Result;2、源代码1)主函数#include "head.h"#include "head.h"void main(){BTree T;int order=0,booknum;char returndate[10],librarynum[10];Result result;InitBTree(T);printf("\n******************************************************************* *****\n");printf("Welcome to the library system!\n");while(order!=6){printf("\n******************************************************************* *****\n");printf("请选择服务: 1.采编入库 2.清除库存 3.借阅 4.归还 5.显示 6.退出.\n");scanf("%d",&order);switch(order){case 1:Procurement(T);PrintBTree(T);break;case 2:printf("请输入要删除的书的编号。

c语言课程设计报告图书管理系统

c语言课程设计报告图书管理系统

C语言课程设计报告: 图书管理系统1. 引言本报告旨在介绍一个基于C语言的图书管理系统的设计与实现。

图书管理系统是一个用于管理图书馆图书的软件,它能够方便地进行图书的借阅、归还、查询等操作,提高图书馆的管理效率。

2. 系统需求分析在设计图书管理系统之前,我们首先需要明确系统的需求。

根据需求分析,该系统需要具备以下功能:•图书的录入与管理:管理员可以添加、修改和删除图书信息,包括书名、作者、出版社、ISBN等。

•读者的管理:管理员可以添加、修改和删除读者信息,包括姓名、学号、联系方式等。

•图书借阅与归还:读者可以借阅图书,并在归还时完成相应的操作。

•图书查询:管理员和读者都可以通过关键字查询图书信息。

•预约图书:读者可以预约图书,待图书可用时通知读者。

•罚款管理:系统可以自动计算读者逾期归还图书的罚款金额,并进行相应的处理。

3. 系统设计与实现3.1 数据结构设计为了实现图书管理系统的各项功能,我们需要设计合适的数据结构来存储图书信息、读者信息等。

以下是我们设计的数据结构:•图书结构体:包括书名、作者、出版社、ISBN等信息;•读者结构体:包括姓名、学号、联系方式等信息;•借阅记录结构体:包括图书信息、读者信息、借阅日期、归还日期等信息;3.2 系统模块设计根据系统需求,我们可以将图书管理系统划分为以下几个模块:•图书管理模块:包括图书的添加、修改和删除功能;•读者管理模块:包括读者的添加、修改和删除功能;•图书借阅模块:包括图书的借阅和归还功能;•图书查询模块:包括关键字查询功能;•预约图书模块:包括图书的预约功能;•罚款管理模块:包括读者逾期归还图书的罚款管理功能;3.3 系统实现根据系统设计,我们使用C语言编写相应的代码来实现整个图书管理系统。

我们使用结构体来存储图书、读者和借阅记录的信息,并使用文件来存储这些数据。

我们可以通过菜单方式来实现用户和管理员的交互,用户可以根据需求选择相应的功能。

数据结构课程设计_图书管理系统

数据结构课程设计_图书管理系统

《数据结构》课程设计报告(图书管理系统)目录一.需求分析 (3)二.概要设计 (3)三.详细设计 (4)四.调试分析 (6)五.用户使用说明 (6)六.测试结果 (7)七.附录:带注释的源代码 (8)一.需求分析大学的图书馆藏书是非常庞大的,原始的人工借书也是非常麻烦的,因此用一种自动系统来管理图书是非常有必要的,所以设计一个图书管理系统,要能够自如管理借书,还书,以及注册,注销书本,这样就能节省很多资源,提高效率。

明确规定:1.每种书的登记内容包括书号、书名、著作者、现存量和库存量;2.对书号建立索引表(线性表)以提高查找效率;3.系统主要功能如下:*采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;*借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;*归还:注销对借阅者的登记,改变该书的现存量。

二.概要设计1.本题中用到了以下函数和结构体:本程序首先命名头文件:#include <stdio.h>#include <stdlib.h>#include <conio.h>以实现对各种函数的调用以及可能用到的各种循环。

用“struct BOOK”结构体,用来存放书籍以及借书信息;并用到“void page_title”的页头函数,通过“void book_out”,“void book_in”来实现对书本的借出以及还书,定义“search_book”来实现对书本各种信息的搜索任务,“void book_add”实现对书本的购进时的注册,用“void book_del”实现对书本的注销。

最后通过“goto menu”语句跳出整个循环语句,在各种操作做完后能够返回到主菜单。

用到goto语句原则上一般不符合结构化一些规定,但是此题中大大提高了效率,因此我采用了。

2. 主程序的流程及各程序模块之间的层次:本程序运用到的是用数组作为线性表的一种代替方式,实现各种查询,对各种数据的管理,运用线性表的话可能会更加简便,但是我在用了数组代替后发现其实这样更容易看懂。

大数据结构课程设计图书管理系统

大数据结构课程设计图书管理系统

数据结构课程设计图书管理系统一需求分析该程序是模拟图书馆管理系统,实现图书采编入库、借书、还书、查询等基本业务。

此程序规定:(1) 管理员能够向系统中输入每种书的基本信息,包括书号、书名、作者、现存量和库存量、借阅记录,并保存记录;(2)用户(读者)能够按书号、书名、作者查询图书信息;(3)管理员能够实现图书采编入库(新购入一本书,经分类和确定书号之后登记到图书账目中去。

如果这种书在帐中已有,则只将总库存量增加)、借阅(如果书的现存量大于0,则借出一本,登记借阅者的图书证号和归还期限)、归还(删除对借阅者的登记,改变该书的现存量)、销毁(将图书从账目中删除)等操作.二概要设计系统用到的抽象数据类型定义:1、ADT LinearList{数据元素:D={a i|a i∈D0,i=1,2,…,n,n≥0,D0为某一数据对象}关系:S={<a i,a i+1>|a i,a i+1∈D0,i=1,2,…,n—1}基本操作:(1)InitList(L)(2)DestroyList(L)(3)ClearList(L)(4)EmptyList(L)(5)ListLength(L)(6)Locate(L,e)(7)GetData(L,i)(8)InsList(L,i,e)(9)DelList(L,i,&e)}ADT LinearList2、ADT String{数据对象:D={a i|a i∈CharacterSet,i=1,2,…,n;n≧0}数据关系:R={〈a i-1,a i>|a i—1,a i∈D,i=2,…,n;n≧0}基本操作:(1)StrAsign(S,chars)(2)StrInsert(S,pos,T)(3)StrDelete(S,pos,len)(4)StrCopy(S,T)(5)StrEmpty(S)(6)StrCompare(S,T)(7)StrLength(S)(8)StrClear(S)(9)StrCat(S,T)(10)SubString(Sub,S,pos,len)(11)StrIndex(S,pos,T)(12)StrReplace(S,T,V)(13)StrDestroy(S)}ADT String●系统中的子程序和功能说明:InitBo(Book &boo);初始化图书信息InitRe(lend &Lin);初始化借阅者信息BinarySearch(Book boo,char SearchNum[]);二分法查找比较书号Buy(Book &boo, char BuyNum[]);新书采编入库系统Delete(Book &boo,char DeleteNum[]);清除图书信息系统Borrow(Book &boo,lend &Lin,char BorrowNum[],char CaNum[]);借阅图书处理系统Return(Book &boo,lend &Lin,char ReturnNum[],char BorrowerNum[]);归还图书系统SearchByNum(Book &boo,char SeaNum[]);按书号查找系统SearchByName(Book &boo);按书名查找系统SearchByAuth(Book &boo);按作者查询系统Menu();主菜单显示系统Search();查询系统子菜单main();主函数●系统程序功能结构图三详细设计●功能实现过程bool BinarySearch(Book boo,char SearchNum[]) //二分法查找比较书号{while(low〈=high){计算中间点;if(查找到书号相同的){返回值true;}if(查找书号不相同)用二分法进一步进行查找;}if(库中没有所要查找的书)返回值false;}void Buy(Book &boo, char BuyNum[])/*采编入库*/{if(书库中有此书){总库存加1;现库存加1;}if(书库中无此书){for(i=total;i>mid&&total;i—-)/*将新采购的书插在适合位置,保持有序*/空出插入位置;输入新购书籍的相关信息:书号、书名、作者、出版社;boo[i]。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构课程设计报告图书管理系统Revised by Jack on December 14,2020课程设计报告课设课题:课程设计——图书管理系统学院:电子信息学院专业:网络工程姓名:班级学号: BX1213指导教师:张艳报告日期:目录一、需求分析 (1)系统开发背景和意义 (1)设计题目与要求 (1)二、总体结构设计 (2)三、各子模块设计 (3)初始化图书信息 (3)系统主界面 (3)采编入库 (4)输入读者信息 (4)借阅图书 (4)归还图书 (6)查询图书信息 (7)查询读者信息 (7)四、程序设计调试情况分析 (9)五、测试结果 (12)欢迎界面 (12)初始化图书信息 (12)系统主界面 (13)采编入库 (13)输入读者信息 (14)借阅图书 (15)归还图书 (16)查询图书信息 (16)查询读者信息 (17)保存文件,退出 (18)六、总结 (19)七、参考文献 (20)八、附录(源代码) (21)一、需求分析系统开发背景和意义图书管理作为计算机应用的一个分支,有着手工管理无法比拟的优点,如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。

这些优点能够极大地提高图书管理的效率。

因此,开发一套能够为用户提供充足的信息和快捷的查询手段的图书管理系统,将是非常必要的,也是十分及时的。

图书管理系统需要满足来自图书馆工作人员、普通用户和借阅者三方面人员的需求。

图书馆工作人员对图书借阅者的借阅及还书要求进行操作,同时还可通过图书编号等查询相应的借阅情况;普通用户的需求是查询图书馆所存的图书的相关情况;图书借阅者的需求是查看自己的相关信息及查询自己的借阅情况。

设计题目与要求【问题描述】设计一个计算机管理系统完成图书管理基本业务。

【基本要求】1) 每种书的登记内容包括书号、书名、着作者、现存量和库存量;2) 对书号建立索引表(线性表)以提高查找效率;3) 系统主要功能如下:*采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;*借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;*归还:注销对借阅者的登记,改变该书的现存量。

二、总体结构设计有八个模块1) 图书初始化输入图书的一些信息,编号、作者、书名、数量,使有一定的库存。

2) 新书入库新书采编入库,输入编号后如果有次数只需输入数量,没有则继续输入书名、作者、数量。

3) 添加读者信息读者信息初始化,输入读书证号和姓名,只有输入书证号和姓名才能进行借书还书4) 借书模块读者输入读书证号,证号存在输入要借的图书编号,不能借同一本书,如果借书数量以达到最大也不能借书。

5) 还书模块归还已借的图书,要先输入读者书证号,书证号存在继续输入要还的图书编号,图书编号存在并且借来此书,归还成功。

6) 查询图书信息7) 查询读者信息可查询读者姓名书证号,借了几本书,都是什么书和还书日期,还可以借几本书。

8) 退出退出读书管理系统并保存读者和图书信息。

系统主界面初始化之后,进入系统,显示功能列表,可选择任意系统,但在借书之前先要输入读者信息。

采编入库选择采编入库的功能后,先输入图书编号判断是否存在,若存在,则在原有记录上加上添加的图书数量;若不存在,则加入新的记录。

否输入读者信息选择读者登记后,输入读者编号跟姓名。

借阅图书选择借阅图书功能后,输入读者证号,判断该读者是否存在,若存在则输入借阅图书的编号,判断该图书编号是否存在,若存在,则判断读者借阅的图书数量是否满了和是否借阅了相同的书籍,判断成功后,则输入归还该图书的日期,该图书现有量减一,借阅成功;若读者不存在则返回。

否是否是是是 否否判断读者是看是否还有此图看读者的借书看读者是否归还图书实现归还图书功能时,首先输入读者编号,并判断是否存在,若不存在就按任意键返回,;若存在输入归还的图书编号并判断是否存在,若归还图书编号不存在,则返回。

存在后,将读者借阅该图书的信息清空,该图书的现有量加一。

最后按任意键返回否是否是查询图书信息查询图书信息时,输入图书的编号,判断是否存在。

不存在则返回;存在则输出图书的编号,书名,作者,现有量,跟库存量。

判断图书信是否查询读者信息查询读者信息时,首先判断读者的编号是否存在,不存在就按任意键返回。

若存在,则输出读者的证号,姓名,和借阅的图书编码及其还书日期。

是否四、程序设计调试情况分析在整个课程设计中,我们遇到了许多的问题。

有些问题吧,我们在苦思冥想的时候,突然我们的编译器显示出了正确的结果,当我们欣喜若狂的在运行下一次的时候又会出现相同的问题,在借阅的过程中,在一个读者借阅了两本书以上的时候,上一本书的归还日期上还有下一本书上的编号,最后一本书输出的才是正确的结果。

下图是借阅了两本书的截图:图4-1看到这里我们也知道是第一本书的还书日期的地址空间跟第二本书的编号连接在了一起导致输出的时候一直到第二本书编号的的字符串后面的‘/0’结束。

最后发现是我们在定义还书日期这个字符串的时候开辟的空间太小。

我们把char limit_date[8];改为char limit_date[10]就好了。

图4-2判断读者信息五、测试结果欢迎界面程序运行显示“欢迎使用图书管理系统”,按任意键进入到主菜单如图5-1所示。

图5-1 欢迎界面初始化图书信息在没有文件的时候会进入到初始化界面,需要输入一本图书的相关信息,如图5-2所示。

图5-2 初始化图书信息系统主界面接着进入的系统的主菜单,如图5-3所示。

图5-3 系统主界面采编入库实现采编入库功能按照系统提示输入信息。

如图5-4。

如果该图书已存在,则直接输入图书的数量如图5-5所示。

图5-4 采编入库(书不存在)图5-5 采编入库(书已存在)输入读者信息按照要求输入读者信息,如图5-6所示。

图5-6 输入读者信息借阅图书按照要求先输入读者证号,在输入借阅的图书编号如图5-7所示。

如果读者已经借阅了一本书之后不能借阅同一本图书如图5-8所示。

图5-7 借阅图书图5-8 同一个读者不能借阅同一本图书归还图书归还图书的要求按着图5-9输入即可。

图5-9 归还图书查询图书信息图5-10 是没有借阅之前的图书的相关信息,图5-11是读者借阅了图书之后的信息,只改变了现有量。

图5-10 借阅登记后图5-11 归还图书后查询读者信息查询读者的信息时,会输出相关借阅的图书编号以及还书日期如图5-12,5-13所示。

图5-12 查询读者信息(一)图5-13 查询读者信息(二)保存文件,退出在系统的主菜单后,按‘0 ’功能保存并退出系统。

图5-14 文件保存六、总结个人觉得课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程. 在生活中可以说得是无处不在。

因此作为新世纪的大学来说能够分析,并解决程序中出现的问题是十分重要的。

课程设计就能体现到这一方面。

能够将你所学到的理论跟实际结合在一起。

通过本次课程设计感慨良多。

从课堂上听到的到课后应用到的根本就不是一回事。

课堂上,老师在上面说,自己在下面听,到也能听懂。

可是到了应用上,自己倒也是知道要用到哪方面的内容,但是偏偏不知道从何处下手;好不容易写好的一小段代码,还要跟其他功能不相冲突,这又需要我们自己去想办法去兼容好他们。

通过本次课程设计试我懂得理论要跟实践相结合。

正所谓“台上十分钟,台下十年功”,别人在台上表演了十分钟,你觉得很容易,可那里知道别人在下面做的努力呢。

同样的,我们在课堂上听老师讲确实觉得是那么回事,但是真正做下去,也只有自己知道是何种滋味。

理论始终是理论,不能都熟练应用自己所学到的知识,到头来也是一场空。

在这次的课程设计过程中,我们也遇到了不能解决的难题,比如说在读者查询的时候,第二个读者始终会覆盖第一个读者的数据。

我们始终没有搞明白问题的所在,只知道不是在输出读者信息的问题,应该是添加读者过程中指针始终指在第一个地址,没有移动。

我们按照查询图书的函数重新编写了一次还是同样问题。

一直到答辩前一天晚上还没有解决,之后只能放弃。

还有在最开始的时候我们的程序功能并没有清屏功能,整个界面看起来并不是那么整洁。

于是我用用getch();system(“cls”);来进行清屏,最后会出先一个小问题,在我们查询了一些资料后,又再次基础上加上了goto end;这个函数来加以完善。

这次课程设计,我们也遇到了很多问题,比如说,我们再输入第二个读者的信息后会覆盖第一个读者的信息,想了半天没有弄懂是哪里错了,最后才看出来我们定义的结构体指针没有移动,导致我们输入的读者信息一直存放在同一个地址中。

也有些不懂需要在网上查询的代码,组员之间相互配合,不懂就询问其他同学或者查询资料亦或者自己去弄懂问题的根结,团结协作的精神在这次课程设计中表现的淋漓尽致。

我们不仅将以前的知识复习一遍;同时也弄懂了一些平常自己似懂非懂的;最后同学之间的友谊也慢慢变的深厚起来小组分工:孙泽铭:采编入库、查询图书信息、查询读者信息黄响:添加读者、借阅图书、归还图书七、参考文献[1]严蔚敏吴伟民编着《数据结构》清华大学出版社,2000[2]黄国瑜叶乃菁编着《数据结构》清华大学出版社,2001[3]胡学钢编着《数据结构算法设计指导》清华大学出版社,1999[4]王士元编着《数据结构与数据库系统》南开大学出版社,2000[5]李强根主编《数据结构(C++描述)》中国水利水电出版社,2001[6]杨正宏编着《数据结构》中国铁道出版社,2002[7]胡学钢编着《数据结构算法设计指导》清华大学出版社,1999[8]殷人昆徐孝凯编着《数据结构习题解析》清华大学出版社,2002[9]李春葆编着《数据结构习题与解析》清华大学出版社,2001[10] 咨讯教育小组编着《数据结构数据结构版》中国铁道出版社,2002八、附录(源代码)#include<>#include <>#include <>#include<>#define Max 4typedef struct book{char book_num[10];char book_name[20];char book_writer[10];int book_xy;int book_kc;int n;struct book *next;}BK;typedef struct borrow{char borrow_book_num[10];char limit_date[10];}BO;typedef struct reader{char reader_num[10];char reader_name[10];int right;int m;BO borrow[Max];struct reader *next;}RD;BK *h_book;RD *h_reader;int n=0;int m=0;void Login();int Menu();void Init();void Menu_select();void Insert_New_Book();void add_reader();void Print_reader();void Print_book();void Borrow_Book();void Return_Book();void Save();void Save_Book();void Save_Reader();void Load();void Load_Reader();void Load_Book();void Login(){system("cls");printf("\n\n\n\t\t***************************************\n");printf("\n\n\n\t\t** 欢迎使用图书管理系统 **\n");printf("\n\n\n\t\t***************************************\n");printf("\n\n\n\t\t 按任意键进入系统...");getch();system("cls");}int Menu() /*主菜单*/{int dm;printf("\n\t\t图书管理系统主菜单\n");printf("=================================================\n ");printf("*\t1----采编入库 \n");printf("*\t2----登记读者 \n");printf("*\t3----借阅登记 \n");printf("*\t4----还书管理 \n");printf("*\t5----查询图书信息 \n");printf("*\t6----查询读者信息 \n");printf("*\t0----退出系统 \n");printf("=================================================\n ");printf("请选择相应的代码:");for(;;){scanf("%d",&dm); \n包括编号.书名.数量..\n");p0=(BK*)malloc(sizeof(BK));h_book=p0;printf("\n请输入图书信息:\n");printf("图书编号:"); /*输入图书编号(唯一)*/scanf("%s",p0->book_num);printf("图书名称:"); /*输入图书名称*/scanf("%s",p0->book_name);printf("图书作者:"); /*输入图书作者*/scanf("%s",p0->book_writer);printf("图书数量:"); /*输入图书数量*/scanf("%d",&p0->book_kc);p0->book_xy=p0->book_kc; /*开始时图书现有量和库存量相等*/p0->next=NULL;p0->n=++n;printf("\n图书信息初始化完毕!按任意键继续下一步操作..\n");getch();system("cls");}void Insert_New_Book()/*新书入库*/{BK *p,*p0,*p1;p=p1=h_book;printf("\n新书入库模块...\n");printf("\n请输入新书信息..\n包括书号.书名.数量..\n");p0=(BK *)malloc(sizeof(BK));printf("图书编号:");scanf("%s",p0->book_num);while(strcmp(p0->book_num,p1->book_num)!=0&&p1->next!=NULL) p1=p1->next;if(strcmp(p0->book_num,p1->book_num)==0) /*此处分两种情况,若图书编号存在,则直接进库,只须输入书的数量*/{printf("\n此编号图书已存在!!直接入库!\n");printf("图书数量:");scanf("%d",&p0->book_kc);p1->book_kc+=p0->book_kc;p1->book_xy+=p0->book_kc;}else/*若不存在,则需要输入其他的信息,然后在进行插入操作*/{printf("图书名称:");scanf("%s",p0->book_name);printf("图书作者:");scanf("%s",p0->book_writer);printf("图书数量:");scanf("%d",&p0->book_kc);\n");getch();system("cls");}void add_reader()/*添加读者*/{RD *p0;int i;printf("\n读者初始化开始,请输入读者信息..\n包括书证号.姓名..\n");p0=(RD*)malloc(sizeof(RD)); /*申请新结点存储空间*/h_reader=p0;printf("\n请输入读者的信息:\n");printf("读者书证号:");scanf("%s",p0->reader_num);printf("读者姓名:");scanf("%s",p0->reader_name);p0->right=0;for(i=0;i<Max;i++){strcpy(p0->borrow[i].borrow_book_num,"0"); /*所借图书直接置为(即没有借书)*/strcpy(p0->borrow[i].limit_date,"0");}p0->next=NULL;p0->m=++m;printf("\n读者信息初始化完毕!按任意键继续下一步操作..\n");getch();system("cls");}void Borrow_Book() /*借书模块*/{BK *p0; RD *p1;char bo_num[10],rea_num[10],lim_date[8];int i;p0=h_book; p1=h_reader;printf("\n借书模块...\n");printf("\n请输入借书的读者书证号:");scanf("%s",rea_num);while(p1->next!=NULL&&strcmp(rea_num,p1->reader_num)!=0)p1=p1->next;if(p1->next==NULL&&strcmp(rea_num,p1->reader_num)!=0){printf("\n此读者编号不存在!按任意键返回..\n");goto END;}printf("\n请输入你要借的书的编号:");scanf("%s",bo_num);while(strcmp(bo_num,p0->book_num)!=0&&p0->next!=NULL)p0=p0->next;if(p0->next==NULL&&strcmp(bo_num,p0->book_num)!=0){printf("\n此图书编号不存在!按任意键返回..\n");goto END;}else if(p0->book_xy<=0){printf("\n抱歉,此书已借完!请等待新书的到来!!\n按任意键返回....");goto END;}else if(p1->right>Max||p1->right==Max){printf("\n不好意思,借书数目已满!不能借书!\n按任意键返回....");goto END;}else if(strcmp(p1->borrow[0].borrow_book_num,"0")!=0){for(i=0;i<Max;i++){if(strcmp(p1->borrow[i].borrow_book_num,bo_num)==0){printf("\n抱歉!同一个读者不能同借两本相同的书!\n按任意键返回....");goto END;}else if(strcmp(p1->borrow[i].borrow_book_num,"0")==0){printf("\n请输入你要归还图书的日期:");scanf("%s",lim_date);strcpy(p1->borrow[p1->right++].borrow_book_num,bo_num);strcpy(p1->borrow[p1->right-1].limit_date,lim_date);p0->book_xy--;printf("\n读者编号%s借书完毕!按任意键继续下步操作..",p1->reader_num);goto END;}}}else{printf("\n请输入你要归还图书的日期:");scanf("%s",lim_date);strcpy(p1->borrow[p1->right++].borrow_book_num,bo_num);strcpy(p1->borrow[p1->right-1].limit_date ,lim_date );p0->book_xy--;p0->book_kc--;printf("\n读者编号%s借书完毕!按任意键继续下步操作..",p1->reader_num);goto END;}END:getch(); system("cls");}void Return_Book() /*还书模块*/{BK *p; RD *q;int i,j,find=0;char return_book_num[10],return_reader_num[10];p=h_book; q=h_reader;printf("\n还书模块...\n");printf("\n请输入要还书的读者编号:");scanf("%s",return_reader_num);while(q->next!=NULL&&strcmp(return_reader_num,q->reader_num)!=0)q=q->next;if(q->next==NULL&&strcmp(return_reader_num,q->reader_num)!=0){find=2;printf("\n此读者编号不存在!按任意键返回..\n");goto end;}printf("\n请输入读者还书的编号:");scanf("%s",return_book_num);while(p->next!=NULL&&strcmp(return_book_num,p->book_num)!=0) p=p->next;if(p->next==NULL&&strcmp(return_book_num,p->book_num)!=0){find=2;printf("\n错误!此图书编号不存在!按任意键返回..\n");goto end;}for(i=0;i<Max;i++)if(strcmp(return_book_num,q->borrow[i].borrow_book_num)==0) /*如果此读者借了此书*/{find=1;for(j=i;j<Max-1;j++){strcpy(q->borrow[j].borrow_book_num,q->borrow[j+1].borrow_book_num);strcpy(q->borrow[j].limit_date,q->borrow[j+1].limit_date);}strcpy(q->borrow[Max-1].borrow_book_num,"0");strcpy(q->borrow[Max-1].limit_date,"0");p->book_xy++;q->right--;printf("\n编号%s的读者还书完毕!按任意键继续下步操作..",return_reader_num);goto end;}if(find==0)printf("\n错误!此读者未借此书!按任意键返回..\n");end: getch(); system("cls");}void Print_book() /*查询图书信息*/{BK *p;int i;char e[10];p=h_book;printf("输入查询的图书编号:");scanf("%s", e);for(i=0;i<n;i++){if(strcmp(p->book_num,e)==0){printf("\n图书信息如下:\n\n");printf("图书编号\t图书名称\t图书作者\t现有\t库存\n");printf("%s\t\t%s\t\t%s\t\t%d\t%d\n",p->book_num,p->book_name,p->book_writer,p->book_xy,p->book_kc);break;}elsep=p->next;}printf("\n图书信息打印完毕!按任意键继续下一步操作..");getch();system("cls");}void Print_reader() /*查询读者信息*/{RD *p;int i, j;char e[10];p=h_reader;printf("输入查询的读者编号:");scanf("%s", e);for(j=0;j<m;j++){if(strcmp(p->reader_num,e)==0){printf("\n读者信息如下:\n\n");printf("读者书证号\t读者姓名\n");printf("%s\t\t%s",p->reader_num,p->reader_name);for(i=0;i<Max;i++){printf("\n");printf("图书编号",i+1);printf("\t还书日期",i+1);printf("\n");printf("\t%s",p->borrow[i].borrow_book_num);printf("\t\t%s",p->borrow[i].limit_date);}printf("\n");break;}elsep=p->next;}printf("\n读者信息打印完毕!按任意键继续下一步操作..");getch();system("cls");}void Save() /*保存信息*/{Save_Reader();Save_Book();}void Save_Reader() /*保存读者信息*/{FILE *fp_reader;RD *p,*p0;p=h_reader;if((fp_reader=fopen("","wb"))==NULL) /*创建文件,进行保存*/{printf("\n文件保存失败!\n请重新启动本系统...\n");exit(0);}while(p!=NULL){if(fwrite(p,sizeof(RD),1,fp_reader)!=1) /*将链表中的信息写入文件中*/printf("\n写入文件失败!\n请重新启动本系统!\n");p0=p;p=p->next;free(p0); /*释放所有结点*/}h_reader=NULL;fclose(fp_reader); /*关闭文件*/}void Save_Book() /*保存图书信息*/{FILE *fp_book; /*创建文件型指针*/BK *p,*p0;p=h_book;if((fp_book=fopen("","wb"))==NULL) /*创建文件,进行保存*/{printf("\n文件保存失败!\n请重新启动本系统...\n");exit(0);}while(p!=NULL){if(fwrite(p,sizeof(BK),1,fp_book)!=1) /*将链表中的信息写入文件中*/printf("\n写入文件失败!\n请重新启动本系统!\n");p0=p;p=p->next;free(p0);}h_book=NULL;fclose(fp_book); /*关闭文件*/}void Load() /*加载信息*/{Load_Reader();Load_Book();}void Load_Reader() /*加载读者信息*/{RD *p1,*p2,*p3;FILE *fp; /*创建文件型指针*/fp=fopen("","rb"); /*打开文件*/p1=(RD *)malloc(sizeof(RD));fread(p1,sizeof(RD),1,fp);h_reader=p3=p2=p1;while(! feof(fp)) /*读出信息,重新链入链表*/{p1=(RD *)malloc(sizeof(RD));fread(p1,sizeof(RD),1,fp);p2->next=p1;p3=p2;p2=p1;}p3->next=NULL;free(p1);fclose(fp); /*关闭文件*/}void Load_Book() /*加载图书信息*/{BK *p1,*p2,*p3;FILE *fp; /*创建文件型指针*/fp=fopen("","rb"); /*打开文件*/p1=(BK *)malloc(sizeof(BK));fread(p1,sizeof(BK),1,fp);h_book=p3=p2=p1;while(! feof(fp)) /*读出信息,重新链入链表*/{p1=(BK *)malloc(sizeof(BK));fread(p1,sizeof(BK),1,fp);p2->next=p1;p3=p2;p2=p1;}p3->next=NULL;free(p1);fclose(fp); /*关闭文件*/}int main(){FILE *fp_book,*fp_reader; /*创建文件型指针*/Login();if((fp_book=fopen("","rb"))==NULL||(fp_reader=fopen("","rb"))==NULL) Init();elseLoad();Menu_select(); /*调用主菜单*/}。

相关文档
最新文档