用C++代码 编写一个图书管理系统

内容有浏览、添加、删除功能就可以,不用太复杂。大神快来,急求!!!!

/*
lib.txt的格式为
书的id categoryid\n
书的状态 借书人的id\n
书的名字\n
*/
#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;
}

新建一个lib.txt文件 将下面内容保存,放在同一目录下 作为数据库文件


1001 1

1 0

c primier

1003 1

1 0

c primier

1002 2

1 0

c++ primie

0 0

0 0

温馨提示:答案为网友推荐,仅供参考
相似回答