C++ 工资管理系统论文_第1页
C++ 工资管理系统论文_第2页
C++ 工资管理系统论文_第3页
C++ 工资管理系统论文_第4页
C++ 工资管理系统论文_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、X X X X 大 学C+语言程序设计课程设计(论文)题目: 工资管理系统 院(系): 专业班级: 学 号: 学生姓名: 指导教师: 教师职称: 起止时间: 课程设计(论文)任务及评语院(系): 教研室: 学 号 学生姓名 专业班级 课程设计(论文)题目工资管理系统课程设计(论文)任务程序设计的任务与要求:(1). 掌握面向对象程序设计语言C+的基本语法(2). 掌握C+面向对象设计的思想(3). 掌握VC+6.0与DEV C+ 开发工具的使用 (4). 运用标准C+规范设计应用程序设计过程中,要严格遵守设计的时间安排,听从指导教师的指导。正确地完成上述内容,规范完整地撰写出设计报告。指导教师

2、评语及成绩 成绩: 指导教师签字: 年 月 日xxxx 大 学 课 程 设 计 说 明 书(论 文) 目 录第1章 课程设计目的与要求11.1 设计目的11.2实验环境11.3预备知识11.4设计要求1第2章 课程设计内容22.1 课题描述22.2 系统设计32.2.1功能分析32.2.2面向对象设计32.2.2类成员描述72.3程序实现82.3.1源码分析82.3.2运行结果12第3章 总结14参考文献15第1章 课程设计目的与要求1.1 设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程

3、度。通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程C+语言教程的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。(3)利用所学知识,开发小型应用系统,掌握运用C+语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。(5)掌握面向对象程序设计的方法。(6)熟练掌握C+语言的基本语法,灵活运用各种数据类型。(7)进一步掌握在集成环境下如何调试程序和修改程序

4、。1.2实验环境硬件要求能运行Windows 操作系统的微机系统。C+语言应用程序开发软件使用:VC+ 系统,或其他C+语言应用程序开发软件。1.3预备知识熟悉C+语言程序设计的基本知识及VC+编辑器的使用方法。1.4设计要求1.仔细分析设计题目,画出程序流程图,编写程序源代码。2.积极上机调试源程序,增强编程技巧与调程能力。3.认真书写课程设计预习报告,课程设计说明书。4.遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成课程设计内容。第2章 课程设计内容2.1 课题描述工资总额预算管理,是指企业按照国家收入分配政策规定和出资人的调控要求,围绕企业发展战略目标,根据企

5、业经济效益、人工成本承受能力和劳动力市场价位等因素,对企业职工工资总额和工资水平做出预算安排并进行规范管理的活动。国家为了保障低收入职工家庭的基本生活,规定特大城市人均生活费收入每日不超过五十元者,大中城市不超过四十五元者,小城市和县镇不超过四十元者可予困难补助。在社会主义公有制条件下,工资除了具膏按劳分配的经济职能外,还具有调节社会成员之间的利益关系,促进社会安定团结的社会职能。对低收入职工家庭国家采取保障其基本生活的措施,体现了社会主义制度的优越性,促进了社会的稳定,在当前条件下是完全必要的。工资的职能不是单一的,而是多元的。这一点已被越来越多的人所认识。职能是规律的外观,多元职能是多个经

6、济规律共同作用的结果。多元经济导致多元工资,伴随着这一必备诉求,劳动者还会以企业未足额支付加班工资为由提出解除劳动关系并要求企业支付解除劳动关系的经济补偿金。这造成了近期的劳动关系较之以往具有更大的不稳定性,在一定程度上影响了相关行业的可持续发展。究其原因,主要是在加工制造行业,长期普遍存在着企业未依法定标准及时足额支付加班工资的情况,以及司法政策对工资保护期间的延长。针对目前的情况,企业除了妥善处理好当下的问题,包括基本工资、补贴工资、奖励工资、扣除工资等方式,从根本上完善工资核算和发放制度,避免以后爆发更大规模的纠纷。激励员工付出较高程度的努力的方法之一是实行严密的监督。严密的监督需要高成

