「杂谈」数据结构课程设计(图书借阅管理系统)

本文是关于大学数据结构课程设计的一个实践项目——图书借阅管理系统。系统使用单链表结构存储数据,包括图书管理和会员管理两大功能,如增加、查询、删除图书和会员,以及借阅和还书操作。作者分享了带有注释的源代码,并提供了百度网盘链接供下载。作为一个大二学生的初次尝试,期待得到专业人士的指导。
摘要由CSDN通过智能技术生成

数据结构课程设计(图书借阅管理系统)

大学数据结构的课程设计,功能还不够完善有待后续完善更新:
设计要求如下:
图书馆借阅管理系统
主要分为两大功能:

  1. 图书管理(增加图书、查询图书、删除图书、图书借阅、还书)
  2. 会员管理(增加会员、查询会员、删除会员、借书信息)
    要实现这些功能,根据已经学习的内容,选择采用单链表的结构存储,源代码如下:
//
//  main.cpp
//  数据结构课程设计(图书借阅管理系统)
//
//  Created by Jack Wang on 2018/11/27.
//  Copyright © 2018 Jack Wang. All rights reserved.
//  转载前请联系作者@Jack Wang QQ:1163585385 WeChat:1163585385

#include <iostream>
#include <cstdlib>
using namespace std;

int sum1=1,sum2=1,sum3=1;                 
typedef struct BookNode {
   
    int bookNumber;
    char bookName[50];
    char bookAuthor[50];
    int bookClass;
    struct BookNode *next;
}BookNode;
typedef struct StudentNode {
   
    int studentNumber;
    char studentName[20];
    int bookNumber;
    struct StudentNode *next;
}StudentNode;
/********************图书管理系统********************/
void CreatList(BookNode *&L) {
   
    L=(BookNode *)malloc(sizeof(BookNode));
    L->next=NULL;
}
void DestroyList(BookNode *&L) {
   
    BookNode *pre=L,*p=pre->next;
    while (p!=NULL) {
   
        free(pre);
        pre=p;
        p=pre->next;
    }
    free(pre);
}
bool InformationEmpty(BookNode *L) {
   
    return(L->next==NULL);
}
bool EntryBookInformation(BookNode *&L, int i, int Number, char Name[], char Author[], int Class) {
   
    int j=0;
    BookNode *p=L,*s;
    if (i<=0) {
   
        return false;
    }
    while (j<i-1&&p!=NULL) {
   
        j++;
        p=p->next;
    }
    if (p==NULL) {
   
        return false;
    }
    else {
   
        s=(BookNode *)malloc(sizeof(BookNode));
        s->bookNumber=Number;
        for (int k=0; k<50; k++) {
   
            s->bookName[k]=Name[k];
        }
        for (int k=0; k<50; k++) {
   
            s->bookAuthor[k]=Author[k];
        }
        s->bookClass=Class;
        s->next=p->next;
        p->next=s;
        return true;
    }
}
bool DeleteBookInformation(BookNode *&L, int i) {
   
    int j=0;
    BookNode *p=L,*q;
    if (i<=0) {
   
        return false;
    }
    while (j<i-1&&p!=NULL) {
   
        j++;
        p=p->next;
    }
    if (p==NULL) {
   
        return false;
    }
    else {
   
        q=p->next;
        if (q==NULL) {
   
            return false;
        }
        p->next=q->next;
        free(q);
        return true;
    }
}
int FindBook(BookNode *L, int Number) {
   
    int i=1;
    BookNode *p=L->next;
    while (p!=NULL&&p->bookNumber!=Number) {
   
        p=p->next;
        i++;
    }
    if (p==NULL) {
   
        return 0;
    }
    else {
   
        return i;
    }
}
bool GetBookInformation(BookNode *L, int i, int &Number, char *Name, char *Author, int &Class) {
   
    int j=0;
    BookNode *p=L;
    if (i<=0) {
   
        return false;
    }
    while (j<i&&p!=NULL) {
   
        j++;
        p=p->next;
    }
    if(p==NULL){
   
        return false;
    }
    else {
   
        Number=p->bookNumber;
        for (int k=0; k<50; k++) {
   
            Name[k]=p->bookName[k];
        }
        for (int k=0; k<50; k++) {
   
            Author[k]=p->bookAuthor[k];
        }
        Class=p->bookClass;
        return true;
    }
}
void DispList(BookNode *L) {
   
    BookNode *p=L->next;
    while (p!=NULL) {
   
        printf("图书编号:%d\t", p->bookNumber);
        printf("书名:%s\t", p->bookName);
        printf("作者:%s\t"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值