图书类型管理程序
学校图书管理制度

学校图书管理制度一、总则1. 为了规范学校图书的采购、管理和使用,提高图书资源的使用效率,满足教育教学和科研的需要,特制定本管理制度。
2. 本制度适用于学校图书馆及各院系图书室的图书管理活动。
二、图书采购1. 图书采购应根据学校的教学、科研和文化建设需要,结合图书馆藏书现状和发展规划进行。
2. 采购图书应优先选择符合教育方针、内容丰富、质量上乘的图书。
3. 采购过程应公开透明,通过招标、询价等方式进行,确保采购的公正性和经济性。
4. 采购图书前应进行充分的市场调研和需求分析,必要时可邀请教师、学者参与选书过程。
三、图书验收与登记1. 新购图书到馆后,应由专人负责验收,确保图书质量符合要求。
2. 验收合格的图书应进行登记,包括书名、作者、出版社、ISBN号、购入日期等信息。
3. 图书登记信息应及时录入图书管理系统,确保数据的准确性和完整性。
四、图书借阅与管理1. 图书借阅应遵循“先来后到”的原则,借阅期限和续借次数由图书馆根据图书类型和使用频率规定。
2. 读者借阅图书时需出示有效证件,并遵守图书馆的借阅规则。
3. 图书逾期未还或损坏应按规定缴纳罚款或赔偿。
4. 定期对馆内图书进行清点和整理,对长期无人借阅或过时的图书进行淘汰或更新。
五、图书维护与更新1. 图书应妥善保管,定期进行清洁和维护,确保图书的完好。
2. 图书馆应根据读者需求和学科发展趋势,定期更新图书资源。
3. 更新图书时,应充分考虑读者建议,并结合专业评审意见进行选书。
六、电子图书与数字化资源管理1. 电子图书和数字化资源的采购、使用和管理应遵循相关法律法规和版权保护要求。
2. 电子图书和数字化资源应提供便捷的访问方式,确保读者能够高效利用。
3. 定期对电子资源进行维护和升级,保障资源的可用性和安全性。
七、附则1. 对于违反本管理制度的行为,图书馆有权采取相应措施,包括但不限于限制借阅权限、要求赔偿损失等。
2. 本管理制度自发布之日起实施,由图书馆负责解释。
C语言程序课程设计图书管理系统方案

C语言程序课程设计报告标题:图书管理系统专业:软件工程类:设计主题图书馆管理系统主要包括管理图书的库存信息,每本书的借阅信息,每个人的借阅信息。
每本书的库存信息包括数量、书名、作者、出版日期、金额、类别、总入库数量、当前库存、已借出图书数量等。
每本借书包括以下信息:编号、书名、金额、借书证号、借阅日期、到期日期、罚款金额等。
每个人的图书馆信息包括借书证号、班级、学号等。
该系统的功能包括以下几个方面:一、借阅资料管理要求对图书、期刊、报纸、期刊进行分类管理,这样操作会更加灵活方便。
可以随时添加、删除、修改、查询等相关资料。
b、借贷管理(1)借贷操作(2)还书操作(3)更新治疗提示:以上处理需要相互配合,通过编辑赔偿和违约金金额来完成图书借还业务的各种登记。
例如,读者在还书时,不仅要更新图书的库存信息,还要自动计算图书的罚款金额。
并显示读者当天到期未还图书的所有信息。
c、读者管理读者等级:对借阅的读者进行分类,比如可以分为教师和学生两类。
并定义每类读者可以借阅的图书数量及相关借阅时间等信息。
读者管理:可以录入读者信息,以及挂失或注销读者、查询等服务。
D.统计分析可以随时进行统计分析,及时了解当前的借阅情况和相关数据状态。
统计分析包括借阅列表、数据状态统计、借阅统计等功能分析,显示当日所有到期未还的图书信息。
e系统参数设置:您可以设置相关的系统服务器参数,如违约金金额、最大借用天数等。
根据题目分析这项工作分为六个模块。
1.图书数据2.借款人信息3.借用模块4.还书模块5.照看书籍6.查询模块模块一:书号,书名,作者,出版时间,价格,份数,页数。
模块二:单位、借阅书目、借阅时间模块3:输入书名、书号、借书证。
模块四:登记书号,还书,处理罚款。
模块5:管理书库中的书籍,将新书入库,删除旧书,堆栈查询模块6:图书查询。
数据测试源代码汉字菜单可以参照以下代码编写:#包含“stdio.h”。
主(){ char c;int I;做{clr SCR();for(I = 0;i < 80i++)printf(" * ");printf("\t 1:添加书籍\ n ");printf("\t 2:列出书籍\ n ");printf(" \ t 3:s reach books \ n ");printf("\t 4:借书\ n ");printf("\t 5:返回图书\ n ");printf("\t6:退出\n ")printf(" \ t请选择输入选项[1 \ \ 2 \ \ 3 \ \ 4 \ \ 5 \ \ 6]:\ n ");做{c = getchar();}while(c!='1'&&c!='2'&&c!='3'&&c!='4'&&c!='5'&&!='6');getchar();开关(c){事例“1”:输入();打破;案例“2”:del();打破;事例“3”:find();打破;case“4”:arrange();打破;事例“5”:right();打破;案例“6”:出口(0);}Printf("按任意键返回主菜单:\ n ");getchar();clr SCR();} while(1);}#include <stdio.h >定义图书结构*/结构书{int _ id#include <stdlib.h >#include <string.h >#定义借入1#定义NOBORROW 0/*//数字,唯一char _ name[32];//书的名称,不唯一int _ type//书的类型,不唯一int _ status//书的状态,借出/未借出int _ count//图书借出的次数struct Book * _ next//下一本书结构书* _ prev//前一本书};定义书籍类型*/操作目录提示*/操作目录提示1 */添加图书类型并显示用户信息*/添加图书状态并显示用户信息。
图书管理系统的数据流图、程序功能图

