关闭

课程设计.图书信息管理系统

521人阅读 评论(0) 收藏 举报
分类:
/****************库函数的调用************************************/
#include<string>
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;


/**********************定义全局变量****************************/
#define N   100  //宏替换   
void menu();//显示菜单 
string p;//p作为接收菜单选项的字符串
void domain();
/********************自定义结构体图书管理**************************/

class book
{
private:
	string name, date,author,address;//名字、出版日期、作者、存放地址
public:
	book(){}
	~book(){}
	friend class Information;
};

/******************覆盖*******************************************/
class Information
{
private:
	book book1[N];
	int NUM;//用来计算图书数目       
public:
	Information()
	{
		NUM = 0;
	}
	void search();     //查找图书信息
	void write();       //录入图书信息
	void delet();         //删除图书信息
	void show();          //显示图书信息
	void save();//图书信息以文件形式保存 
};

/*****************************菜单函数*******************************/
void menu()
{
	system("cls");
	cout << "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓";
	cout << "┃****************   ☆   图 书 信 息 管 理 系  统    ☆   ****************** ┃";
	cout << "┃********** ★★★★★        ★★★★★★★         ★★★★★  *********** ┃";
	cout << "┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫";
	cout << "┃****************★  ☆          1.录入图书信息        ☆  ★****************┃";
	cout << "┃****************★  ☆          2.删除图书信息        ☆  ★****************┃";
	cout << "┃****************★  ☆          3.查找图书信息        ☆  ★****************┃";
	cout << "┃****************★  ☆          4.显示图书信息        ☆  ★****************┃";
	cout << "┃****************★  ☆          5.文件保存信息        ☆  ★****************┃";
	cout << "┃****************★  ☆          0.安全退出系统        ☆  ★****************┃";
	cout << "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛";
	cout << " 请输入您的选择(0--5):"; cout << endl;
}
void Information::write()//图书信息录入函数实现 
{
	char a;
	do
	{
		NUM++;
		cout << "\n请输入第" << NUM << "个图书信息:\n";
		cout << "\t名字:";
		cin >> book1[NUM].name;
		cout << "\t出版日期:";
		cin >> book1[NUM].date;
		cout << "\t作者:";
		cin >> book1[NUM].author;
		cout << "\t存放地址:";
		cin >> book1[NUM].address;
		cout << "是否要继续录入图书信息(Y/N):";
		cin >> a;

	} while (a == 'Y' || a == 'y');

}



void Information::show()//图书信息显示函数实现 
{
	if (NUM <= 0)
	{
		cout << "没有图书信息存入,系统将返回主菜单" << endl;
		menu();
	}
	else
		cout << "已保存的图书信息如下:" << endl;
	cout << setw(10) << "名字" << setw(10) << "出版日期" << setw(10) << "作者" << setw(10) << "存放地址" << endl;
	for (int i = 1; i <= NUM; i++)    
		cout << setw(10) << book1[i].name << setw(10) << book1[i].date << setw(10) << book1[i].author << setw(10) << book1[i].address << endl;
}

