用c语言写图书馆管理系统

1、现图书馆有5本书可借,每本有3份;2将每本书信息输出,(书名,编号,剩余图书)3借书4还书5借还都要输入学号和书的编号(求不要用链表啊~~~)... 1、现图书馆有5本书可借,每本有3份;

2将每本书信息输出,(书名,编号,剩余图书)
3借书
4还书
5借还都要输入学号和书的编号
(求不要用链表啊~~~)
展开
 我来答
百度网友53aaec5
2015-05-04 · 超过63用户采纳过TA的回答
知道小有建树答主
回答量:80
采纳率:100%
帮助的人:87.2万
展开全部
你不觉得给的悬赏少了点么
新建一个下面的文件 讲这个文件和下面的代码放在一个目录下 表示你的图书数据库信息
lib.txt

1001 1
1 0
c primier
1003 1
1 0
c primier
1002 2
1 0
c++ primier

代码

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>//定义bool类型
#include<string.h>
typedef struct book book;
struct book{
int bid;//书的id
int cid;//category id 所属的书的类别id
char bname[30];
int state;//书的state 0 已借出 1代表还未借出
int stdid;//借书人id 如果未借出 则此项为0
};
//booklist
book lib[100];
int len=0;
//书的类别五类
int category[5]={0};
void init_lib()//讲lib.txt存储的图书馆信息读入内存
{
FILE *fin=fopen("lib.txt","r");
if(!fin)
{
printf("openfile error!\n");
exit(1);
}
len=0;
while(!feof(fin))
{
fscanf(fin,"%d %d",&lib[len].bid,&lib[len].cid);
fscanf(fin,"%d %d",&lib[len].state,&lib[len].stdid);
fgetc(fin);
fgets(lib[len].bname,28,fin);
lib[len].bname[strlen(lib[len].bname)-1]='\0';//去除\n
category[lib[len].cid]++;
len++;
}
fclose(fin);

}
void libprint()//输出图书信息
{
int i;
for(i=0;i<len;i++)
{
printf("书名:%s\n编号:%d \n书目前的所属人(0代表图书馆):%d \n同类别图书共有:%d\n",lib[i].bname,lib[i].bid,lib[i].stdid,category[lib[i].cid]);
printf("-------------------------------------------------------------------------\n");
//printf("%d %d\n%d %d\n%s",lib[i].bid,lib[i].cid,lib[i].state,lib[i].stdid,lib[i].bname);
}
}
bool borrowbook(int bookid,int stdid)//借书
{
int i;
for(i=0;i<len;i++)
{
if(bookid==lib[i].bid&&lib[i].state==1)
{
lib[i].state=0;
category[lib[i].cid]--;
lib[i].stdid=stdid;
return 1;
}else
return 0;
}
return 0;
}
bool returnbook(int bookid,int stdid)//还书
{
int i=0;
for(i=0;i<len;i++)
{
if(bookid==lib[i].bid&&lib[i].state==0&&lib[i].stdid==stdid)
{
lib[i].state=1;
lib[i].stdid=0;
category[lib[i].cid]++;
return 1;
}
}
return 0;
}
void savelib()//将内存的数据写入lib.txt存储起来
{
FILE *fout=fopen("lib.txt","w");
if(!fout)
{
printf("写入失败!\n");
exit(0);
}

int i;
for(i=0;i<len;i++)
{
fprintf(fout,"%d %d\n%d %d\n%s\n",lib[i].bid,lib[i].cid,lib[i].state,lib[i].stdid,lib[i].bname);
}
fclose(fout);
printf("成功写入数据库文件!\n");

}
int main(void)
{
int choice,stdid,bookid;

init_lib();//数据读入内存

while(1)
{
choice=0;
printf("图书馆管理系统\n");
printf("---------------\n");
printf("1-将每本书信息输出\n");
printf("2-借书 \n");
printf("3-还书 \n");
printf("4-save \n");
printf("5-exit without save\n");
printf("---------------------------\n");
scanf("%d",&choice);
printf("---------------------------\n");
if(choice<1||choice>5)
{
printf("检查你的输入!(1,2,3,4,5)\n");
continue;
}
if(choice==1)
libprint();
if(choice==2)
{
printf("输入你要借的书的id和你的studentid(以空格分隔):\n");
scanf("%d %d",&bookid,&stdid);
if(borrowbook(bookid,stdid))
printf("成功借出!\n");
else
printf("借出错误\n");
}
if(choice==3)
{
printf("输入你要还的书的id和你的studentid(以空格分隔):\n");
scanf("%d %d",&bookid,&stdid);
if(returnbook(bookid,stdid))
printf("成功还书\n");
else
printf("还书错误\n");
}
if(choice==4)
{
savelib();
}
if(choice==5)
exit(0);

}
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式