1、 《C++程序设计》课程设计报告 姓 名:*** 班 级:09软件技术2班 学 号:0901030213 项目一 电子日历 一、 设计要求 设计并实现如下功能: 1、 设置日期,日期由键盘上输入。 2、 用日/月/年格式输出日期 3、 在输入日期合法的情况下可实现日期增加一天的操作 二、 设计思想 1、 类的结构图 Date +Display():void +AddOneDay():void +SetDay():void +D
2、ate(){year=0;month=0;day=0;}:void
+friend bool Legal(int y, int m, int d):void
#year:int
#month:int
#day:int
2、 程序主要功能说明
定义了一个设置时间函数SetDay(),用来实现日期的设置,Display()函数显示输入的日期,AddOneDay()函数实现加一天功能,对以上功能还加入了功能选择,用户可根据自己的需要,选择想要获得的功能,还能连续查询,手动控制程序的退出。
三、 源代码
#include
3、std; //Date类的定义 class Date { public: Date(){year=0;month=0;day=0;} void Display();//输出日期函数声明 void AddOneDay();//查询下一天函数声明 void SetDay();//日期设置函数声明 friend bool Legal(int y, int m, int d);//声明判断日期是否合法函数为友元函数,因为成员函数调用了该函数 protected: int year; int month; int day; }; vo
4、id Date::Display()//实现日期的输出
{
cout<<"当前日期是:"< 5、month=1,year++;
}
void Date::SetDay()
{
int y;
int m;
int d;
cout<<"请设置当前日期,年 月 日中间用空格隔开:"< 6、y>9999||y<1||d<1||m<1||m>12)
return false;
int dayLimit=31;//限制日期,避免输入不合法日期,4,6,9,11最大日期为30
switch(m)
{
case 4: case 6: case 9: case 11:
dayLimit--;
}
if(m==2) dayLimit = ((y%4==0&&y%100!=0)||y%400==0) ? 29 : 28;//判断平闰年,限制2月份最大日期为28或29
return (d>dayLimit)? false : tru 7、e;
}
int main()
{
cout<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆"< 8、 ☆"< 9、>>num;
}
else
{
do
{
if(num==0) break;
if(num==1) date.SetDay();
if(num==2) date.Display();
if(num==3)
{
date.Display();
date.AddOneDay();//加一天
cout< 10、<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆"< 11、<<"☆ 3.日期加一天 ★"< 12、out<<"\t欢迎下次使用!"< 13、现在,需要存储这些人员的姓名,编号,级别,当月薪水,计算月薪总额并显示全部信息.设计要求实现如下功能:
月薪计算方法:
经理拿固定工资8000
兼职技术人员按每小时100元领取月薪
兼职推销员的月薪按该推销员当月销售额的4%提成;
销售经理既拿固定月薪也领取销售提成,固定月薪为5000元,销售提成为所管辖部门当月销售总额的5%
设计说明:此程序首先设计一个雇员类employee,然后由雇员类派生出四类人员进行设计。
二、设计思想
1、 类的结构图
employee
#name:char[20]
#grbh:int
#jb: 14、int
#yxze:float
#zdbh:int=1000
+employee()
+~employee()
< 15、 #bfb:float #gdyx:float
-gzsj:int #xse:float +jll()
+jzjs() +txyl() +pay():void
+szgzsj(wh:int):void +setxse(sl:float):void +promote(:int):void
+pay():void +pay():void
+promote(:int):void +promote(:int):void
xsjl
+x 16、sjl()
+pay():void
+promote(:int):void
2、程序功能说明
此程序包含如下功能:设置四类成员的姓名,级别并计算其应得工资为多少,计算工资按不同方法计算,设置姓名用到数组char name[20],设计出一个雇员基类employee类,然后派生出四个不同的类:jzjs、jll、txyl、xsjl,工资计算用pay()函数完成各自的工资计算,函数体中是各类员工工资结算的方法,最后的结果使用基类指针访问各派生类函数,完成结果的输出。
二、 源程序
#include 17、 18、);
int tqjb();
float tqyx();
};
class jzjs:public employee
{
private:
float mxscj;
int gzsj;
public:
jzjs();
void szgzsj(int h);
void pay();
void promote(int);
};
class txyl:virtual public employee
{
protected:
float bfb;
float xse;
public:
txyl() 19、
void setxse(float s);
void pay();
void promote(int);
};
class jll:virtual public employee
{
protected:
float gdyx;
public:
jll();
void pay();
void promote(int);
};
class xsjl:public jll,public txyl
{
public:
xsjl();
void pay();
void promote(int);
};
i 20、nt employee::zdbh=1000;
employee::employee()
{ grbh=zdbh++;
jb=1;
yxze=0.0;
}
employee::~employee()
{}
void employee::promote(int increment)
{ jb+=increment; }
void employee::szname(char* names)
{ strcpy(name,names); }
char* employee::dyname()
{ return name;}
int employee::tqbh 21、)
{ return grbh;}
int employee::tqjb()
{ return jb;}
float employee::tqyx()
{ return yxze;}
jzjs::jzjs()
{ mxscj=100;}
void jzjs::szgzsj(int h)
{ gzsj=h;}
void jzjs::pay()
{ yxze=mxscj*gzsj;}
void jzjs::promote(int)
{ employee::promote(2);}
txyl::txyl()
{ bfb=0.04;}
void txyl:: 22、setxse(float s)
{ xse=s;}
void txyl::pay()
{ yxze=xse*bfb;}
void txyl::promote(int)
{ employee::promote(0);}
jll::jll()
{ gdyx=8000;}
void jll::pay()
{ yxze=gdyx;}
void jll::promote(int )
{ employee::promote(3);}
xsjl::xsjl()
{ gdyx=5000;
bfb=0.05;
}
void xsjl::pay()
{ yxze=gdy 23、x+bfb*xse;}
void xsjl::promote(int)
{ employee::promote(2);}
void main()
{ jll a;
jzjs b;
xsjl c;
txyl d;
char namestr[20];
employee *emp[4]={&a,&b,&c,&d};
int i;
for(i=0;i<4;i++)
{
cout<<"请输下一个雇员的姓名:";
cin>>namestr;
emp[i]->szname(namestr);
emp[i]->promo 24、te();
}
cout<<"请输入兼职技术人员"<
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818