• 大小: 1.24MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-27
  • 语言: 其他
  • 标签: 图书管理  C语言  

资源简介

请在使用前在D盘中设置两个txt文件(reader.txt和book.txt)然后就可以运行编译了,这个用的不是数据库,因为要求是用“文件”来实现数据的读写,所以我们的作业就是用“文件”来写的

资源截图

代码片段和文件信息

#include  
#include  
#include  
#include //输入/输出文件流类 
using namespace std; 
const int Maxr=100;//最多的读者 
const int Maxb=100;//最多的图书 
const int Maxbor=5;//每位读者最多借五本书 
//读者类实现对读者的信息的描述 

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函数 会用到的,就是将na[]数组的内容存放到name中

strcpy(namena); //实现字符串的复制功能

void delbook(){ tag=1; }//设置删除标记 1:已删 0:未删 当执行删除操作的函数时,
//就将tag的值置为1,这个1在上面的获取删除标记的gettag()函数中也要用到
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 << setw(5) << no < for(int i=0;i if(borbook[i]!=0) 
cout << borbook[i] <<“ “< cout << “]“<
}; 
//读者类库,实现建立读者的个人资料 
class RDatabase 

private: 
int top; //读者记录指针 
Reader read[Maxr];//读者记录 
public: 
RDatabase() //构造函数,将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里面的内容没有了,就退出这个循环
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中的公共函数
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();//读者库维护 在下面的那个函数中会有的,呵呵
~RDatabase() //析构函数,将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

评论

共有 条评论