课程设计-工资管理系统
工资管理系统
摘 要
职工工资管理系统是由职工信息管理模块和工资信息管理模块组成。职工工资管理系统可以实现对职工基本工资进行管理、实际发放工资管理、职工信息记录的查询等多项管理。在模块中分别实现对职工基本信息管理。如:添加职工、修改职工信息、删除职工信息、查询职工信息等功能程序设计。该工资管理系统采用Visual C++面向对象程序设计。事先,我们对程序进行了粗略的分析,确定了C++中类、构造函数、成员函数等函数,接着通过对各种函数的使用,编出了这个职工工资管理系统,最后在McrosoftVisual C++软件中不断调试运行,并发现错误,解决错误。并且经过适当完善,初步实现了设计目标。
关键词:;面向对象;类;工资管理
《C++程序设计》课程设计
------职工工资管理
一、引 言
随着信息时代的到来,计算机应用十分广泛。职工工资管理是企业单位必不可少的管理程序,也是企业体制的重要组成部分。当前许多企业之中,真正使用计算机管理职工工资机制对企业来说非常的重要。
C++语言具有面向对象特性,是一种使用非常广泛的计算机编程语言,一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。面向对象编程中时程序设计的基本单位。但对象的静态数据往往是用某种类型的数据来表示,对象的动态属性要用成员函数来实现。面向函数的实现归根到底是算法的设计。
职工工资管理系统是以C++面向对象为基础编译出来的,其中用到了:类的使用、数组、循环体、函数的调用、封装等内容。
二、设计目的与任务
1、课程设计目的
<1>通过职工工资管理系统的编写,掌握C++面向对象设计,培养实事求是、认真、严谨的科学态度和刻苦钻研不断创新的精神,逐步建立正确的全局观。
<2>了解软件工程编程的思想,对以后的学习增加更多学习兴趣。
<3>提高各行业的工作效率,不断完善服务的质量。
2、课程设计任务
使用C++面向对象程序设计设计一个简易的工资管理系统。定义职工(employee)类,其中包括工号、姓名、性别、电话、家庭住址、所在科室和工资。(1)设计菜单实现功能选择;(2)添加功能:输入人员信息,并保存到文件中;(3)删除功能:输入人员编号实现删除,并保存到文件中
(4)修改功能:输入人员编号及其他相关信息,实现修改并保存到文件中
(5)查询功能①能够根据姓名精确查询人员信息;②能够根据所在科室精确查询该科室所有人员信息;(6)统计功能:根据性别分别统计男女员工的平均工资并输出结果
三、设计方案
1、总体设计
程序要求实现对工资进行统计并且显示职工所有信息,能够实行添加职工信息、查询职工信息、修改职工信息、查询职工信息等功能。
我们定义了一个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数组装创建的对象。
2、详细设计
(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<<"请输入你的选择:"<<endl;
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<employee>::iteratoritr=stu.begin();
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<<"你已成功添加职工,现有"<<stu.size()<<"个职工"<<endl;
SaveFile();
}
<3>删除职工信息函数:
voidDelectemployee()
{
cout<<"请输入要删除的职工号";
int id;
cin>>id;
vector<employee>::iteratorp=stu.begin();
while(p!=stu.end())
{
if((*p).id==id)
{
stu.erase (p);
break;
}
p++;
}
cout<<"你已成功删除职工"<<endl;
SaveFile();
}
<4>修改职工信息函数:
voidUpdaemployee()
{
int id ,salary;
string name,tele,address,office,sex;
cout<<"输入你要修改的职工号\n";
cin>>id;
vector<employee>::iterator p=stu.begin ();
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<employee>::iterator p=stu.begin ();
while(p!=stu.end())
{
if((*p).name==name)
{
cout<<"职工的编号:\n"<<(*p).id<<endl;
cout<<"职工的姓名:\n"<<(*p).name<<endl;
cout<<"职工的性别:\n"<<(*p).sex<<endl;
cout<<"职工的电话号码:\n"<<(*p).tele<<endl;
cout<<"职工的地址:\n"<<(*p).address<<endl;
cout<<"职工的科室:\n"<<(*p).office<<endl;
cout<<"职工的薪水:\n"<<(*p).salary<<endl;
break;
}
p++;
}
}
<6>按科室查询职工信息:
voidreseacherstudentbyoffice()
{
cout<<"请输入你要查询的人的科室\n";
string office;
cin>>office;
vector<employee>::iterator p=stu.begin ();
while(p!=stu.end())
{
if((*p).office==office)
{
cout<<"职工的编号:\n"<<(*p).id<<endl;
cout<<"职工的姓名:\n"<<(*p).name<<endl;
cout<<"职工的性别:\n"<<(*p).sex<<endl;
cout<<"职工的电话号码:\n"<<(*p).tele<<endl;
cout<<"职工的地址:\n"<<(*p).address<<endl;
cout<<"职工的科室:\n"<<(*p).office<<endl;
cout<<"职工的薪水:\n"<<(*p).salary<<endl;
}
p++;
}
}
<7>统计职工平均工资函数:
void add()
{
int s=0,l=0,sum1=0,sum2=0;
vector<employee>::iterator p=stu.begin();
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"<<endl;
else cout<<"男职工的平均薪水:"<<double(sum1)/s<<endl;
if(l==0)cout<<"女职工的平均薪水:"<<"0"<<endl;
else cout<<"女职工的平均薪水:"<<double(sum2)/l<<endl;
}
3、程序清单
#include<iostream>
#include<vector>
#include<string>
#include<fstream>
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<<"请输入你的选择:"<<endl;
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<employee>stu;
voidSaveFile()
{
fstream file;
file.open("d:\\stuData.txt",ios::out);
vector<employee>::iteratoritr=stu.begin();
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<<"你已成功添加职工,现有"<<stu.size()<<"个职工"<<endl;
SaveFile();
}
voidDelectemployee()
{
cout<<"请输入要删除的职工号";
int id;
cin>>id;
vector<employee>::iteratorp=stu.begin();
while(p!=stu.end())
{
if((*p).id==id)
{
stu.erase (p);
break;
}
p++;
}
cout<<"你已成功删除职工"<<endl;
SaveFile();
}
voidUpdaemployee()
{
int id ,salary;
string name,tele,address,office,sex;
cout<<"输入你要修改的职工号\n";
cin>>id;
vector<employee>::iterator p=stu.begin ();
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<employee>::iterator p=stu.begin ();
while(p!=stu.end())
{
if((*p).name==name)
{
cout<<"职工的编号:\n"<<(*p).id<<endl;
cout<<"职工的姓名:\n"<<(*p).name<<endl;
cout<<"职工的性别:\n"<<(*p).sex<<endl;
cout<<"职工的电话号码:\n"<<(*p).tele<<endl;
cout<<"职工的地址:\n"<<(*p).address<<endl;
cout<<"职工的科室:\n"<<(*p).office<<endl;
cout<<"职工的薪水:\n"<<(*p).salary<<endl;
break;
}
p++;
}
SaveFile();
}
voidreseacherstudentbyoffice()
{
cout<<"请输入你要查询的人的科室\n";
string office;
cin>>office;
vector<employee>::iterator p=stu.begin ();
while(p!=stu.end())
{
if((*p).office==office)
{
cout<<"职工的编号:\n"<<(*p).id<<endl;
cout<<"职工的姓名:\n"<<(*p).name<<endl;
cout<<"职工的性别:\n"<<(*p).sex<<endl;
cout<<"职工的电话号码:\n"<<(*p).tele<<endl;
cout<<"职工的地址:\n"<<(*p).address<<endl;
cout<<"职工的科室:\n"<<(*p).office<<endl;
cout<<"职工的薪水:\n"<<(*p).salary<<endl;
}
p++;
}
}
void add()
{
int s=0,l=0,sum1=0,sum2=0;
vector<employee>::iterator p=stu.begin();
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"<<endl;
else cout<<"男职工的平均薪水:"<<double(sum1)/s<<endl;
if(l==0)cout<<"女职工的平均薪水:"<<"0"<<endl;
else cout<<"女职工的平均薪水:"<<double(sum2)/l<<endl;
}
4、程序调试与体会
这是一个关于职工信息管理系统,具有输入、输出、删除、查询、修改、保存、退出等功能。
可按照相关提示进行调试操作:
增加职工信息按“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
课程设计-工资管理系统相关推荐
- 教职工员工管理MySQL实训_数据库课程设计---教职工管理系统
数据库课程设计---教职工管理系统 第 1 页目 录一.需求与功能分析 2二.系统总体框架 3三.功能设计 3四.类的设计与分析 4五.数据库表结构设计 4六.特色算法分析 5七.功能测试 6-10八 ...
- 人事管理java 课程设计_java课程设计人事管理系统
<java课程设计人事管理系统>由会员分享,可在线阅读,更多相关<java课程设计人事管理系统(31页珍藏版)>请在人人文库网上搜索. 1.人事管理系统一. 系统需求分析: ( ...
- 销售管理c语言程序设计,C语言课程设计销售管理系统
C语言课程设计销售管理系统 C语言课程设计 题 目 商品销售系统 指导教师 曹东燕 学生姓名 刘伟 张新星 马国文 学 号 200900804072 200901802005 200900804051 ...
- 网吧管理系统C语言作业,C语言课程设计-网吧管理系统.doc
C语言课程设计-网吧管理系统 <通信工程专业C语言课程设计> 报 告 专 业: 通信工程 班 级: 0802 姓 名: 赵 松 指导教师: 丁 雄 二00九 年 十二 月 二十五 日 目 ...
- c语言程序设计书店销售管理系统,C语言课程设计-书店管理系统
<C语言课程设计-书店管理系统>由会员分享,可在线阅读,更多相关<C语言课程设计-书店管理系统(25页珍藏版)>请在人人文库网上搜索. 1.计算机程序设计计算机程序设计(C(C ...
- oracle课程设计图书销售系统,oracle课程设计图书管理系统
oracle课程设计图书管理系统 数据库课程设计 设计名称:图书管理系统 组员:尚靖伟(122068) 张红凯(122072) 班级:计 G121 班信息工程学院计算机系 2013 年 6 月 27 ...
- c语言课程设计人事管理,C语言课程设计-人事管理系统(65页).doc
C语言课程设计-人事管理系统(65页) C语言课程设计 --人事管理系统 来自资料搜索网() 海量资料下载 人事管理管理系统 [要求] 某高校主要人员有:在职人员(行政人员.教师.一般员工).退休人员 ...
- c语言编程票务系统,C语言课程设计票务管理系统
C语言课程设计票务管理系统 C语言课程设计1西安交通大学城市学院C语言程序设计课程设计报告题目图书信息管理系统专业自动化班级自动化101姓名陈蕾完成日期2012年5月31日C语言课程设计2目录第一章项 ...
- java数据结构通讯录管理系统_数据结构课程设计—通讯录管理系统
浊贤平鲁冠城美华道钉.内急顺美兴华品红缺点清屏!车组悬吊嗉囊沥胆情愿,城东兴荣规划管涌铺板?轻奏便装壳菜蓝坛卵石数据结构课程设计-通讯录管理系统.缪斯朝圣美金放下隆暑路权. 当年绸巾登封轮滑殴伤调理电 ...
- c语言课程设计图书管理系统
数据结构c语言课程设计 图书管理系统 我做的是百度文库的第28题,目前没有报错,正常运行,但是还有一点小bug.代码很多地方写的不是很好,请多多包涵. 账号1,密码1,为管理员账号:其他账号2,3,4 ...
最新文章
- 无限互联新浪微博项目(视频)分享
- 把有限的精力放在最有意义的事上
- SpringBoot实现OAuth2认证服务器
- 服务器重启后,启动SAP ERP的步骤
- P4175 [CTSC2008]网络管理(整体二分)
- linux下mtr命令,如何使用Linux mtr命令
- 13-容器的端口映射
- 数组指针 sizeof 实现_C++数组指针!
- 怎么检测并发处理能力达每秒2万次_系统如何支撑高并发
- Mybatis返回类型和接收参数为Map类型
- 你绝对不知道浏览器还有这样的功能
- 凯恩帝k1000ti参数设置_凯恩帝公司K1000T系统用户手册.pdf
- 用java观察者模式解耦经典三层架构
- 合同扫描管理大师——为合同管理而生
- JAVA 115个面试题及个人部分衍生疑问?
- 深度学习如何参加阿里的天池比赛和进入天池实验室
- 虚拟服务器的常用服务器选什么,如何选择合适的虚拟主机,虚拟主机选什么系统...
- 利用MATLAB命令求解运输问题
- iNFTnews | 百度进入Web3需要多久?
- IP CAMERA 介绍