源代码如下:
#include<iostream>
#include<iomanip>
#include<string>
#include<fstream>
#include<stdio.h>
using namespace std
const int maxb=10000 //最多的图书
class book//图书类
{
int tag //删除标记1:已删0:未棚余滑删
int number //isbn书号
char name[20] //书名
char author[10]//主编
char number2[10]//版次
char position[20]//出版社
char time[20]//出版年
void addbook(int n,char *na,char *au,char *n2,char *da,char *ti,int pr) //增加图毁好书
{
tag=0
number=n
price=pr
strcpy(name,na)
strcpy(author,au)
strcpy(number2,n2)
strcpy(position,da)
strcpy(time,ti)
onshelf=1
}
扩展资料
1、源程序中,很链腊多符号都是成对匹配出现的,为避免遗漏必须配对使用的符号。
2、用花括号括起来的部分,但从程序结构清晰,便于阅读、理解、维护的角度出发,建议在书写程序时应遵循以下规则,以养成良好的编程习惯。
3、一个说明或一条语句占一行,与该结构开始处的左花括号对齐。
enumState{Borrowed,Available}//Borrowed表示被借出,Available表示书籍可用。
classBook{
public:
//定义类型别名以实现抽象
typedefmultiset<Book>data_t
//不允许书籍默认构造。只允许通过传入书名构造。将书籍状态设为“可用”
Book()=delete
Book(constname_t&name):name(name),state(Available){}
~Book()=default
//使用书名比较书籍间的相互关系
booloperator<(constBook&other)const{returnname<other.name}
booloperator==(constBook&other)const{returnname==other.name}
//一些访氏知问和修改的函数
//关于书籍名字和书籍状态(“可用”,“已借”)
StateGetState()const{returnstate}
name_tGetName()const{returnname
voidSetName(constname_t&_name){name=_name}
voidSetState(StatenewState){state=newState}
private:
name_tname
Statestate
}
classLibrary{
public:
//定义一系列类型类型别名实现抽象
typedefmultiset<Book>data_t
typedeftypenameBook::name_tname_t
typedeftypenamedata_t::iteratorIterator
typedefvector<Book>Info_t
typedefstringfile_name_t
//只允许该类默认构造,不允许复制
Library()=default
Library(constLibrary&)=delete
Library&operator=(constLibrary&)=delete
//分别为增加,删除,借阅,归还书籍。
voidInsert(constBook&book){libraryData.insert(book)}
boolRemove(constname_t&name)
boolBorrow(constname_t&name)
boolGiveBack(constname_t&name)
//返回该类中书籍的相关信息
vector<Book>GetBookInfo(constname_t&name)const
vector<Book>GetAllBookInfo()const
//返回该类中书籍的数目
size_tCount(constname_t&name)const{returnlibraryData.count(Book(name))}
size_tNumOfBook()const{returnlibraryData.size()}
//保存信息到文件,从文件读取信息
//接受文件名为参数
voidSaveToFile(conststring&fileName)const
boolLoadFromFile(conststring&fileName)
private:
//储存书籍的容器
data_tlibraryData
//内部辅助函数。输入书籍的名字,返回一对迭代器(std::pair)指向一个区间范围。该范围内的书籍都有相同名字name
inlineauto_find(constname_t&name)const->constpair<Iterator,Iterator>
{
returnlibraryData.equal_range(Book(name))
}
}
//打印“>>>”用以实现交互界歼燃消面
inlinevoidPrintPromt(ostream&os)
//打印指导信息。每次运行该系统都会输出该内容
voidPrintInstroduction(ostream&os)
//打印帮助信息。在系统中输入help会段仿调用该函数输出帮助
voidPrintHelp(ostream&os)
//打印错误信息。该函数会将参数s直接打印出来(加上换行符)
inlinevoidPrintError(ostream&os,conststring&s)
//将系统中的全部书籍以表格形式输出。接受library类。通过调用PrintTitle(打印表格)和PrintAllBook(打印所有书籍)执行打印
inlinevoidPrintTable(ostream&os,constLibrary&lib)
//打印表格的题头。执行实际的打印行为
inlinevoidPrintTitle(ostream&os)
//打印系统中的全部书籍。通过调用PrintBookInOneLine打印书籍
voidPrintAllBook(ostream&os,constLibrary&lib)
//实际执行打印行为的函数。每次只打印一行。接受Book的对象为参数
inlinevoidPrintBookInOneLine(ostream&os,constBook&book)
扩展资料
C++编写程序注意事项
1、算:计算利润,计算一元二次方程的根,计算一个数列的和等。
2、找:找最大的值,找最短的一条路径,找一个字符串的位置等。
3、实现功能:实现撤销,重做的功能实现某种 *** 作的功能等。
4、字符串查找,在记事本里有一个查找的功能,输入要查找的关键字,能够快速找到它所在位置,如果没找到并给出提示,现在要求在一个字符串里找到一个子串,和记事本的查找功能一样。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)