面向對象程序课程设计报告WY.docVIP

  • 2
  • 0
  • 约 10页
  • 2016-12-03 发布于重庆
  • 举报
面向對象程序课程设计报告WY

《面向对象程序课程设计》课程设计报告 班级:2010级6班 学号 姓名:王遥 一.设计任务分析 任务一: 设计一个分数计算器,要把一个分数按照分数的形势输出到屏幕上,并且重载运算符“”和“”,使它们满足输入输出的条件;还要重载“+”,“-”,“*”,“/”四个运算符,是它们四个满足分数的计算法则。在此基础上,设计一个函数,用来对分数进行约分化简。 任务二: 学生成绩管理,其中包括课程的各种属性、本科生的信息、研究生的信息,还包括学期的成绩。学生可以选课(包括身份的确认以及学分限制),学生成绩的输入、计算和排名还要筛选某个科目不及格的人,查看选课的人数。 二.设计方案 任务一设计方案: 仅用一个类来表示分数,它有两个对象,通过这两个对象来进行四则运算,重载通过成员函数来实现。 任务二设计方案: 由于分类多,因此采用工作空间来设计刺程序,这样可以实现多个类相互独立,让程序层次清晰。总体思路是采用文件来持久保存信息,因此对文件的创建较多,文件分类也多,并且充分利用文件的灵活性来显示信息。本程序特点就是对文件的使用。确定了三个类,分别对应课程、本科生、研究生的信息,同时各个类里面有给里面的成员赋值的函数,同时也有获取成员信息的函数。其中的功能就通过这些函数以及和文件的配合来实现,由于有类似于“专业”这种在一定范围内确定值的成员,因此采用枚举类型来处理这些成员。采用获取成员信息的小函数来实现排名、筛选等的功能。 三.详细设计 任务一: 首先定义一个类,此类是分数类(class FractionWY),它有两个数据成员( int Fenzi和int Fenmu),由于要求四则运算的重载要用成员函数来实现,因此在类中还有四则运算的重载的申明 FractionWY operator+(FractionWY ); FractionWY operator-(FractionWY ); FractionWY operator*(FractionWY ); FractionWY operator/(FractionWY ); 我的思路是在程序运行是就已经存在一个分数,然后再输入一个分数,使这两个分数进四则运算,因此类里面的构造函数来初始化第一个分数 FractionWY(int x,int y) { Fenzi=x; Fenmu=y; } 接下来是“”和“”的重载,由于这两个运算符是双目运算符,因此它有两个参数于是重载的实现如下 istream operator(istream in,FractionWY fenshu) { infenshu.Fenzifenshu.Fenmu; if(fenshu.Fenmu==0) { coutinput errorendl; } return in; } 前者依旧是istream类里面的对象,后者就是分数类里面的对象了。 在重载四则运算符时,同样遵循双目运算的要求(此出只列举加法的重载) FractionWY FractionWY::operator+(FractionWY b) { FractionWY c; c.Fenzi=Fenzi*b.Fenmu+b.Fenzi*Fenmu; c.Fenmu=Fenmu*b.Fenmu; return c; } 由于是通过成员函数实现,因此只用一个参数,第一个参数默认为类的对象,只用定义第二个参数即可,然后在里面实现分数的运算,重载定义完成。 接下来进入约分的步骤,我首先定义了一个求最大公约数的函数 int gongyue(int a,int b) { int c; while(c!=0) { c=a%b; a=b; b=c; } return a; } 通过辗转相除法来求最大公约数,此函数会返回一个值,这个值就是最大公约数。 最后再设计一个对输入的分数约分的函数,返回值是一个分数类的对象, FractionWY yuefen(FractionWY a) { int x; x=a.Fenmu; a.Fenmu=a.Fenmu/gongyue(a.Fenzi,a.Fenmu); a.Fenzi=a.Fenzi/gongyue(a.Fenzi,x); return a; } 进入主函数,首先定义一个分数类的对象,并对其初始化值,此函数是负的三分之一, FractionWY Fenshu1(-1,3); 接下来通过手动输入一个函数,下面就是将输入的分数输出到显示器上,并把它和已知分数做四则运算的结果输出,再输出此输入函数的约分化简后的分数, FractionWY Fenshu; cinFenshu; coutFenshu; coutFen

文档评论(0)

1亿VIP精品文档

相关文档