C++编写程序定义结构体类型BOOK

时间:2025-03-10 16:25:46

定义结构体类型BOOK表示某种图书的信息,已知图书信息包括书号(整型)、书名(长度小于50个字符)、总册数、库存量和销售量(均为整型),编写程序,实现以下功能:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

在主函数中输入5种图书的书号、书名、总册数和库存量,而后计算每种图书的销售量,已知销售量 = 总册数 - 库存量;调用printBook函数进行输出,而后调用sort_by_sales函数进行排序,在主函数中输出排序后的结果。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

编写自定义printBooks函数,输出每种图书的书号、书名和总册数、库存量和销售量。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

编写自定义排序sort_by_sales函数,按销售量进行降序排序。

程序运行示例:

please enter 5 books info:
Id    Name    Total    Stock

Here are the books information:
Id    Name    Total    Stock    Sale
10010    GTZ    200    120    80
12310    XXY    184    110    74
12980    ZEY    89    50    39
89012    ABC    110    23    87
78192    YYY    192    109    83

After sorting by sales
Here are the books information:
Id    Name    Total    Stock    Sale
89012    ABC    110    23    87
78192    YYY    192    109    83
10010    GTZ    200    120    80
12310    XXY    184    110    74
12980    ZEY    89    50    39

#include <iostream>
using namespace std;
//此处定义结构体变量BOOK
struct BOOK{
    int id;
    char n[500];
    int total;
    int stock;
    int sale;
};

//此处给出函数原型声明
void printBooks(BOOK*);
void sort_by_sales(BOOK*); 

const int N = 5;

int main()
{
	BOOK books[N];
    cout <<"please enter "<< N <<" books info:\n";
    cout <<"Id\tName\tTotal\tStock\n";
    //此处编写结构体数组的输入、计算、输出、排序、输出等功能

int i;
for(i=0;i<5;i++){
	cin>>books[i].id;
	cin>>books[i].n;
	cin>>books[i].total;
	cin>>books[i].stock;
};

cout<<"\n";

cout<<"Here are the books information:"<<"\n";
cout <<"Id\tName\tTotal\tStock\tSale\n";

printBooks(books) ;

cout<<"\n";

cout<<"After sorting by sales"<<"\n"<<"Here are the books information:"<<"\n";
cout <<"Id\tName\tTotal\tStock\tSale\n";

sort_by_sales(books);
printBooks(books) ; 

return 0;
}

//此处编写printBooks和sort_by_sales函数的定义
void printBooks(BOOK*books){
    int i;
	for(i = 0;i<5;i++){
    cout<<books[i].id<<'\t';
	cout<<books[i].n<<'\t';
	cout<<books[i].total<<'\t';
	cout<<books[i].stock<<'\t';
	cout<<books[i].total-books[i].stock<<'\n';}
}
void sort_by_sales(BOOK*books){
    int i,j;
    for(i=0;i<4;i++){
        for(j=0;j<4-i;j++){
            if(books[j+1].total-books[j+1].stock>books[j].total-books[j].stock){
                BOOK temp=books[j+1];
                books[j+1]=books[j];
                books[j]=temp;
            }  
        }
    }
}