数据流图:数据流图:读者读者图书资料图书资料管理系统管理系统管理员管理员读者读者 查询查询Book 图书信息图书信息Author 作者信息表作者信息表BookConcern 出版社信息表出版社信息表Type 类型信息表类型信息表管理员管理员添加图书添加图书信息信息删除图书信息信息修改图书信息信息Book 图书信息表管理员管理员添加作者添加作者删除作者删除作者修改作者修改作者Author 作者信息表作者信息表管理员管理员添加出版社删除出版社修改出版社BookConcern 出版社信息表社信息表管理员管理员添加图书添加图书 类型类型删除图书类型类型修改图书类型类型Type 图书类型信息表图书查询图书查询书名查询作者查询类型查询出版社查询显示作者名显示类型名显示出版社名显示查询结果显示查询结果按查询按钮按查询按钮图书管理图书管理添加修改删除显示信息显示信息查询查询图书管理图书管理添加类型类型 添加作者作者添加出版社版社添加 修改 删除 删除添加 添加 修改 修改 删除类型信息类型信息更新更新管理员管理员更新更新出版社出版社查询或更新图书图书书名书名备注备注类型类型出版社出版社作者作者更新更新 作者信息作者信息类型名类型名 备注备注备注备注出版社出版社 年龄年龄备注备注职务职务 姓名姓名性别性别n 1 1 n Author ID 作者名作者名 年龄年龄 性别性别 职务职务 备注备注BookConcern ID 出版社出版社 备注备注Type ID 类型类型 备注备注Book ID 书名书名作者作者 出版社出版社 类型类型 藏书份数藏书份数开始开始显示所有图书显示所有图书选择选择输入书名输入书名按查询按钮按查询按钮显示查询结果显示查询结果结束结束选择作者名者名选择出版社版社 选择类型名选择类型名。
学校图书审核入库管理制度

