版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、目錄一、需求分析 1二、概要設(shè)計 3三、詳細(xì)設(shè)計 12四、調(diào)試分析 12五、用戶手冊 13六、測試數(shù)據(jù) 17七、附錄 31一、需求分析1)源文件采用多文件的工程結(jié)構(gòu)。2)數(shù)據(jù)存儲采用文件形式。(3)標(biāo)準(zhǔn)C+俞入輸出4)程序完成企業(yè)人事工資管理,能夠?qū)崿F(xiàn)工資的錄入、統(tǒng)計(整個單位的平均工資、最 高工資、最低工資和工資均方差;各部門的平均工資、最高工資、最低工資和工資均方 差)、查詢(按工號或姓名查詢) 、修改、刪除等功能。5)程序執(zhí)行的命令:(1)錄入員工工資信息;2)選擇需要執(zhí)行的操作(添加、統(tǒng)計、刪除、修改、查詢)(3)輸出結(jié)果。一、 概要設(shè)計1. 設(shè)計類的數(shù)據(jù)類型定義class messa
2、geprivate:籍貫 職務(wù)部門char bornplace10,duty10;/int ID;/ 身份證號public:char name10,bumen10;/ 姓名int number; / 工號int basesalary;/ 基本工資int jobsalary;/ 崗位工資int yljj;/ 醫(yī)療基金int sj;/ 稅金friend int del(int x); / 友員函數(shù)2. 程序模塊( 1)錄入操作: void writen(int x),該模版主要實現(xiàn)工資信息的錄入;( 2)添加操作: void add(int x) ,該模版主要實現(xiàn)工資信息的添加;( 3)刪除操作:
3、 void del(int x) ,該模版主要實現(xiàn)工資信息的刪除;(4)修改操作: void modify ( int x ),該模版主要實現(xiàn)工資信息的修改;(5)查詢操作: void find(int x),該模版主要實現(xiàn)工資信息的查詢(按名字查詢或按工號查詢);( 6)統(tǒng)計操作: void count(int x) ,該模版主要實現(xiàn)工資信息的統(tǒng)計(統(tǒng)計單位的平均 工資、最高工資、最低工資、工資均方差;統(tǒng)計部門的平均工資、最高工資、最低 工資、工資均方差)。3程序模塊結(jié)構(gòu) void main()菜單(輸入選擇); 操作;三、詳細(xì)設(shè)計(1)類模塊class messageprivate:籍貫
4、職務(wù)部門char bornplace10,duty10;/int ID;/ 身份證號public:char name10,bumen10;/ 姓名int number; /工號int basesalary;/ 基本工資int jobsalary;/ 崗位工資int yljj;/ 醫(yī)療基金int sj;/ 稅金int jiangjin;/ 獎金/*構(gòu)造函數(shù)void xinxi(char a_name,char a_bornplace,char a_duty,char a_bumen,inta_ID,inta_sj)a_number,int a_basesalary,int a_jobsalary
5、,int a_jiangjin,inta_yljj,intstrcpy(name,a_name); strcpy(bornplace,a_bornplace); strcpy(duty,a_duty);strcpy(bumen,a_bumen);ID=a_ID;number=a_number;basesalary=a_basesalary;jobsalary=a_jobsalary;jiangjin=a_jiangjin;yljj=a_yljj;運(yùn)算符重載sj=a_sj;message &operator=(const message &s) /*strcpy(name,);str
6、cpy(bornplace,s.bornplace);strcpy(duty,s.duty);strcpy(bumen,s.bumen);ID=s.ID;number=s.number;basesalary=s.basesalary;jobsalary=alary;jiangjin=s.jiangjin;yljj=s.yljj;sj=s.sj;return * this;friend void modify(int x); /*友元函數(shù)friend int del(int x);void put()IDyljjcoutname bornplace duty bumen number
7、 basesalary jobsalary jiangjin sj mi ng; /輸入要刪除的人員姓名coute ndl;for(j=0,i=0;itemp;i+) /判斷是否刪除flag=i;if(flag=-1)endl;刪除信息cout 沒有要刪除的信息return 0;for(j=0,i=0;itemp,jming;coute ndl;coutflagendl;cout 請輸入修改信息 :endl;cout 姓名: ;cout 籍貫: bflag.bornplace;cout 職務(wù): bflag.duty;cout 部門: bflag.bumen;cout 身份證
8、號 : bflag.ID;cout 工號: bflag.number;cout 基本工資 : bflag.basesalary;cout 崗位工資 : alary;cout 獎金: bflag.jiangjin;cout 醫(yī)療住房基金 : bflag.yljj;cout 稅金: bflag.sj;coutming;message b30;fstream sp(we njia n. txt,ios:i n|ios:out);for(j=0,i=0;itemp;i+)if(strcmp(bi. name,mi ng)=0)cout 姓名 籍貫 職務(wù) 部門 身份證號 工號 基本工
9、資 崗位工資 獎金 醫(yī) 療住房基金 稅金 endl;bi.put();2. 按工號查詢:coutnu;message b30;for(i=0;itemp;i+)if(bi.number=nu)cout 姓名 籍貫 職務(wù) 部門 身份證號 工號 基本工資 崗位工資 獎金 醫(yī) 療住房基金 稅金 endl;bi.put();(7)統(tǒng)計函數(shù)流程圖end1. 按部門統(tǒng)計for(j=0,i=0;itemp;i+)if(strcmp(bi.bumen,a_bumen)=0)sum=sum+bi.basesalary+alary+bi.jiangjin-bi.yljj-bi.sj; / 實發(fā)工資u
10、i=bi.basesalary+alary+bi.jiangjin-bi.yljj-bi.sj;j+;int max;int min;min=u0;int bb;for(i=0;imax)bb=Ui;Ui=max;max=bb; / 最高工資for(i=0;itemp;i+)if(Uimin)min=Ui;/ 最低工資for(i=0;itemp;i+)工資均方差 bi.basesalary=abs(sum/(j+0.0)-bi.basesalary);/ sum1=sum1+bi.basesalary;2. 單位統(tǒng)計int U20;for(i=0;i20;i+)Ui=0;for(
11、j=0,i=0;itemp;i+)sum=sum+bi.basesalary+alary+bi.jiangjin-bi.yljj-bi.sj;/ 實發(fā)工資Ui=bi.basesalary+alary+bi.jiangjin-bi.yljj-bi.sj;j+;int max;int min;max=U0;min=U0;int bb;for(i=0;imax)Ui=max;max=bb; / 最高工資for(i=0;itemp;i+)if(Uimin)bb=Ui;Ui=min;min=Ui;/ 最低工資for(i=0;itemp;i+)工資均方差bi.basesalar
12、y=abs(sum/(j+0.0)-bi.basesalary);/sum1=sum1+bi.basesalary;四、調(diào)試分析1、開始使用文件保存時出現(xiàn)不能為 read 錯誤,后通過查閱資料解決了問題;2、刪除部分程序開始不能判斷是否找到了要刪除的人員信息,后來加了flag 標(biāo)記后可以判斷了;3、統(tǒng)計部分程序在求均方差的時候出現(xiàn)算法錯誤,后來查閱了均方差公式后改正了過來4、使用友員函數(shù)可以解決類外作用域問題。五、用戶手冊1. 本程序的運(yùn)行環(huán)境為 doc 操作系統(tǒng);2進(jìn)入界面后,按照提示輸入選擇;3. 選擇 1:執(zhí)行工資信息錄入操作;4. 選擇 2:執(zhí)行工資信息添加操作;5. 選擇 3:執(zhí)行工
13、資信息刪除操作;6. 選擇 4:執(zhí)行工資信息修改操作;7. 選擇 5:執(zhí)行工資信息查詢操作;8. 選擇 6:執(zhí)行工資信息統(tǒng)計操作;9. 選擇 7:退出工資管理系統(tǒng);10. 輸入后按回車鍵,即可輸出信息,按提示輸入即可。六、測試數(shù)據(jù)( 1)選擇 1:工資錄入選擇( 2):添加工資信息(3)選擇 3:刪除工資信息(4)選擇 4:修改工資信息(5)選擇 5:查找工資信息(6)選擇 6:統(tǒng)計工資信息(7)選擇 7:退出七、附錄#includeiostream.h#include stdlib.h#include stdio.h#includestring.h#includemessage.hclass
14、 messageprivate:char bornplace10,duty10;/籍貫 職務(wù)int ID;/ 身份證號public:char name10,bumen10;/ 姓名 部門int number; /工號int basesalary;/ 基本工資int jobsalary;/崗位工資int yljj;/ 醫(yī)療基金int sj;/ 稅金int jiangjin;/獎金message()/* 構(gòu)造函數(shù)void xinxi(char a_name,char a_bornplace,char a_duty,char a_bumen,int a_ID,int a_number,int a_b
15、asesalary,int a_jobsalary,int a_jiangjin,int a_yljj,int a_sj)strcpy(name,a_name);strcpy(bornplace,a_bornplace);strcpy(duty,a_duty);strcpy(bumen,a_bumen);ID=a_ID;number=a_number;basesalary=a_basesalary;jobsalary=a_jobsalary;jiangjin=a_jiangjin;yljj=a_yljj;sj=a_sj;message &operator=(const message &s)
16、/* 運(yùn)算符重載strcpy(name,);strcpy(bornplace,s.bornplace);strcpy(duty,s.duty);strcpy(bumen,s.bumen);ID=s.ID;number=s.number;basesalary=s.basesalary;jobsalary=alary;jiangjin=s.jiangjin;yljj=s.yljj;sj=s.sj;return * this;friend void modify(int x);友元函數(shù)friend int del(int x);void put() / 定義 put 函數(shù),以
17、便于其他函數(shù)的調(diào)用bumen IDcoutname bornplace dutynumber basesalary jobsalaryjiangjinyljjsjendl;析構(gòu)message();void main()int i,b;int or;cout* 歡迎進(jìn)入企業(yè)工資管理系統(tǒng) *endl;cout*1.工資信息錄入操作*endl;cout*2.工資信息增加操作*endl;cout*3.工資信息刪除操作*endl;cout*4.工資信息修改操作*endl;cout*5.工資信息查找操作*endl;cout*6.工資信息統(tǒng)計操作*endl;cout*7.退出 *endl;cout* 請輸入
18、你要進(jìn)行的操作選項 *i;coutendl;while(i!=10)switch(i)default:cout 你輸入的有誤,請重新輸入。 endl;break; case 1:coutb;coutendl;writein(b);break;case 2:/添加add(b);b+;break;case 3:/ 刪除del(b);b-;break;case 4:/ 修改modify(b);break;case 5:/ 查詢or;if(or=1)namfind(b);else if(or=2)numfind(b);break;case 6:/ 統(tǒng)計int cc;cout |1endl;coutvv
19、 |請輸入您要選擇的查詢方式:|endl;cout | 1.按部門統(tǒng)計I endl;coutvv | 2.按單位統(tǒng)計| vvendl;cout 11or; :cincc;if(cc=1)bmcount(b);else if(cc=2)dwcount();break;case 7:exit(0);cout* 歡迎進(jìn)入企業(yè)工資管理系統(tǒng) *endl;cout*1.工資信息錄入操作 *endl;cout*2.工資信息增加操作 *endl;cout*3.工資信息刪除操作 *endl;cout*4.工資信息修改操作 *endl;cout*5.工資信息查找操作 *endl;cout*6.工資信息統(tǒng)計操作 *
20、endl;cout*7.退出 *i;coutendl;void writein(int x) / 工資信息錄入職務(wù)message a10;char a_name10,a_bornplace10,a_duty10,a_bumen10; /姓名 籍貫身份部門int j,a_ID,a_basesalary,a_jobsalary,a_jiangjin,a_yljj,a_sj,a_number;/證號 基本工資 崗位工資 獎金 醫(yī)療住房基金 稅金fstream f(wenjian.txt,ios:out);/ 打開文件if(!f)for(j=0;jx;j+)cout 姓名: a_name;cout 籍
21、貫: a_bornplace;cout 職務(wù): a_duty;cout 部門: a_bumen;cout 身份證號 : a_ID;cout 工號: a_number;cina_basesalary;cout 崗位工資 : a_jobsalary;cout 獎金: a_jiangjin;cout 醫(yī)療住房基金 : a_yljj;cout 稅金: a_sj;coutendl;aj.xinxi(a_name,a_bornplace,a_duty,a_bumen,a_ID,a_number,a_basesalary,a_ jobsalary,a_jiangjin,a_yljj,a_sj);f.writ
22、e(char *)&aj,sizeof(aj ); / 保存錄入的信息f.close(); / 關(guān)閉文件ifstream in(wenjian.txt,ios:in);message b10;for(j=0;jx;j+)if(!in.eof()in.read(char *)&bj,sizeof(aj);bj.put();elseexit(0);in.close();void add(int x) / 工資信息添加char a_name10,a_bornplace10,a_duty10,a_bumen10;int a_ID,a_basesalary,a_jobsalary,a_jiangjin,
23、a_yljj,a_sj,a_number,temp=30;message c;cout 輸入要增加的人員的信息 :endl;cout 姓名 : a_name;cout 籍貫: a_bornplace;cout 職務(wù): a_duty;cout 部門: a_bumen;cout 身份證號 : a_ID;cout 工號: a_number;cout 基本工資 : a_basesalary;cout 崗位工資 : a_jobsalary;cout 獎金: a_jiangjin;cout 醫(yī)療住房基金 : a_yljj;cout 稅金: a_sj;coutendl;c.xinxi(a_name,a_bo
24、rnplace,a_duty,a_bumen,a_ID,a_number,a_basesalary,a_jobI I salary,a_jiangjin,a_yljj,a_sj);ofstream out(wenjian.txt,ios:app);out.write(char *)&c,sizeof(class message);/保存到文件中out.close();cout 增加成功 !endl;int i,j,temp,flag=-1;char ming10;system(cls);ifstream in(wenjian.txt);message b30,c;for(j=0;j30;j+)
25、if(!in.eof()in.read(char *)&bj,sizeof(class message);elsetemp = j-1;break;cout 文件內(nèi)保存的信息有 :endl;/ 輸出文件內(nèi)的人員信息工資cout 姓名 地址 職務(wù) 部門 身份證號 工號 endl;for(j=0;jtemp;j+)bj.put();in.close();fstream sp(wenjian.txt,ios:in|ios:out);for(j=0;j30;j+)if(!sp.eof()sp.read(char *)&bj,sizeof(class message);temp = j-1;break;
26、sp.close();message a30;fstream ap(wenjian.txt,ios:in|ios:out);coutming;coutendl;for(j=0,i=0;itemp;i+)if(strcmp(,ming)=0)/.11.標(biāo)記要刪除的信息flag=i;if(flag=-1)endl;刪除信息cout 沒有要刪除的信息return 0;for(j=0,i=0;itemp,jtemp-1; )/if(flag!=i)aj=bi;i+;j+;ap.close();ofstream np(wenjian.txt);for(i=0;itemp-1;i+)寫入文件
27、np.write(char *)&ai,sizeof(class message);/np.close();cout 刪除成功 !endl;return 1;void modify(int x) /工資信息修改char ming10;int i,j,temp,flag;message b30;ifstream sp(wenjian.txt);for(j=0;j30;j+)if(!sp.eof()打開文件sp.read(char *)&bj,sizeof(class message); /elsetemp = j-1;break;sp.close();coutming;coutendl;cout
28、 原文件信息是 :endl;for(i=0;itemp;i+) / 輸出文件內(nèi)保存的信息 if(strcmp(,ming)=0)flag = i; bi.put();coutendl;coutflagendl;coutendl;cout 請輸入修改信息 :endl;cout 姓名 : ;cout 籍貫: bflag.bornplace; cout 職務(wù): bflag.duty;cout 部門: bflag.bumen; cout 身份證號 : bflag.ID;cout 工號: bflag.number; cout 基本工資 : bflag.basesalar
29、y; cout 崗位工資 : alary; cout 獎金: bflag.jiangjin;cout 醫(yī)療住房基金 : bflag.yljj;cout 稅金: bflag.sj;coutendl;ofstream in(wenjian.txt);for(i=0;itemp;i+)if(!in)coutCan not open!endl;in.write(char *)&bi,sizeof(class message);coutendl;in.close();void namfind(int x) /按姓名查找操作int j,temp,i;char ming10;coutmi
30、ng;coutendl;cout 這個人的信息是 :endl;message b30;fstream sp(wenjian.txt,ios:in|ios:out);for(j=0;j30;j+)if(!sp.eof()sp.read(char *)&bj,sizeof(class message);elsetemp = j-1;break;for(j=0,i=0;itemp;i+)if(strcmp(,ming)=0)cout 姓名 籍貫 職務(wù) 部門 身份證號 工號 基本工資 崗位工資 獎金 醫(yī) 療住房基金 稅金 endl;bi.put();sp.close();void num
31、find(int x) /按工號查找操作int nu,i,j,temp;coutnu;coutendl;cout 這個人的信息是 :endl;message b30;fstream sp(wenjian.txt,ios:in|ios:out);for(j=0;j30;j+)if(!sp.eof()sp.read(char *)&bj,sizeof(class message);elsetemp = j-1;break;for(i=0;itemp;i+)if(bi.number=nu)cout 姓名 籍貫 職務(wù) 部門 身份證號 工號 基本工資 崗位工資 獎金 醫(yī) 療住房基金 稅金 endl;bi
32、.put();sp.close();void bmcount(int x) /按部門統(tǒng)計操作int i,j,sum=0,sum1=0,temp;char a_bumen10;couta_bumen;coutendl;message b30;fstream sp(wenjian.txt,ios:in|ios:out);for(j=0;j30;j+)if(!sp.eof()sp.read(char *)&bj,sizeof(class message); elsetemp = j-1;break;int U20;for(i=0;i20;i+)Ui=0;for(j=0,i=0;itemp;i+)if(strcmp(bi.bumen,a_bumen)=0)sum=sum+bi.basesalary+alary+bi.jiangjin-bi.yljj-bi.sj;Ui=bi.basesalary+bi.j
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 水電安裝工程2025版合同范本
- 二零二五版大數(shù)據(jù)分析與應(yīng)用合同2篇
- 2025年監(jiān)理分公司合作協(xié)議書:綠色建筑監(jiān)理及評估服務(wù)合同6篇
- 二零二五年度金融科技產(chǎn)品采購合同2篇
- 二零二五年度2025版兒童撫養(yǎng)權(quán)界定離婚合同范本4篇
- 2025年度鋁合金材料進(jìn)出口代理采購合同4篇
- 2025年度韻達(dá)快遞業(yè)務(wù)承包合作協(xié)議范本3篇
- 2025年度陸運(yùn)運(yùn)輸合同爭議解決范本4篇
- 二零二四前期物業(yè)服務(wù)協(xié)議與社區(qū)便民服務(wù)合同3篇
- 二零二五版廣告宣傳代理合同補(bǔ)充協(xié)議3篇
- 2025年生產(chǎn)主管年度工作計劃
- 2025年急診科護(hù)理工作計劃
- 高中家長會 高二寒假線上家長會課件
- 2024-2025學(xué)年山東省聊城市高一上學(xué)期期末數(shù)學(xué)教學(xué)質(zhì)量檢測試題(附解析)
- 違規(guī)行為與處罰管理制度
- 個人教師述職報告錦集10篇
- 四川省等八省2025年普通高中學(xué)業(yè)水平選擇性考試適應(yīng)性演練歷史試題(含答案)
- 《內(nèi)部培訓(xùn)師培訓(xùn)》課件
- 《雷達(dá)原理》課件-3.3.3教學(xué)課件:相控陣?yán)走_(dá)
- 西方史學(xué)史課件3教學(xué)
- 2024年中國醫(yī)藥研發(fā)藍(lán)皮書
評論
0/150
提交評論