




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
语言课程设计(小型复数计算器)班级学号2143521214350321435072143524学生姓名王劲翔赵冉郭子昕芦鹭提交日期2015年7月23日成绩计算机与通信工程学院目录\o"1-3"\h\z\u语言课程设计 425356799\h0题目 425356800\h2功能 425356801\h2功能主要模块及功能说明 425356802\h2王劲翔负责模块一: 425356803\h2王劲翔负责模块二: 425356804\h5郭子昕负责模块: 425356805\h8芦鹭负责模块: 425356806\h10赵冉负责模块: 425356807\h11核心算法及流程图 425356808\h14主要意义 425356809\h14实现方式及完成情况 425356810\h14语言源程序清单 425356811\h14题目用编写一个小型复数计算器请用面向对象方法设计并实现一个小型复数计算器,包括如下功能:实现复数的设置和显示实现复数加减乘除功能,并显示运算结果实现用运算符==进行复数的相等比较,并显示比较结果功能实现复数的赋值与计算功能主要模块及功能说明王劲翔负责模块一:()主函数{ []声明原复数 ;/*说明:如果为默认值,用循环执行计算器的普通模式*/ ()循环 { 02=0菜单选择,复数选择初始化/*说明:欢迎页面*/ ()欢迎 >>菜单选择/*说明:273-315行使用进行菜单的选择和处理*/ () {/*说明:复数的赋值部分*/ 1:/*说明:调用函数来选择*/ 2()复数选择 (!(2>=02<))判断选择是否合理 { (); ; }/*说明:调用类成员函数*/ [2]()复数的赋值 ()清屏 ; 2:/*说明:输出复数部分*/ <<"输入0,输出所有复数。"<<全部输出 <<"或输出单个复数:"<<;/*说明:调用函数返回值赋给2*/ 2()复数选择 (21) { (0<)全部输出 { <<"复数"<<1<<':'; [i](); } } (!(2>=02<))判断选择是否合理 { (); ; } [2]()复数的输出 ()清屏 ; 3: (); ; 4: (); (); ; : 0; } } () { (1) <<"第一个复数:"; [0](); (1) <<"第二个复数:"; [1](); (); } 0;}王劲翔负责模块二:1;01;(){ [2]={"关闭","开启"}; [3]={0}1;/*说明:防止文件不存在*/ []="";/*说明:声明文件输入输出流与*/ ();/*说明:如果文件打开失败,创建一个空的文件*/ (()) { ()文件被占用/*说明:如果输出文件失败,显示程序异常并退出*/ (()) { <<"程序异常!"<<; ; } <<"001"; ()释放文件 [2]=1; } 开始读取(占用文件) { >>[0]>>[1]>>[2]; (); } 读入结束(释放文件) [0]; [1]; [2]; (1) { x; (""); <<"设置与帮助"<<; <<"①转入简单模式:"<<[[0]]<<; <<"②简单模式的使用说明:"<<[[1]]<<; <<"③清屏:"<<[[2]]<<;/*如果用户不喜欢清屏,在设置中还可以设置为关闭清屏。*/ <<"④帮助"<<; <<"⑤关于"<<; <<"⑥返回"<<; <<"选择:"; >>x; (x) { 1:/*说明:将和取反*/ [0]^=1; ^=1; ; 2:/*说明:将和取反*/ [1]^=1; ^=1; ; 3: [2]^=1; ^=1; ; 4: (); ; 5: <<"关于:"<<; <<"本程序由王劲翔,芦鹭,赵冉,郭子昕编写"<<; (); ; : ; }/*将新设置(由数组表示)重新写入文件*/ ()开始输出(占用文件) (0<2) { <<[i]<<''; } <<[2]; ()输出结束(释放文件) }}郭子昕负责模块:程序从7到21行,声明一个类,公有类中包含构造函数赋初值0+0i,对五个运算符重载:+,-,*,/,,复数赋值函数(),输出函数(),私有类中包含对象实数,虚数。类{ : (00)(r)(i){ }构造函数赋初值 +(&)重载+ -(&)重载- *(&)重载* /(&)重载/ (&)重载 ()复数赋值 ()输出 : 实数 虚数};23到29行,定义重载运算符+的函数,包含对复数加法的算法,重载函数为成员函数,返回值为类型。定义对象c,c2为类对象c的引用,c的实部为两个复数实部相加,虚部为复数虚部相加。+(2)重载+{ c; 2; 2; c;}31到37行,定义重载运算符-的函数,包含对复数减法的算法,重载函数为成员函数,返回值为类型。定义对象c,c2为类对象c的引用,c的实部为两个复数实部相减,虚部为复数虚部相减。-(2)重载-{ c; 2; 2; c;}39行到45行,定义重载运算符*的函数,包含对复数乘法的算法,重载函数为*成员函数,返回值为类型。定义对象c,c2为类对象c的引用,c的实部为两个复数实部相乘减去虚部的乘积,虚部为两个复数实部与虚部乘积和。*(2)重载*{ c; *c2*c2; *c2*c2; c;}47到53行,定义重载运算符/的函数,包含对复数除法的算法,重载函数为成员函数,返回值为类型。定义对象c,c2为类对象c的引用,c的实部为两个复数实部乘积与虚部乘积的和除以c2的实部乘积与虚部乘积的和,虚部为两个复数实部乘积与虚部乘积的差除以c2的实部乘积与虚部乘积的和。/(2)重载/{ c; (*c2*c2)/(c2*c22*c2); (*c2*c2)/(c2*c22*c2); c;}55到60行,定义重载运算符的函数,函数类型为型,包含对复数是否相等的算法,c2为类对象c的引用,如果两个复数实部相等并且虚部相等,那么这两个复数相等,函数返回值为,如果不等函数返回值为。(2)重载{ (22) ; ()}64行到80行,定义一个型复数赋值函数(),定义字符型c,c2,将复数以的形式输入,输入,c,,c2,分别对应a,+,b,i。当实部1被省略时即输入时会报错,输出"请按正确的格式输入,请勿使用空格,b不可省略。"这句话;当输入复数为时,复数虚部会取负。无返回值。()赋值{ 2; <<"输入格式"<<; <<"输入:"; >>; >>c; >>; >>c2; (c2'\0')防错 { <<"请按正确的格式输入,请勿使用空格,b不可省略。"<<; } ('-') ;;}82到87行,定义一个型输出函数(),判断复数虚部正负,以或的形式输出。()输出{ <<'('<<; (>=0)<<'+'; <<<<"i)"<<;}芦鹭负责模块:程序中的计算部分从195行开始,首先是((*)[])定义6个指向类对象的指针为实参的函数。在函数体里定义一个类对象,参与计算的两个复数号1和2以及运算符号D和D2。>>1>>D; ('=')如果输入了一个= { >>D2; (D2'=')判断后一个是否为= { ("")()清屏 ; }输入一个运算符号D,当符号D是“=”时继续输入符号D2,若D2不是“=”则符号输入错误,清屏。 >>2; (D)计算部分 { '+': (*)[1-1]+(*)[2-1]; (); (); ; '-': (*)[1-1]-(*)[2-1]; (); (); ; '*': (*)[1-1]*(*)[2-1]; (); (); ; '/': (*)[1-1]/(*)[2-1]; (); (); ;计算部分主要使用了运算符的重载,即定义一个函数使运算符能在函数中拥有指定的功能。“+”“-”的重载运算中,的实部为两个复数实部相加减,虚部为复数虚部相加减,“*”“/”的重载运算中,的复数1的实部分别与复数2的实部虚部分别相乘除,虚部也分别与复数2的实部虚部分别相乘除。 '=': ((*)[1-1](*)[2-1]) <<"复数"<<1<<"与复数"<<2<<"相等"<<; <<"复数"<<1<<"与复数"<<2<<"不相等"<<; (); ;: ; }当D为“=”时,若复数1等于复数2则输出复数1等于复数2,反之输出复数1不等于复数2。赵冉负责模块:赵冉负责的第一部分:89-101行欢迎页面(){ <<"┈┈┈┈┈┈┈┈┈┈┈┈┈"<<; <<"┃小型复数计算器┃"<<; <<"┃1.复数的设置┃"<<; <<"┃2.复数的显示┃"<<; <<"┃3.复数计算┃"<<; <<"┃4.设置与帮助┃"<<; <<"┃5.退出┃"<<; <<"┈┈┈┈┈┈┈┈┈┈┈┈┈"<<; <<"选择:";}1、通过输出流语句进行页面的初始化,简洁的目录形式让使用者能够一目了然计算器的使用方法和功能。2、通过循环可以使程序返回此界面,能让计算器的使用效率提高。第二部分:103-115行菜单选择(){ ; <<"复数清单:"<<; (0<) { <<"复数("<<1<<")"<<; } <<"请选择复数号:"; >>; 1;}通过调用此函数,可以找到每个复数,从而对复数进行赋值或者进行查找显示。首先,先进行循环将复数列出来,然后输入复数的编号,因为复数编号按人类常识习惯从1开始,而复数是通过数组来依次显示的,所以需要一个中间变量来进行转换,1得到数组中此复数的编号。接下来进行赋值或者显示复数。第三部分:119-125行清屏1;(){ (""); (1) ("");}为了避免运算的数据过多而显示的多乱杂,每一个步骤均进行清屏,因为有数据显示功能,所以不用担心找不到上一个数据。清屏通过使用指令。因为下面还用到变量,所以不在函数中进行声明,而是在主函数外进行全局变量的声明。通过("");语句,可以让使用者知道即将清屏,避免直接清屏而感到不适。因为定义全局变量为1,所以肯定执行清屏。清屏后,跳出此次循环,从新执行欢迎界面。如果用户不喜欢清屏,在设置中还可以设置为关闭清屏。第四部分:126-131行帮助介绍(){ <<"帮助:"<<; <<"函数计算的输入格式:\n复数号计算方式复数号(如复数1+复数2表示为1+2),支持*/与(复数的比较)"<<; ();}对计算器的计算方法进行介绍,让使用者了解如何使用。最后,通过清屏返回开始界面。第五部分:318-325行简单模式 () { (1) <<"第一个复数:"; [0](); (1) <<"第二个复数:"; [1](); (); }考虑到一些用户对操作界面的不熟悉,我们开发了简单模式。在简单模式的情况下,界面更加简洁明了,就像普通计算器一样直接输入数据和表达式就好。转入简单模式后,根据提示输入第一个数据和第二个数据以及运算表达式就能进行运算。核心算法及流程图主要意义实现了复数的基本运算,以及实现了程序的个性化,使用户可以设置想要的输入输出方式,不再是单一的模式。实现方式及完成情况1、通过输出流语句进行页面的初始化,简洁的目录形式让使用者能够一目了然计算器的使用方法和功能。2、通过循环可以使程序返回此界面,能让计算器的使用效率提高。3、运算方面,使用了类的重载,实现了对于复数类对象的加、减、乘、除、比较的功能。4、在人性化方面,提供了几种输出的显示方式,使用了文件记录了用户的选择,并在下一次开启时读取。语言源程序清单<><><>6一共有多少个复数;类{ : (00)(r)(i){ }构造函数赋初值 +(&)重载+ -(&)重载- *(&)重载* /(&)重载/ (&)重载 ()复数赋值 ()输出 : 实数 虚数};+(2)重载+{ c; 2; 2; c;}-(2)重载-{ c; 2; 2; c;}*(2)重载*{ c; *c2*c2; *c2*c2; c;}/(2)重载/{ c; (*c2*c2)/(c2*c22*c2); (*c2*c2)/(c2*c22*c2); c;}(2)重载{ (22) ; ;}()赋值{ 2; <<"输入格式"<<; <<"输入:"; >>; >>c; >>; >>c2; (c2'\0')防错 { <<"请按正确的格式输入,请勿使用空格,b不可省略。"<<; } ('-') ; ;}()输出{ <<'('<<; (>=0)<<'+'; <<<<"i)"<<;}欢迎页面(){ <<"┈┈┈┈┈┈┈┈┈┈┈┈┈"<<; <<"┃小型复数计算器┃"<<; <<"┃1.复数的设置┃"<<; <<"┃2.复数的显示┃"<<; <<"┃3.复数计算┃"<<; <<"┃4.设置与帮助┃"<<; <<"┃5.退出┃"<<; <<"┈┈┈┈┈┈┈┈┈┈┈┈┈"<<; <<"选择:";}菜单选择(){ ; <<"复数清单:"<<; (0<) { <<"复数("<<1<<")"<<; } <<"请选择复数号:"; >>; 1;}();清屏1;(){ (""); (1) ("");}01;(){ [2]={"关闭","开启"}; [3]={0}1; 防错工作 []=""; (); (())如果没有,创建一个空的文件 { ()文件被占用 (()) { <<"程序异常!"<<; ; } <<"001"; ()释放文件 [2]=1; } 开始读取(占用文件) { >>[0]>>[1]>>[2]; (); } 读入结束(释放文件) [0]; [1]; [2]; (1) { x; (""); <<"设置与帮助"<<; <<"①转入简单模式:"<<[[0]]<<; <<"②简单模式的使用说明:"<<[[1]]<<; <<"③清屏:"<<[[2]]<<; <<"④帮助"<<; <<"⑤关于"<<; <<"⑥返回"<<; <<"选择:"; >>x; (x) { 1: [0]^=1; ^=1; ; 2: [1]^=1; ^=1; ; 3: [2]^=1; ^=1; ; 4: (); ; 5: <<"关于:"<<; <<"本程序由王劲翔,芦鹭,赵冉,郭子昕编写"<<; (); ; : ; } ()开始输出(占用文件) (0<2) { <<[i]<<''; } <<[2]; ()输出结束(释放文件) }}(){ <<"帮助:"<<; <<"函数计算的输入格式:\n复数号计算方式复数号(如复数1+复数2表示为1+2),支持*/与(复数的比较)"<<; ();}((*)[])分离计算部分{ ; 12; 2; <<"输入算式:"<<说明 >>1>>D; ('=')如果输入了一个= { >>D2; (D2'=')判断后一个是否为= { ("")清屏 ; } } >>2; (D)计算部分 { '+': (*)[1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 测试环境的搭建策略及技巧分享试题及答案
- 寄宿小学安全管理制度
- 商铺关于餐饮管理制度
- 工程对上结算管理制度
- 口腔咨询日常管理制度
- 计算机网络知识点概述试题及答案
- 实验生物安全管理制度
- 学校资产报告管理制度
- 学生自我隔离管理制度
- 深入浅出网络监控工具介绍试题及答案
- 2024-2025学年人教版初中物理九年级全一册《电与磁》单元测试卷(原卷版)
- 十八项医疗核心制度考试题与答案
- 齐鲁工业大学《制药工程专业英语》2022-2023学年第一学期期末试卷
- 组合烟花检验原始记录表
- 【MOOC】模拟电子电路-杭州电子科技大学 中国大学慕课MOOC答案
- 2023年广东省深圳市南山区第二外国语学校(集团)学府中学中考历史二模试卷
- 2018年浙江嘉兴舟山中考满分作文《让矛盾的心不再矛盾》
- 《高强韧马氏体不锈钢组织与性能研究》
- 建筑施工安全设备检测实施方案
- 建筑垃圾处置公司激励与奖励机制
- GB/T 32151.25-2024温室气体排放核算与报告要求第25部分:食品、烟草及酒、饮料和精制茶企业
评论
0/150
提交评论