媒体库管理系统 C++.docx
《媒体库管理系统 C++.docx》由会员分享,可在线阅读,更多相关《媒体库管理系统 C++.docx(66页珍藏版)》请在冰豆网上搜索。
媒体库管理系统C++
目录
第一章绪论2
1.1课程设计的目的2
1.2课程设计的背景和意义2
1.3课程设计环境2
第二章需求分析3
2.1问题描述3
2.2功能要求3
2.3问题的解决方案3
第三章系统设计4
3.1总体设计4
3.1.1系统功能分析:
4
3.1.2系统功能模块划分与设计:
4
3.1.3继承类描述4
3.2系统功能模块图:
5
3.2.1主要功能5
3.2.2对象的行为5
3.2.3系统功能模块图:
5
3.3类的设计6
4.图画类的设计8
第四章详细设计及功能实现8
4.1资料信息的读取功能的实现8
4.2资料信息的添加功能的实现9
4.3资料信息的查询功能的实现9
4.4资料信息的修改功能的实现11
4.5资料信息的删除功能的实现12
4.6资料信息的统计功能的实现13
4.7资料信息的功能的实现13
4.8资料信息的保存功能的实现14
4.9主函数实现14
第五章系统测试16
5.1主菜单模块测试:
16
5.2添加模块测试:
16
5.3查询模块测试17
5.4修改功能模块测试模块:
17
5.5显示功能模块测试18
5.6删除功能模块测试:
19
5.7统计功能模块测试:
19
5.8退出功能模块测试20
第六章:
课程总结20
第七章:
心得体会20
参考文献21
源代码22
第一章绪论
1.1课程设计的目的
课程设计是课程教学必不可缺的一个重要环节,可加深学生对该课程所学内容的进一步的了解与巩固,是将计算机课程与实际问题相连接的关键步骤。
通过课程设计,能够提高学生的分析问题,解决问题,要能很好的完成课程设计,要求我们必须掌握在学习中学到的知识,所以要我们对课本中学的知识要熟悉且掌握,从而运用所学知识解决实际问题的能力,因而必须给予足够的重视。
1.2课程设计的背景和意义
1.2.1课程设计的背景
1.理论研究基础
(1)C++语言的基本知识和技能,如:
类与对象,指针,输入/输出流,文本文件的建立保存;
(2)面向对象程序设计的基本思路和方法。
2.技术层面的支持
(1)研究这些结构的存储、显示,并有查找、添加、删除、修改、查询、统计、保存信息、载入等功能。
(2)类定义、类对象、继承、组合、多态和文件的输入/输出等内容。
1.2.2课程设计的意义
(1)通过课程设计的综合训练,培养了学生分析解决实际问题和编程等实际动手能力。
帮助了同学系统的掌握C++课程的主要内容。
(2)综合实际应用的需求是课程设计既覆盖教学所要求的知识点,有接近工程的实际需求,训练自己实际分析问题和解决问题以及编程的能力。
做到理论结合实际。
1.3课程设计环境
(1)在MicrosoftVisualC++6.0开发平台上编写程序源代码,修改,增加功能,通过编译、连接,直到完全无误,最终执行程序,反复输入合理的以及不合理的数据进行测试并进一步完善。
(2)硬件:
学校机房
(3)软件:
MicrosoftVisualC++6.0开发平台
第二章需求分析
2.1问题描述
图书馆中的资料很多,如果能分类对其资料流通进行管理,将会带来很多方便,因此需要有一个媒体库管理系统。
图书馆共有三大类物品资料:
图书、视频光盘、图画。
这三类物品共同具有的属性有:
编号、标题、作者、评级(未评级,一般,成人,儿童)等。
其中图书类增加出版社、ISBN号、页数等信息;视频光盘类增加出品人的姓名、出品年份和视频时长等信息;图画类增加出品国籍、作品的长和宽(以厘米计,整数)等信息。
2.2功能要求
(1)基本功能
1)添加物品:
主要完成图书馆三类物品信息的添加,要求编号唯一。
当添加了重复的编号时,则提示数据添加重复并取消添加;当物品库已满,则提示不能再添加新的数据。
2)查询物品
可按照三种方式来查询物品,分别为:
按标题查询:
输入标题,输出所查询的信息,若不存在该记录,则提示“该标题不存在!
”
按编号查询:
输入编号,输出所查询的信息,若不存在该记录,则提示“该编号不存在!
”;
按类别查询:
输入类别,输出所查询的信息,若不存在记录,则提示“该类别没有物品!
”;
3)显示物品库:
输出当前物品库中所有物品信息,每条记录占据一行。
4)编辑修改物品:
可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
5)删除物品:
主要完成图书馆物品信息的删除。
如果当前物品库为空,则提示“物品库为空!
”,并返回操作;否则,输入要删除的编号,根据编号删除该物品的记录,如果该编号不在物品库中,则提示“该编号不存在”。
6)统计信息
输出当前物品库中总物品数,以及按物品类别,统计出当前物品中各类别的物品数并显示。
7)物品存盘:
将当前程序中的物品信息存入文件中。
8)读出物品:
从文件中将物品信息读入程序。
2.3问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述;
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告。
第三章系统设计
3.1总体设计
3.1.1系统功能分析:
系统通过调用函数来实现信息录入、信息修改、信息删除、信息查询以及数据保存文件等功能。
add()函数用于录入信息;modify()函数用来修改信息;del()函数用来修改信息;;read()函数用于将文件中的数据读取到内存中;save()函数用于将内存中的信息存入文件内;主函数main()用于调用这些函数。
3.1.2系统功能模块划分与设计:
系统定义了book类、cd类、picture类这三个类,定义了add()、modify()、del()、read()、save()、search()、show()、total()等函数来实现系统所需功能。
3.1.3继承类描述
book类相比基类,Book类增加了出版社的名字,ISBN号(可简单认为是一个由0-9,‘-’,A-Z构成的字符串),书的页数这三个数据成员。
CD类相比基类,Video类增加了出品者的名字,出品年份和视频时长(以分钟计,整数)这三个数据成员。
picture类相比基类,Painting类增加了出品国籍,作品的长与宽(以厘米计,整数)这三个数据成员。
3.2系统功能模块图:
3.2.1主要功能
(1)能够打开用户指定的文本文件,并将数据读入。
(2)对于文件中的物品信息,能提供一系列操作:
新增一个物品、删除物品、修改物品信息、显示满足搜索条件的物品。
(3)能够将用户操作完毕后的文件进行保存到指定文件名的文本文件中。
3.2.2对象的行为
BookCDpicture类型的物品的行为
1.相应类型物品的信息输入
2.相应类型物品的信息输出
3.物品信息从文件中\控制台读入
4.物品信息输出到文件中\控制台
媒体库的行为
1.打开一个文件读入其中的相关物品信息;
2.增加对其中的物品进行增加;
3.对其中的物品进行查找;
4.对其中的物品进行修改;
5.对其中的物品进行删除;
6.显示媒体库中所有物品信息;
0.退出媒体库并保存媒体库信息;
3.2.3系统功能模块图:
3.3类的设计
3.3.1.Base类(抽象类)的设计:
3.3.2.图书类的设计:
3.3.3光盘类的设计:
3.3.4.图画类的设计
第四章详细设计及功能实现
4.1资料信息的读取功能的实现
该功能用于对资料信息进行读取,可将保存在相应的文本文档中的各类人员的信息读取到内存中;
该功能在book类中的构造函数中,主函数中定义该类的对象,运行时自动将各文件中的资料信息读取出来;
voidbook:
:
read()
{
fstreambookfile("图书信息.txt",ios:
:
in|ios:
:
out);
bookfile>>b2[count_book].num>>b2[count_book].title>>b2[count_book].author>>b2[count_book].rank>>b2[count_book].press>>b2[count_book].ISBN>>b2[count_book].page;
while(!
bookfile.eof())
{
count_book++;bookfile>>b2[count_book].num>>b2[count_book].title>>b2[count_book].author>>b2[count_book].rank>>b2[count_book].press>>b2[count_book].ISBN>>b2[count_book].page;
}
bookfile.close();
}
4.2资料信息的添加功能的实现
该功能用于对资料信息进行添加,该功能分别调用base类中的查询函数,分别实现对图书、视频光盘、图画信息的添加
case1:
{
bookb3;
p=&b3;
cout<<"编号:
";cin>>b3.num;
cout<<"标题:
";cin>>b3.title;
cout<<"作者:
";cin>>b3.author;
cout<<"评级:
";cin>>b3.rank;
cout<<"出版社:
";cin>>b3.press;
cout<<"ISBN号:
";cin>>b3.ISBN;
cout<<"页数:
";cin>>b3.page;
cout<<"是否保存图书信息?
(y/n)\n";
cin>>out;
if(out=='y')
{
p->add();
p->save();
}
break;
}
voidbook:
:
add()
{
strcpy(b2[count_book].num,num);
strcpy(b2[count_book].title,title);
strcpy(b2[count_book].author,author);
strcpy(b2[count_book].rank,rank);
strcpy(b2[count_book].press,press);
strcpy(b2[count_book].ISBN,ISBN);
b2[count_book].page=page;
count_book++;
}
4.3资料信息的查询功能的实现
该功能用于对资料信息进行查询,可按照编号或标题或类别进行查询。
分别调用base类中的查询函数和各派生类中的显示函数,分别实现对图书、视频光盘、图画信息的查询.
voidbook:
:
search()
{
cout<<"请选择查询方式:
(1.标题,2.编号,3.类别,4.退出)";
intd,i;
cin>>d;
switch(d)
{
case1:
{
cout<<"请输入图书标题:
"<cin>>title;
for(i=0;i{
if(strcmp(b2[i].title,title)==0)
{
cout<<"您查找的图书信息为:
"<cout<cout<}
else
if(i==count_book-1)
cout<<"查找失败,请重新输入!
"<}
break;
}
case2:
{
cout<<"请输入图书编号:
"<cin>>num;
for(i=0;i{
if(strcmp(num,b2[i].num)==0)
{
cout<<"您查找的图书信息为:
"<cout<cout<}
else
if(i==count_book-1)
cout<<"查找失败,请重新输入!
"<}
break;
}
case3:
{
cout<<"请输入图书类别:
"<cin>>rank;
for(i=0;i{
if(strcmp(rank,b2[i].rank)==0)
{
cout<<"您查找的图书信息为:
"<cout<cout<}
else
if(i==count_book-1)
cout<<"查找失败,请重新输入!
";
}break;
}
case4:
break;
default:
cout<<"请重新输入!
";
}
}
4.4资料信息的修改功能的实现
该功能用于对资料信息进行修改,在查询到需要修改的资料后进行编辑,分别调用base类中查询及各类中的显示,删除,添加函数,分别实现对图书、视频光盘、图画信息的编辑.
case4:
{
bookb6;
p=&b6;
intindex;
p->show();
cout<<"请选择要修改的图书编号:
\n";
cin>>index;
cout<<"请输入要修改的图书:
"<cout<<"编号:
";cin>>b6.num;
cout<<"标题:
";cin>>b6.title;
cout<<"作者:
";cin>>b6.author;
cout<<"评级:
";cin>>b6.rank;
cout<<"出版社:
";cin>>b6.press;
cout<<"ISBN号:
";cin>>b6.ISBN;
cout<<"页数:
";cin>>b6.page;
cout<<"是否保存班级信息?
(y/n)\n";
cin>>out;
if(out=='y')
{
p->modify(index);
p->save();
cout<<"已完成修改"<system("pause");
}
break;
}
voidbook:
:
modify(intindex)
{
strcpy(b2[index-1].num,num);
strcpy(b2[index-1].title,title);
strcpy(b2[index-1].author,author);
strcpy(b2[index-1].rank,rank);
strcpy(b2[index-1].press,press);
strcpy(b2[index-1].ISBN,ISBN);
b2[index-1].page=page;
}
4.5资料信息的删除功能的实现
该功能用于对资料信息进行删除,在查询到需要删除的资料后进行删除,分别调用base类中的查询函数和各类中的显示,删除函数,分别实现对图书、视频光盘、图画信息的删除.
voidbook:
:
del(intb)
{
for(inti=b;i<=count_book-1;i++)
{
strcpy(b2[i-1].num,b2[i].num);
strcpy(b2[i-1].title,b2[i].title);
strcpy(b2[i-1].author,b2[i].author);
strcpy(b2[i-1].rank,b2[i].rank);
strcpy(b2[i-1].press,b2[i].press);
strcpy(b2[i-1].ISBN,b2[i].ISBN);
b2[i-1].page=b2[i].page;
}
count_book--;
}
4.6资料信息的统计功能的实现
该功能用于对资料信息进行统计,可统计资料的总数及各类别总数等信息
voidbook:
:
total()
{
intsum=0;
for(inti=1;i<=count_book;i++)
{
sum=sum+i;
}
cout<<"总的图书数目:
"<cout<for(i=0;i{
cout<}
}
4.7资料信息的功能的实现
该功能用于对资料信息进行显示,对各类资料按编号进行排序后调用各派生类的显示函数,可将各类资料的信息分别显示出来
voidbook:
:
show()
{
cout<for(inti=0;i{
cout<}
}
4.8资料信息的保存功能的实现
该功能用于对资料信息进行保存,可将各类资料的信息分别保存在不同的txt文本文档中,分别实现对图书,光盘,图画信息的保存。
该功能在base类中的析构函数中,在退出系统时,程序中的资料信息自动保存在相应文件中。
voidbook:
:
save()
{
ofstreambookfile;
bookfile.open("图书信息.txt");
for(inti=0;i<=count_book-1;i++)
bookfile<bookfile.close();
}
4.9主函数实现
在主函数中,定义一个book,CD,picture类的对象,调用资料管理函数实现各个功能。
voidmain()
{
//将各个文件中的数据依次读入内存
bookbb;
bb.read();
CDCC;
CC.read();
picturepp;
pp.read();
intchoice=1;//显示主菜单
while
(1)
{
cout<<"****************媒库管理系统主菜单****************"<cout<<"1、图书信息管理"<cout<<"2、光盘信息管理"<cout<<"3、图画信息管理"<cout<<"0、退出主菜单"<cout<<"请输入所要操作的编号:
";
cin>>choice;
switch(choice)
{
case1:
book_manage();break;
case2:
CD_manage();break;
case3:
picture_manage();break;
case0:
cout<<"感谢你的使用!
"<default:
cout