图书管理系统数据结构
数据结构_图书馆管理系统

湖南科技大学课程设计报告题目: 图书管理基本业务模拟院系:计算机科学与工程学院专业班级:计算机科学与技术一班学号: 0905010119学生姓名:张杰指导教师:李峰2010年12月31日一、问题分析图书馆基本业务模拟包含多方面的操作,其中本程序描述的是图书馆的新书入库、读者注册、图书馆借阅、归还、信息查询(含书籍信息查询和读者信息查询)等功能。
1)新书入库功能:新到书籍入库包含几方面的操作:查询该书名的书籍在图书馆信息中是否已经存在,若存在,则增加可借数量和书籍总量,若不存在,则新增加概述信息,从界面输入书籍的编号(0~999999的长整型)、书名(字符串类型)、该书作者名(字符串类型)、该书出版社信息(字符串类型)、出版日期(长整型)、该书的现存量(整型)、该书的总量(整型)。
输入该信息之后,将该节点插入到书籍信息链表中去。
该节点的插入位置根据查找,找到合适的位置插入,这样可以保证整个数据都是有序的,方便查找。
2)读者注册功能没有账号和密码读者和管理员都不能登录系统,本系统默认第一个注册系统的是系统管理员,借阅号为1000,权限是1,并输入自己基本信息,默认可借本数为10,并将所借书信息区全部置零。
不是第一个注册的读者,借阅号从1000往后顺延,自己设置密码,权限为0.,其余信息与管理员相同,但是登陆之后的界面,管理员可以看到“入库”菜单选项,普通读者不能看到该选项。
3)借阅功能书籍借阅主要涉及存书库和读者信息库双方的更新。
用户首先登陆系统,查询(3种查询方式)该书是否存在,该书的剩余数量是否大于零,最后查询该读者是否已经借满书籍。
若以上条件都满足,则将该书编号存入该读者的借阅信息区,将该读者的可借书数量减一,该存书的可借数量减一。
4)归还功能读者登录后按书名号来归还所借书籍,若书名号正确并且确认归还该书籍,则从读者的借书区删除该书籍,读者的课结束数量加一,将该书的可借数量增加一,然后返回。
5)信息查询功能信息查询分为读者信息查询和书籍信息查询,读者信息查询是在读者登录之后,可以显示本人的基本信息以及借书状况(所借书的本数、可借书本书以及所借书的信息),还可查询书籍信息,可根据书籍的编号来查找书籍、根据书名来查找书籍、根据作者名来查询书籍。
图书馆管理系统数据字典

