網站首頁 編程語言 正文
本文實例為大家分享了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;j len-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; i 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<<"職工工資前三項之和在 " < 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; i 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<<"#######################################################################"<"; ?? ??? ?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
相關推薦
- 2021-12-04 解決ASP.NET?Core中使用漏桶算法限流的問題_實用技巧
- 2024-01-27 什么是消息隊列
- 2022-10-27 Python?標準庫?fileinput與文件迭代器_python
- 2022-11-22 Kotlin對象的懶加載方式by?lazy?與?lateinit?異同詳解_Android
- 2022-09-18 iOS開發技能weak和strong修飾符的規范使用詳解_IOS
- 2022-09-14 python?服務器批處理得到PSSM矩陣的問題_python
- 2022-06-18 C語言中main函數與命令行參數詳細講解_C 語言
- 2022-12-25 一文帶你了解Go語言中的指針和結構體_Golang
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支