c++语言大作业.docx

上传人:b****0 文档编号:17617306 上传时间:2023-07-27 格式:DOCX 页数:39 大小:320.52KB
下载 相关 举报
c++语言大作业.docx_第1页
第1页 / 共39页
c++语言大作业.docx_第2页
第2页 / 共39页
c++语言大作业.docx_第3页
第3页 / 共39页
c++语言大作业.docx_第4页
第4页 / 共39页
c++语言大作业.docx_第5页
第5页 / 共39页
c++语言大作业.docx_第6页
第6页 / 共39页
c++语言大作业.docx_第7页
第7页 / 共39页
c++语言大作业.docx_第8页
第8页 / 共39页
c++语言大作业.docx_第9页
第9页 / 共39页
c++语言大作业.docx_第10页
第10页 / 共39页
c++语言大作业.docx_第11页
第11页 / 共39页
c++语言大作业.docx_第12页
第12页 / 共39页
c++语言大作业.docx_第13页
第13页 / 共39页
c++语言大作业.docx_第14页
第14页 / 共39页
c++语言大作业.docx_第15页
第15页 / 共39页
c++语言大作业.docx_第16页
第16页 / 共39页
c++语言大作业.docx_第17页
第17页 / 共39页
c++语言大作业.docx_第18页
第18页 / 共39页
c++语言大作业.docx_第19页
第19页 / 共39页
c++语言大作业.docx_第20页
第20页 / 共39页
亲,该文档总共39页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c++语言大作业.docx

《c++语言大作业.docx》由会员分享,可在线阅读,更多相关《c++语言大作业.docx(39页珍藏版)》请在冰点文库上搜索。

c++语言大作业.docx

c++语言大作业

面向对象程序设计大作业

------计算器类、职工工资管理系统

学院名称xxxxxxxxxxxxxxxxxx

专业班级xxxxxxxxxxxxxxxxxxxxx

学生姓名xxxxx

学号xxxxxxxxx

指导教师xxxxxxx

完成时间:

2015年7月1日

山东科技大学

大作业任务书

一、题目:

   计算器类、职工工资管理系统                           

二、原始资料:

 《面向对象程序设计》 大作业要求和任务书                            

三、应解决下列各主要问题:

                        

1、计算器类:

 设计一个计算器类模板,适用各类型表达式的“+、-、×、/”数学四则运算以及“>、>=、<、<=、!

=、==”等关系运算。

数学四则运算表达式中可含有加、减、乘、除运算符以及各型数据的运算对象。

程序可以直接输入数学表达式以及关系表达式,不需要任何转换,就可以直接输出数学四则运算和逻辑运算的结果。

并且操作简单、界面清晰、灵活、实用、方便等。

(系统功能可充分自由发挥)。

扩展功能:

三角运算、进制转换、开方、幂指数等。

2、职工工资信息管理系统:

对职工信息进行录入,修改,查询,删除,查询等,并对职工工资进行统计,对各个年龄段的人进行统计,对各种职工进行信息统计,对公司进行每月税金总额,全年税金总额进行计算,按工资对员工进行排序等。

  

  

  

  

  

  

  

四、设计说明书应附有下列图纸:

   无                     

五、小组分工说明:

  无                      

六、命题发出日期:

  2015.6.10    设计完成日期:

 2015.7.10        

指导教师评语

成绩:

 

      指导教师(签章):

          

            2015年 月日

目录

1.计算器类counter

1.1基本功能...............................................................1

1.2展功功能...............................................................1

1.3开发环境工具...........................................................1

1.4设计过程描述...........................................................1

1.5小结...................................................................2

1.6附录(源程序代码).....................................................2

1.7测试结果...............................................................12

1.8参考文献...............................................................15

2.职工工资信息管理系统

2.1基本功能...............................................................16

2.2展功功能...............................................................16

2.3开发环境工具...........................................................16

2.4设计过程描述...........................................................16

2.5小结...................................................................21

2.6源程序代码............................................................22

2.7测试结果..............................................................32

2.8参考文献..............................................................33

 

1.计算器类counter

1.1基本功能:

设计一个计算器类模板,适用各类型表达式的“+、-、×、/”数学四则运算以及“>、>=、<、<=、!

=、==”等关系运算。

数学四则运算表达式中可含有加、减、乘、除运算符以及各型数据的运算对象。

程序可以直接输入数学表达式以及关系表达式,不需要任何转换,就可以直接输出数学四则运算和逻辑运算的结果。

并且操作简单、界面清晰、灵活、实用、方便等。

(系统功能可充分自由发挥)。

1.2扩展功能:

三角运算、进制转换、开方、幂指数等。

1.3开发环境工具:

visualc++6.0

1.4设计过程描述

将原函数的int型数据改为float型数据。

仿照类设计四则混合运算的程序,四则混合运算的分函数主要有doubleeval_exp(char*exp);//运算四则运算表达式的主函数,返回结果、voidoopcalc:

:

sizeyunsuan();//四则运算调用的主函数、doubleoopcalc:

:

eval_exp(char*exp)//计算表达式函数并返回结果、get_token();//取表达式函数等。

利用类的结构编写一个voidtest()//测试函数,并给出选项选择测试的内容。

并参考资料改写随机数生成器源代码,使之符合类的结构能够被调用,添加关头文件。

建立一个calculator类,再通过向这个类中添加各种函数,逐渐完善计算器的各种功能。

充分使用C++所带的库函数完成对8、16进制的转换,利用数学知识(手工模拟除2取余法)实现十进制向二进制转换。

利用库函数解决了三角函数,以及开方平方运算。

1.5.小结

此次通过对计算器程序的设计:

首先,我对自身的知识掌握度加大了,以前只是单纯的课本掌握,现在通过编写,修改,测试程序,对c++中的一些知识更加了解了,特别是类的使用,以前没有真正去接触过,当然,对类的运用,对多态性也更加了解了。

当然编辑过程中也遇到了很多问题,比如四则混合运算的编写,由于个人的能力问题,独立编写实在无从下手。

后来通过查找资料,并且模仿前人的成果加以修改,最终在计算器程序中可以使用。

总的说来,努力还是很有成效的,锻炼了整体的能力,并且通过一次次的调试来读懂程序,程序更加完善。

1.6源程序代码

#include

#include

#include

usingnamespacestd;

classCalculator

