收藏 分销(赏)

课程设计报告媒体库管理系统模板.doc

上传人:精**** 文档编号:2682929 上传时间:2024-06-04 格式:DOC 页数:61 大小:286.54KB
下载 相关 举报
课程设计报告媒体库管理系统模板.doc_第1页
第1页 / 共61页
课程设计报告媒体库管理系统模板.doc_第2页
第2页 / 共61页
点击查看更多>>
资源描述
C++面向对象程序设计 课 程 设 计 报 告 课程名称 C++面向对象程序设计 课题名称 媒体库管理系统 专 业 网络工程 班 级 551 学 号 姓 名 高慧鹏 指导老师 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)完成系统总结汇报和系统使用说明书 目 录 1. 系统需求分析 1 2. 总体设计 2 3. 具体设计及实现 3 4. 系统调试 42 5. 结论 43 6. 心得体会 43 1. 系统需求分析 1.1系统设计目标和意义: 图书馆中资料很多,假如能分类对其资料流通进行管理,将会带来很多方便,所以需要有一个媒体库管理系统。 1.2 系统功效需求: 本系统有四个类:Base类、Book类、CD类、Draw类,存放资料信息、编号、标题、作者、评级。Base 为父类,其它三个为子类,每个子类含有自己特点。 1.基础信息添加功效 程序能够任意添加图书、CD视频光盘、图画信息和各自对应相关信息。 2.修改功效 对已添加统计(图书、CD视频光盘、图画信息和各自对应相关信息)进行查找和修改。 3.删除功效 对已添加统计(图书、CD视频光盘、图画信息和各自对应相关信息)进行查找和删除。 假如目前系统中没有对应统计,则提醒“统计为空!”并返回操作;不然输入要删除编号对该统计进行删除,假如没有找到,则提醒对应统计不存在。 4.查询功效 ①  可依据资料编号查询资料及其内容。 ②  可依据标题查找。 ③  依据类别查询 假如未找到,给出对应提醒信息,假如找到,则显示对应统计信息。 5.保留功效 将目前系统中各类统计存入文件中。 6.读取功效 将保留在文件中信息读入到目前系统中,以供用户使用。 2. 总体设计 2.1 系统功效分析: 系统经过调用函数来实现信息录入、信息修改、信息删除、信息查询和数据保留文件等功效。add()函数用于添加信息;modify()函数用来修改信息;del()函数用来修改信息;refer()函数用来查询数据信息;read()函数用于将文件中数据读取到内存中;save()函数用于将内存中信息存入文件内;主函数main()用于调用这些函数。 2.2系统功效模块划分和设计: 系统定义了Base基类、Book类、CD类、Draw类这四个类,定义了add()、modify()、del()、read()、save()、refer()等函数来实现系统所需功效。 2.3 系统功效模块图: 媒体库管理系统 Library类 图书 图画 视频光盘 图画信息查询 视频光盘信息添加 图书信息查询 图书信息添加 图书信息统计 图画信息统计 图书信息修改 图书信息删除 视频光盘信息删除 视频光盘信息修改 视频光盘信息查询 视频光盘信息统计 图画信息修改 图画信息删除 图画信息添加 2.4 类设计 (1)Base类(抽象类)设计: Base void mainmenu(); virtual void add(){}; virtual void refer(){}; virtual void display(){} virtual void modify(){}; virtual void del(){}; virtual void Info(){}; virtual void save(){}; virtual void read(){}; int No; char headline[200]; char write[200]; char rating[200]; 图 3.1 Base类 (2)图书类设计: Book void Book_manage(); void Book_menu(); void add(); void refer(); void display(); void modify(); void del(); void Info(); void save(); void read(); char publisher[20]; char ISBN_No[20]; int pages; 图 3.2班级类 (3)CD类设计: CD void CD_manage(); void add(); void refer(); void display(); void modify(); void del(); void Info(); void save(); void read(); void cd_menu(); char name[20]; char year[20]; char time[20]; 图 3.3学生类 (4)图片类设计: Draw void Draw_manage(); void Draw_menu(); void add(); void refer(); void display(); void modify(); void del(); void Info(); void save(); void read(); char nationality[20]; int length; int width; 图 3.4 课程类 (6)各个类关系描述: 3. 具体设计及实现 3.1 Base类(抽象类)实现 class Base { public: void mainmenu(); virtual void add(){}; //添加物品 virtual void refer(){}; //查询物品 virtual void display(){}; //显示物品库 virtual void modify(){}; //修改物品 virtual void del(){}; //删除物品 virtual void Info(){}; //统计功效 virtual void save(){}; //保留物品 virtual void read(){}; //读取物品 int No; //编号 char headline[200]; //标题 char write[200]; //作者 char rating[200]; //评级 }; 3.2 班级类实现 Book.h class Book:public Base { public: void Book_manage(); //管理 void Book_menu(); //菜单显示 void add(); //添加物品 void refer(); //查询物品 void display(); //显示物品库 void modify(); //修改物品 void del(); //删除物品 void Info(); //统计功效 void save(); //保留物品 void read(); //读取物品 char publisher[20]; //出版社 char ISBN_No[20]; //ISBN号 int pages; //页数 }; Book.cpp #include<iostream.h> #include<fstream.h> #include<string.h> #include"windows.h" //暂停头文件 #include"Book.h" const int maxsize_book=100; //图书数据最大长度 Book b_[maxsize_book]; int count_book=1; Book b,b1; Base *p1; int i,j,num1,num2; void Book::Book_manage() { int flag=1; int k; p1=&b; p1->read(); b.Book_menu(); loop4: cout<<"请输入所要操作编号:\n"; cin>>k; while(flag==1) { if(k>=0&&k<7) { switch(k) //菜单选择 { case 1:p1->add();break; case 2:p1->refer();break; case 3:p1->display();break; case 4:p1->modify();break; case 5:p1->del();break; case 6:p1->Info();break; case 0:break; } } else { cout<<"输入有误,请重新输入:\n"; goto loop4; } loop: flag=0; if(flag==0) { cout<<"\n请选择接下来操作? \n1.返回图书信息管理菜单. \n2.返回主菜单. \n"; cin>>flag; } if(flag==1) { b.Book_menu(); cout<<"请选择\n:"; cin>>k; } else if(flag==2) { break; } else { cout<<"选择错误,请重新输入。\n"; goto loop; } } }; void Book::add() //添加图书数据 { cout<<"请输入要添加数据个数:"<<endl; cin>>num1; for(j=0;j<num1;j++) { cout<<"请输入图书编号:"<<endl; cin>>b.No; i=b.No; b_[i].No=i; cout<<"请依次输入数据标题、作者、评级(未评级、通常、成人、儿童)、出版社、ISBN号、页数:"<<endl; cin>>b_[i].headline>>b_[i].write>>b_[i].rating>>b_[i].publisher>>b_[i].ISBN_No>>b_[i].pages; } p1->save(); }; void Book::refer() //查找子菜单 { loop1:cout <<" ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl <<" ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl <<" ┃ ┃"<<endl <<" ┃◆ 按标题查询-------------① ◆┃"<<endl <<" ┃◆ 按标题查询-------------② ◆┃"<<endl <<" ┃◆ 按标题查询-------------③ ◆┃"<<endl <<" ┃◆ 退出子菜单-------------④ ◆┃"<<endl <<" ┃ ┃"<<endl <<" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"<<endl <<" ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ "<<endl <<endl; cout<<"请输入你要查询方法编号:\n"<<endl; cin>>num2; switch(num2) //三种情况用选择语句 { case 1: { cout<<"请输入要查找图书标题:\n"<<endl; cin>>b1.headline; for(j=0;j<maxsize_book;j++) { if(strcmp(b1.headline,b_[j].headline)==0) cout<<"图书编号:"<<b_[j].No<<" "<<"标题:"<<b_[j].headline<<" "<<"作者:"<<b_[j].write<<" "<<"评级:"<<b_[j].rating<<"出版社:"<<b_[i].publisher<< " "<<"ISBN号:"<<b_[j].ISBN_No<<" "<<"页数:"<<" "<<b_[j].pages<<endl; Sleep(10); } } break; case 2: { cout<<"请输入要查找图书编号"<<endl; cin>>b1.No; for(j=0;j<maxsize_book;j++) { if(b1.No==b_[j].No) cout<<"图书编号:"<<b_[j].No<<" "<<"标题:"<<b_[j].headline<<" "<<"作者:"<<b_[j].write<<" "<<"评级:"<<b_[j].rating<<"出版社:"<<b_[i].publisher<< " "<<"ISBN号:"<<b_[j].ISBN_No<<" "<<"页数:"<<" "<<b_[j].pages<<endl; Sleep(10); } } break; case 3: { loop2: cout<<"请输入要查找图书类别(未评级、通常、成人、儿童)"<<endl; cin>>b1.rating; if(b1.rating=="未评级"||"通常"||"成人"||"儿童") { for(j=0;j<maxsize_book;j++) { if(strcmp(b1.rating,b_[j].rating)==0) cout<<"图书编号:"<<b_[j].No<<" "<<"标题:"<<b_[j].headline<<" "<<"作者:"<<b_[j].write<<" "<<"评级:"<<b_[j].rating<<"出版社:"<<b_[j].publisher<< " "<<"ISBN号:"<<b_[j].ISBN_No<<" "<<"页数:"<<" "<<b_[j].pages<<endl; Sleep(10); } } else { cout<<"输入有误请重新输入:\n"; goto loop2; } } break; case 4:break; default: { cout<<"选择错误,请重新选择:\n"; goto loop1; } break; } }; void Book::display() { for(j=1;j<num1+1;j++) { cout<<"图书编号:"<<b_[j].No<<" "<<"标题:"<<b_[j].headline<<" "<<"作者:"<<b_[j].write<<" "<<"评级:"<<b_[j].rating<<"出版社:"<<b_[j].publisher<< " "<<"ISBN号:"<<b_[j].ISBN_No<<" "<<"页数:"<<" "<<b_[j].pages<<endl; Sleep(10); } }; void Book::modify() { int k; cout<<"请输入要修改图书编号"<<endl; cin>>b1.No; loop3:cout<<endl<<endl; cout <<" ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl <<" ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl <<" ┃ ┃"<<endl <<" ┃◇ 修改标题-----------① ◇┃"<<endl <<" ┃◇ 修改作者-----------② ◇┃"<<endl <<" ┃◇ 修改评级-----------③ ◇┃"<<endl <<" ┃◇ 修改出版社---------④ ◇┃"<<endl <<" ┃◇ 修改ISBN号---------⑤ ◇┃"<<endl <<" ┃◇ 修改页数-----------⑥ ◇┃"<<endl <<" ┃◇ 返回菜单-----------0 ◇┃"<<endl <<" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"<<endl <<" ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ "<<endl <<endl; cout<<endl<<endl; cout<<" 请选择要修改内容编号:\n"; cin>>k; if(k>=0&&k<7){ switch(k) { case 1: { char mheadline[20]; cout<<"请输入修改后标题:"<<endl; cin>>mheadline; strcpy(b_[b1.No].headline,mheadline); } break; case 2: { char mwrite[20]; cout<<"请输入修改后作者:"<<endl; cin>>mwrite; strcpy(b_[b1.No].write,mwrite); } break; case 3: { char mrating[20]; cout<<"请输入修改后分级:(未评级、通常、成人、儿童)"<<endl; cin>>mrating; strcpy(b_[b1.No].rating,mrating); } break; case 4: { char mpublishe[20]; cout<<"请输入修改后出版社:"<<endl; cin>>mpublishe; strcpy(b_[b1.No].publisher,mpublishe); } break; case 5: { char mISBN_No[20]; cout<<"请输入修改后ISBN号:"<<endl; cin>>mISBN_No; strcpy(b_[b1.No].ISBN_No,mISBN_No); } break; case 6: { int mpages; cout<<"请输入修改后页数:"<<endl; cin>> mpages; b_[b1.No].pages=mpages; } break; case 0:break; };} else { cout<<"选择错误,请重新输入:\n"; goto loop3; } }; void Book::del() { cout<<"请输入要删除图书编号"<<endl; cin>>b1.No; for(j=b1.No;j<num1;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--; } }; void Book::Info() { cout<<"目前物品库中总物品数:"<<num1<<endl; }; void Book::save() { ofstream out; out.open("图书信息.txt"); out<<num1<<endl; for(int k=1;k<=num1;k++) { out<<b_[k].No<<" "<<b_[k].headline<<" "<<b_[k].write<<" "<<b_[k].rating<<" "<<b_[k].publisher<<" "<<b_[k].ISBN_No<<" "<<b_[k].pages<<endl; } out.close(); }; void Book::read() { ifstream in; in.open("图书信息.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++; } in.close(); } void Book::Book_menu() { cout<<"\n\n   ----------☆ 欢迎使用媒体库管理系统 ☆---------- "<<endl<<endl; cout<<"\n\n   ----------☆ 图书信息管理 ☆---------- "<<endl<<endl; cout <<" ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl <<" ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl <<" ┃ ┃"<<endl <<" ┃◆ 添加图书-----------① ◆┃"<<endl <<" ┃◆ 查询图书-----------② ◆┃"<<endl <<" ┃◆ 显示图书-----------③ ◆┃"<<endl <<" ┃◆ 修改图书-----------④ ◆┃"<<endl <<" ┃◆ 删除图书-----------⑤ ◆┃"<<endl <<" ┃◆ 统计图书-----------⑥ ◆┃"<<endl <<" ┃◆ 退出系统-----------0 ◆┃"<<endl <<" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"<<endl <<" ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ "<<endl <<endl; }; 3.3 CD类实现 CD.h class CD:public Base { public: void CD_manage(); //管理子菜单 void add(); //添加物品 void refer(); //查询物品 void display(); //显示物品库 void modify(); //修改物品 void del(); //删除物品 void Info(); //统计功效 void save(); //保留物品 void read(); //读取物品 void cd_menu(); //菜单 char name[20]; //作者名 char year[20]; //出版年份 char time[20]; //播放时长 }; CD.cpp #include<iostream.h> #include<fstream.h> #include<string.h> #include"windows.h" //暂停头文件 #include"CD.h" const int maxsize_video=100; //储存最大值 CD v_[maxsize_video]; int count_video=1; CD v,v1; Base *p3; int i3,j3,vnum1,vnum2; void CD::CD_manage() //Cd管理选择 { int flag=1; int k; p3=&v; p3->read(); v.cd_menu(); loop5: cout<<"请输入所要操作编号:"; cin>>k; while(flag==1) { if(k>=0&&k<7) { switch(k) //第二菜单选择 { case 1:p3->add();break; case 2:p3->refer();break; case 3:p3->display();break; case 4:p3->modify();break; case 5:p3->del();break; case 6:p3->Info();break; case 0:break; } } else { cout<<"输入有误请重新输入:\n"; goto loop5; } loop6: flag=0; if(flag==0) { cout<<"\n请选择接下来操作: \n1.返回CD信息管理菜单. \n2.返回主菜单. \n"; cin>>flag; } if(flag==1) { v.cd_menu(); cout<<"请选择\n:"; cin>>k; } else if(flag==2) { break; } else { cout<<"选择错误,请重新输入:\n"; goto loop6; } } }; void CD::add() //添加CD { cout<<"请输入要添加编号个数:"<<endl; cin>>vnum1; for(j3=0;j3<vnum1;j3++) { cout<<"请输入视频编号:"<<endl; cin>>v.No; i3=v.No; v_[i3].No=i3; cout<<"请分别输入标题、作者、评级(未评级、通常、成人、儿童)、出品人姓名、出品年份、视频时长"<<endl; cin>>v_[i3].headline>>v_[i3].write>>v_[i3].rating>>v_[i3].name>>v_[i3].year>>v_[i3].time; Sleep(10); } p3->save(); }; void CD::refer() //CD查找 { loop7: cout <<" ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl <<" ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl <<" ┃
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服