利用C++和QT界面实现大一结课内容:媒体库管理系统图书馆【原创,中文注释详细】

在大一结课的时候,第一次以团队的形式完成项目。图书馆中的资料很多,如果能分类对其资料流通进行管理,将会带来很多方便,因此需要有一个媒体管理系统。图书馆主要有两类物品资料:图书和光盘。
这两类物品共同具有的属性有:编号、标题、作者等。其中图书类增加出版社、ISBN号、页数等信息;光盘类增加出品者的名字、出品年份和视频时长等信息。第一次接触到这个题目 ,内容很多,但是并不复杂。可以由一个及很多,例如通讯录管理系统,银行管理系统,成绩管理系统。来分析数据,利用数组来存放数据便于理解。后期关于源代码在QT上的处理。直接上c++源代码:

#include<iostream>
using namespace std;
#include<string>
#define MAX 1000
#define MAXX 1000
class Book//图书类的编写
{
public:
	string name;//书的标题
	string wname;//书的作者
	int sex;//书的编号
	int age;//书的页数
	string phone;//ISBN号
	string addr;//出版社



};
class detile//管理图书类
{
public:
	Book a[MAX];//保存联系人数组;
	int size = 0;//记录联系人的个数

};
class CD
{
public:
	string Name;//光碟的标题
	string Wname;//光碟的作者
	int Sex;//光碟编号
	string Age;//出品年份
	string WWname;//出品者的名字
	string Hour;//视频时长

};
class AA//管理光盘类
{
public:
	CD b[MAXX];
	int Size = 0;
};
void showMenu()//全组共同实现,打印菜单
{
	//显示菜单
	cout << "此作品由王思儒,胡向挺,余权,冯鑫华,郭霖,陈盈灵,热依,成婧共同完成" << endl;
	cout << "********************************" << endl;
	cout << "1.添加图书" << endl;
	cout << "2.显示图书" << endl;
	cout << "3.删除图书" << endl;
	cout << "4.查找图书" << endl;
	cout << "5.修改图书" << endl;
	cout << "6.清空图书" << endl;
	cout << "7.添加光碟" << endl;
	cout << "8.显示光碟" << endl;
	cout << "9.删除光碟" << endl;
	cout << "10.查找光碟" << endl;
	cout << "11.修改光碟" << endl;
	cout << "12.清空光碟" << endl;
	cout << "0.退出图书馆媒体管理系统" << endl;
	cout << "******************************" << endl;





}
void addperson(detile*abs)//添加图书类由王思儒同学实现
{
	if (abs->size == MAX)//如果size等于MAX的最大值  返回  退出添加功能
	{
		cout << "不能添加新的数据" << endl;//如果图书类加满
		return;
	}
	else
	{
		string name;//添加书标题	
		string Name;//添加作者名字


		cout << "请输入书的标题" << endl;//输入提示
		cin >> name;
		abs->a[abs->size].name = name;//添加标题
		cout << "请输入作者的名字" << endl;
		cin >> Name;//添加作者名
		abs->a[abs->size].wname = Name;
		cout << "请输入书的编号【注意只能是数字】" << endl;
		int sex = 0;
		int ture = 1;

		while (ture)
		{
			int ret = 1;
			cin >> sex;//添加图书编号
			for (int i = 0; i < abs->size; i++)//遍历判断图书编号是否存在
			{
				if (abs->a[i].sex == sex)
				{
					cout << "编号重复请重新添加" << endl;//如果存在编号输出提示
					ret = 0;
				}

			}
			if (ret)
			{
				abs->a[abs->size].sex = sex;//编号添加实现
				cout << "添加成功" << endl;
				break;
			}
			else
			{
				cout << "重新添加" << endl;//如果编号存在提示用户重新添加。
			}
		}


		cout << "请输入书的页数" << endl;
		int age = 0;
		cin >> age;

		abs->a[abs->size].age = age;//存储书的页数







		cout << "请输入书的出版社" << endl;//利用字符串写书的出版社
		string b;//定义字符串
		cin >> b;//输入
		abs->a[abs->size].addr = b;//将输入的结果保存到出版社
		cout << "请输入此书的ISBN号" << endl;
		cin >> abs->a[abs->size].phone;//输入ISBN号
		cout << "添加成功无重复编号" << endl;
		abs->size++;//添加完成实现容量增加操作
		system("pause");
		system("cls");//清除

















	}


}
void showperson(detile*abs)//显示联系人,利用detile类对象比访问类的属性
{
	if (abs->size == 0)//当没有图书的时候 输出没有图书
		cout << "当前没有图书" << endl;
	else
	{
		for (int i = 0; i < abs->size; i++)
		{
			cout << " 书的标题" << "《" << abs->a[i].name << "》";//常规访问操作
			cout << "书的作者:" << abs->a[i].wname;//常规访问操作
			cout << " 书的页数" << abs->a[i].age;//常规访问操作
			cout << "   书的编号注意不能重复:" << abs->a[i].sex;//常规访问操作
			cout << "书的ISBN号" << abs->a[i].phone;//常规访问操作
			cout << " 书的出版社" << abs->a[i].addr << endl;//常规访问操作


		}
	}
	system("pause");
	system("cls");

}
void deleperson(detile*abs)
{
	cout << "请输入要删除图书的标题" << endl;//输入提示
	string name;//输入一个name通过这个来访问图书
	int ret = 0;//用来记录删除的图书在数组中的位置
	if (abs->size == 0)
	{
		cout << "当前没有图书无法删除";//如果size等于0为空
		system("pause");
	}
	cin >> name;
	int flag = 0;//查找计数器
	for (int i = 0; i <= abs->size; i++)//查找的关键操作
	{

		if (name == abs->a[i].name)
		{
			ret = i;//记录查找元素的位置
			flag = 1;
			break;

		}
	}


	if (flag)//如果找到
	{

		for (int j = ret; j < abs->size; j++)
		{
			abs->a[j] = abs->a[j + 1];//后往前移进行删除操作
			
			cout << "删除成功" << endl;
			system("pause");
			system("cls");
		}
		abs->size--;
	}
	else
	{
		cout << "未查找到该图书名 无法删除" << endl;
		system("pause");
	}
	system("cls");
}



