📄 bookdata_head.h
字号:
//*****************************
//任 务:C++课程设计
//题 目:图书管理系统
//作 者:040630520彭立勋
//题 号:课程设计Final
//用 途:声明类的头文件
//文件名:BookData_Head.h
//最后更新日期:2007.6.10
//*****************************
#ifndef BOOKDATAHEADDEF_H
#define BOOKDATAHEADDEF_H
#include "BookDef.h"
class TitleInfo //书的标题信息及其处理函数
{
private :
char ISBN[14]; //书的ISBN号最多有13个字符组成
char BookTitle[51]; //书名最多有50个字符(25个汉字)组成
char Author[31]; //书的作者名最多有30个字符组成
char Publisher[31]; //出版社的名称最多有30个字符组成
public :
/*设置类变量成员值的函数*/
void SetISBN ( char* Val ) { strcpy( ISBN , Val ); } //设置书的ISBN号
void SetTitle ( char* Val ) { strcpy( BookTitle , Val ); } //设置书名
void SetAuthor ( char* Val ) { strcpy( Author , Val ); } //设置书的作者
void SetPub ( char* Val ) { strcpy( Publisher , Val ); } //设置书的出版社
/*获取类变量成员值的函数*/
char* GetISBN ( ) { return ISBN; } //获取ISBN数组中的内容
char* GetTitle ( ) { return BookTitle; } //获取BookTitle数组中的内容
char* GetAuthor( ) { return Author; } //获取Aauthor数组中的内容
char* GetPub ( ) { return Publisher; } //获取Publisher数组中的内容
};
class BookData : public TitleInfo //书的库存信息及其处理函数
{
private :
char DateAdded[11]; //存储日期的格式为YYYY-MM-DD
int QtyOnHand; //存放该书的库存量
float Wholesale; //存放该书的批发格
float Retail; //存放该书的零售格
public :
/*设置类变量成员值的函数*/
void SetDateAdded ( char* Val ) { strcpy( DateAdded , Val ); } //设置进书日期
void SetQty ( int Val ) { QtyOnHand = Val; } //设置书的库存量
void SetWholesale ( float Val ) { Wholesale = Val; } //设置该书批发价
void SetRetail ( float Val ) { Retail = Val; } //设置该书零售价
void RemoveBook ( ) { SetTitle("\0"); } //设置该书为不存在
/*获取类变量成员值的函数*/
char* GetDateAdded ( ) { return DateAdded; } //获取DateAdded数组中的内容
int GetQty ( ) { return QtyOnHand; } //获取QtyOnHand变量的值
float GetWholesale ( ) { return Wholesale; } //获取Wholesale变量的值
float GetRetail ( ) { return Retail; } //获取Retail变量的值
/*功能函数*/
bool IsEmpty( ); //如果BookTitle为空返回true,否则返回false
void BookInfo( ); //显示书的信息
int BookMatch( bool , char * ); //查找图书返回图书位置
};
class BookSale : public BookData //售出单种书的信息
{
public :
int QtySold;//销售数量
int Local; //本书的数据库位置
};
class FileWork //文件操作类
{
private :
static fstream File;
public :
/*打开文件失败的异常类*/
class OpenFileFailed{ };
/*文件流操作函数*/
static void OpenFile( ); //打开数据文件
static void WriteToFile( const BookData& Val ) //将信息按顺序写入文件
{ FWRITE; }
static void WriteToFile( int n , const BookData& Val ) //将信息按指定位置写入文件
{
SEEKP(n);
FWRITE;
}
static void ReadFromFile( BookData& Val ) //从文件按顺序读入信息
{ FREAD; }
static void ReadFromFile( int n , BookData& Val ) //从文件指定位置读入信息
{
SEEKG(n);
FREAD;
}
static void WriteNUM( ) //写入NUM
{
File.seekp(0,ios::beg);
File.write((char *)&NUM,sizeof(NUM));
FBUF;
}
static void CloseFile( )
{ File.close( ); }
};
class Sale //所有售出书的信息
{
private :
int Kind; //卖出书的种数
static float TaxRate; //用于存储销售税率
static float Total; //用于计算整个当前所有销售的额
static float Tax; //销售税=TaxRate*销售额
static float SubTotal; //总付款=Total+Tax
BookSale* SoldBook; //储存卖出的书的信息
public :
class MemoryLack{ };//内存不足的异常类
void Cashier( ); //函数询问一笔交易要购买几种书,然后动态分配内存空间
friend void Pay( Sale& T );
};
void FileWork::OpenFile( )
{
try
{
File.open( PATH , ios::binary | ios::in | ios::out );
if( File.fail( ) )
throw FileWork::OpenFileFailed( );
else File.read( (char *)&NUM , sizeof( NUM ) );
}
catch( FileWork::OpenFileFailed )
{ cout<<TAB<<" 数据文件打开失败,请检查数据文件是否存在! "<<endl; }
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -