版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构课程设计图书管理系统一需求分析该程序是模拟图书馆管理系统,实现图书采编入库、借书、还书、查询等基本业务。此程序规定:(1)管理员能够向系统中输入每种书的基本信息,包括书号、书名、作者、现存量和库存量、借阅记录,并保存记录;(2)用户(读者)能够按书号、书名、作者查询图书信息;(3)管理员能够实现图书采编入库(新购入一本书,经分类和确定书号之后登记到图书账目中去。如果这种书在帐中已有,则只将总库存量增加)、借阅(如果书的现存量大于0,则借出一本,登记借阅者的图书证号和归还期限)、归还(删除对借阅者的登记,改变该书的现存量)、销毁(将图书从账目中删除)等操作。二概要设计系统用到的抽象数据类型定义:1、ADTLinearList{数据元素:D={ai|ai∈D0,i=1,2,…,n,n≥0,D0为某一数据对象}关系:S={<ai,ai+1>|ai,ai+1∈D0,i=1,2,…,n-1}基本操作:InitList(L)DestroyList(L)ClearList(L)EmptyList(L)ListLength(L)Locate(L,e)GetData(L,i)InsList(L,i,e)DelList(L,i,&e)}ADTLinearList2、ADTString{数据对象:D={ai|ai∈CharacterSet,i=1,2,…,n;n≧0}数据关系:R={<ai-1,ai>|ai-1,ai∈D,i=2,…,n;n≧0}基本操作:StrAsign(S,chars)StrInsert(S,pos,T)StrDelete(S,pos,len)StrCopy(S,T)StrEmpty(S)StrCompare(S,T)StrLength(S)StrClear(S)StrCat(S,T)(10)SubString(Sub,S,pos,len)(11)StrIndex(S,pos,T)(12)StrReplace(S,T,V)(13)StrDestroy(S)}ADTString系统中的子程序和功能说明:InitBo(Book&boo);初始化图书信息InitRe(lend&Lin);初始化借阅者信息BinarySearch(Bookboo,charSearchNum[]);二分法查找比较书号Buy(Book&boo,charBuyNum[]);新书采编入库系统Delete(Book&boo,charDeleteNum[]);清除图书信息系统Borrow(Book&boo,lend&Lin,charBorrowNum[],charCaNum[]);借阅图书处理系统Return(Book&boo,lend&Lin,charReturnNum[],charBorrowerNum[]);归还图书系统SearchByNum(Book&boo,charSeaNum[]);按书号查找系统SearchByName(Book&boo);按书名查找系统SearchByAuth(Book&boo);按作者查询系统Menu();主菜单显示系统Search();查询系统子菜单main();主函数系统程序功能结构图图书馆管理系统图书馆管理系统图书信息录入查询图书信息处理图书信息基本信息借阅记录按书号查询按书名查询按作者查询图书采编入库图书借阅情况图书归还情况图书销毁情况三详细设计功能实现过程boolBinarySearch(Bookboo,charSearchNum[])//二分法查找比较书号{ while(low<=high) { 计算中间点; if(查找到书号相同的) { 返回值true; } if(查找书号不相同) 用二分法进一步进行查找; } if(库中没有所要查找的书) 返回值false;}voidBuy(Book&boo,charBuyNum[])/*采编入库*/{if(书库中有此书){总库存加1;现库存加1;}if(书库中无此书){for(i=total;i>mid&&total;i--)/*将新采购的书插在适合位置,保持有序*/空出插入位置;输入新购书籍的相关信息:书号、书名、作者、出版社;boo[i].next=NULL;total++;/*总量加1*/}}voidDelete(Book&boo,charDeleteNum[])/*清除图书信息*/{if(书库中没有此书)输出“无此书”;if(书库中有此书){strcpy(连续两本书的相关信息);现存量减1;库存量减1;}else输出“此书已有借阅者,无法删除!”;}voidBorrow(Book&boo,lend&Lin,charBorrowNum[],charCaNum[])/*借阅图书信息*/{if(没有找到此书)输出“书库中无此书!”;if(书库中有此书){借出一本书后,该书的现存量减1;并在借阅记录链表中插入该条记录;再对应读者信息记录链表,如果已有该读者证号信息,直接在该链表中插入此次借阅记录;如果无该读者证号信息,申请新单链表存放借阅记录。}else输出“该书现存量为0”}voidReturn(Book&boo,lend&Lin,charReturnNum[],charBorrowerNum[])/*归还图书信息*/{if(书库中无此书)输出“无此书记录”;if(书库中有此书){查找图书文件,修改图书的现存量;查找记录借阅信息的单链表,填入还书日期,删除借阅信息;查找记录读者信息的单链表,删除证号信息。}}voidSearchByNum(Book&boo,charSeaNum[])/*按书号查找*/{if(书库中无此书信息)/*用二分法查找*/输出“无此书”;else/*书库中有此书信息*/输出与此书有关的相关信息;}voidSearchByName(Book&boo)/*按书名查找*/{输入想要查找书的书名;用顺序查找法查找;if(查找到需要查找的书)输出与此书相关的信息;}建议画出主要模块流程图。四设计与调试分析1、这个程序设计中要注意定义两个结构体:图书结构体、借阅人结构体。其中定义数组存放图书信息,申请链表存放借阅记录和读者信息记录。2、程序中运用到大多的插入与删除,所以申请链表比较方便插入与删除。但应前期需求分析的准备工作不充分,导致程序运行功能不全,比如查找时关于此书的信息不能全部显示出来,并且添加删除时库存的变化不能直接显示出来。程序的健壮性不能达到预期的结果,这些都是需要改进的。3、在程序中的函数调用是个非常重要的部分,也是经常需要用到的,在编写程序过程中,因为函数调用不准确,使得循环进不去,后来改变函数的调用关系,才达到了预期结果。4、程序中还定义了全局变量,之前没定义全局变量,在下面的编写过程,同样性质的地方需要重复定义,比较麻烦,定义全局变量使得程序比较简明一点。五用户手册【使用说明】1、进入图书馆管理系统主页面2、若有新书要新编入库,选择1,进入新书入库系统,输入入库书的书号,若书库中无该书,则设立新书目,输入新书信息。若书库中已有该书,则输入新信息覆盖修改原书库中该书号对应书的信息。3、若有书籍信息需要删除,选择2,进入清空库存系统,输入想要删除书的书号,则此书信息就已删除。4、若要借阅图书,选择3,进入图书借阅系统,输入需要借阅书的书号以及读者证号,并输入还书日期,则借书成功。5、若要归还图书,选择4,进入图书归还系统,输入需要归还图书的书号以及读者证号,则还书成功。6、若要查找信息,选择5,进入查找信息子系统。若要按书号查找,则选择子系统中的1,输入需要查找的书的书号,若按书名查找,则选择子系统中的2,输入需要查找的书名,若按作者查找,输入需要查找书的作者进行查找,若查找结束,则按0退出。7、若系统使用结束,按0退出。【程序中的头文件】#include<stdio.h>#include<string.h>#include<stdlib.h>#defineMAXSIZE100#defineLIST_INIT_SIZE100intRetotal;/*定义的全局变量*/inttotal;六测试成果1、采编入库2、清空库存3、图书借阅4、图书归还5、图书查找七附录(源程序清单)#include<stdio.h>#include<string.h>#include<stdlib.h>#defineMAXSIZE100#defineLIST_INIT_SIZE100typedefstructBoro{ charBNum[20];charRetDate[8];structBoro*next;}Bor;typedefstructLinkBook{ Bor*next; charCNum[20];intTotal;}lend[LIST_INIT_SIZE];typedefstructLNode{ charCardNum[20]; structLNode*next;}LinkList;typedefstructbook{ charnum[20]; charname[20]; charauth[20]; charpub[20]; intTotNum; intNowNum; LinkList*next;}Book[MAXSIZE];intRetotal;inttotal;voidInitBo(Book&boo){ for(inti=0;i<MAXSIZE;i++) { boo[i].NowNum=0; boo[i].TotNum=0; boo[i].next=NULL; }}voidInitRe(lend&Lin){ for(inti=0;i<LIST_INIT_SIZE;i++) Lin[i].next=NULL;}intmid=0;boolBinarySearch(Bookboo,charSearchNum[]){ intlow=0,high=total; intfound=0; while(low<=high) { mid=(low+high)/2; if(strcmp(boo[mid].num,SearchNum)==0) { found=1; returntrue; } if(strcmp(boo[mid].num,SearchNum)!=0) high=mid-1; else low=mid+1; } if(found==0) returnfalse;}voidBuy(Book&boo,charBuyNum[]){ inti; if(BinarySearch(boo,BuyNum)) { boo[mid].TotNum++; boo[mid].NowNum++; printf("入库成功.\n"); printf("已更改书库中该书的信息。\n"); printf("编号:%s书名:%s",boo[mid].num,boo[mid].name); printf("%s出版社:%s",boo[mid].auth,boo[mid].pub); printf("\n"); } if(!BinarySearch(boo,BuyNum)) { for(i=total;i>mid&&total;i--) boo[i]=boo[i-1]; printf("该书在书库中不存在,设立新书目!\n"); strcpy(boo[i].num,BuyNum); printf("该书购入的数量是:"); scanf("%d",&boo[i].NowNum); boo[i].TotNum=boo[i].NowNum; printf("该书的名字是:"); scanf("%s",&boo[i].name); printf("该书的作者是:"); scanf("%s",&boo[i].auth); printf("该书的出版社是:"); scanf("%s",&boo[i].pub); boo[i].next=NULL; total++; printf("已增加该书的信息!\n"); printf("编号:%s书名:%s",boo[i].num,boo[i].name); printf("%s出版社:%s",boo[i].auth,boo[i].pub); printf("\n"); printf("入库成功.\n"); }}voidDelete(Book&boo,charDeleteNum[]){ if(BinarySearch(boo,DeleteNum)==false||total==0) printf("书库中没有该书.\n"); if(BinarySearch(boo,DeleteNum)) { if(!boo[mid].next) { intj; for(j=mid;j<total;j++) boo[j]=boo[j+1]; strcpy(boo[j].num,boo[j+1].num); strcpy(boo[j].name,boo[j+1].name); strcpy(boo[j].auth,boo[j+1].auth); strcpy(boo[j].pub,boo[j+1].pub); boo[j].TotNum=boo[j+1].TotNum; boo[j].NowNum=boo[j+1].NowNum; printf("已成功删除该书.\n"); } else printf("该书有借阅者,无法删除。\n"); }}voidBorrow(Book&boo,lend&Lin,charBorrowNum[],charCaNum[]){ Bor*p,*q; LinkList*m,*n; if(!BinarySearch(boo,BorrowNum)||total==0) printf("书库里没这书。\n"); if(BinarySearch(boo,BorrowNum)) { if(boo[mid].NowNum>0) { boo[mid].NowNum--; if(boo[mid].next==NULL) { m=(LinkList*)malloc(sizeof(LNode)); boo[mid].next=m; strcpy(m->CardNum,CaNum); m->next=NULL; } else { m=boo[mid].next; while(m->next) m=m->next; n=(LinkList*)malloc(sizeof(LNode)); m->next=n; strcpy(n->CardNum,CaNum); n->next=NULL; } inti=0; for(i=0;i<Retotal;i++) { if(!strcmp(Lin[i].CNum,CaNum)) { p=Lin[i].next; while(p->next)p=p->next; q=(Bor*)malloc(sizeof(Boro)); p->next=q; strcpy(q->BNum,BorrowNum); printf("输入归还日期:"); scanf("%s",&q->RetDate); q->next=NULL; printf("借阅成功.\n"); break; } } if(i==Retotal) { strcpy(Lin[i].CNum,CaNum); p=(Bor*)malloc(sizeof(Boro)); Lin[i].next=p; strcpy(p->BNum,BorrowNum); printf("输入归还日期:"); scanf("%s",&p->RetDate); p->next=NULL; Retotal++; printf("借阅成功.\n"); } } else printf("借阅失败.该书现在库存为0.\n"); }}voidReturn(Book&boo,lend&Lin,charReturnNum[],charBorrowerNum[]){ Bor*p,*q; LinkList*m,*n; intflag=0; if(!BinarySearch(boo,ReturnNum)||!total) printf("书库中无此书.\n"); if(BinarySearch(boo,ReturnNum)) { m=boo[mid].next; if(!strcmp(m->CardNum,BorrowerNum)) { boo[mid].NowNum++; boo[mid].next=m->next; free(m); } else { while(m->next) { if(!strcmp(m->next->CardNum,BorrowerNum)) { n=m->next; m->next=n->next; free(n); boo[mid].NowNum++; break; } m=m->next; } } } for(inti=0;i<Retotal;i++) { if(!strcmp(Lin[i].CNum,BorrowerNum)) { p=Lin[i].next; if(!strcmp(p->BNum,ReturnNum)) { Lin[i].next=p->next; free(p); printf("成功归还该书.\n"); flag=1; break; } else { while(p->next) { if(!strcmp(p->next->BNum,ReturnNum)) { q=p->next; p->next=q->next; free(q); printf("成功归还该书.\n"); flag=1; break; } p=p->next; } } } } for(intk=0;k<Retotal;k++) if(!Lin[k].next) { intj; for(j=k;j<Retotal;j++) Lin[j]=Lin[j+1]; strcpy(Lin[j].CNum,""); Retotal--; } if(flag==0) printf("无该证信息.\n");}voidSearchByNum(Book&boo,charSeaNum[]){ LinkList*p; p=boo[mid].next; if(BinarySearch(boo,SeaNum)==true) { printf("书号:%s\n",boo[mid].num); printf("书名:%s\n",boo[mid].name); printf("作者名:%s\n",boo[mid].auth); printf("出版社:%s\n",boo[mid].pub); printf("现存量:%s\n",boo[mid].NowNum); printf("库存量:%s\n",boo[mid].TotNum); printf("\n"); } else printf("对不起,未找到您想查找的书。\n");}voidSearchByName(Book&boo){ charSeaName[20]; printf("输入想查找的书的书名:\n"); scanf("%s",&SeaName); printf("此书存在!\n"); for(inti=0;i<total;i++) { if(strcmp(SeaName,boo[i].name)==0) { printf("编号:%s书名:%s",boo[i].num,boo[i].name); printf("%s出版社:%s",boo[i].auth,boo[i].pub); printf("总库存量:%s",boo[i].TotNum); printf("现库存量:%s",boo[i].NowNum); printf("\n"); } } }voidSearchByAuth(Book&boo){ charSeaAuth[20]; printf("输入想查找的书的\n"); scanf("%s",&SeaAuth); printf("找到符合该作者的书的详细信息如下:\n"); for(inti=0;i<total;i++) { if(strcmp(SeaAuth,boo[i].auth)==0) { printf("编号:%s书名:%s",boo[i].num,boo[i].name); printf("%s出版社:%s",boo[i].auth,boo[i].pub); printf("\n"); } }}voidMenu(){ printf("图书馆管理系统\n"); printf("1.采编入库2.清空库存\n\n"); printf("3.图书借阅4、图书归还\n\n");printf("5.按要求查找0.退出\n\n");printf("请选择:");}voidSearch(){ charBNum[20]; BookBo; intk; printf("图书馆查询子系统\n"); printf("1、按书号查询2、按书名查找\n\n"); printf("3、按作者查询4、退出子系统\n\n"); printf("请选择:"); scanf("%d",&k); switch(k) { case1: printf("请输入书号:");//输入书号查找 scanf("%s",&BNum); SearchByNum(Bo,BNum); break; case2: SearchByName(Bo); break; case3: SearchByAuth(Bo); break; case4: exit(0); break; }}voidmain(){ BookBo;lendLin;charBNum[20]; charCNum[20];intchoice=10; while(choice!=0) { system("cls"); Menu();//显示菜单 scanf("%d",&choice); switch(choice) { case1://采编入库 printf("请输入入库的书的书号:"); scanf("%s",BNum); Buy(Bo,BNum); system("pause"); break; case2://清空库存 printf("请输入想要清除的书的书号:"); scanf("%s",BNum); Delete(Bo,BNum); system("pause"); break; case3://借阅 printf("请输入想要借阅的书的书号:\n"); scanf("%s",&BNum); printf("请输入图书证号:"); scanf("%s",&CNum); Borrow(Bo,Lin,BNum,CNum); system("pause"); break; case4://归还 printf("请输入想要归还的书的书号:\n"); scanf("%s",&BNum); printf("请输入图书证号:"); scanf("%s",&CNum); Return(Bo,Lin,BNum,CNum); system("pause"); break; case5: Search(); system("pause"); break; case0://退出系统 exit(0); break; default:printf("输入错误!\n");exit(0);break; } }}
咖啡店创业计划书第一部分:背景在中国,人们越来越爱喝咖啡。随之而来的咖啡文化充满生活的每个时刻。无论在家里、还是在办公室或各种社交场合,人们都在品着咖啡。咖啡逐渐与时尚、现代生活联系在一齐。遍布各地的咖啡屋成为人们交谈、听音乐、休息的好地方,咖啡丰富着我们的生活,也缩短了你我之间的距离,咖啡逐渐发展为一种文化。随着咖啡这一有着悠久历史饮品的广为人知,咖啡正在被越来越多的中国人所理解。第二部分:项目介绍第三部分:创业优势目前大学校园的这片市场还是空白,竞争压力小。而且前期投资也不是很高,此刻国家鼓励大学生毕业后自主创业,有一系列的优惠政策以及贷款支持。再者大学生往往对未来充满期望,他们有着年轻的血液、蓬勃的朝气,以及初生牛犊不怕虎的精神,而这些都是一个创业者就应具备的素质。大学生在学校里学到了很多理论性的东西,有着较高层次的技术优势,现代大学生有创新精神,有对传统观念和传统行业挑战的信心和欲望,而这种创新精神也往往造就了大学生创业的动力源泉,成为成功创业的精神基础。大学生创业的最大好处在于能提高自己的潜力、增长经验,以及学以致用;最大的诱人之处是透过成功创业,能够实现自己的理想,证明自己的价值。第四部分:预算1、咖啡店店面费用咖啡店店面是租赁建筑物。与建筑物业主经过协商,以合同形式达成房屋租赁协议。协议资料包括房屋地址、面积、结构、使用年限、租赁费用、支付费用方法等。租赁的优点是投资少、回收期限短。预算10-15平米店面,启动费用大约在9-12万元。2、装修设计费用咖啡店的满座率、桌面的周转率以及气候、节日等因素对收益影响较大。咖啡馆的消费却相对较高,主要针对的也是学生人群,咖啡店布局、格调及采用何种材料和咖啡店效果图、平面图、施工图的设计费用,大约6000元左右3、装修、装饰费用具体费用包括以下几种。(1)外墙装饰费用。包括招牌、墙面、装饰费用。(2)店内装修费用。包括天花板、油漆、装饰费用,木工、等费用。(3)其他装修材料的费用。玻璃、地板、灯具、人工费用也应计算在内。整体预算按标准装修费用为360元/平米,装修费用共360*15=5400元。4、设备设施购买费用具体设备主要有以下种类。(1)沙发、桌、椅、货架。共计2250元(2)音响系统。共计450(3)吧台所用的烹饪设备、储存设备、洗涤设备、加工保温设备。共计600(4)产品制造使用所需的吧台、咖啡杯、冲茶器、各种小碟等。共计300净水机,采用美的品牌,这种净水器每一天能生产12l纯净水,每一天销售咖啡及其他饮料100至200杯,价格大约在人民币1200元上下。咖啡机,咖啡机选取的是电控半自动咖啡机,咖啡机的报价此刻就应在人民币350元左右,加上另外的附件也不会超过1200元。磨豆机,价格在330―480元之间。冰砂机,价格大约是400元一台,有点要说明的是,最好是买两台,不然夏天也许会不够用。制冰机,从制冰量上来说,一般是要留有富余。款制冰机每一天的制冰量是12kg。价格稍高550元,质量较好,所以能够用很多年,这么算来也是比较合算的。5、首次备货费用包括购买常用物品及低值易耗品,吧台用各种咖啡豆、奶、茶、水果、冰淇淋等的费用。大约1000元6、开业费用开业费用主要包括以下几种。(1)营业执照办理费、登记费、保险费;预计3000元(2)营销广告费用;预计450元7、周转金开业初期,咖啡店要准备必须量的流动资金,主要用于咖啡店开业初期的正常运营。预计2000元共计: 120000+6000+5400+2250+450+600+300+1200+1200+480+400+550+1000+3000+450+2000=145280元第五部分:发展计划1、营业额计划那里的营业额是指咖啡店日常营业收入的多少。在拟定营业额目标时,必须要依据目前市场的状况,再思考到咖啡店的经营方向以及当前的物价情形,予以综合衡量。按照目前流动人口以及人们对咖啡的喜好预计每一天的营业额为400-800,根据淡旺季的不同可能上下浮动2、采购计划依据拟订的商品计划,实际展开采购作业时,为使采购资金得到有效运用以及商品构成达成平衡,务必针对设定的商品资料排定采购计划。透过营业额计划、商品计划与采购计划的确立,我们不难了解,一家咖啡店为了营业目标的达成,同时有效地完成商品构成与灵活地运用采购资金,各项基本的计划是不可或缺的。当一家咖啡店设定了营业计划、商品计划及采购计划之后,即可依照设定的采购金额进行商品的采购。经过进货手续检验、标价之后,即可写在菜单上。之后务必思考的事情,就是如何有效地将这些商品销售出去。3、人员计划为了到达设定的经营目标,经营者务必对人员的任用与工作的分派有一个明确的计划。有效利用人力资源,开展人员培训,都是我们务必思考的。4、经费计划经营经费的分派是管理的重点工作。通常能够将咖啡店经营经费分为人事类费用(薪资、伙食费、奖金等)、设备类费用(修缮费、折旧、租金等)、维持类费用(水电费、消耗品费、事务费、杂费等)和营业类费用(广告宣传费、包装费、营业税等)。还能够依其性质划分成固定费用与变动费用。我们要针对过去的实际业绩设定可能增加的经费幅度
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 粉煤灰质量保证合同
- 市政建设项目合同评审指南
- 政府采购(工程类)项目环保措施合同
- 2024至2030年中国复床纯水系统数据监测研究报告
- 2024至2030年蛋壳改良剂项目投资价值分析报告
- 2024至2030年吊牌织带项目投资价值分析报告
- 2024至2030年1-甲基-4-氨基哌嗪项目投资价值分析报告
- 2024年中国屏蔽柜市场调查研究报告
- (可行性报告)丰都县湛普镇防洪工程可行性研究报告
- 设备销售合同案例
- 心电图的基础知识课件.ppt
- 科普知识讲座(火箭)PPT精选课件
- 高三一模动员主题班会-课件(PPT演示)
- 钛加工工艺方法综述
- 车辙的形成原因及预防措施
- 2022年同济大学单独考试研究生报考资格审查表
- 风电场升压站建筑工程主要施工方案
- 施工单位试验室验收方案
- 从PK-PD看抗菌药物的合理应用
- 癃闭中医护理方案解答
- MCGS与1500连接配置说明
评论
0/150
提交评论