資源簡介
請在使用前在D盤中設置兩個txt文件(reader.txt和book.txt)然后就可以運行編譯了,這個用的不是數(shù)據(jù)庫,因為要求是用“文件”來實現(xiàn)數(shù)據(jù)的讀寫,所以我們的作業(yè)就是用“文件”來寫的

代碼片段和文件信息
#include??
#include??
#include??
#include?//輸入/輸出文件流類?
using?namespace?std;?
const?int?Maxr=100;//最多的讀者?
const?int?Maxb=100;//最多的圖書?
const?int?Maxbor=5;//每位讀者最多借五本書?
//讀者類實現(xiàn)對讀者的信息的描述?
FILE?*fp;
class?Reader?
{?
private:?
int?tag;?//刪除標記?1:已刪?0:未刪?
int?no;?//讀者編號?
char?name[10];?//讀者姓名?
int?borbook[Maxbor];//所借圖書?
char?jieshu[30][20];//借出去的圖書的書名
public:?
Reader()?{}?
char?*getname()?{return?name;}?//獲取姓名?
int?gettag()?{return?tag;}?//獲取刪除標記?
int?getno()?{return?no;}?//獲取讀者編號?
void?setname(char?na[])?//設置姓名?上面那個getname函數(shù)?會用到的,就是將na[]數(shù)組的內(nèi)容存放到name中
{?
strcpy(namena);?//實現(xiàn)字符串的復制功能
}?
void?delbook(){?tag=1;?}//設置刪除標記?1:已刪?0:未刪?當執(zhí)行刪除操作的函數(shù)時,
//就將tag的值置為1,這個1在上面的獲取刪除標記的gettag()函數(shù)中也要用到
void?addreader(int?nchar?*na)//增加讀者?其中的n為讀者的編號,na[]則是指的讀者的姓名,用一個指向字符串的指針來表示
{?
tag=0;?//讀者刪除標記為0
no=n;?//獲取讀者編號,就是上面的那個n
strcpy(namena);?//將na的值復制給name
for(int?i=0;i borbook[i]=0;?
}?
void?borrowbook(int?bookidchar?bname[20])//借書操作?以所借書的編號來借
{?
for(int?i=0;i {?
if?(borbook[i]==0)
{?
borbook[i]=bookid;?
for(int?j=0;j<20;j++)
{
jieshu[i][j]=bname[j];
}
return;?
}?
}?
}?
int?retbook(int?bookid)//還書操作?
{?
for(int?i=0;i {?
if(borbook[i]==bookid)?
{?
borbook[i]=0;?
return?1;?
}?
}?
return?0;?
}?
void?disp()//讀出讀者信息?
{?
cout?< for(int?i=0;i if(borbook[i]!=0)?
cout?< cout?<“]“< }?
};?
//讀者類庫,實現(xiàn)建立讀者的個人資料?
class?RDatabase?
{?
private:?
int?top;?//讀者記錄指針?
Reader?read[Maxr];//讀者記錄?
public:?
RDatabase()?//構造函數(shù),將reader.txt讀到read[]中?
{?
Reader?s;?
top=-1;?
fstream?file(“D:\\reader.txt“ios::in);//打開一個輸入文件?
while?(1)?
{?
file.read((char?*)&ssizeof(s));?//獲取讀者記錄的長度,然后將文件中的值賦給到s中去
if?(!file)break;?//知道file里面的內(nèi)容沒有了,就退出這個循環(huán)
top++;?//棧頂指針自動加一
read[top]=s;?//將棧頂指向的那個結點賦值,所賦得的值就是我們從文件中讀取到的各個s
}?
file.close();?//關閉?reader.txt?
}?
void?clear()//刪除所有讀者信息?
{?
top=-1;?//就是將棧頂指針指向最下面沒有元素的位置唄
}?
int?addreader(int?nchar?*na)//添加讀者時先查找是否存在?
{?
Reader?*p=query(n);?//按照編號來找找是不是存在
if?(p==NULL)?//說明原來的隊列里面沒有要添加的元素
{?
top++;?//將隊列的頭指針再加1
read[top].addreader(nna);?//這個addreader是在Reader中的公共函數(shù)
return?1;?//返回
}?
return?0;?
}?
Reader?*query(int?readerid)//按編號查找?
{?
for?(int?i=0;i<=top;i++)?
if?(read[i].getno()==readerid?&&?
read[i].gettag()==0)?//當所給的編號給出的那些中的某一個編號相同,而且這個編號并未被刪除時
{?
return?&read[i];?
}?
return?NULL;?//如果什么都沒有找到,那么就會返回NULL
}?
void?disp()?//輸出所有讀者信息?
{?
for?(int?i=0;i<=top;i++)?
if(read[i].gettag()==0)
read[i].disp();?
}?
void?readerdata();//讀者庫維護?在下面的那個函數(shù)中會有的,呵呵
~RDatabase()?//析構函數(shù),將read[]寫到reader.txt文件中?貌似這個在加中的時候有用到過~~
{?
fstream?file(“D:\\reader.txt
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2011-07-07?16:41??haoba\
?????目錄???????????0??2011-07-07?16:41??haoba\Debug\
?????文件??????569385??2011-07-07?15:55??haoba\Debug\haoba.exe
?????文件??????836024??2011-07-07?16:00??haoba\Debug\haoba.ilk
?????文件?????2180984??2011-07-07?14:23??haoba\Debug\haoba.pch
?????文件?????1156096??2011-07-07?15:55??haoba\Debug\haoba.pdb
?????文件??????403079??2011-07-07?16:00??haoba\Debug\qisi.obj
?????文件??????396477??2011-07-07?12:16??haoba\Debug\simple.obj
?????文件??????123904??2011-07-07?16:00??haoba\Debug\vc60.idb
?????文件??????118784??2011-07-07?15:55??haoba\Debug\vc60.pdb
?????文件????????4834??2011-07-07?12:21??haoba\haoba.dsp
?????文件?????????535??2011-07-07?10:07??haoba\haoba.dsw
?????文件???????58368??2011-07-07?16:41??haoba\haoba.ncb
?????文件???????60928??2011-07-07?16:41??haoba\haoba.opt
?????文件?????????969??2011-07-07?16:00??haoba\haoba.plg
?????文件???????13303??2011-07-07?15:55??haoba\qisi.cpp
?????文件???????11613??2011-07-07?12:34??haoba\simple.cpp
- 上一篇:西門子S7-300 PLC程序密碼破解
- 下一篇:MODBUS STM8S
評論
共有 條評論