中易网

数据结构 图书管理系统的设计与实现

答案:2  悬赏:60  
解决时间 2021-02-19 01:28
要求:图书采编、图书编目、图书查询、图书流通(借书、还书)等请专业人士来解答
最佳答案
数据结构图书管理系统的设计与实现的建议:1.计算机毕业设计可不能马虎,最好还是自己动动脑筋,好好的写一写。 2.网上那种免费的毕业设计千万不能采用,要么是论文不完整,要么是程序运行不了,最重要的是到处都是,老师随时都可以知道你是在网上随便下载的一套3.如果没有时间写,可以在网上找找付费的,我们毕业的时候也是为这个头疼了很长时间,最后在网上找了很久,终于购买了一套毕业设计,还算不错,开题报告+论文+程序+答辩演示都有,主要的都是他们技术做好的成品,保证论文的完整和程序的独立运行,可以先看了作品满意以后再付款,而且同一学校不重复,不存在欺骗的性质,那个网站的名字我记的不是太清楚了,你可以在百度或者GOOGLE上搜索------七七计算机毕业论文,希望您可以找到
全部回答
#include #include #include // #define maxsize 100 //最大值定义为100 #define list_init_size 100//图书证使用者最大值定义为100 //借书人的结构体 typedef struct boro//借书行为 { char bnum[20];//借书的书号 char retdate[8];//归还日期 struct boro *next; }bor; typedef struct linkbook { bor *next; //该图书证的借书行为 char cnum[20]; //卡号 int total; //借书的数量 }lend[list_init_size];//借书人数组 //图书的结构体信息 typedef struct lnode { char cardnum[20];//图书证号 struct lnode *next; }linklist; //借书人 typedef struct book {//每种图书需要登记的内容包括书号isbn、书名、作者、出版社、总库存量和现库存量。 char num[20];//书号 char name[20];//书名 char auth[20];//作者 char pub[20];//出版社 int totnum;//总库存 int nownum;//现库存 linklist *next;//借了该书的人 }ook[maxsize]; // int retotal;//读者数量 int total; //定义外部变量.书的种类数 // //结构体初始化 void initbo(ook &boo) //初始化图书信息 { for(int i=0;imid&&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++;//总量+1 printf("已增加该书的信息。编号 %s 的书 %s 作者是 %s ,出版社是 %s ,目前的总库存是 %d ,现库存是 %d 。\n",boo[i].num,boo[i].name,boo[i].auth,boo[i].pub,boo[i].totnum,boo[i].nownum); printf("入库成功.\n"); } } void delete(ook &boo,char deletenum[]) {//2、 清空库存:某一种书已无保留价值,将它从图书账目中注销。 if(binarysearch(boo,deletenum)==false||total==0) //如果无此书 printf("书库中没有该书.\n"); if(binarysearch(boo,deletenum))//若有 { if(!boo[mid].next) { int j; for( j=mid;j0) //看现库存是否大于0 { boo[mid].nownum--;//借出一本,少1 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));//分配空间,增加1个结点 m->next=n; strcpy(n->cardnum,canum);//记录证号 n->next=null; } int i=0; for(i=0;inext)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++; //借阅证号信息总数加1 printf("借阅成功.\n"); } } else printf("借阅失败.该书现在库存为0.\n"); } } void return(ook &boo,lend &lin,char returnnum[],char borrowernum[]) {//4、 归还:注销对借阅者的登记,改变该书的现存量。 bor *p,*q; linklist *m,*n; int flag=0;//设置一个参数 if(!binarysearch(boo,returnnum)||!total) //没书 printf("书库中无此书.\n"); if(binarysearch(boo,returnnum)) //有书 { m=boo[mid].next; if(!strcmp(m->cardnum,borrowernum)) //如果是第一个借的人还的 { boo[mid].nownum++; //现库存加1 boo[mid].next=m->next; //删除结点 free(m); //释放该结点的空间空间 } else { while(m->next) //查找归还者的借阅者结点 { if(!strcmp(m->next->cardnum,borrowernum)) //如果找到 { n=m->next; //n为归还者的借阅结点 m->next=n->next; //m指向归还者的借阅结点的下一结点 free(n); //释放空间 boo[mid].nownum++; //现库存加1 break; } m=m->next; } } } //在借阅者表里查找借阅者信息 for(int i=0;ibnum,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; //q为归还书的借书结点 p->next=q->next; //p指向下一借书结点 free(q); //释放空间 printf("成功归还该书.\n"); flag=1; break; } p=p->next; } } } } for(int k=0;kcardnum); p=p->next; } printf("┗━━━━━━━┛\n"); } } while(p) { printf(" %s ",p->cardnum);//在按书号查找的函数里也显示借了这本书的借阅者的证号 p=p->next; } printf(" \n"); }//显示查找的书籍的信息 } void searchbyname(ook &boo) {//by name 根据书名查找 char seaname[20]; printf("输入想查找的书的书名:\n"); scanf(" %s",&seaname); printf("找到符合该书名的书的详细信息如下:\n"); for(int i=0;ibnum); //书号 p=p->next; } printf("\n"); qqq=1; break; } } if(qqq==0) printf("该证不存在.\n"); } void viewbook(ook &boo,lend &lin) {//查看全部超期未还的图书 char date[8]; bor *p; printf("请输入日期(请按格式20060605输入):\n"); scanf(" %s",&date); printf("所有超期未还的书有:\n"); for(int i=0;iretdate,date)<0) //超过日期 { printf("书号为 %s 证号为 %s 应归还日期为 %s \n",p->bnum,lin[i].cnum,p->retdate); }//显示所有超期未还的书的信息 p=p->next; } } } void menu() //菜单 { printf("┏—————————————————m e n u————————————————┓\n"); printf("│ │\n"); printf("│ 1. 采编入库:新购入一种书,如果该书在图书账目中已经存在, │\n"); printf("│ 则将其库存量增加(包括总库存量和现库存量)。 │\n"); printf("│ 如果该书不存在,则在图书账目中增加一种书, │\n"); printf("│ 总库存量和现库存量均为输入的数字。 │\n"); printf("│ 2. 清空库存:某一种书已无保留价值,将它从图书账目中注销。 │\n"); printf("│ 3. 借阅:如果一种书的现库存量大于零,则借出一本书,将现库存量减1, │\n"); printf("│ 并登记借阅者的图书证号和归还期限。 │\n"); printf("│ 4. 归还:注销对借阅者的登记,改变该书的现存量。 │\n"); printf("│ 5. 按书号查找。 │\n"); printf("│ 6. 按书名查找。 │\n"); printf("│ 7. 按作者查找。 │\n"); printf("│ 8. 查看某图书证号的借阅者借阅的全部图书。 │\n"); printf("│ 9. 查看全部超期未还的图书。 │\n"); printf("│ 0. 退出图书管理系统。 │\n"); printf("│ │\n"); printf("┗—————————————请 选 择 你 需 要 的 操 作————————————┛\n"); } void main() { ook bo; lend lin; char bnum[20]; char cnum[20]; printf("-----------------------欢 迎 进 入 图 书 管 理 系 统!---------------------------\n\n"); int choice=10; int searchcho=10,viewcho=10; while(choice!=0) { menu();//显示菜单 scanf(" %d",&choice); switch(choice) { case 1://采编入库 printf("请输入入库的书的书号:"); scanf(" %s",bnum); buy(bo,bnum); break; case 2://清空库存 printf("请输入想要清除的书的书号:"); scanf(" %s",bnum); delete(bo,bnum); break; case 3://借阅 printf("请输入想要借阅的书的书号:\n"); scanf(" %s",&bnum); printf("请输入图书证号:"); scanf(" %s",&cnum); borrow(bo,lin,bnum,cnum); break; case 4://归还 printf("请输入想要归还的书的书号:\n"); scanf(" %s",&bnum); printf("请输入图书证号:"); scanf(" %s",&cnum); return(bo,lin,bnum,cnum); break; case 5://查找//根据书号查找 printf("请输入书号:");//输入书号查找 scanf(" %s",&bnum); searchbynum(bo,bnum); break; case 6://根据书名查找 searchbyname(bo); break; case 7://根据作者查找 searchbyauth(bo); break; case 8://查看某图书证所借的所有书 viewcard(bo,lin); break; case 9: //查看全部超期未还的书 viewbook(bo,lin); break; case 0://退出系统 exit(0);break; default:printf("输入错误!\n");exit(0);break; } } }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
抢滩登陆战2008怎样玩?如何操作?
葛段村在什么地方啊,我要过去处理事情
思埠集团是微商第一企业吗,怎么加入创业,可
一次性纹身怎么做
be free和for free有什么区别
云岩区贵阳周大福CHOW TAI FOOK这个地址在什
春天两个字五行中含水吗
万家亲超市NO.188地址在哪,我要去那里办事
先锋驾校(临沂郯城)怎么去啊,我要去那办事
金融经济师是否可以报考房产估价师呢
楼盘辞典运营专员是做什么的
我儿子上课老是说话和做小动作怎么办
发动机要不要加保护剂
恒盛网吧地址在哪,我要去那里办事
水稻长期水淹后为什么会烂根
推荐资讯
限价商品房的套型建筑面积都有哪些?
2016年去上海博物馆人多吗
有看过韩剧剩余公主的吗?里面有一首郑东河唱
装修用的沙子多少钱一车
红钻花在什么时候需要剪枝
劳动者一个月上班天数不够21.75天需要按照最
广东省清远市英德市英红镇云岭有移动3g网络吗
地铁九号线七宝站到七宝老街
金鹏1186说明书
小故事大道理20字
求林宥嘉 说谎 的伴奏~
潮流元素怎么去啊,有知道地址的么
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?