7、本。根据工资绩效支付工资问题,激励性工资方案面临问题,所有的工资体系都必须能够满足企业和员工双方的愿望,绩效工资应当是建立在能够将员工的努力和企业的目标很好结合起来的一系列措施基础之上的。但是由于基类employee中使用了虚函数,用基类的指针数组来处理不同的派生类对象时,通过指针访问的便是派生类的成员函数,所以主函数中可以用循环结构,在循环体中用统一的形式调用不同派生类的成员函数,所以主函数中可以用循环结构,系统要求能够添加职工的信息工能,也就是当有新的职工加入时可以记录在系统内。在循环体中用统一的形式调用不同派生类对象的成员函数,来完成不同功能基本工资、补贴工资、奖金工资、扣除工资、实发工

8、资,硬件要求能运行Windows 操作系统的微机系统。C+语言应用程序开发软件使用VC+ 系统,或其他C+语言应用程序开发软件。2.2 系统设计2.2.1功能分析本系统要求有如下几种功能:1) 本系统要求能够添加职工的信息工能,也就是当有新的职工加入时可以记录在系统内。2) 本系统在这个功能在输入职工号之后,能够有基本工资、补贴工资、奖励工资、扣除工资的功能。3) 本系统要求有查询职工信息功能,我们在操作系统上可以看到所有职工的信息,并且可以查询,输入相应的职工号即可。4) 本系统有添加新职工信息及查询的功能,输入相应的职工号即可。5) 本系统要求有输出职工信息功能,可以把相应的职工工资信息输

9、出以便查询。6) 本系统要求有退出功能,即退出系统的方法。2.2.2面向对象设计1.类设计 以一个小型公司的人员信息管理程序为例,用基类的指针数组来处理不同派生类对象,从而实现了多态性调用,使用动态数组类模来代替C+预定义的数组类型也可以完成同样的功能,在本实验中的类employee中,我们采用了指针形式进行传递,在主函数中,通过传递方式将数据保存到相应的对象中,通过程序的运行得出,每个职员的月薪需要进行单独的输入,而后根据每个职员的每种实际情况而输入月薪计算,包括之原应该具有的基本月薪、补贴基金、本系统采用了多文件的设计结构,采用了文件,分别为:iostream、string、fstream

10、、vector使用文件。在main()函数中,建立了不同类的对象,对它们进行了类似的操作,应用需函数和抽象函数类对该程序进行改变,解决程序不够简洁的不足,只是在基类employee中将manager()设计为纯需函数,这样,在主函数中便可以依据类型兼容规则用具类employee类型的指针数组来处理不同派生类的对象,当用基类指针调用需函数时,系统会执行指针所指的对象的成员的函数。设计类是系统实施中一个或多个类的抽象;设计类所对应的对象取决于实施语言。例如,在面向对象的语言(如 C+)中,它可以对应一个普通类。操作可见性分为以下几种:(1)不可访问的成员:从基类私有继承而来的,派生类或是建立派生类

11、对象的模块都没有办法访问到它们,如果从派生类继续派生新类,也是无法访问的。(2)公有成员:派生类、建立派生类的模块都可以访问,继续派生,可能是新派生类中的私有、保护、共有成员。 (3)保护成员:可能是新增也可能是从积累继承过来的,派生类北部成员可以访问,建立派生类对象的模块无法访问,进一步派生,在新的派生类中可能为私有成员或者保护成员。(4)私有成员:包块从基类继承过来的成员以及新增加的成员,在派生类内部可以访问,但是建立派生类对象的模块中无法访问,继续派生,就变成了新的派生类中的不可访问成员。我们将应用静态数据成员具有静态生存去的性质来处理本课程设计中职员编号数据成员,其功能为在类emplo

12、yee中增加一个静态数据成员来设置本公司职员编号目前最大值,新增加的人员编号将在创建对象的同时自动在当前最大值基础上增加,从而减少了调用成员函数的麻烦。本系统在算法方面采用了类的概念,其中有类的定义,类的构造函数的定义,析构函数的定义,类的初始化模版。manager作为employee的虚基类来继承,因此在最远派生类中,从不同途径继承来的基类的成员只有一份拷贝,避免了信息的复杂化,基类employee中生命这个函数的目的只是为了整个类族规定的对外接口功能。由于各个派生类的特点不同,employee类中的这个函数并不能适用于派生类,于是派生类必须声明适用于本类的同名函数隐藏基类的函数。本课程设计

