C++工资管理系统

工资管理系统

  

职工工资管理系统是由职工信息管理模块和工资信息管理模块组成。职工工资管理系统可以实现对职工基本工资进行管理实际发放工资管理职工信息记录的查询等多项管理。在模块中分别实现对职工基本信息管理。如:添加职工、修改职工信息、删除职工信息、查询职工信息等功能程序设计。该工资管理系统采用Visual C++面向对象程序设计。事先,我们对程序进行了粗略的分析,确定了C++中类、构造函数、成员函数等函数,接着通过对各种函数的使用,编出了这个职工工资管理系统,最后在McrosoftVisual C++软件中不断调试运行,并发现错误,解决错误。并且经过适当完善,初步实现了设计目标。

 

关键词;面向对象;类;工资管理

 

 

C++程序设计》课程设计

------职工工资管理

 

随着信息时代的到来,计算机应用十分广泛。职工工资管理是企业单位必不可少的管理程序,也是企业体制的重要组成部分。当前许多企业之中,真正使用计算机管理职工工资机制对企业来说非常的重要。

C++语言具有面向对象特性,是一种使用非常广泛的计算机编程语言,一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。面向对象编程中时程序设计的基本单位。但对象的静态数据往往是用某种类型的数据来表示,对象的动态属性要用成员函数来实现。面向函数的实现归根到底是算法的设计。

职工工资管理系统是以C++面向对象为基础编译出来的,其中用到了:类的使用、数组、循环体、函数的调用、封装等内容。

二、设计目的与任务

1、课程设计目的

<1>通过职工工资管理系统的编写,掌握C++面向对象设计,培养实事求是、认真、严谨的科学态度和刻苦钻研不断创新的精神,逐步建立正确的全局观。

<2>了解软件工程编程的思想,对以后的学习增加更多学习兴趣。

<3>提高各行业的工作效率,不断完善服务的质量。

2、课程设计任务

使用C++面向对象程序设计设计一个简易的工资管理系统。定义职工(employee)类,其中包括工号、姓名、性别、电话、家庭住址、所在科室和工资。(1)设计菜单实现功能选择;(2)添加功能:输入人员信息,并保存到文件中;(3)删除功能:输入人员编号实现删除,并保存到文件中

 (4)修改功能:输入人员编号及其他相关信息,实现修改并保存到文件中

 (5)查询功能①能够根据姓名精确查询人员信息;②能够根据所在科室精确查询该科室所有人员信息;(6)统计功能:根据性别分别统计男女员工的平均工资并输出结果

 

三、设计方案

1、总体设计

程序要求实现对工资进行统计并且显示职工所有信息,能够实行添加职工信息、查询职工信息、修改职工信息、查询职工信息等功能。

