📄 main.cpp
字号:
file.seekp(0,ios::beg);
file.write((char *)&d_sum,sizeof(d_sum));
file.seekp(sizeof(d_sum),ios::beg);
for(int i=0;i<d_sum;i++){
file.write((char *)&dz[i],sizeof(READERSHIP));
file.seekp(sizeof(d_sum)+(i+1)*sizeof(READERSHIP),ios::beg);
}
delete dz;
}
int reader::chaxun(int ID,int k)
{
int i=0;
while(i!=d_sum){
if(ID==dz[i].d_ID){
if(k==1)
cout<<dz[i].d_name;
return i;
}
i++;
}
return -1;
}
//读者信息处理类
class treader:public reader
{
public:
treader(int n=0):reader(0){}
void display(fstream &file);//显示查询状态
void tchaxun(fstream &file);//查询读者信息
void select();//主要的界面,用于选择
void addreader(fstream &file);//添加读者
void xiugai(fstream &file);//修改读者信息
void del(fstream &file);//删除读者库
};
void treader::display(fstream &file)
{
duqu(file);
int j;
int i=0;
while(i<d_sum)
{
cout<<dz[i].d_ID<<" "<<dz[i].d_name<<" "<<dz[i].sex<<" "<<dz[i].age
<<" "<<dz[i].address<<" [";
for(j=0;j<shulian;j++) if(dz[i].kejie[j]!=0)cout<<dz[i].kejie[j]<<"|";
cout<<"]"<<endl;
i++;
}
delete dz;
}
void treader::tchaxun(fstream &file)
{
char d_name[8];//读者名
cout<<"输入你要查询的读者:";
cin>>d_name;
duqu(file);
int i=0;
while(i!=d_sum){
if(!strcmp(d_name,dz[i].d_name)){
cout<<dz[i].d_ID<<" "<<dz[i].d_name<<" "<<dz[i].sex<<" "<<dz[i].age
<<" "<<dz[i].address<<" [";
for(int j=0;j<shulian;j++) if(dz[i].kejie[j]!=0)cout<<dz[i].kejie[j]<<"|";
cout<<"]"<<endl;
break;}
i++;
}
if(i==d_sum)cout<<"没有找到该读者!";
delete dz;
}
void treader::addreader(fstream &file)
{
READERSHIP d;
duqu(file);
cout<<"输入读者编号:";
cin>>d.d_ID;
if(d_sum!=0&&chaxun(d.d_ID,0)!=-1)
{
cout<<"读者已经从在!"<<endl;
return ;
}
cout<<"输入姓名:";
cin>>d.d_name;
cout<<"输入性别:";
cin>>d.sex;
cout<<"输入年龄:";
cin>>d.age;
cout<<"输入地址:";
cin>>d.address;
for(int j=0;j<shulian;j++)d.kejie[j]=0;
d_sum++;
file.seekp(0,ios::beg);
file.write((char *)&d_sum,sizeof(d_sum));
file.seekp(sizeof(d_sum),ios::beg);
if(d_sum!=1){
for(int i=0;i<d_sum-1;i++){
file.write((char *)&dz[i],sizeof(READERSHIP));
file.seekp(sizeof(d_sum)+(i+1)*sizeof(READERSHIP),ios::beg);
}
}
file.write((char *)&d,sizeof(READERSHIP));
cout<<"添加成功!"<<endl;
//if(d_sum!=1)
delete dz;
}
void treader::xiugai(fstream &file)
{
int i;
duqu(file);
cout<<"输入读者编号:";
cin>>i;
i=chaxun(i);
if(i==-1)
{
cout<<"你要修改的读者不存在。"<<endl;
delete dz;
}
else {
cout<<" "<<dz[i].sex<<" "<<dz[i].age
<<" "<<dz[i].address<<" [";
for(int j=0;j<shulian;j++) if(dz[i].kejie[j]!=0)cout<<dz[i].kejie[j]<<"|";
cout<<"]"<<endl;
cout<<"输入姓名:";
cin>>dz[i].d_name;
cout<<"输入性别:";
cin>>dz[i].sex;
cout<<"输入年龄:";
cin>>dz[i].age;
cout<<"输入地址:";
cin>>dz[i].address;
update(file);
}
}
void treader::del(fstream &file)
{
int i;
duqu(file);
cout<<"全部删除请输入:-1"<<endl;
cout<<"输入你要删除的读者编号:";
cin>>i;
if(i==-1) {
d_sum=0;
file.seekp(0,ios::beg);
file.write((char *)&d_sum,sizeof(d_sum));
}
else
{
i=chaxun(i);
if(i==-1)
{
cout<<"找不到读者编号。"<<endl;
}
else {
cout<<" "<<dz[i].sex<<" "<<dz[i].age
<<" "<<dz[i].address<<" [";
for(int j=0;j<shulian;j++) if(dz[i].kejie[j]!=0)cout<<dz[i].kejie[j]<<"|";
cout<<"]"<<endl;
d_sum--;
file.seekp(0,ios::beg);
file.write((char *)&d_sum,sizeof(d_sum));
int j=0;
int k;
for(k=0;j<d_sum+1;j++)
{
if(i!=j){
file.seekp(sizeof(d_sum)+(j-k)*sizeof(READERSHIP),ios::beg);
file.write((char *)&dz[j],sizeof(READERSHIP));
}
else k=1;
}
cout<<"删除成功"<<endl;
}
}
delete dz;
}
void treader::select()
{
int i;
fstream file("2.txt",ios::in|ios::out);
while(1)
{
cout<<"\t\t\t读者信息"<<endl;
cout<<"\t\t\t1、显示"<<endl;
cout<<"\t\t\t2、查询"<<endl;
cout<<"\t\t\t3、添加"<<endl;
cout<<"\t\t\t4、修改"<<endl;
cout<<"\t\t\t5、删除"<<endl;
cout<<"\t\t\t6、退出"<<endl;
cout<<"请选择:";
cin>>i;
switch(i)
{
case 1:display(file);break;
case 2:tchaxun(file);break;
case 3:addreader(file);break;
case 4:xiugai(file);break;
case 5:del(file);break;
case 6:break;
default:cout<<"输入有误"<<endl;
}
if(i==6)break;
}
file.close();
}
//借书函数
void jieshu()
{
cout<<"\t\t\t\t*************************"<<endl;
cout<<"\t\t\t\t\t借书中"<<endl;
cout<<"\t\t\t\t*************************"<<endl;
fstream file1("1.txt",ios::in|ios::out);
fstream file2("2.txt",ios::in|ios::out);
book b;
reader d;
int bk,dz;
int i,j;
cout<<"输入读者编号:";
cin>>dz;
d.duqu(file2);
cout<<"读者姓名:";
if(j=d.chaxun(dz)!=-1)
{
cout<<endl;
cout<<"输入图书编号:";
cin>>bk;
b.duqu(file1);
i=b.chaxun(bk,1);
if(i==1){
if(d.xieru(j-1,bk,1)==1){
cout<<"借书成功!"<<endl;
b.update(file1);
d.update(file2);}
else cout<<"已经超过借书数量!"<<endl;
}else if(i==0) cout<<"此书已经借走!"<<endl;
else cout<<"找不到要借的书!"<<endl;
}else cout<<"输入读者编号有误!"<<endl;
file1.close();
file2.close();
}
void huanshu()
{
cout<<"\t\t\t\t*************************"<<endl;
cout<<"\t\t\t\t\t还书中"<<endl;
cout<<"\t\t\t\t*************************"<<endl;
fstream file1("1.txt",ios::in|ios::out);
fstream file2("2.txt",ios::in|ios::out);
book b;
reader d;
int bk,dz;
int i,j;
cout<<"输入读者编号:";
cin>>dz;
d.duqu(file2);
cout<<"读者姓名:";
if(j=d.chaxun(dz)!=-1)
{
cout<<endl;
cout<<"输入图书编号:";
cin>>bk;
b.duqu(file1);
i=b.chaxun(bk,2);
if(i==1){
if(d.xieru(j-1,bk,2)==1){
cout<<"还书成功!"<<endl;
b.update(file1);
d.update(file2);
}
else cout<<"1此书已经还了!"<<endl;
}else if(i==0)cout<<"2此书已经还了!"<<endl;
else cout<<"找不到要还的书!"<<endl;
}else cout<<"输入读者编号有误!"<<endl;
file1.close();
file2.close();
}
int main()
{
int i=0;
treader q;
tbook p;
/******************************************************/
//在调试环境中,或者没有初始化文本文件而解决的错误问题
//当文本文件删除了没有此段程序就会出现乱码
ifstream file("1.txt",ios::binary);
file.seekg(0,ios::beg);
file.read((char *)&i,sizeof(i));
file.close();
//初始化
if(i==0){
ofstream file("1.txt",ios::binary);
file.seekp(0,ios::beg);
file.write((char *)&i,sizeof(i));
file.seekp(sizeof(i),ios::beg);
file.write((char *)&i,sizeof(i));
file.close();
}
i=0;
ifstream file1("2.txt",ios::binary);
file1.seekg(0,ios::beg);
file1.read((char *)&i,sizeof(i));
file1.close();
//初始化
if(i==0){
ofstream file1("2.txt",ios::binary);
file1.seekp(0,ios::beg);
file1.write((char *)&i,sizeof(i));
file1.close();
}
/****************************************************/
while(1)
{
cout<<"\t\t\t图书管理系统"<<endl;
cout<<"\t\t\t1、借书"<<endl;
cout<<"\t\t\t2、还书"<<endl;
cout<<"\t\t\t3、图书管理"<<endl;
cout<<"\t\t\t4、读者管理"<<endl;
cout<<"\t\t\t5、退出"<<endl;
cout<<"请选择:";
cin>>i;
switch(i)
{
case 1:jieshu();break;
case 2:huanshu();break;
case 3:p.select();break;
case 4: q.select();break;
case 5:break;
default:cout<<"输入有误"<<endl;
}
if(i==5)break;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -