#include "ds.h"//自定义的头文件
using namespace std;//c++中指定命名空间
struct Book //定义一种结构体类型
{
int ISBN; //书号
char name[20]; //书名
char author[20]; //作者
char publisher[20]; //出版单位
float price;//价格
int year;//图书的年【若为1988年出版 请输入1988】
int month;//图书的月【输入方法同上】
int day; //图书的日【输入方法同上】 //中间请用空格空开
};
Book book[MAXSIZE];
//9787521334111 新未来大学英语综合教程 孙有中 外语教学与研究出版社 74.9 2022 7 1
void input(int &num)
{
int i;
cout<<"输入图书的本数num=";
cin>>num;
cout<<"请输入"<<num<<"本图书的信息,空格分开\n";
for(i=0; i<num; i++)
{
cin >> book[i].ISBN >> book[i].name >> book[i].author >> book[i].publisher >> book[i].price >> book[i].year >> book[i].month >> book[i].day;
}
for(i=0; i<num; i++)
{
cout << book[i].ISBN << book[i].name << book[i].author << book[i].publisher << book[i].price << book[i].year << book[i].month << book[i].day << endl;
}
}
void output(int num)
{
int i;
for (i=0; i<num; i++)
{
cout<<"书名:"<<book[i].name<<" 作者;"<<book[i].author<<" 出版单位:"<<book[i].publisher<<" 价格:"<<book[i].price<<" 出版日期:"<< book[i].year << " " << book[i].month << " " << book[i].day << " "<< endl;
}
cout<<"\n";
}
void insertm(int& num) //在最后面依次添加num本图书
{
int i,m;
cout << "需要添加图书信息的本数为:\n ";
cin >> m;
cout << "请输入其信息【依次为书号(ISBN) 书名 作者 出版单位 价格 出版日期(书号不重复,用空格空开】\n ";
for (i=0; i<m; i++)
{
cin >> book[i].ISBN >> book[i].name >> book[i].author >> book[i].publisher >> book[i].price >> book[i].year >> book[i].month >> book[i].day;
}
num = num + m;
cout << "图书信息添加后为:\n";
output(num);
}
void delete_books(int num)
{
int i,choice,ISBN1,t=0;
char name1[1];
cout<<"进入删除图书系统\n";
cout<<"按书号删除请按1\n";
cout<<"按书名删除请按2\n";
cin>>choice;
switch(choice)
{
case 1:
cout<<"请输入你想删除的图书的书号: ";
cin>>ISBN1;
for(i=0; i<num; i++)
{
if(ISBN1 == book[i].ISBN)
{
t = i; //记住要删除图书的下标
break;
}
else
cout<<"删除失败,请确认书号是否正确!"<<endl;
}
if(t != num - 1) //判断要删除图书是否为最后一本 即判断t是否为最后一个值
{
for(i=t; i<num; i++)
{
book[i] = book[i+1];
}
}
num = num-1;
case 2:
cout<<"请输入你想删除的图书的书名: ";
cin>>name1;
for(i=0; i<num; i++)
{
if(name1 == book[i].name)
{
t = i; //记住要删除图书的下标
break;
}
else
cout<<"删除失败,请确认书名是否正确!"<<endl;
}
if(t != num-1) //判断要删除图书是否为最后一本 即判断t是否为最后一个值
{
for(i=t; i<num; i++)
{
book[i] = book[i+1];
}
}
num = num-1;
}
}
void change_books(int num)
{
int ISBN2;
int i,t=0,choice;
cout<<"请输入要修改信息图书的书号:"<<endl;
cin>>ISBN2;
for(i=0; i<num; i++)
{
if(ISBN2 == book[i].ISBN)
{
t = i;
break;
}
else
cout<<"无图书信息,请确认书号是否正确!"<<endl;
}
cout<<"请输入需要修改信息的序号:"<<endl;
cout<<"1.书名"<<endl;
cout<<"2.作者"<<endl;
cout<<"3.出版单位"<<endl;
cout<<"4.价格"<<endl;
cin>>choice;
switch(choice)
{
case 1:
cout<<"请输入:";
cin>>book[t].name;
break;
case 2:
cout<<"请输入:";
cin>>book[t].author;
break;
case 3:
cout<<"请输入:";
cin>>book[t].publisher;
break;
case 4:
cout<<"请输入:";
cin>>book[t].price;
break;
default:
cout<<"输入错误!请重新输入1-4"<<endl;
}
}
void book_search(int num)
{
int i,choice,ISBN3;
char name3[100];
cout<<"进入查询图书系统\n";
cout<<"按书号查询请按1\n";
cout<<"按书名查询请按2\n";
cin>>choice;
switch(choice)
{
case 1:
cout<<"请输入你想查询的图书的书号:";
cin>>ISBN3;
for(i=0; i<num; i++)
{
if(ISBN3 == book[i].ISBN)
{
cout<<"查询成功\n";
cout<<"该书基本信息为:\n";
cout<<"书名:"<<book[i].name<<" 作者;"<<book[i].author<<" 出版单位:"<<book[i].publisher<<" 价格:"<<book[i].price<<" 出版日期 年:"<< book[i].year << " " << "出版日期 月" << book[i].month << " " << "出版日期 日" << book[i].day << " "<< endl;
break;
}
}
cout<<"查询失败,请核对书号是否正确\n";
case 2:
cout<<"请输入你想查询的图书的书名:";
cin>>name3;
for(i=0; i<num; i++)
{
if(strcmp(name3,book[i].name))
{
cout<<"查询成功\n";
cout<<"该书基本信息为:\n";
cout<<"书名:"<<book[i].name<<" 作者;"<<book[i].author<<" 出版单位:"<<book[i].publisher<<" 价格:"<<book[i].price<<" 出版日期 年:"<< book[i].year << " " << "出版日期 月" << book[i].month << " " << "出版日期 日" << book[i].day << " "<< endl;
break;
}
}
cout<<"查询失败,请核对书名是否正确\n";
}
}
int main()
{
int num=0;
int choice;
/*cout << "请输入你想进行图书信息管理的图书本数:\n";
cin >> num;
cout << "请输入" << num << "本图书信息 【书号(ISBN) 书名 作者 出版单位 价格 出版日期(书号不重复),用空格空开】: \n"; //完成图书信息输入
for (i = 0; i < book1.num; i++)
{
cin >> book.ISBN >> book.BookName[i] >> book.author[i] >> book.publisher[i] >> book.price[i] >> book.data[i] ; //字符数组进行整体输入
}*/
input(num);
cout << "进行图书信息浏览: " << endl;
output(num);
cout<<"请输入需要进入的系统1-4";
cin>>choice;
switch(choice)
{
case 1:
insertm(num);
break;
case 2:
delete_books(num);
break;
case 3:
change_books(num);
break;
case 4:
book_search(num);
break;
}
system("pause");
}