图书管理程序
- 格式:doc
- 大小:95.00 KB
- 文档页数:14
图书收发管理制度一、总则为了规范图书的收发管理工作,提高管理效率,减少错误率,确保图书资料的安全性,现制定本图书收发管理制度。
二、图书的收发范围图书的收发范围包括所有单位内部图书资料的调拨、流转,以及从外部购入的图书资料的接收和分发。
三、图书的收发程序1. 外部购入图书的接收(1)图书部门在收到外部购书单后,将其汇总整理,制定购书计划并报批领导。
(2)领导批准后,图书部门向供应商发送书单,并确认订购数量和价格。
(3)供应商将图书送至单位图书室,图书管理员验收图书,并填写验收单据。
(4)图书管理员将验收单据交与财务部门,由财务负责付款。
(5)图书管理员将图书整理上架,分类存放。
2. 图书的内部调拨和流转(1)各部门内部有图书调动需求时,需填写图书调动申请单,并经过部门主管批准。
(2)图书管理员收到调动申请单后,核对图书库存情况,调拨图书并填写调拨记录。
(3)被调拨部门接收到调拨图书后,核对数量并签字确认。
(4)图书管理员将调拨记录归档,并更新图书库存信息。
3. 图书的借阅和归还(1)部门员工可向图书管理员进行图书借阅,需填写借阅申请单并记录个人信息。
(2)借阅期限为一个月,到期后需及时归还图书,逾期需缴纳逾期罚款。
(3)借阅的图书需按照规定的还书时间归还,并由图书管理员核对图书数量。
四、图书库存管理1. 图书库存盘点每年进行一次全面的图书库存盘点,确保库存数据准确无误。
2. 图书库存更新图书流通量大、更新频繁的部门需及时通知图书管理员进行补充采购,保证库存齐全。
3. 图书损坏处理若发现图书损坏,应及时报告图书管理员,由图书管理员进行处理,包括修复或淘汰。
五、图书档案管理1. 图书档案归档每本图书都应有相应的档案记录,包括进货记录、借阅记录等,由图书管理员负责归档管理。
2. 图书档案归类对图书档案进行分类整理,建立完整的档案系统,以方便查阅和管理。
3. 图书档案保密对于机密性较高的图书档案,需进行保密处理,并限制访问权限。
单位书籍管理制度第一章总则第一条为规范单位书籍管理,提高图书利用率和管理效率,保护单位图书资源,制定本制度。
第二条本制度适用于本单位所有图书资料的管理。
第三条单位要加强对图书资料的管理和保护,实行分类管理、统一收集、统一建档、统一管理上传,做到专人管理,相互监督。
第四条单位工作人员要强化对图书管理的责任意识和保密意识,加强个人防范措施,确保单位图书不外泄。
第五条单位领导要高度重视图书管理工作,加强对图书管理工作的监督,及时发现解决管理中的问题。
第六条单位要积极开展图书利用宣传活动,提高职工对图书利用的积极性和有效性。
第七条本制度由单位图书管理部门全面负责执行。
第二章图书采购第八条单位应根据工作需要,确定每年的图书购买计划,根据实际情况确定购买数量和种类。
第九条图书采购应当有计划、有依据,不得擅自购买与单位工作无关的图书。
第十条图书采购应当根据相关法律法规和单位规定的采购程序进行,确保采购经费的合法性和合理性。
第十一条单位应当建立图书采购档案,做好采购合同、发票等相关资料的保管,以备查验。
第十二条图书采购应当有专门负责的人员进行,避免重复采购和漏采现象。
第十三条图书采购应当根据实际情况确定图书的存储和管理地点,保证图书的安全和整洁。
第三章图书管理第十四条图书应当根据类别进行分类管理,建立分类清单,确保图书的有序管理。
第十五条单位应当建立图书台账,确保图书的数量和种类的跟踪管理。
第十六条图书应当定期进行清点盘点,对盘点结果进行比对,确保图书数量和种类的准确性。
第十七条单位应当制定图书借阅制度,规定借阅条件和程序,保护图书资源不受损失。
第十八条单位应当加强对图书资料的保密管理,不得擅自向外部人员提供图书借阅。
第十九条单位应当建立图书使用统计制度,定期进行统计分析,为单位决策提供依据。
第二十条单位应当建立图书资料调拨制度,做到要求一定,手续一定,手续利索。
第四章图书维护第二十一条单位应当建立图书保护制度,对图书进行定期的保养、修整,防止图书受损。
教育部幼儿园图书管理制度一、总则为了加强幼儿园图书管理工作,提高教育质量,培养健康向上的幼儿,制定本制度。
二、管理目标1.加强对幼儿园图书的维护、管理和利用,提高图书利用率和借阅量;2.帮助幼儿在欣赏、阅读和借阅图书的过程中,培养终身学习的兴趣和能力;3.促进师生共同参与幼儿园图书管理,形成良好的图书利用氛围。
三、管理机构1.设立图书管理中心,负责幼儿园图书的选购、分类、编目、修复和流通等工作;2.成立图书管理委员会,由园领导、教师代表和家长代表组成,负责对幼儿园图书管理工作进行监督和评估。
四、管理流程1.图书采购:根据幼儿园教育教学计划和教师建议,确定图书采购目录,由图书管理中心组织采购;2.图书编目:采用国家统一的图书编目规范,对采购回来的图书进行编目工作;3.图书分类:根据幼儿的年龄段和阅读兴趣,对图书进行分类存放;4.图书征订:每年开展一次幼儿图书征订活动,鼓励家长和社会捐赠图书;5.图书借还:幼儿可根据自己的阅读需要,办理图书借阅手续,规定借书期限和续借次数;6.图书展览:定期举办图书展览,展示新上架的图书,引导幼儿合理选择图书;7.图书维护:定期检查图书的防潮、防虫和整理工作,确保图书的完好和安全;8.图书利用:开展丰富的图书活动,如图书分享、图书评选等,引导幼儿主动利用图书。
五、管理要求1.严格遵守图书管理制度,不得私自挪用、损坏或涂抹图书;2.要鼓励幼儿多读书、读好书,培养正确的阅读习惯;3.要定期对幼儿进行阅读指导,引导他们选择适合自己的图书;4.要加强对图书管理工作的宣传和培训,提高教师和家长的参与度;5.要建立图书管理档案,定期做好图书管理工作总结和评估;6.要加大对图书的投入,不断充实和更新图书馆的藏书。
六、附则本制度由幼儿园负责人负责解释,如有变更,经图书管理委员会讨论通过后实施。
教育部幼儿园图书管理制度自公布之日起正式施行。
以上是本文的内容,总结了教育部幼儿园图书管理制度的一些要点,包括管理目标、机构、流程、要求等方面,希望对读者有所启发。
图书制度管理制度一、总则为了规范图书馆的管理工作,提高图书馆服务质量,加强图书资料管理,保障读者权益,制定本制度。
二、图书馆开馆时间1. 图书馆开放时间为每天8:00-20:00,周一至周日均可开放。
2. 节假日开馆时间另行通知。
三、借阅规定1. 办理读者证方可借阅图书。
2. 借书时间为30天,超期需缴纳逾期费用。
3. 读者证遗失需尽快补办,补办费用15元。
4. 借书需遵守借阅规定,如遗失或损坏需赔偿。
四、图书管理1. 图书馆内的图书按照分类存放,便于读者查找。
2. 图书馆定期清点库存,做好图书清点记录。
3. 图书的购买、整理、借阅、归还等工作由图书管理员负责。
五、读者服务1. 图书馆应提供舒适的阅读环境,保持安静。
2. 图书馆应配备工作人员,提供图书咨询服务。
3. 图书馆应定期开展读书活动,丰富读者的文化生活。
六、图书馆安全管理1. 图书馆应定期检查安全设施,确保读者的安全。
2. 图书馆严禁吸烟、酗酒、打闹等行为。
七、违规处理1. 对于违反规定的读者,图书管理员有权进行劝阻,并有权要求其离开图书馆。
2. 对于严重违规的读者,图书管理员有权冻结其读者证,限制其借阅图书。
八、制度保障1. 图书馆制度应当依法制定,符合法律法规的规定。
2. 图书馆应当建立健全制度管理机制,定期进行评估和改进。
3. 图书馆应当加强员工培训,提高工作效率和服务质量。
以上为本图书馆制度管理制度的内容,任何单位或个人不得违反以上规定,否则将承担相应的责任。
希望各位读者和工作人员共同遵守,共同维护图书馆的良好秩序和服务质量。
#include <stdio.h>#include <string.h>#include <stdlib.h>#define SIZE (struct booklist *)malloc(sizeof(struct booklist))//建立已借阅图书信息结构体struct borrow{char borbook_num[10];char borbook_name[22];char return_time[15];char stu_num[15];char stu_name[15];struct borrow *next;};//建立预借图书信息结构体struct prebor_stu{char prebook_num[10];char prestu_num[15];struct prebor_stu *next;};//建立图书结构体struct booklist{char num[10];char name[22];char zuozhe[15];char leibie[10];char pub_time[10];char price[10];char condition[10];struct booklist *next;};struct booklist *create(void); /*创建图书信息链表*/struct borrow *borrow_creat(struct booklist *head); //创建已借阅图书信息链表int pre_creat(struct booklist *head); //学生登录系统预借图书并将信息存入文件prebor_stulist.txtstruct prebor_stu *prebor_creat(void); //创建预借阅图书信息链表void printf1_(struct booklist *); //输出单个基本图书的数据void store(struct booklist *head); /*保存链表中的图书信息到文件booklist.txt*/void printfb1_(struct borrow *); //输出单个借出图书的部分数据void printfb_(struct borrow *p); //输出单个借出图书的数据void printfp1_(struct prebor_stu *); //输出单个被预借出图书的部分数据void printfp_(struct prebor_stu *); //输出单个被预借出图书的数据void printf_(struct booklist *,struct borrow *,struct prebor_stu *); /*2---输出链表中的图书信息*/struct booklist *load(void); //5---从文件读入图书信息struct booklist *num_paixu(struct booklist *); //4---按编号排序struct booklist *price_paixu(struct booklist *); //3---按价格顺序排序int kcnum(struct booklist *head); //6---统计库存数void chaxun1_(struct booklist *,struct borrow *,struct prebor_stu *); //7---查询图书的编号图书的信息,并输出void chaxun2_(struct booklist *,struct prebor_stu *,struct borrow *);//7---按作者查询信息并输出void chaxun3_(struct booklist *,struct prebor_stu *,struct borrow *); //7---查询某类别图书信息并自动输出void chaxun4_(struct borrow *,prebor_stu *,struct booklist *); //7---按学号查询借阅信息struct booklist *shanchu(struct booklist *,struct borrow *,struct prebor_stu *); //9---删除数据struct borrow *shanchu2_(struct borrow *,struct borrow *); //删除一个 struct borrow 结构体的数据struct prebor_stu *shanchu3_(struct prebor_stu *,struct prebor_stu *); //删除一个 struct prebor_stu 结构体的数据void xiugai(struct booklist *,struct borrow *,struct prebor_stu *); //10---修改数据void borstore(struct borrow *borrow_head); //保存已借阅图书信息到文件borrowlist.txt//重新保存修改后的预借阅信息到文件 prebor_stulist.txt (全部覆盖)void prestore(struct prebor_stu *pre_head);struct borrow *borload(void); //从文件提取信息创建已借阅图书源信息链表struct booklist *charu(struct booklist *head,struct borrow *borrow_head); //8---将图书的数据到顺序排放的链表中.且插入后也是顺序排放的struct booklist *scanf1_(void); // 输入单个图书源数据void exchange(struct booklist *,struct booklist *) ;//交换两个结构体内的内容struct borrow *tianjia1_(struct borrow *borrow_head,struct booklist *p); //添加一个 struct borrow 结构体的数据int main(void){int n, n1, x , k = 0, flag, flag1, x1;char ch;struct booklist *head = NULL; //图书信息链表头指针struct borrow *borrow_head = NULL ; //已借阅图书信息链表头指针struct prebor_stu *pre_head = NULL ; //预借图书信息链表头指针flag1 = 0; x = x1 = 1;while(x){system("cls");printf("***************************************************************************\n");printf("* >>>>>>>>>>>>>欢迎使用君宁图书管理系统<<<<<<<<<<<<<<< *\n");printf("* 0---退出系统 5---从文件录入数据 *\n");printf("* 1---录入数据 6---统计库存数 *\n");printf("* 2---输出信息 10---修改数据 7---查询功能 *\n");printf("* 3---按价格排序 8---增加数据 *\n");printf("* 4---按编号排序 9---删除数据 *\n");printf("***************************************************************************\n");printf("请选择功能:");scanf("%d", &n);getchar();switch(n){case 0: //0---退出系统{x = 0;printf("*******谢谢使用君宁图书管理系统!******\n");printf("****** 欢迎下次使用! ******\n");break;}case 1: //1---录入数据{while(x1){system("cls");printf("*******欢迎使用君宁图书信息录入系统*******\n");printf("*** 0---放弃录入 ****\n");printf("** 1---录入图书源信息 **\n");printf("* 2---录入借出图书信息 *\n");printf("** 3---录入预借图书信息 **\n");printf("******** 祝您使用愉快 ********\n");printf("请选择功能:");scanf("%d", &n1);getchar();switch(n1){case 0:{x1 = 0;break;}case 1:{head = create( ); /*创建图书信息链表*/printf("是否将源图书信息保存到文件booklist.txt!...(Y/N) :");ch = getchar();if(ch == 'y' || ch == 'Y')store(head);getchar();break;}case 2:{if(head == NULL ){printf("请先录入图书源信息!\n");getchar();break;}else{borrow_head = borrow_creat(head); //创建已借阅图书信息链表printf("是否将源图书信息保存到文件borrowlist.txt!...(Y/N) :" );ch = getchar();if(ch == 'y' || ch == 'Y')borstore(borrow_head);getchar();break;}}case 3:{if(head == NULL ){printf("请先录入图书源信息!\n");getchar();break;}else{flag = pre_creat(head);if(flag == 1)printf("没有录入预借图书信息!\n\n");if(flag == 2)pre_head = prebor_creat(); //创建预借阅图书信息链表getchar();break;}}default :{printf("输入错误指示!\n\n");break;}}}}case 2: //2---输出信息{if(head == NULL ){printf("请先录入图书信息!\n");getchar();break;}else{printf_(head,borrow_head,pre_head);break;}}case 3: //3---按价格排序{if(head == NULL ){printf("请先录入图书信息!\n");getchar();break;}else{head = price_paixu(head);printf("是否将排序后的源图书信息保存到文件booklist.txt!...(Y/N) :");ch = getchar();if(ch == 'y' || ch == 'Y')store(head);getchar();break;}}case 4: //4---按编号排序{if(head == NULL ){printf("请先录入图书信息!\n");getchar();break;}else{head = num_paixu(head);printf("是否将排序后的源图书信息保存到文件booklist.txt!...(Y/N) :");ch = getchar();if(ch == 'y' || ch == 'Y')store(head);getchar();break;}}case 5: //11---从文件读取数据{head = load();if(head == NULL ){printf("请先录入图书信息!\n");getchar();break;}else{borrow_head = borload(); //从文件提取信息创建已借阅图书源信息链表pre_head = prebor_creat(); //创建预借阅图书信息链表getchar();break;}}case 6: //6---统计库存数{if(head == NULL ){printf("请先录入图书信息!\n");getchar();break;}else{k = kcnum(head);printf("总共有%3d本图书!\n\n", k);getchar();break;}}case 7: //7---查询信息{if(head == NULL ){printf("请先录入图书信息!\n");getchar();break;}else{while(x1){system("cls");printf("*******欢迎使用君宁图书信息查询系统*******\n");printf("****** 0---退出查询******\n");printf("***** 1---按编号*****\n");printf("**** 2---按作者****\n");printf("***** 3---按类别*****\n");printf("****** 4---按学号******\n");printf("******** 祝您使用愉快********\n");printf("******************\n");printf("********************\n");printf("请选择功能:");scanf("%d", &n1);getchar();switch(n1){case 0:{x1 = 0;break;}case 1:{chaxun1_(head,borrow_head,pre_head);getchar();break;}case 2:{chaxun2_(head,pre_head,borrow_head);getchar();break;}case 3:{chaxun3_(head,pre_head,borrow_head);getchar();break;}case 4:{chaxun4_(borrow_head,pre_head,head);getchar();break;}default :{printf("输入指示有误!\n\n");break;}}}}x1 = 1;break;}case 8:{if(head == NULL ){printf("请先录入图书信息!\n");getchar();break;}else{head = charu(head,borrow_head);printf("是否将源图书信息保存到文件booklist.txt!...(Y/N) :");ch = getchar();if(ch == 'y' || ch == 'Y')store(head);getchar();break;}}case 9: //9---删除数据{if(head == NULL ){printf("请先录入图书信息!\n");getchar();break;}else{head = shanchu(head,borrow_head,pre_head);borrow_head = borload();pre_head = prebor_creat();break;}}case 10: //10---修改数据{if(head == NULL ){printf("请先录入图书信息!\n");getchar();break;}else{xiugai(head,borrow_head,pre_head);borrow_head = borload();getchar();break;}}default :{printf("输入错误指示.请重新输入!");getchar();break;}}}return 0;}/*创建图书源信息信息链表*/struct booklist *create(void){struct booklist *head, *tail, *p;char num[10],name[22], zuozhe[15], leibie[10], pub_time[10], price[10],condition[10];head = tail = p = NULL;printf("当输入图书编号为0时结束信息输入\n");printf("请输入图书编号:");gets(num);while(strcmp(num,"0") != 0){p = SIZE;printf("请输入书名:");gets(name);printf("请输入作者:");gets(zuozhe);printf("请输入类别:");gets(leibie);printf("请输入出版时间:");gets(pub_time);printf("请输入价格:");gets(price);printf("请输入借阅情况:");gets(condition);printf("\n");strcpy(p -> num, num);strcpy(p -> name, name);strcpy(p -> zuozhe, zuozhe);strcpy(p -> leibie, leibie);strcpy(p -> pub_time, pub_time);strcpy(p -> price, price);strcpy(p -> condition, condition);p -> next = NULL;if(head == NULL)head = p;elsetail -> next = p;tail = p;printf("请输入图书编号:");gets(num);}printf("图书源信息已建立链条!\n");return head;}//创建已借阅图书源信息链表struct borrow *borrow_creat(struct booklist *head) {struct booklist *p;struct borrow *borrow_head , *p1, *tail;borrow_head = p1 = tail = NULL;for(p = head; p != NULL; p = p -> next){p1 = (struct borrow *)malloc(sizeof(struct borrow));if(strcmp(p -> condition,"借出") == 0){printf("创建借出信息:\n");strcpy(p1 -> borbook_num ,p -> num);strcpy(p1 -> borbook_name ,p -> name);getchar();printf("借阅编号为%s的图书的借阅信息:\n",p -> num);printf("请输入应归还时间:");gets(p1 -> return_time);printf("请输入学生学号:");gets(p1 -> stu_num);printf("请输入学生姓名:");gets(p1 -> stu_name);printf("\n");p1 -> next = NULL;if(borrow_head == NULL)borrow_head = p1;elsetail -> next = p1;tail = p1;}}printf("成功创建已借出信息链表!\n\n");getchar();return borrow_head;}//保存已借阅图书信息到文件 borrowlist.txtvoid borstore(struct borrow *borrow_head){FILE *fp;struct borrow *p;if((fp = fopen("borrowlist.txt","w")) == NULL){printf("File open error! \n");exit(0);}p = borrow_head;while(p != NULL){fprintf(fp,"%16s%26s%16s%16s%16s\n",p -> borbook_num, p -> borbook_name, p -> return_time,p -> stu_num, p -> stu_name);p = p -> next;}fclose(fp);printf("文件成功保存到 borrowlist.txt 中!\n");getchar();}//从文件提取信息创建已借阅图书源信息链表struct borrow *borload(void){struct borrow *p, *tail, *head;FILE *fp;head = p = tail = NULL;if((fp = fopen("borrowlist.txt","r")) == NULL){printf("文件 borrowlist.txt 打开失败!\n");getchar();exit(0);}while(!feof(fp)){p = (struct borrow *)malloc(sizeof(struct borrow));fscanf(fp,"%16s%26s%16s%16s%16s\n",p -> borbook_num, p -> borbook_name, p -> return_time,p -> stu_num, p -> stu_name);if(head == NULL)head = p;elsetail -> next = p;tail = p;}tail -> next = NULL;fclose(fp);printf("已成功从文件 borrowlist.txt 提取信息创建已借阅图书源信息!\n");return head;}//录入预借图书信息并将信息存入文件 prebor_stulist.txtint pre_creat(struct booklist *head){struct booklist *b;struct prebor_stu *p;char a[10], c[15];int n, x = 1, flag = 1;FILE *fp;b = head;p = (struct prebor_stu *)malloc(sizeof(struct prebor_stu));printf("进入预借图书!(按回车键继续、、、)\n");getchar();while(x){printf("请输入要预借阅的图书编号:");gets(a);while((strcmp(b -> num ,a) != 0) && b -> next != NULL){b = b -> next;}if(strcmp(b -> num ,a) != 0){printf("没有找到编号为%s的图书!\n", a);printf("输入--0 结束录入!(输入其他数字继续录入...)\n\n");printf("请选择功能:");scanf("%d", &n);getchar();if(n == 0){x = 0;}getchar();}else{printf("请输入学号:");gets(c);strcpy(p -> prebook_num, a);strcpy(p -> prestu_num, c);if((fp = fopen("prebor_stulist.txt","a+")) == NULL){printf("File open error! \n");exit(0);}fprintf(fp,"%16s%16s\n",p -> prebook_num, p -> prestu_num);fclose(fp);flag = 2;printf("输入--0 结束录入!(输入其他数字继续录入...)\n\n");printf("请选择功能:");scanf("%d", &n);getchar();if(n == 0){x = 0;getchar();}}}return flag;}//重新保存修改后的预借阅信息到文件 prebor_stulist.txt (全部覆盖)void prestore(struct prebor_stu *pre_head){struct prebor_stu *p;FILE *fp;p = pre_head;if((fp = fopen("prebor_stulist.txt","w")) == NULL){printf("File open error! \n");exit(0);}while(p != NULL){fprintf(fp,"%16s%16s\n",p -> prebook_num, p -> prestu_num); p = p -> next;}fclose(fp);printf("文件成功保存到 prebor_stulist.txt 中!\n");getchar();}//从文件 prebor_stulist.txt创建预借阅图书信息链表struct prebor_stu *prebor_creat(void){struct prebor_stu *p, *tail, *head;FILE *fp;head = p = tail = NULL;if((fp = fopen("prebor_stulist.txt","r")) == NULL){printf("文件 prebor_stulist.txt 打开失败!\n");getchar();}while(!feof(fp)){p = (struct prebor_stu *)malloc(sizeof(struct prebor_stu));fscanf(fp,"%16s%16s\n",p -> prebook_num, p -> prestu_num);if(head == NULL)head = p;elsetail -> next = p;tail = p;}tail -> next = NULL;fclose(fp);printf("已从文件 prebor_stulist.txt 成功读取并建立预借阅图书信息!\n");getchar();return head;}/*2---保存链表中的图书信息到文件booklist.txt*/void store(struct booklist *head){FILE *fp;struct booklist *p;if((fp = fopen("booklist.txt","w")) == NULL){printf("File open error! \n");exit(0);}p = head;while(p != NULL){fprintf(fp,"%16s%26s%16s%16s%16s%16s%16s\n",p -> num, p -> name, p -> zuozhe, p -> leibie,p -> pub_time, p -> price, p -> condition);p = p -> next;}fclose(fp);printf("文件成功保存到 booklist.txt 中!\n");getchar();}// 输入单个图书源数据struct booklist *scanf1_(void) {struct booklist *p;p = SIZE;printf("请输入图书编号:");gets(p -> num);printf("请输入书名:");gets(p -> name);printf("请输入作者:");gets(p -> zuozhe);printf("请输入类别:");gets(p -> leibie);printf("请输入出版时间:");gets(p -> pub_time);printf("请输入价格:");gets(p -> price);printf("请输入借阅情况:");gets(p -> condition);return p;}//输出单个图书的数据void printf1_(struct booklist *p) {printf("编号:");puts(p -> num);printf("书名:");puts(p -> name);printf("作者:");puts(p -> zuozhe);printf("类别:");puts(p -> leibie);printf("出版时间:");puts(p -> pub_time);printf("价格:");puts(p -> price);printf("借阅情况:");}//输出单个借出图书的部分数据void printfb1_(struct borrow *p) {printf("应归还时间:");puts(p -> return_time);printf("借阅学生学号:");puts(p -> stu_num);printf("借阅学生姓名:");puts(p -> stu_name);}//输出单个借出图书的数据void printfb_(struct borrow *p) {printf("图书编号:");puts(p -> borbook_num);printf("书名:");puts(p -> borbook_name);printf("应归还时间:");puts(p -> return_time);printf("借阅学生学号:");puts(p -> stu_num);printf("借阅学生姓名:");puts(p -> stu_name);}//输出单个被预借出图书的部分数据void printfp1_(struct prebor_stu *p) {printf("预借图书的学生学号:"); puts(p -> prestu_num);}//输出单个被预借出图书的数据void printfp_(struct prebor_stu *p) {printf("图书编号:");printf("预借阅图书的学生学号:");puts(p -> prestu_num);}/*3---输出链表中的图书信息*/void printf_(struct booklist *head, struct borrow *borrow_head,struct prebor_stu *pre_head){struct booklist *p;struct borrow *b;struct prebor_stu *pre;int x = 1, n;p = head; b = borrow_head; pre = pre_head;while(x == 1){system("cls");printf("*******欢迎使用君宁图书信息输出系统*******\n");printf("* 0---退出 *\n");printf("* 1---输出图书源信息 *\n");printf("* 2---输出借出图书信息 *\n");printf("* 3---输出预借借图书信息 *\n");printf("******** 祝您使用愉快 ********\n");printf("请选择功能:");scanf("%d", &n);getchar();switch(n){case 0:{x = 0;break;}case 1:{if(head != NULL){printf("图书源信息如下:\n");do{printf1_(p);printf("\n\n");p = p -> next;}while(p != NULL);}getchar();break;}case 2:{if(borrow_head == NULL){printf("没有借出图书信息(按回车键继续、、、)!\n");getchar();break;}else{printf("借出图书信息如下:\n");do{printfb_(b);printf("\n\n");b = b -> next;}while(b != NULL);}printf("按回车键继续、、\n");getchar();break;}case 3:{if(pre_head == NULL){printf("没有预借图书信息(按回车键继续、、、)!\n");getchar();getchar();break;}else{printf("预借借图书信息如下:\n");do{printfp_(pre);printf("\n\n");pre = pre -> next;}while(pre != NULL);}printf("按回车键继续、、\n");getchar();break;}default :{printf("输入错误(按回车键继续、、、)!\n");getchar();break;}}}}//11---从文件读入图书信息struct booklist *load(void){struct booklist *p, *tail, *head;FILE *fp;head = p = tail = NULL;if((fp = fopen("booklist.txt","r")) == NULL){printf("文件 booklist.txt 打开失败!\n");getchar();exit(0);}while(!feof(fp)){p = SIZE;fscanf(fp,"%16s%26s%16s%16s%16s%16s%16s\n",p -> num, p -> name, p -> zuozhe, p -> leibie,p -> pub_time, p -> price,p -> condition);if(head == NULL)head = p;elsetail -> next = p;tail = p;}tail -> next = NULL;fclose(fp);printf("已成功读取文件 booklist.txt ,建立源图书信息链表!\n");return head;}//4---按编号排序并输出struct booklist *num_paixu(struct booklist *head){struct booklist *p, *p1, *tail;p1 = NULL;tail = SIZE;for(p = head;p -> next != NULL; p = p -> next){for(p1 = p ->next; p1 != NULL; p1 = p1 ->next){if(strcmp(p -> num,p1 -> num) > 0){exchange(tail,p1);exchange(p1,p);exchange(p,tail);}}}printf("图书已按编号排序成功,具体信息如下:\n");for(p = head; p != NULL; p = p -> next){printf1_(p);printf("\n");}return head;}//3---按价格排序struct booklist *price_paixu(struct booklist *head) {struct booklist *p, *p1, *tail;p1 = NULL;tail = SIZE;for(p = head;p -> next != NULL; p = p -> next){for(p1 = p ->next; p1 != NULL; p1 = p1 ->next){if(strcmp(p -> price,p1 -> price) > 0){exchange(tail,p1);exchange(p1,p);exchange(p,tail);}}}printf("图书已按价格排序成功,具体信息如下:\n");for(p = head; p != NULL; p = p -> next){printf1_(p);printf("\n");}return head;}//6---统计库存数int kcnum(struct booklist *head){int i = 0;struct booklist *p;for(p = head;p != NULL; p = p -> next)i++;return i;}//7---按编号查询信息并输出void chaxun1_(struct booklist *head,struct borrow *borrow_head,struct prebor_stu *pre_head){char a[10];struct booklist *p;struct borrow *b;struct prebor_stu *p1;int x1, x2;p = head; x1 = x2 = 0;printf("请输入要查询的图书编号:");gets(a);while((strcmp(p -> num ,a) != 0) && p -> next != NULL){p = p -> next;}if(strcmp(p -> num ,a) != 0)printf("没有找到编号为%s的图书!\n", a);else{for(b = borrow_head;b != NULL; b = b -> next){if(strcmp(b -> borbook_num ,a) == 0){x1 = 1;printf("您要查询的书已借出,其具体信息如下:\n");printfb1_(b); //输出单个借出图书的数据printf1_(p);}}for(p1 = pre_head;p1 != NULL; p1 = p1 -> next){if(strcmp(p1 -> prebook_num ,a) == 0){ x2 = 1;printf("您要查询的书已预借,其具体信息如下:\n");printfp1_(p1); //输出单个被预借出图书的数据printf1_(p);}}if(x1 == 0 && x2 == 0){printf("此书未被预借!\n\n");printf("您要查询的图书信息如下:\n");printf1_(p);}}}//7---按作者查询信息void chaxun2_(struct booklist *head,struct prebor_stu *pre_head,struct borrow *borrow_head){char a[10];struct booklist *p;struct borrow *b;struct prebor_stu *pre;int flag = 1, x1 ;printf("请输入要查询的图书的作者:");gets(a);for(p = head;p != NULL; p = p -> next){if(strcmp(p -> zuozhe,a) == 0){if(flag == 1){printf("您查询的%s的所有图书信息如下:\n\n",a);flag = -1;}printf1_(p);for(b = borrow_head;b != NULL; b = b -> next){if(strcmp(b -> borbook_num ,p -> num) == 0){printfb1_(b);}}x1 = 0;for(pre = pre_head; pre != NULL; pre = pre -> next){if(strcmp(pre -> prebook_num, p -> num) == 0){printf("此书已被%s学号的学生预借!\n",pre -> prestu_num );x1 = 1;}}if(x1 == 0){printf("此书未被预借!\n");x1 = 1;}printf("\n\n");}}if(flag == 1)printf("没有找到您要查询的的图书信息!\n\n");}//7---查询某类别图书信息并自动输出void chaxun3_(struct booklist *head,struct prebor_stu *pre_head,struct borrow *borrow_head){char a[10];struct booklist *p;struct prebor_stu *pre;struct borrow *b;int flag = 1 , x1;printf("请输入要查询的图书的类别:");gets(a);for(p = head;p != NULL; p = p -> next){if(strcmp(p -> leibie,a) == 0){if(flag == 1){printf("您查询的%s的所有图书信息如下:\n\n",a);flag = -1;}printf1_(p);for(b = borrow_head;b != NULL; b = b -> next){if(strcmp(b -> borbook_num ,p -> num) == 0){printfb1_(b);}}x1 = 0;for(pre = pre_head; pre != NULL; pre = pre -> next){if(strcmp(pre -> prebook_num, p -> num) == 0){printf("此书已被%s学号的学生预借!\n",pre -> prestu_num );x1 = 1;}}if(x1 == 0){printf("此书未被预借!\n");x1 = 1;}printf("\n\n");}}if(flag == 1)printf("没有找到您要查询的的图书信息!\n\n");}//7---按学号查询图书借阅信息并自动输出void chaxun4_(struct borrow *borrow_head,struct prebor_stu *pre_head,struct booklist *head){//建立图书编号结构体struct book_num{char booknum[10];struct book_num *next;};struct prebor_stu *p ;struct borrow *b;struct booklist *p2;char a[15];int i, j;i = j = 0;struct book_num *bnumhead1, *bnumhead2, *tail, *p1;bnumhead1 = bnumhead2 = tail = p1 = NULL;printf("请输入学生学号:");gets(a);for(p = pre_head; p != NULL; p = p -> next){if(strcmp(p -> prestu_num,a) ==0){i++;p1 = (struct book_num *)malloc(sizeof(struct book_num)); strcpy( p1 -> booknum, p ->prebook_num);if(bnumhead1 == NULL)bnumhead1 = p1;elsetail -> next = p1;tail = p1;p1 -> next = NULL;}}for(b = borrow_head;b != NULL; b = b -> next){if(strcmp(b -> stu_num,a) ==0){j++;p1 = (struct book_num *)malloc(sizeof(struct book_num)); strcpy( p1 -> booknum, b ->borbook_num);if(bnumhead2 == NULL)bnumhead2 = p1;elsetail -> next = p1;tail = p1;p1 -> next = NULL;}}if(i == 0 && j == 0)printf("没有您要查询学生的借阅信息!");else{if( j != 0){printf("该生一共借了%d本书,其借阅书的信息如下:\n", j);for( p1 = bnumhead2; p1 != NULL; p1 = p1 -> next){for(p2 = head; p2 != NULL; p2 = p2 -> next){if(strcmp(p1 -> booknum, p2 -> num) == 0){printf1_(p2);if(strcmp(p2 -> condition,"借出") ==0){for(b = borrow_head;b != NULL; b = b -> next)if(strcmp(b -> borbook_num,p2 -> num) ==0)printfb1_(b);}printf("\n");}}}}if( i != 0){printf("该生一共预借借了%d本书,其借阅书的信息如下:\n", i);for( p1 = bnumhead1; p1 != NULL; p1 = p1 -> next){for(p2 = head; p2 != NULL; p2 = p2 -> next){if(strcmp(p1 -> booknum, p2 -> num) == 0){printf1_(p2);if(strcmp(p2 -> condition,"借出") ==0){for(b = borrow_head;b != NULL; b = b -> next)if(strcmp(b -> borbook_num,p2 -> num) ==0)printfb1_(b);}printf("\n");}}}}}}//9---删除数据struct booklist *shanchu(struct booklist *head,struct borrow *borrow_head,struct prebor_stu *pre_head){struct booklist *p1 , *p2;struct borrow *b;struct prebor_stu *p;char a[10];p1 = p2 = head;printf("请输入要删除的图书编号:");gets(a);while((strcmp(p1 -> num ,a) != 0) && p1 -> next != NULL) {p2 = p1;p1 = p1 -> next;}if(strcmp(p1 -> num ,a) != 0)printf("没有找到要删除的图书信息!\n");else if(p1 == head){head = p1 -> next;printf("删除成功!\n");store(head);for(b = borrow_head; b != NULL; b = b -> next){if(strcmp(b -> borbook_num,a) == 0)borrow_head = shanchu2_(borrow_head,b);}for(p = pre_head; p != NULL; p = p -> next){if(strcmp(p -> prebook_num,a) == 0)pre_head = shanchu3_(pre_head,p);}}else{p2 -> next = p1 -> next;printf("删除成功!\n");store(head);for(b = borrow_head; b != NULL; b = b -> next){if(strcmp(b -> borbook_num,a) == 0)borrow_head = shanchu2_(borrow_head,b);}for(p = pre_head; p != NULL; p = p -> next){if(strcmp(p -> prebook_num,a) == 0)pre_head = shanchu3_(pre_head,p);}}return head;}//删除一个 struct borrow 结构体的数据struct borrow *shanchu2_(struct borrow *borrow_head,struct borrow *p) {struct borrow *p1 , *p2;p1 = p2 = borrow_head;while(strcmp(p1 -> borbook_num ,p -> borbook_num) != 0) {p2 = p1;p1 = p1 -> next;}if(p1 == borrow_head){borrow_head = p1 -> next;borstore(borrow_head);}else{p2 -> next = p1 -> next;borstore(borrow_head);}getchar();return borrow_head;}//添加一个 struct borrow 结构体的数据。
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. 核对书籍的品名、作者、出版社、出版日期、ISBN等信息;3. 检查书籍质量,确保无破损、污损等情况;4. 填写《书籍入库登记表》,并经采购部门审核签字;5. 将书籍分类存放,贴上相应的标签,并录入图书馆管理系统。
第五条入库书籍的验收标准:1. 书籍封面、扉页、版权页等信息完整;2. 书籍内页无破损、污损,内容完整;3. 书籍装订牢固,无脱页、错页等现象。
第六条入库书籍的存储管理:1. 按照书籍类别、出版时间、出版社等进行分类存放;2. 确保书籍存放环境干燥、通风,避免受潮、霉变;3. 定期检查书籍存储情况,发现异常及时处理。
第三章出库管理第七条图书馆读者借阅书籍时,应按照以下程序进行:1. 读者持有效借阅证到借阅处;2. 借阅员核对读者借阅证信息,并检索图书馆管理系统;3. 核对书籍信息,确认无误后,办理借阅手续;4. 借阅员在《书籍出库登记表》上记录借阅信息,并告知读者归还期限。
第八条书籍归还时的处理:1. 读者归还书籍时,借阅员检查书籍是否有破损、污损等情况;2. 检查书籍的索书号、书名、作者等信息,确认无误后,办理归还手续;3. 将书籍分类存放,并录入图书馆管理系统。
第九条出库书籍的盘点管理:1. 定期对出库书籍进行盘点,确保库存数量与系统记录相符;2. 发现库存差异时,及时查明原因,并采取措施纠正;3. 对盘点过程中发现的问题,及时报告上级领导。
第四章监督与考核第十条图书管理员应定期对入库、出库工作进行自查,确保制度执行到位;第十一条图书馆领导应定期对图书管理员进行考核,考核内容包括工作态度、业务能力、制度执行等方面;第十二条对违反本制度的行为,图书馆应根据情节轻重给予相应的处罚。
图书室管理规章制度图书室管理规章制度第一章总则第一条目的:本制度的目的是为了规范图书室的管理,保障图书室的正常开放、运行及读者的权益,提高图书室的服务质量和效率,促进企业文化建设。
第二条范围:本制度适用于本企业所属的图书室。
第三条制定程序:本制度由企业图书馆管理员起草,并由企业领导审查、批准后生效。
如有变更,需经企业领导批准后方可执行。
第四条相关法律法规:本制度严格遵守《劳动合同法》、《劳动法》、《劳动保障监察条例》、《行政管理法》等相关法律法规。
第二章借书管理第五条名称:借书管理制度。
第六条目的:为了保障读者的借阅权益,规范图书借阅流程,提高借阅效率和服务质量。
第七条范围:本制度适用于所有读者。
第八条内容:1.读者办理借书卡前须出示身份证,填写个人信息表,并提供一寸照片。
2.借书卡有效期为一年,逾期需重新办理。
3.未满18岁的青少年必须在家长或监护人的陪同下办理借书卡。
4.读者借阅图书卡每次限借阅3本书。
第九条责任主体:1.图书管理员:审核读者借阅资格,发放借书卡,记录读者借阅信息,提醒逾期未还的读者。
2.读者:遵守借书规定,如实填写读者个人信息,并及时归还所借书籍。
第十条执行程序:1.读者持有效证件到图书室办理借书卡。
2.读者按借书卡规定借阅图书。
3.图书管理员记录读者借阅信息,提醒借书逾期未还者。
4.读者到书架上寻找自己需要的书籍并刷卡借阅。
5.读者借阅的书籍应在借书期限内归还。
第十一条责任追究:1.读者无故逾期未还书籍,将暂停其借书资格。
2.读者因故未能按期归还的,需在归还后24小时内向图书管理员报备情况,并附证明材料。
第三章使用管理第十二条名称:使用管理制度。
第十三条目的:为了保障读者的使用权益,规范图书室的使用流程,提高使用效率和服务质量。
第十四条范围:本制度适用于所有读者。
第十五条内容:1.读者进入图书室前必须出示有效证件。
2.读者不得随意摆放或更换图书架上的书籍。
3.读者不得在图书室内排队、走动、喧哗等影响他人使用的行为。
C语言程序设计大作业设计报告一.设计方案本程序旨在用一个C语言程序实现简单的图书馆图书管理系统,程序包含平时的借书,还书,新书录入,查询功能,用简单明了的人机交互界面快速实现图书管理的目的。
二.模块说明及代码分析1.主函数:源代码:void main(){int a;printf("\n");printf("\n");printf(" ( ^_^ ) WELCOME!\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\t〉〉-------------BJTU图书管理系统--------------〈〈");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");do {printf("1.借书 2.还书 3.新书录入4.查询 0.退出");printf("\n");printf("\n");printf("\n");printf("\n");printf("请选择序号:");scanf("%d",&a);switch(a){case 1:jieshu();break;case 2:huanshu();break;case 3:xinshu();break;case 4:chaxun();break;case 0:break;default:printf("请选择正确的序号!\n");printf("\n");}}while(a!=0);printf("谢谢使用图书管理系统!\n");}主函数提供人机交互界面,让操作者选择所需的操作项目,并有退出选项。
图书管理系统程序设计图书管理系统是图书馆日常工作中不可或缺的一部分,它通过计算机技术实现对图书的自动化管理,提高图书馆的管理效率和服务质量。
下面将详细介绍图书管理系统的程序设计。
系统需求分析在设计图书管理系统之前,首先要进行需求分析,明确系统需要实现的功能。
一般来说,一个基本的图书管理系统应包括以下几个功能模块:1. 用户管理:包括用户注册、登录、权限分配等。
2. 图书管理:包括图书的添加、删除、修改和查询。
3. 借阅管理:实现图书的借出、归还、续借等功能。
4. 查询统计:提供图书查询、借阅记录查询、逾期统计等。
5. 系统维护:包括数据备份、恢复、系统设置等。
系统设计1. 系统架构:通常采用B/S(浏览器/服务器)架构,用户通过浏览器访问系统。
2. 数据库设计:数据库是图书管理系统的核心,需要设计合理的数据表结构,如用户表、图书表、借阅记录表等。
3. 用户界面设计:界面应简洁明了,操作方便,提供良好的用户体验。
技术选型1. 前端技术:HTML、CSS、JavaScript,可能还会使用框架如React或Vue.js。
2. 后端技术:Java、Python、Node.js等,根据开发团队熟悉度选择。
3. 数据库技术:MySQL、PostgreSQL、SQLite等关系型数据库。
功能实现1. 用户管理- 用户注册:收集用户信息,如用户名、密码、邮箱等,并存储到数据库。
- 用户登录:验证用户信息,提供登录服务。
- 权限控制:根据用户角色分配不同的操作权限。
2. 图书管理- 图书录入:允许管理员添加新图书信息,包括书名、作者、ISBN、出版社等。
- 图书修改:提供图书信息的更新功能。
- 图书删除:允许管理员从系统中移除不再需要的图书记录。
- 图书查询:提供多种查询方式,如按书名、作者、ISBN等。
3. 借阅管理- 借书操作:记录用户借阅的图书信息,包括借阅日期和预计归还日期。
- 还书操作:更新图书的借阅状态,记录归还日期。
#include <iostream>#include <fstream>#include <string>using namespace std;struct BookInfo{char loginname[10];char bookname[20];char author[20];char number[5];char date[10];double price;};struct Node{struct BookInfo book;struct Node *next;};void option();void select();Node *head;Node *pt[10];FILE *fp;//创建链表/*Node *CrtNode(int n){Node *head; //声明头指针headNode *p,*s;head=new Node; //创建头结点由head指向(空的头结点)s=head;cout<<"请输图书信息:"<<endl;for(int i=0;i<n;i++){p=new Node; //创建一个结点cout<<"登录名:";cin.getline(p->book.loginname,10);strcat(p->book.loginname,"\n");cout<<"书名:";cin.getline(p->book.bookname,20);strcat(p->book.bookname,"\n");cout<<"作者名:";cin.getline(p->book.author,20);strcat(p->book.author,"\n");cout<<"分类号:";cin.getline(p->book.number,5);strcat(p->book.number,"\n");cout<<"出版日期:";cin>>p->book.date;strcat(p->book.date,"\n");cout<<"价格:";cin>>p->book.price;s->next=p; //把创建的结点由s的next指向s=p; //指针s的指向向后移一个结点cin.clear();cin.sync();}p->next=NULL; //最后一个结点的next指向空return head; //返回头指针}*//*strcat(p->book.loginname,"\n");strcat(p->book.bookname,"\n");strcat(p->book.author,"\n");strcat(p->book.number,"\n");strcat(p->book.date,"\n");*///1.插入void Insert(Node *head){Node *p,*s;s = head;cout<<"请输入图书信息:"<<endl;p=new Node;cin.clear();cout<<"登录名:";cin.getline(p->book.loginname,10);strcat(p->book.loginname,"\n");cin.clear();cin.sync();cout<<"书名:";cin.getline(p->book.bookname,20);strcat(p->book.bookname,"\n");cin.clear();cin.sync();cout<<"作者名:";cin.getline(p->book.author,20);strcat(p->book.author,"\n");cin.clear();cin.sync();cout<<"分类号:";cin.getline(p->book.number,5);strcat(p->book.number,"\n");cin.clear();cin.sync();cout<<"出版日期(yyyy-mm-dd):";cin>>p->book.date;strcat(p->book.date,"\n");cout<<"价格:";cin>>p->book.price;while(s->next)s = s->next;s->next = p;p->next = NULL;}//初始化Node *Initial(){Node *head;head = new Node;head->next = NULL;return head;}//2.显示所有信息void Show(Node *head){int i = 1;Node *p;//显示除头结点以后所有结点(因为创建时头结点为空)p=head->next;if(p == NULL){cout<<"系统没有储存任何图书信息,请输入图书信息后再进行其他操作!"<<endl;}else{cout<<"*********下面是所有的图书信息**********"<<endl;while(p!=NULL){cout<<" 图书"<<i<<":"<<p->book.bookname<<endl;cout<<"登录名:"<<p->book.loginname;cout<<"书名:"<<p->book.bookname;cout<<"作者名:"<<p->book.author;cout<<"分类号:"<<p->book.number;cout<<"出版日期:"<<p->book.date;cout<<"价格:"<<p->book.price;cout<<endl;p=p->next;i++;cout<<endl;}}cout<<"请按回车键返回菜单。
"<<endl;cin.get();}//3.查找int findauthor(const Node *head){Node *ps;char author[20];int count = 0;ps = head->next;cout<<"请输入作者名:";cin.getline(author,20);strcat(author,"\n");while(ps){if(strcmp(ps->book.author,author) == 0){pt[0] = ps;count++;}ps = ps->next;}if(count == 0)cout<<"查找的图书不存在!"<<endl;return count;}int findbookname(const Node *head){Node *ps;char bookname[20];int count = 0;int i = 0;ps = head->next;cout<<"请输入书名:";cin.getline(bookname,20);strcat(bookname,"\n");while(ps){if(strcmp(ps->book.bookname,bookname) == 0){pt[i] = ps;count++;i++;}if(ps->next ==NULL)break;ps = ps->next;}if(count == 0)cout<<"查找的图书不存在!"<<endl;return count;}void Showarray(int n){cout<<"*********下面是所查找的图书信息**********"<<endl;for(int i=0;i<n;i++){cout<<" 图书"<<i+1<<": "<<pt[i]->book.bookname;cout<<"登录名:"<<pt[i]->book.loginname;cout<<"书名:"<<pt[0]->book.bookname;cout<<"作者名:"<<pt[i]->book.author;cout<<"分类号:"<<pt[i]->book.number;cout<<"出版日期:"<<pt[i]->book.date;cout<<"价格:"<<pt[i]->book.price;cout<<endl;}cin.get();}int Find(Node *head){int n,num;system("cls");if(head->next == NULL){cout<<"系统没有储存任何图书信息,请输入图书信息后再进行其他操作!"<<endl;cin.get();}else{cout<<"请选择查找方式(1.按作者名查找 2.按书名查找):";cin>>n;cin.clear();cin.sync();switch(n){case 1:num = findauthor(head);if(num != 0)Showarray(num);break;case 2:num = findbookname(head);if(num !=0)Showarray(num);break;default:cout<<"输入有误,请重新输入!"<<endl;cin.get();system("cls");option();select();}}return num;}//4.修改图书信息void Modify(Node *head){Node *p,*q,*s;p = head->next;int i,n;if(p == NULL)cout<<"系统没有储存任何图书信息,请输入图书信息后再进行其他操作!"<<endl;else{cout<<"请输入需要更正信息的图书名:"<<endl;n = findbookname(head);Showarray(n);loop:{cout<<"请选择对第几本书的信息进行修改:";}cin>>i;cin.clear();cin.sync();if(i > 0 & i <= n){cout<<"******修改第"<<i<<"本书的其他信息******"<<endl;cout<<"登录名:";cin.getline(pt[i-1]->book.loginname,10);strcat(pt[i-1]->book.loginname,"\n");cin.clear();cin.sync();cout<<"作者名:";cin.getline(pt[i-1]->book.author,20);strcat(pt[i-1]->book.author,"\n");cin.clear();cin.sync();cout<<"分类号:";cin.getline(pt[i-1]->book.number,5);strcat(pt[i-1]->book.number,"\n");cin.clear();cin.sync();cout<<"出版日期(yyyy-mm-dd):";cin>>pt[i-1]->book.date;strcat(pt[i-1]->book.date,"\n");cout<<"价格:";cin>>pt[i-1]->book.price;}else{cout<<"选择的书的序号有误!";goto loop;}}cin.get();}//5.删除图书信息void Deletebook(Node *head){Node *p,*q;char bookname[20];int count = 0;int i = 0;p = head;q = p->next;if(q == NULL)cout<<"系统没有任何图书信息!"<<endl;else{cout<<"请输入书名:";cin.getline(bookname,20);strcat(bookname,"\n");while(q != NULL){q = p->next;if(strcmp(q->book.bookname,bookname) == 0){p->next = q->next;delete q;count++;}p = q;q = q->next;}if(count == 0)cout<<"没有找到该图书信息!"<<endl;elsecout<<"图书信息已经删除!"<<endl;}cin.get();}//链表长度int Len(const Node *head){Node *ps;int count = 0;ps = head->next;while(ps){count++;ps = ps->next;}return count;}//6.保存文件void save(Node *head){Node *p;char st[20];p = head->next;if((fp=fopen("book.dat", "w"))==NULL){cout<<"打开文件失败"<<endl;return;}char t[255];//将L1.listlen() 赋予字符串中的数字int lenth = Len(head);fwrite(&lenth,sizeof(int),1,fp);while(p){fwrite(p,sizeof(struct Node),1,fp);p = p->next;}fclose(fp);cout<<"文件已经保存,请按ENTER键退出!"<<endl;cin.get();}//8.删除所有图书信息void Free_List(Node *head){Node *p;p = head->next;while(p){delete p;p = head->next;}}/*void readstr(FILE *f,char *string){do{//①: 先读入一行文本fgets(string, 255, f); //fgets(): 从文件f 读入长度为255-1 的字符串// 并存入到string 中} while ((string[0] == '/') || (string[0] == '\n'));return;}*///读取文件Node *Load(){char c[255];int lenth;Node *p,*q;head = new Node;p = head;if((fp=fopen("book.dat", "r"))==NULL){cout<<"打开文件失败"<<endl;return head;}elsefread(&lenth,sizeof(int),1,fp);for(int i = 0;i < lenth;i++){q = new Node;fread(q,sizeof(struct Node),1,fp);p->next = q;p = q;}p->next = NULL;fclose(fp);return head;}//9.菜单选项void select(){int m,n;cout<<"请输入以下数字来选择所需要的操作(1~8):";cin.clear();cin.sync();cin>>n;cin.clear();cin.sync();switch(n){case 1:system("cls");Insert(head);break;case 2:system("cls");Show(head);break;case 3:system("cls");Find(head);break;case 4:system("cls");Modify(head);break;case 5:system("cls");Deletebook(head);break;case 6:save(head);break;case 7:exit(0);break;case 8:Free_List(head);break;default:break;}}//10.菜单界面void option(){cout<<" 图书信息管理系统"<<endl;cout<<"*****************************************************"<<endl;cout<<" 1.输入图书信息 2.输出图书信息"<<endl;cout<<" 3.查找图书信息 4.修改图书信息"<<endl;cout<<" 5.删除图书信息 6.保存图书信息"<<endl;cout<<" 7.退出系统"<<endl;cout<<"*****************************************************"<<endl; }int main(){//head = Initial();head = Load();while(1){system("cls");option();select(); }return 0;。