高校人员工资管理系统_第1页
高校人员工资管理系统_第2页
高校人员工资管理系统_第3页
高校人员工资管理系统_第4页
高校人员工资管理系统_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北 华 航 天 工 业 学 院基于C+的面向对象程序设计实例课程设计报告报告题目: “高校人员工资管理系统” 作者所在系部: 计算机科学与工程系 作者所在专业: 计算机科学与技术 作者所在班级: B08514 作 者 姓 名 : 指导教师姓名: 斯庆巴拉 完 成 时 间 : 2009-6-24 北华航天工业学院教务处制摘 要在学校的学校管理体制中,学校想要管理好教职工的工资问题,所以要进行统计,编译此系统是为了方便完成学校教职工的工资统计和保存。本文利用C+面向类与对象的基础编写程序,实现了学校对学校职工人员工资的管理。在此过程中,我们应用到本系统主要有六个功能模块:教职工的信息添加、查询、编

2、译、删除、显示、退出。 关键词:统计、管理、信息。目 录摘要摘 要第一章 绪论111 课程设计的目的112 课程设计的背景和意义1121 课程设计的背景11. 理论研究基础12. 技术层面的支持1122 课程设计的意义113 课程设计环境2第二章 需求分析221 问题描述222 功能要求223 问题的解决方案3第三章 系统设计331 数据设计3311 类设计3312 类之间的关系3313 函数设计432 结构设计4321 系统流程图4322 界面设计4第四章 系统实现541 类实现542 函数实现643 主函数实现7第五章 系统测试1251 模块测试1252 课程设计过程中遇到的问题14总 结

3、15致 谢16参考文献17附 录18第一章 绪论11 课程设计的目的课程设计是一门重要的课程,目的是为了加深学生对该课程内容的进一步的了解与巩固,是将该计算机课程应用到实际当中,此次程序设计综合运用所学知识解决实际问题,将C+中的所学知识综合地展现出来,进一步让学生对面向对象的方法以及C+的编程思想有了较深了解和认识。12 课程设计的背景和意义121 课程设计的背景在现实社会中的讲求方法,一个好的课程设计在现实生活中可以很好的解决问题。并有效准确的让一个问题得到解决。为此我们必须很好的应用所学知识,应用到实际当中,去完成解决一些在日常生活中的问题。本次课程设计,文件进行的项操作(如添加、修改、

4、删除、查询、显示等)。通过这次课程设计掌握面向对象的程序设计思路,着重掌握在C+中对文件进行查找、删除、修改等操作。1. 理论研究基础(1)C+面向对象程序设计(2)类的运用,文件的输入输出,以及各种循环语句和条件语句。(3)类的封装性和继承性。2. 技术层面的支持(1)定义基类与派生类,将数据成员与成员函数封装在类中。(2)定义指向对象的指针,设计删除、查询、更改的算法。(3)C+异常处理的功能与输入输出流。122 课程设计的意义(1)通过课程设计的练习,培养了学生分析解决实际问题和编程等实际动手能力。提高了学生对知识的综合运用和实践基础,帮助了同学系统的掌握C+课程的主要内容。(2)通过解

5、决实际问题,学生可以从多方面考虑问题,课程设计将设计要求、排样了学生独立思考的能力,激发了学生们的创新精神。(3)激起学生对课程设计的兴趣。13 课程设计环境Microsoft Visual C+6.0编译环境,进行程序的编译和修改到程序无误,正确执行自己想要执行的目的即可。第二章 需求分析21 问题描述某高校有五类职工:教师,实验员,行政人员,教师兼职实验员,行政人员兼职教师。共有的信息包括:编号、姓名和性别和职工类别。每类人员特有的信息,请根据情况自行添加。职工工资的计算方法如下:教师: 基本工资+课时费;实验员: 基本工资+实验室补助;行政人员: 基本工资+行政补贴;教师兼职实验员: 基

6、本工资+课时费+实验室补助;行政人员兼职教师:基本工资+行政补贴+课时费;其中:1)基本工资:教师800元,实验员650元,行政人员750元2)行政补贴:250元3)实验室补助:150元4)课时费的计算方法为:20*本月课时数22 功能要求(1)对各类人员信息完成的基本功能有:1) 添加功能:程序能够添加相应的记录;2) 查询功能:能根据编号和姓名进行查询,并显示相应的记录信息;3) 编辑功能:根据查询结果对相应的记录进行修改;4)删除功能:根据查找结果,完成具体记录的删除。5)保存功能:将对高校人员信息进行的添加、删除、修改结果保存到文本文件中。23 问题的解决方案根据系统功能要求,可以将问

