用单链表实现图书信息的管理C++

这是图书信息测试txt文件,由于是oj搞过来的代码,只是简单复制粘贴了一下oj里面的代码段,然后我又自己加了一些逻辑是之成为一个完整的图书管理系统。录入信息的方式一共有3种,具体怎么录入信息看提示。

可能部分逻辑并不是很完美,只是实现了基本的功能,之后有时间还会优化一下逻辑结构

8
9787302257646 Data-Structure 35.00
9787302164340 Operating-System 50.00
9787302219972 Software-Engineer 32.00
9787302203513 Database-Principles 36.00
9787810827430 Discrete-Mathematics 36.00
9787302257800 Data-Structure 62.00
9787811234923 Compiler-Principles 62.00
9787822234110 The-C-Programming-Language 38.00
0 0 0
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <fstream>
#include <iomanip>
#include <ctype.h>
#define OK 1
using namespace std;

typedef struct//定义图书结构体
{
    string IBNS;
    string NAME;
    float PRICE;
}Book;

typedef struct LNode
{
    int length;
    Book data;
    struct LNode* next;

}LNode, * LinkList;

int Init(LinkList& L);//初始化链表
int Tail_Insert(LinkList& L);//尾插法储存图书信息,结束条件是0,0,0
int Tail_Insert_n(LinkList& L);//尾插,先输入图书数目再存入
int Head_Insert(LinkList& L);//头插法,逆序存储
int Traverse(LinkList& L);//遍历图书,求表长
int Print(LinkList L);//打印所有图书
int Sort(LinkList& L);//按照价格从大到小排序,并输出平均价格
int Modify(LinkList& L);//修改图书价格信息函数
void Find(LinkList& L);
int Find_expensivest(LinkList L);//查找最贵图书
int Find_byname(LinkList L);//根据书名查找图书详细信息
int Find_n(LinkList L);//查找第n本图书的信息
int Insert_Pos(LinkList& L);//插入新图书信息
int Delete(LinkList& L);//删除第n本图书的信息
int Delete_re(LinkList L);//IBNS号重复的图书的信息
int Insert(LinkList L);

void Clear();//清屏
void Index(LinkList L);
void Instruct(LinkList L);//指令集合函数
void Print_sum(LinkList L);
void Index(LinkList L)
{
    int Chioce=12;
    int flag = 1;
    while (flag) {
        cout << "\n***************************************Welcome to the Books Management System (BMS)*************************************\n";
        cout << "1.查询图书数量\n2.输出所有图书信息\n3.在指定位置插入图书\n4.根据位置删除图书信息\n5.根据输入信息的查找\n6.查看图书的总数\n7.修改价格信息并将生成的信息导入新文件\n8.排序并将排序后的信息导入新的文件\n9、查重(对于IBSN号相同的图书只保留一本\n10、退出" << endl;
        cout << "请选择" << endl;
        cin >> Chioce;
        Clear();
        switch (Chioce) {
        case 1:Traverse(L); flag = 0; break;
        case 2:Print(L); flag = 0; break;//输出所有图书信息
        case 3:Insert_Pos(L); flag = 0; break;//插入图书信息
        case 4:Delete(L); flag = 0; break;//删除图书信息
        case 5:Find(L); flag = 0; break;//根据书名查找图书
        case 6:Print_sum(L); flag = 0; break;
        case 7:Modify(L); flag = 0; break;//修改图书价格
        case 8:Sort(L); flag = 0; break;//冒泡排序
        case 9:Delete_re(L); flag = 0; break;
        case 10:cout << "\t成功退出,谢谢使用!"; exit(0);
        default:
            printf("输错啦! 请输入1 ~ 9之间的整数\n");
            bre
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值