软件工程课程设计图书管理系统.pdf

上传人:索**** 文档编号:75154139 上传时间:2023-03-02 格式:PDF 页数:36 大小:713.34KB
返回 下载 相关 举报
软件工程课程设计图书管理系统.pdf_第1页
第1页 / 共36页
软件工程课程设计图书管理系统.pdf_第2页
第2页 / 共36页
点击查看更多>>
资源描述

《软件工程课程设计图书管理系统.pdf》由会员分享,可在线阅读,更多相关《软件工程课程设计图书管理系统.pdf(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1 软件工程课程设计图书馆管理系统2 一、可行性研究报告1、引言 1 背景资料图书馆是为我们的学习工作提供服务的地方。图书馆里存放着大量的书籍资料,对这些书籍信息的有效的归类整理与管理将大大提高图书馆的运作效率,降低图书馆工作人员的劳动强度,同时可以对图书馆的整个运作过程做到明细化,透明化,为各项工作有条不紊的进行提供保障。2报告目的本报告旨在研究分析图书馆管理系统开发的可行性,为此软件的开发人员提供可行性的验证与编写方法的指导。3 软件信息软件名称:图书馆管理系统开发平台:Turbo C 2.0 用户:图书馆工作人员2、可行性研究的前提1主要功能:通过计算机完成图书馆在库书籍的管理,用计算机

2、高效、安全的完成对图书的信息处理,将工作人员从繁琐的数据处理中解放。2性能要求:a、书籍信息的录入,将图书名,库存数量输入系统,建立系统数据库。b、书籍信息的查询,输入书名,显示此图书的有关信息,包括库存总量、借出数目、剩余数目。3 c、书籍借出与归还,输入借出或归还图书的书名与数量后,对库存信息进行相应修改。d、书籍信息的插入与删除,新书到库时或清除库存时,在数据库内增加或删减相应信息。e、书籍信息的备份,将现有数据库信息存档,以备不时之需。f、书籍信息的读入,输入文件名,从相应文件中把信息读入数据库。g、权限问题,进入系统之前输入密码,密码不正确则退出系统。3开发目标:要求系统具有良好的可

3、操作性,数据稳定性以及安全性,可以长期使用。3、对现有系统的分析现用的管理系统在安全性,数据的读入功能方面存在不同程度的缺陷,有必要进行改进4、所建议的系统 1 使用基本方法:该系统具有简单易用的特点,只需按照菜单功能行操作。2系统流程图:4 6、投资及效益分析该系统投资成本小,使用方法简单易懂。该系统有效地提高图书馆工作人员的工作效率,节约人力物力。同时可以根据用户的特殊需要,增添功能。具有成本低,功能强大,使用灵活的特点。7、社会因素方的可行性1法律方面:本系统的开发不会侵犯他人、集体或国家的利益,不违背当地法律法规。2使用方面:本系统可以满足图书馆管理的要求,而且对使用本软件人员的计算机

4、水平要求不高,只需了解软件操作流程就可以使用本软件,无需培训。8、结论该系统在各个方面的均具有可行性,可以立即开始进行。5 二、需求规格说明书1、引言1编写目的:为软件开发者提供开发依据,在软件的开发过程中起指向性功能。本说明书的读者为此软件的开发者。2 项目背景:该软件由学生自行编写,由个人全权负责。本软件独立于其它管理软件。3 参考资料:万晓东 施玉霞 等著软件技术基础教程09 年 7 月2、任务概述 1 目标:本软件旨在为学校的图书馆管理人员提供一个可以方便管理库存图书的系统。可以对库存图书进行录入、借还、查询、修改功能。减少操作时间,提高工作效率。该软件适用于一般规模的图书馆管理操作。

5、2 用户特点:本系统的操作对象为图书馆管理人员。对管理人员的计算机水平不需要很高的要求。3条件与限制:本次开发工作无经费投入,开发期限为40 小时。3、数据描述:1静态数据:系统密码,书籍名称,库存总数,剩余数,借出数。2 动态数据:使用者输入的信息,包括添加的书籍信息,查询关键字。3 数据库描述:系统数据库采用TXT 文档。4数据流图:6 5数据字典:4、功能要求:1 功 能 划 分录入功能浏览功能信息查询功能数据流名:图书别名:图书馆库存图书组成:书名+库存总数+剩余数+借出数备注:无7 借出归还功能插入与删除功能信息的备份与读入功能设置访问权限功能2功能描述录入功能:输入相关数据浏览功能

6、:以列表方式列出所有记录信息信息查询功能:根据书名匹配查询,并将查询结果列出借出归还功能:根据借出与归还的书籍信息修改相应数据插入与删除功能:插入一条新的图书信息,删除某图书的信息信息的备份与读入功能:将输入文件进行备份和从指定文件读入数据设置访问权限功能:只有输入正确密码才可以进行操作否则无权操作5、性能要求1 数据精确度:查询时要确保查全率与查准率 2 时间特性:系统运行时间应该在用户能够接受的范围内3 适应性:本软件属于小型软件,对不同的运行环境适应性很强,可以能够满足使用需求。6、运行需求1用户界面:在 Turbo C 2.0界面运行2硬件接口:普通 PC机3软件接口:运行于装有Tur

7、bo C 2.0的操作系统8 4故障处理:如果在使用过程中出现程序出错,重新运行即可恢复三、概要设计说明书1、引言1编写目的:设计一图书馆管理系统以代替现有的管理管理系统。本说明书读者为软件设计者。2 项目背景:该软件由学生个人设计,无开发部门和主管部门,主要供学生练习使用。该软件独立于其它软件系统。3参考资料:万晓东 施玉霞等著软件技术基础教程09 年 7 月谭浩强著C 语言程序设计第三版张志航王珊珊等著程序设计语言C 07 年 9 月2、概要设计:1 需求规定:本软件提供一个既可以存储信息,同时又具有浏览、插入、查询、修改、删除功能,供使用者轻松管理图书馆的库存图书。数据库信息由使用者进行

8、输入。2 运行环境:硬件普通 PC机支持环境WINDOWS 操作系统,Turbo C 2.0软件 3 基本设计概念:本系统由主单函数调用各个子函数(功能函数)来实现各项操作。功能函数包括插入函数,删除函数,显示函数,文件读入函数,文件读出函数,借出函数,归还函数,退出函数函数调用关系图如下图所示:9 4系统结构10 5 模块划分与功能需求关系模块编号模块名称功能M1 身份验证模块输入验证信息M2 主菜单模块输入选择的功能M3 插入模块插入相关信息M4 删除模块删除指定信息M5 查询模块查询指定信息M6 显示模块以列表方式显示所有信息M7 借出模块实现书籍借出M8 归还模块实现书籍归还M9 读入

9、模块从外部文件读入信息M10 备份模块备份文件信息M11 退出模块退出程序保存文件6人工处理过程:数据的录入工作需人工完成3、接口设计 1 用户接口:用户输入信息按“书名”(空格)“库存数量”的格式输入。TXT 文件也按上述格式保存。2外部接口:用户界面:DOS 界面软件接口:运行于Win95 以上版本,且要求安装Turbo C 2.0 4、运行设计 1 运行控制:系统运行后先进行身份验证,验证通过后,登录,并调用 M2,进入服务选择模块,由用户选择的信息选择激活M3M10 等模块,最后根据用户输入的接受信息退出程序,关闭系统。2运行时间:各模块运行时间控制在1 秒内。11 5 系统数据结构设

10、计书名 char name 剩余数量int sum 6、系统出错处理设计 1 出错信息出错类型处理方法用户输入无效字符提示出错,重新输入借出数量过大提示出错,重新输入2维护设计本软件必须按照软件产品设计规范的步骤进行开发,充分考虑软件的可维护性,以便于未来版本开发及移植等二次开发。在编写过程中如果发现有的模块没有必要,或者实现比较困难,可以由开发者提出修改意见,决定是否修改。四、详细设计说明书1、引言1编写目的:设计一图书馆管理系统以代替现有的管理管理系统。本说明书读者为软件设计者。2 项目背景:该软件由学生个人设计,无开发部门和主管部门,主要供学生练习使用。该软件独立于其它软件系统。3 参考

11、资料:万晓东 施玉霞等著软件技术基础教程09 年 7 月12 谭浩强著C 语言程序设计第三版张志航王珊珊等著程序设计语言C 07 年 9 月2、总体设计1需求概述录入功能:输入相关数据浏览功能:以列表方式列出所有记录信息信息查询功能:根据书名匹配查询,并将查询结果列出借出归还功能:根据借出与归还的书籍信息修改相应数据插入与删除功能:插入一条新的图书信息,删除某图书的信息信息的备份与读入功能:将输入文件进行备份和从指定文件读入数据设置访问权限功能:只有输入正确密码才可以进行操作否则无权操作2系统结构图13 3、程序描述 1 M1身份验证功能:验证身份性能:输入项:预设密码输出项:欢迎语句算法:i

12、nt keyword=111,a;printf(Please input keyword:);scanf(%d,&a);if(a!=keyword)exit(0);else printf(Welcome!);测试要求:运行正常。2M2主菜单模块功能:选择功能14 性能:输入项:数字 0-9 输出项:对应功能项算法:int Display_MainMenu()/*显示菜单的函数*/char x;do system(cls);printf(*n);printf(1.Create BookListn);printf(2.Display All Booksn);printf(3.Insert a Bo

13、okInformationn);printf(4.Delete a Bookn);printf(5.Borrow a Bookn);printf(6.Return a Bookn);printf(7.Queryn);printf(8.Add Records From a Filen);printf(9.Write to a Filen);printf(0.Goodbyen);printf(*n);printf(Please choose from 0-9:);printf(n);x=getchar();while(x9);return(x-0);测试要求:运行正常。3 M3插入模块功能:插入新

14、信息性能:输入项:书名数量输出项:成功提示算法:Book*Insert(Book*head,Book*s)/*插入结点的函数*/Book*p0,*p1,*p2;15 p1=head;p0=s;/*使 p1 指向第一个结点,p0指向要插入的结点*/if(head=NULL)/*原来的链表是空表*/head=p0;p0-next=NULL;/*使 p0 作为首结点*/while(strcmp(p0-Name,p1-Name)0&(p1-next!=NULL)p2=p1;p1=p1-next;if(strcmp(p0-Name,p1-Name)next=p1;if(head=p1)head=p0;e

15、lse p2-next=p0;else p1-next=p0;p0-next=NULL;return(head);Book*Insert_a_record(Book*head)Book*newrecord;newrecord=(Book*)malloc(LEN);/*动态分配存储空间*/scanf(%s%d,newrecord-Name,&newrecord-all);newrecord-borrow=0;newrecord-left=newrecord-all;head=Insert(head,newrecord);printf(Insert successfullyn);/*输出插入成功的

16、信息*/return(head);测试要求:运行正常。4 删除模块功能:删除信息性能:输入项:所删书名输出项:成功提示算法:Book*Delete(Book*head,char*name)16 Book*p1,*p2;if(head=NULL)printf(Sorry No record!n);p1=head;while(strcmp(p1-Name,name)!=0&p1-next!=NULL)/*p1 不是要找的结点,且后面还有结点*/p2=p1;p1=p1-next;/*p1 后移一个结点*/if(strcmp(p1-Name,name)=0)/*找到了*/if(p1=head)head

17、=p1-next;/*若 p1 为首指针,使下一结点为首指针*/else p2-next=p1-next;/*否则将下一结点地址赋给前一结点地址*/printf(delete%s successfullyn,name);/*输出删除成功的信息*/return(head);Book*Delete_a_record(Book*head)char name20,ch;Book*p;scanf(%s,name);getchar();/*接收回车*/p=Query(head,name);if(p=NULL)printf(Cannot Find%sn,name);/*找不到结点*/else printf(

18、Delete%s,Y/N?n,name);ch=getchar();system(pause);if(ch=y|ch=Y)while(p!=NULL)head=Delete(head,name);/*删除所有与输入相同的记录*/p=Query(head,name);return(head);测试要求:运行正常。5 M5查询模块功能:查询功能性能:输入项:查询书名17 输出项:相应书籍信息算法:Book*Query(Book*head,char*name)Book*p;p=head;while(strcmp(name,p-Name)!=0&p-next!=NULL)p=p-next;if(str

19、cmp(name,p-Name)=0)/*找到了,返回结点地址*/return(p);else/*找不到返回空指针*/return(NULL);void Query_a_record(Book*head)char name20;Book*p;scanf(%s,name);p=Query(head,name);if(p!=NULL)/*找到了*/printf(Find successfullyn%s total:%d left:%d borrow:%dn,p-Name,p-all,p-left,p-borrow);else printf(Cant find the records of%sn,n

20、ame);/*找不到*/测试要求:运行正常。6M6显示功能功能:显示所有信息性能:输入项:相应的菜单序号输出项:所有书籍信息算法:void Display(Book*head)Book*p;int i;p=head;printf(Num BookName Total Left Borrown);for(i=1;p!=NULL;i+)18 printf(%-5d%-14s%-10d%-10d%-5dn,i,p-Name,p-all,p-left,p-borrow);p=p-next;if(i%10=0)system(pause);/*按回车翻页显示*/printf(Num BookName to

21、tal left borrown);测试要求:运行正常。7 M7借出模块功能:借出书籍性能:输入项:所借书名数量输出项:成功信息算法:Book*Borrow_a_Book(Book*head)char name20,ch;int n;Book*p;scanf(%s%d,name,&n);getchar();/*接收回车*/p=Query(head,name);if(p=NULL)printf(Cannot Find%sn,name);/*找不到结点*/else printf(Are you sure to borrow?%s,Y/N?n,name);ch=getchar();system(pa

22、use);if(ch=y|ch=Y)head=Borrow(head,name,n);return(head);测试要求:运行正常。8M8归还模块功能:归还书籍性能:19 输入项:所换书名数量输出项:成功提示算法:Book*Return_a_Book(Book*head)char name20,ch;int n;Book*p;scanf(%s%d,name,&n);getchar();/*接收回车*/p=Query(head,name);if(p=NULL)printf(Cannot Find%sn,name);/*找不到结点*/else printf(Are you sure to retu

23、rn?%s,Y/N?n,name);ch=getchar();system(pause);if(ch=y|ch=Y)head=Return(head,name,n);return(head);Book*Return(Book*head,char*name,int sum)Book*p1;p1=head;while(strcmp(p1-Name,name)!=0&p1-next!=NULL)/*p1 不是要找的结点,且后面还有结点*/p1=p1-next;/*p1 后移一个结点*/if(strcmp(p1-Name,name)=0)/*找到了*/p1-borrow=p1-borrow-sum;p

24、1-left=p1-left+sum;return(head);测试要求:运行正常。9M9读入模块功能:从文件读入信息性能:输入项:文件名输出项:成功提示20 算法:Book*AddfromText(Book*head,char*filename)FILE*fp;int n,i;if(fp=fopen(filename,r)=NULL)printf(Cannot find file:%sn,filename);/*打不开所指定文件*/return(head);fscanf(fp,%d,&n);/*待插入记录个数*/for(i=0;iName,&p-all,&p-left,&p-borrow);

25、head=Insert(head,p);/*插入结点*/printf(Add from%s successfullyn,filename);fclose(fp);return(head);测试要求:运行正常。10M10备份模块功能:数据备份性能:输入项:所建文档名输出项:成功提示算法:Book*WritetoText(Book*head,char*filename)FILE*fp;Book*p;if(head=NULL)printf(No Record!n);return(head);fp=fopen(filename,w);/*打开文件*/p=head;while(p!=NULL)fprin

26、tf(fp,%-14s%-10d%-10d%-10dnn,p-Name,p-all,p-left,p-borrow);/*文件输出*/p=p-next;printf(Write to%s successfullyn,filename);/*输出写到文件完毕的信息*/21 fclose(fp);return(head);测试要求:运行正常。11M11退出模块功能:退出程序性能:输入项:数字 0 输出项:再见语句算法:void Quit(Book*head)Book*p,*p1,*p2;FILE*fp;char filename=last;p2=p1=head;if(head!=NULL)fp=f

27、open(filename,w);/*打开文件*/p=head;while(p!=NULL)fprintf(fp,%s%d%d%dn,p-Name,p-all,p-left,p-borrow);/*文件输出*/p=p-next;printf(Write to%s successfullyn,filename);/*输出写到文件完毕的信息*/fclose(fp);while(p1!=NULL)/*p1 指向的结点不是空指针*/p2=p1-next;free(p1);/*释放存储空间*/p1=p2;/*p1 后移一个结点*/测试要求:运行正常。五、测试报告1、引言1编写目的:测试图书馆管理系统软件

28、的各项功能是否符合预期要求。本报告读者为软件设计者。22 2项目背景:该软件由学生个人设计,无开发部门和主管部门,主要供学生练习使用。该软件独立于其它软件系统。3 参考资料:万晓东 施玉霞等著软件技术基础教程09 年 7 月谭浩强著C 语言程序设计第三版张志航王珊珊等著程序设计语言 C 07 年9 月2、测试计划执行情况 1 权限功能测试数据:输入正确密111 测试结果:成功进入主界面,说明本模块功能正常23 2 插入功能测试数据:无测试结果:菜单显示正常。本模块功能正常。3插入功能测试数据:history 100 测试结果:调用显示函数显示结果。本模块功能正常。4删除操作24 测试数据:hi

29、story 测试结果调用显示函数显示结果:输出结果正确,说明本模块功能正常。5查询模块测试数据:预输入数据history 100 physics 200 查询history 25 测试结果:显示结果history 100 0 0 说明本模块运行正常。6显示模块上述过程已经对本功能进行了测试。结果:显示模块运行正常。7 借出模块测试数据:预输入数据history 100 physics 200 调用借出函数借history 50 maths 100 测试结果26 调用显示函数显示结果:8 归还模块测试数据:预输入数据history 100 physics 200 调用归还函数还history 5

30、0 27 测试结果:9文件读入模块测试数据:文本文档a.txt 测试结果:调用显示函数显示结果28 测试结果正确。10文件备份模块测试数据:测试数据采用上一步写入的数据测试结果11退出模块测试数据:无测试结果成功退出程序并生自动成备份文件last.txt 退出模块运行正常。3、评价结果29 1软件能力:软件各项功能复合预期,各子程序运行正常 2 缺陷和限制:每次登陆后必须手工调入上一次的备份文件以恢复系统数据,给操作者带来不便 3 建议:完善系统的数据库功能,提供安全可靠的数据保存功能。4测试结论:本软件测试通过。附源程序代码:#include#include#include#include#

31、define NULL 0#define LEN sizeof(Book)struct A char Name20;int all,left,borrow;struct A*next;typedef struct A Book;int Display_Main_Menu();/*主菜单显示*/Book*Create();/*功能函数声明*/void Display(Book*head);Book*Insert(Book*head,Book*s);Book*Insert_a_record(Book*head);Book*Delete(Book*head,char*name);Book*Delet

32、e_a_record(Book*head);Book*Borrow(Book*head,char*name,int sum);Book*Borrow_a_Book(Book*head);Book*Return(Book*head,char*name,int sum);Book*Return_a_Book(Book*head);Book*Query(Book*head,char*name);void Query_a_record(Book*head);Book*AddfromText(Book*head,char*filename);Book*WritetoText(Book*head,char

33、*filename);30 void Quit(Book*head);void main()/*主函数部分*/Book*head;/*定义变量*/char filename20;int keyword=111,a;printf(Please input keyword:);scanf(%d,&a);if(a!=keyword)exit(0);else printf(Welcome!);head=NULL;/*置首指针为空*/for(;)switch(Display_MainMenu()case 1:printf(1.Create BookListn);/*调用 Create函数创建链表*/he

34、ad=Create();system(pause);break;case 2:printf(Display All Booksn);Display(head);/*调用 Display 函数显示所有*/system(pause);break;case 3:printf(Insert a Recordn);head=Insert_a_record(head);/*调用 Insert_a_record 函数插入*/system(pause);break;case 4:printf(Delete a Bookn);head=Delete_a_record(head);/*调用 Delete_a_re

35、cord 函数删除*/system(pause);break;case 5:printf(Borrow a BooknInput BookName and sum you borrow:);head=Borrow_a_Book(head);system(pause);break;case 6:printf(Return a BooknInput BookName and sum you return:);head=Return_a_Book(head);system(pause);break;case 7:printf(QuerynInput the BookName you want:);Q

36、uery_a_record(head);/*调用查询函数*/system(pause);break;case 8:printf(Input the name of Text Filen);scanf(%s,filename);/*输入文件名*/head=AddfromText(head,filename);system(pause);break;case 9:printf(Input the name of the NewText Filen);scanf(%s,filename);/*输入要写入的文件名*/head=WritetoText(head,filename);31 system(p

37、ause);break;case 0:printf(Goodbyen);Quit(head);exit(0);int Display_MainMenu()/*显示菜单的函数*/char x;do system(cls);printf(*n);printf(1.Create BookListn);printf(2.Display All Booksn);printf(3.Insert a BookInformationn);printf(4.Delete a Bookn);printf(5.Borrow a Bookn);printf(6.Return a Bookn);printf(7.Que

38、ryn);printf(8.Add Records From a Filen);printf(9.Write to a Filen);printf(0.Goodbyen);printf(*n);printf(Please choose from 0-9:);printf(n);x=getchar();while(x9);return(x-0);Book*Create()/*创建链表的函数,返回首指针*/Book*head,*newrecord;char ch;printf(Input a Bookn);head=NULL;/*首指针置空*/do newrecord=(Book*)malloc(

39、LEN);/*动态分配存储空间*/scanf(%s%d,newrecord-Name,&newrecord-all);newrecord-left=newrecord-all;newrecord-borrow=0;head=Insert(head,newrecord);/*调用 Insert 函数判断位置插入*/getchar();/*接收最后输入的回车符*/printf(Add another Book Y/N?n);ch=getchar();getchar();/*接收回车符*/32 while(ch!=n&ch!=N);/*判断是否继续*/return(head);Book*Insert

40、(Book*head,Book*s)/*插入结点的函数*/Book*p0,*p1,*p2;p1=head;p0=s;if(head=NULL)head=p0;p0-next=NULL;while(strcmp(p0-Name,p1-Name)0&(p1-next!=NULL)p2=p p1=p1-next;if(strcmp(p0-Name,p1-Name)next=p1;if(head=p1)head=p0;else p2-next=p0;else p1-next=p0;p0-next=NULL;return(head);Book*Insert_a_record(Book*head)Book

41、*newrecord;newrecord=(Book*)malloc(LEN);/*动态分配存储空间*/scanf(%s%d,newrecord-Name,&newrecord-all);newrecord-borrow=0;newrecord-left=newrecord-all;head=Insert(head,newrecord);printf(Insert successfullyn);/*输出插入成功的信息*/return(head);Book*Delete(Book*head,char*name)/*删除功能函数*/Book*p1,*p2;if(head=NULL)printf(S

42、orry No record!n);p1=head;while(strcmp(p1-Name,name)!=0&p1-next!=NULL)/p2=p1;p1=p1-next;if(strcmp(p1-Name,name)=0)if(p1=head)head=p1-next;else p2-next=p1-next;printf(delete%s successfullyn,name);33 return(head);Book*Delete_a_record(Book*head)char name20,ch;Book*p;scanf(%s,name);getchar();p=Query(hea

43、d,name);if(p=NULL)printf(Cannot Find%sn,name);else printf(Delete%s,Y/N?n,name);ch=getchar();system(pause);if(ch=y|ch=Y)while(p!=NULL)head=Delete(head,name);p=Query(head,name);return(head);Book*Borrow_a_Book(Book*head)char name20,ch;int n;Book*p;scanf(%s%d,name,&n);getchar();/p=Query(head,name);if(p=

44、NULL)printf(Cannot Find%sn,name);else printf(Are you sure to borrow?%s,Y/N?n,name);ch=getchar();system(pause);if(ch=y|ch=Y)head=Borrow(head,name,n);return(head);Book*Borrow(Book*head,char*name,int sum)Book*p1;p1=head;while(strcmp(p1-Name,name)!=0&p1-next!=NULL)p1=p1-next;if(strcmp(p1-Name,name)=0)p1

45、-borrow=sum;34 p1-left=p1-all-sum;return(head);Book*Return_a_Book(Book*head)char name20,ch;int n;Book*p;scanf(%s%d,name,&n);getchar();/*接收回车*/p=Query(head,name);if(p=NULL)printf(Cannot Find%sn,name);/*找不到结点*/else printf(Are you sure to return?%s,Y/N?n,name);ch=getchar();system(pause);if(ch=y|ch=Y)he

46、ad=Return(head,name,n);return(head);Book*Return(Book*head,char*name,int sum)Book*p1;p1=head;while(strcmp(p1-Name,name)!=0&p1-next!=NULL)/*p1 不是要找的结点,且后面还有结点*/p1=p1-next;/*p1 后移一个结点*/if(strcmp(p1-Name,name)=0)/*找到了*/p1-borrow=p1-borrow-sum;p1-left=p1-left+sum;return(head);void Display(Book*head)Book*

47、p;int i;p=head;printf(Num BookName Total Left Borrown);for(i=1;p!=NULL;i+)printf(%-5d%-14s%-10d%-10d%-5dn,i,p-Name,p-all,p-left,p-borrow);p=p-next;if(i%10=0)system(pause);/*按回车继续显示*/35 printf(Num BookName total left borrown);Book*Query(Book*head,char*name)Book*p;p=head;while(strcmp(name,p-Name)!=0&p

48、-next!=NULL)p=p-next;if(strcmp(name,p-Name)=0)/*找到了,返回结点地址*/return(p);else/*找不到返回空指针*/return(NULL);void Query_a_record(Book*head)char name20;Book*p;scanf(%s,name);p=Query(head,name);if(p!=NULL)/*找到了*/printf(Find successfullyn%s total:%d left:%d borrow:%dn,p-Name,p-all,p-left,p-borrow);else printf(Ca

49、nt find the records of%sn,name);/*找不到*/Book*AddfromText(Book*head,char*filename)FILE*fp;int n,i;if(fp=fopen(filename,r)=NULL)printf(Cannot find file:%sn,filename);/*打不开所指定文件*/return(head);fscanf(fp,%d,&n);/*待插入记录个数*/for(i=0;iName,&p-all,&p-left,&p-borrow);head=Insert(head,p);/*插入结点*/printf(Add from%

50、s successfullyn,filename);fclose(fp);return(head);36 Book*WritetoText(Book*head,char*filename)FILE*fp;Book*p;if(head=NULL)printf(No Record!n);return(head);fp=fopen(filename,w);/*打开文件*/p=head;while(p!=NULL)fprintf(fp,%-14s%-10d%-10d%-10dnn,p-Name,p-all,p-left,p-borrow);/*文件输出*/p=p-next;printf(Write t

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