7、题解决分为以下步骤: 1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;2)分析系统中的各个实体及它们之间的关系; 3)根据问题描述,设计系统的类层次; 4)完成类层次中各个类的描述; 5)完成类中各个成员函数的定义; 6)完成系统的应用模块; 7)功能调试; 8)完成系统总结报告。第三章 系统设计31 数据设计311 类设计人员共有的信息编号number、姓名name、性别sex、职工类别employee_kind,职工月工资employee_money,设计一个基类employee,内包涵以上信息并包含教师本月课所上课时数,另定义一个派生类people类,根据基类中的职工月工

8、资来求得职工月工资。基类employee中包含函数output_()输出函数,输出人员的信息,del()删除职工信息,change()编辑职工信息,employee_wage()函数实在派生类people中运行的函数,为的是求职工的月工资。312 类之间的关系定义一个基类employee,派生类people,people类共有继承基类的成员和函数,其中employee的函数employee_wage()被people类继承,实现employee类中职工月工资employee_money的计算输出,output_()被people继承输出employee的成员信息。313 函数设计按照题目所给的

9、要求,employee中包含函数output_()输出函数,输出人员的信息,del()删除职工信息,change()编辑职工信息,employee_wage()函数实在派生类people中运行的函数,为的是求职工的月工资。以实现在output_()函数的输出,还有下面主函数中添加与显示功能的实现,还有文件txt中的添加人员。在main函数中,实现添加、查找、删除、编辑、显示、保存、退出的功能,("d:/f1.txt",ios:out)的文件是实现上述功能的连接口,每实现一次功能都得以保存。32 结构设计。321 系统流程图main添加功能查询功能显示功能删除功能编辑功能退出

10、系统编号查询月薪范围查询职工类型查询编号删除322 界面设计登入高校管理系统界面如图3-2所示图3-2界面菜单设计程序开始运行,通过主函数进入系统主界面(如上图所示),操作员可输入字母,错误字母,会报错,选择系统的各个功能或退出系统。每种功能的界面都有相应的提示。上述目录选项后操作会有提示,告诉接下来怎么做,错误会报错,没有想做的退出。第四章 系统实现41 类实现class employee/职工基类public:int number;/编号intnumber_ks;/本月课时数string name,employee_kind;/name为人名employee_kind为职工类型char s

11、ex;/性别double employee_money;/月工资employee()/为了给后面的派生类中无参函数的应用。因为要添加一些对象employee(int num,string nam,char s,string ek,int n)number=num;name=nam;sex=s;employee_kind=ek;number_ks=n;/构造函数 void employee_wage();/求月工资void output_();/输出函数void del()/删除职工信息number=NULL;name="NULL"employee_kind="NU

12、LL"void change()/编辑职工信息int num;char s;string nam,ek;int n;cout<<"请输入修改后的雇员的编号、姓名、性别、职工类型、本月课时数:"<<endl;cin>>num>>nam>>s>>ek>>n;number=num;name=nam;sex=s;number_ks=n;employee_kind=ek;class people:public employee/定义类,公有继承employee类public:people()

13、people(int num,string nam,char s,string ek,int n):employee(num,nam,s,ek,n)/构造函数void employee_wage()if(employee_kind="teacher") employee_money=850+number_ks*20;else if(employee_kind="experiment")employee_money=650+150;else if(employee_kind="administrator")employee_money=

14、750+250;else if(employee_kind="teacherandexperiment") employee_money=850+number_ks*20+650+150;else if(employee_kind="administrarorandteacher") employee_money=750+250+number_ks*20;elsecout<<"无此级别"<<endl;void output_()/输出函数cout<<"编号:"<<se

15、tw(4)<<number<<" "<<"姓名:"<<setw(8)<<name<<" "<<"性别:"<<setw(10)<<sex<<"职工类别:"<<setw(14)<<employee_kind<<" "<<"职工月工资:"<<setw(18)<<employ

16、ee_money<<endl;42 函数实现void baisc()cout<<" "<<endl;cout<<" "<<endl;cout<<" "<<endl; cout<<" "<<endl;cout<<" 欢迎进入 "<<endl;cout<<" 高校 "<<endl;cout<<" 人员工资

17、管理系统 "<<endl;cout<<" "<<endl;cout<<" "<<endl;cout<<" "<<endl;cout<<" 添加功能,请输入A "<<endl;cout<<" 查询功能,请输入B "<<endl;cout<<" 编辑功能,请输入C "<<endl;cout<<"

