




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 配套幼兒園合同協(xié)議
- 車牌照租賃合同協(xié)議
- 車輛指定贈予合同協(xié)議
- 跟組演員簽約合同協(xié)議
- 校園文化協(xié)議書
- 淺談就業(yè)協(xié)議書
- 轉(zhuǎn)讓手表合同協(xié)議書范本
- 進口噴淋頭銷售合同協(xié)議
- 軌道線路整修合同協(xié)議
- 無償乘車協(xié)議書
- 護理人員業(yè)務(wù)技術(shù)檔案 模板
- 工藝管道儀表流程圖PID基礎(chǔ)知識入門級培訓(xùn)課件
- 人音版小學(xué)一年級音樂下冊教案 全冊
- 中醫(yī)養(yǎng)生穴位保健按摩課件
- 金融監(jiān)管學(xué)-金融監(jiān)管學(xué)課件
- (完整)高血壓病歷以及全套臨床病歷
- 語文一年級上冊:拼音9《y-w》ppt教學(xué)課件
- 標(biāo)準(zhǔn)溶液配制與標(biāo)定原始記錄(氫氧化鈉)
- 內(nèi)墻膩子施工技術(shù)交底
- 自粘聚合物改性瀝青防水卷材施工方案5完整
- 施工界面劃分表(明細)
評論
0/150
提交評論