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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第C++實現(xiàn)職工工資管理系統(tǒng)課程設(shè)計本文實例為大家分享了C++實現(xiàn)職工工資管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

現(xiàn)在的大學(xué)里經(jīng)常有一些課程設(shè)計,這不,我就遇到了。

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

題目職工工資管理系統(tǒng)

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

職工工資管理設(shè)計與實現(xiàn)

功能設(shè)計要求

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

2.顯示記錄:根據(jù)用戶提供的記錄或者根據(jù)職工姓名顯示一個或幾個職工的各項工資和平均工資。

3.修改記錄:可以對數(shù)據(jù)文件的任意記錄的數(shù)據(jù)進行修改并在修改前后對記錄內(nèi)容進行顯示。

4.查找記錄:可以對數(shù)據(jù)文件的任意記錄的數(shù)據(jù)進行查找并在查找前后對記錄內(nèi)容進行顯示。

5.刪除記錄:可刪除數(shù)據(jù)文件中的任一記錄。

6.統(tǒng)計:(A)計算各項工資平均工資及總工資,(B)統(tǒng)計符合指定條件(如職工工資前三項之和在3000元以上、3000~2000元、2000~1000元)以內(nèi)的工資職工人數(shù)及占總職工人數(shù)的百分比。(C)按字符表格形式打印全部職工工資信息表及平均工資(包括各項總的平均工資)。

7.保存數(shù)據(jù)文件功能。

下面是我設(shè)計的程序功能

1.主函數(shù)main(void):調(diào)用設(shè)計者的相關(guān)信息函數(shù)、調(diào)用Menu()函數(shù),實現(xiàn)系統(tǒng)的主要功能處理;

2.主菜單Menu()函數(shù):確定如何選擇所需功能,調(diào)用數(shù)據(jù)輸入、顯示、查找、增加、刪除、修改、保存等函數(shù),完成職工工資管理系統(tǒng)的數(shù)據(jù)處理;

3.數(shù)據(jù)輸入Input():完成職工信息添加;

4.數(shù)據(jù)修改函數(shù)update():修改職工工資等信息數(shù)據(jù);

5.數(shù)據(jù)刪除函數(shù)Delete():刪除職工信息數(shù)據(jù);

6.數(shù)據(jù)查找函數(shù)select():查找某一職工工資等信息情況;

7.數(shù)據(jù)統(tǒng)計函數(shù)tongji():統(tǒng)計職工人數(shù);

8.數(shù)據(jù)顯示函數(shù)print():將職工信息數(shù)據(jù)顯示出來;

9.文件保存函數(shù)Save():將錄入的職工信息保存到文件;

10文件讀取函數(shù)Read():從文件中讀取職工信息;

代碼的流程圖

代碼的實現(xiàn)

頭文件:

#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;

//定一個系統(tǒng)類

classSystem

public:

//顯示系統(tǒng)內(nèi)的職工信息

voidprint()

{

size_ti=0;

if(System::len==0)

{

cout"系統(tǒng)中沒有職工信息"endl;

}

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

{

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

}

}

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

size_tlen;//職工人數(shù)

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

//初始化系統(tǒng)

voidInitclass(System*my_sys);

//添加職工信息

voidInput(System*my_sys);

//查找職工信息

voidSelect(System*my_sys);

//修改職工信息

voidUpdate(System*my_sys);

//刪除職工信息

voidDelete(System*my_sys);

//統(tǒng)計職工信息

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"

//初始化系統(tǒng)

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"職工人數(shù)已達系統(tǒng)限定,"endl;

}

else

{

my_sys-staff=temp;

my_sys-width+=ADD;

}

}

//添加職工信息

voidInput(System*my_sys)

IF_space(my_sys);

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

cout"姓名基本工資職務(wù)工資津貼醫(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"系統(tǒng)中沒有保存職工信息"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號

姓名

基本工資

職務(wù)工資

津貼

醫(yī)療保險

公積金

總工資

平均工資"endl;

my_sys-staff-print();

break;

}

}

if(i=my_sys-len)

cout"系統(tǒng)中沒有此職工信息"endl;

}

voidmenu1()

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

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

cout"******

1.修改職工姓名

******"endl;

cout"******

2.修改基本工資

******"endl;

cout"******

3.修改職務(wù)工資

******"endl;

cout"******

4.修改緊貼

******"endl;

cout"******

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

******"endl;

cout"******

6.修改公積金

******"endl;

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

//修改職工信息

voidUpdate(System*my_sys)

if(my_sys-len==0)

{

cout"系統(tǒng)中沒有保存職工信息"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"請選擇對應(yīng)數(shù)字序號進行操作:";

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"輸入不合標(biāo)準(zhǔn)"endl;

break;

}

break;

}

}

if(i=my_sys-len)

cout"系統(tǒng)中沒有此職工信息"endl;

}

//刪除職工信息

voidDelete(System*my_sys)

if(my_sys-len==0)

{

cout"系統(tǒng)中沒有保存職工信息"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"系統(tǒng)中沒有此職工信息"endl;

}

//統(tǒng)計:統(tǒng)計符合指定條件(如職工工資前三項之和在3000元以上、3000~2000元、2000~1000元)

//以內(nèi)的工資職工人數(shù)及占總職工人數(shù)的百分比。

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"系統(tǒng)中沒有保存職工信息"endl;

}

else

{

cout"請輸入你要統(tǒng)計的職工信息指定的條件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"職工人數(shù)及占總職工人數(shù)的百分比為:"(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))//從文件中讀取數(shù)據(jù),,直到讀取的為空

{

IF_space(my_sys);

my_sys-staff[my_sys-len++]=s;

}

fclose(pf);//記著關(guān)閉文件

//將職工信息寫入文件

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"--------------------------職工工資管理系統(tǒng)()---------------------------"endl;

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

cout"**

1.修改職工信息

**"endl;

cout"**

2.添加職工信息

**"endl;

cout"**

3.刪除職工信息

**"endl;

cout"**

4.查找職工信息

**"endl;

cout"**

5.統(tǒng)計職工信息

**"endl;

cout"**

溫馨提示

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

評論

0/150

提交評論