C++实现职工工资管理系统课程设计

本文实例为大家分享了C++实现职工工资管理系统的具体代码,供大家参考,具体内容如下

现在的大学里经常有一些课程设计 ,这不,我就遇到了 。

我们的c++老师 ,给了我们许 多的题目要我们来选择 ,我就选择了这个 ,说难又不难 ,说简单,又不简单的。

题目 ——职工工资管理系统

我们老师给的题目是这样的!!

职工工资管理设计与实现

功能设计要求

1. 输入记录:将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。

2. 显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。

3. 修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。

4.查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。

5. 删除记录:可删除数据文件中的任一记录。

6. 统计: (A)计算各项工资平均工资及总工资,(B)统计符合指定条件(如职工工资前三项之和在3000元以上、3000~2000元、2000~1000元) 以内的工资职工人数及占总职工人数的百分比。(C)按字符表格形式打印全部职工工资信息表及平均工资(包括各项总的平均工资)。

7.保存数据文件功能。

下面是我设计的程序功能

功能模块

1.主函数 main(void):调用设计者的相关信息函数、调用       Menu()函数,实现系统的主要功能处理;

2.主菜单Menu()函数:确定如何选择所需功能,调用数据输入、显示、查找、增加、删除、修改、保存等函数,完成职工工资管理系统的数据处理;

3.数据输入Input():完成职工信息添加;

4.数据修改函数 update():修改职工工资等信息数据;

5.数据删除函数Delete():删除职工信息数据;

6.数据查找函数 select():查找某一职工工资等信息情况;

7.数据统计函数tongji():统计职工人数;

8.数据显示函数print():将职工信息数据显示出来;

9.文件保存函数Save():将录入的职工信息保存到文件;

10 文件读取函数Read(): 从文件中读取职工信息;

代码的流程图

代码的实现

头文件:

#ifndef  __MONEY__
#define  __MONEY__
 
#include <iostream>
#include <stdlib.h>
#include <string.h>
using namespace std;
 
#define MAX_NAME  10//定义姓名的最大长度
#define START   3//初始化为职工开辟的空间
#define ADD     5//每次为职工增加的空间
#define FILENAME  "staff.dat"//存入的文件名 
//定义一个职工类
class Staff
{
public:
    //显示职工信息
    void  print()  
    {
        cout<<id<<"     "<<name<<"     "<<mon1<<"     "<<mon2<<"     "<<mon3<<"     "
        <<mon4<<"     "<<mon5<<"     "<<Staff::summoney()<<"     "<<Staff::avgmoney()<<endl;    
    }
    //求每个人的总工资
    double summoney()  
    {
        double sum;
        sum= mon1 + mon2 + mon3 + mon4 + mon5;
        return sum;
    }
    //求每个人的平均工资
    double avgmoney()
    {
        double avg;
        avg= (Staff::summoney())/5;
        return avg;
    }
    
    char name[MAX_NAME];
    int id ;
    double mon1,mon2,mon3,mon4,mon5; 
    
}; 
//定一个系统类 
class System 
{
public:
    //显示系统内的职工信息
    void print()
    {
        size_t i =0;
        if(System::len ==0)
        {
        cout<<"系统中没有职工信息"<<endl;
        }
 
        for(i = 0;i< System::len;i++)
        {
            (System::staff+i)->print();
        }
    }
 
 
    Staff *staff;//职工类的指针
    size_t len ;//职工人数
    size_t width;//为职工创建的空间大小
 
};
 
//初始化系统
void Initclass(System * my_sys);
//添加职工信息
void Input(System * my_sys);
//查找职工信息
void Select(System * my_sys);
//修改职工信息
void Update(System * my_sys);
//删除职工信息
void Delete(System * my_sys);
//统计职工信息
void tongji(System * my_sys);
//求每一项的平均值
void  money(System * my_sys);
//从文件读取职工信息    
void  Read(System *my_sys);
//将职工信息写入文件
void  Save(System *my_sys);
//释放动态开辟的空间
void Free(System *my_sys);
 
 
#endif  //__MONEY__