18、 删除功能,请输入D "<<endl;cout<<" 显示功能,请输入E "<<endl;cout<<" 退出系统,请输入F "<<endl;cout<<" "<<endl;cout<<" "<<endl;cout<<" "<<endl;43 主函数实现int main()people emplN=/定义最多添加个成员,N值可以改变people(1,&qu

19、ot;wan",'w',"teacher",45),people(2,"peng",'m',"experiment",34),people(3,"hang",'m',"administrator",40), people(4,"gong",'w',"teacherandexperiment",54),people(5,"zou",'m',"

20、;administrarorandteacher",36),;ofstream outfile1("d:/f1.txt",ios:out);if(!outfile1)cerr<<"打开错误"<<endl;exit(1); outfile1<<"编号 "<<" 姓名 "<<" 性别 "<<" 职工类别 "<<" 职工月工资 "<<endl; for(in

21、t i=0;i<5;i+)empli.employee_wage();outfile1<<setw(4)<<empli.number<<setw(8)<<<<setiosflags(ios:right)<<setw(10)<<empli.sex<<setw(14)<<empli.employee_kind<<" "<<setw(18)<<empli.employee_money<<endl;ou

22、tfile1.close();int x=1,y=5,z=1,c=1,d=1,e=1,f=1,j=0;/定义people对象,用数组修改while(f=1)/第一个char m;baisc();cout<<"-"<<endl;cout<<"请选择要进行的操作:"<<endl;cin>>m;switch(m)/第二个default:cout<<"选择错误,请正确输入选项:"<<endl;break; case 'A':/添加while(x

23、=1)string str;cout<<"请选择是否添加输入yes或no后按enter"<<endl;cin>>str;if(str="yes")int num,q=0,k=0;string nam,ek;char s;int n;cout<<"请输入添加的雇员的编号、姓名、性别、职工类型、本月课时数:"<<endl;cin>>num>>nam>>s>>ek>>n;for(int m=0;m<y;m+)if(n

24、um=emplm.number)cout<<"已有此编号,不能正常添加"<<endl;q=1;if(q=0) emply.number=num;=nam;emply.sex=s;emply.employee_kind=ek;emply.number_ks=n;k=1;if(k=1)if(emply.employee_kind="teacher"|emply.employee_kind="experiment"|emply.employee_kind="administrator&q

25、uot;|emply.employee_kind="teacherandexperiment"|emply.employee_kind="administrarorandteacher")&&(emply.sex='m'|emply.sex='w') ofstream outfile2("d:/f1.txt",ios:app);if(!outfile2)cerr<<"打开错误"<<endl;exit(1);emply.employee_wage

26、();cout<<"已添加成功"<<endl;outfile2<<setw(4)<<emply.number<<setw(8)<<<<setiosflags(ios:right)<<setw(10)<<emply.sex<<setw(14)<<emply.employee_kind<<" "<<setw(18)<<emply.employee_money<<

27、endl;outfile2.close();emply.output_();y+;x=1;else cout<<"请正确输入添加的职工类型或性别"<<endl;x=1;else if(str="no") x=0;elsex=1;f=1;x=1;break;case 'B':/查找while(z=1)string strd;cout<<"请选择是否查询,正确输入yes或no后按enter"<<endl;cin>>strd;if(strd="yes&qu

28、ot;)/多项查询char str1;cout<<"按编号查询请选N "<<"按工作类型查询请输入G "<<"按月薪范围查询请输入M"<<endl;cin>>str1;if(str1='N')/1int num,z=0;/编号cout<<"请输入要查询的雇员的编号:"<<endl;cin>>num;for(int v=0;v<y;v+)if(num=emplv.number)emplv.employ

29、ee_wage();emplv.output_(); z=1;if(z=0) cout<<"无此人"<<endl;/1else if(str1='G')/2int pm=0;cout<<"请输入要查询的工作类型:"<<endl;string str2;cin>>str2;for(int k=0;k<y;k+)if(str2=emplk.employee_kind) emplk.employee_wage();emplk.output_();pm=1;if(pm=0)cout

30、<<"无此级别"<<endl;/2else if(str1='M')/3double m,n;int lp=0;cout<<"请依次输入要查询的范围的上限和下限:"<<endl;cin>>m>>n;for(int k=0;k<y;k+)emplk.employee_wage();if(emplk.employee_money>=n&&emplk.employee_money<=m|emplk.employee_money>=m&

31、amp;&emplk.employee_money<=n)emplk.output_();lp=1;if(lp=0)cout<<"在您查询的范围内没有任何人"<<endl;/3elsecout<<"请正确输入选项"<<endl;z=1;else if(strd="no") z=0;else z=1;f=1;z=1;break;case 'C':/编辑while(c=1)string strd;cout<<"请选择是否编辑,正确输入yes

