课程设计报告媒体库管理系统.docx
《课程设计报告媒体库管理系统.docx》由会员分享,可在线阅读,更多相关《课程设计报告媒体库管理系统.docx(44页珍藏版)》请在冰豆网上搜索。
课程设计报告媒体库管理系统
集团标准化工作小组[Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]
课程设计报告媒体库管理系统
C++面向对象程序设计
课程设计报告
课程名称C++面向对象程序设计
课题名称媒体库管理系统
专业网络工程
班级551
学号
姓名高慧鹏
指导教师
2014年12月22日
(一)、课程设计题目:
媒体库管理系统
(二)、目的与要求:
1、目的:
(1)要求学生达到熟练掌握C++语言的基本知识和技能;
(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求:
(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
(2)要求在设计的过程中,建立清晰的类层次;
(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;
(4)在系统的设计中,至少要用到面向对象的一种机制。
3、创新要求:
在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。
(三)、设计方法和基本原理:
功能要求:
1)添加物品
程序主要完成图书馆三类物品信息的添加,要求编号唯一。
如果添加了重复编号的物品时,则提示用户数据添加重复并取消添加;如果物品库已满,则提示不能再添加新的物品。
2)查询物品
可按照三种方式进行物品的查询。
·按标题查询:
·按编号查询:
·按类别查询:
如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
3)显示物品库
可显示当前物品库中所有的物品信息。
4)修改物品
可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
5)删除物品
对已添加的物品信息进行删除。
如果当前物品库为空,则提示“物品库为空!
”并返回操作;否则输入要删除的编号,根据编号删除该物品信息,如果没有找到该物品信息,则提示“该编号不存在”。
6)统计功能
输出当前物品库中总物品数,以及按物品类别,统计出当前物品中各类别的物品数并显示。
7)保存物品
将当前系统中物品信息存入文件中。
8)读取物品
将保存在文件中的物品信息读入到当前系统中,以供用户使用。
在完成以上基本功能的基础上,可自行进行扩展或完善。
3、问题的解决方案:
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系包括属性和行为;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述(包括属性和方法);
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告以及系统使用说明书
2
3
3
1.系统需求分析
系统设计的目的与意义:
图书馆中的资料很多,如果能分类对其资料流通进行管理,将会带来很多方便,因此需要有一个媒体库管理系统。
系统功能需求:
本系统有四个类:
Base类、Book类、CD类、Draw类,存储资料信息、编号、标题、作者、评级。
Base为父类,其余三个为子类,每个子类具有自己的特点。
1.基础信息的添加功能
程序能够任意添加图书、CD视频光盘、图画信息以及各自对应的相关信息。
2.修改功能
对已添加的记录(图书、CD视频光盘、图画信息以及各自对应的相关信息)进行查找和修改。
3.删除功能
对已添加的记录(图书、CD视频光盘、图画信息以及各自对应的相关信息)进行查找和删除。
如果当前系统中没有相应的记录,则提示“记录为空!
”并返回操作;否则输入要删除的编号对该记录进行删除,如果没有找到,则提示相应的记录不存在。
4.查询功能
1 可根据资料的编号查询资料及其内容。
2 可根据标题查找。
3 根据类别查询
如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
5.保存功能
将当前系统中各类记录存入文件中。
6.读取功能
将保存在文件中的信息读入到当前系统中,以供用户使用。
2.总体设计
系统功能分析:
系统通过调用函数来实现信息录入、信息修改、信息删除、信息查询以及数据保存文件等功能。
add()函数用于添加信息;modify()函数用来修改信息;del()函数用来修改信息;refer()函数用来查询数据信息;read()函数用于将文件中的数据读取到内存中;save()函数用于将内存中的信息存入文件内;主函数main()用于调用这些函数。
系统功能模块划分与设计:
系统定义了Base基类、Book类、CD类、Draw类这四个类,定义了add()、modify()、del()、read()、save()、refer()等函数来实现系统所需功能。
系统功能模块图:
类的设计
(1)Base类(抽象类)的设计:
图Base类
(2)图书类的设计:
图班级类
(3)CD类的设计:
图学生类
(4)图片类的设计:
图课程类
(6)各个类的关系描述:
3.详细设计及实现
Base类(抽象类)的实现
classBase
{
public:
voidmainmenu();
virtualvoidadd(){};回图书信息管理菜单.\n2.返回主菜单.\n";
cin>>flag;
}
if(flag==1)
{
();
cout<<"请选择\n:
";
cin>>k;
}
elseif(flag==2)
{
break;
}
else
{
cout<<"选择错误,请重新输入。
\n";
gotoloop;
}
}
};
voidBook:
:
add()o=i;
cout<<"请依次输入数据标题、作者、评级(未评级、一般、成人、儿童)、出版社、ISBN号、页数:
"<cin>>b_[i].headline>>b_[i].write>>b_[i].rating>>b_[i].publisher>>b_[i].ISBN_No>>b_[i].pages;
}
p1->save();
};
voidBook:
:
refer()eadline)==0)
cout<<"图书编号:
"<"<"<"<"<""<<"ISBN号:
"<"<<""<Sleep(10);
}
}
break;
case2:
{
cout<<"请输入要查找的图书编号"<cin>>;
for(j=0;j{
if==b_[j].No)
cout<<"图书编号:
"<"<"<"<"<""<<"ISBN号:
"<"<<""<Sleep(10);
}
}
break;
case3:
{
loop2:
cout<<"请输入要查找的图书类别(未评级、一般、成人、儿童)"<cin>>;
if=="未评级"||"一般"||"成人"||"儿童")
{
for(j=0;j{
if(strcmp,b_[j].rating)==0)
cout<<"图书编号:
"<"<"<"<"<""<<"ISBN号:
"<"<<""<Sleep(10);
}
}
else
{
cout<<"输入有误请重新输入:
\n";
gotoloop2;
}
}
break;
case4:
break;
default:
{
cout<<"选择错误,请重新选择:
\n";
gotoloop1;
}
break;
}
};
voidBook:
:
display()
{
for(j=1;j{
cout<<"图书编号:
"<"<"<"<"<""<<"ISBN号:
"<"<<""<Sleep(10);
}
};
voidBook:
:
modify()
{
intk;
cout<<"请输入要修改的图书的编号"<cin>>;
loop3:
cout<cout
<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"<<<"┃┃"<<<"┃◇修改标题-----------①◇┃"<<<"┃◇修改作者-----------②◇┃"<<<"┃◇修改评级-----------③◇┃"<<<"┃◇修改出版社---------④◇┃"<<<"┃◇修改ISBN号---------⑤◇┃"<<<"┃◇修改页数-----------⑥◇┃"<<<"┃◇返回菜单-----------0◇┃"<<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"<<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<cout<cout<<"请选择要修改的内容的编号:
\n";
cin>>k;
if(k>=0&&k<7){
switch(k)
{
case1:
{
charmheadline[20];
cout<<"请输入修改后的标题:
"<cin>>mheadline;
strcpy(b_[].headline,mheadline);
}
break;
case2:
{
charmwrite[20];
cout<<"请输入修改后的作者:
"<cin>>mwrite;
strcpy(b_[].write,mwrite);
}
break;
case3:
{
charmrating[20];
cout<<"请输入修改后的分级:
(未评级、一般、成人、儿童)"<cin>>mrating;
strcpy(b_[].rating,mrating);
}
break;
case4:
{
charmpublishe[20];
cout<<"请输入修改后的出版社:
"<cin>>mpublishe;
strcpy(b_[].publisher,mpublishe);
}
break;
case5:
{
charmISBN_No[20];
cout<<"请输入修改后的ISBN号:
"<cin>>mISBN_No;
strcpy(b_[].ISBN_No,mISBN_No);
}
break;
case6:
{
intmpages;
cout<<"请输入修改后的页数:
"<cin>>mpages;
b_[].pages=mpages;
}
break;
case0:
break;
};}
else
{
cout<<"选择错误,请重新输入:
\n";
gotoloop3;
}
};
voidBook:
:
del()
{
cout<<"请输入要删除的图书的编号"<cin>>;
for(j=;j{
b_[j].No=b_[j+1].No;
strcpy(b_[j].headline,b_[j+1].headline);
strcpy(b_[j].write,b_[j+1].write);
strcpy(b_[j].rating,b_[j+1].rating);
strcpy(b_[j].publisher,b_[j+1].publisher);
strcpy(b_[j].ISBN_No,b_[j+1].ISBN_No);
b_[j].pages=b_[j+1].pages;
num1--;
}
};
voidBook:
:
Info()
{
cout<<"当前物品库中总物品数:
"<};
voidBook:
:
save()
{
ofstreamout;
("图书信息.txt");
out<for(intk=1;k<=num1;k++)
{
out<}
();
};
voidBook:
:
read()
{
ifstreamin;
("图书信息.txt");
in>>num1;
while(num1>=count_book)
{
in>>b_[count_book].No>>b_[count_book].headline>>b_[count_book].write>>b_[count_book].rating>>b_[count_book].publisher>>b_[count_book].ISBN_No>>b_[count_book].pages;
count_book++;
}
();
}
voidBook:
:
Book_menu()
{
cout<<"\n\n ----------☆欢迎使用媒体库管理系统☆----------"<cout<<"\n\n ----------☆图书信息管理☆----------"<cout
<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"<<<"┃┃"<<<"┃◆添加图书-----------①◆┃"<<<"┃◆查询图书-----------②◆┃"<<<"┃◆显示图书-----------③◆┃"<<<"┃◆修改图书-----------④◆┃"<<<"┃◆删除图书-----------⑤◆┃"<<<"┃◆统计图书-----------⑥◆┃"<<<"┃◆退出系统-----------0◆┃"<<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"<<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<};
CD类的实现
classCD:
publicBase
{
public:
voidCD_manage();回CD信息管理菜单.\n2.返回主菜单.\n";
cin>>flag;
}
if(flag==1)
{
();
cout<<"请选择\n:
";
cin>>k;
}
elseif(flag==2)
{
break;
}
else
{
cout<<"选择错误,请重新输入:
\n";
gotoloop6;
}
}
};
voidCD:
:
add()o=i3;
cout<<"请分别输入标题、作者、评级(未评级、一般、成人、儿童)、出品人的姓名、出品年份、视频时长"<cin>>v_[i3].headline>>v_[i3].write>>v_[i3].rating>>v_[i3].name>>v_[i3].year>>v_[i3].time;
Sleep(10);
}
p3->save();
};
voidCD:
:
refer()eadline)==0)
cout<<"视频编号:
"<"<"<"<"<""<<"出品年份:
"<"<<""<Sleep(10);
}
}
break;
case2:
{
cout<<"请输入要查找的视频编号"<cin>>;
for(j3=0;j3{
if==v_[j3].No)
cout<<"视频编号:
"<"<"<"<"<""<<"出品年份:
"<"<<""<Sleep(10);
}
}
break;
case3:
{
cout<<"请输入要查找的视频类别(未评级、一般、成人、儿童)"<cin>>;
for(j3=0;j3{
if(strcmp,v_[j3].rating)==0)
cout<<"视频编号:
"<"<"<"<"<""<<"出品年份:
"<"<<""<Sleep(10);
}
}
break;
case4:
break;
default:
{
cout<<"选择有误,请重新输入:
\n";
gotoloop7;
}
}
};
voidCD:
:
display()
{
for(j3=1;j3{
cout<<"视频编号:
"<"<"<"<"<""<<"出品年份:
"<"<<""<Sleep(10);
}
};
voidCD:
:
modify()eadline,mheadline);
}
break;
case2:
{
charmwrite[20];
cout<<"请输入修改后的作者:
"<cin>>mwrite;
strcpy(v_[].write,mwrite);
}
break;
case3:
{
charmrating[20];
cout<<"请输入修改后的分级:
(未评级、一般、成人、儿童)"<cin>>mrating;
strcpy(v_[].rating,mrating);
}
break;
case4:
{
charmname[20];
cout<<"请输入修改后出品人的姓名:
"<cin>>mname;
strcpy(v_[].name,mname);
}
break;
case5:
{
c