数据结构课程设计(图书借阅管理系统)
大学数据结构的课程设计,功能还不够完善有待后续完善更新:
设计要求如下:
图书馆借阅管理系统
主要分为两大功能:
- 图书管理(增加图书、查询图书、删除图书、图书借阅、还书)
- 会员管理(增加会员、查询会员、删除会员、借书信息)
要实现这些功能,根据已经学习的内容,选择采用单链表的结构存储,源代码如下:
//
// 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"