求图书馆管理系统c源代码
#include
#include
#include
#include
#include
#defineSTACK_INIT_SIZE10
#defineOK1
#defineTRUE1
#defineFALSE0
#defineERROR0
structstudent/*定义学生类型,用于存放借出的书籍*/
{
intstudentnum,phonenum;
charlendbook[10];
}student[1000];
structbook/*定义书的类型*/
{
charbookname[11];
charpublisher[20];
charpage;
charyear[6];
charstatus[4];
charname[11];
charauthor[51];
charbooknum;
charbookcreat[10];
charborrownum;
charturefalse;/*用于借书和还书模块判断一本书是否借出的条件*/
}book[1000];
structcar/*借书卡的数据类型*/
{
intcarnum;
charstudentname[10];
intstudentclass;
intstudentphone;
}car[100];
addcar()
{
FILE*fp;
inti=0;
doubleallnum,stillbook,outbook,allmoney,avemoney;
fp=fopen(car.txt,a+);
printf(请你输入学生姓名\n);
scanf(%s,car[i].studentname);
printf(请你输入班级\n);
scanf(%d,&car[i].studentclass);
fwrite(&car[i],sizeof(structcar),1,fp);
fclose(fp);
printf(注册完毕,任意键返回\n);
fp=fopen(book.txt,r);
avemoney=allmoney/allnum;
fclose(fp);
printf(书籍总数:%ld,已借出的书籍:%ld,在馆的书籍:%ld,书籍贯总金额:%ld,书籍平均价格:%ld,
stillbook,outbook,allmoney,avemoney);
getch();
}
carcount()
{
FILE*fp;
inti,n=0;
fp=fopen(car.txt,r);
for(i=0;fread(&car[i],sizeof(structcar),1,fp)!=0;i++)
{
printf(第%d张卡\n,
i+1,car[i].carnum,car[i].studentname,car[i].studentclass,car[i].studentphone);
n=n+1;
}
fclose(fp);
printf(目前共有%d本书\n,n);
printf(按任意键\n);
getch();
}
voidfindbook()
{
FILE*fp;
charbookname[10];
intture,i,booknum;
fp=fopen(book.txt,r);
printf(请输入你要查找的booknum);
scanf(%d,&booknum);
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!=0;i++)
{
if(strcmp(booknum,book[i].booknum)==0)
{
if(book[i].turefalse==1)
printf(这本书的详细资料是:%d%s%s此书现在无人借阅\n按任意键返回\n,book[i].booknum,book[i].bookname,book[i].bookcreat);
else{printf(这本书已经有人借出\n);fclose(fp);return0;}
fclose(fp);
returnFALSE;
}
else
printf(没有你要查询的书籍\n);
fclose(fp);}
returnFALSE;
}
voidborrowbook(structbook*m)//借阅图书函数
{
intnum;
structbook*b,*b1;
printf(输入要借书的编码:);
scanf(%d,&num);
b=searchbook(num);/*调用查找图书结点函数*/
if(b!=NULL)
{
if(m->borrownum<10)
{
//b->status='0';
//b1=&m->book[m->borrownum];
strcpy(b1->name,b->name);
strcpy(b1->author,b->author);
b1->booknum=b->booknum;
strcpy(b1->year,b->year);
b1->page=b->page;
strcpy(b1->publisher,b->publisher);
//b1->price=b->price;
//b1->status=b->status;
m->borrownum++;
printf(%s借书成功!,b->name);
getch();
}
else
{
printf(你已借满10本书.);
getch();
}
}
else
{
printf(没有你要借的书.);
getch();
}
}
huanbook()/*还书函数*/
{
FILE*fp,*fp2;/*定义两个文件指针,fp2用于修改数据时设立临时文件用,防止数据遭破坏*/
inti,n;
intcarnum,booknum;
charlendbook[10];
printf(请你输入你的卡号\n);
scanf(%d,&carnum);
fp=fopen(car.txt,r);/*读取卡号记录*/
{
if(car[i].carnum==carnum)/*卡号存在,进入下一循环*/
{
n=i;
fclose(fp);
printf(请输入你要还的书的booknum\n);
scanf(%d,&booknum);
fp=fopen(record.txt,r);
for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!=0;i++)/*判断是否借阅了输入的书*/
{
if(strcmp(student[i].lendbook,lendbook)==0)/*借阅了该书,进入下一循环,否则出错显示*/
{
fclose(fp);
fp=fopen(record.txt,r);
fp2=fopen(bookl.txt,w);
for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!=0;i++)
{
if(strcmp(student[i].lendbook,lendbook)==0)
{
continue;/*删除还掉的书的借书记录*/
}
fwrite(&student[i],sizeof(structstudent),1,fp2);/*写入原来没还的书的记录*/
}
fclose(fp);
fclose(fp2);
fp=fopen(record.txt,w);
fp2=fopen(bookl.txt,r);
for(i=0;fread(&student[i],sizeof(structstudent),1,fp2)!=0;i++)
{
fwrite(&student[i],sizeof(structstudent),1,fp);/*将借书记录信息写回*/
}
fclose(fp);
fclose(fp2);
fopen(bookl.txt,w);/*清临时文件的记录*/
fclose(fp2);
fp=fopen(book.txt,r);
fp2=fopen(bookl.txt,w);
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!=0;i++)/*将书的记录写入临时文件,防止因为修改信息破坏以前的记录*/
{
if(i==n)
{
book[i].turefalse=1;
fwrite(&book[i],sizeof(structbook),1,fp2);/*将还的书的原来状态设为无人借阅的*/
continue;
}
fwrite(&book[i],sizeof(structbook),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen(book.txt,w);
fp2=fopen(bookl.txt,r);
for(i=0;fread(&book[i],sizeof(structbook),1,fp2)!=0;i++)
{
fwrite(&book[i],sizeof(structbook),1,fp);/*将临时文件写回*/
}
fclose(fp);
fclose(fp2);
fopen(bookl.txt,w);/*清临时文件*/
fclose(fp2);
printf(还书完毕,按任意键返回\n);
getch();
return1;
}
else
printf(你没有借这样的书,任意键返回\n);}/*出错提示*/
fclose(fp);
getch();
return0;
}
else
printf(系统没这样的卡,和管理员联系,按任意键返回\n);}/*出错提示*/
fclose(fp);
getch();
}
voidmain()
{
structbook*m;
charch5;
do
{
printf(---------------欢迎进入图书查询系统!--------------\n);
printf(1:\n);
printf(2:\n);
printf(3:\n);
printf(4:\n);
printf(5:\n);
printf(0:\n);
printf(请输入0--5,其他输入非法!\n);
scanf(%s,&ch5);
switch(ch5)
{
case'1':addcar();getch();
case'2':carcount();getch();break;
case'3':findbook();getch();break;
case'4':borrowbook(m);getch();break;
case'5':huanbook();getch();break;
case'0':break;
default:printf(无此操作\n);getch();break;
}
}while(ch5!='0');
//returnFALSE;
}
免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。
如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!
新励学网教育平台
海量全面 · 详细解读 · 快捷可靠
累积科普文章数:18,862,126篇