




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+面向对象程序设计课 程 设 计 报 告课程名称 C+面向对象程序设计 课题名称 媒体库管理系统 专 业 计算机科学与技术 班 级 学 号 38 姓 名 周 晗 指导教师 韩燕丽 2012年 12 月 28 日(一)、课程设计题目:媒体库管理系统(二)、目的与要求: 1、目的: (1)要求学生达到熟练掌握C+语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。 2、基本要求: (1)要求利用面向对象的方法以及C+的编程思想来完成系统的设计; (2)要求在设计的过程中,建立清晰的类层次; (3)在系统中至少要定义四个类,每个类中要有各自的属性和方法; (4)在系统的设计中,至少要用到面向对象的一种机制。 3、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。 (三)、设计方法和基本原理: 功能要求:1) 添加物品程序主要完成图书馆三类物品信息的添加,要求编号唯一。如果添加了重复编号的物品时,则提示用户数据添加重复并取消添加;如果物品库已满,则提示不能再添加新的物品。2) 查询物品可按照三种方式进行物品的查询。按标题查询:按编号查询:按类别查询:如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。3) 显示物品库可显示当前物品库中所有的物品信息。4) 修改物品可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。5)删除物品对已添加的物品信息进行删除。如果当前物品库为空,则提示“物品库为空!”并返回操作;否则输入要删除的编号,根据编号删除该物品信息,如果没有找到该物品信息,则提示“该编号不存在”。6)统计功能输出当前物品库中总物品数,以及按物品类别,统计出当前物品中各类别的物品数并显示。7) 保存物品将当前系统中物品信息存入文件中。8) 读取物品 将保存在文件中的物品信息读入到当前系统中,以供用户使用。在完成以上基本功能的基础上,可自行进行扩展或完善。目 录1.系统需求分析12.总体设计33.详细设计及实现53.1 Base类(抽象类)的实现53.2 图书类的实现53.3 视频类的实现73.4图画类的实现103.5main.cpp134.系统调试205.结论216.心得体会217.参考书目221. 系统需求分析 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类(抽象类)的设计:Basevirtual void read()=0;virtual void add()=0; virtual void modify(int)=0;virtual void del(int)=0;virtual void save()=0;char number20; /编号char title11; /标题char writer8; /作者char grade 20; /评级图 3.1 Base类(2)图书类的设计:Bookint ISBNno; /ISBN号char press9; /出版社int page; /页数void read();void add(); void modify(int);void del(int);void save(); 图 3.2图书类(3)视频类的设计:Videochar name; /出品人姓名char time; /出品年份int duration; /视频时长void read();void add();void modify(int);void del(int);void save(); 图 3.3视频类(4)图画类的设计:Paintingchar nationality20; /国籍char size20; /作品大小 void read();void add(); void modify(int);void del(int);void save(); 图 3.4 图画类3. 详细设计及实现3.1 Base类(抽象类)的实现class Basepublic: char number20; /编号 char title11; /标题 char writer8; /作者 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.hclass Book:public Basepublic:char number20; /编号 char title11; /标题 char writer8; /作者 char grade 20; /评级int ISBNno; /ISBN号 char press9; /出版社int page; /页数 void read();void add(); void modify(int);void del(int);void save();Book.cppvoid Book:read() fstream bookfile(图书类信息.dat,ios:in|ios:out); bookfileb1count_Book.numberb1count_Book.titleb1count_Book.writerb1count_Book.gradeb1count_Book.ISBNnob1count_Book.pressb1count_Book.page; while(!bookfile.eof() count_Book+;bookfileb1count_Book.numberb1count_Book.titleb1count_Book.writerb1count_Book.gradeb1count_Book.ISBNnob1count_Book.pressb1count_Book.page;bookfile.close();void Book:add() /存入对象数组中strcpy(b1count_Book.number,number);strcpy(b1count_Book.title,title);strcpy(b1count_Book.writer,writer);strcpy(b1count_Book.grade,grade);b1count_Book.ISBNno=ISBNno;strcpy(b1count_Book.press,press);b1count_Book.page=page; count_Book+; void Book:modify(int index)strcpy(b1index-1.number,number);strcpy(b1index-1.title,title);strcpy(b1index-1.writer,writer);strcpy(b1index-1.grade,grade);b1index-1.ISBNno=ISBNno;strcpy(b1index-1.press,press);b1index-1.page=page;void Book:del(int index) /前移其后记录for(int i=index;i=count_Book-1;i+)strcpy(b1i-1.number,b1i.number);strcpy(b1i-1.title,b1i.title);strcpy(b1i-1.writer,b1i.writer);strcpy(b1i-1.grade,b1i.grade);b1i-1.ISBNno=b1i.ISBNno;strcpy(b1i-1.press,b1i.press);b1i-1.page=b1i.page;count_Book-; void Book:save() ofstream bookfile; bookfile.open(图书类信息.dat);for(int i=0;i=count_Book-1;i+)bookfileb1i.number b1i.title b1i.writer b1i.gradeb1i.ISBNno b1i.press b1i.pagev1count_Video.numberv1count_Video.titlev1count_Video.writerv1count_Video.gradev1count_Vv1count_Video.timev1count_Video.duration; while(!videofile.eof() count_Video+;videofilev1count_Video.numberv1count_Video.titlev1count_Video.writerv1count_Video.gradev1count_Vv1count_Video.timev1count_Video.duration; videofile.close();void Video:add() /存入对象数组中strcpy(v1count_Video.number,number);strcpy(v1count_Video.title,title);strcpy(v1count_Video.writer,writer);strcpy(v1count_Video.grade,grade);strcpy(v1count_V,name);strcpy(v1count_Video.time,time);v1count_Video.duration=duration; count_Video+; void Video:modify(int index) strcpy(v1index-1.number,number);strcpy(v1index-1.title,title);strcpy(v1index-1.writer,writer);strcpy(v1index-1.grade,grade); strcpy(,name);strcpy(v1index-1.time,time); v1index-1.duration=duration; void Video:del(int index) /前移其后记录for(int i=index;i=count_Video-1;i+)strcpy(v1i-1.number,v1i.number);strcpy(v1i-1.title,v1i.title);strcpy(v1i-1.writer,v1i.writer);strcpy(v1i-1.grade,v1i.grade);strcpy(,);strcpy(v1i-1.time,v1i.time); v1i-1.duration=v1i.duration;count_Video-; void Video:save() ofstream videofile; videofile.open(班级信息.dat);for(int i=0;i=count_Video-1;i+) videofilec1i.classID c1i.stuNump1count_Painting.numberp1count_Painting.titlep1count_Painting.writerp1count_Painting.gradep1count_Painting.nationalityp1count_Painting.size; while(!paintingfile.eof() count_Painting+;paintingfilep1count_Painting.numberp1count_Painting.titlep1count_Painting.writerp1count_Painting.gradep1count_Painting.nationalityp1count_Painting.size; paintingfile.close();void Painting:add() /存入对象数组中strcpy(p1count_Painting.number,number);strcpy(p1count_Painting.title,title);strcpy(p1count_Painting.writer,writer);strcpy(p1count_Painting.grade,grade);strcpy(p1count_Painting.nationality,nationality);strcpy(p1count_Painting.size,size); count_Painting+; void Painting:modify(int index) strcpy(p1index-1.number,number);strcpy(p1index-1.title,title);strcpy(p1index-1.writer,writer);strcpy(p1index-1.grade,grade); strcpy(p1index-1.nationality,nationality);strcpy(p1index-1.size,size);void Painting:del(int index) /前移其后记录for(int i=index;i=count_Class-1;i+)strcpy(p1i-1.number,p1i.number);strcpy(p1i-1.title,p1i.title);strcpy(p1i-1.writer,p1i.writer);strcpy(p1i-1.grade,p1i.grade);strcpy(p1i-1.nationality,p1i.nationality);strcpy(p1i-1.size,p1i.size);count_Painting-; void Painting:save() ofstream Paintingfile; Paintingfile.open(班级信息.dat);for(int i=0;i=count_Painting-1;i+) Paintingfilep1i.number p1i.title p1i.writer p1i.gradep1i.nationality p1i.sizeendl; Paintingfile.close(); 3.5main.cpp#include #include #include #include #include Base.h#include Book.h#include Painting.h#include Video.hconst int MAXBOOK=10;const int MAXPAINTING=200;const int MAXVIDEO=10;Book b1MAXBOOK;Painting p1MAXPAINTING;Video c2MAXVIDEO;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; coutchoice; switch(choice) case 1: Book b2;p=&b2; coutb2.numberb2.titleb2.writerb2.gradeb2.ISBNno b2.pressb2.pageendl; coutout; if(out=y) p-add(); p-save(); break; case 2: Book b3;p=&b3; int index; for(int i=0;icount_Book;i+) couti+1.b1i.number b1i.title b1i.writerb1i.grade b1i.ISBNno b1i.press b1i.pageendl; coutindex; coutb3.titleb3.writerb3.gradeb3.ISBNnob3.pressb3.page; coutout; if(out=y) p-modify(index); p-save(); break; case 3:Class b4;p=&b4; int index; for(int i=0;icount_Book;i+) couti+1.b1i.number b1i.title b1i.writerb1i.grade b1i.ISBNno b1i.press b1i.pageendl; coutindex;coutout; if(out=y) p-del(index); p-save(); break;case 0:quit=true;break; default:cout请输入03之间的数字!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; coutchoice; switch(choice) case 1: Video v2;p=&v2; v2.timev2.durationendl; coutout; if(out=y)p-add(); p-save(); break; case 2: Video v3;p=&v3; int index; for(int i=0;icount_Video;i+) couti+1.v3i.number v3i.title v3i.writerv3i.grade v3i.time v3i.durationendl; coutindex; couts4.stuIDs4.sexs4.majors4.colleges4.c.classID; coutout; if(out=y)p-modify(index); p-save(); break; case 3: Video v4;p=&v4; int index; for(int i=0;icount_Video;i+) couti+1.v4i.number v4i.title v4i.writerv4i.grade v4i.time v4i.durationendl; coutindex;coutout; if(out=y) p-del(index); p-save();break; case 0:quit=true;break; default:cout请输入03之间的数字!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 2.修改图画信息endl; cout 3.删除图画信息endl; cout 0.退出endl; cout*endl; coutchoice; switch(choice) case 1: Painting p2;p=&p2; coutp2.numberp2.titlep2.writerp2.gradep2.nationalityp2.sizeendl; coutout; if(out=y)p-add(); p-save(); break; case 2: Painting p3;p=&p3; int index; for(int i=0;icount_Painting;i+) couti+1.p1i.number p1i.title p1i.writer p1i.gradep1i.nationality p1i.sizeendl; coutindex; coutp3.numberp3.titlep3.writerp3.gradep3.nationalityp3.sizeendl; coutout; if(out=y)p-modify(index); p-save(); break; case 3: Painting p4;p=&p4;int index; for(int i=0;icount_Painting;i+) couti+1.p1i.number p1i.title p1i.writer “p1i.gradep1i.nationality p1i.sizeendl; coutindex; coutout; if(out=y) p-del(index); p-save(); break; case 0:quit=true;break; default:cout请输入03之间的数字!endl;break; if(quit=true) break; system(cls); return;void main() /将各个文件中的数据依次读入内存 Book b; b.read(); video v; v.read(); painting p; p.read(); int choice=1; /显示主菜单 while(1) cout*主菜单*endl; cout 1.图书类信息管理endl; cout 2.视频类信息管理endl; cout 3.图画类信息管理endl; cout 0.退出endl; cout*endl; coutchoice; switch(choice) case 1: book_manage();break; case 2: video_manage();break; case 3: painting_manage();break; case 0: cout谢谢您的使用!endl; return;break; default:cout请输入03之间的数字!endl;break; 4. 系统调试4.1 在调试过程中,出现了下面一些错误:略4.2 具体调试过程:略5. 结论程序总共设计了四个类,满足了课题对类的要求,在设计的过程中,建立了较为清晰的类层次,也利用了面向对象的方法以及C+的编程思想来完成系统的设计,做到了用文件存储图书馆中资料信息、从文件中添加物品、查询物品、显示物品、修改物品等要求。而且界面简洁,容易操作。但是程序太长,不够简练,导致出现错误很难发现和修改。6. 心得体会“课程设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问 题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。” 在这次课程设计的过程中,我深深地体会到了理论与实践结合的过程,当实践成功时的成就感,从整个过程中我受益匪浅。 从确定了题目,一直到完成整个大作业,在整整俩周的日子里,我学到很多的东西。不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年便携式振动分析仪项目立项申请报告模板
- 2025年特种作业类金属非金属矿山安全作业金属非金属矿山井下电气作业-金属非金属矿山爆破作业参考题库含答案解析
- 入股协议书模板4篇
- 2024-2025学年八年级下学期语文期中试题汇编《写作》含解析
- 建筑工程施工合同范本
- 2025年特种作业类危险化学品安全作业合成氨工艺作业-氟化工艺作业参考题库含答案解析
- 联考高考数学试卷
- 2025年特种作业类危险化学品安全作业光气及光气化工艺作业-硝化工艺作业参考题库含答案解析
- 梦到在学校写数学试卷
- 临沭初一竞赛题数学试卷
- 《质量管理与可靠性》课件-第4章 质量检验
- 2025年财政部高层次财会人才选拔考试历年参考题库含答案详解(5套)
- 电子技术基础说课
- 医院科室主任年度目标责任书模板
- 2025年成考考试题目解析及答案
- 2025年足球裁判三级试题及答案
- 2025年秋期部编版四年级上册小学语文教学计划+教学进度表
- 2025年特种设备检验检测项目合作计划书
- 安全生产投入费用明细
- 2025年司机三力考试题库及答案
- 铁路动态设计管理办法
评论
0/150
提交评论