?? bookdata_head.h
字號:
//*****************************
//任 務(wù):C++課程設(shè)計(jì)
//題 目:圖書管理系統(tǒng)
//作 者:040630520彭立勛
//題 號:課程設(shè)計(jì)Final
//用 途:聲明類的頭文件
//文件名:BookData_Head.h
//最后更新日期:2007.6.10
//*****************************
#ifndef BOOKDATAHEADDEF_H
#define BOOKDATAHEADDEF_H
#include "BookDef.h"
class TitleInfo //書的標(biāo)題信息及其處理函數(shù)
{
private :
char ISBN[14]; //書的ISBN號最多有13個(gè)字符組成
char BookTitle[51]; //書名最多有50個(gè)字符(25個(gè)漢字)組成
char Author[31]; //書的作者名最多有30個(gè)字符組成
char Publisher[31]; //出版社的名稱最多有30個(gè)字符組成
public :
/*設(shè)置類變量成員值的函數(shù)*/
void SetISBN ( char* Val ) { strcpy( ISBN , Val ); } //設(shè)置書的ISBN號
void SetTitle ( char* Val ) { strcpy( BookTitle , Val ); } //設(shè)置書名
void SetAuthor ( char* Val ) { strcpy( Author , Val ); } //設(shè)置書的作者
void SetPub ( char* Val ) { strcpy( Publisher , Val ); } //設(shè)置書的出版社
/*獲取類變量成員值的函數(shù)*/
char* GetISBN ( ) { return ISBN; } //獲取ISBN數(shù)組中的內(nèi)容
char* GetTitle ( ) { return BookTitle; } //獲取BookTitle數(shù)組中的內(nèi)容
char* GetAuthor( ) { return Author; } //獲取Aauthor數(shù)組中的內(nèi)容
char* GetPub ( ) { return Publisher; } //獲取Publisher數(shù)組中的內(nèi)容
};
class BookData : public TitleInfo //書的庫存信息及其處理函數(shù)
{
private :
char DateAdded[11]; //存儲(chǔ)日期的格式為YYYY-MM-DD
int QtyOnHand; //存放該書的庫存量
float Wholesale; //存放該書的批發(fā)格
float Retail; //存放該書的零售格
public :
/*設(shè)置類變量成員值的函數(shù)*/
void SetDateAdded ( char* Val ) { strcpy( DateAdded , Val ); } //設(shè)置進(jìn)書日期
void SetQty ( int Val ) { QtyOnHand = Val; } //設(shè)置書的庫存量
void SetWholesale ( float Val ) { Wholesale = Val; } //設(shè)置該書批發(fā)價(jià)
void SetRetail ( float Val ) { Retail = Val; } //設(shè)置該書零售價(jià)
void RemoveBook ( ) { SetTitle("\0"); } //設(shè)置該書為不存在
/*獲取類變量成員值的函數(shù)*/
char* GetDateAdded ( ) { return DateAdded; } //獲取DateAdded數(shù)組中的內(nèi)容
int GetQty ( ) { return QtyOnHand; } //獲取QtyOnHand變量的值
float GetWholesale ( ) { return Wholesale; } //獲取Wholesale變量的值
float GetRetail ( ) { return Retail; } //獲取Retail變量的值
/*功能函數(shù)*/
bool IsEmpty( ); //如果BookTitle為空返回true,否則返回false
void BookInfo( ); //顯示書的信息
int BookMatch( bool , char * ); //查找圖書返回圖書位置
};
class BookSale : public BookData //售出單種書的信息
{
public :
int QtySold;//銷售數(shù)量
int Local; //本書的數(shù)據(jù)庫位置
};
class FileWork //文件操作類
{
private :
static fstream File;
public :
/*打開文件失敗的異常類*/
class OpenFileFailed{ };
/*文件流操作函數(shù)*/
static void OpenFile( ); //打開數(shù)據(jù)文件
static void WriteToFile( const BookData& Val ) //將信息按順序?qū)懭胛募? { 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; //賣出書的種數(shù)
static float TaxRate; //用于存儲(chǔ)銷售稅率
static float Total; //用于計(jì)算整個(gè)當(dāng)前所有銷售的額
static float Tax; //銷售稅=TaxRate*銷售額
static float SubTotal; //總付款=Total+Tax
BookSale* SoldBook; //儲(chǔ)存賣出的書的信息
public :
class MemoryLack{ };//內(nèi)存不足的異常類
void Cashier( ); //函數(shù)詢問一筆交易要購買幾種書,然后動(dòng)態(tài)分配內(nèi)存空間
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<<" 數(shù)據(jù)文件打開失敗,請檢查數(shù)據(jù)文件是否存在! "<<endl; }
}
#endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -