工资管理系统
职工工资管理系统是由职工信息管理模块和工资信息管理模块组成。职工工资管理系统可以实现对职工基本工资进行管理、实际发放工资管理、职工信息记录的查询等多项管理。在模块中分别实现对职工基本信息管理。如:添加职工、修改职工信息、删除职工信息、查询职工信息等功能程序设计。该工资管理系统采用Visual C++面向对象程序设计。事先,我们对程序进行了粗略的分析,确定了C++中类、构造函数、成员函数等函数,接着通过对各种函数的使用,编出了这个职工工资管理系统,最后在McrosoftVisual C++软件中不断调试运行,并发现错误,解决错误。并且经过适当完善,初步实现了设计目标。
关键词:;面向对象;类;工资管理
《C++程序设计》课程设计
------职工工资管理
随着信息时代的到来,计算机应用十分广泛。职工工资管理是企业单位必不可少的管理程序,也是企业体制的重要组成部分。当前许多企业之中,真正使用计算机管理职工工资机制对企业来说非常的重要。
C++语言具有面向对象特性,是一种使用非常广泛的计算机编程语言,一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。面向对象编程中时程序设计的基本单位。但对象的静态数据往往是用某种类型的数据来表示,对象的动态属性要用成员函数来实现。面向函数的实现归根到底是算法的设计。
职工工资管理系统是以C++面向对象为基础编译出来的,其中用到了:类的使用、数组、循环体、函数的调用、封装等内容。
1、课程设计目的
<1>通过职工工资管理系统的编写,掌握C++面向对象设计,培养实事求是、认真、严谨的科学态度和刻苦钻研不断创新的精神,逐步建立正确的全局观。
<2>了解软件工程编程的思想,对以后的学习增加更多学习兴趣。
<3>提高各行业的工作效率,不断完善服务的质量。
2、课程设计任务
使用C++面向对象程序设计设计一个简易的工资管理系统。定义职工(employee)类,其中包括工号、姓名、性别、电话、家庭住址、所在科室和工资。(1)设计菜单实现功能选择;(2)添加功能:输入人员信息,并保存到文件中;(3)删除功能:输入人员编号实现删除,并保存到文件中
(4)修改功能:输入人员编号及其他相关信息,实现修改并保存到文件中
(5)查询功能①能够根据姓名精确查询人员信息;②能够根据所在科室精确查询该科室所有人员信息;(6)统计功能:根据性别分别统计男女员工的平均工资并输出结果
程序要求实现对工资进行统计并且显示职工所有信息,能够实行添加职工信息、查询职工信息、修改职工信息、查询职工信息等功能。
我们定义了一个Employee类(class Empolyee),我们定义了下述成员函数:
(1)void Addemployee();该函数添加职工信息。
(2)void Delectemployee();该函数删除职工信息。
(3)void Updaemployee();该函数修改职工信息。
(4)void reseacherstudentbyname();该函数用于按名字查询职工信息。
(5)void reseacherstudentbyoffice();该函数用于按科室查询职工信息。
(6)void add();该函数统计男女职工的平均工资。
(7)void SaveFile();该函数用于对文件的书写。
菜单输出放在主函数中。在函数中创建了高级数组vector,并用vector数组装创建的对象。
(1)类的设计
class employee
{
public:
int id ,salary;
string name,tele,address,office,sex;
employee(int id ,stringname,string sex,string tele,string address,string office,int salary)
{
this->id=id;
this->salary=salary;
this->sex=sex;
this->name=name;
this->tele=tele;
this->address=address;
this->office=office;
}
};
(2)主函数的设计
int main()
{
while(true)
{
cout<<"========================职工工资管理系统========================="<<'\n'
<<"1.添加职工"<<'\n'
<<"2.删除职工"<<'\n'
<<"3.修改职工"<<'\n'
<<"4.按姓名查询职工"<<'\n'
<<"5.按科室查询职工"<<'\n'
<<"6.按性别统计职工平均工资职工"<<'\n'
<<"0.推出职工工资管理系统"<<'\n'
<<"========================职工工资管理系统========================="<<'\n';
cout<<"请输入你的选择:"< int input; cin>>input; switch(input) { case 1:Addemployee(); break; case 2: Delectemployee();break; case 3: Updaemployee();break; case 4:reseacherstudentbyname() ;break; case 5:reseacherstudentbyoffice(); break; case 6: add();break; case 0:exit(1);break; } } return 0; } (3)成员函数的设计 <1>文件书写函数: voidSaveFile() { fstream file; file.open("d:\\stuData.txt",ios::out); vector while(itr!=stu.end()) { file<<(*itr).id<<"\n"; file<<(*itr).name<<"\n"; file<<(*itr).sex<<"\n"; file<<(*itr).tele<<"\n"; file<<(*itr).address<<"\n"; file<<(*itr).office<<"\n"; file<<(*itr).salary<<"\n"; itr++; } file.close(); } <2>添加职工信息函数: voidAddemployee() { intid,salary; string name,tele,address,office,sex; cout<<"请输入职工编号\n"; cin>>id; cout<<"请输入职工名字\n"; cin>>name; cout<<"请输入职工性别\n"; cin>>sex; cout<<"请输入职工电话号码\n"; cin>>tele; cout<<"请输入职工地址\n"; cin>>address; cout<<"请输入职工科室\n"; cin>>office; cout<<"请输入职工薪水\n"; cin>>salary; employeeT(id,name,sex,tele,address,office,salary ); stu.push_back(T); cout<<"你已成功添加职工,现有"< SaveFile(); } <3>删除职工信息函数: voidDelectemployee() { cout<<"请输入要删除的职工号"; int id; cin>>id; vector while(p!=stu.end()) { if((*p).id==id) { stu.erase (p); break; } p++; } cout<<"你已成功删除职工"< SaveFile(); } <4>修改职工信息函数: voidUpdaemployee() { int id ,salary; string name,tele,address,office,sex; cout<<"输入你要修改的职工号\n"; cin>>id; vector while(p!=stu.end()) { if((*p).id=id) { cout<<"请输入修改职工的姓名\n"; cin>>name; cout<<"请输入修改职工的性别\n"; cin>>sex; cout<<"请输入修改职工的电话号码\n"; cin>>tele; cout<<"请输入修改职工的地址\n"; cin>>address; cout<<"请输入修改职工的科室\n"; cin>>office; cout<<"请输入修改职工的薪水\n"; cin>>salary; (*p).id=id; (*p).name=name; (*p).sex=sex; (*p).tele=tele; (*p).address=address; (*p).office=office; (*p).salary=salary; break; } p++; } SaveFile(); } <5>按名字查询职工信息函数: voidreseacherstudentbyname() { cout<<"请输入你要查询的人的名字\n"; string name; cin>>name; vector while(p!=stu.end()) { if((*p).name==name) { cout<<"职工的编号:\n"<<(*p).id< cout<<"职工的姓名:\n"<<(*p).name< cout<<"职工的性别:\n"<<(*p).sex< cout<<"职工的电话号码:\n"<<(*p).tele< cout<<"职工的地址:\n"<<(*p).address< cout<<"职工的科室:\n"<<(*p).office< cout<<"职工的薪水:\n"<<(*p).salary< break; } p++; } } <6>按科室查询职工信息: voidreseacherstudentbyoffice() { cout<<"请输入你要查询的人的科室\n"; string office; cin>>office; vector while(p!=stu.end()) { if((*p).office==office) { cout<<"职工的编号:\n"<<(*p).id< cout<<"职工的姓名:\n"<<(*p).name< cout<<"职工的性别:\n"<<(*p).sex< cout<<"职工的电话号码:\n"<<(*p).tele< cout<<"职工的地址:\n"<<(*p).address< cout<<"职工的科室:\n"<<(*p).office< cout<<"职工的薪水:\n"<<(*p).salary< } p++; } } <7>统计职工平均工资函数: void add() { int s=0,l=0,sum1=0,sum2=0; vector while(p!=stu.end()) { if((*p).sex=="man" ){s++;sum1=sum1+(*p).salary;} else if((*p).sex=="woman"){l++;sum2=sum2+(*p).salary;} p++; } if(s==0)cout<<"男职工的平均薪水:"<<"0"< else cout<<"男职工的平均薪水:"< if(l==0)cout<<"女职工的平均薪水:"<<"0"< else cout<<"女职工的平均薪水:"< } #include #include #include #include usingnamespace std; classemployee { public: int id ,salary; string name,tele,address,office,sex; employee(int id ,string name,stringsex,string tele,string address,string office,int salary) { this->id=id; this->salary=salary; this->sex=sex; this->name=name; this->tele=tele; this->address=address; this->office=office; } }; int main() { void Addemployee(); void Delectemployee(); void Updaemployee(); void reseacherstudentbyname(); void reseacherstudentbyoffice(); void add(); void SaveFile(); while(true) { cout<<"========================职工工资管理系统========================="<<'\n' <<"1.添加职工"<<'\n' <<"2.删除职工"<<'\n' <<"3.修改职工"<<'\n' <<"4.按姓名查询职工"<<'\n' <<"5.按科室查询职工"<<'\n' <<"6.按性别统计职工平均工资职工"<<'\n' <<"0.推出职工工资管理系统"<<'\n' <<"========================职工工资管理系统========================="<<'\n'; cout<<"请输入你的选择:"< int input; cin>>input; switch(input) { case1:Addemployee(); break; case 2: Delectemployee();break; case 3: Updaemployee();break; case 4:reseacherstudentbyname();break; case 5:reseacherstudentbyoffice();break; case 6: add();break; case 0:exit(1);break; } } return 0; } vector voidSaveFile() { fstream file; file.open("d:\\stuData.txt",ios::out); vector while(itr!=stu.end()) { file<<(*itr).id<<"\n"; file<<(*itr).name<<"\n"; file<<(*itr).sex<<"\n"; file<<(*itr).tele<<"\n"; file<<(*itr).address<<"\n"; file<<(*itr).office<<"\n"; file<<(*itr).salary<<"\n"; itr++; } file.close(); } voidAddemployee() { int id,salary; string name,tele,address,office,sex; cout<<"请输入职工编号\n"; cin>>id; cout<<"请输入职工名字\n"; cin>>name; cout<<"请输入职工性别\n"; cin>>sex; cout<<"请输入职工电话号码\n"; cin>>tele; cout<<"请输入职工地址\n"; cin>>address; cout<<"请输入职工科室\n"; cin>>office; cout<<"请输入职工薪水\n"; cin>>salary; employeeT(id,name,sex,tele,address,office,salary ); stu.push_back(T); cout<<"你已成功添加职工,现有"< SaveFile(); } voidDelectemployee() { cout<<"请输入要删除的职工号"; int id; cin>>id; vector while(p!=stu.end()) { if((*p).id==id) { stu.erase (p); break; } p++; } cout<<"你已成功删除职工"< SaveFile(); } voidUpdaemployee() { int id ,salary; string name,tele,address,office,sex; cout<<"输入你要修改的职工号\n"; cin>>id; vector while(p!=stu.end()) { if((*p).id=id) { cout<<"请输入修改职工的姓名\n"; cin>>name; cout<<"请输入修改职工的性别\n"; cin>>sex; cout<<"请输入修改职工的电话号码\n"; cin>>tele; cout<<"请输入修改职工的地址\n"; cin>>address; cout<<"请输入修改职工的科室\n"; cin>>office; cout<<"请输入修改职工的薪水\n"; cin>>salary; (*p).id=id; (*p).name=name; (*p).sex=sex; (*p).tele=tele; (*p).address=address; (*p).office=office; (*p).salary=salary; break; } p++; } SaveFile(); } voidreseacherstudentbyname() { cout<<"请输入你要查询的人的名字\n"; string name; cin>>name; vector while(p!=stu.end()) { if((*p).name==name) { cout<<"职工的编号:\n"<<(*p).id< cout<<"职工的姓名:\n"<<(*p).name< cout<<"职工的性别:\n"<<(*p).sex< cout<<"职工的电话号码:\n"<<(*p).tele< cout<<"职工的地址:\n"<<(*p).address< cout<<"职工的科室:\n"<<(*p).office< cout<<"职工的薪水:\n"<<(*p).salary< break; } p++; } SaveFile(); } voidreseacherstudentbyoffice() { cout<<"请输入你要查询的人的科室\n"; string office; cin>>office; vector while(p!=stu.end()) { if((*p).office==office) { cout<<"职工的编号:\n"<<(*p).id< cout<<"职工的姓名:\n"<<(*p).name< cout<<"职工的性别:\n"<<(*p).sex< cout<<"职工的电话号码:\n"<<(*p).tele< cout<<"职工的地址:\n"<<(*p).address< cout<<"职工的科室:\n"<<(*p).office< cout<<"职工的薪水:\n"<<(*p).salary< } p++; } } void add() { int s=0,l=0,sum1=0,sum2=0; vector while(p!=stu.end()) { if((*p).sex=="man"){s++;sum1=sum1+(*p).salary;} else if((*p).sex=="woman"){l++;sum2=sum2+(*p).salary;} p++; } if(s==0)cout<<"男职工的平均薪水:"<<"0"< else cout<<"男职工的平均薪水:"< if(l==0)cout<<"女职工的平均薪水:"<<"0"< else cout<<"女职工的平均薪水:"< } 这是一个关于职工信息管理系统,具有输入、输出、删除、查询、修改、保存、退出等功能。 可按照相关提示进行调试操作: 增加职工信息按“1”键; 删除职工信息按“2”键; 修改职工信息按“3”键; 按姓名查询职工信息按“4”键; 按科室查询职工信息按“5”键; 按性别统计职工平均工资按“6”键; 推出职工工资管理系统按“0”键; 我们在程序编写的过程中遇到了很多问题。如:类中有的数据定义为私用以致不能访问(如图0) 图0错误提示图 通过查询资料得知,基类中的私有成员可以以两种形式存在,以private或以protected的形式,以private的形式如果要继承的话需要友元,而以protected的形式的话可以以私有的形式直接继承(用protected方式声明派生类)。为了简单化,我们全部把它的成员公有化。 体会: 经过对职工信息管理系统的分析与编写,我们得到了很大的收获。自主学习的必要性更是解决问题的基础,我们5个人一组,在设计的过程中,我们相互讨论,相互学习,发挥出各自的优势,发现自己的不足,取长补短。更重要的是这次设计让我们对C++面向对象编程设计有了更深刻的认识和更全面的掌握,也提升了我们分析问题的能力和思考问题的逻辑能力,更明白实际调研的重要性。在系统分析和设计的部分仍然花了比较多的时间,特别是源代码的编写和调试,经过反复的改写、调试、再改写、调试,我们最终完成了任务。 运行结果: 程序运行的界面(主菜单)如图1所示。 图1:程序运行的界面图 在主菜单中功能选项中输入“1"进行添加职工信息,如图2。 图2:添加职工信息图 在主菜单功能选项中输入“2”可以进行删除职工信息(如图3): 图3:删除职工信息图 在主菜单功能选项中输入“3”可以进行修改职工信息(如图4): 图4:修改职工信息图 在主菜单功能选项中输入“4”可以进行按姓名查询职工信息(如图5): 图5:按姓名查询职工信息图 在主菜单功能选项中输入“5”可以进行按科室查询职工信息(如图6): 图6:按科室查询职工信息图 在主菜单功能选项中输入“6”可以进行职工信息统计(如图7): 图7:职工信息统计图 在主菜单功能选项中输入“0”退出管理系统(如图8): 图8:退出管理系统图 本次设计我们组的题目是职工工资管理系统,因为事先老师的细心指导,我们才得以的完成这次课程设计。在系统分析和设计的部分仍然花了比较多的时间,特别是源代码的编写和调试,经过反复的改写、调试、再改写、调试,我们最终完成了任务。 经过对职工信息管理系统的分析与编写,我们得到了很大的收获。自主学习的必要性更是解决问题的基础,我们五个人一组,在设计的过程中,我们相互讨论,相互学习,发挥出各自的优势,发现自己的不足,取长补短,增强了团队意识。更重要的是这次设计让我们对C++面向对象设计编程有了更深刻的认识和更全面的掌握,也提升了我们分析问题的能力和思考问题的逻辑能力,更明白实际调研的重要性。对面向对象编程有了深刻的理解,对软件工程有了了解。在以后的学习中我们会更加的努力,深刻的钻研,增强团队意识。 感谢我们的指导老师袁辉勇老师,谢谢他在我们的课程设计过程中提出了指导性的方案和架构,并指引我们阅读相关的资料和书籍,使我们在不熟悉的领域中仍能迅速掌握新的方法和技术。 感谢校领导给我们这次难得的锻炼机会,让我们能更好的理解和实践 C++面向对象编程,让我们对面向对象编程有了更深刻的认知,对已学知识有了更进一步的巩固。 也谢谢我的同学与我们一起合作,共同完成了这个课程设计。 [1] 冯博琴等编.《C++程序设计语言》.北京:中国铁道出版社,2011 [2] 揣锦华等编.《C++程序设计语言》.西安:西安电子科技大学出版社,2003 [3]刘振安编著.《C++程序设计课程设计》.北京:机械工业出版社,2007. [4] 吕凤翥著.《C++语言基础教程》.北京:清华大学出版社,2001 [5]张国峰编著.《C++语言及其程序设计教程》.北京:电子工业出版社,1996. [6] 伍俊良《管理信息系统(MIS)开发与应用》.北京:科学出版社,1999 [7] 邓飞,李瑶主编.《C++程序设计语言》.北京:中国人民出版社,1993 [8] 郑莉,董渊,张瑞丰.《C++语言课程设计》(第三版).北京:清华大学出版社,2004 [9] 钱能.《C++程序设计实验指导》.北京:清华大学出版社,2005 [10] 罗建军等编.《C++程序设计教程学习指导》.北京:高等教育出版社,2003 3、程序清单
4、程序调试与体会
四、结 论
五、致 谢
六、参考文献