C++primer习题编写Sales_item类

My Code:

//Sales_item.h
#include<iostream>
#include<string>
using namespace std;

class Sales_item
{
public:
	Sales_item();	//构造函数
	
	//或者
	//Sales_item():units_sold("0-201-70535-x"), units_sold(0.0){};
	~Sales_item();
	void cin();		//输入函数
	void cout() const;	//输出函数
	Sales_item &sum(const Sales_item &item);		//求和操作,定义为const值可以避免复制、改变原来的值
	double avg_price();			//求平均
private:
	string isbn;			//国际标准书号
	unsigned units_sold;	//销售的数量
	double revenue;			//收入
};

//Sales_item.cpp
#include"Sales_item.h"

#ifndef SALES_ITEM_H_H
#define SALES_ITEM_H_H

#include<iostream>
#include<string>

Sales_item::Sales_item()	//构造函数
{
	isbn = "0-201-70353-x";
	units_sold = 0;
	revenue = 0.0;
}
//或者
//Sales_item::Sales_item():units_sold("0-201-70535-x"), units_sold(0.0){};
Sales_item::~Sales_item()
{
}
void Sales_item::cin()
{
				std::cin >> isbn;
				std::cin >> units_sold;
				std::cin >> revenue;
}
void Sales_item::cout () const
{
	std::cout << isbn << "\t";
	std::cout << units_sold << "\t";
	std::cout << revenue << endl;
}

Sales_item temporary;
Sales_item &Sales_item::sum(const Sales_item &item)		//定义为const型引用可以避免复制。改变原来的值
{
	if(isbn == item.isbn)
	{
		temporary.isbn = isbn;
		temporary.units_sold = units_sold + item.units_sold;
		temporary.revenue = revenue + item.revenue;
		return temporary;
	}
	std::cout << "Wrong ISBN ???" << endl;
		return temporary;
}

double Sales_item::avg_price()
{
	if(units_sold)
	return revenue/units_sold;
	else
		return 0;
}
#endif


//main.cpp
#include<iostream>
#include"Sales_item.h"
using namespace std;

void main()
{
	Sales_item book;
	cout << "Enter a Sales_item:" << endl;
	book.cin();
	book.cout();
	Sales_item book2;
	cout << "Enter another Sales_item:" << endl;
	book2.cin();
	cout << "The sum of the same book is:\t";
	book.sum(book2).cout();
	cout << "The average price of the same book is:\t";
	cout << book.sum(book2).avg_price();
	cout << endl;
}


Identifying Code:

//Sales_item.h

#ifndef SALESITEM_H
#define SALESITEM_H
#include<iostream>
#include<string>

class Sales_item
{
public:
	//Sales_item对象的操作
	std::istream& input(std::istream& in);
	std::ostream& output(std::ostream& out) const;
	double avg_price() const;
	bool same_isbn(const Sales_item &rhs) const
	{
		return isbn == rhs.isbn;
	}

	//默认构造函数徐璈初始化内置类型的数据成员
	Sales_item::Sales_item(): units_sold(0), revenue(0.0) { };

private:
	std::string isbn;
	unsigned units_sold;
	double revenue;
};

#endif
//Sales_item.cpp
//自定义的Sales_item类的实现文件(源文件)
#include "Sales_item.h"

std::istream& Sales_item::input(std::istream& in)
{
	double price;
	in >> isbn >> units_sold >> price;
	//检验是否读入成功
	if(in)
		revenue = units_sold * price;
	else
	{
		//读入失败:将对象复位为默认状态
		units_sold = 0;
		revenue = 0.0;
	}
	return in;
}

std::ostream& Sales_item::output(std::ostream& out) const
{
	out << isbn << "\t" << units_sold << "\t" 
		<< revenue << "\t" << avg_price();
	return out;
}

double Sales_item::avg_price() const
{
	if(units_sold)
		return revenue/units_sold;
	else
		return 0;
}

//main.cpp

#include "Sales_item.h"
#include <iostream>
using namespace std;

void main()
{
	Sales_item item;
	//读入并输出一组交易
	cout << "Enter some transactions(Ctr+Z to end):" << endl;
	while(item.input(cin))
	{
		cout << "The transaction readed is:" << endl;
		item.output(cout);
		cout << endl;
	}
}
运行实例:
0-201-78345-x 3 20.00
0-201-78345-x 2 25.00