图书馆管理系统数据字典一、引言图书馆管理系统数据字典是为了规范和定义图书馆管理系统中所涉及到的数据元素和数据结构,以便于系统开辟人员、管理员和用户之间的沟通和理解。
本文档详细描述了图书馆管理系统中各个模块的数据字典,包括数据元素的名称、数据类型、长度、取值范围、说明等信息。
二、用户管理模块数据字典1. 用户信息表(User)数据元素:- 用户ID(UserID):整型,惟一标识用户的ID- 用户名(Username):字符串,用户的登录名- 密码(Password):字符串,用户的登录密码- 姓名(Name):字符串,用户的真实姓名- 身份证号(IDCard):字符串,用户的身份证号码- 手机号(PhoneNumber):字符串,用户的手机号码- 邮箱(Email):字符串,用户的电子邮箱地址- 注册日期(RegistrationDate):日期类型,用户的注册日期2. 用户借阅记录表(BorrowRecord)数据元素:- 借阅记录ID(RecordID):整型,惟一标识借阅记录的ID- 用户ID(UserID):整型,借阅记录对应的用户ID- 图书ID(BookID):整型,借阅记录对应的图书ID- 借阅日期(BorrowDate):日期类型,借阅记录的借阅日期 - 归还日期(ReturnDate):日期类型,借阅记录的归还日期 - 是否归还(IsReturned):布尔型,标识借阅记录是否已归还三、图书管理模块数据字典1. 图书信息表(Book)数据元素:- 图书ID(BookID):整型,惟一标识图书的ID- 图书名称(BookName):字符串,图书的名称- 作者(Author):字符串,图书的作者- 出版社(Publisher):字符串,图书的出版社- 出版日期(PublicationDate):日期类型,图书的出版日期 - ISBN(ISBN):字符串,图书的国际标准书号- 分类(Category):字符串,图书的分类- 馆藏数量(Quantity):整型,图书的馆藏数量- 可借数量(AvailableQuantity):整型,图书的可借数量2. 图书分类表(Category)数据元素:- 分类ID(CategoryID):整型,惟一标识分类的ID- 分类名称(CategoryName):字符串,分类的名称- 父分类ID(ParentCategoryID):整型,父分类的ID四、借阅管理模块数据字典1. 借阅规则表(BorrowRule)数据元素:- 规则ID(RuleID):整型,惟一标识规则的ID- 最大借阅数量(MaxBorrowQuantity):整型,用户最多可借阅的图书数量 - 最大借阅天数(MaxBorrowDays):整型,用户最多可借阅的天数2. 借阅预约表(Reservation)数据元素:- 预约ID(ReservationID):整型,惟一标识预约的ID- 用户ID(UserID):整型,预约对应的用户ID- 图书ID(BookID):整型,预约对应的图书ID- 预约日期(ReservationDate):日期类型,预约的日期五、系统管理模块数据字典1. 系统日志表(SystemLog)数据元素:- 日志ID(LogID):整型,惟一标识日志的ID- 用户ID(UserID):整型,日志对应的用户ID- 操作时间(OperationTime):日期类型,操作的时间- 操作内容(OperationContent):字符串,操作的内容2. 系统配置表(SystemConfig)数据元素:- 配置项ID(ConfigID):整型,惟一标识配置项的ID- 配置项名称(ConfigName):字符串,配置项的名称- 配置项值(ConfigValue):字符串,配置项的值以上是图书馆管理系统数据字典的详细描述,包括用户管理、图书管理、借阅管理和系统管理等模块的数据字典内容。
图书馆管理信息系统的数据库设计

1 需求分析1.1系统目标大学图书馆管理信息系统为广大大学师生提供了便利的图书借阅服务。
本系统面向全体教职职工与学生,该系统根据不同的操作者,提供不同的服务,以实现图书管理系统的科学化、系统化、自动化,最大限度地为老师和学生提供方便和提供管理效率。
1.2功能分析图书馆管理信息系统的功能模块如图1.1所示。
图1.1 图书馆管理信息系统功能模块(1)读者管理1)新增读者。
新增读者时要求填写其基本的信息,包括读者号、密码、读者姓名、性别、读者类型、单位、电子邮箱等。
2)读者信息维护。
读者可以对自己的信息进行修改,图书管理员有权限对已有读者的信息进行修改和删除。
3)借阅历史查看。
注册的读者可以在网上查询自己的图书借阅情况,一般读者只可以查阅到自己的借阅情况和图书的信息,而图书管理员可以查看任何读者的信息、借阅情况、任何图书的信息和借阅情况。
(2)书籍管理1)新增书籍。
图书管理员对新增的入库文献资料按规定进行编目、编录、加工、建库。
对每本图书、杂志要登记其基本信息,包括图书名称、图书作者、ISBN号、出版地、出版社、出版时间、字数、单价、内容简介、所属分类号,馆藏地、入库时间等。
2)书籍信息维护。
图书管理员可以对入库的书籍信息进行修改,或是删除该书籍信息,如采购书籍册数。
3)书籍类别管理。
新增书籍按照中图法分类规则进行分类。
(3)借阅管理1)书籍借阅管理。
图书管理员根据不同类型读者的借阅情况,对书籍进行管理。
(4)查看1)书籍信息查询。
登陆本系统的读者或是图书管理员可以查看现有图书系统中任何书籍的信息。
2)读者信息查询。
一般的读者只能查看自己在该系统上的信息,如借阅的书籍等,而图书管理员可以查看任何读者的信息情况。
3)借阅信息查询。
读者或是图书管理员可以查看每本书籍的在图书馆的状态,是借阅中还是在馆藏地等。
1.3数据需求及业务规则分析(1)图书馆为全校的学生和教职工提供图书借阅服务,学生分为高职生、本科生(含一本、二本、三本)、硕士研究生(含MBA)和博士研究生等多种层次。
图书管理系统流程图