void lookperson(detile*abs)//查找图书功能实现
{
	
		cout << "请输入你要查找图书的标题" << endl;
	if (abs->size == 0)
		cout << "目前没有该图书,请添加" << endl;
	else
	{
		string name;
		cin >> name;
		int j = 0;
		for (int i = 0; i < abs->size; i++)//挨个遍历
		{

			if (abs->a[i].name == name)
			{
				cout << "查找到:" << name << endl;
				system("pause");
				cout << " 标题:" << "《" << abs->a[i].name << "》 ";
				cout << "作者名:" << abs->a[i].wname << " ";
				cout << " 页数:" << abs->a[i].age << " ";
				cout << "   编号:" << abs->a[i].sex << " ";
				cout << "ISBN号:" << abs->a[i].phone << " ";
				cout << " 出版社:" << abs->a[i].addr << endl;
				j++;
				system("pause");
				system("cls");
				break;
			}

		}
		if (j == 0)//计数器J==0那么没有这个书
		{
			cout << "查无此书" << endl;
			system("pause");
		}
	}










}
void cperson(detile*abs)//修改功能实现
{
	int i; int c;
	cout << "请输入你要修改图书的标题" << endl;//通过图书的标题来查询
	if (abs->size == 0)
		cout << "目前没有图书,请添加" << endl;//size为0 图书为空
	else
	{
		string name;
		cin >> name;
		int flag = 0;//计数器
		for (i = 0; i < abs->size; i++)//先用循环判断是否有此书
		{


			if (name == abs->a[i].name)
			{
				flag = 1;
				c = i;


			}
		}

		if (flag)
		{
			int j = 0;
			cout << "查找到" << name << "请修改" << endl;
			system("pause");
			cout << " 标题:" << "《" << abs->a[c].name << "》";
			cout << "书的作者:" << abs->a[c].wname;
			cout << "书的页数: " << abs->a[c].age;
			cout << "   书的编号:" << abs->a[c].sex;
			cout << "书的ISBN号:" << abs->a[c].phone;
			cout << " 书的出版社:" << abs->a[c].addr << endl;
			cout << "请输入你要修改的内容" << endl;
			cout << "######################" << endl;
			cout << "1.标题,2.页数,3.书编号,4.ISBN号,5.出版社,6。作者姓名" << endl;
			cin >> j;
			switch (j)
			{
			case 1:
			{
				cout << "请输入修改标题" << endl;
				cin >> abs->a[c].name;
				cout << "标题修改成功" << endl;
				break;
			}
			case 2:
			{
				cout << "请输入修改页数" << endl;
				cin >> abs->a[c].age;
				cout << "页数修改成功" << endl;
				break;
			}
			case 3:
			{
				cout << "请输入修改编号" << endl;
				cin >> abs->a[c].sex;
				cout << "编号修改成功" << endl;
				break;
			}
			case 4:
			{
				cout << "请输入修改ISBN号" << endl;
				cin >> abs->a[c].phone;
				cout << "IBSN号修改成功" << endl;
				break;
			}
			case 5:
			{
				cout << "请输入修改出版社" << endl;
				cin >> abs->a[c].addr;
				cout << "出版社修改成功" << endl;
				break;
			}
			case 6:
			{
				cout << "请输入修改作者姓名" << endl;
				cin >> abs->a[c].wname;
				cout << "作者姓名修改成功" << endl;
				break;
			}
			}


		}
		else
		{
			cout << "无此图书无法修改" << endl;
		}






	}
	system("pause");
	system("cls");


}
void clearperson(detile*abs)
{
	abs->size = 0;//size等于0  形式上全部清楚
	cout << "清空图书成功" << endl;
	system("pause");
	system("cls");
}//图书类 到此结束
void Addperson(AA*ABS)//添加图书类由王思儒同学实现
{
	if (ABS->Size == MAXX)//如果size等于MAX的最大值  返回  退出添加功能
	{
		cout << "不能添加新的数据" << endl;//如果图书类加满
		return;
	}
	else
	{
		string name;//添加书标题	
		string Name;//添加作者名字


		cout << "请输入光碟的标题" << endl;//输入提示
		cin >> name;
		ABS->b[ABS->Size].Name = name;//添加标题
		cout << "请输入作者的名字" << endl;
		cin >> Name;//添加作者名
		ABS->b[ABS->Size].Wname = Name;
		cout << "请输入光碟的编号【只能为数字】" << endl;
		int sex = 0;
		int ture = 1;

		while (ture)
		{
			int ret = 1;
			cin >> sex;//添加图书编号
			for (int i = 0; i < ABS->Size; i++)//遍历判断图书编号是否存在
			{
				if (ABS->b[i].Sex == sex)
				{
					cout << "编号重复请重新添加" << endl;//如果存在编号输出提示
					ret = 0;
				}

			}
			if (ret)
			{
				ABS->b[ABS->Size].Sex = sex;//编号添加实现
				cout << "添加成功" << endl;
				break;
			}
			else
			{
				cout << "重新添加" << endl;//如果编号存在提示用户重新添加。
			}
		}


		cout << "请输入出品年份" << endl;
		string age;
		cin >> age;

		ABS->b[ABS->Size].Age = age;//存储光碟的年数







		cout << "请输入出品者姓名" << endl;//利用字符串写书的出版社
		string b;//定义字符串
		cin >> b;//输入
		ABS->b[ABS->Size].WWname = b;//将输入的结果保存到出版社
		cout << "请输入视频时长" << endl;
		cin >> ABS->b[ABS->Size].Hour;//输入ISBN号
		cout << "添加成功无重复编号" << endl;
		ABS->Size++;//添加完成实现容量增加操作
		system("pause");
		system("cls");//清除

















	}


}
void Showperson(AA*ABS)//显示光盘类,利用AA类对象比访问类的属性
{
	if (ABS->Size == 0)//当没有光盘的时候 输出没有光盘
		cout << "当前没有光盘" << endl;
	else
	{
		for (int i = 0; i < ABS->Size; i++)
		{
			cout << " 光盘的标题" << "《" << ABS->b[i].Name << "》";//常规访问操作
			cout << "光盘的作者:" << ABS->b[i].Wname;//常规访问操作
			cout << " 光盘的出品年数" << ABS->b[i].Age;//常规访问操作
			cout << "   光盘的编号注意不能重复:" << ABS->b[i].Sex;//常规访问操作
			cout << "光盘的出品人" << ABS->b[i].WWname;//常规访问操作
			cout << " 光盘的时间" << ABS->b[i].Hour << endl;//常规访问操作


		}
	}
	system("pause");
	system("cls");

}
void Deleperson(AA*ABS)
{
	cout << "请输入要删除光盘的标题" << endl;//输入提示
	string name;//输入一个name通过这个来访问光盘
	int ret = 0;//用来记录删除的光盘在数组中的位置
	if (ABS->Size == 0)
	{
		cout << "当前没有光盘类无法删除";//如果size等于0为空
		system("pause");
	}
	cin >> name;
	int flag = 0;//查找计数器
	for (int i = 0; i <= ABS->Size; i++)//查找的关键操作
	{

		if (name == ABS->b[i].Name)
		{
			ret = i;//记录查找元素的位置
			flag = 1;
			break;

		}
	}


	if (flag)//如果找到
	{

		for (int j = ret; j < ABS->Size; j++)
		{
			ABS->b[j] = ABS->b[j + 1];//后往前移进行删除操作
			
			cout << "删除成功" << endl;
			system("pause");
			system("cls");
		}
		ABS->Size--;
	}
	else
	{
		cout << "未查找到该光盘名 无法删除" << endl;
		system("pause");
	}
	system("cls");
}
void Lookperson(AA*ABS)//查找图书功能实现
{
	cout << "请输入你要查找图书的标题" << endl;
	if (ABS->Size == 0)
		cout << "目前没有该图书,请添加" << endl;
	else
	{
		string name;
		cin >> name;
		int j = 0;
		for (int i = 0; i < ABS->Size; i++)//挨个遍历
		{

			if (ABS->b[i].Name == name)
			{
				cout << "查找到:" << name << endl;
				system("pause");
				cout << " 标题:" << "《" << ABS->b[i].Name << "》 ";
				cout << "作者名:" << ABS->b[i].Wname << " ";
				cout << " 出品年数:" << ABS->b[i].Age << " ";
				cout << "   编号:" << ABS->b[i].Sex << " ";
				cout << "出品人:" << ABS->b[i].WWname << " ";
				cout << " 视频时长" << ABS->b[i].Hour << endl;
				j++;
				system("pause");
				system("cls");
				break;
			}

		}
		if (j == 0)//计数器J==0那么没有这个书
		{
			cout << "查无此书" << endl;
			system("pause");
		}
	}










}
void Cperson(AA*ABS)//修改功能实现
{
	int i; int c;
	cout << "请输入你要修改光盘类的标题" << endl;//通过图书的标题来查询
	if (ABS->Size == 0)
		cout << "目前没有图书,请添加" << endl;//size为0 图书为空
	else
	{
		string name;
		cin >> name;
		int flag = 0;//计数器
		for (i = 0; i < ABS->Size; i++)//先用循环判断是否有此CD
		{


			if (name == ABS->b[i].Name)
			{
				flag = 1;
				c = i;


			}
		}

		if (flag)
		{
			int j = 0;
			cout << "查找到" << name << "请修改" << endl;
			system("pause");
			cout << " 标题:" << "《" << ABS->b[c].Name << "》";
			cout << "光盘的作者:" << ABS->b[c].Wname;
			cout << "光盘的出版时间: " << ABS->b[c].Age;
			cout << "   光盘的编号:" << ABS->b[c].Sex;
			cout << "光盘的出品人:" << ABS->b[c].WWname;
			cout << " 光盘的时间:" << ABS->b[c].Hour << endl;
			cout << "请输入你要修改的内容" << endl;
			cout << "######################" << endl;
			cout << "1.标题,2.出版时间,3.光盘编号,4.出品人,5.视频时长,6。作者姓名" << endl;
			cin >> j;
			switch (j)
			{
			case 1:
			{
				cout << "请输入修改标题" << endl;
				cin >> ABS->b[c].Name;
				cout << "标题修改成功" << endl;
				break;
			}
			case 2:
			{
				cout << "请输入修改出版时间" << endl;
				cin >> ABS->b[c].Age;
				cout << "出版时间修改成功" << endl;
				break;
			}
			case 3:
			{
				cout << "请输入修改编号" << endl;
				cin >> ABS->b[c].Sex;
				cout << "编号修改成功" << endl;
				break;
			}
			case 4:
			{
				cout << "请输入修改出品人" << endl;
				cin >> ABS->b[c].WWname;
				cout << "出品人修改成功" << endl;
				break;
			}
			case 5:
			{
				cout << "请输入修改视频时间" << endl;
				cin >> ABS->b[c].Hour;
				cout << "视频时间修改成功" << endl;
				break;
			}
			case 6:
			{
				cout << "请输入修改作者姓名" << endl;
				cin >> ABS->b[c].Wname;
				cout << "作者姓名修改成功" << endl;
				break;
			}
			}


		}
		else
		{
			cout << "无此光盘无法修改" << endl;
		}






	}
	system("pause");
	system("cls");


}
void Clearperson(AA*ABS)
{
	ABS->Size = 0;//size等于0  形式上全部清楚
	cout << "清空图书成功" << endl;
	system("pause");
	system("cls");
}//光盘类 到此结束




