C语言图书借阅系统

今天给大家带来的是C语言图书借阅系统,该系统以模块设计思想为指导,面向图书管理员、学生人群并提供图书借阅服务;系统代码简单易理解,很适合初学链表的小伙伴!


本系统分为两个用户角色进行操作
管理员

  • 查看已存图书

  • 注册新图书

  • 修改图书信息

  • 注销现存图书

学生

  • 借阅图书

  • 归还图书

  • 查看馆藏图书


系统存储结构
以下是存储图书信息的结构体声明

typedef struct book{
    char *name;  //图书名称
    int id;  //图书编号
    int count;  //图书库存
    int status;  //借阅状态 (可借/不可借)
    struct book *next; //指针域
}Book;

添加图书函数 addbook

添加图书时,输入的图书编号(整型)不可重复且小于1000,图书数量小于50本

int addbook(){
    system(CLEAR);      ///
    char sname[MAXNAME];
    int id, count;
    char *namep;

    while(1){
        id = 0;
        count = 0;
        namep = NULL;
        printf("请输入图书名:\n");
        scanf("%s", sname);
        getchar();
        printf("请输入小于1000的图书编号:\n");
        scanf("%d", &id);
        getchar();
        int flag =  judgeIsExsit(id);
        if(flag == 1 || flag == 2){
        	continue;
		}
        printf("请输入小于50的图书数量:\n");
        scanf("%d", &count);
        getchar();
        if(!(count > 0 && count < 50)){
            error("输入数目不符合要求");
            fflush(stdin);
            continue;
        }
        Book *bp;        
        if((bp = lookup(namep = strdup(sname), id)) == NULL){
            bp = (Book *)malloc(sizeof (Book));
            if(bp == NULL || (bp->name = namep) == NULL){
                error("注册图书失败");
                fflush(stdin);
                continue;
            }
            bp->id = id;
            bp->count = count;
            bp->status = AVAILABLE;
            ++nbook;
            
            bp->next = head;
            head = bp;
            printf("图书 %s 注册成功\n", sname);
            return id;
        }else{
            fflush(stdin);
            error("图书名或编号已经被占用");
        }
    }

    return -1;
}

借书函数borrowbook

借书时,需要输入需要该书的编号,如果该书状态为可借,即可操作

int borrowbook(){
    system(CLEAR);
    char sname[MAXNAME];
    printf("输入编码搜索图书:\n");
    int id;
    scanf("%d",&id);
 fflush(stdin);
    Book *bp = head;
    while(bp){
     if(bp->id == id){
      printbook(bp);
         if(! bp->status){
             printf("借阅图书:Y N\n");
         }else{
             printf("图书外借中\n");
             return 0;
         }
         while(1){
             char c = '\0';
             scanf("%c", &c);
             getchar();
             if(!(c == 'Y' || c == 'y' || c == 'N' || c == 'n')){
                 fflush(stdin);
                 error("指令无效");
                 continue;
             }
             if(c == 'Y' || c == 'y'){
                 --bp->count > -1 ? printf("成功\n") : printf("失败\n");
                 if(! bp->count){
                     bp->status = UNAVAILABLE;
                 }
                 return bp->id;
             }else{
                 return 0;
             }
         }
         return 1;
  }
  bp = bp->next;
 }
 if(bp == NULL){
  printf("图书不存在");
        fflush(stdin);
        return -1;
 } 
 return -1;
}

还书函数 returnbook

int returnbook(){
    system(CLEAR);
    char sname[MAXNAME];
    printf("归还图书,请输入编码:\n");
    int id;
    scanf("%d",&id);
 fflush(stdin);
    Book *bp = head;
    while(bp){
  if(bp->id == id){
   printbook(bp);
         printf("归还图书:Y N\n");
         while(1){
             char c = '\0';
             scanf("%c", &c);
             getchar();
             if(!(c == 'Y' || c == 'y' || c == 'N' || c == 'n')){
                 fflush(stdin);
                 error("指令无效");
             }else if(c == 'Y' || c == 'y'){
                 bp->count++ ? : (bp->status = AVAILABLE);
                 printf("成功\n");
                 return bp->id;
             }else{
                 return 0;
             }
         }
         return 1; 
  }
  bp = bp->next;
 }
    if(bp == NULL){
        fflush(stdin);
        printf("此图书并不是馆内图书\n");
    }
    return -1;
}

运行截图
系统主界面

管理员界面

注册新图书

学生界面


系统使用说明

1、注册新图书时,图书编码不可重复

2、当借阅图书时,图书库存的数量将减1,当图书库存为0时,图书状态变为不可借阅
3、图书查询、借阅、规划都按照图书编码来进行操作


完整源码获取方式:关注微信名片,在菜单栏可以查询到所有C语言管理系统源码!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值