案例1 图书馆管理系统一、问题描述对我校图书馆图书管理流程进行调研,开发设计一个能对图书、读者及图书借阅情况进行管理的图书馆管理系统。
要求该系统能满足管理人员对图书管理以及读者借阅需要,根据权限不同,用户具有不同的功能和操作界面。
二、应用需求分析1、用户需求调查通过对现行图书馆业务的调查,明确了图书馆工作由图书管理、读者管理、借书服务和还书服务4部分组成。
用户对现有系统功能的描述如下:(1)图书管理1)对馆的所有图书按类别统一编码;对各类图书建立图书登记卡,登记图书的主要信息。
2)新购的图书要编码和建卡,对遗失的图书要注销其图书登记卡。
(2)读者管理1)建立读者信息表,对读者统一编号。
2)对新加盟的读者,将其信息加入到读者信息表中;对某些特定的读者,将其信息从读者信息表中删除。
3)当读者情况变化时,修改读者信息表中相应的记录。
(3)借书服务1)未借出的图书要按类别上架,供读者查看。
2)建立借书登记卡,卡上记录着书号、读者和编号、借书日期;将借书登记卡按读者单位、读者编号集中保管。
3)读者提出借书请求时,先查看该读者的借书卡,统计读者已借书的数量。
如果该读者无借书超期或超量情况,则办理借书手续。
4)办理借书手续的方法是:填写借书登记卡,管理员核实后读者可将图书带走。
(4)还书服务1)读者提出还书要求时,先对照相应的借书卡,确认书号和书名无误后可办理还书手续。
2)办理还书手续的方法是:在借书卡上填写还书时间,管理员签名;将已还的借书卡集中保管;收回图书。
3)将收回的图书上架,供读者查看和借阅。
2、系统数据流程图经过详细的调查,弄清了系统现行的业务流程。
通过分析和抽象后,用数据流图表示。
图1是图书馆管理系统的顶层数据流图。
图1 图书馆管理系统顶层数据流图在图书馆管理系统顶层数据流图中,“P1 部管理”和“P2 借书管理”两个处理框所表示的功能都太复杂,对它们进一步细化后得出第二层数据流图。
见图2和图3。
图书管理系统数据结构课设报告

