软件课程设计源代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 自定义一个示意性的复数类型complex,其中含有若干个成员函数,使用该类可以完成复数的加法以及对复数的输出。请完成类定义,并编制主函数,说明complex类对象,对定义的各成员函数进行调用。
class complex{
double real; //复数实部
double imag; //复数虚部
cout<<"相加得"<<endl;c3.display();
cout<<"相减得"<<endl;c4.display();
cout<<"相乘得"<<endl;c5.display();
cout<<"相除得"<<endl;c6.display();
cout<<"第一个数的模"<<x1<<endl;
cout<<"第二个数的模"<<x2<<endl;
}
void complex::set()
{
cout<<"请输入实部"<<endl;
cin>>real;
cout<<"请输入虚部"<<endl;
cin>>imag;
}
void complex::display()
{
cout<<"("<<real<<"."<<imag<<"i"<<")"<<endl;
}
double imag;
public:
complex(){real=0;imag=0.0;}
~complex(){};
complex(double r,double i)
{
real=r;
imag=i;
}
complex operator+(complex &c2);
complex operator-(complex &c2);
思考:可对该类增加你所考虑到的其他功能,如,对日期进行输入,计算二日期的间隔天数,计算某日期为星期几,打印对象当前数据的y年m月的月历,一次增加若干天,对两个日期进行其他比较运算等。
*/
#include<iostream.h>
#include<iomanip.h> //输出流
#include<stdlib.h> //库函数
int isWrong(); //出错处理
};
void DateType::incrementDay()
{
int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if(m==2&&IsLeapYear(y))
{
if(d==29)
{d=1;m++;} //第二次加一不正确。
return 0;
}
2./*自定义一个简单的日期类DateType,它具有数据成员y、m、d,用来表示当前日期的年、月、日。而后设计该类欲实现(完成)的功能,进而设计出相应的类成员函数。
例如,下面给出的"雏形"可用来实现对天的增加,比较两个日期是否相等,以及对日期的输出等操作。请完成各类成员函数,并编制主函数,说明DateType类对象,对定义的各成员函数进行调用,以验证它们的正确性。
n=0;//初始化天数
switch(y-1)//某月末至1月1日有多少天
{
case 11:n+=334;i=0;break;
case 10:n+=304;i=1;break;
case 9:n+= 273;i=0;break;
case 8:n+= 243;i=0;break;
{
complex c1,c2,c7(0,0);
double x1,x2;
cout<<"";c1.set();
cout<<"";c2.set();
complex c3,c4,c5,c6;
c3=c1+c2;c4=c1-c2;c5=c1*c2;c6=c1/c2;
x1=c1.x(c1);
x2=c1.x(c2);
Per_Year_Days=366;
else
Per_Year_Days=365;
Year_days=Year_days+Per_Year_Days;
Year_Start++;
}
for(int j=1;j<m;j++){
switch(j)
{
case 1:
Year_days=Year_days+days[0];
else
cout<<day<<" ";
Year_days++;
day++;
}
cout<<endl;
}//此函数不太对
/*#include<stdio.h>
void main()
{
int n,x,y,a[32],i,j,k;
n=x=y=i=-1;
while(n<0)
{
printf("请输入年份:");
class DateType //自定义的日期类DateType
{
private://数据成员,表示当前日期的年、月、日
int y,m,d;
public:
DateType(){y=1;m=1;d=1;} //构造函数,设定年、月、日;并设置参数默认值
Init(int a,int b,int c)
{
y=a;m=b;d=c;
complex complex::operator +(complex &c2)
{
return complex(real+c2.real,imag+c2.imag);
}
complex complex::operator -(complex &c2)
{
return complex(real-c2.real,imag-c2.imag);
scanf("%d",&n);
}
while(x>7||x<1)
{
printf("请输入星期(1-7数字):");
scanf("%d",&x);
}
while(y<0||y>12)
{
printf("请输入月份:");
scanf("%d",&y);
}
while(i<31)
a[++i] = i;
n%400==0?k=1:n%4==0&&n%100!=0?k=1:k=0;//是否为闰年
break;
case 5:
Year_days=Year_days+days[4];
break;
case 6:
Year_days=Year_days+days[5];
break;
case 7:
Year_days=Year_days+days[6];
break;
case 8:
Year_days=Year_days+days[7];
break;
case 9:
Year_days=Year_days+days[8];
break;
case 10:
Year_days=Year_days+days[9];
break;
case 11:
Year_days=Year_days+days[10];
break;
}
}
i =Year_days%7;
cout<<endl;
complex operator*(complex &c2);
complex operator/(complex &c2);
double x(complex &c);
void display();
void set();
};
double complex::x(complex &c)
{
return sqrt(c.real*c.real+c.imag*c.imag);
break;
case 2:
if(IsLeapYear(y))
Year_days=Year_days+29;
else
Year_days=Year_days+days[1];
break;
case 3:
Year_days=Year_days+days[2];
break;
case 4:
Year_days=Year_days+days[3];
cout<<"Mon Tue Wed Thu Fri Sat Sun"<<endl;
if(i!=0)
for(n=0;n<i;n++)
cout<<" ";
day=1;
if(IsLeapYear(y)&&m==2)
{
while(day=29)
{
if(day>1)
if(Year_days%7==0)
cout<<endl;
}
int IsLeapYear(int y)
{
return((y%4==0&&y%100!=0)||y%400==0);
//判断是否为闰年
}
void incrementDay();//增加1天
bool equal(DateType dt2)
{
if(dt2.d==d&&dt2.m==m&&dt2.y==y)
if(IsLeapYear(y)) days[1]=29;
if(y<1||m<1||m>12||d<1||d>days[m-1])
return 1;
else
return 0;
}
//----------------------------------------------
void DateType::yueli()
return true;
else return false;//判断二日期是否相等
}
void yueli(); //打印月历
void printDate()
{
cout<<setw(4)<<y<<"年"<<setw(2)<<m<<"月"<<setw(2)<<d<<"日"<<endl;
} //屏幕输出日期对象的有关数据(年、月、日)
if(day>=10)
cout<<day<<" ";
else
cout<<day<<" ";
Year_days++;
day++;
}
}
else
while(day=days[m-1])
{
if(day>1)
if(Year_days%7==0)
cout<<endl;
if(day>=10)
cout<<day<<" ";
}
complex complex::operator *(complex &c2)
{
return complex((real*c2.real-imag*c2.imag),(real*c2.real-imag*c2.imag));
}
complex complex::operator /(complex &c2)
};
进一步,在类中添加对复数进行其他基本运算(如,复数减、乘、除、取模等)的相应成员函数,并通过主函数处的调用来验证各函数的使用正确性。
#include<iostream>
#include<cmath>
using namespace std;
class complex
{
private:
double real;
public:
complex(); //无参构造函数
complex(double r, double i); //2参构造函数
complex addCom(complex c2); //调用者对象与对象c2相加,返回complex类对象
void outCom (); //输出调用者对象的有关数据(各分量)
{
int i,n;
int day;
int days[]={31,28,31,30,31,30,31,31,30,31,30,31};
long int Year_days = 0;
int Year_Start = 1;
int Per_Year_Days;
while(Year_Start<y)
{
if(IsLeapYear(Year_来自百度文库tart))
{
return complex((real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag),(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag));
}
int main()
bool equal(DateType dt2); //判断二日期是否相等
void printDate(); //屏幕输出日期对象的有关数据(年、月、日)
};
注意,当对日期增加1天后,也会涉及所谓的"进位"问题:首先算出本"日"所在的月份具有的天数N,若加1之后的"日"数值超过所在的月份具有的天数N时,"进位"到月,而月份若超过12时还要"进位"到年。
class DateType { //自定义的日期类DateType
int y,m,d; //数据成员,表示当前日期的年、月、日
public:
DateType(int y0=1, int m0=1, int d0=1);
//构造函数,设定年、月、日;并设置参数默认值
void incrementDay(); //增加1天
else
d++;
}
else
{
if(d<days[m-1])
d++;
else
{
if(m==12)
{d=1;m=1;y++;}
else
{d=1;m++;}
}
}
}
int DateType::isWrong()
{
int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
相关文档
最新文档