源文件:

#define _CRT_SECURE_NO_WARNINGS 1
 
#include "xiaodong.h"
 
//初始化系统
void Initclass(System * my_sys)
{
    my_sys->staff= (Staff *)calloc(START ,sizeof(Staff));
    if(my_sys->staff == NULL)
    {
        cout<<"开辟空间失败"<<endl;
        exit(EXIT_FAILURE);
    }
    my_sys->len = 0 ;
    my_sys->width = START;
}
void  IF_space(System * my_sys)
{
    if(my_sys->len == my_sys->width)
    {
        Staff *temp = (Staff *)realloc(my_sys->staff,my_sys->width+ADD);
        if(temp == NULL)
        {
            cout<<"职工人数已达系统限定,"<<endl;
        }
        else 
        {    
            my_sys->staff = temp;
            my_sys->width += ADD;
        }
    }
}
//添加职工信息
void Input(System * my_sys)
{
    IF_space(my_sys);
    cout<<"请输入职工信息:"<<endl;
    cout<<"姓名 基本工资 职务工资 津贴 医疗保险 公积金"<<endl;
    cin>>(my_sys->staff+my_sys->len)->name
        >>(my_sys->staff+my_sys->len)->mon1
        >>(my_sys->staff+my_sys->len)->mon2
        >>(my_sys->staff+my_sys->len)->mon3
        >>(my_sys->staff+my_sys->len)->mon4
        >>(my_sys->staff+my_sys->len)->mon5;
    (my_sys->staff + my_sys->len)->id =  my_sys->len+1;
    my_sys->len += 1;
    
}
//查找职工信息
void Select(System * my_sys)
{
    if(my_sys->len == 0)
    {
        cout<<"系统中没有保存职工信息"<<endl;
    }
    else
    {
        cout<<"请输入所要查询的职工姓名:";
        char Name[10]={0};
        cin>>Name;
        size_t i = 0;
        for( i = 0;i < my_sys->len; i++)
        {
            if(strcmp(Name,(my_sys->staff+i)->name)==0)
            {
            cout<<"该职工信息为:"<<endl;
            cout<<"ID号    姓名    基本工资   职务工资    津贴    医疗保险   公积金   总工资    平均工资"<<endl;
            my_sys->staff->print();
            break;
            }
        }
        if(i >= my_sys->len)
            cout<<"系统中没有此职工信息"<<endl;
    }
    
}
void menu1()
{
    cout<<"请选择要修改的信息:"<<endl;
    cout<<"***********************************************"<<endl; 
    cout<<"******       1.修改职工姓名              ******"<<endl;
    cout<<"******       2.修改基本工资              ******"<<endl;
    cout<<"******       3.修改职务工资              ******"<<endl;
    cout<<"******       4.修改紧贴                  ******"<<endl;
    cout<<"******       5.修改医疗保险              ******"<<endl;
    cout<<"******       6.修改公积金                ******"<<endl;
    cout<<"***********************************************"<<endl;
 
 
}
//修改职工信息
void Update(System * my_sys)
 