学校图书审核入库管理制度一、总则为规范学校图书的审核入库管理工作,提高图书管理水平,保障学校图书资源的有效利用,特制定本制度。
二、审核入库范围1. 学校所有类型图书均需进行审核入库管理,包括教科书、辅助教材、电子书籍等。
2. 图书的入库管理范围包括纸质图书和电子书籍。
三、审核流程1. 图书采购部门向供应商订购图书。
2. 供应商将图书送至学校,并提供相应的发票和图书清单。
3. 图书管理员根据图书清单核对图书种类、数量和质量,如有问题及时与供应商联系。
4. 确认图书无误后,将图书分类整理并填写入库登记册。
5. 经审核入库的图书将被分配到相应的图书馆或阅览室。
四、入库管理1. 图书管理员应按照入库登记册的记录,将图书按照分类整齐摆放,确保每本书都有相应的标签。
2. 图书管理员应定期检查图书的存放情况,及时调整位置,以保证图书馆或阅览室的整洁与有序。
3. 图书管理员应编制图书目录,方便读者查阅。
4. 图书管理员应及时处理读者对图书的查询和咨询。
五、库存管理1. 图书管理员应定期统计库存数量,并与实际情况进行比对。
2. 对于库存过多或过少的图书,应调整采购计划,保持合理库存水平。
3. 对于长期未被借阅的图书,图书管理员应考虑进行清理或转移处理。
六、图书借阅管理1. 图书管理员应负责借阅管理工作,包括借书、还书、续借等流程的管理。
2. 图书管理员应记录借阅读者的信息,确保图书能够及时归还。
3. 图书管理员应对逾期未归还的图书进行催促,并根据规定予以相应的处理。
七、图书损坏处理1. 对于因人为原因损坏的图书,读者应当赔偿相应的费用。
2. 图书管理员应将损坏的图书进行标记并进行相应的修复或更换。
3. 对于严重损坏无法修复的图书,图书管理员应及时清理并报告上级部门。
八、监督检查1. 学校管理部门应定期对图书审核入库管理工作进行检查,及时指出问题并提出改进建议。
2. 图书管理员应配合检查工作,并对发现的问题进行整改。
2023年班级图书管理制度

2023年班级图书管理制度2023年班级图书管理制度1亲爱的同学们班级图书角是在大家的共同努力之下建成的。
你们可以利用课余时间沉浸在书的海洋里尽情地在字里行间体会文字带来的'快乐。
为了让大家更方便、快捷、有序地借阅图书并做出以下规定:一、图书管理员职责:1、负责书架的整洁及时整理图书监督检查阅读书目完损情况。
2、负责组织借阅图书做好《课外图书借阅单》的登记工作。
二、借阅程序:1、借阅图书的时间是每周一到周五按学号顺序每天安排10人借阅、归还图书具体借阅安排是周一轮到50号到510号周二轮到5号到520号周三轮到5号到530号周四轮到53号到540号周五轮到54号到548号。
2、凡本班学生借阅图书必须经班级图书管理员或老师允许并在《课外图书借阅单》上登记后方可借阅。
每次每位同学只能借阅一本图书。
3、借阅图书要爱护不准在图书上乱写、乱画如有损坏或丢失要按照图书原价的倍赔偿。
4、班级图书角只对本班同学开放。
借阅的图书只能自己阅读不能转借给他人。
如有发现将严厉批评并取消借阅资格。
5、借阅图书阅读完后要按时找图书管理员办理归还手续并做好记录。
所借图书无论是否到期若有特殊情况老师可随时索还如多次催促不还一月内不得借书。
6、学生借阅的图书只能利用课余时间阅读课堂上严禁偷偷阅读如有在课堂上偷阅图书的现象发现一次取消一个月的借书资格。
7、每天看书不能少于20分钟并请家长监督。
8、班级将定期开展“阅读之星”的评比活动认真读书并做好《漂流图书登记表》、写好读后感的同学将予以奖励。
管理员每月统计借书情况作为评选月阅读之星的依据。
恳请同学们给图书角提出宝贵的意见让我们的图书角发挥最大的作用。
最后愿图书角带给大家的每一天都是快乐和充实的!三(5)班班主任____年9月20日2023年班级图书管理制度2为了有效地管理好班级图书角的图书更有效地激发学生的读书兴趣培养学生热爱读书、自觉读书的行为习惯和心理品质提高班级图书角图书的使用效果营造书香班级让班级洋溢着书香气息让书香浸润同学心灵特制定以下管理制度:一、学生借阅图书应先翻阅《图书目录》后向图书管理员(班级图书管理员:陈芳、陈和榜)提出所要借阅的书名及编号不准随意在图书角乱翻。
小学图书管理制度模版

