图书管理部分课程设计.docx
- 文档编号:9229548
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:17
- 大小:17.50KB
图书管理部分课程设计.docx
《图书管理部分课程设计.docx》由会员分享,可在线阅读,更多相关《图书管理部分课程设计.docx(17页珍藏版)》请在冰豆网上搜索。
图书管理部分课程设计
#include
#include
#include
#defineLENsizeof(structbooklist)
#defineLEN2sizeof(structmemberlist)
#defineLEN3sizeof(structreaders)
typedefstructreaders//借书信息结构体
{
charname[30];//借书人的姓名
structreaders*next2;
}reader;
//书本信息结构体
typedefstructbooklist
{
charnum[20];//书号
charname[30];//书名
charconcern[50];//出版社
chardate[20];//出版日期
charauthor[20];//作者
intpage;//页数
intprice;//价格
intimformation;//图书剩余数量
reader*a;//借阅人
structbooklist*next;
}Book;
voidcreatlist();//创建新的书本信息
voidprint(Book*head);//打印书本信息
voidsave(Book*head);//储存书本信息
voidAddBook();//添加书本信息
voidDelBook();//删除书本信息
Book*read();//读取书本信息
voidmanager();//管理员操作
voidBookconsult();//图书查询
intBorrow();//借书
intReturn();//还书
Book*sort(Book*head);//书本信息按书号排序
voidimformation();//系统信息
Book*head=NULL,*p1=NULL,*p2=NULL;
//创建新的书本信息
voidcreatlist()
{
inti,n;
printf("要创建的书本数目");
scanf("%d",&n);
p2=head=(Book*)malloc(LEN);//创建带有头结点的链表
p2->a=(reader*)malloc(LEN3);
p2->a->next2=NULL;
p2->next=NULL;
printf("请输入书的信息:
\n");
for(i=1;i<=n;i++)
{
p1=(Book*)malloc(LEN);
printf("书号:
");scanf("%s",p1->num);
printf("书名:
");scanf("%s",p1->name);
printf("出版社:
");scanf("%s",p1->concern);
printf("出版日期:
");scanf("%s",p1->date);
printf("作者:
");scanf("%s",p1->author);
printf("书本页数:
");scanf("%d",&p1->page);
printf("书本价格(元):
");scanf("%d",&p1->price);
p1->a=(reader*)malloc(LEN3);
p1->a->next2=NULL;
p1->imformation=10;
p1->next=NULL;
p2->next=p1;
p2=p1;
if(i \n"); } head=sort(head); save(head); print(head); } //打印书本信息 voidprint(Book*head) { Book*p=NULL; reader*p0=NULL; p=head->next; printf("*******************************************************************************\n"); while(p! =NULL) { printf("书号: %s\n书名: %s\n出版社: %s\n出版日期: %s\n作者: %s\n书本页数(页): %d\n书本价格(元): %d\n剩余数量: %d\n",p->num,p->name,p->concern,p->date,p->author,p->page,p->price,p->imformation); printf("借阅图书的人: "); if(p->a->next2==NULL)printf("------------暂无借阅人! "); else { for(p0=p->a->next2;p0! =NULL;p0=p0->next2) { printf("%s",p0->name); } } p=p->next;/*p后移一个结点*/ printf("\n"); printf("\n"); } } //书本信息按书号排序 Book*sort(Book*head) { Book*p1=NULL,*p2=NULL,*p3=NULL,*min=NULL,*min2=NULL,*head2=head->next; p1=head2; while(p1->next! =NULL) { min=p2=p1;/*把首结点作为最小值*/ while(p2->next! =NULL) { if(strcmp(min->num,p2->next->num)>0)/*首结点与下一结点比较*/ { min2=p2; min=p2->next; } p2=p2->next; } if(min! =p1) { min2->next=min->next;/*删除最小结点*/ min->next=p1;/*插入最小结点*/ if(p1==head2)head2=min; elsep3->next=min;/*p3为min前的结点指针*/ p3=min; } else { p3=p1; p1=p1->next; } } head->next=head2; return(head); } //储存书本信息 voidsave(Book*head) { FILE*fp,*fp2; Book*p=NULL; reader*q=NULL; fp=fopen("书本信息.txt","wb");//printf("不能打开文件! \n"); fp2=fopen("借阅信息.txt","wb");//printf("不能打开文件! \n"); p=head; while(p! =NULL) { fwrite(p,LEN,1,fp);/*逐个结点写文件*/ for(q=p->a;q! =NULL;q=q->next2) {fwrite(q,LEN3,1,fp2);} p=p->next; } fclose(fp); fclose(fp2); } //添加书本信息 voidAddBook() { FILE*fp,*fp2; Book*addbook=NULL; reader*p0=NULL; fp=fopen("书本信息.txt","ab");//追加方式打开文件 fp2=fopen("借阅信息.txt","ab"); addbook=(Book*)malloc(LEN); printf("输入书本信息: \n"); printf("书号: ");scanf("%s",addbook->num); printf("书名: ");scanf("%s",addbook->name); printf("出版社: ");scanf("%s",addbook->concern); printf("出版日期: ");scanf("%s",addbook->date); printf("作者: ");scanf("%s",addbook->author); printf("书本页数: ");scanf("%d",&addbook->page); printf("书本价格(元): ");scanf("%d",&addbook->price); p0=(reader*)malloc(LEN3); p0->next2=NULL; addbook->a=p0; addbook->imformation=10; addbook->next=NULL; fwrite(addbook,LEN,1,fp);/*块写*/ fwrite(p0,LEN3,1,fp2); fclose(fp); fclose(fp2); } //读取书本信息 Book*read() { FILE*fp,*fp2; Book*p=NULL,*p1=NULL,*head=NULL; reader*p0=NULL,*p2=NULL; if((fp=fopen("书本信息.txt","rb"))==NULL)printf("不能打开文件或文件不存在! \n"); if((fp2=fopen("借阅信息.txt","rb"))==NULL)printf("不能打开文件或文件不存在! \n"); head=(Book*)malloc(LEN); fread(head,LEN,1,fp); p1=head; p0=(reader*)malloc(LEN3); fread(p0,LEN3,1,fp2); p0->next2=NULL; head->a=p0; head->next=NULL; p=(Book*)malloc(LEN); while(fread(p,LEN,1,fp))/*逐个结点读取*/ { p1->next=p; p1=p1->next; p0=(reader*)malloc(LEN3); p1->a=p0; while(fread(p0,LEN3,1,fp2)) { if(p0->next2==NULL) { p2=p0; p0=(reader*)malloc(LEN3); break; } p2=p0; p0=(reader*)malloc(LEN3); p2->next2=p0; } free(p0); p2->next2=NULL; p=(Book*)malloc(LEN); } p1->next=NULL; free(p); fclose(fp); fclose(fp2); head=sort(head); if(head! =NULL)return(head); else { printf("文件为空! \n"); return0; } } //删除书本信息 voidDelBook() { Book*head=NULL,*p=NULL,*q=NULL; charbookname[30]; head=read(); printf("输入要删除的书名: "); scanf("%s",bookname); p=head; while(p! =NULL)/*按名字查找要删除的图书*/ { if(strcmp(p->name,bookname)==0) { if(p==head) { head=head->next; break; } else { q->next=p->next; break; } } q=p; p=p->next; } save(head); } //管理员操作 voidmanager() { intn,i=0,k=1; while(k==1) { printf("********************************************************************************\n"); printf("请选择你需要的操作\n"); printf("◎1.建立新的书本信息\n"); printf("◎2.插入书本信息\n"); printf("◎3.删除书本信息\n"); printf("◎4.读取所有书本信息\n"); printf("◎5.读取指定书本信息\n"); printf("◎6.返回到上级目录\n"); printf("◎7.保存并退出\n"); printf("请输入: "); scanf("%d",&n); switch(n) { case1: creatlist();break; case2: AddBook();break; case3: DelBook();break; case4: head=read();system("CLS");print(head);break; case5: system("CLS");Bookconsult();break; case6: k=0;break; default: k=0;break; } } } //图书查询 voidBookconsult() { intn,m=1,sign=0; Book*p=NULL,*p1=NULL,*p0=NULL,*head=NULL; reader*p2=NULL; chara[30],b[20],c[20]; head=read(); while(m==1) { printf("请选择你查询书本的方式: 1.按书名2.按书的编号3.按书的作者4.退出查询\n"); printf("输入="); scanf("%d",&n); switch(n) { case1: printf("请输入书名: "); scanf("%s",a); p0=head; while(p0! =NULL) { if(strcmp(a,p0->name)==0) { printf("*******************************************************************************\n"); printf("书号: %s\n书名: %s\n出版社: %s\n出版日期: %s\n作者: %s\n书本页数(页): %d\n书本价格(元): %d\n剩余数量: %d\n",p0->num,p0->name,p0->concern,p0->date,p0->author,p0->page,p0->price,p0->imformation); printf("借阅图书的人: "); if(p0->a->next2==NULL)printf("------------暂无借阅人! \n"); else { for(p2=p0->a;(p2=p2->next2)! =NULL;) {printf("%s",p2->name);} } printf("\n"); sign=1; p0=p0->next; } elsep0=p0->next; } if(sign==0)printf("没有这本书的信息.\n"); break; case2: printf("请输入书的编号: "); scanf("%s",b); p0=head; while(p0! =NULL) { if(strcmp(b,p0->num)==0) { printf("*******************************************************************************\n"); printf("书号: %s\n书名: %s\n出版社: %s\n出版日期: %s\n作者: %s\n书本页数(页): %d\n书本价格(元): %d\n剩余数量: %d\n",p0->num,p0->name,p0->concern,p0->date,p0->author,p0->page,p0->price,p0->imformation); printf("借阅图书的人: "); if(p0->a->next2==NULL)printf("------------暂无借阅人! \n"); else { for(p2=p0->a;(p2=p2->next2)! =NULL;) {printf("%s",p2->name);} } printf("\n"); break; } elsep0=p0->next; } if(p0==NULL)printf("没有这本书的信息.\n"); break; case3: printf("请输入书的作者: "); scanf("%s",c); p0=head; while(p0! =NULL) { if(strcmp(c,p0->author)==0) { printf ("*******************************************************************************\n"); printf("书号: %s\n书名: %s\n出版社: %s\n出版日期: %s\n作者: %s\n书本页数(页): %d\n书本价格(元)%d\n剩余数量: %d\n",p0->num,p0->name,p0->concern,p0->date,p0->author,p0->page,p0->price,p0->imformation); printf("借阅图书的人: "); if(p0->a->next2==NULL)printf("------------暂无借阅人! \n"); else { for(p2=p0->a;(p2=p2->next2)! =NULL;) {printf("%s",p2->name);} } printf("\n"); sign=1; p0=p0->next; } elsep0=p0->next; } if(sign==0)printf("没有这本书的信息.\n"); break; default: m=0;break; } } } //借书信息 voidimformation() { printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("※欢迎你使用我们的图书管理系统! 以下是本系统的有关说明: ※\n"); printf("※本系统主要功能是进行图书的有关管理,你可以进行图书信息的创建、插入、删除、※\n"); printf("※查询;在操作中主要是以阿拉伯数字来选择相应的菜单功能,在选择时以'y'表示'是'※\n"); printf("※以'n'表示'不是'。 在你操作的时候就会有相应的操作提示。 ※\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); } voidmain() { intn,k=1; printf("********************************************************************************\n"); printf("\n\n"); printf("欢迎进入我们的图书管理系统! \n"); printf("\n\n"); printf("********************************************************************************\n"); while(k==1) { printf("请选择你的操作: 1.管理员操作2.系统信息3.退出系统\n"); printf("********************************************************************************\n"); printf("你的选择是: "); scanf("%d",&n); system("CLS"); switch(n) { case1: manager();break; case2: imformation();break; default: printf("+++++++++++++++++++++++++++欢迎你再次使用我们的系统! ++++++++++++++++++++++++++++\n");k=0;break; } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 部分 课程设计