课程设计报告(媒体库管理系统).doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告 媒体库 管理 系统
- 资源描述:
-
C++面向对象程序设计 课 程 设 计 报 告 课程名称 C++面向对象程序设计 课题名称 媒体库管理系统 专 业 遥感科学与技术 班 级 201156 学 号 20151001699 姓 名 要旭东 指导教师 陈 凯 2016年 6 月 28 日 (一)、课程设计题目: 媒体库管理系统 (二)、目的与要求: 1、目的: (1)要求学生达到熟练掌握C++语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。 2、基本要求: (1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计; (2)要求在设计的过程中,建立清晰的类层次; (3)在系统中至少要定义四个类,每个类中要有各自的属性和方法; (4)在系统的设计中,至少要用到面向对象的一种机制。 3、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。 (三)、设计方法和基本原理: 功能要求: 1) 添加物品 程序主要完成图书馆三类物品信息的添加,要求编号唯一。如果添加了重复编号的物品时,则提示用户数据添加重复并取消添加;如果物品库已满,则提示不能再添加新的物品。 2) 查询物品 可按照三种方式进行物品的查询。 ·按标题查询: ·按编号查询: ·按类别查询: 如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。 3) 显示物品库 可显示当前物品库中所有的物品信息。 4) 修改物品 可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。 5)删除物品 对已添加的物品信息进行删除。如果当前物品库为空,则提示“物品库为空!”并返回操作;否则输入要删除的编号,根据编号删除该物品信息,如果没有找到该物品信息,则提示“该编号不存在”。 6)统计功能 输出当前物品库中总物品数,以及按物品类别,统计出当前物品中各类别的物品数并显示。 7) 保存物品 将当前系统中物品信息存入文件中。 8) 读取物品 将保存在文件中的物品信息读入到当前系统中,以供用户使用。 在完成以上基本功能的基础上,可自行进行扩展或完善。 目 录 1. 系统需求分析 1 2. 总体设计 3 3. 详细设计及实现 5 3.1 Base类(抽象类)的实现 5 3.2 图书类的实现 5 3.3 视频类的实现 7 3.4图画类的实现 10 3.5main.cpp 13 4. 系统调试 20 5. 结论 21 6. 心得体会 21 7. 参考书目 22 - 1. 系统需求分析 1.1系统设计的目的与意义: 图书馆中的资料很多,如果能分类对其资料流通进行管理,将会带来很多方便,因此需要有一个媒体库管理系统。 1.2 系统功能需求: 图书馆共有三大类物品资料:图书、视频光盘、图画。 1)添加物品 程序主要完成图书馆三类物品信息的添加,要求编号唯一。如果添加了重复编号的物品时,则提示用户数据添加重复并取消添加;如果物品库已满,则提示不能再添加新的物品。 2) 查询物品 可按照三种方式进行物品的查询。 ·按标题查询: ·按编号查询: ·按类别查询: 如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。 3) 显示物品库 可显示当前物品库中所有的物品信息。 4) 修改物品 可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。 5)删除物品 对已添加的物品信息进行删除。如果当前物品库为空,则提示“物品库为空!”并返回操作;否则输入要删除的编号,根据编号删除该物品信息,如果没有找到该物品信息,则提示“该编号不存在”。 6)统计功能 输出当前物品库中总物品数,以及按物品类别,统计出当前物品中各类别的物品数并显示。 7) 保存物品 将当前系统中物品信息存入文件中。 8) 读取物品 将保存在文件中的物品信息读入到当前系统中,以供用户使用。 在完成以上基本功能的基础上,可自行进行扩展或完善。 2. 总体设计 2.1 系统功能分析: 系统通过调用函数来实现信息录入、信息修改、信息删除、信息查询以及数据保存文件等功能。add()函数用于录入信息;modify()函数用来修改信息;del()函数用来修改信息;searchStu()及searchScore()函数用来查询某班级中所有学生信息及查询某学生所有课程的成绩信息;read()函数用于将文件中的数据读取到内存中;save()函数用于将内存中的信息存入文件内;主函数main()用于调用这些函数。 2.2系统功能模块划分与设计: 系统定义了Class类、Student类、Course类、Score类这四个类,定义了add()、modify()、del()、read()及save()等函数来实现系统所需功能。 媒体库管理系统 2.3 系统功能模块图: 图画信息管理 视频信息管理 图书信息管理 图书信息读取 图书信息添加 图书信息修改 图书信息删除 图书信息保存 图画信息修改 视频信息读取 视频信息读取 视频信息读取 视频信息读取 视频信息读取 图画信息保存 图画信息删除 图画信息添加 图画信息读取 2.4 类的设计 (1)Base类(抽象类)的设计: Base virtual void read()=0; virtual void add()=0; virtual void modify(int)=0; virtual void del(int)=0; virtual void save()=0; char number[20]; //编号 char title[11]; //标题 char writer[8]; //作者 char grade [20]; //评级 图 3.1 Base类 (2)图书类的设计: Book int ISBNno; //ISBN号 char press[9]; //出版社 int page; //页数 void read(); void add(); void modify(int); void del(int); void save(); 图 3.2图书类 (3)视频类的设计: Video char name; //出品人姓名 char time; //出品年份 int duration; //视频时长void read(); void add(); void modify(int); void del(int); void save(); 图 3.3视频类 (4)图画类的设计: Painting char nationality[20]; //国籍 char size[20]; //作品大小 void read(); void add(); void modify(int); void del(int); void save(); 图 3.4 图画类 3. 详细设计及实现 3.1 Base类(抽象类)的实现 class Base { public: char number[20]; //编号 char title[11]; //标题 char writer[8]; //作者 char grade [20]; //评级 virtual void read()=0; virtual void add()=0; virtual void modify(int)=0; virtual void del(int)=0; virtual void save()=0; }; 3.2 图书类的实现 Book.h class Book:public Base { public: char number[20]; //编号 char title[11]; //标题 char writer[8]; //作者 char grade [20]; //评级 int ISBNno; //ISBN号 char press[9]; //出版社 int page; //页数 void read(); void add(); void modify(int); void del(int); void save(); }; Book.cpp void Book::read() { fstream bookfile("图书类信息.dat",ios::in|ios::out); bookfile>>b1[count_Book].number>>b1[count_Book].title>>b1[count_Book].writer>>b1[count_Book].grade>>b1[count_Book].ISBNno>>b1[count_Book].press>>b1[count_Book].page; while(!bookfile.eof()) { count_Book++; bookfile>>b1[count_Book].number>>b1[count_Book].title>>b1[count_Book].writer>>b1[count_Book].grade>>b1[count_Book].ISBNno>>b1[count_Book].press>>b1[count_Book].page; } bookfile.close(); } void Book::add() { //存入对象数组中 strcpy(b1[count_Book].number,number); strcpy(b1[count_Book].title,title); strcpy(b1[count_Book].writer,writer); strcpy(b1[count_Book].grade,grade); b1[count_Book].ISBNno=ISBNno; strcpy(b1[count_Book].press,press); b1[count_Book].page=page; count_Book++; } void Book::modify(int index) { strcpy(b1[index-1].number,number); strcpy(b1[index-1].title,title); strcpy(b1[index-1].writer,writer); strcpy(b1[index-1].grade,grade); b1[index-1].ISBNno=ISBNno; strcpy(b1[index-1].press,press); b1[index-1].page=page; } void Book::del(int index){ //前移其后记录 for(int i=index;i<=count_Book-1;i++) { strcpy(b1[i-1].number,b1[i].number); strcpy(b1[i-1].title,b1[i].title); strcpy(b1[i-1].writer,b1[i].writer); strcpy(b1[i-1].grade,b1[i].grade); b1[i-1].ISBNno=b1[i].ISBNno; strcpy(b1[i-1].press,b1[i].press); b1[i-1].page=b1[i].page; } count_Book--; } void Book::save() { ofstream bookfile; bookfile.open("图书类信息.dat"); for(int i=0;i<=count_Book-1;i++) bookfile<<b1[i].number<<" "<<b1[i].title<<" "<<b1[i].writer<<" "<<b1[i].grade<<b1[i].ISBNno<<" "<<b1[i].press<<" "<<b1[i].page<<endl; bookfile.close(); } 3.3 视频类的实现 Video.h class Video:public Base { public: char number[20]; //编号 char title[11]; //标题 char writer[8]; //作者 char grade [20]; //评级 char name; //出品人姓名 char time; //出品年份 int duration; //视频时长 void read(); void add(); void modify(int); void del(int); void save(); }; Video.cpp void Video::read() { fstream videofile("班级信息.dat",ios::in|ios::out); videofile>>v1[count_Video].number>>v1[count_Video].title>>v1[count_Video].writer>>v1[count_Video].grade>>v1[count_Video].name>>v1[count_Video].time>>v1[count_Video].duration; while(!videofile.eof()) { count_Video++; videofile>>v1[count_Video].number>>v1[count_Video].title>>v1[count_Video].writer>>v1[count_Video].grade>>v1[count_Video].name>>v1[count_Video].time>>v1[count_Video].duration; } videofile.close(); } void Video::add() { //存入对象数组中 strcpy(v1[count_Video].number,number); strcpy(v1[count_Video].title,title); strcpy(v1[count_Video].writer,writer); strcpy(v1[count_Video].grade,grade); strcpy(v1[count_Video].name,name); strcpy(v1[count_Video].time,time); v1[count_Video].duration=duration; count_Video++; } void Video::modify(int index) { strcpy(v1[index-1].number,number); strcpy(v1[index-1].title,title); strcpy(v1[index-1].writer,writer); strcpy(v1[index-1].grade,grade); strcpy(v1[index-1].name,name); strcpy(v1[index-1].time,time); v1[index-1].duration=duration; } void Video::del(int index) { //前移其后记录 for(int i=index;i<=count_Video-1;i++) { strcpy(v1[i-1].number,v1[i].number); strcpy(v1[i-1].title,v1[i].title); strcpy(v1[i-1].writer,v1[i].writer); strcpy(v1[i-1].grade,v1[i].grade); strcpy(v1[i-1].name,v1[i].name); strcpy(v1[i-1].time,v1[i].time); v1[i-1].duration=v1[i].duration; } count_Video--; } void Video::save() { ofstream videofile; videofile.open("班级信息.dat"); for(int i=0;i<=count_Video-1;i++) videofile<<c1[i].classID<<" "<<c1[i].stuNum<<endl; videofile.close(); } 3.4图画类的实现 Painting.h class Painting:public Base { public: char number[20]; //编号 char title[11]; //标题 char writer[8]; //作者 char grade [20]; //评级 char nationality[20]; //出品国籍 char size[20]; //作品大小 void read(); void add(); void modify(int); void del(int); void save(); }; Painting.cpp void Painting::read() { fstream paitingfile("图画类信息.dat",ios::in|ios::out); paintingfile>>p1[count_Painting].number>>p1[count_Painting].title>>p1[count_Painting].writer>>p1[count_Painting].grade>>p1[count_Painting].nationality>>p1[count_Painting].size; while(!paintingfile.eof()) { count_Painting++; paintingfile>>p1[count_Painting].number>>p1[count_Painting].title>>p1[count_Painting].writer>>p1[count_Painting].grade>>p1[count_Painting].nationality>>p1[count_Painting].size; } paintingfile.close(); } void Painting::add() { //存入对象数组中 strcpy(p1[count_Painting].number,number); strcpy(p1[count_Painting].title,title); strcpy(p1[count_Painting].writer,writer); strcpy(p1[count_Painting].grade,grade); strcpy(p1[count_Painting].nationality,nationality); strcpy(p1[count_Painting].size,size); count_Painting++; } void Painting::modify(int index) { strcpy(p1[index-1].number,number); strcpy(p1[index-1].title,title); strcpy(p1[index-1].writer,writer); strcpy(p1[index-1].grade,grade); strcpy(p1[index-1].nationality,nationality); strcpy(p1[index-1].size,size); } void Painting::del(int index) { //前移其后记录 for(int i=index;i<=count_Class-1;i++) { strcpy(p1[i-1].number,p1[i].number); strcpy(p1[i-1].title,p1[i].title); strcpy(p1[i-1].writer,p1[i].writer); strcpy(p1[i-1].grade,p1[i].grade); strcpy(p1[i-1].nationality,p1[i].nationality); strcpy(p1[i-1].size,p1[i].size); } count_Painting--; } void Painting::save() { ofstream Paintingfile; Paintingfile.open("班级信息.dat"); for(int i=0;i<=count_Painting-1;i++) Paintingfile<<p1[i].number<<" "<<p1[i].title<<" "<<p1[i].writer<<" "<<p1[i].grade<<p1[i].nationality<<" "<<p1[i].size<<endl; Paintingfile.close(); } 3.5main.cpp #include <iostream.h> #include <fstream.h> #include <string.h> #include <stdlib.h> #include "Base.h" #include "Book.h" #include "Painting.h" #include "Video.h" const int MAXBOOK=10; const int MAXPAINTING=200; const int MAXVIDEO=10; Book b1[MAXBOOK]; Painting p1[MAXPAINTING]; Video c2[MAXVIDEO]; int count_Book=0; int count_Painting=0; int count_Video=0; Base *p=NULL; char out; //图书类管理子菜单 void book_manage() { int choice,i=0; bool quit=false; while(1) { system("cls"); cout<<"**********图书类管理子菜单**********"<<endl; cout<<" 1.添加图书信息"<<endl; cout<<" 2.修改图书信息"<<endl; cout<<" 3.删除图书信息"<<endl; cout<<" 0.退出"<<endl; cout<<"************************************"<<endl; cout<<"请输入所要操作的编号:"; cin>>choice; switch(choice) { case 1: { Book b2; p=&b2; cout<<"请输入编号、标题、作者、评级、ISBN号、出版社和页 数:\n"; cin>>>b2.number>>b2.title>>b2.writer>>b2.grade>>b2.ISBNno>> b2.press>>b2.page>>endl; cout<<"是否保存图书信息?(y/n)\n"; cin>>out; if(out=='y') { p->add(); p->save(); } break; } case 2: { Book b3; p=&b3; int index; for(int i=0;i<count_Book;i++) cout<<i+1<<"."<<b1[i].number<<" "<<b1[i].title<<" "<<b1[i].writer<<b1[i].grade<<" "<<b1[i].ISBNno<<" "<<b1[i].press<<" "<<<<b1[i].page<<endl; cout<<"请选择图书信息编号:\n"; cin>>index; cout<<"请输入要修改的标题、作者、评级、ISBN号、出版社和页 数: "; cin>>b3.title>>b3.writer>>b3.grade>>b3.ISBNno>>b3.press>>b3.page; cout<<"是否保存班级信息?(y/n)\n"; cin>>out; if(out=='y') { p->modify(index); p->save(); } break; } case 3: { Class b4; p=&b4; int index; for(int i=0;i<count_Book;i++) cout<<i+1<<"."<<b1[i].number<<" "<<b1[i].title<<" "<<b1[i].writer<<b1[i].grade<<" "<<b1[i].ISBNno<<" "<<b1[i].press<<" "<<b1[i].page<<endl; cout<<"请选择要删除的图书编号:\n"; cin>>index; cout<<"是否保存图书信息?(y/n)\n"; cin>>out; if(out=='y') { p->del(index); p->save(); } break; } case 0:quit=true;break; default:cout<<"请输入0~3之间的数字!"<<endl; break; } if(quit==true) break; } system("cls"); return; } //视频类管理子菜单 void video_manage() { int choice; bool quit=false; while(1) { system("cls"); cout<<"**********视频类管理子菜单**********"<<endl; cout<<" 1.添加视频信息"<<endl; cout<<" 2.修改视频信息"<<endl; cout<<" 3.删除视频信息"<<endl; cout<<" 0.退出"<<endl; cout<<"************************************"<<endl; cout<<"请输入所要操作的编号:"; cin>>choice; switch(choice) { case 1: { Video v2; p=&v2; cout<<"请输入编号、标题、作者、评级、出品人的姓名、出品年份和视 频时长:\n"; cin>>>v2.number>>v2.title>>v2.writer>>v2.grade>>v2.name>>v2.time>> v2.duration>>endl; cout<<"是否保存视频信息?(y/n)\n"; cin>>out; if(out=='y') { p->add(); p->save(); } break; } case 2: { Video v3; p=&v3; int index; for(int i=0;i<count_Video;i++) cout<<i+1<<"."<<v3[i].number<<" "<<v3[i].title<<" "<<v3[i].writer<<v3[i].grade<<" "<<v3[i].name<<" "<<v3[i].time<<" "<<<<v3[i].duration<<endl; cout<<"请选择要修改的学生信息序号:\n"; cin>>index; cout<<"请输入要修改编号、标题、作者、评级、出品人的姓名、出品年份 和视频时长:\n"; cin>>s4.stuID>>s4.name>>s4.sex>>s4.major>>s4.college>>s4.c.classID; cout<<"是否保存视频信息?(y/n)\n"; cin>>out; if(out=='y') { p->modify(index); p->save(); } break; } case 3: { Video v4; p=&v4; int index; for(int i=0;i<count_Video;i++) cout<<i+1<<"."<<v4[i].number<<" "<<v4[i].title<<" "<<v4[i].writer<<v4[i].grade<<" "<<v4[i].name<<" "<<v4[i].time<<" "<<v4[i].duration<<endl; cout<<"请选择要删除的视频信息序号:\n"; cin>>index; cout<<"是否保存视频信息?(y/n)\n"; cin>>out; if(out=='y') { p->del(index); p->save(); } break; } case 0:quit=true;break; default:cout<<"请输入0~3之间的数字!"<<endl;break; } if(quit==true) break; } system("cls"); return; } //图画类管理子菜单 void painting_manage() { int choice; bool quit=false; while(1) { system("cls"); cout<<"**********图画类管理子菜单**********"<<endl; cout<<" 1.添加图画信息"<<endl; cout<<"展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




课程设计报告(媒体库管理系统).doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/12021196.html