32、或no后按enter"<<endl;cin>>strd;if(strd="yes")int nus,w=0;/编号 cout<<"请输入要编辑的雇员的编号:"<<endl; cin>>nus;ofstream outfile3("d:/f1.txt",ios:out);for(int r=0;r<y;r+) if(nus=emplr.number) w=1;emplr.change();emplr.employee_wage();ofstream outfil

33、e2("d:/f1.txt",ios:out);for(int s=0;s<y;s+)if(empls.number!=NULL) outfile3<<setw(4)<<empls.number<<setw(8)<<<<setw(10)<<empls.sex<<setiosflags(ios:right)<<setw(14)<<empls.employee_kind<<" "<<setw(18)&l

34、t;<empls.employee_money<<endl;outfile3.close(); cout<<"以修改成功!"<<endl;if(w=0)cout<<"无此人"<<endl;c=1;else if(strd="no") c=0;elsec=1;f=1;c=1;break;case 'D':/删除while(d=1)string strc;cout<<"请选择是否删除,正确输入yes或no后按enter"<

35、;<endl;cin>>strc;if(strc="yes") int num,p=0; cout<<"请输入要删除的雇员的编号:"<<endl; cin>>num; for(int m=0;m<y;m+) if(num=emplm.number) ofstream outfile4("d:/f1.txt",ios:out);if(!outfile4)cerr<<"打开错误"<<endl;exit(1);emplm.output_(

36、);emplm.del();for(int s=0;s<y;s+)if(empls.number!=NULL)outfile4<<setw(4)<<empls.number<<setw(8)<<<<setw(10)<<empls.sex<<setiosflags(ios:right)<<setw(14)<<empls.employee_kind<<" "<<setw(18)<<empls.employee_

37、money<<endl;outfile4.close();cout<<"已成功删除!"<<endl;p+;if(p=0)cout<<"无此人"<<endl;d=1;else if(strc="no") d=0;elsed=1;f=1;d=1;break;case 'E':/显示for(int i=0;i<y;i+) if(empli.number!=NULL)/已删除的成员数据不进行输出 empli.employee_wage(); empli.outp

38、ut_();/实现显示功能 f=1; break;case 'F':f=0;break;/第二个/第一个cout<<"end"<<endl;return 0; 第五章 系统测试51 模块测试1.显示功能 图5.112.添加功能当添加为正确文件(如图5.12),输入错误文件会产生提示效果(如图5.13)职工类型只能为teacher、experiment、administratorteacherandexperiment、administrarorandteacher、性别只能为m、w图5.12图5.133查询功能如下分三种:图5.144

39、删除功能:图5.155.编辑功能:图5.166.为了证明已保存再次新显示信息:5.177.退出系统5.1852 课程设计过程中遇到的问题1、对于某些C+语句(循环,条件)运用不熟练 2、txt文档使用不熟练。3、考虑问题不全面,有的只想了一种方法,(如删除只有编号删除) 4、无法让使用者知道内部信息,只能先说明。5、程序编写时没有充分考虑用户的方便性6、做报告时的格式不正规。 总 结通过本程序设计对C+的只是进一步加深了了解,应用到实际生活中去。此程序有以下几个优点和缺点:优点:1.此程序条理清晰,让人看起来很容易操作,在每部操作都有具体提示,在发生错误时,也能提示让你进行正确操作。2.程序考

40、虑比较多,在查找程序时有按编号、职工类型、月工资范围三方面。3.程序代码简单、短小,让人看起来很清晰。4.界面美观,让人感觉很好。5.本系统每进行一项操作直接保存,不会怕忘记保存。缺点:1. 考虑不是很全面,删除只有编号删除。2. 要先告诉一些信息,才能让操作者知道如何操作,什么是正确。致 谢在课程设计过程中遇到了一些问题,不过在老师和和同学们的帮助下大部分都得以解决,首先要对他们表示感谢。同时,我们也要感谢学校为我们提供了大量的图书,通过看书我们也学到了很多课堂上学不到的东西。由于自己考虑的还不全面,其中有疏漏之处,在此要感谢任课老师的细心指导,指出我的问题,并给了我这次实践的机会。 参考文

41、献1陈清华、朱红.VisualC+课程设计案例精选与编程指导.南京:东南大学出版社,20032 陈伟柱 C+代码设计与重用 北京:人民邮电出版社 20023刁成嘉 译.C+编程思想.北京:机械工业出版社,20064郑莉、张瑞丰、李莉、余小沛.C+语言案例教程.北京:清华大学出版社.20055谭浩强. C+面向对象程序设计. 北京:清华大学出版社,20066谭浩强.C程序设计.北京:清华大学出版社,2005附 录#include<iostream>#include<fstream>#include<iomanip>#define N 100/定义常量,给类的对

