C++小型工资管理系统.docx

上传人:b****7 文档编号:23579108 上传时间:2023-05-18 格式:DOCX 页数:13 大小:50.01KB
下载 相关 举报
C++小型工资管理系统.docx_第1页
第1页 / 共13页
C++小型工资管理系统.docx_第2页
第2页 / 共13页
C++小型工资管理系统.docx_第3页
第3页 / 共13页
C++小型工资管理系统.docx_第4页
第4页 / 共13页
C++小型工资管理系统.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

C++小型工资管理系统.docx

《C++小型工资管理系统.docx》由会员分享,可在线阅读,更多相关《C++小型工资管理系统.docx(13页珍藏版)》请在冰豆网上搜索。

C++小型工资管理系统.docx

C++小型工资管理系统

目录

1前言2

2工程概况3

2.1继承与派生的概念3

2.1.1继承格式3

3正文4

3.1设计目的和意义4

3.1.1设计目的4

3.1.2设计意义4

3.2目标与具体方案4

3.2.1目标4

3.2.2具体方案4

3.3设计方法和内容5

3.3.1设计方法5

3.3.2详细设计5

3.4设计的关键6

3.5程序结论6

4致谢6

5参考文献6

附录A源程序的清单7

图1程序结果如图3-1:

9

图2程序结果2:

10

 

前言

VisualC++是一个功能强大的可视化软件开发工具。

自1993年Microsoft公司推出VisualC++1.0后,随着其新版本的不断问世,VisualC++已成为专业程序员进行软件开发的首选工具。

虽然微软公司推出了VisualC++.NET(VisualC++7.0),但它的应用的很大的局限性,只适用于Windows2000,WindowsXP和WindowsNT4.0。

所以实际中,更多的是以VisualC++6.0为平台。

VisualC++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrateddevelopmentenvironment,IDE)。

VisualC++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导ClassWizard等开发工具。

这些组件通过一个名为DeveloperStudio的组件集成为和谐的开发环境。

C++有其强大的功能,基于C++面向过程程序设计。

又有其众多的特点。

  

所谓面向对象的程序设计,就是把面向对象的思想应用到软件工程中,并指导开发维护软件。

  对象是由数据和容许的操作组成的封装体,所谓面向对象,就是基于对象的概念,以对象为中心,类和继承为构造机制,认识了解刻画客观世界以及开发出相应的软件系统。

  面向对象的程序设计(OOP)并不是刚刚提出来的,主要是由于C++和Java这类语言的传播,OOP最近才显得越来越重要了。

为什么面向对象的设计如此流行呢?

从理论上讲,用面向对象的语言可以处理任何其他计算机语言所能完成的事情。

然而当建立基于智能体的模型时,OOP对于开始的程序员和后来的程序读者都表现出了很大的优势。

 继承是指一个对象从另一个对象中获得属性的过程.是面向对象程序设计的三大原则之二,它支持按层次分类的概念.例如,波斯猫是猫的一种,猫又是哺乳动物的一种,哺乳动物又是动物的一种.如果不使用层次的概念,每个对象需要明确定义各自的全部特征.通过层次分类方式,一个对象只需要在它的类中定义是它成为唯一的各个属性,然后从父类中继承它的通用属性.因此,正是由于继承机制,才使得一个对象可以成为一个通用类的一个特定实例.一个深度继承的子类将继承它在类层次中的每个祖先的所有属性.

继承与封装可以互相作用.如果一个给定的类封装了某些属性,它的任何子类将会含有同样得属性,另加各个子类所有得属性.这是面向对象程序在复杂性上呈线性而非几何增长的一个重要概念.新的子类继承其所有祖先的所有属性.子类和系统中的其他代码不会产生无法预料的交互作用.

工程概况

C++的继承与派生在C++中的地位也有其重要,要较好的进行面向对象程序设计,还必须了解面向对象程序设计的另个重要特征——继承性!

继承性是面向对象程序设计最重要的特征,可以说,没有掌握继承性,就没有掌握类和对象的精华,也就是没有掌握面向对象程序设计的真谛。

2.1继承与派生的概念

通过继承机制,可以利用已有的数据类型来定义新的数据类型。

所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。

我们称已存在的用来派生新类的类为基类,又称为父类。

由已存在的类派生出的新类称为派生类,又称为子类。

 在C++语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。

从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。

2.1.1继承格式

 单继承的定义格式如下:

  class<派生类名>:

<继承方式><基类名>

  {

  <派生类新定义成员>

  };

  其中,<派生类名>是新定义的一个类的名字,它是从<基类名>中派生的,并且按指定的<继承方式>派生的。

<继承方式>常使用如下三种关键字给予表示:

  public表示公有基类;

  private表示私有基类;

  protected表示保护基类;

  多继承的定义格式如下:

  class<派生类名>:

<继承方式1><基类名1>,<继承方式2><基类名2>,…

  {

  <派生类新定义成员>

  };

  可见,多继承与单继承的区别从定义格式上看,主要是多继承的基类多于一个。

  派生类的三种继承方式

正文

3.1设计目的和意义

3.1.1设计目的

(1)学会编写C++程序。

(2)课程设计是检验我知识能力的一种途径。

(3)课程设计能让我学会许多书本中学不到的东西。

(4)课程设计能使我所学知识融会贯通,熟练掌握C++中一些基本知识点。

(5)课程设计是一次很好的实践机会,可以通过实际操作来找出不足,修改不足,让自己精益求精,做到最好。

(6)通过学生成绩管理系统这个具体的例子把我所学到的和我所想到的都运用进设计一个自己的作品。

3.1.2设计意义

通过课程设计培养了我的动手能力以及综合运用所学的C++语言基础理论,基础知识,基本技能,进行程序分析和程序开发,提高在实际开发中解决问题的能力,达到了能够利用C++语言进行应用程序的规划,分析,设计和实施,更能进一步使我对这门语言有深刻的理解和更好的得到巩固,更能对我所学的知识得到检验。

3.2目标与具体方案

3.2.1目标

编写一个程序实现小型公司的工资管理。

该公司主要有4类成员:

经理、简直技术人员、销售经理、和销售员。

要求储存这些人员的编号、姓名和月工资,计算月工资并显示全部信息。

月工资计算办法为:

经理拿固定月薪8000元,简直技术人员按每小时100元领取月薪,销售员按该当月销售额的4%提成,销售经理既拿固定工资也领取销售提成,固定月工资为5000元,销售提成为所管辖部门当月月薪总额的5‰.

3.2.2具体方案

编写程序就是要用程序语言将需要解决的问题和解决问题的方案描述清出

首先、我定义了一个基类(employee)其中包括3个保护数据成员和3个公用成员函数为了便于后面继承与派生。

其次、由基类派生出经理、兼职技术人员、销售员和销售经理等4个类,

再由、technician类、mannager类、salesman类继承employee类。

再由salesmanager类继承mannager类、salesman类。

最后、通过编译,运行在vc++6.0环境下实现实际的结果

3.3设计方法和内容

3.3.1设计方法

所需环境

对于本次设计的软硬件要求如下:

操作系统Win9x/Me/NT/2000/XP/2003

内存容量512MB

显卡要求集成MX200以上

交互工具鼠标

CPU要求AMD2200+(赛扬2.4GHz)以上

硬盘空间40GB

显示器VGA以上显示器

开发软件MicrosoftVisualC++6.0

3.3.2详细设计

