您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 图书管理基本业务(数据结构课)程设计报告
某大学某学院数据结构课程课程设计设计题目:图书管理基本业务姓名:XX学号:0123456789专业班级:12级软件工程(1)班院系:信息工程学院设计时间:2012-2013学年第2学期设计地点:计算机中心公共机房B区指导教师签名:年月日成绩:安徽新华学院12级数据结构课程设计目录1绪论...........................................................11.1课程设计的目的..............................................11.2课题设计的意义...............................................12需求分析..........................................................22.1课程设计要求................................................22.2课程设计任务................................................22.3分析用例.....................................................23设计思路..........................................................34详细设计..........................................................45数据测试..........................................................96总结体会.........................................................13参考文献...........................................................14附录源代码.........................................................15某大学12级数据结构课程设计11绪论改革开放以来,随着我国经济水平的提高,计算机知识在我国得到了越来越大的普及。计算机也在各个领域发挥着越来越大的作用。科技的提高,让我们的生活、工作越来越离不开计算机。随着时代的发展,人们越来越离不开书本。每个学校都有自己的图书馆,班级也会有班级的书库,相信大家都有自己的书库。对于普通微小型用户来说,自己的书库不大,也没有多余的资金来购买专业的操作复杂的价格昂贵的图书管理系统。以往的图书借阅手段效率低,操作复杂,为了便于图书资料的管理需,减轻工作人员的工作量,方便用户对书籍的查找、借阅、归还,用户应具有一套完善的图书借阅管理系统。在这种情况下,一个免费,高效,简单,实用的图书管理系统就非常适合于这类普通微小型用户。1.1课程设计的目的设计一个免费,高效,简单,实用的图书管理系统。1.2课题设计的意义让普通微小型用户可以更好的管理自己的书库。免于购买专业的操作复杂的价格昂贵的图书管理系统,节约资金以免造成浪费。此系统以“免费,高效,简单,实用”为核心,倾心倾力为普通微小型用户量身打造!所以简便易用,高效实用改善普通微小型用户书库环境。某大学12级数据结构课程设计22需求分析2.1课程设计要求(1)用C语言实现程序设计;(2)利用结构体、单链表的基本操作进行相关信息处理;(3)画出查询模块的流程图;(4)系统的各个功能模块要求函数的形式实现;(5)界面友好(良好的人机交互),程序要有注释。2.2课程设计任务设计一个计算机管理系统完成图书管理基本业务。1)馆藏图书信息。每种书的登记内容包括书号、书名、著作者、现存量和库存量;2)图书查询。对书号查找,并显示所查找图书的所有信息,包括书号、书名、著作者、现存量、库存量和借阅者姓名;3)系统主要功能如下:①采编入库:新购一种书确定书号后,登记到图书帐目表中,如果表中已有,则将库存量和现存量增加;②读者借阅:若一种书的现存量大于0,则借出一本,登记借阅者的姓名,改变现存量,若一种书的现存量为0,则提示该书库存不足,读者无法借阅;③读者归还:注销对借阅者的登记,改变该书的现存量。2.3分析用例书号书名著作者现存量库存量借阅者姓名1高等数学同济大学55NULL2数字电路清华大学33NULL3大学英语蔡基刚等00NULL4基本算法戴燕等著33NULL5三言二拍冯梦龙等55NULL某大学12级数据结构课程设计33设计思路本程序是以单链表的基本操作为基础,进行改造升级,而形成的图书管理基本操作程序。图书馆基本业务模拟包含多方面的操作,其中本程序描述的是图书馆的新书入库、图书馆借阅、归还、信息查询(书籍信息查询)等功能。1)新书入库功能:新到书籍入库包含几方面的操作:查询该书名的书籍在图书馆信息中是否已经存在,若存在,则增加可借数量和书籍总量,若不存在,则新增加概述信息,从界面输入书籍的编号(0~999999的长整型)、书名(字符串类型)、该书作者名(字符串类型)、该书的现存量(整型)、该书的总量(整型)。输入该信息之后,将该节点插入到书籍信息链表中去。该节点的插入位置根据查找,找到合适的位置插入,这样可以保证整个数据都是有序的,方便查找。2)借阅功能书籍借阅主要涉及存书库和读者信息库双方的更新。用户首先使用系统,查询该书是否存在,该书的剩余数量是否大于零,最后查询该读者是否已经借满书籍。若以上条件都满足,则将该读者的可借书数量减一,该存书的可借数量减一。3)归还功能按书名号来归还所借书籍,若书名号正确并且确认归还该书籍,删除该书的读者借阅信息(姓名),然后返回。4)信息查询功能信息查询分为读者信息查询和书籍信息查询,读者信息查询是在读者登录之后,可以显示本人的基本信息以及借书状况(所借书的本数、可借书本书以及所借书的信息),还可查询书籍信息,可根据书籍的编号来查找书籍、根据书名来查找书籍、根据作者名来查询书籍。查询到该书籍后显示是否借阅该书籍。某大学12级数据结构课程设计44详细设计首先定义一个定义一个单链表的结点typedefstructnode{intnum;//书号chartitle[50];//书名charauthor[50];//著作者intnum1;//现存量intnum2;//库存量charname[50];//借阅者姓名structnode*link;}linklist;此结点包括书号,书名,著作者,现存量,库存量,借阅者姓名。linklist*creatnull(linklist*l)//建立一个带头的结点;{l=(linklist*)malloc(sizeof(linklist));l-link=NULL;returnl;}馆藏图书信息模块voidprint(linklist*l)//输出所有图书的信息{linklist*p;p=l-link;printf(\n输出所有图书的信息:\n书号\t书名\t著作者\t现存量\t库存量\t借阅者姓名);while(p){printf(\n%d\t%s\t%s\t%d\t%d\t%s,p-num,p-title,p-author,p-num1,p-num2,p-name);p=p-link;//指针指向下一个}}通过对单链表的输出来完成对馆藏图书信息的输出;采编入库模块voidcreat(linklist*l)//采编入库{inti,n;linklist*p,*tail,*q;某大学12级数据结构课程设计5tail=l;if(l-link!=NULL)q=l-link;elseq=l;while(tail-link!=NULL){tail=tail-link;};printf(\n请输入入库图书的数量:);scanf(%d,&n);for(i=1;i=n;i++){p=(linklist*)malloc(sizeof(linklist));printf(\n请输入入库图书的书号:);scanf(%d,&p-num);while(q-num!=p-num&&q-link!=NULL){q=q-link;}if(q-num==p-num){q-num1=q-num1+1;q-num2=q-num2+1;printf(\n该图书已在图书库存在,已自动增加图书数量);}else{printf(\n请输入入库图书的书名:);scanf(%s,&p-title);printf(\n请输入入库图书的著作者:);scanf(%s,&p-author);printf(\n请输入入库图书的现存量:);scanf(%d,&p-num1);printf(\n请输入入库图书的库存量:);scanf(%d,&p-num2);strcpy(p-name,NULL);tail-link=p;tail=p;tail-link=NULL;};};}首先先判断该结点是否为空,若不为空,指针指向下一个结点。若该结点为空,输入入库图书的数量,通过for循环依次输入书号,书名,著作者,现存量,库存量等信息。其中while(q-num!=p-num&&q-link!=NULL){q=q-link;}if(q-num==p-num){q-num1=q-num1+1;q-num2=q-num2+1;printf(\n该图书已在图书库存在,已自动增加图书数量。);}根据输入的书号(入库的图书)与库存的书号(本库的图书)是否相同,若相同,不用输入该书的相关信息,便自动完成图书库存和现存量的增加。并提示“该图书已在图书库存在,已自动增加图书数量。”根据书号查找图书模块某大学12级数据结构课程设计6voidlocat(linklist*l,inti)//根据书号查找图书{linklist*p;p=l-link;while(p-num!=i){p=p-link;};If(p-limk!=NULL){printf(\n输出图书的信息:\n书号\t书名\t著作者\t现存量\t库存量\t借阅者姓名);printf(\n%d\t%s\t%s\t%d\t%d\t%s\n,p-num,p-title,p-author,p-num1,p-num2,p-name);}elseprintf(该图书不在此书库!);}通过指针所指书号与查找图书的书好进行比较,若相同则输出该图书的所有信息。若不相同,则指针指向下一个结点,直到指向为NULL,结束并提示“该图书不在此书库!”。借阅模块voidborrowbook(linklist*l)//借阅{linklist*p;inti;printf(\n借阅的图书书号:);scanf(%d,&i);p=l-link;while(p-num!=i){p=p-link;};printf(\n输出图书的信息:\n书号\t书名\t著作者\t现存量\t库存量\t借阅者姓名);printf(\n%d\t%s\t%s\t%d\t%d\t%s\n,p-num,p-title,p-author,p-num1,p-num2,p-name);if(p-num1=0){printf(\n该书库存不足,读者无法借阅.);}else{p-num1=p-num1-1;printf(\n请输入借阅者的姓名:);scanf(%s,&p-name);printf(\n输出图书的信息:\n书号\t书名\t著作者\t现存量\t库存量\t借阅者姓名);printf(\n%d\t%s\t%s\t%d\t%d\t%s\n,p-num,p-title,p-author,p-num1,p-num2,p-name);};}通过指针所指书号与查找图书的书好进行比较,若相同则输出该图书的所有信息
本文标题:图书管理基本业务(数据结构课)程设计报告
链接地址:https://www.777doc.com/doc-6075549 .html