C++程序小设计.docx
- 文档编号:30765920
- 上传时间:2023-08-23
- 格式:DOCX
- 页数:24
- 大小:191.64KB
C++程序小设计.docx
《C++程序小设计.docx》由会员分享,可在线阅读,更多相关《C++程序小设计.docx(24页珍藏版)》请在冰豆网上搜索。
C++程序小设计
一、设计题目
集合的并、交和差运算
二、小组成员分工说明
单独完成,无小组成员
三、需求分析
1)运行环境(软、硬件环境)
软件环境:
MicrosoftwindowsXP/7visualc++6.0
硬件环境:
64M以上内存
2)输入的形式和输入值的范围
输入形式:
键盘输入输入值的范围:
小写字符〔a..z〕
3)输出的形式描述
集合的交集运算,并集运算,差集运算,补集运算,结束程序按用户要求屏幕输出。
4)功能描述
本系统通过随意输入两个集合来进行交、并、差运算。
作为系统使用者,首先要了解集合基本概念,以避免输入错误集合,使得系统无法正常运行。
使用者可根据自己本人的需要来选择进行何种运算形式。
5)测试数据
(1)Set1=magazine,Set2=paper,
Set1∪Set2=aeginmprz,Set1∩Set2=ae,Set1-Set2=gimnz。
(2)Set1=0120per4a6tion89,Set2=errordata,
Set1∪Set2=adeinoprt,Set1∩Set=2aeort,Set1-Set2=inp。
四、概要设计
1)抽象数据类型定义描述
ADTListis
Data
线性表的长度;若干个相同类型的数据元素组成的表
Operation
List
初始化值:
无
动作:
置顺序表的长度为0
Length
输入:
无
动作:
求表的长度
输出:
返回表的长度
Add
输入:
集合a,集合b
动作:
集合进行并运算
输出:
集合的并
Mul
输入:
集合a,集合b
动作:
集合进行交运算
输出:
集合的交
Dec
输入:
集合a,集合b
动作:
集合进行差运算
输出:
集合的差
Display
输入:
无
动作:
遍历集合中所有元素并输出
输出:
集合元素
2)功能模块设计
voidAdd(Listla,Listlb);
voidMul(Listla,Listlb);
voidDec(Listla,Listlb);
voidList:
:
Display()
3)模块层次调用关系图
五、详细设计
//-------------------------------
List:
:
List()
{
length=0;
}
//-------------------------------
List:
:
List(chara[],intn)
{
if(n>Max)throw"数组元素个数不合法";
for(inti=0;i data[i]=a[i]; length=n; } //------------------------------- voidList: : Display() { for(inti=0;i { if(data[i]<123&&data[i]>96) cout< } } //------------------------------- voidList: : Add(Listla,Listlb) { intv,m=la.length; for(inti=0;i data[i]=la.data[i]; for(intj=0;j { v=0; for(intk=0;k { if(la.data[k]==lb.data[j]) v=1; } if(v==0) { data[m]=lb.data[j]; m++; } } for(intq=0;q for(intw=0;w { if(data[w]>data[w+1]) { v=data[w]; data[w]=data[w+1]; data[w+1]=v; } }; for(intx=0;x if(data[x]<123&&data[x]>96) cout< } //----------------------------------- voidList: : Mul(Listla,Listlb) { intm=0,v=0; for(intj=0;j { v=0; for(intk=0;k { if(la.data[k]==lb.data[j]) v=1; } if(v==1) { data[m]=lb.data[j]; m++; } } for(intq=0;q for(intw=0;w { if(data[w]>data[w+1]) { v=data[w]; data[w]=data[w+1]; data[w+1]=v; } }; if(m==0) cout<<"φ"; else { for(intx=0;x if(data[x]<123&&data[x]>96) cout< } } //----------------------------------- voidList: : Dec(Listla,Listlb) { for(inti=0;i data[i]=la.data[i]; intv=0; for(intj=0;j { for(intk=0;k { if(la.data[k]==lb.data[j]) data[k]=0; } } charp[Max]; intr=0; for(inty=0;y { if(data[y]! =0) { p[r]=data[y]; r++; } } for(intq=0;q for(intw=0;w { if(p[w]>p[w+1]) { v=p[w]; p[w]=p[w+1]; p[w+1]=v; } }; for(intx=0;x if(p[x]<123&&p[x]>96) cout< } //----------------------------------- 六、调试分析 遇到的问题: 1)集合有其特殊的输出形式,既其所含元素必须不相同,故若使用者输入在一个集合中输入相同元素,该如何甄别显示。 2)因需要,要将集合内元素进行排序。 3)求交集时,需考虑有空集的情况。 4)若输入小写字母以外的字符时,集合也将显示。 解决办法: 1)在主函数中添加一段比较程序,当输入元素后自动进行互相比较,若出现相同元素,则减去相应数量的表长。 2)在功能函数中就对元素进行比较,使最后主函数调用功能函数时能输出已排序好的集合元素。 3)如果两集合没有元素相等,则交集为空集。 故只需在原有功能基础上对数加入一个判断语句,即m=0时,两集合无相同元素,则输出“φ”。 4)在输出时添加条件,判断元素ASCII码。 经验体会: 通过这次数据结构的课程设计,我学到了很多东西。 首先,巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力,为我培养独立思考,深入研究,分析问题、解决问题的能力提供了帮助。 其次,通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。 通过这次课程设计,也培养了我严肃认真的工作作风,逐步建立正确的生产观念、全局观念。 课程设计也是一种能把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。 在这次课程设计中我遇到许多问题和麻烦,但同时也得到了同学的帮助和指导,才能够使得这次课程设计顺利的进行下去,另外,在程序调试过程中,也得到很多同学的帮助,给我及时指出错误,提出许多宝贵意见。 在此对同学表示感谢! 七、用户使用说明 1)输入集合Set1的元素个数 注意: 若输入除数字以外的字符,会导致程序直接结束。 例如: 输入8Enter 2)输入集合Set1的元素 注意: 若输入除小写字母以外的字符,最终将不会显示。 例如: 输入mEnter---输入xEnter…… 直至输完相应Set1元素个数的元素。 3)输入集合Set2的元素个数 注意: 若输入除数字以外的字符,会导致程序直接结束。 例如: 输入4Enter 4)输入集合Set2的元素 例如: 输入mEnter---输入xEnter…… 直至输完相应Set1元素个数的元素。 5)输入完毕,显示两集合;选择相应功能: 1.求两集合的并集 2.求两集合的交集 3.求两集合的差集 4.求Set1中Set2的补集 0.退出程序 例如: 输入1Enter 八、测试结果 (1)Set1=magazine,Set2=paper, Set1∪Set2=aeginmprz, Set1∩Set2=ae, Set1-Set2=gimnz。 (2)Set1=0120per4a6tion89,Set2=errordata, Set1∪Set2=adeinoprt, Set1∩Set2=aeort, Set1-Set2=inp。 九、附录: 程序设计源代码 #include usingnamespacestd; constintMax=100; classList { public: List(); List(chara[],intn); voidAdd(Listla,Listlb); voidMul(Listla,Listlb); voidDec(Listla,Listlb); voidDisplay(); private: intlength; chardata[Max]; }; //------------------------------- List: : List() { length=0; } //------------------------------- List: : List(chara[],intn) { if(n>Max)throw"数组元素个数不合法"; for(inti=0;i data[i]=a[i]; length=n; } //------------------------------- voidList: : Display() { for(inti=0;i { if(data[i]<123&&data[i]>96) cout< } } //------------------------------- voidList: : Add(Listla,Listlb) { intv,m=la.length; for(inti=0;i data[i]=la.data[i]; for(intj=0;j { v=0; for(intk=0;k { if(la.data[k]==lb.data[j]) v=1; } if(v==0) { data[m]=lb.data[j]; m++; } } for(intq=0;q for(intw=0;w { if(data[w]>data[w+1]) { v=data[w]; data[w]=data[w+1]; data[w+1]=v; } }; for(intx=0;x if(data[x]<123&&data[x]>96) cout< } //----------------------------------- voidList: : Mul(Listla,Listlb) { intm=0,v=0; for(intj=0;j { v=0; for(intk=0;k { if(la.data[k]==lb.data[j]) v=1; } if(v==1) { data[m]=lb.data[j]; m++; } } for(intq=0;q for(intw=0;w { if(data[w]>data[w+1]) { v=data[w]; data[w]=data[w+1]; data[w+1]=v; } }; if(m==0) cout<<"φ"; else { for(intx=0;x if(data[x]<123&&data[x]>96) cout< } } //----------------------------------- voidList: : Dec(Listla,Listlb) { for(inti=0;i data[i]=la.data[i]; intv=0; for(intj=0;j { for(intk=0;k { if(la.data[k]==lb.data[j]) data[k]=0; } } charp[Max]; intr=0; for(inty=0;y { if(data[y]! =0) { p[r]=data[y]; r++; } } for(intq=0;q for(intw=0;w { if(p[w]>p[w+1]) { v=p[w]; p[w]=p[w+1]; p[w+1]=v; } }; for(intx=0;x if(p[x]<123&&p[x]>96) cout< } #include"head.h" voidmain() { intn1,n2; { chars[Max],p[Max]; cout<<"请输入Set1元素个数: "< cin>>n1; cout<<"请输入Set1集合的元素: "< for(inti=0;i { cin>>s[i]; for(intf=0;f { if(s[i]==s[f]) {i--;n1--;} } } cout<<"请输入Set2元素个数: "< cin>>n2; cout<<"请输入Set2集合的元素: "< for(intm=0;m { cin>>p[m]; for(intn=0;n { if(p[m]==p[n]) {m--;n2--;} } } Listla(s,n1),lb(p,n2),lc; cout<<"集合Set1={";la.Display();cout<<'}'< cout<<"集合Set2={";lb.Display();cout<<'}'< intn=0; while (1) { cout<<"===================================================="< cout<<"请输入你要选择的功能"< cout<<"1-求Set1与Set2的并集"<<""<<"2-求Set1与Set2的交集"< cout<<"3-求Set1与Set2的差集"<<""<<"0-退出该程序"< cout<<"===================================================="< cin>>n; switch(n) { case1: cout<<"Set1∪Set2={";lc.Add(la,lb);cout<<"}"; break; case2: cout<<"Set1∩Set2={";lc.Mul(la,lb);cout<<"}"; break; case3: cout<<"Set1-Set2={";lc.Dec(la,lb);cout<<"}"; break; case0: cout<<"运行结束,欢迎下次继续使用,谢谢! "< exit (1); default: cout<<"输入有误,请重新输入"; break; } cout< } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序 设计