头歌数据结构——图书信息管理

第1关:图书信息管理

本关任务:已知每种图书包括三部分信息:ISBN(书号)、书名和价格,现在要求编写程序,用顺序表存储图书信息,实现对图书信息的管理,具体包括以下7个功能: (1)初始化 cpp void InitBookList(BookList &L) 操作结果:构造一个空的存放图书记录的顺序表L。 (2)插入 cpp bool ListInput(BookList &L,string ISBN,string BookName,int Price) 初始条件:顺序表L已经存在。 操作结果:在L的末尾增加一条图书记录(ISBN,BookName,Price)。 (3)删除 cpp bool ListDelete(BookList &L,int i) 初始条件:顺序表L已经存在,1<=i<=L.length。 操作结果:删除L中第i条图书记录。 (4)修改 cpp bool ListUpdate(BookList &L,int i,string ISBN,string BookName,int Price) 初始条件:顺序表L已经存在,1<=i<=L.length。 操作结果:修改L中第i条图书记录为(ISBN,BookName,Price)。 (5)查找 cpp bool ListSearch(BookList L,string BookName) 初始条件:顺序表L已经存在。 操作结果:在L中查找并输出书名为BookName的图书记录。 (6)计数 cpp int ListLength(BookList L) 初始条件:顺序表L已经存在。 操作结果:返回L中图书记录的条数。 (7)输出 cpp void ListOutput(BookList L) 初始条件:顺序表L已经存在。 操作结果:遍历并输出L中所有的图书记录。

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

// 图书记录结构体
struct BookRecord
{
    string ISBN;
    string BookName;
    int Price;
};

// 顺序表结构体
struct BookList
{
    BookRecord *data; // 动态分配的数组存放图书记录
    int length;       // 顺序表的当前长度
    int capacity;     // 顺序表的容量
};

// 初始化顺序表
void InitBookList(BookList &L)
{
    L.data = new BookRecord[20]; // 初始容量为20
    L.length = 0;
    L.capacity = 20;
}

// 在顺序表末尾插入一条图书记录
bool ListInput(BookList &L, string ISBN, string BookName, int Price)
{
    if (L.length >= L.capacity)
    {
        return false; // 顺序表已满,无法插入
    }
    
    L.data[L.length].ISBN = ISBN;
    L.data[L.length].BookName = BookName;
    L.data[L.length].Price = Price;
    L.length++;
    
    return true;
}

// 删除顺序表中第i条图书记录
bool ListDelete(BookList &L, int i)
{
    if (i < 1 || i > L.length)
    {
        return false; // i的值不合法
    }
    
    for (int j = i - 1; j < L.length - 1; j++)
    {
        L.data[j] = L.data[j+1];
    }
    
    L.length--;
    return true;
}

// 修改顺序表中第i条图书记录
bool ListUpdate(BookList &L, int i, string ISBN, string BookName, int Price)
{
    if (i < 1 || i > L.length)
    {
        return false; // i的值不合法
    }
    
    L.data[i-1].ISBN = ISBN;
    L.data[i-1].BookName = BookName;
    L.data[i-1].Price = Price;
    
    return true;
}

// 在顺序表中查找并输出书名为BookName的图书记录
bool ListSearch(BookList L, string BookName)
{
    for (int i = 0; i < L.length; i++)
    {
        if (L.data[i].BookName == BookName)
        {
            cout << L.data[i].ISBN << " " << L.data[i].BookName << " " << L.data[i].Price << endl;
            return true;
        }
    }
    
    return false; // 没有找到对应的书名
}

// 返回顺序表的长度
int ListLength(BookList L)
{
    return L.length;
}

// 遍历并输出顺序表中所有的图书记录
void ListOutput(BookList L)
{
    for (int i = 0; i < L.length; i++)
    {
        cout << L.data[i].ISBN << " " << L.data[i].BookName << " " << L.data[i].Price << endl;
    }
}

int main()
{
    BookList myBookList;
    InitBookList(myBookList);
    
    // 输入图书记录
    string ISBN, BookName;
    int Price;
    while (cin >> ISBN >> BookName >> Price)
    {
        if (ISBN == "-1" && BookName == "-1" && Price == -1)
        {
            break; // 输入结束
        }
        
        ListInput(myBookList, ISBN, BookName, Price);
    }
    
    // 输出当前图书列表
    cout << "当前图书列表" << endl;
    ListOutput(myBookList);
    
    // 修改第3条记录
    cout << endl << "修改第3条记录" << endl;
    ListUpdate(myBookList, 3, "ISBN", "BookName", 100);
    ListOutput(myBookList);
    
    // 删除第3条记录
    cout << endl << "删除第3条记录" << endl;
    ListDelete(myBookList, 3);
    ListOutput(myBookList);
    
    // 计数
    cout << endl << "当前共有记录:" << ListLength(myBookList) << endl;
    
    // 查找输出图书名是《DataStructure》的记录
    cout  << "查询输出图书名是《DataStructure》的记录:" << endl;
    ListSearch(myBookList, "DataStructure");
    
    return 0;
}

》的记录: 9787302257649 DataStructure 80

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学生信息管理系统是一个用来管理学生的基本信息和选课信息的系统。在数据结构中,我们可以使用一些算法数据结构来设计这个系统。在这个系统中,我们需要考虑以下几个功能: 1. 添加学生信息:当有新的学生加入时,我们需要输入他们的姓名,班级,性别,学号等基本信息,并将其存储在系统中。 2. 删除学生信息:当学生离开学校或者不再使用该系统时,我们需要删除他们的基本信息以及他们在选课系统中的选课信息。 3. 添加课程信息:当有新的课程开设时,我们需要输入课程的名称,教师姓名,上课时间等信息,并将其存储在系统中。 4. 删除课程信息:当课程不再开设或者不再使用该系统时,我们需要删除该课程的所有信息,使得在系统中无法找到该课程的相关信息。 5. 修改学生信息:如果学生的基本信息发生变化,我们需要提供一个功能来修改他们的信息,例如修改班级或者联系方式。 6. 查询学生信息:我们需要提供一个功能来查询学生的基本信息和选课信息,以便管理员或教师能够查看学生的相关信息。 7. 查询课程信息:我们需要提供一个功能来查询课程的基本信息和选修该课程的学生信息,以便管理员或教师能够查看课程的相关信息。 以上是学生信息管理系统中一些常见的功能和操作,我们可以使用合适的数据结构算法来设计和实现这个系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值