42、象分配存储空间可以改变#include<string>using namespace std;void baisc()cout<<" "<<endl;cout<<" "<<endl;cout<<" "<<endl; cout<<" "<<endl;cout<<" 欢迎进入 "<<endl;cout<<" 高校 "<<end

43、l;cout<<" 人员工资管理系统 "<<endl;cout<<" "<<endl;cout<<" "<<endl;cout<<" "<<endl;cout<<" 添加功能,请输入A "<<endl;cout<<" 查询功能,请输入B "<<endl;cout<<" 编辑功能,请输入C "<&l

44、t;endl;cout<<" 删除功能,请输入D "<<endl;cout<<" 显示功能,请输入E "<<endl;cout<<" 退出系统,请输入F "<<endl;cout<<" "<<endl;cout<<" "<<endl;cout<<" "<<endl;class employeepublic:int number;/编号

45、intnumber_ks;/本月课时数string name,employee_kind;/name为人名employee_kind为职工类型char sex;/性别double employee_money;/月工资employee()/为了给后面的派生类中无参函数的应用。因为要添加一些对象employee(int num,string nam,char s,string ek,int n)number=num;name=nam;sex=s;employee_kind=ek;number_ks=n;/构造函数 void employee_wage();/求月工资void output_();

46、/输出函数void del()/删除职工信息number=NULL;name="NULL"employee_kind="NULL"void change()/编辑职工信息int num;char s;string nam,ek;int n;cout<<"请输入修改后的雇员的编号、姓名、性别、职工类型、本月课时数:"<<endl;cin>>num>>nam>>s>>ek>>n;number=num;name=nam;sex=s;number_ks=n;e

47、mployee_kind=ek;class people:public employee/定义类,公有继承employee类public:people()people(int num,string nam,char s,string ek,int n):employee(num,nam,s,ek,n)/构造函数void employee_wage()if(employee_kind="teacher") employee_money=850+number_ks*20;else if(employee_kind="experiment")employee_

48、money=650+150;else if(employee_kind="administrator")employee_money=750+250;else if(employee_kind="teacherandexperiment") employee_money=850+number_ks*20+650+150;else if(employee_kind="administrarorandteacher") employee_money=750+250+number_ks*20;elsecout<<"无此

49、级别"<<endl;void output_()/输出函数cout<<"编号:"<<setw(4)<<number<<" "<<"姓名:"<<setw(8)<<name<<" "<<"性别:"<<setw(10)<<sex<<"职工类别:"<<setw(14)<<employee_kind

50、<<" "<<"职工月工资:"<<setw(18)<<employee_money<<endl;int main()people emplN=/定义最多添加个成员,N值可以改变people(1,"wan",'w',"teacher",45),people(2,"peng",'m',"experiment",34),people(3,"hang",'m'

51、;,"administrator",40), people(4,"gong",'w',"teacherandexperiment",54),people(5,"zou",'m',"administrarorandteacher",36),;ofstream outfile1("d:/f1.txt",ios:out);if(!outfile1)cerr<<"打开错误"<<endl;exit(1); ou

52、tfile1<<"编号 "<<" 姓名 "<<" 性别 "<<" 职工类别 "<<" 职工月工资 "<<endl; for(int i=0;i<5;i+)empli.employee_wage();outfile1<<setw(4)<<empli.number<<setw(8)<<<<setiosflags(ios:right)<&l

53、t;setw(10)<<empli.sex<<setw(14)<<empli.employee_kind<<" "<<setw(18)<<empli.employee_money<<endl;outfile1.close();int x=1,y=5,z=1,c=1,d=1,e=1,f=1,j=0;/定义people对象,用数组修改while(f=1)/第一个char m;baisc();cout<<"-"<<endl;cout<<&qu

54、ot;请选择要进行的操作:"<<endl;cin>>m;switch(m)/第二个default:cout<<"选择错误,请正确输入选项:"<<endl;break; case 'A':/添加while(x=1)string str;cout<<"请选择是否添加输入yes或no后按enter"<<endl;cin>>str;if(str="yes")int num,q=0,k=0;string nam,ek;char s;int n;cout<<"请输入添加的雇员的编号、姓名、性别、职工类型、本月课时数:"<<endl;cin>>num>>nam>>s>>ek>>n;for(int m=0;m<y;m+)if(num=emplm.number)cout<<"已有此编号,不能正常添加"<<endl;q=1;if(q=0) emply.number=num;=nam;emply.sex=s;emply.emplo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论