日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C++實現職工工資管理系統課程設計_C 語言

作者:巴山雨夜 ? 更新時間: 2022-05-19 編程語言

本文實例為大家分享了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 
#include 
#include 
using namespace std;
?
#define MAX_NAME ?10//定義姓名的最大長度
#define START ? 3//初始化為職工開辟的空間
#define ADD ? ? 5//每次為職工增加的空間
#define FILENAME ?"staff.dat"http://存入的文件名?
//定義一個職工類
class Staff
{
public:
?? ?//顯示職工信息
?? ?void ?print() ?
?? ?{
?? ??? ?cout<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<<"開辟空間失敗"<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<<"職工人數已達系統限定,"<staff = temp;
?? ??? ??? ?my_sys->width += ADD;
?? ??? ?}
?? ?}
}
//添加職工信息
void Input(System * my_sys)
{
?? ?IF_space(my_sys);
?? ?cout<<"請輸入職工信息:"<>(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<<"系統中沒有保存職工信息"<>Name;
?? ??? ?size_t i = 0;
?? ??? ?for( i = 0;i < my_sys->len; i++)
?? ??? ?{
?? ??? ??? ?if(strcmp(Name,(my_sys->staff+i)->name)==0)
?? ??? ??? ?{
?? ? ? ? ? ?cout<<"該職工信息為:"<staff->print();
?? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?if(i >= my_sys->len)
?? ??? ??? ?cout<<"系統中沒有此職工信息"<len == 0)
?? ?{
?? ??? ?cout<<"系統中沒有保存職工信息"<>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)
?? ??? ??? ??? ?{
?? ??? ??? ??? ?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<<"輸入不合標準"<= my_sys->len)
?? ??? ??? ?cout<<"系統中沒有此職工信息"<len == 0)
?? ?{
?? ??? ?cout<<"系統中沒有保存職工信息"<>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;jlen-1; j++)
?? ??? ??? ??? ??? ?*(my_sys->staff+j) = *(my_sys->staff+j+1);
?? ??? ??? ??? ?my_sys->len--;
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?if(i >= m)
?? ??? ??? ?cout<<"系統中沒有此職工信息"<len == 0)
?? ?{
?? ??? ?cout<<"系統中沒有保存職工信息"<>m>>n; ?
?? ??? ?for(size_t i = 0; ilen ;i++)
?? ??? ?{
?? ??? ??? ?money = (my_sys->staff+i)->mon1 + (my_sys->staff+i)->mon2 + (my_sys->staff+i)->mon3;
?? ??? ??? ?if((money >= m)&& (money <= n))
?? ??? ??? ??? ?number++;
?? ??? ?}
?? ??? ?cout<<"職工工資前三項之和在 " <len<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<<"各項工資的平均工資為 "
?? ??? ??? ?<len<<" "
?? ??? ??? ?<len<<" "
?? ??? ??? ?<len<<" "
?? ??? ??? ?<len<<" "
?? ??? ??? ?<len<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; ilen ;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<<"#######################################################################"<";
?? ??? ?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號?? ?姓名 ?基本工資 ?職務工資 ?津貼 ?醫療保險 ?公積金 ?總工資 ?平均工資"<

原文鏈接:https://blog.csdn.net/WX_East/article/details/52177378

欄目分類
最近更新