小学图书管理制度模版一、引言本图书管理制度的目的是为了建立一个良好的图书管理系统,提高小学图书馆的服务质量和读者的阅读体验。
通过规范的流程和明确的责任分工,确保图书馆的图书资源能够得到有效的利用和保护。
二、图书入库管理1. 图书的阅览室和外借室入库要分开进行管理,以确保图书能够有序地分类和摆放。
2. 新购进的图书必须经过编目、编号并登记入库,以便于检索和管理。
3. 每本图书都必须贴上条形码,并录入图书馆管理系统,以便于读者借阅和归还。
三、图书借阅管理1. 读者需办理借书证方可借阅图书,借书证应当登记读者的基本信息,并定期更新。
2. 借书期限为15天,逾期未还的,每天收取逾期费用,直至归还图书为止。
3. 外借图书应当填写借书单,记录借书日期、书名、借书人等信息,并由借阅部门进行审核和管理。
四、图书归还管理1. 读者在借书到期后应及时归还图书,逾期的书籍应当按规定交纳逾期费用。
2. 归还图书时,应当进行图书的核对和检查,确保图书完好无损,并修改借书记录。
3. 图书归还后,应当及时放回到相应的书架上,保持图书馆的秩序和整洁。
五、图书维护和保护1. 每本图书的封面和内页都应当用适当的方式进行修补和保养,以延长图书的使用寿命。
2. 图书馆要定期进行图书清点和维护,及时发现和处理损坏或丢失的图书。
3. 读者在借阅图书期间,应当保持图书的完好无损,并在使用后及时归还。
六、图书馆服务1. 图书馆要定期开展读书活动和展览,吸引读者参与,提高读者的阅读兴趣和水平。
2. 图书馆应当配备足够的阅览座位,提供舒适的阅读环境和借书环境。
3. 图书馆要建立在线预约和借阅系统,方便读者进行线上借阅和归还。
七、违规和处罚1. 如果读者有恶意损坏图书或拖延还书时间的行为,应当视情况给予相应的处罚,如禁止借阅、限制进入等。
2. 对于丢失的图书,则需要读者赔偿相应的图书价格或采取其他补救措施。
八、制度评估和改进1. 对于图书管理制度的执行情况,图书馆应当定期进行评估,并及时对制度进行调整和改进。
图书建档管理制度

图书建档管理制度一、总则为规范图书建档工作,提高图书档案管理效率,保障图书资源的正常利用和管理。
特制定本制度。
二、建档管理范围本制度适用于所有单位内部的图书建档工作,包括订购、收集、整理、编目、分类、编号等所有环节。
三、建档管理机构单位图书建档管理机构设立在图书馆或档案管理部门,负责具体的建档工作。
图书建档管理员由专业人员担任。
四、建档管理流程1. 订购阶段:在订购图书时,应向图书建档管理员提交书名、作者、出版社等相关信息,以便建档。
2. 收集阶段:收到新书后,建档管理员应及时进行验收,确认书籍信息无误后进行建档处理。
3. 整理阶段:对收到的图书进行整理、装订,确保图书质量完好。
4. 编目阶段:建档管理员应对图书进行分类编目,便于读者查找和管理。
5. 分类阶段:根据图书的内容和特点,将图书进行分类放置,避免混乱。
6. 编号阶段:对每本图书进行编号,建立起图书的独立标识,方便管理和检索。
五、建档管理原则1. 一书一档:每本图书应建立相应的档案,内容包括书名、作者、出版社、索书号等信息。
2. 信息准确:建档信息应准确无误,确保用户能够准确、方便地查找到所需图书。
3. 分类有序:对不同类型的图书进行合理分类,便于读者根据自身需求查找所需图书。
4. 管理规范:建档工作应按照规定流程和标准进行,不得擅自更改或篡改档案信息。
5. 定期维护:建档管理员应定期检查、修正档案信息,确保信息的及时性和准确性。
六、建档管理责任1. 图书建档管理员应认真负责地履行建档工作,保证图书档案信息的完整性和准确性。
2. 部门负责人应对建档工作进行监督,确保工作流程的顺利进行。
3. 任何单位内部工作人员不得私自动用图书档案信息,违者将受到相应处罚。
七、建档管理效果评估单位应定期对图书建档工作进行评估,检查建档信息的完整性和准确性,及时发现问题并予以解决。
以上为图书建档管理制度,单位内部应严格执行,确保图书资源得到有效管理和利用。
小学图书管理制度