《数据结构》课程设计报告书题目:图书管理系统系别:计算机科学与应用学号:学生姓名:指导教师:完成日期:目录图书管理系统 (3)1:需求分析 (3)2:概要设计 (3)3:详细设计 (4)3.1:线性表 (4)3.2:初始化 (5)3.3:显示所有信息 (5)3.4:添加信息 (6)3.5:删除信息 (7)3.6:查询信息 (8)4:调试分析 (10)5:测试结果 (11)6:总结 (13)指导教师评语: (14)图书管理系统1:需求分析1)程序的输入:只需按系统提示输入整型数字或英文字母即可。
每次数据的输入均以回车符作为结束标志。
2)程序的输出:每一项数据输出均有汉字的提示,输出格式均为整型或字符串。
3)程序的系统功能:(1)图书库系统管理;(2)借阅者信息的管理;(3)根据需要提供对图书所需的查询方式。
2:概要设计本程序的流程图如下:开始输入r/b 读者管理图书管理显示所有读者信息输入1/2/3/4/5增加读者删除读者查询读者信息退出r 1 2534输入1/2/3/4/5增加图书删除图书查询图书信息退出124显示所有读者信息b结束继续吗ynn继续吗5y3图2-1 图书管理系统流程图3:详细设计采用microsoft visual c++作为开发工具,用结构体定义线性表,对所要处理的学生信息和图书信息进行存储,分别调用各个功能函数来处理。
3.1:线性表信息的存储用线性表实现,具体用结构体来定义,图书信息包含的变量有:图书编号,图书名,作者,出版社,出版时间,具体实现如下:struct book{char booknum[8];char bookname[15];char author[12];char PubHouse[15];char PubTime[11];}bookinfor[NUM];读者信息包含的变量有:读者编号,读者名,借书数量具体实现如下:struct reader{char readnum[8];char readname[15];char booknu[12];}readinfor[NUM1];3.2:初始化本函数用于初始化必须的图书管理数据,通过对1-5数字选择进行操作,分别执行不同的函数,具体实现如下:char Initialization1()/*界面初始化*/{char ch;printf(" ********Library Management System********\n1.Show all the book information\n2.Add book information\n3.Delete book information\n4.Search book information\n5.Exit\nPlease select:");do{ch=getchar();if(ch>='1'&&ch<='5'){printf("%c\n",ch);getchar();return ch;}}while(1);3.3:显示所有信息显示所有信息,打开bookinfo.txt文件,逐个读文件,关闭文件,具体实现如下:void showall()/*显示所有*/{int i=0;FILE *fp;system("cls");if((fp=fopen("C:\\bookinfo.txt","r"))==NULL){printf("ERROR:cannot open file\n");getchar();return;}printf("booknum bookname author PubHouse Pubtime\n");while(!feof(fp)){fread(&bookinfor[i],sizeof(struct book),1,fp);printf("%-8s %-15s %-12s %-15s %-11s\n",bookinfor[i].booknum,bookinfor[i].bookname, bookinfor[i].author,bookinfor[i].PubHouse,bookinfor[i].PubTime);i++;if(!(i%20)){printf("Press any key to continue...");getchar();}}fclose(fp);printf("Press any key to return");getchar();return;3.4:添加信息本函数可以将信息写到文件中,首先逐个输入记录中的数据项,然后打开文件,写进文件。
高校图书馆管理系统(数据库)

摘要在计算机日益普及的今天,对个人而言若采用一套行之有效的图书管理系统来管理自己的书籍,会方便许多.对图书管理部门而言,以前单一的手工检索已不能满足人们的要求,往往是投入了大量的人力和财力却得不到高效的管理效率.为了便于图书资料的管理需要有效的图书管理软件,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,达到提高图书借阅信息管理效率的目的。
采用数据库技术生成的图书馆借阅管理系统将会极大地方便借阅者并简化图书馆管理人员和工作人员的劳动,使工作人员从繁忙、复杂的工作进入到一个简单、高效的工作中关键字:图书借阅;人员管理;图书维护;目录1.引言 (1)2。
需求分析阶段 (2)2.1 引言 (2)2.2 需求分析阶段的目标与任务 (2)2。
2.1处理对象 (2)2。
2.2处理功能及要求 (3)2.2。
3。
安全性和完整性要求 (3)2.3 需求分析阶段成果 (3)2.3。
1 体会与收获 (3)2。
3.4 图书管理系统数据字典 (4)3 概念设计阶段 (7)3。
1 引言 (7)3。
2 任务与目标 (7)3.3 阶段结果 (8)4.逻辑设计阶段 (9)4.1逻辑设计的任务和目标 (9)4.2数据组织 (10)4.2.1将E-R图转换为关系模型 (10)4.2。
2模型优化 (11)4。
2.3数据库模式定义 (11)5.物理设计阶段 (14)6.数据库实施阶段 (14)6.1建立数据库、数据表、视图、索引 (14)6.1.1 建立数据库 (14)6。
1。
2 建立数据表 (14)6。
1。
3 建立视图 (16)6.1.4 建立索引 (17)6.2 应用举例 (17)7.结束语 (22)参考文献 (23)1.引言随着社会信息量的与日俱增,职场竞争的日趋激烈,越来越多的人更关注知识的积累、能力的培养。
作为信息存储的主要媒体之一图书,数量、规模比以往任何时候都大的多,不论个人还是图书管理部门都需要使用方便而有效的方式来管理自己的书籍。
图书管理系统系统分析报告

系统分析报告—图书信息管理系统一、引言1.系统名称图书信息管理系统2.系统目标实现管理的科学化,系统化,自动化,最大限度的为用户提供方便,节约人力、物力等各方面资源,消灭由于信息冗余而造成的数据不一致,和数据查询困难的问题。
为了使图书管理更加规范化,程序化,科学化,故研发了这次的图书管理系统。
引进计算机技术对图书进行方便的管理,这样有诸多好处,不同管理人员可以对图书众多的信息进行动态的管理,例如基本资料的修改,添加,删除,查询等。
有利于减少错误,减轻单一管理员的任务,提高效率,节约人力资源,降低成本力求使其功能简洁明了,而且齐全、易于操作。
3.系统功能本系统主要包括五大功能模块:系统设置,图书管理,用户管理,交易管理,附件和帮助。
1.1图书管理部分:包括图书信息的更新和图书信息查询两部分。
其中,图书信息更新操作有添加图书信息,删除图书信息,修改图书信息;图书信息查询,提供一定的条件查询,使用户能够及时地掌握图书状态信息;面向用户提供图书信息交易,图书的在线阅读,更直观的提供图书的各种信息。
用户管理部分:这一部分包括用户信息的更新管理和用户信息查询管理两部分。
其中,更新用户信息管理包括添加用户信息、修改用户信息、删除用户信息;查询用户信息,提供一定的条件查询,使访问者能够及时地掌握用户信息;系统还提供交易平台,更直观的反映读者信息。
1.3交易管理部分:这一部分包括图书购买信息管理和买家卖家信息管理两部分,主要是实现图书的交易管理功能,对交易信息进行有效的管理。
1.4系统管理:包括增加新用户,修改用户密码以及切换用户等功能,系统对用户权限进行限制,分为普通管理员和超级管理员,禁止其对系统的某些模块进行操作,提高了系统的安全性。
1.5附件和帮助:这里主要是系统的一些帮助文件,背景图片,小游戏,音乐等,用户可以根据自己的喜好进行变换。
二、业务流程分析在本系统的系统分析阶段,我们主要是对广泛的图书和用户管理进行多方面的调查和研究,从而抽象出我们系统的业务流程图,数据流程图以及数据字典。
图书馆管理系统数据库设计

图书馆管理系统数据库设计图书馆是每个高校必备的建筑之一,而一个图书馆的好坏不仅与管内藏书的数量、质量有关,还与一个图书馆的管理系统密切相关。
一个好的图书管理系统,可以实时跟踪书的近况,了解每本书的在借续借情况。
本组成员经过研究讨论,决定针对图书馆借书系统进行进一步的研究、优化,提高图书馆图书的管理性能,方便学生了解图书借阅情况,及时还书,避免出现逾期。
本实验数据库设计包括以下四个部分:数据库需求分析、数据库概念结构设计、数据库逻辑结构设计、数据库物理结构实现。
一、数据库需求分析通过对##大学图书馆借书还书流程的分析,得到以下数据流程图1、借书流程图2、还书流程图根据数据流图,设计如下数据项和数据结构:1、图书信息,包括的数据项有:图书号、书名、图书数量、作者、出版社、出版日期、所属图书馆等。
2、借阅人信息,包括的数据项有:一卡通卡号、姓名、性别、专业、联系方式3、图书馆信息,包括的数据项有:图书馆ID、图书馆名称等。
4、图书借阅关系,包括的数据项有:一卡通卡号、图书号、借阅时间、还书时间等。
5、图书收藏关系,包括的数据项有:图书馆ID、图书号、藏书量等。
二、数据库功能组成三、 数据库概念结构设计本数据概念设计采用E-R 图体现。
各个实体具体的E-R 图描述如下:图书信息E-R 图所在校区图书馆图书馆ID图书馆信息E-R 图借阅者姓名年级专业一卡通卡号 联系方式借阅者信息E-R 图实体及其关系E-R图四、数据库逻辑结构设计逻辑结构设计,即将以上E-R图转化为关系模式,具体如下所示:1、借阅关系信息表:创建此表所需要的字段名是:借阅人一卡通号、借阅图书号、借阅时间、借阅期限、还书时间,其中借阅人一卡通号、借阅图书设为主键。
学生借阅图书表字段名字段类型字段宽度说明描述jyykth varchar 10 不空,主键借阅人一卡通号jytsh varchar 18 不空,主键借阅图书号jysj datetime 18 不空借阅时间hssj datetime 18 不空还书时间qfje money 8 不空欠费金额2、图书馆信息表:创建此表所需要的字段名是:图书馆ID、图书馆名称,其中图书馆ID设为主键。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
struct book /*图书信息*/{int num; /*书号*/char name[10]; /*书名*/char where[10]; /*所在书库*/char author[15]; /*作者*/char pub[20]; /*出版社*/int count; /*数量*/struct book *next;};/*输出模块*/void print(struct book *p0){struct book *p;p=p0->next;printf("\n\n\t\t^^^^^^^^^^^^^^图书信息表^^^^^^^^^^^^^^");printf("\n\n图书编号---图书名称---所在书库----作者----出版社---数量\n"); while(p!=NULL){printf(PT);p=p->next;}getch();}/*输入模块*/struct book *creat(){struct book *head,*p1,*p2;int i=0;head=p2=(struct book *)malloc(N);head->next=NULL;printf("\n\n\t\t录入图书信息");printf("\n\t---------------------------------------");while(1){ p1=(struct book *)malloc(N);printf("\n 请输入图书编号(书号为0结束): ");scanf("%d",&p1->num);if(p1->num!=0){printf("\n\n书名所在书库作者出版社图书数量\n");scanf("%s%s%s%s%d",p1->name,p1->where,p1->author,p1->pub,&p1->cou nt);p2->next=p1;p2=p1;i++;}elsebreak;}p2->next=NULL;free(p1);printf("\n\t\t----------------------------------------"); printf("\n\t\t %d 种书录入完毕",i);getch();return head;}/*查找模块*/void find(struct book *p0){char name[10];int flag=1;struct book *p;p=p0->next;printf("请输入要查找的书名:\n");scanf("%s",name);for(p=p0;p;p=p->next)if(strcmp(p->name,name)==0){printf("\n\n图书编号---图书名称---所在书库----作者----出版社---数量\n"); printf(PT);flag=0;break;}if(flag) printf("\n 暂无此图书信息\n");getch();}/*删除模块*/void del(struct book *p0){char name[10];int flag=1;struct book *p;p=p0;printf("请输入要删除的书名:\n");scanf("%s",name);while(p!=NULL){if(strcmp(p->name,name)==0){p0->next=p->next; /*后续节点连接到前驱节点之后*/ free(p);printf("\t该书资料已删除.");flag=0;break;}p0=p;p=p->next;}if(flag) printf("\n\t无此图书信息。
");getch();}/*增加模块*/void insert(struct book *p0){struct book *p;p=(struct book *)malloc(N);while(1){printf("\n 请输入要增加的图书编号(书号为0 退出): ");scanf("%d",&p->num);if(p->num!=0){if(p0->next!=NULL&&p0->next->num==p->num) /*找到重号*/{p=p->next;free(p);printf("\t该书已存在");}else{printf("\n\n书名所在书库作者出版社图书数量\n");scanf("%s%s%s%s%d",p->name,p->where,p->author,p->pub,&p->count); p->next=p0->next;p0->next=p;printf("\t已成功插入.");}}elsebreak;}getch();}/*修改模块*/void modify(struct book *p0){char name[10];int flag=1;int choice;struct book *p;p=p0->next;printf("请输入要修改的书名:\n"); scanf("%s",name);while(p!=NULL&&flag==1){if(strcmp(p->name,name)==0) {printf("\n\t请选择要修改的项:"); printf("\n\t 1.修改图书编号\n"); printf("\n\t 2.修改图书所在书库\n"); printf("\n\t 3.修改图书作者\n"); printf("\n\t 4.修改图书出版社\n"); printf("\n\t 5.修改图书库存量\n"); scanf("%d",&choice);switch(choice){case 1: { printf("\n 请输入新的图书编号:");scanf("%d",p->num); break;}case 2: { printf("\n 请输入新的图书书库:");scanf("%s",p->where); break;}case 3: { printf("\n 请输入新的图书作者:");scanf("%s",p->author); break;}case 4: {printf("\n 请输入新的图书出版社:");scanf("%s",p->pub); break;}case 5: {printf("\n 请输入新的图书库存量:");scanf("%d",p->count); break;}}printf("\n\t该项已成功修改。
\n\t 新的图书信息:");printf("\n\n图书编号---图书名称---所在书库----作者----出版社---数量\n"); printf(PT);flag=0;}p0=p;p=p0->next;}if(flag) printf("\n\t暂无此图书信息。
");getch();}/*读文件*/struct book *read_file(){int i=0;struct book *p,*p1,*head=NULL;FILE *fp;if((fp=fopen("library.txt","rb"))==NULL){printf("\n\n\n\n\n \t********库文件不存在,请创建!**********"); getch();return NULL;}head=(struct book *)malloc(N);p1=head;head->next=NULL;printf("\n 已有图书信息:");printf("\n\n图书编号---图书名称---所在书库----作者----出版社---数量\n");while(!feof(fp)){p=(struct book *)malloc(N); /*开辟空间以存放的取得信息*/while(fscanf(fp,"%d%s%s%s%s%d",&p->num,p->name,p->where,p->author ,p->pub,&p->count)!=EOF){printf(PT);i++;}p1->next=p;p1=p;}p1->next=NULL;fclose(fp);printf("\n 共种%d 图书信息",i);printf("\n\n\n 文件中的信息以正确读出。
按任意键进入主菜单。
");getch();return (head);}/*保存文件*/void save(struct book *head){FILE *fp;struct book *p;fp=fopen("library.txt","wb"); /*以只写方式打开二进制文件*/if(fp==NULL) /*打开文件失败*/{printf("\n=====>打开文件失败!\n");getch();return ;}elsefor(p=head->next;p!=NULL;p=p->next)fprintf(fp,"%d %s %s %s %s %d\n",p->num,p->name,p->where,p->author,p ->pub,p->count);fclose(fp);printf("\n\t保存文件成功!\n");}void main(){struct book *head=NULL;int choice=1;head=read_file();if(head==NULL){printf("\n\t\t**********");getch();head=creat();}do{system("cls");printf("\t\t----------Welcome---------\n"); printf("\n\n\t欢迎您,图书管理员.\n"); printf("\n\n\n\n\n");printf("\n\t 请选择:");printf("\n\t 1.查询图书信息\n");printf("\n\t 2.修改图书信息\n");printf("\n\t 3.增加图书信息\n");printf("\n\t 4.删除图书信息\n");printf("\n\t 5.显示所有图书信息\n");printf("\n\t 0.退出系统\n");scanf("%d",&choice);switch(choice){case 1: find(head); break;case 2: modify(head); break;case 3: insert(head); break;case 4: del(head); break;case 5: print(head); break;case 0: system("cls");printf("\n\n\n\n\n\t^^^^^^^^^^谢谢使用,再见^^^^^^^^^^!\n\n");break;}}while(choice!=0);save(head);}。