13、套用了C+系统自带的模版,减轻了自定义模版的繁琐操作。派生类可以从多个基类继承,也就是多重继承。通过继承,派生类自动得到了除基类私有成员以外的其它所有数据成员和成员函数,在派生类中可以直接访问,从而实现了代码的复用。2. UML类图:图2.1 系统的UML类图3.总体流程图系统事务处理程序基本工资补贴金额奖励工资扣除工资输入员工信息输入职工号统计实发金额输入员工姓名查询员工实发金额事务处理添加新增员工信息实发金额事务程序开始总金额平均金额图2.3总体流程图2.2.2类成员描述1.dataManager类(1) dataManager类数据成员描述:dataManager类中定义了private

14、类型的 void Input();void Search();void Stat(); EmployeeData Find(int id) const; void Append(EmployeeData entry); void Save() const;void Load();vector<EmployeeData> entries;(2) dataManager类中的函数成员public:DataManager()entries.clear();DataManager()entries.clear(); void DisplayMenu();通过void DataManager

15、:Input()和void DataManager:Search()实现了输入员工的工资信息和入员工的职工号通过void DataManager:Stat()函数成员实现对员工个人工资的补贴扣除等等。2EmployeeData类(1)定义了数据成员 private类型的: int id; string name; float salary; float allowance;float bonus;float deduction;(2) EmployeeData中的函数成员mployeeData():id(0),name(),salary(0.0),allowance(0.0),bonus(0.

16、0),deduction(0.0)void Input();void Print();void Save() const;void Load(ifstream& fin);inline int Id() constreturn id;inline string Name() constreturn name;inline float Salary() constreturn salary;inline float Allowance() constreturn allowance;inline float Bonus() constreturn bonus;inline float D

17、eduction() constreturn deduction;inline float NetPay() constreturn (salary+allowance+bonus-deduction);void EmployeeData:Input()函数成员的功能是显示查询工资的界面。void EmployeeData:Print()函数成员的功能实现了输出的查询结果。2.3程序实现2.3.1源码分析1.头说明#include<iostream>#include<string.h>#include<fstream>#include<stdlib.h

18、>using namespace std;(1) #include<iostream>iostream实际上是一个头文件(iostream.h),<iostream> 包含的基本功能和对应的旧头文件相同,但头文件的内容在名字空间std中。(在标准化的过程中,库中有些部分的细节被修改了,所以旧头文件和新头文件中的实体不一定完全对应。)(2) #include<string.h>就是在程序中加入#include "string.h"就可以使用这个头文件里包含的库函数,而这些函数都是处理字符串的。(3) #include<fstre

19、am>fstream是一个头文件的名字,属于c+的,主要包含文件操作的类和方法。(4) #include<stdlib.h>这个头文件包含了一些比较杂类的库函数,比如   system   等,其他头文件中的函数类型很单一,但是这个头文件不是,混合了多种类型的函数集合。(5) using namespace std;所谓namespace,是指标识符的各种可见范围。C标准程序库中的所有标识符都被定义于一个名为std的命名空间内。2.局部功能说明(1)添加工资记录using namespace std;const char* filename = "

20、;paid.txt"class EmployeeDatapublic: EmployeeData():id(0),name(),salary(0.0),allowance(0.0),bonus(0.0),deduction(0.0) void Input();void Print();void Save() const;void Load(ifstream& fin); inline int Id() constreturn id; inline string Name() constreturn name; inline float Salary() constreturn

21、 salary; inline float Allowance() constreturn allowance; inline float Bonus() constreturn bonus; inline float Deduction() constreturn deduction; inline float NetPay() constreturn (salary+allowance+bonus-deduction);private: int id; string name; float salary; float allowance; float bonus;float deducti

