当前位置:新励学网 > 秒知问答 > 求图书馆管理系统c源代码

求图书馆管理系统c源代码

发表时间:2024-07-08 11:01:16 来源:网友投稿

#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;

}

免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。

如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!