《数据结构课程设计》预习报告

实验一:图书信息管理系统的设计与实现(本链接)

实验二链接

实验三链接

一、实现内容

二、实验目标

三、编程语言以及开发环境的选择

四、数据结构方法选择

五、实验思路

1、图书信息的定义以及链表的定义

2、用类包括具体方法和参数

3、菜单设计

4、图书数据的初始化

六、源代码链接


一、实现内容

设计并实现一个图书信息管理系统。根据实验要求设计该系统的菜单和交互逻辑,并编码实现增删改查的各项功能。 该系统至少包含以下功能:

  1. 根据指定图书个数,逐个输入图书信息;
  2. 逐个显示图书表中所有图书的相关信息;
  3. 能根据指定的待入库的新图书的位置和信息,将新图书插入到图书表中指定的位置;
  4. 根据指定的待出库的旧图书的位置,将该图书从图书表中删除;
  5. 能统计表中图书个数;
  6. 实现图书信息表的图书去重;
  7. 实现最爱书籍查询,根据书名进行折半查找,要求使用非递归算法实现,成功返回此书籍的书号和价格;
  8. 图书信息表按指定条件进行批量修改;
  9. 利用快速排序按照图书价格降序排序;
  10. 实现最贵图书的查找;

二、实验目标

  1. 了解并掌握数据结构和算法设计的方法,具备初步的独立分析和设计能力
  2. 初步掌握软件开发过程的问题分析分析、系统设计、程序编码和测试等基本方法和技能。
  3. 提高综合运用所学的理论知识和方法,独立分析和解决问题的能力。
  4. 训练用系统的观点和软件开发一般规范进行软件的开发,培养软件工作着所具备的科学工作方法和作风。

三、编程语言以及开发环境的选择

这里使用选择c++编程语言以及vs2019开发环境

四、数据结构方法选择

1、采用顺序表

2、采用链表

由于链表便于增删,所以这里我选择方法2。

五、实验思路

1、图书信息的定义以及链表的定义

//图书信息的定义:
typedef struct {
    char no[8];   //8位书号
    char name[20]; //书名
    int price;     //价格
}Book;

//链表的定义:
typedef struct LNode{
     Book   data;       //数据域
     struct LNode  *next;   //指针域
}LNode,*LinkList; 

2、用类包括具体方法和参数

//类实现功能的操作
class LibraryMS {

private:

    LNode* first;  //链表头结点

public:

    //无参默认构造函数构造函数
    LibraryMS(){   
        first = new LNode();    
        first->next = NULL;   //创建头结点
    }

    //有参默认构造函数构造函数
    LibraryMS(Book book[], int n); 

    //逐个显示图书表中所有图书相关信息
    void bookPrint();  

    //能根据指定的待入库的新图书的位置和信息,将新图书插入到图书表中指定的位置
    void bookInsert(Book book, int n); 

    //根据指定的待出库的旧图书的位置,将该图书从图书表中删除;
    Book bookDelete(char no[]); 

    //能统计表中图书个数;
    int bookNumber();

    //实现图书信息表的图书去重;
    void bookSameDelete();

    //实现最爱书籍查询,根据书名进行折半查找,要求使用非递归算法实现,成功返回此书籍的书号和价格;
    void bookLoveFind(char name[]);

    //图书信息表按指定条件进行批量修改;
    void bookModify();

    //利用快速排序按照图书价格降序排序;
    void bookSort();

    //实现最贵图书的查找;
    void bookExpensive();

};

3、菜单设计

根据实验要求设计该系统的菜单和交互逻辑;

//菜单
void Menu() {
    cout << "********图书管理系统********" << endl;
    cout << "****1.输出所有图书信息" << endl;
    cout << "****2.插入指定位置" << endl;
    cout << "****3.根据书号删除" << endl;
    cout << "****4.统计书的个数" << endl;
    cout << "****5.图书去重" << endl;
    cout << "****6.批量修改" << endl;
    cout << "****7.最爱书查找" << endl;
    cout << "****8.价格排序" << endl;
    cout << "****9.最贵书查找" << endl;
    cout << "****10.退出" << endl;
    cout << "     请输入选项:    " << endl;
}

4、图书数据的初始化

    Book book[50]; //存储初始化图书信息
    bool tag = true; //用于判断是否结束输入
    char ch;  //用于判断是否还输入下一个
    int i = 0,length=0; //length为初始化长度
    cout << "请输入书号,书名和价格(中间以空格符隔开)" << endl;
    while (tag) {  //
        cin >> book[i].no;
        cin >> book[i].name;
        cin >> book[i++].price;
        length++; //图书信息+1
        cout << "是否还输入下一个Y/N" << endl;
        cin >> ch;
        if (ch != 'Y' && ch != 'y')tag = false;
    }

六、源代码链接

源代码链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值