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

📄 function.cpp

📁 C++程序设计课本源码,供学习计算机的大学生们参考
💻 CPP
字号:
#include <iostream.h>
#include "function.h"
#include <stdlib.h>

Library::Library()
{
	itemNum = 0;	
	readerNum = 0;	
	loanNum = 0;	
	managerNum = 0;
}

void Library::Run()
{
	int choice;
	char c;
	do{
		choice = ShowMainMenu();
		switch(choice){
		case 1:	
			CreateBibliotheca();
			break;
		case 2:
			CreateReader();
			break;
		case 3:
			CreateManager();
			break;
		case 4:
			do{
				Borrow();
				cout<<"继续吗?Y(y)es/N(n)o\n";
				cin>>c;
				cin.get();
			}while(c=='Y'||c=='y');
			break;
		case 5:
			do{
				Return();
				cout<<"继续吗?Y(y)es/N(n)o\n";
				cin>>c;
				cin.get();
			}while(c=='Y'||c=='y');
			break;
		case 6:
			do{
				Require();
				cout<<"继续吗?Y(y)es/N(n)o\n";
				cin>>c;
				cin.get();
			}while(c=='Y'||c=='y');
			break;
		case 0:			//	
			exit(0);
			break;
		default:
			cout<<"请重新选择!"<<endl;
			break;
		}
	}while(1);
}

void Library::CreateBibliotheca()  //	创建书目的成员函数
{
		char s1[40],s2[20],s3[10],c;
	long code;
	Item it;
	int i = itemNum;
	do{
		cout<<"创建书目:\n";
		cout<<"输入书目,用回车符间隔:书名 作者 分类号 条码 \n";
		cout<<"书名:";		cin.getline(s1,40);
		cout<<"作者:";		cin.getline(s2,20);
		cout<<"分类号:";	cin.getline(s3,10);
		cout<<"条码:";		cin>>code;

		it.SetTitle(s1);
		it.SetAuthor(s2);
		it.SetIndexCode(s3);
		it.SetCode(code);
		item.Insert(it);
		
		cout<<"继续吗?Y(y)es/N(n)o\n";
		cin>>c;
		cin.get();
		i++;
	}while(c=='Y'||c=='y');
	itemNum = i;
	return ;

}

void Library::CreateReader()	//	创建读者库的成员函数
{
	char s1[40],s2[20];	
	char c; 
	Reader rd;
	int j = readerNum,age;
	long code;
	do{
		cout<<"创建读者:\n";
		cout<<"输入读者信息,用回车符间隔:姓名 职务 年龄 借书证号 \n";
		cout<<"姓名:";			cin.getline(s1,40);
		cout<<"职务:";			cin.getline(s2,20);
		cout<<"年龄:";			cin>>age;
		cout<<"借书证号:";		cin>>code;
		
		rd.SetName(s1);
		rd.SetPosition(s2);
		rd.SetAge(age);
		rd.SetCode(code);
		reader.Insert(rd);
		cout<<"继续吗?Y(y)es/N(n)o\n";
		cin>>c;
		cin.get();
		j++;
	}while(c=='Y'||c=='y');
	readerNum = j;
	return ;
}
	
void Library::CreateManager()
{
	char c; 
	int j = managerNum;
	Manager mgr;
	do{
		cout<<"创建管理员:\n";
		cout<<"输入管理员信息,用回车符间隔:姓名 年龄 工号 \n";
		cout<<"姓名:";			cin>>mgr.Name;
		cout<<"年龄:";			cin>>mgr.Age;
		cout<<"工号:";			cin>>mgr.Code;
		manager.Insert(mgr);
		cout<<"继续吗?Y(y)es/N(n)o\n";
		cin>>c;
		cin.get();
		j++;
	}while(c=='Y'||c=='y');
	managerNum = j;
}

int Library::ShowMainMenu()			//	显示主菜单
{
	int c;
	cout<<"请选择: 首次使用,建议先依次选择1,2,3:\n";
	cout<<"1: 创建书目\n2: 创建读者库\n3: 创建管理员库\n4:借书\n5: 还书\n6: 查询\n0: 退出\n";
	cin>>c;
	cin.get();
	return c;
}

void Library::Borrow()	//	借书操作
{
	int code,barcode;
	Loan ln;
	DblNode<Item> *ti;
	DblNode<Manager> *tm;
	DblNode<Reader> *tr;
	cout<<"请输入借书证号\n";
	cin>>code;
	tr = reader.Find(code);
	if(tr){												//若找到读者
		cout<<"借书,请输入书本条码:\n";
		cout<<"书名\t作者\t分类号\t条码\n";
		item.ShowList();								//	查找书
		cin>>barcode;
		ti = item.Find(barcode);
		if(ti)											//	若与书目中某本书条码相同
		{ 
			cout<<"请选择管理员工号:\n";
			cout<<"姓名\t年龄\t工号\n";
			manager.ShowList();				
			cin>>code;
			tm = manager.Find(code);					//	查找管理员
			if(tm){										//若找到
				tr->Info.AddBook(ti->GetInfo());		//   	添加到读者所借书  
				item.Remove(ti);						//		从可借阅书中删除借出书
				itemNum--;
				ln.reader = tr->GetInfo();				//	添加借阅信息	
				ln.item = ti->GetInfo();
				ln.manager = tm->GetInfo();
				ln.Code = ti->GetInfo().GetCode();
				loan.Insert(ln);
			}
			else { 
				cout<<"没有此工号,请重新输入!";
				return;
			}
		}
		else { cout<<"没有此条码,请重新输入!"; return;}		
	}
	else { cout<<"没有此借书证号,请重新输入!";return;}
	return ;
}

void Library::Return()	//	还书操作
{
	int code,barcode;
	DblNode<Loan> *tl;
	DblNode<Reader> *tr;
	cout<<"还书,请输入借书证号\n";
	cin>>code;
	tr = reader.Find(code);
	if(tr)
	{
		cout<<"这是您所借书,请选择待还书的条码\n";
		tr->Info.ShowBooks();
	}
	else{ cout<<"没有此号码,请重新选择!\n"; return;}

	cin>>barcode;
	tl = loan.Find(barcode);						//查找借阅信息		
	if(tl)	{
		if(tl->Info.GetCode()==barcode&&tl->Info.reader.GetCode()==code)
		{
		tr->Info.DelBook(tl->GetInfo().item);		//  从读者所借书中删除所还书
		item.Insert(tl->GetInfo().item);			//		添加到可借阅书中
		itemNum++;
		loan.Remove(tl);						      //		删除借阅信息
		loanNum--;
		}
	}	else{ cout<<"此书未借出,请重新选择!\n"; return;}
	return;
}

void Library::Require()	//	通过借书证号查询所借书
{
	int code;
	
	cout<<"查询,请输入借书证号\n";
	cin>>code;
	DblNode<Reader> *tr;
	tr = reader.Find(code);
	if(tr)
	{
		cout<<"这是您的借阅情况:\n";
		tr->Info.ShowBooks();
	}
	else{ cout<<"没有此号码,请重新选择!\n"; return;}
	return;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -