图书管理部分课程设计Word格式.docx
《图书管理部分课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《图书管理部分课程设计Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
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);
a->
next2=NULL;
next=NULL;
请输入书的信息:
\n"
for(i=1;
i<
=n;
i++)
p1=(Book*)malloc(LEN);
printf("
书号:
"
scanf("
%s"
p1->
num);
书名:
name);
出版社:
concern);
出版日期:
date);
作者:
author);
书本页数:
p1->
page);
书本价格(元):
price);
p1->
imformation=10;
p2->
next=p1;
p2=p1;
if(i<
n)printf("
下一本:
}
head=sort(head);
save(head);
print(head);
//打印书本信息
voidprint(Book*head)
Book*p=NULL;
reader*p0=NULL;
p=head->
next;
*******************************************************************************\n"
while(p!
=NULL)
%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);
借阅图书的人:
"
if(p->
next2==NULL)printf("
------------暂无借阅人!
else
for(p0=p->
next2;
p0!
=NULL;
p0=p0->
next2)
{
%s"
p0->
}
p=p->
/*p后移一个结点*/
Book*sort(Book*head)
Book*p1=NULL,*p2=NULL,*p3=NULL,*min=NULL,*min2=NULL,*head2=head->
p1=head2;
while(p1->
next!
=NULL)
min=p2=p1;
/*把首结点作为最小值*/
while(p2->
if(strcmp(min->
num,p2->
next->
num)>
0)/*首结点与下一结点比较*/
min2=p2;
min=p2->
p2=p2->
if(min!
=p1)
min2->
next=min->
/*删除最小结点*/
min->
/*插入最小结点*/
if(p1==head2)head2=min;
elsep3->
next=min;
/*p3为min前的结点指针*/
p3=min;
else
p3=p1;
p1=p1->
head->
next=head2;
return(head);
voidsave(Book*head)
FILE*fp,*fp2;
reader*q=NULL;
fp=fopen("
书本信息.txt"
"
wb"
//printf("
不能打开文件!
fp2=fopen("
借阅信息.txt"
p=head;
fwrite(p,LEN,1,fp);
/*逐个结点写文件*/
for(q=p->
a;
q!
q=q->
{fwrite(q,LEN3,1,fp2);
fclose(fp);
fclose(fp2);
voidAddBook()
FILE*fp,*fp2;
Book*addbook=NULL;
reader*p0=NULL;
fp=fopen("
ab"
//追加方式打开文件
fp2=fopen("
addbook=(Book*)malloc(LEN);
输入书本信息:
addbook->
addbook->
p0=(reader*)malloc(LEN3);
p0->
addbook->
a=p0;
fwrite(addbook,LEN,1,fp);
/*块写*/
fwrite(p0,LEN3,1,fp2);
fclose(fp);
fclose(fp2);
Book*read()
Book*p=NULL,*p1=NULL,*head=NULL;
reader*p0=NULL,*p2=NULL;
if((fp=fopen("
rb"
))==NULL)printf("
不能打开文件或文件不存在!
if((fp2=fopen("
head=(Book*)malloc(LEN);
fread(head,LEN,1,fp);
p1=head;
p0=(reader*)malloc(LEN3);
fread(p0,LEN3,1,fp2);
p0->
p=(Book*)malloc(LEN);
while(fread(p,LEN,1,fp))/*逐个结点读取*/
next=p;
while(fread(p0,LEN3,1,fp2))
{
if(p0->
next2==NULL)
p2=p0;
break;
next2=p0;
free(p0);
p=(Book*)malloc(LEN);
free(p);
if(head!
=NULL)return(head);
else
文件为空!
return0;
voidDelBook()
Book*head=NULL,*p=NULL,*q=NULL;
charbookname[30];
head=read();
输入要删除的书名:
bookname);
p=head;
while(p!
=NULL)/*按名字查找要删除的图书*/
if(strcmp(p->
name,bookname)==0)
if(p==head)
head=head->
q->
next=p->
q=p;
p=p->
save(head);
voidmanager()
intn,i=0,k=1;
while(k==1)
********************************************************************************\n"
请选择你需要的操作\n"
◎1.建立新的书本信息\n"
◎2.插入书本信息\n"
◎3.删除书本信息\n"
◎4.读取所有书本信息\n"
◎5.读取指定书本信息\n"
◎6.返回到上级目录\n"
◎7.保存并退出\n"
请输入:
switch(n)
case1:
creatlist();
break;
case2:
AddBook();
case3:
DelBook();
case4:
system("
CLS"
case5:
system("
Bookconsult();
case6:
k=0;
default:
//图书查询
voidBookconsult()
intn,m=1,sign=0;
Book*p=NULL,*p1=NULL,*p0=NULL,*head=NULL;
reader*p2=NULL;
chara[30],b[20],c[20];
while(m==1)
请选择你查询书本的方式:
1.按书名2.按书的编号3.按书的作者4.退出查询\n"
输入="
switch(n)
请输入书名:
a);
p0=head;
while(p0!
if(strcmp(a,p0->
name)==0)
num,p0->
name,p0->
concern,p0->
date,p0->
author,p0->
page,p0->
price,p0->
for(p2=p0->
(p2=p2->
next2)!
)
{printf("
p2->
sign=1;
p0=p0->
elsep0=p0->
if(sign==0)printf("
没有这本书的信息.\n"
请输入书的编号:
b);
if(strcmp(b,p0->
num)==0)
if(p0==NULL)printf("
请输入书的作者:
c);
if(strcmp(c,p0->
author)==0)
printf
("
%d\n书本价格(元)%d\n剩余数量:
m=0;
//借书信息
voidimformation()
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"
※欢迎你使用我们的图书管理系统!
以下是本系统的有关说明:
※\n"
※本系统主要功能是进行图书的有关管理,你可以进行图书信息的创建、插入、删除、※\n"
※查询;
在操作中主要是以阿拉伯数字来选择相应的菜单功能,在选择时以'
y'
表示'
是'
※以'
n'
表示'
不是'
。
在你操作的时候就会有相应的操作提示。
voidmain()
intn,k=1;
\n\n"
欢迎进入我们的图书管理系统!
\n"
请选择你的操作:
1.管理员操作2.系统信息3.退出系统\n"
你的选择是:
manager();
imformation();
+++++++++++++++++++++++++++欢迎你再次使用我们的系统!
++++++++++++++++++++++++++++\n"
k=0;