{

private:

doubledata1,data2;

intbase;//用来记录读入需要输出的进制

charch;

public:

Calculator()

{

data1=0;

data2=0;

}

Calculator(doublex)

{

data1=x;

}

Calculator(doublex,doubley)

{

data1=x;

data2=y;

}

Calculator(doublex,intz)//读入进制数

{

data1=x;

base=z;

}

Calculator(doublex,charc,doubley)//读入加减乘除

{

ch=c;

data1=x;

data2=y;

}

voidshow2()//输出进制数

{

if(base==8)

{

intn=data1;

cout<<"8:

"<

}

elseif(base==16)

{

intn=data1;

cout<<"16:

"<

}

elseif(base==2)

{

cout<<"2:

";

inti;

inta[100];

for(i=0;i<100;i++)

a[i]=0;

i=0;

intd=data1;

if(!

d)

cout<<"0"<

if(data1<0)

cout<<'-';

d=abs(d);

while

(1)

{

a[i++]=d%2;

if(d==1)

break;

d/=2;

}

for(intj=i-1;j>=0;j--)

cout<

cout<

}

}

voidshow()//输出加减乘除

{

if(ch=='-')

cout<

elseif(ch=='+')

cout<

elseif(ch=='*')

cout<

elseif(ch=='/')

{

if(data2==0)

cout<<"errors"<

else

cout<

}

voidshow9()

{

cout<<"对数为"<

}

};

intmain()

{

doublen,m,t;

intb,num;

charch;

cout<<"加减乘除输入1,转换进制输入2,平方输入3,开方输入4,sin输入5,cos输入6,tan输入7,幂函数以及对数请输入8,输入0结束"<

while(cin>>t)

{

if(!

t)

return0;

if(t==1)

{

cin>>n>>ch>>m;

Calculatorp(n,ch,m);

cout<<"输出的结果是"<

p.show();

}

elseif(t==2)

{

cin>>n>>b;

Calculatorp(n,b);

cout<<"输出的结果是"<

p.show2();

}

elseif(t==3)

{

cin>>m;

Calculatorp(m);

cout<<"输出的结果是"<

p.show3();

}

elseif(t==4)

{

cin>>m;

Calculatorp(m);

cout<<"输出的结果是"<

p.show4();

}

elseif(t==5)

{

cout<<"输入角度值输入0,输入弧度制输入1"<

cin>>num;

cin>>m;

if(!

num)

m=m/180*3.14;

Calculatorp(m);

cout<<"输出的结果是"<

p.showsin();

}

elseif(t==6)

{

cout<<"输入角度值输入0,输入弧度制输入1"<

cin>>num;

cin>>m;

if(!

num)

m=m/180*3.14;

Calculatorp(m);

cout<<"输出的结果是"<

p.showcos();

}

elseif(t==7)

{

cout<<"输入角度值输入0,输入弧度制输入1"<

cin>>num;

cin>>m;

if(!

num)

m=m/180*3.14;

Calculatorp(m);

cout<<"输出的结果是"<

p.showtan();

}

elseif(t==8)

{

cout<<"输入幂函数请输入1,对数输入0"<

cin>>num;

if(num)

{

cout<<"请输入底数与指数"<

cin>>n>>m;

Calculatorp(n,m);

cout<<"输出的结果是"<

p.show8();

}

else

{

cout<<"输入底数与真数"<

cin>>n>>m;

Calculatorp(n,m);

cout<<"输出的结果是"<

p.show9();

}

}

}

return0;

}

1.7程序测试

一:

简单的四则运算:

二:

2、8、16进制转换:

三:

开方、平方运算:

四:

三角函数:

五:

幂函数与对数

1.8参考文献

[1]杜茂康、李昌兵等编.C++面向对象程序设计(第二版)电子工业出版社

 

职工工资管理系统

2.1基本功能

本程序的基本功能有:

1.添加员工的基本信息,如名字,编号,职位。

2.添加员工的工资,并自动根据员工的职位计算工资。

3.存档员工的基本信息。

4.存档员工当月的基本信息和工资。

2.2拓展功能

本程序的拓展功能有:

1.查询单个员工的基本信息和当月工资。

2.根据职位显示该职位下所有员工的基本信息和当月工资。

3.查询所有员工的基本信息和当月工资。

4.从文件中读入员工的基本信息。

5.文件中读入员工的基本信息和当月工资

2.3开发环境工具:

visualC++6.0

2.4设计过程描述

本系统首先设计出了主函数,然后根据去要实现的功能分别设计了添加,保存,读取,查询的功能。

在显示的函数设计过程中首先运用了文件的读取等必要的知识通过把文件的内容读取到内存然后打印出来。

查询是用一个字符串对比的方法找出用户要查找的人,然后打印出来。

添加则是通过将学生信息存入类中从而实现添加功能。

本程序为职工工资管理系统的设计,采用的是类的相关知识点进行操作,拥有添加员工信息,添加员工工资,保存员工信息,保存员工工资,读取员工信息,读取员工信息工资,查询等功能。

添加员工信息

 

添加员工工资

保存员工信息

保存员工信息和工资

读入员工信息

读取员工信息和工资

查询单个员工信息工资

按职务查询员工信息工资

查询所有员工信息工资

退出

2.5小结

通过学习,我进一步掌握了C++语言类、以及封装知识的用法。

我认为一个好的程序不仅是在设计时能够尽量简洁化、易懂化,并且还需要健壮,不能因为一点小错误而导致整个程序出错,并且编写程序时初期构想的思路非常重要,有一个好的思路,才能编出一个好的程序。

另外,Debug也是关键的一步,通过Debug会发现程序中很多存在的漏洞,反应出程序的不足之处,而加以改进。

综上,我认为这一次课程设计让我体会到了做一个程序应该有的步骤,为我今后的发展埋下了铺垫。

2.6程序源代码

/*****************************************************/

#include

#include

#include

#include

usingnamespacestd;

/*****************************************************/

/*定义一个员工信息的结构体Worker_pay*/

structWorker_pay

{

intnum;//员工编号

stringname;//员工姓名

intage;//年龄

stringsex;//性别

stringdepartment;//部门

stringtitle;//职务

floatwage;//工资

floatallowance;//津贴

floattax;//个人所得税

floatreal_wage;//实发数

Worker_pay*next;//链表结点的指针域

};

/*****************************************************/

/*定义一个员工类Worker*/

classWorker

{

protected:

Worker_pay*head;//链表的头结点指针

public:

Worker(){head=NULL;}//构造函数

voidDisplay(Worker_pay*);//输出函数

Worker_pay*Find(int);//查找函数

intListCount();//统计员工人数函数

voidAddItem(int,string,int,string,string,string,float,float);//创建链表并链表的插入

voidRemoveItem(int);//删除函数

voidReplaceItem(int);//修改函数

voidListL();//遍历函数

voidSearch(int);//查找并输出某个员工信息函数

voidReal_wage(float,float);//计算函数

voidRecordinfo(int,string,int,string,string,string,float,float,float,float);//存储函数

};

/*****************************************************/

//功能:

用于统计员工人数

intWorker:

:

ListCount()

{

if(!

head)

return0;

Worker_pay*p=head;

intn=0;

while(p)

{

n++;

p=p->next;

}

returnn;

}

/*****************************************************/

//功能:

在链表中查找员工的编号

Worker_pay*Worker:

:

Find(intnum)

{

if(ListCount()==0)

{

cout<<"列表为空,请先输入数据!

!

!

"<

returnNULL;

}

Worker_pay*p=head;

while(p)

{

if(p->num==num)

break;

p=p->next;

}

if(!

p)

{

cout<<"错误,找不到该信息!

!

!

"<

returnNULL;

}

returnp;

}

/*****************************************************/

//功能:

创建链表及链表的插入

voidWorker:

:

AddItem(intnum1,stringname1,intage1,stringsex1,stringdepartment1,stringtitle1,floatwage1,floatallowance1)

{

if(!

head)

{

head=newWorker_pay;

head->num=num1;

head->name=name1;

head->age=age1;

head->sex=sex1;

head->department=department1;

head->title=title1;

head->wage=wage1;

head->allowance=allowance1;

head->next=NULL;

return;

}

Worker_pay*t=head;

while(t&&t->num!

=num1)

t=t->next;

if(t)

{

cout<<"操作失败;员工编号为"<

!

!

"<

return;

}

Worker_pay*p=head;

while(p->next)

p=p->next;

Worker_pay*p1=newWorker_pay;

p1->num=num1;

p1->name=name1;

p1->age=age1;

p1->sex=sex1;

p1->department=depart

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2