C++ 单链表实现 图书管理系统
一、题目要求:
用链表实现图书管理系统,包括如下的功能:
查找:按不同属性查找所有等于给定值 的数据元素 ,找到并返回它们;
插入:在表中第 i (1=<i<=N+1)个位置插入一个新的数据元素;
删除:可删除表中第 i (1=<i<=N)个位置上的数据元素;
输出:依次打印表中的各个元素的值;
排序:可按某属性对表中的元素进行排序。
二、代码实现
1、ManageSystem.h
文件
#pragma once
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
class Book //书本类
{
friend class ListNode;
friend class ListChain;
protected:
long long ISBN; //书号
string name; //书名
int price; //价格
public:
Book(); //无参构造函数,创建一个Book对象
Book(long long, string, int); //含参构造函数,创建一个Book对象
Book(const Book&); //拷贝构造函数
~Book(); //析构函数
Book& operator=(const Book&); //重载=
friend istream& operator>>(istream&, Book&); //重载输入>>
friend ostream& operator<<(ostream&, Book&); //重载输出<<
long long GetISBN(); //返回书号
string Getname(); //返回书名
int Getprice(); //返回价格
void ChangeISBN(long long); //修改书号
void Changename(string); //修改书名
void Changeprice(int); //修改价格
};
class ListNode //结点类
{
public:
Book data; //数据域
ListNode *next; //指针域
};
class ListChain //链表类
{
protected:
ListNode *head; //头指针
int length; //长度
public:
ListChain(); //无参构造函数,建立一个空链表(只包含头结点)
void InputTail(const Book bl[], const int); //尾插法将数据读入
void ClearChain(); //删除链表
void ShowListChain(); //遍历链表
Book Find(long long); //依据书号查找
Book Find(string); //依据书名查找
bool Insert(const Book&, int); //插入
bool Delete(int); //删除
bool Sort(string); //排序
};
2、ManageSystem.cpp
文件
#include "ManageSystem.h"
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
Book::Book() {
}; //无参构造函数,创建一个Book对象
Book::Book(long long i, string n, int p):ISBN(i), name(n), price(p) {
}; //构造函数,创建一个Book对象
Book::Book(const Book& temp):ISBN(temp.ISBN), name(temp.name), price(temp.price) {
}; //拷贝构造函数
Book::~Book() {
}; //析构函数
long long Book::GetISBN() {
return ISBN;} //返回书号
string Book::Getname() {
return name;} //返回书名
int Book::Getprice