




免费预览已结束,剩余25页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
*实践教学* 兰州理工大学计算机与通信学院2008年秋季学期面向对象课程设计题 目: 集合的运算 专业班级:08软件工程二班 姓 名: 赵 玉 兰 学 号: 08240531 指导教师: 刘 嘉 成 绩:_ _ 目录摘要 1第 1 章 问题描述 2第 2 章 需求分析 3 2.1 需求陈述 32.2 建立对象模型 32.3 建立功能模型 4第 3 章 概要设计 53.1 系统设计 5 3.1.1 系统分析 5 3.1.2 系统设计思想 53.2系统类层次及结构图 6第 4 章 详细设计 74.1 类与对象的设计 7 4.1.1 类属性的详细设计7 4.1.2 类行为的详细设计74.2 类的详细继承关系 7第 5 章 编码 8第 6 章 测试与维护 20设计总结 26参考文献 27致谢 28摘 要集合的运算涉及到的算法都是以数组的基本运算作为基础的,此程序包括:添加数组元素,删除一个元素,查找元素。集合的运算还包括两个集合的运算,包括两个的交集,并集,差集。关键字:集合的运算 添加 删除 查找集合的交集 集合的并集 集合的差 第1章 问题描述集合的运算包括集合的输入、元素的添加、元素的删除、查找元素、等单个集合的运算。集合的运算还包括两个集合的交集,两个集合的并集,两个集合的差等运算。使用类实现集合的输入,集合元素的添加删除及查找等功能。至少要有20份测试信息,算法对于这些合法的输入信息都能产生满足规格说明要求的结果;算法对于精心选择的典型、苛刻而带有刁难性的几组输入数据能够得出满足规格说明要求的结果;对算法实现过程中的异常情况能给出有效信息第2章 需求分析2.1 需求陈述:1、要求利用面向对象的方法以及C+的编程思想来完成系统的设计;2、要求在设计的过程中,建立清晰的类层次; 3、在系统设计中要分析和定义各个类,每个类中要有各自的属性和方法;4、在系统的设计中,要求运用面向对象的机制(继承、派生及多态性)来实现系统功能。5、在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能及设计出比较友好的界面等。6、定义并实现一个整数集合类int_set,集合类中cur_size表明当前集合中有几个整数,集合中最多含max_size个整数,存放集合元素的数组是动态的。要求提供的方法有:(1)增加一个整数到集合中;(2)从集合中去掉一个元素;(3)判断一个元素是否在集合中;(4)重载运算符输出集合;(5)分别实现集合的交、并、差运算。2.2建立对象模型集合的运算系统集合的输入集合的输出输入 输入 集合的运算系统对象模型2.3 建立功能模型处理系统集合输出集合的输入 集合的运算系统模型第3章 概要设计3.1 系统设计 程序设计的基本目标是用算法对问题的原始数据进行处理,从而获得所期望的效果。但这仅仅是程序设计的基本要求。要全面提高程序的质量,提高编程效率,使程序具有良好的可读性、可靠性、可维护性以及良好的结构,编制出好的程序来,应当是每位程序设计工作者追求的目标。而要做到这一点,就必须掌握正确的程序设计方法和技术。而C+语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。所以采用结构化程序设计方法,对管理系统进行自顶向下,逐步细化,模块化设计。3.1.1 系统分析集合的运算所需要完成的功能有:1. 集合的输入2集合元素的添加,删除及查找3. 两个集合的交集4. 两个集合的并集5. 两个集合的并集 6.两个集合的差3.1.2 系统设计思想 系统开发的总体任务是集合的输入,运算及输出。3.2 系统类层次及结构图类:Int_set集合的最大个数:MAXSIZE集合的个数:cur_size集合的数组表示:array第4章 详细设计4.1 类与对象的设计4.1.1 类属性的详细分析MAXSIZE /集合元素的最大个数Cur_size /集合中元素个数 Array /集合的数组表示4.1.2 类行为的详细分析int getCur_size() /输出集合的元素个数int set(); /显示集合的元素int get(); /输入集合的元素 int Add(); /添加一个元素到集合int Decline(); /删除集合的一个元素 int Ifinclude(); /在集合中查找元素int number(); /返回集合的个数 4.2 类的友元关系该类有三个友元函数来实现集合的交,并,差。void Insert_two()void Union_two()void Dif1()第5章 编 码#includeconst int MAXSIZE=100;class Int_set protected: int cur_size; int arrayMAXSIZE; public: int getcur_size(); Int_set()cur_size=0; void Add(); int set(); void get(); void Decline(); void insert(); void Ifinclude(); friend void Insert_two(Int_set &ob1,Int_set &ob2,Int_set &ob); friend void Union_two(Int_set &ob3,Int_set &ob4,Int_set &ob); friend void Dif1(Int_set &ob5,Int_set &ob6,Int_set &ob); ;int Int_set:getcur_size()return cur_size; void Int_set:Add() int a;couta; if (cur_size=MAXSIZE) cout添加不成功超出集合的最大范围endl; else cur_size+; arraycur_size=a; int Int_set:set() for(int i=1;i=cur_size;i+) coutarrayiendl; return 0; void Int_set:get() int m,n; cout输入要产生集合的大小!m; cout输入数值,每个数值一回车结束endl; for(int i=1;in; arrayi=n; cur_size=m; cout输入结束endl; void Int_set:Decline() couta; if(cur_size=0) cout集合为空endl; else int i; for(i=1;i=cur_size;i+) if (arrayi=a)break; if(i=(cur_size+1)cout没有您要的元素!n; elsefor(i=1;i=cur_size;i+) arrayi=arrayi+; cur_size-; cout删除成功endl; void Int_set:Ifinclude() int a; couta; if(cur_size=0) cout集合为空endl; else for(int i=1;i=cur_size;i+) if(arrayi=a) cout该元素存在于集合中endl;break; if(i=(cur_size+1) cout该元素不存在于集合中endl; void Insert_two(Int_set &ob1,Int_set &ob2,Int_set &ob) int k=1; if(ob1.getcur_size()=0|ob2.getcur_size()=0) cout两个集合的交集为空endl; else for(int i=1;i=ob1.getcur_size();i+) for(int j=1;j=ob2.getcur_size();j+) if(ob1.arrayi=ob2.arrayj) ob.arrayk=ob1.arrayi; k+; Cur_size-; void Union_two(Int_set &ob3,Int_set &ob4,Int_set &ob)int k=1; if(ob3.cur_size=0&ob4.cur_size=0) cout两个集合的并集为空endl; else if(ob3.cur_size=0) ob.cur_size=ob4.cur_size; for(int i=1;i=ob4.cur_size;i+) ob.arrayk=ob4.arrayi; k+; else if(ob4.cur_size=0) ob.cur_size=ob3.cur_size;for(int j=1;j=ob4.cur_size) ob.cur_size=ob3.cur_size; for(int m=1;m=ob3.cur_size;m+) ob.arrayk=ob3.arraym; k+; for(int a=1;a=ob4.cur_size;a+) for(int b=1;b=ob.cur_size;b+) if(ob4.arraya=ob.arrayb)break; if(b=(ob.cur_size+1) ob.arrayk=ob4.arraya; k+; else ob.cur_size=ob4.cur_size; for(int m=1;m=ob4.cur_size;m+) ob.arrayk=ob4.arraym; k+; for(int a=1;a=ob3.cur_size;a+) for(int b=1;b=ob.cur_size;b+) if(ob3.arraya=ob.arrayb)break; if(b=(ob.cur_size+1) ob.arrayk=ob3.arraya; k+; ob.cur_size+; void Dif1(Int_set &ob5,Int_set &ob6,Int_set &ob) if(ob5.cur_size=0) cout两个集合的差为空endl; else int i=1; int j=1; for(i;i=ob5.cur_size;i+) for(j;j=ob6.cur_size;j+) if(ob5.arrayi=ob6.arrayj)break; if(j!=(ob6.cur_size+1) for(int c=i;iob5.cur_size;c+) ob5.arrayc=ob5.arrayc+; ob5.cur_size-; int main()int i;Int_set ob; Int_set ob1,ob2; Int_set ob3; cout“请输入单个集合的元素n; ob.get(); ob.set(); cout请分别输入两个集合的元素n; ob1.get(); ob2.get(); ob1.set(); ob2.set(); cout 请单个集合的运算 endl; cout 1.添加一个元素 endl; cout 2.删除元素endl; cout 3.查找元素endl; cout*n; cout 两个集合的运算 endl; cout 4.两个集合的交集endl; cout 5.两个集合的并集 endl; cout ” 6.两个集合的差endl; couti;switch(i) case 1: ob.Add();ob.set(); break; case 2: ob.Decline(); ob.set(); break; case 3: ob.Ifinclude(); break;case 4:Insert_two(ob1,ob2,ob3); ob3.set(); break; case 5: Union_two(ob1,ob2,ob3); ob3.set(); break; case 6: Dif1(ob1,ob2,ob3); ob3.set(); break; default: cout输入错误,请重新输入!endl;break; return 0;第6章 测试与维护系统主界面一个集合的运算:异常情况:两个集合的运算:设计总结本次课程设计我的题目是集合的运算,任务是利用VC+编译器编译出一个可以输入集合,对集合进行运算,输出,实现对集合的元素添加、删除、查找等操作。目的是通过课程设计使同学们能够进一步理解和熟练掌握课本中所学的各种类,学会如何把学到的知识用于解决实际问题,培养学生自己解决问题的能力和动手能力。使我们将学到的东西充分的与实际问题相结合起来,再次复习了C+语言的文件的一些操作,并且对类与类、对象与对象及继承关系有了深入的了解,如果说数据结构课程让我们对结构化程序设计(程序抽象)有了进一步了解的话,那么面向对象课程设计就要培养我们的整体构架能力,把实际问题用抽象化的程序表达出来,再次,在设计程序时,要考虑多方面的问题,既要考虑冲突的处理,又要考虑各个类之间的关系,还要考虑在程序运行时要最大限度的方便用户。当遇到如此多方面的问题时,必须从最基本的开始,也就是先完成程序的实现,再完整程序的其他功能比如方便等:逐步意识到解决问题的一般步骤应该是,从具体问题抽象出一个适当的图形框架,然后设计一个解此图形框架的算法,最后将编出的程序进行测试,调试直至得到最终解答。这次课程设计中遇到了许多问题,但是每个问题都能够靠自己的努力去克服,但还是有些问题无法解决,这次课程设计极大的考验了我们的编程能力,同时也为我们以后去解决实际问题增加了一些经验.从这次课设中我学到了很多,有与同学合作方面的,也有对自己知识的补充。 通过这次课程设计,让我知道了如何运用面相对象程序设计的方法来设计解决现实生活中的实际问题。总之,本次面向对象
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心协运动会策划书
- 2025年大学物理力学力学实验报告写作培训试卷
- 大数据驱动的市场营销策略研究
- 2025工会知识竞赛题库及参考答案
- 支座垫石专项施工方案
- 2025年美容化妆人员考前冲刺练习题含答案详解(培优B卷)
- 2025自考专业(会计)考试彩蛋押题及答案详解一套
- 2024-2025学年度自考专业(护理)能力检测试卷及参考答案详解【达标题】
- 2025年海南省环境科学研究院招聘事业编制专业技术人员(一)模拟试卷含答案详解(轻巧夺冠)
- 2025年美容化妆人员自我提分评估(必刷)附答案详解
- 管线打开作业工作安全分析(JSA)记录表
- 污水处理池 (有限空间)作业安全告知牌及警示标志
- 住院病人药物使用情况评价表
- 阳宅风水培训讲义课件
- 1《材料科学基础》第一章晶体学基础课件
- 威索燃烧器中文说明书
- 大学物理(热学篇)课件
- 电子商务数据分析教学课件汇总完整版电子教案
- 风电场定检项目
- “智慧城市”项目规划设计书(总体规划方案)
- 中国诗词协会入会申请表
评论
0/150
提交评论