zoukankan      html  css  js  c++  java
  • 图书馆管理系统

    /*模拟图书馆管理系统。每名读者只能借一本书,读者可借书或还书。管理员可对图书和读者信息进行录入、修改和删除。
    图书信息至少应包括:编号、书名、数量。
    读者信息至少应包括:编号、姓名、所借图书。
    可根据图书名称或编号进行图书信息查询,可查询某本书现在被哪些读者借走。*/

    /*创建两个txt文件,1、reader.txt   2、book.txt

    1 凌霄 0
    2 杨逗比 0
    3 脚大神 0
    4 胡笳 0

    1 平凡的世界 10
    2 瓦尔登湖 10
    3 曼德拉传 10

    */


    #include<stdio.h>
    #include<string.h>

    #define MAX 100

    struct reader
    {
    int number;
    char name[MAX];
    int bookborrowed;
    }
    READER;
    struct book
    {
    int num;
    char name[MAX];
    int amount;
    }
    BOOK;

    int contents(void);//查询书目
    int reader_search(void);//读者的查询
    int admin_search(void);//管理员的查询
    int enter_reader(void);//录入读者信息
    int enter_book(void);//录入书籍信息
    int conrrect_reader(void);//修改读者信息
    int conrrect_book(void);//修改书籍信息
    int delet_reader(void);//删除读者信息
    int delet_book(void);//删除书籍信息
    int swit(void);//管理员的选择
    int borrow(int readernum,int booknum);//借书的函数
    int bring(void);//还书的函数

    int main()
    {
    char readerenter;
    char pass[8],c;
    printf("管理员请输入password,读者请回车 ");
    gets(pass);
    if(strcmp(pass,"password") == 0)
    {
    //管理员的诸项操作
    swit();
    }
    else
    {
    //读者的诸项操作
    printf("回车查询书目,输入“B”还书,其他输入查询详细信息 ");
    readerenter = getchar();
    if(readerenter == ' ')
    {
    contents();
    }
    else if(readerenter == 'B')
    {
    bring();
    }
    else
    {
    reader_search();
    }
    }
    return 0;
    }

    int contents(void)//查询书目
    {
    char agree;
    char line[MAX];
    FILE *book;
    if((book = fopen("book.txt","r")) == NULL)
    printf("无书籍信息 ");
    else
    printf("编号 书名 数量 ");
    while(1)
    {
    fgets(line,MAX,book);
    if(feof(book))
    break;
    printf("%s",line);
    }
    fclose(book);
    printf("借阅请输入“Y” ");
    agree = getchar();
    if(agree == 'Y')
    reader_search();
    return 0;
    }

    int reader_search(void)//读者的查询
    {
    //输入编号或书名,查询书籍信息
    FILE *book;
    FILE *reader;
    int choose = 0,booknum,readernum,key = 0;
    char booknam[MAX],line[MAX],c;
    printf("请输入: 1.编号 2.书名 ");
    while(choose != 1 && choose != 2)
    scanf("%d",&choose);
    book = fopen("book.txt","r");
    reader = fopen("reader.txt","r");
    if(choose == 1)
    {
    printf("请输入书籍编号 ");
    scanf("%d",&booknum);
    while(!feof(book))
    {
    fscanf(book,"%d%20s%10d ",&BOOK.num,&BOOK.name,&BOOK.amount);
    if(booknum == BOOK.num )
    {
    printf("编号 书名 数量 ");
    printf("%d%20s%10d ",BOOK.num,BOOK.name,BOOK.amount);
    key = 1;
    break;
    }
    }
    }
    if(choose == 2)
    {
    printf("请输入书名 ");
    scanf("%s",booknam);
    while(!feof(book))
    {
    fscanf(book,"%d%20s%10d ",&BOOK.num,&BOOK.name,&BOOK.amount);
    if(strcmp(booknam,BOOK.name) == 0)
    {
    printf("编号 书名 数量 ");
    printf("%d%20s%10d ",BOOK.num,BOOK.name,BOOK.amount);
    booknum = BOOK.num;
    key = 1;
    break;
    }
    }
    }
    if(key == 0)
    {
    printf("查无此书,请重新查询 ");
    reader_search();
    }
    else
    {
    printf("查询完毕,输入“Y”重新查询,回车借阅 ");
    getchar();
    scanf("%c",&c);
    if(c == 'Y')
    reader_search();
    else
    {
    printf("请输入你的读者编号 ");
    scanf("%d",&readernum);
    while(READER.number == readernum)
    {
    fscanf(reader,"%d%20s%d ",&READER.number,&READER.name,&READER.bookborrowed);
    }
    if(READER.bookborrowed != 0)
    {
    printf("请先还书 ");
    return 1;
    }
    else
    {
    printf("编号 姓名 借阅 ");
    printf("%d%20s%10d ",READER.number,READER.name,BOOK.num);
    }
    }
    fclose(reader);
    fclose(book);
    borrow(readernum,booknum);
    }
    return 0;
    }

    int admin_search(void)//管理员的查询
    {
    //输入编号,查询书籍信息和借阅情况
    FILE *book;
    FILE *reader;
    int choose = 0,booknum,readernum,key = 0;
    char booknam[MAX],line[MAX],c;
    printf("请输入: 1.编号 2.书名 ");
    while(choose != 1 && choose != 2)
    scanf("%d",&choose);
    book = fopen("book.txt","r");
    reader = fopen("reader.txt","r");
    if(choose == 1)
    {
    printf("请输入书籍编号 ");
    scanf("%d",&booknum);
    while(!feof(book))
    {
    fscanf(book,"%d%20s%10d ",&BOOK.num,&BOOK.name,&BOOK.amount);
    if(booknum == BOOK.num )
    {
    printf("编号 书名 数量 ");
    printf("%d%20s%10d ",BOOK.num,BOOK.name,BOOK.amount);
    key = 1;
    break;
    }
    }
    }
    if(choose == 2)
    {
    printf("请输入书名 ");
    scanf("%s",booknam);
    while(!feof(book))
    {
    fscanf(book,"%d%20s%10d ",&BOOK.num,&BOOK.name,&BOOK.amount);
    if(strcmp(booknam,BOOK.name) == 0)
    {
    printf("编号 书名 数量 ");
    printf("%d%20s%10d ",BOOK.num,BOOK.name,BOOK.amount);
    booknum = BOOK.num;
    key = 1;
    break;
    }
    }
    }
    if(key == 0)
    {
    printf("查无此书,请重新查询 ");
    admin_search();
    }
    else
    {
    printf("这些人借了这本书 ");
    while(!feof(reader))
    {
    fscanf(reader,"%d%20s%d ",&READER.number,&READER.name,&READER.bookborrowed);
    if(READER.bookborrowed == booknum)
    {
    printf("%d%20s%10d ",READER.number,READER.name,BOOK.num);
    }
    }
    }
    swit();
    return 0;
    }

    int enter_reader(void)//录入读者信息
    {
    FILE *reader;
    char agree,temp[MAX];
    int num;
    reader = fopen("reader.txt","r+");
    printf("请输入新增的读者信息(姓名 所借图书编号) ");
    scanf("%s %d",&READER.name,&READER.bookborrowed);
    while(!feof(reader))
    fscanf(reader,"%d%20s%d ",&READER.number,temp,num);
    fprintf(reader,"%d%20s%10d ",READER.number+1,READER.name,READER.bookborrowed);
    printf("回到选择操作面板请输入“Y” ");
    getchar();
    agree = getchar();
    if(agree == 89)
    swit();
    fclose(reader);
    return 0;
    }

    int enter_book(void)//录入书籍信息
    {
    FILE *book;
    char agree,temp[MAX];
    int num;
    book = fopen("book.txt","r+");
    printf("请输入新增的书籍信息(书名 数目) ");
    scanf("%s %d",&BOOK.name,&BOOK.amount);
    while(!feof(book))
    fscanf(book,"%d%20s%d ",&BOOK.num,temp,&num);
    fprintf(book,"%d%20s%10d ",BOOK.num+1,BOOK.name,BOOK.amount);
    printf("回到选择操作面板请输入“Y” ");
    getchar();
    agree = getchar();
    if(agree == 89)
    swit();
    fclose(book);
    return 0;
    }

    int conrrect_reader(void)//修改读者信息
    {
    int readernum,bookborrowed;
    char readername[MAX];
    FILE *reader = fopen("reader.txt","r");
    FILE *rereader = fopen("rereader.txt","w");
    printf("请输入要修改的读者的编号 ");
    scanf("%d",&readernum);
    printf("请输入该读者新的信息(姓名 所借图书的编号) ");
    scanf("%s %d",&readername,&bookborrowed);
    while(!feof(reader))
    {
    fscanf(reader,"%d%20s%10d ",&READER.number,&READER.name,&READER.bookborrowed);
    if(readernum != READER.number)
    fprintf(rereader,"%d%20s%10d ",READER.number,READER.name,READER.bookborrowed);
    else
    fprintf(rereader,"%d%20s%10d ",READER.number,readername,bookborrowed);
    }
    printf("操作成功! ");
    fclose(reader);
    fclose(rereader);
    remove("reader.txt");
    rename("rereader.txt","reader.txt");
    return 0;
    }

    int conrrect_book(void)//修改书籍信息
    {
    int booknum,bookamount;
    char bookname[MAX];
    FILE *book = fopen("book.txt","r");
    FILE *rebook = fopen("rebook.txt","w");
    printf("请输入要修改的书籍的编号 ");
    scanf("%d",&booknum);
    printf("请输入该书籍新的信息(书名 数量) ");
    scanf("%s %d",&bookname,&bookamount);
    while(!feof(book))
    {
    fscanf(book,"%d%20s%10d ",&BOOK.num,&BOOK.name,&BOOK.amount);
    if(booknum != READER.number)
    fprintf(rebook,"%d%20s%10d ",BOOK.num,BOOK.name,BOOK.amount);
    else
    fprintf(rebook,"%d%20s%10d ",BOOK.num,bookname,bookamount);
    }
    printf("操作成功! ");
    fclose(book);
    fclose(rebook);
    remove("book.txt");
    rename("rebook.txt","book.txt");
    return 0;
    }

    int delet_reader(void)//删除读者信息
    {
    int readernum;
    FILE *reader = fopen("reader.txt","r");
    FILE *rereader = fopen("rereader.txt","w");
    printf("请输入要删除的读者的编号 ");
    scanf("%d",&readernum);
    while(!feof(reader))
    {
    fscanf(reader,"%d%20s%10d ",&READER.number,&READER.name,&READER.bookborrowed);
    if(readernum != READER.number)
    fprintf(rereader,"%d%20s%10d ",READER.number,READER.name,READER.bookborrowed);
    else
    ;
    }
    printf("操作成功! ");
    fclose(reader);
    fclose(rereader);
    remove("reader.txt");
    rename("rereader.txt","reader.txt");
    return 0;
    }

    int delet_book(void)//删除书籍信息
    {
    int booknum;
    FILE *book = fopen("book.txt","r");
    FILE *rebook = fopen("rebook.txt","w");
    printf("请输入要删除的书籍的编号 ");
    scanf("%d",&booknum);
    while(!feof(book))
    {
    fscanf(book,"%d%20s%10d ",&BOOK.num,&BOOK.name,&BOOK.amount);
    if(booknum != BOOK.num)
    fprintf(rebook,"%d%20s%10d ",BOOK.num,BOOK.name,BOOK.amount);
    else
    ;
    }
    printf("操作成功! ");
    fclose(book);
    fclose(rebook);
    remove("book.txt");
    rename("rebook.txt","book.txt");
    return 0;
    }

    int swit(void){
    int handle = 0;
    printf("请输入您要进行的操作的编号: 1.查询书籍信息 2.录入读者信息 3.录入书籍信息 4.修改读者信息 5.修改书籍信息 6.删除读者信息 7.删除书籍信息 8.退出 ");
    scanf("%d",&handle);
    getchar();
    switch(handle)
    {
    case 1:admin_search();
    break;
    case 2:enter_reader();
    break;
    case 3:enter_book();
    break;
    case 4:conrrect_reader();
    break;
    case 5:conrrect_book();
    break;
    case 6:delet_reader();
    break;
    case 7:delet_book();
    break;
    case 8:
    return 0;
    default:printf("输入错误,请重新输入: ");
    swit();
    break;
    };
    return 0;
    }

    int borrow(int readernum,int booknum)
    {
    int flag = 1;
    FILE *reader = fopen("reader.txt","r");
    FILE *rereader = fopen("rereader.txt","w");
    FILE *book = fopen("book.txt","r");
    FILE *rebook = fopen("rebook.txt","w");
    while(!feof(book))
    {
    fscanf(book,"%d%20s%10d ",&BOOK.num,&BOOK.name,&BOOK.amount);
    if(booknum != BOOK.num)
    fprintf(rebook,"%d%20s%10d ",BOOK.num,BOOK.name,BOOK.amount);
    else if(BOOK.amount == 0)
    {
    printf("书已被借光 ");
    flag = 0;
    fprintf(rebook,"%d%20s%10d ",BOOK.num,BOOK.name,BOOK.amount);
    }
    else
    fprintf(rebook,"%d%20s%10d ",BOOK.num,BOOK.name,BOOK.amount-1);
    }
    while(!feof(reader))
    {
    fscanf(reader,"%d%20s%10d ",&READER.number,&READER.name,&READER.bookborrowed);
    if(readernum != READER.number)
    fprintf(rereader,"%d%20s%10d ",READER.number,READER.name,READER.bookborrowed);
    else if(!flag)
    fprintf(rereader,"%d%20s%10d ",READER.number,READER.name,READER.bookborrowed);
    else
    fprintf(rereader,"%d%20s%10d ",READER.number,READER.name,booknum);

    }
    if(flag)
    printf("借阅成功! ");
    fclose(reader);
    fclose(rereader);
    remove("reader.txt");
    rename("rereader.txt","reader.txt");
    fclose(book);
    fclose(rebook);
    remove("book.txt");
    rename("rebook.txt","book.txt");
    }

    int bring(void)
    {
    int readernum,booknum,flag = 1;
    printf("请输入你的读者编号 ");
    scanf("%d",&readernum);
    FILE *reader = fopen("reader.txt","r");
    FILE *rereader = fopen("rereader.txt","w");
    FILE *book = fopen("book.txt","r");
    FILE *rebook = fopen("rebook.txt","w");
    while(!feof(reader))
    {
    fscanf(reader,"%d%20s%10d ",&READER.number,&READER.name,&READER.bookborrowed);
    if(readernum != READER.number)
    fprintf(rereader,"%d%20s%10d ",READER.number,READER.name,READER.bookborrowed);
    else if(READER.bookborrowed == 0)
    {
    printf("您不需要还书 ");
    fprintf(rereader,"%d%20s%10d ",READER.number,READER.name,READER.bookborrowed);
    flag = 0;
    }
    else
    {
    fprintf(rereader,"%d%20s%10d ",READER.number,READER.name,0);
    booknum = READER.bookborrowed;
    }
    }
    while(!feof(book))
    {
    fscanf(book,"%d%20s%10d ",&BOOK.num,&BOOK.name,&BOOK.amount);
    if(booknum != BOOK.num)
    fprintf(rebook,"%d%20s%10d ",BOOK.num,BOOK.name,BOOK.amount);
    else if(!flag)
    fprintf(rebook,"%d%20s%10d ",BOOK.num,BOOK.name,BOOK.amount);
    else
    fprintf(rebook,"%d%20s%10d ",BOOK.num,BOOK.name,BOOK.amount+1);
    }
    if(flag)
    printf("还书成功! ");
    fclose(reader);
    fclose(rereader);
    remove("reader.txt");
    rename("rereader.txt","reader.txt");
    fclose(book);
    fclose(rebook);
    remove("book.txt");
    rename("rebook.txt","book.txt");
    }

  • 相关阅读:
    浅谈 js字符串 trim 方法之正则篇
    各大型网站使用的服务器空间运行环境盘点
    博客打开慢?请禁用WordPress默认的谷歌字体!
    巧妙设计:让页面活起来
    最流行的JavaScript库jQuery不再支持旧版IE
    Spring各个版本源码下载地址
    mysql 修改字符集
    Spring AOP aspectjweaver.jar与aopalliance-1.0.jar 下载地址
    <<Java | Java正则表达式 | 学习总结>>
    <Java并发编程实战 | 前言 | 学习总结>
  • 原文地址:https://www.cnblogs.com/yayizi/p/4509443.html
Copyright © 2011-2022 走看看