我们定义了一个Employee类(class Empolyee,我们定义了下述成员函数:

1void Addemployee();该函数添加职工信息。

2void Delectemployee();该函数删除职工信息。

3void Updaemployee();该函数修改职工信息。

4void reseacherstudentbyname();该函数用于按名字查询职工信息。

5void reseacherstudentbyoffice();该函数用于按科室查询职工信息。

6void add();该函数统计男女职工的平均工资。

7void SaveFile();该函数用于对文件的书写。

菜单输出放在主函数中。在函数中创建了高级数组vector,并用vector数组装创建的对象。

2、详细设计

(1)类的设计

class employee

{

public:

 int id ,salary;

 string name,tele,address,office,sex;

employee(int id ,stringname,string sex,string tele,string address,string office,int salary)

{

 this->id=id;

 this->salary=salary;

 this->sex=sex;

 this->name=name;

 this->tele=tele;

 this->address=address;

 this->office=office;

}

};

  (2)主函数的设计

int main()

{

 while(true)

 {

 cout<<"========================职工工资管理系统========================="<<'\n'

  <<"1.添加职工"<<'\n'

  <<"2.删除职工"<<'\n'

  <<"3.修改职工"<<'\n'

  <<"4.按姓名查询职工"<<'\n'

  <<"5.按科室查询职工"<<'\n'

  <<"6.按性别统计职工平均工资职工"<<'\n'

  <<"0.推出职工工资管理系统"<<'\n'

  <<"========================职工工资管理系统========================="<<'\n';

 cout<<"请输入你的选择:"<<endl;

 int input;

 cin>>input;

 switch(input)

 {

 case 1:Addemployee(); break;

 case 2: Delectemployee();break;

 case 3: Updaemployee();break;

 case 4:reseacherstudentbyname() ;break;

 case 5:reseacherstudentbyoffice(); break;

 case 6: add();break;

 case 0:exit(1);break;

 }

 }

 return 0;

}

(3)成员函数的设计

<1>文件书写函数:

voidSaveFile()

{

   fstream file;

 file.open("d:\\stuData.txt",ios::out);

 vector<employee>::iteratoritr=stu.begin();

 while(itr!=stu.end())

 {

 file<<(*itr).id<<"\n";

 file<<(*itr).name<<"\n";

 file<<(*itr).sex<<"\n";

 file<<(*itr).tele<<"\n";

 file<<(*itr).address<<"\n";

 file<<(*itr).office<<"\n";

 file<<(*itr).salary<<"\n";

 itr++;

 }

 file.close();

}

<2>添加职工信息函数:

  voidAddemployee()

 {

      intid,salary;

 string name,tele,address,office,sex;

 cout<<"请输入职工编号\n";

 cin>>id;

 cout<<"请输入职工名字\n";

 cin>>name;

 cout<<"请输入职工性别\n";

 cin>>sex;

 cout<<"请输入职工电话号码\n";

 cin>>tele;

 cout<<"请输入职工地址\n";

 cin>>address;

 cout<<"请输入职工科室\n";

 cin>>office; cout<<"请输入职工薪水\n";

 cin>>salary;

 employeeT(id,name,sex,tele,address,office,salary );

 stu.push_back(T);

 cout<<"你已成功添加职工,现有"<<stu.size()<<"个职工"<<endl;

 SaveFile();

 }

<3>删除职工信息函数:

voidDelectemployee()

 {

 cout<<"请输入要删除的职工号";

 int id;

 cin>>id;

 vector<employee>::iteratorp=stu.begin();

 while(p!=stu.end())

 {

  if((*p).id==id)

  {

   stu.erase (p);

   break;

  }

  p++;

 }

cout<<"你已成功删除职工"<<endl;

SaveFile();

 }

<4>修改职工信息函数:

voidUpdaemployee()

 {

 int id ,salary;

 string name,tele,address,office,sex;

 cout<<"输入你要修改的职工号\n";

 cin>>id;

 vector<employee>::iterator  p=stu.begin ();

 while(p!=stu.end())

 {

  if((*p).id=id)

  {

  

  cout<<"请输入修改职工的姓名\n";

   cin>>name;

  cout<<"请输入修改职工的性别\n";

  cin>>sex;

  cout<<"请输入修改职工的电话号码\n";

   cin>>tele;

  cout<<"请输入修改职工的地址\n";

   cin>>address;

  cout<<"请输入修改职工的科室\n";

   cin>>office;

   cout<<"请输入修改职工的薪水\n";

  cin>>salary;

  (*p).id=id;

  (*p).name=name;

  (*p).sex=sex;

  (*p).tele=tele;

  (*p).address=address;

  (*p).office=office;

   (*p).salary=salary;

  break;

  }

  p++;

 }

 SaveFile();

 }

<5>按名字查询职工信息函数:

voidreseacherstudentbyname()

 {

 cout<<"请输入你要查询的人的名字\n";

 string name;

 cin>>name;

 vector<employee>::iterator p=stu.begin ();

 while(p!=stu.end())

 {

  if((*p).name==name)

  {

   cout<<"职工的编号:\n"<<(*p).id<<endl;

   cout<<"职工的姓名:\n"<<(*p).name<<endl;

   cout<<"职工的性别:\n"<<(*p).sex<<endl;

   cout<<"职工的电话号码:\n"<<(*p).tele<<endl;

   cout<<"职工的地址:\n"<<(*p).address<<endl;

   cout<<"职工的科室:\n"<<(*p).office<<endl;

   cout<<"职工的薪水:\n"<<(*p).salary<<endl;

   break;

  }

  p++;

 }

 }

<6>按科室查询职工信息:

voidreseacherstudentbyoffice()

 {

 cout<<"请输入你要查询的人的科室\n";

 string office;

 cin>>office;

 vector<employee>::iterator  p=stu.begin ();

 while(p!=stu.end())

 {

  if((*p).office==office)

  {

   cout<<"职工的编号:\n"<<(*p).id<<endl;

   cout<<"职工的姓名:\n"<<(*p).name<<endl;

   cout<<"职工的性别:\n"<<(*p).sex<<endl;

   cout<<"职工的电话号码:\n"<<(*p).tele<<endl;

   cout<<"职工的地址:\n"<<(*p).address<<endl;

   cout<<"职工的科室:\n"<<(*p).office<<endl;

   cout<<"职工的薪水:\n"<<(*p).salary<<endl;

  }

  p++;

 }

 }

<7>统计职工平均工资函数:

void add()

 {

 int s=0,l=0,sum1=0,sum2=0;

    vector<employee>::iterator  p=stu.begin();

 while(p!=stu.end())

 {

  if((*p).sex=="man" ){s++;sum1=sum1+(*p).salary;}

  else if((*p).sex=="woman"){l++;sum2=sum2+(*p).salary;}

  p++;

  

 }

 if(s==0)cout<<"男职工的平均薪水:"<<"0"<<endl;

  else cout<<"男职工的平均薪水:"<<double(sum1)/s<<endl;

  if(l==0)cout<<"女职工的平均薪水:"<<"0"<<endl;

  else cout<<"女职工的平均薪水:"<<double(sum2)/l<<endl;

 }

3程序清单

#include<iostream>

#include<vector>

#include<string>

#include<fstream>

usingnamespace std;

classemployee

{

public:

     int id ,salary;

     string name,tele,address,office,sex;

     employee(int id ,string name,stringsex,string tele,string address,string office,int salary)

     {

          this->id=id;

          this->salary=salary;

          this->sex=sex;

          this->name=name;

          this->tele=tele;

          this->address=address;

          this->office=office;

     }

};

int main()

{

     void Addemployee();

     void Delectemployee();

     void Updaemployee();

     void reseacherstudentbyname();

     void reseacherstudentbyoffice();

     void add();

     void SaveFile();

     while(true)

     {

          cout<<"========================职工工资管理系统========================="<<'\n'

                <<"1.添加职工"<<'\n'

                <<"2.删除职工"<<'\n'

                <<"3.修改职工"<<'\n'

                

                <<"4.按姓名查询职工"<<'\n'

                <<"5.按科室查询职工"<<'\n'

                <<"6.按性别统计职工平均工资职工"<<'\n'

                <<"0.推出职工工资管理系统"<<'\n'

                <<"========================职工工资管理系统========================="<<'\n';

          cout<<"请输入你的选择:"<<endl;

          int input;

          cin>>input;

          switch(input)

          {

           case1:Addemployee(); break;

          case 2: Delectemployee();break;

          case 3: Updaemployee();break;

          case 4:reseacherstudentbyname();break;

          case 5:reseacherstudentbyoffice();break;

          case 6: add();break;

          case 0:exit(1);break;

          }

     }

     return 0;

}

vector<employee>stu;

 

voidSaveFile()

{

   fstream file;

     file.open("d:\\stuData.txt",ios::out);

     vector<employee>::iteratoritr=stu.begin();

     while(itr!=stu.end())

     {

          file<<(*itr).id<<"\n";

          file<<(*itr).name<<"\n";

          file<<(*itr).sex<<"\n";

          file<<(*itr).tele<<"\n";

          file<<(*itr).address<<"\n";

          file<<(*itr).office<<"\n";

          file<<(*itr).salary<<"\n";

          itr++;

     }

     file.close();

}

voidAddemployee()

{

     int id,salary;

     string name,tele,address,office,sex;

     cout<<"请输入职工编号\n";

     cin>>id;

     cout<<"请输入职工名字\n";

     cin>>name;

     cout<<"请输入职工性别\n";

     cin>>sex;

     cout<<"请输入职工电话号码\n";

     cin>>tele;

     cout<<"请输入职工地址\n";

     cin>>address;

     cout<<"请输入职工科室\n";

     cin>>office; cout<<"请输入职工薪水\n";

     cin>>salary;

     employeeT(id,name,sex,tele,address,office,salary );

     stu.push_back(T);

     cout<<"你已成功添加职工,现有"<<stu.size()<<"个职工"<<endl;

     SaveFile();

}

voidDelectemployee()

{

     cout<<"请输入要删除的职工号";

     int id;

     cin>>id;

     vector<employee>::iteratorp=stu.begin();

     while(p!=stu.end())

     {

          if((*p).id==id)

          {

                stu.erase (p);

                break;

          }

          p++;

     }

     cout<<"你已成功删除职工"<<endl;

     SaveFile();

}

voidUpdaemployee()

{

     int id ,salary;

     string name,tele,address,office,sex;

     cout<<"输入你要修改的职工号\n";

     cin>>id;

     vector<employee>::iterator  p=stu.begin ();

     while(p!=stu.end())

     {

          if((*p).id=id)

          {

                

                cout<<"请输入修改职工的姓名\n";

                cin>>name;

                cout<<"请输入修改职工的性别\n";

                cin>>sex;

                cout<<"请输入修改职工的电话号码\n";

                cin>>tele;

                cout<<"请输入修改职工的地址\n";

                cin>>address;

                cout<<"请输入修改职工的科室\n";

                cin>>office;

                cout<<"请输入修改职工的薪水\n";

                cin>>salary;

                (*p).id=id;

                (*p).name=name;

                (*p).sex=sex;

                (*p).tele=tele;

                (*p).address=address;

                (*p).office=office;

                (*p).salary=salary;

                break;

          }

          p++;

     }

     SaveFile();

}

voidreseacherstudentbyname()

{

     cout<<"请输入你要查询的人的名字\n";

     string name;

     cin>>name;

     vector<employee>::iterator  p=stu.begin ();

     while(p!=stu.end())

     {

          if((*p).name==name)

          {

                cout<<"职工的编号:\n"<<(*p).id<<endl;

                cout<<"职工的姓名:\n"<<(*p).name<<endl;

                cout<<"职工的性别:\n"<<(*p).sex<<endl;

                cout<<"职工的电话号码:\n"<<(*p).tele<<endl;

                cout<<"职工的地址:\n"<<(*p).address<<endl;

                cout<<"职工的科室:\n"<<(*p).office<<endl;

                cout<<"职工的薪水:\n"<<(*p).salary<<endl;

                break;

          }

          p++;

     }

     SaveFile();

}

voidreseacherstudentbyoffice()

{

     cout<<"请输入你要查询的人的科室\n";

     string office;

     cin>>office;

     vector<employee>::iterator  p=stu.begin ();

     while(p!=stu.end())

     {

          if((*p).office==office)

          {

                cout<<"职工的编号:\n"<<(*p).id<<endl;

                cout<<"职工的姓名:\n"<<(*p).name<<endl;

                cout<<"职工的性别:\n"<<(*p).sex<<endl;

                cout<<"职工的电话号码:\n"<<(*p).tele<<endl;

                cout<<"职工的地址:\n"<<(*p).address<<endl;

                cout<<"职工的科室:\n"<<(*p).office<<endl;

                cout<<"职工的薪水:\n"<<(*p).salary<<endl;

          }

          p++;

     }

     

}

void add()

{

     int s=0,l=0,sum1=0,sum2=0;

     vector<employee>::iterator  p=stu.begin();

     while(p!=stu.end())

     {

          if((*p).sex=="man"){s++;sum1=sum1+(*p).salary;}

          else if((*p).sex=="woman"){l++;sum2=sum2+(*p).salary;}

          p++;

          

     }

     if(s==0)cout<<"男职工的平均薪水:"<<"0"<<endl;

     else cout<<"男职工的平均薪水:"<<double(sum1)/s<<endl;

     if(l==0)cout<<"女职工的平均薪水:"<<"0"<<endl;

     else cout<<"女职工的平均薪水:"<<double(sum2)/l<<endl;

}

4、程序调试与体会

这是一个关于职工信息管理系统,具有输入、输出、删除、查询、修改、保存、退出等功能。

可按照相关提示进行调试操作:

增加职工信息按“1”键;

删除职工信息按“2”键;

修改职工信息按“3”键;

按姓名查询职工信息按“4”键;

按科室查询职工信息按“5”键;

按性别统计职工平均工资按“6”键;

推出职工工资管理系统按“0”键;

我们在程序编写的过程中遇到了很多问题。如:类中有的数据定义为私用以致不能访问(如图0)

 

0错误提示图

通过查询资料得知,基类中的私有成员可以以两种形式存在,以private或以protected的形式,以private的形式如果要继承的话需要友元,而以protected的形式的话可以以私有的形式直接继承(protected方式声明派生类)。为了简单化,我们全部把它的成员公有化。

体会:       

经过对职工信息管理系统的分析与编写,我们得到了很大的收获。自主学习的必要性更是解决问题的基础,我们5个人一组,在设计的过程中,我们相互讨论,相互学习,发挥出各自的优势,发现自己的不足,取长补短。更重要的是这次设计让我们对C++面向对象编程设计有了更深刻的认识和更全面的掌握,也提升了我们分析问题的能力和思考问题的逻辑能力,更明白实际调研的重要性。在系统分析和设计的部分仍然花了比较多的时间,特别是源代码的编写和调试,经过反复的改写、调试、再改写、调试,我们最终完成了任务。

 运行结果:

程序运行的界面(主菜单)如图1所示。

1:程序运行的界面图

 

在主菜单中功能选项中输入“1"进行添加职工信息,如图2

2:添加职工信息

 

在主菜单功能选项中输入“2”可以进行删除职工信息(如图3):

3:删除职工信息

 

在主菜单功能选项中输入3”可以进行修改职工信息(如图4):

4:修改职工信息

 

在主菜单功能选项中输入4”可以进行按姓名查询职工信息(如图5):

5:按姓名查询职工信息

 

在主菜单功能选项中输入5可以进行按科室查询职工信息(如图6):

6:按科室查询职工信息

 

在主菜单功能选项中输入6”可以进行职工信息统计(如图7):

7:职工信息统计

 

在主菜单功能选项中输入0退出管理系统(如图8):

8:退出管理系统

四、结 

本次设计我们组的题目是职工工资管理系统,因为事先老师的细心指导,我们才得以的完成这次课程设计。在系统分析和设计的部分仍然花了比较多的时间,特别是源代码的编写和调试,经过反复的改写、调试、再改写、调试,我们最终完成了任务。

经过对职工信息管理系统的分析与编写,我们得到了很大的收获。自主学习的必要性更是解决问题的基础,我们五个人一组,在设计的过程中,我们相互讨论,相互学习,发挥出各自的优势,发现自己的不足,取长补短,增强了团队意识。更重要的是这次设计让我们对C++面向对象设计编程有了更深刻的认识和更全面的掌握,也提升了我们分析问题的能力和思考问题的逻辑能力,更明白实际调研的重要性。对面向对象编程有了深刻的理解,对软件工程有了了解。在以后的学习中我们会更加的努力,深刻的钻研,增强团队意识。

 

五、致 

感谢我们的指导老师袁辉勇老师,谢谢他在我们的课程设计过程中提出了指导性的方案和架构,并指引我们阅读相关的资料和书籍,使我们在不熟悉的领域中仍能迅速掌握新的方法和技术。

感谢校领导给我们这次难得的锻炼机会,让我们能更好的理解和实践 C++面向对象编程,让我们对面向对象编程有了更深刻的认知,对已学知识有了更进一步的巩固。

也谢谢我的同学与我们一起合作,共同完成了这个课程设计。

 

六、参考文献

[1] 冯博琴等编.C++程序设计语言》.北京:中国铁道出版社,2011

[2] 揣锦华等编.C++程序设计语言》.西安:西安电子科技大学出版社,2003

[3]刘振安编著.C++程序设计课程设计》.北京:机械工业出版社,2007.

[4] 吕凤翥著.C++语言基础教程》.北京:清华大学出版社,2001

[5]张国峰编著.C++语言及其程序设计教程》.北京:电子工业出版社,1996.

[6] 伍俊良《管理信息系统(MIS)开发与应用》.北京:科学出版社,1999

[7] 邓飞,李瑶主编.C++程序设计语言》.北京:中国人民出版社,1993

[8] 郑莉,董渊,张瑞丰.C++语言课程设计》(第三版).北京:清华大学出版社,2004

[9] 钱能.C++程序设计实验指导》.北京:清华大学出版社,2005

[10] 罗建军等编.C++程序设计教程学习指导》.北京:高等教育出版社,2003

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值