📄 tsglxt.txt
字号:
程序说明书
一. 各模块的功能:
readtxt(),读读者文件writetxt(),写读者文件addreader(reader s)
,添加读者delreader(int number),删除读者searchreader(int
number),查找读者readerdata()
,读者数据管理readbtxt(),读图书文件writebtxt(),写图书文件addbook(libook
s),添加图书delbook(int number),删除图书searchbook(int
number),查找图书bookdata(),图书数据管理borbook(),读者借书retbook(),读者还书main()主函数
二. 程序流程图:
void main() :
三. 用户手册:1,使用程序前先对图书库,读者库进行初始化,然后才能进行相应的操作2,本程序又一定的纠错功能
①调用子函数对功能进行相应的选择的时候,如果选择的端子不正确,则提示错误
②对添加的读者函数操作的时候如果读者库已经满了,读者申请的编号已经存在的情况则提示错误
③对删除读者函数操作的时候,如果输入的读者编号不存在则提示错误
④对查找读者函数操作的时候,如果输入的读者编号不存在的时候则提示错误
⑤对新书入库函数操作的时候,如果书库已经满或者申请的书编号已经存在,则提示错误
⑥对删除的图书函数进行操作的时候,如果要删除的图书编号不存在,则提示出错
⑦对查找函数操作的时候,如果要查找的图书函数不存在,则提示出错
⑧对借书函数进行操作时,如果读者编号不存在,不能在借书,所要借的书已经借出,或者要借的书不存在的时候,则提示出错
⑨对还书函数操作的时候,如果读者编号不存在,所还图书不为图书馆所有时,则提示出错。
四. 原程序
#include "iostream.h"
#include "iomanip.h"
#include "string.h"
#include "fstream.h"
#define maxbor 3
#define maxreader 100
#define maxbook 400
struct reader //定义读者结构体
{
int number;
char name[10];
int borbook[maxbor];
};
struct libook //定义图书结构体
{
int flag;
int number;
char name[20];
char writer[20];
char print[20];
float price;
};
int topbook;
int topreader;
reader read[maxreader];
libook book[maxbook];
void readtxt() //读入读者数据
{
reader p;
topreader=-1;
fstream file("reader.txt",ios::in);
while(1)
{
file.read((char*)&p,sizeof(p));
if(!file)break;
topreader++;
read[topreader]=p;
}
file.close();
}
void writetxt() //写入读者数据
{
fstream file("reader.txt",ios::out);
for(int i=0;i<=topreader;i++)
file.write((char*)&read[i],sizeof(read[i]));
file.close();
}
void addreader(reader s) //新增读者
{
readtxt();
if(topreader>=maxreader)
{
cout<<"读者库已经满!"<<endl;
return;
}
for(int i=0;i<=topreader;i++)
if(read[i].number==s.number)
{
cout<<"此编号已经存在,请重新输入信息!"<<endl;
return;
}
topreader++;
read[topreader].number=s.number;
strcpy(read[topreader].name,s.name);
for(i=0;i<maxbor;i++)
read[topreader].borbook[i]=0;
writetxt();
}
void delreader(int number) //删除读者
{
readtxt();
for(int i=0;i<topreader;i++)
{
if(read[i].number==number)
{
for(int m=0;m<maxbor;m++)
if(read[i].borbook[m]!=0)
{
cout<<"此读者还有图书没有还,等还后在申请删除此读者"<<endl;
return;
}
for(int j=i;j<topreader;j++)
{
read[j].number=read[j+1].number;
strcpy(read[j].name,read[j+1].name);
for(int k=0;k<maxbor;k++)
read[j].borbook[k]=read[j+1].borbook[k];
}
topreader--;
writetxt();
return;
}
}
if(read[topreader].number=number)
{
topreader--;
writetxt();
return;
}
cout<<"查无次人!"<<endl;
return;
}
void searchreader(int number) //查找读者
{
readtxt();
for(int i=0;i<=topreader;i++)
if(read[i].number==number)
{
cout<<"编号:"<<read[i].number<<endl;
cout<<"姓名:"<<read[i].name<<endl;
cout<<"所借的书的编号";
if(read[i].borbook[0]==0)
{
cout<<": 无借书"<<endl;
return;
}
else
{
for(int
j=0;read[i].borbook[j]!=0&&j<maxbor;j++)cout<<read[i].borbook[j]<<"
";
return;
}
}
cout<<"查无此人"<<endl;
}
void readerdata() //读者数据维护
{
int choice, number;
reader s;
while(1)
{
cout<<"读者维护 1 :新增 2:删除 3:查找 0:退出"<<endl;
cin>>choice;
switch(choice)
{
case 0: return;
case 1: cout<<"输入读者编号:";
cin>>s.number;
cout<<"输入读者姓名:";
cin>>s.name;
addreader(s);
break;
case 2: cout<<"输入删除读者的编号:";
cin>>number;
delreader(number);
break;
case 3: cout<<"请出入要查找的读者的编号:";
cin>>number;
searchreader(number);
break;
default: cout<<"输入错误,请重新输入"<<endl;
break;
}
}
}
void readbtxt() //读入图书数据
{
libook p;
topbook=-1;
fstream file("book.txt",ios::in);
while(1)
{
file.read((char*)&p,sizeof(p));
if(!file)break;
topbook++;
book[topbook]=p;
}
file.close();
}
void writebtxt() //写入图书数据
{
fstream file("book.txt",ios::out);
for(int i=0;i<=topbook;i++)
file.write((char*)&book[i],sizeof(book[i]));
file.close();
}
void addbook(libook s) //新增图书
{
readbtxt();
if(topbook>=maxbook)
{
cout<<"书库已经满"<<endl;
return;
}
for(int i=0;i<=topbook;i++)
if(book[i].number==s.number)
{
cout<<"此编号已经存在,请重新输入信息"<<endl;
return;
}
topbook++;
book[topbook].number=s.number;
strcpy(book[topbook].name,s.name);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -