图书借还系统

本文介绍了一个使用C语言实现的简易图书借还系统。系统根据学生名单和库存图书信息进行管理,遵循特定的借阅限制,如每人最多借2本书,累计最多3本。系统包含读入信息、借书、还书和退出等功能,并详细讨论了数据储存、读入信息及借还书的逻辑实现。
摘要由CSDN通过智能技术生成

简易图书借还系统

实验题目006:图书借还系统
一、实验内容
已知学生名单保存在006_1.txt中,数据结构是:学号,姓名;库存图书信息保存在006_2.txt中,数据结构是:编号,书名,出版社,库存数量。
模拟图书馆的借阅图书业务,实现对图书借阅的管理。借阅有如下限制:
① 每人每次最多允许借2本,累计最多3本。
②一次可以还书多本。
③能够查询书库库存情况。
④能够查询某学生目前借阅了哪几本书。
要求:软件至少应具有“读入学生名单和书库信息”、“借书”、“还书”、“退出”4项菜单。

问题分析

数据储存

对于txt文档而言,需要使用文件读取,同时管理读者和图书信息,可以通过建立结构体来进行储存数据。对于用户而言,还需要记录所借书的编号和数量便于还书,以及查看借了哪些书和多少本书。
本身题目限制了一次最多借阅两本书,一个用户最多只能借阅三本书,故对于数量和编号的限制会多一些。这就更需要使用结构体的储存来进行操作了。
对于学生信息和图书信息的数据结构如下:

typedef struct stu
{
   
    char code[25];
    char name[25];
    int num[3],list[3];
}Stu;
Stu student[8]={
   0,0,0};//学生信息
typedef struct book
{
   
    int num;
    char list[6];
    char name[25],fm[20];
}Book;
Book rbook[5]={
   0,0,0,0};//书籍信息

读入信息并储存

对于上述结构体数组的空间大小是依据所给的txt文档确定的,所以具有局限性。但是对于本题而言,足够使用了。fscanf仅仅是读取一个字符串,依据循环变量i来寻找信息的对应并储存。代码如下:

//读取并储存学生信息和图书信息
int put(){
   
    FILE *fp;
    int i=0;
    fp=fopen("D:/006_12.txt","r");//读取学生信息文本
    for(i=0;i<18;++i){
   
        fscanf(fp,"%s",buff);
        if(i%2==0){
   
            strcpy(student[i/2].code,buff);//i为偶数时,读取的为学号
        }
        else if(i%2==1){
   
            strcpy(student[i/2].name,buff);//i为奇数时,读取的为姓名
        }
    }
    fclose(fp);

    fp=fopen("D:/006_22.txt","r");//读取图书信息
    for(i=0;i<20;++i){
   
        fscanf(fp,"%s",buff);
        if(i%4==0){
   
            strcpy(rbook[i/4].list,buff);//储存图书的编号
        }
        else if (i%4==1){
   
            strcpy(rbook[i/4].name,buff);//储存书名
        }
        else if (i%4==2){
   
            strcpy(rbook[i/4].fm,buff);//储存出版社
        }
        else if (i%4==3){
   
            rbook[i/4].num=buff[0]-'0';//储存馆内该图书数目
        }
    }
    fclose(fp);
    return 0;
}

借书和还书

对于借书,要在学生信息的结构体中储存该书的信息,由于本题限制了没人最多借三本书,因此声明的储存空间相对局限了些。借书的同时还要将图书馆内的对应图书数量减少。
还书和借书相反操作即可。

代码实现

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//全局变量,读取文件的缓冲区
char buff[127];
//学生信息数据结构和图书信息数据结构
typedef struct stu
{
   
    char code[
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值