在大一结课的时候,第一次以团队的形式完成项目。图书馆中的资料很多,如果能分类对其资料流通进行管理,将会带来很多方便,因此需要有一个媒体管理系统。图书馆主要有两类物品资料:图书和光盘。
这两类物品共同具有的属性有:编号、标题、作者等。其中图书类增加出版社、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;随时在线等各位爱学习的小伙伴