⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 用c++写的图书管理系统.Using.cpp.to.write.the.book.management.system
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	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 + -