void Information::delet()//图书信息删除函数实现 
{
	char a;
	string b;
	do
	{
		cout << "请你输入要删除信息的图书名字: ";
		cin >> b;
		int n = 1, m;
		int flag = 1;
		while (flag)
		{
			for (; n <= NUM; n++)
			{
				if (b == book1[n].name)
				{
					flag = 0;
					m = n;
					break;
				}
			}
			if (flag)
			{
				cout << "不存在此图书,请重新输入:";
				n = 0;
				cin >> b;
			}
		}
		cout << "图书信息如下:" << endl;
		cout << setw(10) << "名字" << setw(10) << "出版日期" << setw(10) << "作者" << setw(10) << "存放地址" << endl;
		cout << setw(10) << book1[m].name << setw(10) << book1[m].date << setw(10) << book1[m].author << setw(10) << book1[m].address << endl;
		cout << endl;
		cout << "是否确认删除该图书信息(Y/N):";
		cin >> a;
		if (a == 'Y' || a == 'y')
		{
			cout << "删除成功!" << endl;
			for (int j = m; j < NUM; j++)
				book1[j] = book1[j + 1];
			NUM--;
			break;
		}
		else break;
	} while (a == 'n' || a == 'N');
}
void Information::search()
{
	int y;
	cout << "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓";
	cout << "┃****************★  ☆          1.作者查找信息        ☆  ★****************┃";
	cout << "┃****************★  ☆          2.姓名查找信息        ☆  ★****************┃";
	cout << "┃****************★  ☆          0.立即返回菜单        ☆  ★****************┃";
	cout << "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛";
	cout << "输选择(0-2):";
	cin >> y;
	while (y<0 || y>2)
	{
		cout << "输入有误,请重新输入:";
		cin >> y;
	}
	if (y == 1)
	{
		string num2;
		cout << "请输入要查询的图书的作者:";
		cin >> num2;
		int j = 1, k;
		int flag = 1;
		while (flag)
		{
			for (; j <= NUM; j++)
			{
				if (num2 == book1[j].author)
				{
					flag = 0;
					k = j;
					cout << "图书信息如下:" << endl;
					cout << setw(10) << "名字" << setw(10) << "出版日期" << setw(10) << "作者" << setw(10) << "存放地址" << endl;
					cout << setw(10) << book1[k].name << setw(10) << book1[k].date << setw(10) << book1[k].author << setw(10) << book1[k].address << endl;
					break;
				}
			}
			if (flag)
			{
				flag = 0;
				cout << "不存在此图书\n返回主菜单" << endl;
				break;
			}
		}
	}
	else if (y == 2)
	{
		string name2;
		cout << "请输入要查询的图书的名字:";
		cin >> name2;
		int j2 = 1, k2;
		int flag2 = 1;
		while (flag2)
		{
			for (; j2 <= NUM; j2++)
			{
				if (name2 == book1[j2].name)
				{
					flag2 = 0;
					k2 = j2;
					cout << "图书信息如下:" << endl;
					cout << setw(10) << "名字" << setw(10) << "出版日期" << setw(10) << "作者" << setw(10) << "存放地址" << endl;
					cout << setw(10) << book1[k2].name << setw(10) << book1[k2].date << setw(10) << book1[k2].author << setw(10) << book1[k2].address << endl;        
					break;
				}
			}
			if (flag2)
			{
				flag2 = 0;
				cout << "不存在此图书!!\n返回主菜单" << endl;
				break;
			}
		}
	}
	else if (y == 0)
	{
	};
}
void Information::save()//图书信息文件保存函数实现 
{
	if (NUM <= 0)
	{
		cout << "没有图书信息存入,系统将返回主菜单" << endl;
		menu();
	}
	else
	{
		ofstream fout;
		fout.open("D:\\Book.txt", ios::out);
		cout << "文件正在保存......请稍候!!" << endl;
		cout << "数据保存成功!!!" << endl;
		fout << "已保存图书信息如下:" << endl;
		fout << setw(10) << "名字" << setw(10) << "出版日期" << setw(10) << "作者" << setw(10) << "存放地址" << endl;
		for (int i = 1; i <= NUM; i++)      
			fout << setw(10) << book1[i].name << setw(10) << book1[i].date << setw(10) << book1[i].author << setw(10) << book1[i].address << endl;
		fout.close();
	}
}

void domain()//主菜单函数实现 
{
	Information w;
	while (1)
	{
		system("cls");
		menu();
		int i;
		cin >> i;
		while (!(i >= 0 && i <= 5))
		{
			cout << "输入有误,请重新输入:" << endl;
			cin >> i;
		}
		switch (i)
		{
		case 1:
			w.write(); break;
		case 2:
			w.delet(); break;
		case 3:
			w.search(); break;
		case 4:
			w.show(); break;
		case 5:
			w.save(); break;
		case 0:
			cout << "系统退出!!" << endl;
			exit(0);
		default:
			break;
		}
		cout << "是否返回主菜单?  Y/N" << endl;
		cin >> p;
		if (p == "n" || p == "N")
		{
			cout << "系统退出!!" << endl;
			exit(0);
		}
	}
}
int main()
{
	domain();
	return 0;
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4078次
    • 积分:241
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:0篇
    • 译文:0篇
    • 评论:9条
    评论排行
    最新评论