目录
一、试验任务和要求
二、算法实现方案
1.基于顺序存储结构的图书信息表的创建和输出
2.基于顺序存储结构的图书信息表的修改
3.基于顺序存储结构的图书信息表的最贵图书查找
4.基于顺序存储结构的图书信息表的最爱图书的查找
5.基于顺序存储结构的图书信息表的新书入库
6.基于顺序存储结构的图书信息表的旧书出库
7.基于顺序存储结构的图书信息表的图书去重
三、设计程序的主要功能
1.图书基本信息添加模块
2.图书基本信息查询模块
3.图书基本信息修改模块
4.图书基本信息删除模块
四、程序中所用的数据结构
1.链表操作
2.顺序存储结构
五、算法的伪代码
六.算法代码
1.book.cpp
2.book2.cpp
3.book.h
设计并实现一个图书信息管理系统。根据实验要求设计该系统的菜单和交互逻辑,并编码实现增删改查的各项功能。该系统至少包含以下功能:
定义一个包含图书信息(书号、书名、价格)的顺序表。读入相应的图书数据来完成图书信息表的创建,然后统计图书表中的图书个数,同时逐行输出每本图书的信息。
输入
输入 n+1 行,其中前 n 行是 n 本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。最后第 n+1 行是输入结束标志:0 0 0(空格分隔的三个 0)。其中书号和书名为字符串类型,价格为浮点数类型。
输出
总计 n+1 行,第 1 行是所创建的图书表中的图书个数,后 n 行是 n 本图书的信息(书号、
书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔。其中价格输出保留两
位小数。
读入图书信息表,然后计算所有图书的平均价格,将所有低于平均价格的图书价格提高20%,所有高于或等于平均价格的图书价格提高10%,最后逐行输出价格修改后的图书信息。
输入
输入 n+1 行,其中前 n 行是 n 本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。最后第 n+1 行是输入结束标志:0 0 0(空格分隔的三个 0)。其中书号和书名为字符串类型,价格为浮点数类型。
输出
总计 n+1 行,第 1 行是修改前所有图书的平均价格,后 n 行是价格修改后 n 本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔。其中价格输出保留两位小数。
读入相应的图书信息表,然后查找价格最高的图书,输出相应图书的信息。
输出
总计 m+1 行,其中,第 1 行是最贵的图书数目,(价格最高的图书可能有多本),后m行是最贵图书的信息,每本图书信息占一行,书号、书名、价格用空格分隔。其中价格输出保留两位小数。
读入相应的图书信息表,然后根据指定的最爱图书的名字,输出相应图书的信息。
输入
输入1行,为每次待查找的最爱图书名字。
输出
若查找成功,输出k+1行,对于每次查找,第一行是最爱图书数目,同一书名的图书可能有多本,后K行是最爱图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,其中价格输出保留两位小数。若查找失败:只输出以下提示:抱歉,没有你的最爱!
读入指定的待入库的新图书的位置和信息,将新图书插入到图书表中指定的位置上,最后输出新图书入库后所有图书的信息。
输入
总计n+1行,首先输入第1行,内容仅为一个整数,代表待入库的新图书的位置序号,然后输入n行,内容为新图书的信息,书号、书名、价格用空格分隔。
输出
若插入成功,输出新图书入库后所有图书的信息(书号、书名、价格),总计n+1行,每行是一本图书的信息,书号、书名、价格用空格分隔。其中价格输出保留两位小数。
若插入失败,只输出以下提示:抱歉,入库位置非法!
读入指定的待出库的旧图书的书号,将该图书从图书表中删除,最后输出旧图书出库后所有图书的信息。
输入
输入待出库的旧图书的书号;
输出
若删除成功,输出旧图书出库后所有图书的信息(书号、书名、价格),每行是一本图书的信息,书号、书名、价格用空格分隔。其中价格输出保留两位小数。
若删除失败,只输出以下提示:出库失败,未找到该图书!
出版社出版的任何一本图书的书号(ISBN)都是唯一的,即图书表中不允许包含书号重复的图书。读入相应的图书信息表(事先加入书号重复的记录),然后进行图书的去重,即删除书号重复的图书(只留第一本),最后输出去重后所有图书的信息。
输出
总计输出m+1行(m<=n),其中,第一行是去重后的图书数目,后m行是去重后图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,其中价格输出保留两位小数。
首先输入图书录入的编号(不为0)判断是否有重复的编号,若有,则提示用户该书已存在,若无则继续录入书名、作者、出版社、单价。
用户先选择图书查询方式(按书名查找或按书号查找)输入图书书名或书号后,查找出该图书是否存在,若存在,则显示该图书信息,若不存在则提示用户无此图书信息。
用户输入要修改的书名,判断该书是否存在,若不存在,则提示用户无此图书信息;若存在,则提示用户选择修改项目,然后提示用户图书信息修改完成。
读入相应的图书信息表(事先加入书号重复的记录),然后进行图书的去重,即删除书号重复的图书(只留第一本),最后输出去重后所有图书的信息。
搜索:通过简单的线性搜索在给定的链表中找到键为k的第一个元素,并返回指向该元素的指针
插入:在链接列表中插入一个密钥。插入可以通过3种不同的方式完成;在列表的开头插入,在列表的末尾插入,然后在列表的中间插入。
删除:从给定的链表中删除元素x。您不能单步删除节点。删除可以通过3种不同方式完成;从列表的开头删除,从列表的末尾删除,然后从列表的中间删除。
如果插入位置不合理,抛出异常;
如果线性表长度大于等于数组长度,则抛出异常或动态增加容量;
从最后一个元素开始向前遍历到第i个位置,分别将它们都向后移动一个位置;
将要插入元素填入位置i处;
表长加1。
如果删除位置不合理,抛出异常;
取出删除元素;
从删除元素位置开始遍历到最后一个元素位置,分别将它们都向前移动一 个位置;
表长减1。
初始化书本
case 1: //添加功能 case 2: //删除功能 case 3: //查询功能 要么 case 4: //修改功能 case 5: //插入功能
输出图书信息的顺序,添加新的图书
number++;
for(int i=0;i
输出要删除的第几本图书信息
number--;
if(del_num>number)
输出没有该图书的信息当前库存共有
number--;
for(int i=del_num-1;i
for(int i=0;i
输出将要查询的图书信息
cin>>inspect_num;
if(inspect_num>number)
显示本图书信息不存在,请您重新输入
输出的图书信息如下
输入需要修改的第几本图书信息
输出您选择要插入新图书的位置
if(inset_num<1||inset_num>number)
输出输入的插入位置超出原有范围请重新输入
for(int i=number;i>=inset_num;i--)
Book[i]=Book[i-1];
要么
for(int i=number;i>=inset_num;i--)
Book[i]=Book[i-1];
输出将要插入新位置的图书相关信息(编号、书名、作者、出版社):
六.算法代码
1.book.cpp
#include "book.h"
#include
2.book2.cpp
#include
3.book.h
#ifndef LIST_H
#define LIST_H
typedef struct {
char no[20]; //13位书号
char name[40]; //书名
double price; //价格
}Book;
class SqList
{
public:
SqList();
void Cout(); //输出所有书目
void getMostExpensive();//获取最贵的书目
void getMostLove();//最喜欢的书目
void newBookInput(int place);//新书入库
void outPutOldBook(int place);//旧书出库
void delRepet();
private:
Book elem[100];
Book MostLove;
};
#endif