




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第C++實(shí)現(xiàn)職工工資管理系統(tǒng)課程設(shè)計(jì)本文實(shí)例為大家分享了C++實(shí)現(xiàn)職工工資管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
現(xiàn)在的大學(xué)里經(jīng)常有一些課程設(shè)計(jì),這不,我就遇到了。
我們的c++老師,給了我們許多的題目要我們來選擇,我就選擇了這個(gè),說難又不難,說簡單,又不簡單的。
題目職工工資管理系統(tǒng)
我們老師給的題目是這樣的?。?/p>
職工工資管理設(shè)計(jì)與實(shí)現(xiàn)
功能設(shè)計(jì)要求
1.輸入記錄:將每一個(gè)職工的姓名、ID號(hào)以及基本工資、職務(wù)工資、崗位津貼、醫(yī)療保險(xiǎn)、公積金的數(shù)據(jù)作為一個(gè)記錄。該軟件能建立一個(gè)新的數(shù)據(jù)文件或給已建立好的數(shù)據(jù)文件增加記錄。
2.顯示記錄:根據(jù)用戶提供的記錄或者根據(jù)職工姓名顯示一個(gè)或幾個(gè)職工的各項(xiàng)工資和平均工資。
3.修改記錄:可以對(duì)數(shù)據(jù)文件的任意記錄的數(shù)據(jù)進(jìn)行修改并在修改前后對(duì)記錄內(nèi)容進(jìn)行顯示。
4.查找記錄:可以對(duì)數(shù)據(jù)文件的任意記錄的數(shù)據(jù)進(jìn)行查找并在查找前后對(duì)記錄內(nèi)容進(jìn)行顯示。
5.刪除記錄:可刪除數(shù)據(jù)文件中的任一記錄。
6.統(tǒng)計(jì):(A)計(jì)算各項(xiàng)工資平均工資及總工資,(B)統(tǒng)計(jì)符合指定條件(如職工工資前三項(xiàng)之和在3000元以上、3000~2000元、2000~1000元)以內(nèi)的工資職工人數(shù)及占總職工人數(shù)的百分比。(C)按字符表格形式打印全部職工工資信息表及平均工資(包括各項(xiàng)總的平均工資)。
7.保存數(shù)據(jù)文件功能。
下面是我設(shè)計(jì)的程序功能
1.主函數(shù)main(void):調(diào)用設(shè)計(jì)者的相關(guān)信息函數(shù)、調(diào)用Menu()函數(shù),實(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)計(jì)函數(shù)tongji():統(tǒng)計(jì)職工人數(shù);
8.數(shù)據(jù)顯示函數(shù)print():將職工信息數(shù)據(jù)顯示出來;
9.文件保存函數(shù)Save():將錄入的職工信息保存到文件;
10文件讀取函數(shù)Read():從文件中讀取職工信息;
代碼的流程圖
代碼的實(shí)現(xiàn)
頭文件:
#ifndef
__MONEY__
#define
__MONEY__
#includeiostream
#includestdlib.h
#includestring.h
usingnamespacestd;
#defineMAX_NAME
10//定義姓名的最大長度
#defineSTART
3//初始化為職工開辟的空間
#defineADD
5//每次為職工增加的空間
#defineFILENAME
"staff.dat"http://存入的文件名
//定義一個(gè)職工類
classStaff
public:
//顯示職工信息
void
print()
{
coutid"
"name"
"mon1"
"mon2"
"mon3"
"
mon4"
"mon5"
"Staff::summoney()"
"Staff::avgmoney()endl;
}
//求每個(gè)人的總工資
doublesummoney()
{
doublesum;
sum=mon1+mon2+mon3+mon4+mon5;
returnsum;
}
//求每個(gè)人的平均工資
doubleavgmoney()
{
doubleavg;
avg=(Staff::summoney())/5;
returnavg;
}
charname[MAX_NAME];
intid;
doublemon1,mon2,mon3,mon4,mon5;
//定一個(gè)系統(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)計(jì)職工信息
voidtongji(System*my_sys);
//求每一項(xiàng)的平均值
void
money(System*my_sys);
//從文件讀取職工信息
void
Read(System*my_sys);
//將職工信息寫入文件
void
Save(System*my_sys);
//釋放動(dòng)態(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ù)已達(dá)系統(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ī)療保險(xiǎn)公積金"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號(hào)
姓名
基本工資
職務(wù)工資
津貼
醫(yī)療保險(xiǎn)
公積金
總工資
平均工資"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ī)療保險(xiǎn)
******"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"請選擇對(duì)應(yīng)數(shù)字序號(hào)進(jìn)行操作:";
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"請輸入所要?jiǎng)h除的職工姓名:";
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)計(jì):統(tǒng)計(jì)符合指定條件(如職工工資前三項(xià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)計(jì)的職工信息指定的條件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"職工工資前三項(xiàng)之和在"m"--"n"職工人數(shù)及占總職工人數(shù)的百分比為:"(double)number/my_sys-lenendl;
}
//求每一項(xiàng)的平均值
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"各項(xiàng)工資的平均工資為"
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)計(jì)職工信息
**"endl;
cout"**
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高粱根教學(xué)課件
- 趙志祥的一分鐘教學(xué)課件
- 紋身教學(xué)課件
- 美術(shù)教學(xué)課件大綱
- 閱讀教學(xué)指導(dǎo)課件
- 順采茶教學(xué)課件
- 教學(xué)課件母版設(shè)計(jì)
- 散步教學(xué)說課課件
- 幼兒教學(xué)掛圖課件
- 浙江寧波寧海縣2022自主招生考試數(shù)學(xué)試題真題(含答案詳解)
- 石英砂采購合同
- 廣告代理行業(yè)商業(yè)模式-全面剖析
- 2025年連云港專業(yè)技術(shù)人員公共課程公需考試
- 鋼結(jié)構(gòu)工程施工難點(diǎn)及解決措施
- (2024)湖北省公務(wù)員考試《行測》真題及答案解析
- 建筑工程資料填寫范例與指南
- 2023年貴州貴州賴茅酒業(yè)有限公司招聘考試真題
- 行政案例分析-終結(jié)性考核-國開(SC)-參考資料
- 操作系統(tǒng)-001-國開機(jī)考復(fù)習(xí)資料
- 《商務(wù)郵件禮儀》課件
- 《讓子彈飛》電影賞析
評(píng)論
0/150
提交評(píng)論