




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、目錄一、 需求分析.1二、 概要設計.3三、 詳細設計.12四、 調試分析.12五、 用戶手冊.13六、 測試數據.17七、 附錄.31一、 需求分析1. 源文件采用多文件的工程結構。2. 數據存儲采用文件形式。3. 標準C+輸入輸出4. 程序完成企業人事工資管理,能夠實現工資的錄入、統計(整個單位的平均工資、最高工資、最低工資和工資均方差;各部門的平均工資、最高工資、最低工資和工資均方差)、查詢(按工號或查詢)、修改、刪除等功能。5. 程序執行的命令:(1) 錄入員工工資信息;(2) 選擇需要執行的操作(添加、統計、刪除、修改、查詢);(3) 輸出結果。二、 概要設計1. 設計類的數據類型定
2、義class messageprivate:char bornplace10,duty10;/籍貫 職務 int ID;/號public:char name10,bumen10;/ 部門 int number; /工號int basesalary;/基本工資int jobsalary;/崗位工資int yljj;/醫療基金int sj;/稅金int jiangjin;/獎金friend void modify(int x); /友員函數friend int del(int x); /友員函數 2. 程序模塊(1) 錄入操作:void writen(int x),該模版主要實現工資信息的錄入;(
3、2) 添加操作:void add(int x),該模版主要實現工資信息的添加;(3) 刪除操作:void del(int x),該模版主要實現工資信息的刪除;(4) 修改操作:void modify(int x),該模版主要實現工資信息的修改;(5) 查詢操作:void find(int x) ,該模版主要實現工資信息的查詢(按名字查詢或按工號查詢);(6) 統計操作:void count(int x),該模版主要實現工資信息的統計(統計單位的平均工資、最高工資、最低工資、工資均方差;統計部門的平均工資、最高工資、最低工資、工資均方差)。 3程序模塊結構void main()菜單(輸入選擇);
4、操作;三、詳細設計(1)類模塊class messageprivate:char bornplace10,duty10;/籍貫 職務 int ID;/號public:char name10,bumen10;/ 部門 int number; /工號int basesalary;/基本工資int jobsalary;/崗位工資int yljj;/醫療基金int sj;/稅金 int jiangjin;/獎金message() /*構造函數void xinxi(char a_name,char a_bornplace,char a_duty,char a_bumen,int a_ID,int a_n
5、umber,int a_basesalary,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 &
6、operator=(const message &s) /*運算符重載 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); /*友元函數friend int
7、del(int x);void put()cout<<name<<" "<<bornplace<<" "<<duty<<" "<<bumen<<" "<<ID<<" "<<number<<" "<<basesalary<<" "<<jobsalary<<"
8、"<<jiangjin<<" "<<yljj<<" "<<sj<<endl;message() /*析構;(2)主函數流程圖 開始int b,or,i輸入i值i=1錄入i=2添加i=3刪除i=4修改i =5查找i=6統計i=7退出結束(3)錄入、添加函數流程圖開始cout(請輸入您要添加的信息)cout(姓名,工號,職務,身份證號,籍貫,基本工資,崗位工資,獎金,醫療住房基金,稅金)cin(name,num,duty,ID,bornplace,basesalary,jobs
9、alary,jiangjin,yljj,sj)結束(4) 刪除函數流程圖開始int i,j,temp,flag=-1,char ming輸入刪除的名字name=mingi<temp,j<temp-1aj=bi,i+,j+i+沒有找到要刪除的人endmessage a30;fstream ap("wenjian.txt",ios:in|ios:out); /文件打開操作 cout<<"請輸入要刪除人員信息的名字:" cin>>ming; /輸入要刪除的人員 cout<<endl; for(j=0,i=0;i&
10、lt;temp;i+) /判斷是否刪除 if(strcmp(,ming)=0)/標記要刪除的信息 flag=i; if(flag=-1)cout<<"沒有要刪除的信息。"<<endl;return 0; for(j=0,i=0;i<temp,j<temp-1; )/刪除信息if(flag!=i)aj=bi; /刪除信息i+;j+;elsei+;(5)修改函數流程圖startint i,j,char name輸入=ming輸入修改的信息(名字,工號,職務,身份證號,籍貫,工資)cin(name,num,d
11、uty,ID,bornplace,basesalary,jobsalary,jiangjin,yljj,sj)沒找到要修改的endcout<<"輸入要修改人的名字:"cin>>ming;cout<<endl;cout<<flag<<endl;cout<<"請輸入修改信息:"<<endl; cout<<": "<<endl;cin>>;cout<<"籍貫: "<
12、<endl;cin>>bflag.bornplace;cout<<"職務: "<<endl;cin>>bflag.duty;cout<<"部門: "<<endl;cin>>bflag.bumen;cout<<"號: "<<endl;cin>>bflag.ID;cout<<"工號: "<<endl;cin>>bflag.number;cout<<
13、"基本工資: "<<endl;cin>>bflag.basesalary;cout<<"崗位工資: "<<endl;cin>>alary;cout<<"獎金: "<<endl;cin>>bflag.jiangjin;cout<<"醫療住房基金: "<<endl;cin>>bflag.yljj;cout<<"稅金: "<<e
14、ndl;cin>>bflag.sj;cout<<endl;(6)查找函數流程圖開始int i,j,k,num;char ming,k=1輸入要查詢的名字=ming輸入要查詢的工號bi.putBi.num=numm沒有找到要查找的姓名沒有找到要查找的工號結束1:按查詢cout<<"輸入要查詢的:"cin>>ming; message b30;fstream sp("wenjian.txt",ios:in|ios:out); for(j=0,i=0;i<temp;i+)if(strcmp(b
15、,ming)=0)cout<<" 籍貫 職務 部門 號 工號 基本工資 崗位工資 獎金 醫療住房基金 稅金 "<<endl;bi.put();2.按工號查詢:cout<<"輸入要查詢的工號:"cin>>nu; message b30;for(i=0;i<temp;i+)if(bi.number=nu)cout<<" 籍貫 職務 部門 號 工號 基本工資 崗位工資 獎金 醫療住房基金 稅金 "<<endl;bi.put();(7)統計函數流程圖開始
16、int i,j,k,char a_bumen10,sum=0,sum1=0k=1輸入要統計的部門k=2cin>>a_bumenbi.bumen=a_bumeni=0,j=0,j<tempi+j+sum=sum+bi.basesalary+alary+bi.jiangjin-bi.yljj-bi.sj;ui=bi.basesalary+alary+bi.jiangjin-bi.yljj-bi.sj;i=0,j=0,j<tempbi.bumen=a_bumensum=sum+basesalary+.jobsalary+.jiangjin-.ylj
17、j-.sj;ui=.basesalary+jobsalary+.jiangjin-.yljj-sj;i+j+end1. 按部門統計 for(j=0,i=0;i<temp;i+)if(strcmp(bi.bumen,a_bumen)=0)sum=sum+bi.basesalary+alary+bi.jiangjin-bi.yljj-bi.sj; /實發工資ui=bi.basesalary+alary+bi.jiangjin-bi.yljj-bi.sj;j+;int max;int min; max=u0;min=u0;int bb;for(i=0;i<te
18、mp;i+)if(Ui>max)bb=Ui;Ui=max;max=bb; /最高工資for(i=0;i<temp;i+)if(Ui<min)bb=Ui;Ui=min;min=Ui;/最低工資for(i=0;i<temp;i+) bi.basesalary=abs(sum/(j+0.0)-bi.basesalary);/工資均方差sum1=sum1+bi.basesalary;2.單位統計int U20;for(i=0;i<20;i+)Ui=0;for(j=0,i=0;i<temp;i+)sum=sum+bi.basesalary+alary+b
19、i.jiangjin-bi.yljj-bi.sj;/實發工資Ui=bi.basesalary+alary+bi.jiangjin-bi.yljj-bi.sj;j+;int max;int min; max=U0;min=U0;int bb;for(i=0;i<temp;i+)if(Ui>max)bb=Ui;Ui=max;max=bb; /最高工資for(i=0;i<temp;i+)if(Ui<min)bb=Ui;Ui=min;min=Ui;/最低工資for(i=0;i<temp;i+) bi.basesalary=abs(sum/(j+0.0)-bi
20、.basesalary);/工資均方差sum1=sum1+bi.basesalary;四、調試分析1、開始使用文件保存時出現不能為read錯誤,后通過查閱資料解決了問題;2、刪除部分程序開始不能判斷是否找到了要刪除的人員信息,后來加了flag標記后可以判斷了;3、統計部分程序在求均方差的時候出現算法錯誤,后來查閱了均方差公式后改正了過來4、使用友員函數可以解決類外作用域問題。五、用戶手冊1.本程序的運行環境為doc操作系統;2進入界面后,按照提示輸入選擇;3.選擇1:執行工資信息錄入操作;4.選擇2:執行工資信息添加操作;5.選擇3:執行工資信息刪除操作;6.選擇4:執行工資信息修改操作;7.
21、選擇5:執行工資信息查詢操作;8.選擇6:執行工資信息統計操作;9.選擇7:退出工資管理系統;10.輸入后按回車鍵,即可輸出信息,按提示輸入即可。六、測試數據(1)選擇1:工資錄入選擇(2):添加工資信息(3)選擇3:刪除工資信息(4)選擇4:修改工資信息(5)選擇5:查找工資信息(6)選擇6:統計工資信息(7)選擇7:退出七、附錄#include"iostream.h"#include "stdlib.h"#include "stdio.h"#include"string.h"#include"mess
22、age.h"class messageprivate:char bornplace10,duty10;/籍貫 職務 int ID;/號public:char name10,bumen10;/ 部門 int number; /工號int basesalary;/基本工資int jobsalary;/崗位工資int yljj;/醫療基金int sj;/稅金 int jiangjin;/獎金message() /*構造函數void xinxi(char a_name,char a_bornplace,char a_duty,char a_bumen,int a_ID,int a_numbe
23、r,int a_basesalary,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
24、 message &s) /*運算符重載 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); /*友元函數friend int del(int x);voi
25、d put() /定義put函數,以便于其他函數的調用cout<<name<<" "<<bornplace<<" "<<duty<<" "<<bumen<<" "<<ID<<" "<<number<<" "<<basesalary<<" "<<jobsalary<<&
26、quot; "<<jiangjin<<" "<<yljj<<" "<<sj<<endl;message() /*析構;void main()int i,b;int or;cout<<"*歡迎進入企業工資管理系統*"<<endl;cout<<"*1.工資信息錄入操作*"<<endl;cout<<"*2.工資信息增加操作*"<<endl;cout&
27、lt;<"*3.工資信息刪除操作*"<<endl;cout<<"*4.工資信息修改操作*"<<endl;cout<<"*5.工資信息查找操作*"<<endl;cout<<"*6.工資信息統計操作*"<<endl;cout<<"*7.退出*"<<endl;cout<<"*請輸入你要進行的操作選項*"<<endl;cin>>i;co
28、ut<<endl;while(i!=10) switch(i) default: cout<<"你輸入的有誤,請重新輸入。"<<endl;break; case 1: cout<<"輸入企業人員的人數:" /輸入信息 cin>>b; cout<<endl; writein(b); break; case 2:/添加 add(b); b+; break; case 3:/刪除 del(b); b-; break; case 4:/修改 modify(b); break; case 5:
29、/查詢 cout<<" "<<endl;cout<<"請輸入您要選擇的查詢方式:"<<endl;cout<<"1.按查找操作 "<<endl;cout<<"2.按工號查找操作 "<<endl; cout<<""<<endl;cin>>or;if(or=1) namfind(b);else if(or=2)numfind(b); break; case 6:/統計in
30、t cc; cout<<""<<endl;cout<<"請輸入您要選擇的查詢方式:"<<endl;cout<<"1.按部門統計 "<<endl;cout<<"2.按單位統計 "<<endl; cout<<""<<endl;/cin>>or;:cin>>cc;if(cc=1) bmcount(b);else if(cc=2)dwcount(); break
31、; case 7: exit(0); cout<<"*歡迎進入企業工資管理系統*"<<endl;cout<<"*1.工資信息錄入操作*"<<endl;cout<<"*2.工資信息增加操作*"<<endl;cout<<"*3.工資信息刪除操作*"<<endl;cout<<"*4.工資信息修改操作*"<<endl;cout<<"*5.工資信息查找操作*&quo
32、t;<<endl;cout<<"*6.工資信息統計操作*"<<endl;cout<<"*7.退出*"<<endl;cout<<"*請輸入你要進行的操作選項*"<<endl;cin>>i;cout<<endl;void writein(int x) /工資信息錄入message a10;char a_name10,a_bornplace10,a_duty10,a_bumen10; / 籍貫 職務 部門int j,a_ID,a_ba
33、sesalary,a_jobsalary,a_jiangjin,a_yljj,a_sj,a_number;/號 基本工資 崗位工資 獎金 醫療住房基金 稅金 fstream f("wenjian.txt",ios:out);/打開文件if(!f) cout<<"Can not open filen."for(j=0;j<x;j+)cout<<": "<<endl;cin>>a_name;cout<<"籍貫: "<<endl;cin>
34、>a_bornplace;cout<<"職務: "<<endl;cin>>a_duty;cout<<"部門: "<<endl;cin>>a_bumen;cout<<"號: "<<endl;cin>>a_ID;cout<<"工號: "<<endl;cin>>a_number;cout<<"基本工資: "<<endl;cin&g
35、t;>a_basesalary;cout<<"崗位工資: "<<endl;cin>>a_jobsalary;cout<<"獎金: "<<endl;cin>>a_jiangjin;cout<<"醫療住房基金: "<<endl;cin>>a_yljj;cout<<"稅金: "<<endl;cin>>a_sj;cout<<endl;aj.xinxi(a_name
36、,a_bornplace,a_duty,a_bumen,a_ID,a_number,a_basesalary,a_jobsalary,a_jiangjin,a_yljj,a_sj); f.write(char *)&aj,sizeof(aj );/保存錄入的信息f.close(); /關閉文件cout<<endl;ifstream in("wenjian.txt",ios:in);message b10;for(j=0;j<x;j+)if(!in.eof() in.read(char *)&bj,sizeof(aj); bj.put();e
37、lse exit(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,a_yljj,a_sj,a_number,temp=30; message c;cout<<"輸入要增加的人員的信息:"<<endl; cout<<": "<<endl;cin>>a_name;cout<<&q
38、uot;籍貫: "<<endl;cin>>a_bornplace;cout<<"職務: "<<endl;cin>>a_duty;cout<<"部門: "<<endl;cin>>a_bumen;cout<<"號: "<<endl;cin>>a_ID;cout<<"工號: "<<endl;cin>>a_number;cout<<&q
39、uot;基本工資: "<<endl;cin>>a_basesalary;cout<<"崗位工資: "<<endl;cin>>a_jobsalary;cout<<"獎金: "<<endl;cin>>a_jiangjin;cout<<"醫療住房基金: "<<endl;cin>>a_yljj;cout<<"稅金: "<<endl;cin>>a_s
40、j;cout<<endl;c.xinxi(a_name,a_bornplace,a_duty,a_bumen,a_ID,a_number,a_basesalary,a_jobsalary,a_jiangjin,a_yljj,a_sj); ofstream out("wenjian.txt",ios:app);out.write(char *)&c,sizeof(class message);/保存到文件中out.close();cout<<"增加成功!"<<endl;int del(int x) /工資信息刪除
41、int i,j,temp,flag=-1;char ming10;system("cls"); ifstream in("wenjian.txt");message b30,c;for(j=0;j<30;j+)if(!in.eof() in.read(char *)&bj,sizeof(class message);elsetemp = j-1;break;cout<<"文件保存的信息有:"<<endl; /輸出文件的人員信息cout<<" 地址 職務 部門 號 工號 工資
42、"<<endl;for(j=0;j<temp;j+)bj.put();in.close(); fstream sp("wenjian.txt",ios:in|ios:out);for(j=0;j<30;j+)if(!sp.eof() sp.read(char *)&bj,sizeof(class message);elsetemp = j-1;break;sp.close();message a30;fstream ap("wenjian.txt",ios:in|ios:out); cout<<&qu
43、ot;請輸入要刪除人員信息的名字:" cin>>ming; cout<<endl; for(j=0,i=0;i<temp;i+) if(strcmp(,ming)=0)/標記要刪除的信息 flag=i; if(flag=-1)cout<<"沒有要刪除的信息。"<<endl;return 0; for(j=0,i=0;i<temp,j<temp-1; )/刪除信息if(flag!=i)aj=bi;i+;j+;elsei+;ap.close();ofstream np("wenj
44、ian.txt");for(i=0;i<temp-1;i+)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;j<30;j+)if(!sp.eof() sp.read(ch
45、ar *)&bj,sizeof(class message); /打開文件elsetemp = j-1;break; sp.close(); cout<<"輸入要修改人的名字:"cin>>ming;cout<<endl; cout<<"原文件信息是:"<<endl;for(i=0;i<temp;i+) /輸出文件保存的信息if(strcmp(,ming)=0)flag = i; bi.put();cout<<endl;cout<<flag<
46、;<endl;cout<<endl;cout<<"請輸入修改信息:"<<endl; cout<<": "<<endl;cin>>;cout<<"籍貫: "<<endl;cin>>bflag.bornplace;cout<<"職務: "<<endl;cin>>bflag.duty;cout<<"部門: "<<
47、;endl;cin>>bflag.bumen;cout<<"號: "<<endl;cin>>bflag.ID;cout<<"工號: "<<endl;cin>>bflag.number;cout<<"基本工資: "<<endl;cin>>bflag.basesalary;cout<<"崗位工資: "<<endl;cin>>alary;cout&
48、lt;<"獎金: "<<endl;cin>>bflag.jiangjin;cout<<"醫療住房基金: "<<endl;cin>>bflag.yljj;cout<<"稅金: "<<endl;cin>>bflag.sj;cout<<endl;ofstream in("wenjian.txt");for(i=0;i<temp;i+)if(!in)cout<<"Can not op
49、en!"<<endl; in.write(char *)&bi,sizeof(class message); cout<<endl; in.close();void namfind(int x) /按查找操作int j,temp,i;char ming10;cout<<"輸入要查詢的:"cin>>ming;cout<<endl;cout<<"這個人的信息是:"<<endl; message b30;fstream sp("wenjian.txt
50、",ios:in|ios:out); for(j=0;j<30;j+)if(!sp.eof() sp.read(char *)&bj,sizeof(class message);elsetemp = j-1;break;for(j=0,i=0;i<temp;i+)if(strcmp(,ming)=0)cout<<" 籍貫 職務 部門 號 工號 基本工資 崗位工資 獎金 醫療住房基金 稅金 "<<endl;bi.put();sp.close();void numfind(int x) /按工號查找操作int
51、nu,i,j,temp; cout<<"輸入要查詢的工號:"cin>>nu;cout<<endl;cout<<"這個人的信息是:"<<endl; message b30;fstream sp("wenjian.txt",ios:in|ios:out); for(j=0;j<30;j+) if(!sp.eof() sp.read(char *)&bj,sizeof(class message); else temp = j-1;break; for(i=0;i&l
52、t;temp;i+)if(bi.number=nu)cout<<" 籍貫 職務 部門 號 工號 基本工資 崗位工資 獎金 醫療住房基金 稅金 "<<endl;bi.put();sp.close();void bmcount(int x) /按部門統計操作int i,j,sum=0,sum1=0,temp;char a_bumen10;cout<<"請輸入要統計的部門:"cin>>a_bumen;cout<<endl; message b30;fstream sp("wenjian.txt",ios:in|ios:out); for(j=0;j<30;j+) if(!sp.eof() sp.read(char *)&a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年輔警招聘考試綜合提升試卷有答案詳解
- 2025年輔警招聘考試綜合提升練習題含答案詳解(培優a卷)
- 2022年2月銀川市直遴選面試真題帶詳細解析
- 2022年11月三亞市直機關遴選公務員面試真題帶題目詳解
- 2025年云南省交通運輸綜合行政執法局文山支隊硯山大隊執法輔助人員招聘(1人)筆試備考試題附答案詳解(鞏固)
- 2013年高考語文試題及答案
- 麗江云南麗江市交通運輸綜合行政執法支隊執法輔助人員招聘6人筆試歷年參考題庫及答案詳解(歷年真題)
- 旅順塔河灣海域生態環境評價
- 2025安全生產施工補充協議書(勞務公司與施工隊長簽訂合同范本)
- 2025標準技術服務合同范本
- 科學上海會考試卷及答案
- 信息技術與課堂教學深度融合開題報告
- 臨床提升手護溫度 共筑人文關懷-手術室患者人文關懷管理規范實踐
- 2025紫金礦業集團股份有限公司校園招聘筆試參考題庫附帶答案詳解
- 2025義務教育道德與法治(2022版)課程標準考試測試卷及答案
- LED顯示屏更新改造的安全措施與施工文明要求
- 江蘇南京歷年中考作文題與審題指導(2002-2024)
- 3.1.1 橢圓的標準方程(同步課件含動畫演示)
- 綠色施工評價標準【B.0.2 環境保護要素評價表】
- 離婚協議書正規打印(2025年版)
- 稀土元素常考題及答案
評論
0/150
提交評論