小学图书管理制度小学图书管理制度第一章总则为加强小学图书的管理,提高小学生对图书的阅读兴趣和阅读能力,制定本管理制度。
第二章图书采购1.采购原则(1)根据学校的课程设置和学生的阅读需要采购适宜的图书。
(2)根据读者的阅读程度,采购多种类型和难易程度的图书。
(3)在保证图书品质的同时,尽量节省开支,保证合理采购。
2.采购渠道(1)向出版社、书店、网上书店等渠道采购新书。
(2)可以从班级、学生会中收集旧书、漫画等资源进行整理后再进行采购。
第三章图书的分类和整理1.分类原则(1)按照类别:包括故事类、科普类、艺术类、人物传记类、文学类、工具书类等。
(2)按照读者程度:包括易读类、中读类、难读类。
(3)按照出版时间:按照出版时间将书籍分为新书区和旧书区。
2.整理措施(1)将每一本新书和旧书都贴上标签,分门别类放入书架。
(2)由管理员定期检查,保持书架有序。
(3)创设角落或者展架,根据季节、主题等性质展示图书。
第四章图书的借阅和归还1.借阅规定(1)除管理员外,所有学生和教职员工都可以在规定的时间内借阅图书。
(2)学生可以借阅2本书,时间为1周,每周只能借阅一次。
(3)教师可以借阅3本书,时间为2周。
2.借阅和归还流程(1)填写借阅表格,记录借阅人、借阅时间、借阅书籍等信息。
(2)借阅的书籍必须妥善保护,防止丢失或翻页纸张破损等情况发生。
(3)在规定借期内及时归还,逾期书籍每天罚款0.1元人民币。
3.图书丢失和损坏(1)如果出现图书丢失、翻页、涂写涂画、书页沾污等情况,需要立即报告管理员并照价赔偿。
(2)故意毁坏书籍的坏事,按照学校有关规定进行纪律处理。
第五章图书宣传1.开展主题活动(1)通过开展丰富多彩的主题活动,宣传好书,推动阅读活动的展开。
(2)组织学生阅读书籍后进行相关的文艺创作等活动。
2.图书展示(1)根据不同季节和主题,展示和推荐相关的图书,激发学生的阅读兴趣。
(2)在学校图书馆、教室、走廊等地方张贴有关阅读推广活动的海报。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
typedef struct bk{char book_num[11]; /* 书号采用10位编码最后1位为字符串结束标志(下同)。
*/ char book_name[41]; /* 书名规定不超过40个字母(20 个汉字)*/unsigned book_kc,book_xc; /* book_kc 代表库存梁,book_xc代表现存量*/ struct bk *next;}book;读者类型:typedef struct rd{char reader_num[11]; /* 读者编号采用10位编码*/char reader_name[11]; /* 读者姓名*/char reader_book_num[11]; /*表示所借书号,初始值为“0”*/struct bk *next;}reader;程序代码:#include <stdio.h>#include <graphics.h> /*图形函数头文件*/#include <math.h>#include <string.h>typedef struct bk {char book_num[11];char book_name[41];int book_xc;struct bk * next;}book; /* 图书信息*/typedef struct rd {char reader_num[11];char reader_name[11];char reader_book_num[11];struct rd * next ;}reader;/*读者信息*/struct bk * h_book,* h_reader; /*全局变量,分别为指向图书信息链表和读者信息链表的头指针*/void Form_Insert_New_Book();/*新书入库菜单*/void Form_Find_Book();/*查询图书菜单*/void Form_Borrow_Book();/*借书菜单*/void Form_Return_Book();/*还书菜单*/void Find_Book(char *);/*查询图书*/void Insert_New_Book(char *,char * ,int );/*新书入库,即在链表中插入一个新节点*/void Borrow_Book(char *,char *);/*借书,修改读者借阅信息和图书的现存信息*/void Return_Book(char *,char *);/*还书,修改读者借阅信息和图书的现存信息*/void print_book(struct bk *);/*输出全部图书信息*/void print_reader(struct rd *);/*输出全部读者信息*/void load_data();/*从文件中读取数据,链表头指针指向第一个节点*/void init_reader();/*第一次运行程序时对三个读者的初始化*/void init_book();/*第一次运行程序时对三本图书的初始化*/void save();/*将链表中的信息保存到文件中*/void M_Form()/*主菜单*/{ char ch;printf(“\n 图书管理系统主窗口”);printf(“\n 0:退出系统”);printf(“\n 1:新书入库”);printf(“\n 2:图书查询”);printf(“\n 3:借书登记”);printf(“\n 4:还书管理”);printf(“\n 5:输出全部信息”);do{ /*此循环用来保证选择正确的数字键执行相应的功能*/printf(“\n\n 请选择相应的功能代码:”);scanf(“%c”,&ch);fflush(stdin);/*用于清除键盘缓冲区中的多余字符*/}while(ch!='0'&&ch!='1'&&ch!='2'&&ch!='3'&&ch!='4'&&ch!='5…);switch(ch)/*根据输入的字符进行选择执行相应的模块*/{ case '0':exit(0);case '1':Form_Insert_New_Book();break;case '2':Form_Find_Book();break;case '3':Form_Borrow_Book();break;case '4':Form_Return_Book();break;case '5':load_data();print_book(h_book);print_reader(h_reader);M_Form();default:printf(“error\n”);exit(0);}}void Form_Find_Book(){ char ch;char book_num[11];printf(“\n 图书查询功能模块,请选择相应的功能代码:\n”);printf(“ 0:返回到主菜单\n”);printf(“ 1:图书查询”);do{printf(“\n\n 请选择相应的功能代码:”);scanf(“%c”,&ch);fflush(stdin);}while(ch!='0'&&ch!='1‟);switch(ch){ case '0':M_Form();break; /*选择0,则返回到上一级目录,即主菜单*/case '1':{ printf(“ \n请输入需要需要查询的书的编号:”);scanf(“%s”,book_num);fflush(stdin);Find_Book(book_num);/*执行查询*/Form_Find_Book();/*查询完毕后继续返回到查询窗口,执行下一个查询*/}default:printf(“error\n”);exit(0);}}void Find_Book(char book_num[])/*查询图书模块,根据图书编号查询*/{ struct bk *p;p=h_book;while(p!=NULL&&strcmp(p->book_num,book_num)!=0)p=p->next; /*此循环用于查找,如果在中间找到,则p就不可能到末尾指向空*/if(p==NULL)printf(“\n\t此编号对应的图书不存在!\n”);else { printf(“\n\t图书编号\t图书名\t库存量\t现存量\n”);printf(“ %10s\t %10s\t %d\t %d\t\n”,p->book_num,p->book_name,p->book_kc,p->book_xc);}getch();}void init_book()/*初始化图书模块*/{ book ba[3];FILE *fp;int i;printf(“\n 系统即将进行初始化,图书初始化模块:\n”);printf(“\n 请分别输入三本书的书号,书名,数量(以空格隔开):\n ”);for(i=0;i<3;i++)/*输入3本图书进行初始化*/scanf(“%s%s%d”,ba[i].book_num,ba[i].book_name,&ba[i].book_kc);for(i=0;i<3;i++){ba[i].book_xc=ba[i].book_kc;} /*开始时库存=现存*/if((fp=fopen(“book.dat”,“wb”))==NULL)/*建立新文件book.dat准备写入数据*/{ printf(“不能建立图书文件,初始化失败!请重新启动系统!\n”);return; }for(i=0;i<3;i++)/*将初始化的3本图书写入文件book.dat中*/{ if(fwrite(&ba[i],sizeof(struct bk),1,fp)!=1){ printf(“\写数据错误!\n”);exit(0);}}fclose(fp);}void init()/*对图形函数、图书信息、读者信息进行初始化(本程序中暂且没有用图形函数)*/{ int drive=DETECT,mode=0;initgraph(&drive,&mode,“”);init_book();init_reader();}void Insert_New_Book(char book_num[],char book_name[],int number)/*增加1本新书,读入新书的名称、编号和数量*/{ struct bk *book_fp;struct bk *p,*q,*t;q=p=h_book;while(p!=NULL&&strcmp(p->book_num,book_num)!=0){ q=p;p=p->next; } if(strcmp(p->book_num,book_num)==0){ printf(“\n\t\t此编号已经存在,请重新输入!\n”);return;}t=(struct bk *)malloc(sizeof(struct bk));strcpy(t->book_num,book_num);strcpy(t->book_name,book_name);t->book_kc=t->book_xc=number;q->next=t;t->next=NULL;if((book_fp=fopen(“book.dat”,“ab”))==NULL){ printf(“不能建立图书文件,初始化失败!请重新启动系统!\n”);return; } /*将新书信息添加到文件中*/fwrite(t,sizeof(struct bk),1,book_fp);fclose(book_fp);}void print_book(struct bk *h)/*输出图书信息*/{ struct bk *p;p=h;printf(“\n\t图书编号\t图书名\t库存量\t现存量\n”);while(p!=NULL){ printf (“ %10s\t %10s %10d\t%10d\n”,p->book_num,p->book_name,p->book_kc,p->book_x c);p=p->next;}}void print_reader(struct rd *h)/*输出读者信息*/{ struct rd *p;p=h;printf(“\n\t读者编号\t读者姓名\t所借书号\n”);while(p!=NULL){ printf (“ %10s\t %10s %10s\n”,p->reader_num,p->reader_name,p->reader_book_num);p=p->next;}getch();}void Form_Borrow_Book()/*借书菜单界面*/{ char ch;char book_num[11],reader_num[11];printf(“\n 图书借阅功能模块,请选择相应的功能代码:\n”);printf(“ 0:返回到主菜单\n”);printf(“ 1:图书借阅\n”);do{printf(“\n\n 请选择相应的功能代码:”);scanf(“%c”,&ch);fflush(stdin);}while(ch!='0'&&ch!='1…);switch(ch){ case '0':M_Form();break;case '1':{ printf(“ \n请输入读者编号与所借书编号:(以空格分隔)”);scanf(“%s%s”,reader_num,book_num);fflush(stdin);Borrow_Book(reader_num,book_num);/*调用借书函数,执行借书功能*/ Form_Borrow_Book();/*借书完成后,程序返回到借书菜单*/}default:printf(“error\n”);exit(0);}}void Borrow_Book(char reader_num[],char book_num[])/*输入读者编号,和需要借阅的书的编号,执行借书功能*/{ struct bk *book_p;struct rd *reader_p;book_p=h_book;while(book_p!=NULL&&strcmp(book_p->book_num,book_num)!=0)book_p=book_p->next;if(book_p==NULL){ printf(“\n\t此编号对应的图书不存在!\n”);Form_Borrow_Book();}reader_p=h_reader;while(reader_p!=NULL&&(strcmp(reader_p->reader_num,reader_num)!=0))reader_p=reader_p->next;if(reader_p==NULL){ printf(“\n\t此编号对应的读者不存在!\n”);Form_Borrow_Book();}else if(strcmp(reader_p->reader_book_num,“0”)!=0){ printf(“\n\t已达到最大借阅数,不能再借书!\n”);Form_Borrow_Book();}else {book_p->book_xc=book_p->book_xc-1;/*借书完成后,修改现存量*/strcpy(reader_p->reader_book_num,book_p->book_num);/*修改读者的借阅信息*/ save();/*将修改后的信息保存到文件中*/load_data();/*读入新文件中的数据*/}Form_Borrow_Book();/*程序执行完毕后,返回到借书菜单界面*/}void Form_Return_Book()/*还书菜单*/{ char ch;char book_num[11],reader_num[11];printf(“\n 归还图书功能模块,请选择相应的功能代码:\n”);printf(“ 0:返回到主菜单\n”);printf(“ 1:归还图书\n”);do{printf(“\n\n 请选择相应的功能代码:”);scanf(“%c”,&ch);fflush(stdin);}while(ch!='0'&&ch!='1‟);switch(ch){ case '0':M_Form();break;case '1':{ printf(“ \n请输入读者编号与所还书编号:(以空格分隔)”);scanf(“%s%s”,reader_num,book_num);fflush(stdin);Return_Book(reader_num,book_num);/*调用还书函数*/Form_Return_Book();}default:printf(“error\n”);exit(0);}}void Return_Book(char reader_num[],char book_num[])/*输入读者编号和所还书编号执行还书*/{ struct bk *book_p;struct rd *reader_p;book_p=h_book;while(book_p!=NULL&&strcmp(book_p->book_num,book_num)!=0)book_p=book_p->next;if(book_p==NULL){ printf(“\n\t此编号对应的图书不存在!\n”);Form_Return_Book();}reader_p=h_reader;while(reader_p!=NULL&&(strcmp(reader_p->reader_num,reader_num)!=0))reader_p=reader_p->next;if(reader_p==NULL){ printf(“\n\t此编号对应的读者不存在!\n”);Form_Return_Book();}else if(strcmp(reader_p->reader_book_num,book_num)!=0){ printf(“\n\t读者没有借阅此书\n”);Form_Return_Book();}else {book_p->book_xc=book_p->book_xc+1;/*还书后,修改图书库存量*/strcpy(reader_p->reader_book_num,“0”);/*还书后,修改读者借阅信息*/ save();/*保存到文件*/load_data();/*读入文件中的数据*/}Form_Return_Book();}void init_reader()/*系统第一次运行时,初始化3位读者信息,从键盘读入*/{ FILE *fp;reader ra[3];int i;printf(“\n 系统即将进行读者初始化:\n”);printf(“\n 请分别输入三位读者的编号和姓名(以空格隔开):\n ”);for(i=0;i<3;i++)scanf(“%s%s”,ra[i].reader_num,ra[i].reader_nam e);for(i=0;i<3;i++)strcpy(ra[i].reader_book_num,“0”);if((fp=fopen(“reader.dat”,“wb”))==NULL){ printf(“不能建立读者文件,初始化失败!请重新启动系统!\n”);return; } for(i=0;i<3;i++)/*将3位读者信息写入文件*/{ if(fwrite(&ra[i],sizeof(struct rd),1,fp)!=1){ printf(“\写数据错误!\n”);exit(0);}}}void Form_Insert_New_Book()/*添加新书菜单*/{ char ch;struct bk t;printf(“\n 新书入库功能模块,请选择相应的功能代码:\n”);printf(“ 0:返回到主菜单\n”);printf(“ 1:新书入库”);do{printf(“\n\n 请选择相应的功能代码:”);scanf(“%c”,&ch);fflush(stdin);}while(ch!='0'&&ch!='1'&&ch!='2'&&ch!='3'&&ch!='4'&&ch!='5…);switch(ch){ case '0':M_Form();break;case '1':{ printf(“ \n请按顺序输入新书的编号、名称、数量(以空格隔开):”);scanf(“%s%s%d”,t.book_num,t.book_name,&t.book_kc);fflush(stdin);Insert_New_Book(t.book_num,t.book_name,t.book_kc);Form_Insert_New_Book();}default:printf(“error\n”);exit(0);}}void load_data()/*从文件book.dat和文件reader.dat中读取数据到内存*//*将读取的数据存放到2个链表中*/{ struct bk *book_p1,*book_p2,*book_p3;struct rd *reader_p1,*reader_p2,*reader_p3;FILE *fp_book,*fp_reader;fp_book=fopen(“book.dat”,“rb”);book_p1=(struct bk *)malloc(sizeof(struct bk));fread(book_p1,sizeof(struct bk),1,fp_book);h_book=book_p3=book_p2=book_p1;while(!feof(fp_book)){ book_p1=(struct bk *)malloc(sizeof(struct bk));fread(book_p1,sizeof(struct bk),1,fp_book);book_p2->next=book_p1;book_p3=book_p2;book_p2=book_p1;}book_p3->next=NULL;free(book_p1);fclose(fp_book);fp_reader=fopen(“reader.dat”,“rb”);reader_p1=(struct rd *)malloc(sizeof(struct rd));fread(reader_p1,sizeof(struct rd),1,fp_reader);h_reader=reader_p3=reader_p2=reader_p1;while(!feof(fp_reader)){ reader_p1=(struct rd *)malloc(sizeof(struct rd));fread(reader_p1,sizeof(struct rd),1,fp_reader);reader_p2->next=reader_p1;reader_p3=reader_p2;reader_p2=reader_p1; }reader_p3->next=NULL;free(reader_p1);fclose(fp_reader);}void save()/*将链表中的数据保存到内存中*/{ FILE *book_fp,*reader_fp;struct bk *book_p;struct rd *reader_p;book_p=h_book; reader_p=h_reader;if((book_fp=fopen(“book.dat”,“wb”))==NULL){ printf(“不能建立图书文件,初始化失败!请重新启动系统!\n”);return; } while(book_p!=NULL){ if(fwrite(book_p,sizeof(struct bk),1,book_fp)!=1){ printf(“\写数据错误!\n”);exit(0);}book_p=book_p->next;}fclose(book_fp);if((reader_fp=fopen(“reader.dat”,“wb”))==NULL){ printf(“不能建立图书文件,初始化失败!请重新启动系统!\n”);return; } while(reader_p!=NULL){ if(fwrite(reader_p,sizeof(struct rd),1,reader_fp)!=1){ printf(“\写数据错误!\n”);exit(0);}reader_p=reader_p->next;}fclose(reader_fp);}main(){ FILE * fp;struct bk temp;clrscr();h_book=NULL;h_reader=NULL;if((fp=fopen(“book.dat”,“r”))==NULL)init();/*第1次运行系统时的初始化*/fclose(fp);load_data();/*从文件中读入数据*/M_Form();/*显示主菜单*/save();/*保存内存中的数据(即链表中的数据)到文件*/ getch();}。