{
    if(my_sys->len == 0)
    {
        cout<<"系统中没有保存职工信息"<<endl;
    }
    else
    {
        cout<<"请输入所要修改的职工姓名:";
        char Name[MAX_NAME]={0};
        cin>>Name;
        size_t i = 0;
        for( i = 0;i < my_sys->len; i++)
        {
            if(strcmp(Name,(my_sys->staff+i)->name)==0)
            {
                
                menu1();
                cout<<"请选择对应数字序号进行操作:";
                int a =0 ;
                char name[MAX_NAME] ={0};
                double mon1 =0.0,mon2 =0.0,mon3 =0.0,mon4 =0.0,mon5 =0.0;
                cin>>a;
                switch(a)
                {<strong>
</strong>                case 1:
                      cout<<"请输入新的职工姓名:";
                      cin>>name;
                      strcpy(my_sys->staff->name,name);
                      break;
 
                case 2 :
                      cout<<"请输入新的基本工资:";
                      cin>>mon1;
                      my_sys->staff->mon1 = mon1;
                      break;
                case 3:
                      cout<<"请输入新的岗位工资:";
                      cin>>mon2;
                      my_sys->staff->mon2 = mon2;
                      break;
                case 4:
                      cout<<"请输入新的岗位工资:";
                      cin>>mon3;
                      my_sys->staff->mon3 = mon3;
                      break;
                case 5 :
                      cout<<"请输入新的岗位工资:";
                      cin>>mon4;
                      my_sys->staff->mon4 = mon4;
                      break;
                case 6:
                      cout<<"请输入新的岗位工资:"; 
                      cin>>mon5;
                      my_sys->staff->mon5 = mon5;
                      break;
                default:
                    cout<<"输入不合标准"<<endl;
                    break;
                }
                break;
            }
 
        }
        if(i >= my_sys->len)
            cout<<"系统中没有此职工信息"<<endl;
    }
}
//删除职工信息
void Delete(System * my_sys)
{
    if(my_sys->len == 0)
    {
        cout<<"系统中没有保存职工信息"<<endl;
    }
    else
    {
        cout<<"请输入所要删除的职工姓名:";
        char Name[MAX_NAME]={0};
        cin>>Name;
        size_t i = 0;
        size_t m = my_sys->len;
        for( i = 0;i < my_sys->len; i++)
        {
            if(strcmp(Name,(my_sys->staff+i)->name)==0)
            {
                for(size_t j = i;j<my_sys->len-1; j++)
                    *(my_sys->staff+j) = *(my_sys->staff+j+1);
                my_sys->len--;
                break;
            }
        }
        if(i >= m)
            cout<<"系统中没有此职工信息"<<endl;    
    }
    
}
 
//统计:统计符合指定条件(如职工工资前三项之和在3000元以上、3000~2000元、2000~1000元)
//以内的工资职工人数及占总职工人数的百分比。
void  tongji(System * my_sys) /* m-n为   1000-2000,2000-3000,3000-max*/
{
    double  number = 0.0;
    double  money = 0.0;
    double  m =0.0;
    double  n = 0.0;
    if(my_sys->len == 0)
    {
        cout<<"系统中没有保存职工信息"<<endl;
    }
    else
    {
        cout<<"请输入你要统计的职工信息指定的条件m 和 n:";  
        cin>>m>>n;  
        for(size_t i = 0; i<my_sys->len ;i++)
        {
            money = (my_sys->staff+i)->mon1 + (my_sys->staff+i)->mon2 + (my_sys->staff+i)->mon3;
            if((money >= m)&& (money <= n))
                number++;
        }
        cout<<"职工工资前三项之和在 " <<m <<" --"<<n <<"职工人数及占总职工人数的百分比为:"<<(double)number/my_sys->len<<endl;
    }
}
//求每一项的平均值
void  money(System * my_sys)
{
    double count1 = 0;
    double count2 = 0;
    double count3 = 0;
    double count4 = 0;
    double count5 = 0;
    if(my_sys->len> 0)
    {
        for(size_t i = 0;i< my_sys->len; i++)
        {
            count1 = count1 + my_sys->staff->mon1;
            count2 = count2 + my_sys->staff->mon1;
            count3 = count3 + my_sys->staff->mon1;
            count4 = count4 + my_sys->staff->mon1;
            count5 = count5 + my_sys->staff->mon1;
        }
    
        cout<<"各项工资的平均工资为 "
            <<count1/my_sys->len<<" "
            <<count2/my_sys->len<<" "
            <<count3/my_sys->len<<" "
            <<count4/my_sys->len<<" "
            <<count5/my_sys->len<<endl;
    }
}
 