(1)定义一个employee类其中包括3个保护数据成员(ino;编号charname[10]姓名floatsalary月工资)和3个公用成员函数(employee()//构造函数

voidpay(){}//计算职工月工资

voiddisplay(){}//显示职工月工资),为了便于后面继承与派生。

(2)technician类(其包括hourlyrate和workhours两个保护数据成员;及三个公用函数technician(){hourlyrate=400;}//构造函数

voidpay()//计算兼职技术人员月工资

voiddisplay()//显示兼职技术人员月工资)

和mannager类(包括一个hourlyrate数据成员及三个公用函数:

manager(){monthlypay=8000;}//构造函数

voidpay(){salary=monthlypay;}//计算经理月工资

voiddisplay()//显示经理月工资)

及salesman类(包括来两个数据成员commrate和sales及三个公用成员函数salesman(){commrate=0.04;}//构造函数

voidpay()//计算销售员月工资

voiddisplay()//显示销售员月工资)都公共继承employee类,将employee类中的公用成员和保护成员在派生中仍然保持其受保护的属性。

并在technician类上增加hourlyrate和workhours两个受保护的数据成员,同时应用基类的函数(pay()和display()函数);在manager类增加monthlypay数据成员同时增设个manager()构造函数;在salesman类中增设commrate和sales数据成员及technician()构造函数,同时在manager类和salesman类在派生时运用虚基类继承其目的时使得在继承间接共同基类时保留一份成员。

(3)最后、编写主函数,定义一个manager对象m1,technician对象t1,salesman对象s1,salesmanager对象sm1。

再运用前面定义的函数。

(4)用COUT=<”来输出界面所显示的内容。

界面要好看,让其看了能够一幕了然。

(5)设计流程图:

3.4设计的关键

在设计程序时用到继承与派生这C++中最重要的一个特征,同时用到派生中的虚基类使其在继承时把重复的成员简化,只保留相同成员中的一个;其难点在于运用继承与派生处对函数的继承在进行添加修改,使其程序简洁明了;调试程序是一个很重要的步骤,通过调试来找出错误,让计算机识别指令最终达到预期效果,有其重要作用;

3.5程序结论

最终通过运行编译实现啦小型公司的工资管理;实现存储这些人员的编号、姓名和月工资,计算月工资并显示全部信息,以及工资的计算方法。

通过课程设计培养了我的动手能力以及综合运用所学的C++语言基础理论,基础知识,基本技能,进行程序分析何程序开发,提高在实际开发中解决问题的能力,达到了能够利用C++语言进行应用程序的规划,分析,设计和实施,更能进一步使我对这门语言有深刻的理解和更好的得到巩固,更能对我所学的知识得到检验。

致谢

首先感谢学校、学院给我提供了这次宝贵的课程设计机会,让我有这次可以把理论知识和实际生活中的一些小的事件联系在一起,既巩固了自己的理论知识,有增加了自己的实践经验,既鼓舞了自己学习编程的信心,又证明了学习编程是可以和实际生活联系起来的,不是想象中的那样抽象到不能在抽象的地步。

在这次课程设计中,设计者得到了很大收获。

同时咽要感谢学院提供了良好的设计环境,让设计者们互相之间可以交流,互相答疑,互相学习。

使设计者们可以在有限的时间内完成这次设计。

本课题在选题及设计过程中都得到老师的悉心指导,在设计期间老师多次询问程序进程并为我解释疑惑。

在此我要表示对指导老师深深地谢意。

同时也要感谢在设计过程中为我提供各种帮助的老师同学们,没有这些人的帮助,我的设计是不可能这样顺利的完成的。

5参考文献

[1]李春葆.C++语言习题与解析.清华大学出版社.2003

[2]谭浩强.C++程序设计.清华大学出版社.2006

[3]陈培.C#语言程序设计教程.中国水利水电出版社.2004

附录A源程序的清单

#include

#include

usingnamespacestd;

classemployee//基类

{

protected:

intno;//编号

charname[10];//姓名

floatsalary;//月工资

public:

employee()//构造函数

{

cout<<"职工编号:

";

cin>>no;

cout<<"职工姓名:

";

cin>>name;

salary=0;

}

voidpay(){}//计算月工资

voiddisplay(){}//显示月工资

};

classtechnician:

publicemployee

{

protected:

floathourlyrate;

intworkhours;

public:

technician(){hourlyrate=400;}//构造函数

voidpay()//计算月工资

{

cout<

";

cin>>workhours;

salary=hourlyrate*workhours;

}

voiddisplay()//显示月工资

{

cout<<"兼职技术人员"<

"<

}

};

classsalesman:

virtualpublicemployee

{

protected:

floatcommrate;

floatsales;

public:

salesman(){commrate=0.04;}//构造函数

voidpay()//计算月工资

{

cout<

";

cin>>sales;

salary=sales*commrate;

}

voiddisplay()//显示月工资

{

cout<<"销售员:

"<

"<

}

};

classmanager:

virtualpublicemployee

{

protected:

floatmonthlypay;

public:

manager(){monthlypay=8000;}//构造函数

voidpay(){salary=monthlypay;}//计算月工资

voiddisplay()

{

cout<<"经理"<

"<

}

};

classsalesmanager:

publicmanager,publicsalesman

{

public:

salesmanager()//构造函数

{

monthlypay=5000;

commrate=0.005;

}

voidpay()//计算月工资

{

cout<

";

cin>>sales;

salary=monthlypay+commrate*sales;

}

voiddisplay()//显示月工资

{

cout<<"销售经理"<

"<

}

};

voidmain()

{

managerm1;//定义一个manager对象m1

techniciant1;//定义一个technician对象t1

salesmans1;//定义一个salesman对象s1

salesmanagersm1;//定义一个salesmanager对象sm1

m1.pay();

m1.display();

t1.pay();

t1.display();

s1.pay();

s1.display();

sm1.pay();

sm1.display();

}

图1程序结果如图3-1:

图3-1

图2程序结果2:

图3-2

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1