一、设计内容与设计要求1.设计内容:媒体库管理系统设计问题描述图书馆中的资料很多,如果能分类对其资料流通进行管理,将会带来很多方便,因此需要有一个媒体库管理系统。图书馆共有三大类物品资料:图书、视频光盘、图画。这三类物品共同具有的属性有:编号、标题、作者、评级(未评级,一般,成人,儿童)等。其中图书类增加出版社、ISBN号、页数等信息;视频光盘类增加出品者的名字、出品年份和视频时长等信息;图画类增加出品国籍、作品的长和宽(以厘米计,整数)等信息。功能要求(1)添加物品:主要完成图书馆三类物品信息的添加,要求编号唯一。当添加了重复的编号时,则提示数据添加重复并取消添加;当物品库已满,则提示不能再添加新的数据。(2)查询物品可按照三种方式来查询物品,分别为:按标题查询:输入标题,输出所查询的信息,若不存在该记录,则提示“该标题不存在!”;按编号查询:输入编号,输出所查询的信息,若不存在该记录,则提示“该编号不存在!”;按类别查询:输入类别,输出所查询的信息,若不存在记录,则提示“该类别没有物品!”;(3)显示物品库:输出当前物品库中所有物品信息,每条记录占据一行。(4)编辑物品:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。(5)删除物品:主要完成图书馆物品信息的删除。如果当前物品库为空,则提示“物品库为空!”,并返回操作;否则,输入要删除的编号,根据编号删除该物品的记录,如果该编号不在物品库中,则提示“该编号不存在”。(6)统计信息输出当前物品库中总物品数,以及按物品类别,统计出当前物品中各类别的物品数并显示。(7)物品存盘:将当前程序中的物品信息存入文件中。(8)读出物品:从文件中将物品信息读入程序。问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系;(3)根据问题描述,设计系统的类层次;(4)完成类层次中各个类的描述;(5)完成类中各个成员函数的定义;(6)完成系统的应用模块;(7)功能调试;(8)完成系统总结报告。目录一.需求设计*************************************************07二.详细设计*************************************************08三.界面设计与各功能模块的实现*************************10四.系统调试*************************************************11五.使用说明及心得体会************************************12六.源代码****************************************************13一.需求分析要求用C++面向程序设计语言编写一媒体库管理系统,1、目的:1)要求学生达到熟练掌握C++语言的基本知识和技能;2)基本掌握面向对象程序设计的基本思路和方法;3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。2.系统设计的意义:系统要能够对相应的数据进行很好的测试,系统开始的密码系统有良好的保密性,系统的录入可录入相应的媒体的信息,系统的查询可查询媒体的作者、编号、评级、标题以及各种媒体独有的信息,系统的修改可修改媒体的错误信息,系统的删除可删除丢失媒体的信息。2.系统功能需求1.要求完成以下功能:1)能够从屏幕上读取一个媒体的信息并将信息存入到数据文件中。2)能够将指定的信息从文件中删除。3)能够按编号、标题、类别对媒体的信息进行检索并将检索结果显示在屏幕上。4)添加媒体时,编号唯一,若编号重复则不与添加。5)如果检索不到相应的信息应提示用户。3.系统功能流程图4.输入输出的要求1.输入的要求:通过主函数体调用其他函数应用系统主控界面包括媒体信息添加,查询,显示,密码系统登陆菜单管理员菜单其他人员菜单信息添加信息显示信息删除信息查询退出退出信息查询删除等功能模块。媒体信息录入功能完成媒体信息的输入。查询功能可以对数据各分类的记录进行查询。修改功能可以对数据各分类进行修改。删除功能可以对数据进行删除。2.输出的要求:1)能够按编号、标题、类别对媒体的信息进行检索并将检索结果显示在屏幕上。2)如果检索不到相应的信息应提示用户。二.详细设计1.类设计基类:Tushuguan数据成员:作者、编号、标题、评级、类别编号成员函数:display()输入姓名、编号、标题、评级、类别编号classTushuguan{public:charname[256];//作者intnum;//编号charbiaoti[256];//标题charpingji[256];//评级intx;//类别编号voiddisplay(){cout作者:;cinname;cout编号:;cinnum;cout标题:;cinbiaoti;cout评级:;cinpingji;cout类别编号(1.图书,2.视频光盘,3.图画):;cinx;}};派生类:TushuShipinguangpanTuhua①Tushu数据成员:出版社ISBN号页数成员函数:display1()调用基类的display()函数和输入课时Teacher(ints=800)//基本工资赋值classTushu:publicTushuguan{public:charcbs[256];//出版社inthm;//ISBN号intyeshu;//页数voiddisplay1(){cout请输入图书的;Tushuguan::display();cout请输入图书的出版社:;cincbs;cout请输入图书的ISBN号:;cinhm;cout请输入图书的页数:;cinyeshu;}};②Shipinguangpan数据成员:名字时长年份成员函数:display1()调用基类的display()函数Shiyanyuan(ints=650,intb=150)//基本工资及补助赋值classShipinguangpan:publicTushuguan{public:charmingzi[256];//名字intyear;//年份intshichang;//时长voiddisplay1(){cout请输入视频光盘的;Tushuguan::display();cout请输入视频光盘出品者的名字:;cinmingzi;cout请输入视频光盘出品年份:;cinyear;cout请输入视频光盘视频时长:;cinshichang;}};③Tuhua数据成员:国籍、长、宽成员函数:display1()调用基类的display()函数classTuhua:publicTushuguan{public:charguoji[256];//国籍intchang;//长intkuan;//宽voiddisplay1(){cout请输入图画的;Tushuguan::display();cout请输入图画的出品国籍:;cinguoji;cout请输入图画作品的长:;cinchang;cout请输入图画作品的宽:;cinkuan;}};具体如图:基类派生类三.界面设计与各功能模块的实现1.界面设计Tushuguan#name[256]:chai#num:int#biaoti[256];char#pingji[256];char#x:int+display()voidTushu#cbs[256];char#hm:int#yeshu:int+display1()voidShipinguangpan#mingzi[]:char#year:int#shichang:int+display1():voidTuhua#guoji[]:char#chang:int#kuan:int+display1():void程序运行后会出现一个简捷的窗口,用户登录后可添加、查询、显示、删除数据。2.功能模块实现设计通过主窗体调用其他窗体。应用系统主控界面包括信息添加、查询、显示、删除等功能模块。信息添加功能完成媒体信息的输入;信息查询功能完成老师信息的查询;信息显示功能完成媒体信息的显示;信息删除功能完成媒体信息的删除。具体举例如下:1)添加函数voidtushutianjia()//图书添加{intn,m=3;ofstreamoutfile(图书.txt,ios::app);if(outfile.fail()){coutopenerror!endl;exit(1);}intb;cout请选择你要添加图书的本数:;cinb;for(i=0;ib;i++){intnum1;charnam[256];t[i].display1();cout请重新输入图书的编号endl;cinnum1;cout请重新输入图书的作者endl;cinnam;intn=0;for(j=0;j100;j++){ifstreaminfile(图书.txt,ios::in);infilet[j].numt[j].name;infile.close();if(t[j].num!=num1)n++;break;if(t[j].num==num1&&strcmp(t[j].name,nam)!=0)break;}for(j=0;j100;j++){ifstreaminfile(视频光盘.txt,ios::in);infiles[j].num;infile.close();if(s[j].num==num1)break;elsen++;break;}for(j=0;j100;j++){ifstreaminfile(图画.txt,ios::in);infileh[j].num;infile.close();if(h[j].num==num1)break;elsen++;break;}strcpy(t[i].name,nam);t[i].num=num1;for(j=0;j100;j++){ifstreaminfile(图书.txt,ios::in);infilet[j].num;if(t[j].num!=0)m=3;elsem=2;infile.close();}if(n==m){outfilet[i].xt[i].numt[i].namet[i].biaotit[i].pingjit[i].cbst[i].hm1t[i].yeshuendl;}elsecout数据添加重复。endl;}outfile.close();}2)查询函数voidbianhaochaxun()//编号查询{intn=0,bh;cout请输入你要查询的编号:;cinbh;for(i=0;i100;i++){ifstreaminfile(图书.txt,ios::in);infilet[i].num;if(t[i].num==0)break;if(t[i].num==bh){n++;infilet[i].xt[i].numt[i].namet[i].biaotit[i].pingjit[i].cbst[i].hmt[i].yeshu;coutt[i].xt[i].numt[i].namet[i].biaotit[i].pingjit[i].cbst[i].hmt[i].yeshuendl;}break;infile.close();}if(n==0)cout图书内没有你要查询的信息。endl;n=0;for(i=0;i100;i++){ifs