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

定义结构体类型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;
            }  
        }
    }
}

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,那么我们开始编写图书管理系统。 首先,我们需要考虑系统的功能和需求。一个简单的图书管理系统应该至少包含以下功能: 1. 添加图书 2. 删除图书 3. 修改图书信息 4. 查询图书信息 5. 显示所有图书信息 接下来,我们可以考虑使用结构体来存储图书信息,并使用链表来存储图书列表。具体的代码实现如下: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> // 定义图书信息结构体 typedef struct book { char name[50]; char author[50]; char publisher[50]; float price; struct book *next; } Book; // 添加图书 Book *add_book(Book *head) { Book *p, *new_book; new_book = (Book *)malloc(sizeof(Book)); printf("请输入图书名称:"); scanf("%s", new_book->name); printf("请输入图书作者:"); scanf("%s", new_book->author); printf("请输入图书出版社:"); scanf("%s", new_book->publisher); printf("请输入图书价格:"); scanf("%f", &new_book->price); new_book->next = NULL; if (head == NULL) { head = new_book; } else { p = head; while (p->next != NULL) { p = p->next; } p->next = new_book; } printf("添加成功!\n"); return head; } // 删除图书 Book *delete_book(Book *head) { Book *p, *prev; char name[50]; printf("请输入要删除的图书名称:"); scanf("%s", name); p = head; prev = NULL; while (p != NULL) { if (strcmp(p->name, name) == 0) { if (prev == NULL) { head = p->next; } else { prev->next = p->next; } free(p); printf("删除成功!\n"); return head; } prev = p; p = p->next; } printf("未找到该图书!\n"); return head; } // 修改图书信息 void modify_book(Book *head) { Book *p; char name[50]; printf("请输入要修改的图书名称:"); scanf("%s", name); p = head; while (p != NULL) { if (strcmp(p->name, name) == 0) { printf("请输入图书作者:"); scanf("%s", p->author); printf("请输入图书出版社:"); scanf("%s", p->publisher); printf("请输入图书价格:"); scanf("%f", &p->price); printf("修改成功!\n"); return; } p = p->next; } printf("未找到该图书!\n"); } // 查询图书信息 void query_book(Book *head) { Book *p; char name[50]; printf("请输入要查询的图书名称:"); scanf("%s", name); p = head; while (p != NULL) { if (strcmp(p->name, name) == 0) { printf("图书名称:%s\n", p->name); printf("图书作者:%s\n", p->author); printf("图书出版社:%s\n", p->publisher); printf("图书价格:%.2f\n", p->price); return; } p = p->next; } printf("未找到该图书!\n"); } // 显示所有图书信息 void display_books(Book *head) { Book *p; if (head == NULL) { printf("当前没有任何图书!\n"); return; } p = head; while (p != NULL) { printf("图书名称:%s\n", p->name); printf("图书作者:%s\n", p->author); printf("图书出版社:%s\n", p->publisher); printf("图书价格:%.2f\n", p->price); p = p->next; } } int main() { int choice; Book *head = NULL; do { printf("\n"); printf("1. 添加图书\n"); printf("2. 删除图书\n"); printf("3. 修改图书信息\n"); printf("4. 查询图书信息\n"); printf("5. 显示所有图书信息\n"); printf("0. 退出\n"); printf("请输入您的选择:"); scanf("%d", &choice); switch (choice) { case 1: head = add_book(head); break; case 2: head = delete_book(head); break; case 3: modify_book(head); break; case 4: query_book(head); break; case 5: display_books(head); break; case 0: printf("谢谢使用!\n"); break; default: printf("无效的选择!\n"); break; } } while (choice != 0); return 0; } ``` 以上就是一个简单的图书管理系统的实现,你可以根据自己的需要做出相应的修改和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值