22、on;void EmployeeData:Input()cout<<"输入职工号:" cin >> id; cout<<"输入姓名:" cin >> name; cout<<"输入基本工资:" cin >> salary; cout<<"输入补贴金额:" cin >> allowance; cout<<"输入奖励金额:" cin >> bonus; cout<<&q

23、uot;输入扣除金额:"(2)按职工号查询工资数据cin >> deduction;void EmployeeData:Print()cout<<"职工号: t"<< id<<endl; cout<<"姓名: t"<< name<<endl; cout<<"基本工资:t"<< salary<<endl; cout<<"补贴金额:t"<< allowance<

24、<endl; cout<<"奖励金额:t"<< bonus<<endl; cout<<"扣除金额:t"<< deduction<<endl; cout<<"实发金额:t"<< NetPay()<<endl;void EmployeeData:Save() constofstream fout; fout.open(filename, ios:app); fout << id <<'t'

25、; << name<<'t' << salary<<'t' <<allowance<<'t' << bonus<<'t' << deduction<<'t'<< NetPay()<<'n' fout.close();void EmployeeData:Load(ifstream& fin)int netpay(0);fin >> id &

26、gt;> name >> salary >>allowance >> bonus >> deduction >> netpay;fin.close();class DataManagerpublic: DataManager()entries.clear(); DataManager()entries.clear(); void DisplayMenu();private: void Input();void Search();void Stat(); EmployeeData Find(int id) const; void

27、Append(EmployeeData entry); void Save() const;void Load();private:vector<EmployeeData> entries;void DataManager:Input()cout << "职工信息录入n请输入员工信息"<<endl; EmployeeData entry;entry.Input();Append(entry);cout << endl;void DataManager:Search()cout << "信息查询n请输入员工

28、的职工号:"<<endl; int id(0);cin >> id;EmployeeData found=Find(id); if(found.Id() = 0 && found.Name()="") cout << "无此员工号:" << id<< endl; else found.Print();cout << endl;(3)工资统计void DataManager:Stat()float s(0.0);float a(0.0);float b(0.0

29、);float d(0.0);float p(0.0); unsigned int count(entries.size(); for(unsigned int i(0);i<count;i+) s+=entries.at(i).Salary(); a+=entries.at(i).Allowance(); b+=entries.at(i).Bonus(); d+=entries.at(i).Deduction(); p+=entries.at(i).NetPay(); cout << " tt总金额t平均金额"<<endl; cout <

30、;< "-"<<endl; cout << "基本工资t"<<s<<"t"<<s/count<<endl; cout << "补贴金额t"<<a<<"t"<<a/count<<endl; cout << "奖励金额t"<<b<<"t"<<b/count<<end

31、l; cout << "扣除金额t"<<d<<"t"<<d/count<<endl; cout << "实发工资t"<<p<<"t"<<p/count<<endl; cout << endl;EmployeeData DataManager:Find(int id) constEmployeeData res; for(unsigned int i(0);i<entries.si

32、ze();i+) if(entries.at(i).Id() = id) res = entries.at(i);break; return res;void DataManager:Append(EmployeeData entry)entries.insert(entries.end(), entry);void DataManager:Save() constofstream fout;fout.open(filename, ios:app );fout.clear(); / 重新保存 fout << entries.size() <<'t'<

33、;< endl; fout.close(); for(unsigned int i(0);i<entries.size();i+) entries.at(i).Save();void DataManager:Load()ifstream fin(filename);unsigned int count(0);fin >> count;entries.clear(); for(unsigned int i(0);i<count;i+) EmployeeData entry;entry.Load(fin);Append(entry);fin.close(); (4)主

34、函数void DataManager:DisplayMenu()int opt(0);Load(); docout << "1.职工信息录入"<<endl; cout << "2.信息查询"<<endl; cout << "3.工资统计"<<endl; cout << "4.退出"<<endl;cin >> opt; switch(opt) case 1:Input();Save();break; case 2:Search();break; case 3:Stat();break; while (opt!=4);int main() DataManager dm; dm.DisplayMenu();return 0; 2.3.2运行结果图2.3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论