软件工程课程设计——图书馆管理系统一、可行性研究报告1、引言○1背景资料图书馆是为我们的学习工作提供服务的地方。图书馆里存放着大量的书籍资料,对这些书籍信息的有效的归类整理与管理将大大提高图书馆的运作效率,降低图书馆工作人员的劳动强度,同时可以对图书馆的整个运作过程做到明细化,透明化,为各项工作有条不紊的进行提供保障。○2报告目的本报告旨在研究分析图书馆管理系统开发的可行性,为此软件的开发人员提供可行性的验证与编写方法的指导。○3软件信息软件名称:图书馆管理系统开发平台:TurboC用户:图书馆工作人员2、可行性研究的前提○1主要功能:通过计算机完成图书馆在库书籍的管理,用计算机高效、安全的完成对图书的信息处理,将工作人员从繁琐的数据处理中解放。○2性能要求:a、书籍信息的录入,将图书名,库存数量输入系统,建立系统数据库。b、书籍信息的查询,输入书名,显示此图书的有关信息,包括库存总量、借出数目、剩余数目。c、书籍借出与归还,输入借出或归还图书的书名与数量后,对库存信息进行相应修改。d、书籍信息的插入与删除,新书到库时或清除库存时,在数据库内增加或删减相应信息。e、书籍信息的备份,将现有数据库信息存档,以备不时之需。f、书籍信息的读入,输入文件名,从相应文件中把信息读入数据库。g、权限问题,进入系统之前输入密码,密码不正确则退出系统。○3开发目标:要求系统具有良好的可操作性,数据稳定性以及安全性,可以长期使用。3、对现有系统的分析现用的管理系统在安全性,数据的读入功能方面存在不同程度的缺陷,有必要进行改进4、所建议的系统○1使用基本方法:该系统具有简单易用的特点,只需按照菜单功能行操作。○2系统流程图:6、投资及效益分析该系统投资成本小,使用方法简单易懂。该系统有效地提高图书馆工作人员的工作效率,节约人力物力。同时可以根据用户的特殊需要,增添功能。具有成本低,功能强大,使用灵活的特点。7、社会因素方的可行性○1法律方面:本系统的开发不会侵犯他人、集体或国家的利益,不违背当地法律法规。○2使用方面:本系统可以满足图书馆管理的要求,而且对使用本软件人员的计算机水平要求不高,只需了解软件操作流程就可以使用本软件,无需培训。8、结论该系统在各个方面的均具有可行性,可以立即开始进行。二、需求规格说明书1、引言○1编写目的:为软件开发者提供开发依据,在软件的开发过程中起指向性功能。本说明书的读者为此软件的开发者。○2项目背景:该软件由学生自行编写,由个人全权负责。本软件独立于其它管理软件。○3参考资料:万晓东施玉霞等着《软件技术基础教程》09年7月2、任务概述○1目标:本软件旨在为学校的图书馆管理人员提供一个可以方便管理库存图书的系统。可以对库存图书进行录入、借还、查询、修改功能。减少操作时间,提高工作效率。该软件适用于一般规模的图书馆管理操作。○2用户特点:本系统的操作对象为图书馆管理人员。对管理人员的计算机水平不需要很高的要求。○3条件与限制:本次开发工作无经费投入,开发期限为40小时。3、数据描述:○1静态数据:系统密码,书籍名称,库存总数,剩余数,借出数。○2动态数据:使用者输入的信息,包括添加的书籍信息,查询关键字。○3数据库描述:系统数据库采用TXT文档。○4数据流图:○5数据字典:4、功能要求:○1功能划分录入功能浏览功能信息查询功能借出归还功能插入与删除功能信息的备份与读入功能设置访问权限功能○2功能描述录入功能:输入相关数据数据流名:图书别名:图书馆库存图书组成:书名+库存总数+剩余数+借出数备注:无浏览功能:以列表方式列出所有记录信息信息查询功能:根据书名匹配查询,并将查询结果列出借出归还功能:根据借出与归还的书籍信息修改相应数据插入与删除功能:插入一条新的图书信息,删除某图书的信息信息的备份与读入功能:将输入文件进行备份和从指定文件读入数据设置访问权限功能:只有输入正确密码才可以进行操作否则无权操作5、性能要求○1数据精确度:查询时要确保查全率与查准率○2时间特性:系统运行时间应该在用户能够接受的范围内○3适应性:本软件属于小型软件,对不同的运行环境适应性很强,可以能够满足使用需求。6、运行需求○1用户界面:在TurboC界面运行○2硬件接口:普通PC机○3软件接口:运行于装有TurboC的操作系统○4故障处理:如果在使用过程中出现程序出错,重新运行即可恢复三、概要设计说明书1、引言○1编写目的:设计一图书馆管理系统以代替现有的管理管理系统。本说明书读者为软件设计者。○2项目背景:该软件由学生个人设计,无开发部门和主管部门,主要供学生练习使用。该软件独立于其它软件系统。○3参考资料:万晓东施玉霞等着《软件技术基础教程》09年7月谭浩强着《C语言程序设计第三版》张志航王珊珊等着《程序设计语言—C》07年9月2、概要设计:○1需求规定:本软件提供一个既可以存储信息,同时又具有浏览、插入、查询、修改、删除功能,供使用者轻松管理图书馆的库存图书。数据库信息由使用者进行输入。○2运行环境:硬件普通PC机支持环境WINDOWS操作系统,TurboC软件○3基本设计概念:本系统由主单函数调用各个子函数(功能函数)来实现各项操作。功能函数包括插入函数,删除函数,显示函数,文件读入函数,文件读出函数,借出函数,归还函数,退出函数函数调用关系图如下图所示:○4系统结构○5模块划分与功能需求关系模块编号模块名称功能M1身份验证模块输入验证信息M2主菜单模块输入选择的功能M3插入模块插入相关信息M4删除模块删除指定信息M5查询模块查询指定信息M6显示模块以列表方式显示所有信息M7借出模块实现书籍借出M8归还模块实现书籍归还M9读入模块从外部文件读入信息M10备份模块备份文件信息M11退出模块退出程序保存文件○6人工处理过程:数据的录入工作需人工完成3、接口设计○1用户接口:用户输入信息按“书名”(空格)“库存数量”的格式输入。TXT文件也按上述格式保存。○2外部接口:用户界面:DOS界面软件接口:运行于Win95以上版本,且要求安装TurboC4、运行设计○1运行控制:系统运行后先进行身份验证,验证通过后,登录,并调用M2,进入服务选择模块,由用户选择的信息选择激活M3—M10等模块,最后根据用户输入的接受信息退出程序,关闭系统。○2运行时间:各模块运行时间控制在1秒内。5系统数据结构设计书名charname[]剩余数量intsum6、系统出错处理设计○1出错信息出错类型处理方法用户输入无效字符提示出错,重新输入借出数量过大提示出错,重新输入○2维护设计本软件必须按照软件产品设计规范的步骤进行开发,充分考虑软件的可维护性,以便于未来版本开发及移植等二次开发。在编写过程中如果发现有的模块没有必要,或者实现比较困难,可以由开发者提出修改意见,决定是否修改。四、详细设计说明书1、引言○1编写目的:设计一图书馆管理系统以代替现有的管理管理系统。本说明书读者为软件设计者。○2项目背景:该软件由学生个人设计,无开发部门和主管部门,主要供学生练习使用。该软件独立于其它软件系统。○3参考资料:万晓东施玉霞等着《软件技术基础教程》09年7月谭浩强着《C语言程序设计第三版》张志航王珊珊等着《程序设计语言—C》07年9月2、总体设计○1需求概述录入功能:输入相关数据浏览功能:以列表方式列出所有记录信息信息查询功能:根据书名匹配查询,并将查询结果列出借出归还功能:根据借出与归还的书籍信息修改相应数据插入与删除功能:插入一条新的图书信息,删除某图书的信息信息的备份与读入功能:将输入文件进行备份和从指定文件读入数据设置访问权限功能:只有输入正确密码才可以进行操作否则无权操作○2系统结构图3、程序描述○1M1身份验证·功能:验证身份·性能:·输入项:预设密码·输出项:欢迎语句·算法:intkeyword=111,a;printf(Pleaseinputkeyword:);scanf(%d,&a);if(a!=keyword)exit(0);elseprintf(Welcome!);·测试要求:运行正常。○2M2主菜单模块·功能:选择功能·性能:·输入项:数字0-9·输出项:对应功能项·算法:intDisplay_MainMenu()/*显示菜单的函数*/{charx;do{system(cls);printf(************************\n);printf(BookList\n);printf(AllBooks\n);printf(aBookInformation\n);printf(aBook\n);printf(aBook\n);printf(aBook\n);printf(\n);printf(RecordsFromaFile\n);printf(toaFile\n);printf(\n);printf(************************\n);printf(Pleasechoosefrom0-9:);printf(\n);x=getchar();}while(x'0'||x'9');return(x-'0');}·测试要求:运行正常。○3M3插入模块·功能:插入新信息·性能:·输入项:书名数量·输出项:成功提示·算法:Book*Insert(Book*head,Book*s)/*插入结点的函数*/{Book*p0,*p1,*p2;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)=0){p0-next=p1;if(head==p1)head=p0;elsep2-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(Insertsuccessfully\n);/*输出插入成功的信息*/return(head);}·测试要求:运行正常。○4删除模块·功能:删除信息·性能:·输入项:所删书名·输出项:成功提示·算法:Book*Delete(Book*head,char*name){Book*p1,*p2;if(head==NULL)printf(SorryNorecord!\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=p1-next;/*若p1为首指针,使下一结点为首指针*/else{p2-next=p1-next;/*否则将下一结点地址赋给前一结点地址*/printf(delete%ssuccessfully\n,name);}/*输出删除成功的信息*/}return(head);}Book*Delete_a_record(Book*head){charname[20],ch;Book*p;scanf(%s,name);getchar();/*接收回车*/p=Query(head,name);