int main()
{
	detile abs;//创建管理图书类的对象
	AA ABS;//创建管理光盘类的对象


	Book a;

	int ture = 1;
	int select = 0;//用户选择输入;
	while (ture)
	{
		showMenu();
		cin >> select;
		switch (select)
		{
		case 1:
			addperson(&abs);//图书类添加
			break;
		case 2:
			showperson(&abs);//图书类显示
			break;
		case 3:
			deleperson(&abs);//图书类删除
			break;
		case 4:
			lookperson(&abs);//图书类查询
			break;
		case 5:
			cperson(&abs);//图书类修改
			break;
		case 6:
			clearperson(&abs);//图书类清空
			break;

		case 7:
			Addperson(&ABS);//光盘类添加
			break;

		case 8:
			Showperson(&ABS);//光盘类显示
			break;

		case 9:
			Deleperson(&ABS);//光盘类删除
			break;

		case 10:
			Lookperson(&ABS);//光盘类查询
			break;

		case 11:
			Cperson(&ABS);//光盘类修改
			break;

		case 12:
			Clearperson(&ABS);//光盘类清空
			break;






		case 0:
			cout << "欢迎下次使用" << endl;
			system("pause");
			return 0;
			break;
		}
	}

	system("pause");
	return 0;
}

这是源代码在QT上可以运行 然后我们展示一下利用QT界面做完后的成果:在这里插入图片描述
这里由六个功能其中,在删除物品栏里面还创新了清空功能,对于大作业有很强的创新能力。 在这里插入图片描述
在这里插入图片描述
以上是QT实现后的成果,根据多次删改后 无任何BUG做大作业的同学可以联系我要QT实现的EXE程序和源代码全部内容,关注点赞转发后 私聊Q:1204734797;随时在线等各位爱学习的小伙伴

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coding小胡虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值