C++實現職工工資管理系統課程設計_第1頁
C++實現職工工資管理系統課程設計_第2頁
C++實現職工工資管理系統課程設計_第3頁
C++實現職工工資管理系統課程設計_第4頁
C++實現職工工資管理系統課程設計_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第C++實現職工工資管理系統課程設計本文實例為大家分享了C++實現職工工資管理系統的具體代碼,供大家參考,具體內容如下

現在的大學里經常有一些課程設計,這不,我就遇到了。

我們的c++老師,給了我們許多的題目要我們來選擇,我就選擇了這個,說難又不難,說簡單,又不簡單的。

題目職工工資管理系統

我們老師給的題目是這樣的??!

職工工資管理設計與實現

功能設計要求

1.輸入記錄:將每一個職工的姓名、ID號以及基本工資、職務工資、崗位津貼、醫(yī)療保險、公積金的數據作為一個記錄。該軟件能建立一個新的數據文件或給已建立好的數據文件增加記錄。

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__

#includeiostream

#includestdlib.h

#includestring.h

usingnamespacestd;

#defineMAX_NAME

10//定義姓名的最大長度

#defineSTART

3//初始化為職工開辟的空間

#defineADD

5//每次為職工增加的空間

#defineFILENAME

"staff.dat"http://存入的文件名

//定義一個職工類

classStaff

public:

//顯示職工信息

void

print()

{

coutid"

"name"

"mon1"

"mon2"

"mon3"

"

mon4"

"mon5"

"Staff::summoney()"

"Staff::avgmoney()endl;

}

//求每個人的總工資

doublesummoney()

{

doublesum;

sum=mon1+mon2+mon3+mon4+mon5;

returnsum;

}

//求每個人的平均工資

doubleavgmoney()

{

doubleavg;

avg=(Staff::summoney())/5;

returnavg;

}

charname[MAX_NAME];

intid;

doublemon1,mon2,mon3,mon4,mon5;

//定一個系統類

classSystem

public:

//顯示系統內的職工信息

voidprint()

{

size_ti=0;

if(System::len==0)

{

cout"系統中沒有職工信息"endl;

}

for(i=0;iSystem::len;i++)

{

(System::staff+i)-print();

}

}

Staff*staff;//職工類的指針

size_tlen;//職工人數

size_twidth;//為職工創(chuàng)建的空間大小

//初始化系統

voidInitclass(System*my_sys);

//添加職工信息

voidInput(System*my_sys);

//查找職工信息

voidSelect(System*my_sys);

//修改職工信息

voidUpdate(System*my_sys);

//刪除職工信息

voidDelete(System*my_sys);

//統計職工信息

voidtongji(System*my_sys);

//求每一項的平均值

void

money(System*my_sys);

//從文件讀取職工信息

void

Read(System*my_sys);

//將職工信息寫入文件

void

Save(System*my_sys);

//釋放動態(tài)開辟的空間

voidFree(System*my_sys);

#endif

//__MONEY__

源文件:

#define_CRT_SECURE_NO_WARNINGS1

#include"xiaodong.h"

//初始化系統

voidInitclass(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;

}

}

//添加職工信息

voidInput(System*my_sys)

IF_space(my_sys);

cout"請輸入職工信息:"endl;

cout"姓名基本工資職務工資津貼醫(yī)療保險公積金"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;

//查找職工信息

voidSelect(System*my_sys)

if(my_sys-len==0)

{

cout"系統中沒有保存職工信息"endl;

}

else

{

cout"請輸入所要查詢的職工姓名:";

charName[10]={0};

cinName;

size_ti=0;

for(i=0;imy_sys-i++)

{

if(strcmp(Name,(my_sys-staff+i)-name)==0)

{

cout"該職工信息為:"endl;

cout"ID號

姓名

基本工資

職務工資

津貼

醫(yī)療保險

公積金

總工資

平均工資"endl;

my_sys-staff-print();

break;

}

}

if(i=my_sys-len)

cout"系統中沒有此職工信息"endl;

}

voidmenu1()

cout"請選擇要修改的信息:"endl;

cout"***********************************************"endl;

cout"******

1.修改職工姓名

******"endl;

cout"******

2.修改基本工資

******"endl;

cout"******

3.修改職務工資

******"endl;

cout"******

4.修改緊貼

******"endl;

cout"******

5.修改醫(yī)療保險

******"endl;

cout"******

6.修改公積金

******"endl;

cout"***********************************************"endl;

//修改職工信息

voidUpdate(System*my_sys)

if(my_sys-len==0)

{

cout"系統中沒有保存職工信息"endl;

}

else

{

cout"請輸入所要修改的職工姓名:";

charName[MAX_NAME]={0};

cinName;

size_ti=0;

for(i=0;imy_sys-i++)

{

if(strcmp(Name,(my_sys-staff+i)-name)==0)

{

menu1();

cout"請選擇對應數字序號進行操作:";

inta=0;

charname[MAX_NAME]={0};

doublemon1=0.0,mon2=0.0,mon3=0.0,mon4=0.0,mon5=0.0;

cina;

switch(a)

{strong

/strong

case1:

cout"請輸入新的職工姓名:";

cinname;

strcpy(my_sys-staff-name,name);

break;

case2:

cout"請輸入新的基本工資:";

cinmon1;

my_sys-staff-mon1=mon1;

break;

case3:

cout"請輸入新的崗位工資:";

cinmon2;

my_sys-staff-mon2=mon2;

break;

case4:

cout"請輸入新的崗位工資:";

cinmon3;

my_sys-staff-mon3=mon3;

break;

case5:

cout"請輸入新的崗位工資:";

cinmon4;

my_sys-staff-mon4=mon4;

break;

case6:

cout"請輸入新的崗位工資:";

cinmon5;

my_sys-staff-mon5=mon5;

break;

default:

cout"輸入不合標準"endl;

break;

}

break;

}

}

if(i=my_sys-len)

cout"系統中沒有此職工信息"endl;

}

//刪除職工信息

voidDelete(System*my_sys)

if(my_sys-len==0)

{

cout"系統中沒有保存職工信息"endl;

}

else

{

cout"請輸入所要刪除的職工姓名:";

charName[MAX_NAME]={0};

cinName;

size_ti=0;

size_tm=my_sys-

for(i=0;imy_sys-i++)

{

if(strcmp(Name,(my_sys-staff+i)-name)==0)

{

for(size_tj=i;jmy_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:";

cinmn;

for(size_ti=0;imy_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-lenendl;

}

//求每一項的平均值

void

money(System*my_sys)

doublecount1=0;

doublecount2=0;

doublecount3=0;

doublecount4=0;

doublecount5=0;

if(my_sys-len0)

{

for(size_ti=0;imy_sys-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-lenendl;

}

//從文件讀取職工信息

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_ti=0;imy_sys-len;i++)

{

fwrite(my_sys-staff+i,1,sizeof(Staff),pf);

}

fclose(pf);

voidFree(System*my_sys)

if(my_sys-staff!=NULL)

{

free(my_sys-staff);

my_sys-staff=NULL;

}

}

測試代碼:

#define

_CRT_SECURE_NO_WARNINGS

#include"xiaodong.h"

voidmenu()

cout"#######################################################################"endl;

cout"--------------------------職工工資管理系統()---------------------------"endl;

cout"***********************************************************************"endl;

cout"**

1.修改職工信息

**"endl;

cout"**

2.添加職工信息

**"endl;

cout"**

3.刪除職工信息

**"endl;

cout"**

4.查找職工信息

**"endl;

cout"**

5.統計職工信息

**"endl;

cout"**

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論