终于接触到真正的内容了,开头第一章那个Sales_item.h文件
现在终于开始能够编写了……虽然有点瑕疵,考虑不是很全面,但是终究是开始整体了,加油!!!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 《C Primer》第5版是一本C语言编程的经典教材,编写了三位C语言领域的专家,清晰地、基础地、全面地介绍了C语言的基础知识和高级编程技巧。 本书的章节安排很合理,首先介绍了C语言的概述和基础知识,然后深入讲解了程序结构、数据型、函数、数组、指针、字符串、结构体等内容,最后详细探究了C语言程序调试、内存管理、文件处理等高级应用技巧。配合书中的大量实例和习题,读者可以逐步壮大自己C语言的能力和经验。 更值得一提的是,本书既可供中高级程序员学习参考,又可作为初学者的首选入门教材,对于不同程度的读者,本书都能起到很好的指导作用。同时,书中涉及了一些现代化的编程技术和工具,例如C++语言的特性、程序设计的实践方法、线程和多线程编程等,这对于对C语言开发有更高追求的读者也是非常有益的。 总的来说,《C Primer》第5版是一本基础全面、引人入胜、适合不同学习者的优秀C语言教材,彰显了编写者的深厚学术功底和丰富的实践经验。相信任何希望深入理解C语言和提高编程能力的人都应该读一读它。 ### 回答2: 《C Primer》是一本经典的C语言教材,已经出到第5版,本文将从以下几个方面对这本书进行回答。 首先,本书的内容十分系统和全面,从C语言基础概念的介绍开始,一步步地引导读者逐渐掌握C语言的语法和编程技巧,涵盖了C语言的各个方面,包括数据型、运算符、数组、指针、结构体、函数、文件操作、动态内存管理等。 其次,这本书深入浅出,充满了很多实际的例子和练习题,让读者能够更好地理解和掌握C语言的知识。此外,书中也有很多注意事项和技巧提示,帮助读者避免一些常见的错误和陷阱。 再次,本书具有很强的实用性,所有涉及的知识都有大量的编程实例,读者可以通过实际动手编写程序来巩固知识和提高技能。此外,书中也有很多高级的话题和扩展阅读材料,对于想深入了解C语言的读者来说,这些内容也是值得一看的。 最后,需要注意的是,由于C语言的发展和变化,本书所涉及的一些细节和用法可能已经有所过时,所以在实际编程中还需要结合具体的实践和查阅相关文献来进行处理。不过无论如何,《C Primer》仍是一本不可多得的优秀C语言教材,对于初学者和中级开发者来说都是一本不可多得的参考书籍。 ### 回答3: 《C Primer》是 C 语言的入门经典教材之一,在第五版中进行了全面的更新和修订,以反映当前的 C 语言标准和最佳编程实践。作为一本经典教材,它适用于既没有 C 编程经验也没有计算机科学背景的初学者,同时也适合作为专业程序员的参考工具书。本书旨在帮助初学者全面掌握 C 语言的基本概念、核心语法、程序化思考和最佳编程实践,以及深入理解计算机的原理和机制。 本书内容分为两部分:基础和高级篇。基础篇从 C 语言的语法和控制流开始,介绍了各种基本型、数组、指针、结构体和函数等,同时也介绍了 C 语言的输入输出和文件处理,以及如何进行调试和错误处理。高级篇则更深入一些,包括了动态内存管理、多线程编程、位运算、预编译器、C11 及 C17 标准等方面的内容。在这一部分中,读者可以学会如何构建更加复杂的程序和模块,同时了解如何使用 C 语言的高级特性。 本书有以下几个特点: 1、全面而深入的讲解:本书对 C 语言的各个方面进行了详细而全面的讲解,同时也深入介绍了计算机的底层机制和编程实践。 2、严谨和实用的教学方法:本书的教学方法既严谨又实用,通过大量的代码示例和练习,读者可以快速掌握 C 语言的核心概念和编程技巧。 3、与时俱进的内容:本书对 C 语言的最新标准和编程实践进行了收录,确保读者学到的是最新、最优秀的编程实践。 总之,《C Primer》是一本非常优秀的 C 语言教材,无论是初学者还是专业程序员都可以从中受益。如果你希望快速掌握 C 语言并用它来进行高效的编程工作,那么这本书是你不可或缺的工具。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值