资源简介
请在使用前在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
- 上一篇:西门子S7-300 PLC程序密码破解
- 下一篇:MODBUS STM8S
相关资源
- 小区电动车充电桩设备.zip
- 基于VFP图书管理系统设计
- 广工数据课程设计-图书管理系统
- 图书管理系统设计文档可行性分析、
- VFP---图书管理系统
- keil下51单片机程序的烧写过程
- 2017年电子设计大赛专科组简易水清检
- 图书管理系统面向对象分析与设计报
- 编程珠玑中文版及源码
- 图书管理简单实现springmvc+mbaits文档
- 数据库 图书管理系统
- 基于WEB的图书管理系统的设计与实现
- MISRA C 2012 Specifications,MISRA C 2012 协议
- 基于linux在线电子词典
- 32F103测频
- ios开发的图书管理系统
- 基于web的图书管理系统(源代码)1
- pb做的图书管理系统
- 基于单片机的室内空气净化系统
- C程序设计语言 第二版新 PDf (绝对超
- 图书管理系统2.0.zip
- 基于Linux的设备分配及磁盘调度
- 基于Linux系统的航班信息与订票系统
- C安全编码标准中文版
- 图书管理系统,大一实习
- 动态称重,四节称 源码,
- C程序设计第四版.谭浩强(带详细书签
- [BUPT]计算导论OJ上机题参考源代码 +
- STM32F103+四个VL53L0代码2020新.zip
- 高级语言程序设计.迟成文
评论
共有 条评论