//从文件读取职工信息    
void  Read(System *my_sys)
{
    Staff  s;
    FILE *pf =fopen(FILENAME,"r");
    if(pf == NULL)
    {
        perror("error:");
        Free(my_sys);
        exit(EXIT_FAILURE);
    }
    while(fread(&s,sizeof(Staff),1,pf))//从文件中读取数据,,直到读取的为空
    {
        IF_space(my_sys);
        my_sys->staff[my_sys->len++] = s;
    }
    fclose(pf);//记着关闭文件
 
 
}
//将职工信息写入文件
void  Save(System *my_sys)  
{
    FILE *pf = fopen(FILENAME,"w");
    if(pf==NULL)
    {
        perror("error:");
        Free(my_sys);
        exit(EXIT_FAILURE);
    }
    for(size_t i=0; i<my_sys->len ;i++ )
    {    
        fwrite(my_sys->staff+i,1,sizeof(Staff),pf);   
    }
    fclose(pf);
}
 
void Free(System *my_sys)
{
    if(my_sys->staff!= NULL)
    {
        free(my_sys->staff);
        my_sys->staff=NULL;
    }
}

测试代码:

#define  _CRT_SECURE_NO_WARNINGS 
 
#include "xiaodong.h"
void menu()                         
{
    cout<<"#######################################################################"<<endl;
    cout<<"--------------------------职工工资管理系统()---------------------------"<<endl;
    cout<<"***********************************************************************"<<endl;
    cout<<"**                        1. 修改职工信息                            **"<<endl;
    cout<<"**                        2. 添加职工信息                            **"<<endl;
    cout<<"**                        3. 删除职工信息                            **"<<endl;
    cout<<"**                        4. 查找职工信息                            **"<<endl;
    cout<<"**                        5. 统计职工信息                            **"<<endl;
    cout<<"**                        6. 显示职工信息                            **"<<endl;
    cout<<"**                        0. 退出系统                                **"<<endl;
    cout<<"#######################################################################"<<endl;
 
}
int main()
{
    System my_system;
    int input = 1;
    Initclass(&my_system);
    Read(&my_system);
    while(input)
    {
        menu();
        cout<<"请输入要选择的功能:>";
        cin>>input;
        switch(input)
        {
        case 1:
            Update(&my_system);
            break;
        case 2:
            Input(&my_system);
            break;
        case 3:
            Delete(&my_system);
            break;
        case 4:
            Select(&my_system);
            break;
        case 5:
            tongji(&my_system);
            break;
        case 6:
            cout<<"ID号    姓名  基本工资  职务工资  津贴  医疗保险  公积金  总工资  平均工资"<<endl;
            my_system.print();
            money(&my_system);
            break;
        case 0:
            break;
        default:
            break;
        }
    }
    Save(&my_system);
    free(my_system.staff);//一定要记得回收
    system("pause");
    return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C++实现职工工资管理系统

    本文实例为大家分享了C++实现职工工资管理系统的具体代码,供大家参考,具体内容如下 main.cpp #include <iostream> #include <vector> #include <map> #include <algorithm> #include <string> #include <windows.h> #include "data.h" #include "user.h"

  • C++实现职工信息管理系统

    本文实例为大家分享了c++实现职工信息管理系统的具体代码,供大家参考,具体内容如下 1.项目需求 2.功能实现的具体思路为: (1) 经行职工信息的读入,用while循环进行读入,对于职工信息类型的设定方便起见除年龄和薪资用int类型其他信息都用string类型,职工信息用ostream 流写入txt并将信息保存在txt文件中,打印职工信息由于c++读文件方式不方便所以用c语言方式读文件,文件读取以后将文件中读取的信息加载到vector容器中后打印在终端窗口,其他功能的实现也是将文件中的信息读取

  • C++利用多态实现职工管理系统(项目开发)

    分析 首先看一下这个项目的文件: 主要分为两部分: 主体部分: main.cpp和workManager.h,workManager.cpp职工部分(这里采用多态的方式编写): 主要是worker.h和worker.cpp 三种职位:boss,employee,manager 经过分析是否大概知道了其中各部分的意思呢? 看起来这里面有很多,但是正是这种多个文件编写才时代码更加简洁. 所以在正式写项目之前一定要先考虑好整体架构,在进行编写. 项目整体架构: 这个项目的难度并不大,主要是要学会这个项

  • 基于C++泛型编程职工管理系统

    目录 一.泛型编程思想 二.单链表是什么? 1.图示 2.链表的节点结构[节点类] 3.链表类 三.泛型编程核心 1.实现数据类 2.实现链表类 四.运行截图 1.主菜单 2.查看信息 3.更换数据类型 4.再次显示所有信息[抛转] 五.源码 前言: 前面介绍到了C++的泛型编程,并实现了万能容器,不过那使用的是数组,今天呢咱带大家实践一下使用泛型技术,结合单链表实现一个职工管理系统.保证大家看完之后有所感悟. 一.泛型编程思想 所谓泛型就是类型不固定,只需修改少量代码就可以扩展为其他类型的应用

  • C++实现职工管理系统

    本文实例为大家分享了C++实现职工管理系统的具体代码,供大家参考,具体内容如下 workermanager.h #pragma once//防止头文件重复包含 #include <iostream> #include "worker.h" using namespace std; #include "boss.h" #include "employee.h" #include "manager.h" #includ

  • C++实现简单的职工管理系统实训代码

    本文实例为大家分享了C++职工管理系统实例代码 1.单个职工的头文件 staff.h #ifndef STAFF_H_INCLUDED #define STAFF_H_INCLUDED //结构体创建 struct staff { char ID[10]; char name[10]; char sex[10]; int pay; int reward; int factpay; }; //自定义结构体 typedef struct staff staff; //单个职工信息创建 staff C

  • C++实现简单的职工信息管理系统

    功能主模块描述 模块一:增加人员函数Add():增加职工基本信息. 模块二:删除人员函数Delete():删除指定的职工的基本信息以及薪酬. 模块三:修改人员函数Modify():修改指定的职工基本信息. 模块四:查询职工信息函数Search():查询指定的职工信息以及薪酬. 模块五:排序职工信息函数Sort():职工信息排序功能实现 模块六:基础数据设置函数Set():设置五类职位的基本薪酬. 模块七:数据存盘,载入函数Save()以及Load():储存职工基本信息,薪酬以及五类职位的基本薪酬

  • C++实现企业职工工资管理系统

    课程设计目的和要求 工资管理要和人事管理相联系,生成企业每个职工的实际发放工资. 企业职工人事基本信息包括:职工编号.姓名.性别.出生日期.职称(助工.工程师.高级工程师)和任职年限. 企业职工工资信息包括:职工编号.姓名.职务工资.职务补贴.住房补贴.应发工资.个人所得税.养老保险.住房公积金和实发工资. 系统主要功能包括: (1)创建职工人事基本信息文件,根据提示输入职工的各项信息,按职工编号对职工信息进行排序,并将排序后的职工信息存储到一个文件中. (2)创建职工的工资信息文件(每个月创建

  • C++实现职工工资管理系统课程设计

    本文实例为大家分享了C++实现职工工资管理系统的具体代码,供大家参考,具体内容如下 现在的大学里经常有一些课程设计 ,这不,我就遇到了 . 我们的c++老师 ,给了我们许 多的题目要我们来选择 ,我就选择了这个 ,说难又不难 ,说简单,又不简单的. 题目 ——职工工资管理系统 我们老师给的题目是这样的!! 职工工资管理设计与实现 功能设计要求 1. 输入记录:将每一个职工的姓名.ID号以及基本工资.职务工资.岗位津贴.医疗保险.公积金的数据作为一个记录.该软件能建立一个新的数据文件或给已建立好

  • C语言实现职工工资管理系统

    本文实例为大家分享了C语言实现职工工资管理系统的具体代码,供大家参考,具体内容如下 设计要求: 模拟并设计一个企业的职工工资管理系统,职工信息包括工号.姓名.基本工资.津贴,设职工人数不超过500人,以菜单选项的方式完成相应的功能,主要功能需求如下: 1.建立工资表: 2.职工扣税和实发工资: 3.按实发工资从高到低的顺序显示工资明细表: 4.修改职工的工资信息: 5.按工号查询职工工资信息: 6.职工工资统计分析: 7.退出系统. 基本思路: 将职工工资管理系统的职工信息录入功能.数据处理并存

  • C语言实现职工工资管理系统的示例代码

    目录 一.需求分析 二.项目环境 2.1.项目创建过程 2.2.向项目添加头文件与源文件 三.职工工资管理系统模块功能 3.1.系统总体设计框图 3.2.系统模块总体设计 3.3.设计系统菜单功能 3.4.设计系统输入模块 3.5.设计系统查询模块 3.6.设计系统修改模块 3.7.设计系统删除模块 3.8.设计系统统计模块 3.9.设计系统输出模块 3.10.设计系统追加模块 3.11.设计系统退出模块 总结 一.需求分析 1.随着计算机的飞速发展,它的应用已经十分广泛,它在人们的生产.生活.

  • C语言学生成绩管理系统课程设计

    学生成绩管理系统是比较适合初学者的.它涵盖了c语言几乎知识.对于学了c语言的人,把这个课程设计搞好(当然自己能设计出来是要有很好的基础).不管自己能不能够完成,最重要的是能弄懂.参考其他资料,试着自己编写是不错的选择.这个课程设计也是我参照资料,自己编写的.自己适当地增加了一些功能.不过,编的不够那么专业吧. #include<stdio.h> #include<string.h> #include<stdlib.h> #define size 100 char* cl

  • C语言通讯录管理系统课程设计

    本文实例为大家分享了C语言通讯录管理系统课程设计,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h> #include <windows.h> struct Sign{ char name[8]; char sex[4]; char birthday[12]; char phone[11]; char postcode[7]; char addr[30]; struct Sign *next; }pe; char Ph

  • C++实现图书管理系统课程设计(面向对象)

    本文实例为大家分享了C++实现图书管理系统课程设计,供大家参考,具体内容如下 1.题目: [1]:工作人员登录后,可以进行的操作 添加学生的信息(学号,姓名,院系,最大借阅的图书数量等):修改学生的信息(学号,姓名,院系,最大借阅的图书数量等):删除学生的信息(学号,姓名,院系,最大借阅的图书数量等):如果某个学生退学,就要清除他的信息:查看学生的信息:添加图书的信息(图书号,书名,作者,出版社,数量等):修改图书的信息(图书号,书名,作者,出版社,数量等):删除图书的信息(图书号,书名,作者,

  • C语言图书管理系统课程设计

    这是本人大一第二学期初C语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中竟然在QQ网络硬盘中找到了当初的teta版,发布于此,以作纪念. C 源代码如下: #include<stdio.h> #include<stdlib.h> #include<string.h> struct book{ char book_name[30]; int bianhao; double price; char author[20]; char state[20]; cha

  • C语言实现班档案管理系统课程设计

    本文实例为大家分享了C语言班档案管理系统的具体代码,供大家参考,具体内容如下 做的挺长时间的课程设计,当作参考吧 #include<stdio.h> #include<stdlib.h> #include<string.h> #define N 20 struct student { long num; char name[20]; char sex[10]; int age; char bz[40]; struct student *next; }; int i,j,

随机推荐