C课程设计简单的工资管理系统的设计和实现.docx
《C课程设计简单的工资管理系统的设计和实现.docx》由会员分享,可在线阅读,更多相关《C课程设计简单的工资管理系统的设计和实现.docx(15页珍藏版)》请在冰豆网上搜索。
C课程设计简单的工资管理系统的设计和实现
怀化学院计算机系
《高级语言程序设计课程设计》报告书
简单的工资管理系统的设计和实现
专业:
计算机科学与技术
学生姓名:
***
学号:
年级专业及班级:
指导老师及职称:
湖南·怀化
提交日期:
2010年12月
简单的工资管理系统的设计和实现
学生:
指导老师:
摘要:
本程序主要是为了训练的自己的基本编程能力,了解信息管理系统的开发流程,熟悉C++语言的各种基本操作。
本程序涉及结构体、单链表、文件等方面的知识。
通过本程序的训练,能使我们对C++语言的操作有一个更深刻的了解,掌握实现对员工工资的管理,使我们能运用平时学到的东西来处理身边的事情,为进一步开发出高质量的管理系统打下坚实的基础。
许多过去有人工处理的繁杂事物开始交付计算机来完成。
员工工资管理系统可以说是每个企事业单位的得力助手,它利用计算机对员工工资进行统一管理,实现员工工资发放工资及单位工资管理等工作流程的系统化、规范化和自动化,提高单位的运作效率。
因此,工资管理系统对企事业单位起着越来越重要的作用。
关键词:
;工资管理;排序;查询;删除;修改;C++;
1前言
C++程序语言设计是一门程序设计语言,本次课程设计是主要运用C++程序语言来实现的,通过此次的设计我了解了C++的类和对象,调用库函数、引用变量,函数等的处理,还有就是文件的读入与读出,
本次程序设计的目的是简单的工资管理系统的设计和实现,从键盘输入:
编号、姓名、部门、基本工资、奖金、电话补助、月房租、水电费,统计每人的应发工资、实发工资,统计各部门的应发工资、实发工资,实现员工工资发放工资及单位工资管理等工作流程的系统化、规范化和自动化,提高单位的运作效率。
在此次的课程设计中除了主要是用C++程序语言完成以外,还运用函数调用文件的读入与读出,
还有将一些数据进行排序、删除、修改、查询等基本的算法。
字符串和数值的输入分别采用了函数来实现,在函数中完成输入数据任务,并对数据进行条件判断。
通过这次课程设计我觉得对于C++的运用更深一层了。
2.算法分析
3.实现方法
采用C++语言来完成
采用color函数对控制台颜色进行控制。
其主要功能由以下代码实现
1)用类定义员工基本信息
classYuanGong
{intID;ETDepartment()==str)
{
YG[j].SET(YG[j].GETID(),YG[j].GETName(),YG[j].GETDepartment(),\
YG[j].GETBaseSalary()+sub_BaseSalary,\
YG[j].GETReward()+sub_Reward,\
YG[j].GETTelephoneSubsidies()+sub_TelephoneSubsidies,\
YG[j].GETRoomCharge()+sub_RoomCharge,\
YG[j].GETUtilities()+sub_Utilities,\
YG[j].GETShouldPay()+sub_BaseSalary+sub_Reward+sub_TelephoneSubsidies,
YG[j].GETPaid()+sub_RoomCharge+sub_Utilities);
4)修改部门数据
DP[i].SET(DP[i].GETName(),DP[i].GETNumOfPeople(),DP[i].GETShouldPay_all()+sub_BaseSalary+sub_Reward+sub_TelephoneSubsidies,DP[i].GETPaid_all()+sub_RoomCharge+sub_Utilities);
}
cout<<"修改成功!
!
!
\n";
system("pause");
return;
};
5)删除员工信息
voidDelete(int&Num_D,int&Num_P,DEPARTMENT*DP,YuanGong*YG)
{
intn,i,j,k;
system("cls");
cout<<"请输入需要删除的员工编号:
";
cin>>n;
ETID()==n)break;
}
if(i==Num_P){cerr<<"没有找到该员工,请检查你的输入!
!
!
\n";system("pause");return;};
ETName()==YG[i].GETDepartment())
{
ETNumOfPeople()==1)
{
ET(DP[j].GETName(),DP[j].GETNumOfPeople()-1,DP[j].GETShouldPay_all()-YG[i].GETShouldPay(),DP[j].GETPaid_all()-YG[i].GETPaid());
}
ETName()<<
setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<<:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<}
}
();
cout<<"保存成功!
!
!
\n";
system("pause");
}
8)主函数main()执行
intmain()
{
intNumOfPeople=0;
intNumOfDepartment=0;
DEPARTMENT*DP=newDEPARTMENT[D];
YuanGong*YG=newYuanGong[P];
welcome();
ReadFile(NumOfDepartment,NumOfPeople,DP,YG);
do{
switch(Select())
{
case1:
InsertNEW(NumOfDepartment,NumOfPeople,DP,YG);break;
case2:
TypeAllPeople(NumOfPeople,YG);break;
case3:
TypeAllDepartment(NumOfDepartment,DP);break;
case4:
SortBySalary(NumOfDepartment,NumOfPeople,DP,YG);TypeAllPeople(NumOfPeople,YG);SortByID(NumOfDepartment,NumOfPeople,DP,YG);break;
case5:
Modify_Salary(NumOfDepartment,NumOfPeople,DP,YG);break;
case6:
Delete(NumOfDepartment,NumOfPeople,DP,YG);break;
case7:
Search(NumOfDepartment,NumOfPeople,DP,YG);break;
case8:
ChangeALL(NumOfDepartment,NumOfPeople,DP,YG);break;
case9:
SaveToFile(NumOfDepartment,NumOfPeople,DP,YG);break;
case0:
end_face();break;
}
4.调试问题
数据在输出时因为数据输入存在问题,没有把员工的工资信息全部统计出来。
显示如下:
经修改后显示全部相关信息,正确信息如下:
5.系统的使用说明书
.功能:
完成员工资料、记录的常用操作,对员工的相关资料及记录进行管理。
使用方法:
当用户运行程序时,主函数会循环调用目录函数提示用户选择想要的操作,直到用户输入0退出程序,每次显示目录都会进行清屏操作,保存界面的简单化主界面。
1).创建工资档案
当用户选择操作1键盘输入个人记录时会提示用户输入员工的各项信息,循环输入直到用户在编号输入时输入0,返回主界面。
在输入的时候,如果用户输入不合法的信息会提示用户并要求其重新输入该项信息。
2).显示所有员工应发工资和实发工资
当系统内已经有信息并且用户选择操作2的时候,系统会显示所有员工的应发工资和实发工资,如果没有员工记录会提示相关信息
3).统计各部门应发工资和实发工资
当用户输入3要求查询部门信息时,系统会显示个部门的应发工资和实发工资,如果还没有部门信息会提示相关提示消息
4).按工资排序
当用户输入4要求对员工工资排序时,系统会提供两种排序方式:
工资的升序排序,当无员工信息时会显示相关信息
5).修改工资信息
当用要求修改删除添加员工信息并输入5时,会提示用户输入员工编号,如果有此员工就显示此员工的信息。
会提示用户选择所要修改的选项。
然后输入序号键入新值。
6).删除工资信息
当用户输入6时,进行删除工资功能。
按提示输入员工编号删除。
7).查找工资信息
当用户输入7时,进行查找功能,输入编号如果找到则显示出此编号员工的相关信息,否则提示相关消息
8).工资的变动
当用户输入8时,显示“输入修改数据的部门”,按提示输入部门,然后输入要修改的选项
9).保存所有资料到文件
当用户需要对所操作的信息进行存档操作时选择9。
10).退出系统
当用户输入0进行退出系统
6.结论
课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。
随着科学的发展和社会的进步,许多过去有人工处理的繁杂事物开始交付计算机来完成。
员工工资管理系统可以说是每个企事业单位的得力助手,它利用计算机对员工工资进行统一管理,实现员工工资发放工资及单位工资管理等工作流程的系统化、规范化和自动化,提高单位的运作效率。
参考文献
[1]谭浩强.C++程序设计,--北京:
清华大学出版社,
[2]伍良俊.VisualC++课程设计与系统开发案例,--北京:
清华大学出版社,
致谢
本报告是在老师的悉心指导和热情关怀下完成的,在此谨向姚老师致以诚挚的谢意,祝老师工作顺利,身体健康。
附录
#include
#include
#include
#include<>
#include
#include
#defineINDEX"姓名编号部门基本工资奖金电话补助月房租水电费应付已付\n"
usingnamespacestd;
constintP=100;
constintD=50;
classDEPARTMENT;
ET(ID,name,Department,BaseSalary,Reward,TelephoneSubsidies,RoomCharge,Utilities,BaseSalary+Reward+TelephoneSubsidies,RoomCharge+Utilities);
for(i=0;iif(Department==DP[i].GETName())break;
ET(Department,DP[i].GETNumOfPeople()+1,DP[i].GETShouldPay_all()+BaseSalary+Reward+TelephoneSubsidies,DP[i].GETPaid_all()+RoomCharge+Utilities);
if(i==Num_D)Num_D++;
}
();
cout<<"读取完成!
!
!
\n";
............................................."<cout<<"菜单选项"<cout<<"1.创建工资档案"<cout<<"2.每人的应发工资、实发工资"<cout<<"3.部门的应发工资、实发工资"<cout<<"4.工资的排序"<cout<<"5.修改工资信息"<cout<<"6.删除工资信息"<cout<<"7.查找工资信息"<cout<<"8.某条件下对工资的变动"<cout<<"9.工资信息保存在文本文件"<cout<<"0.退出"<cout<<"..............................................."<cout<<"请输入你的选择:
";
intchoose;
do{cin>>choose;}while(choose<0||choose>9);
returnchoose;
}
ET(ID,name,Department,BaseSalary,Reward,TelephoneSubsidies,RoomCharge,Utilities,BaseSalary+Reward+TelephoneSubsidies,RoomCharge+Utilities);
for(i=0;iif(Department==DP[i].GETName())break;
ET(Department,DP[i].GETNumOfPeople()+1,DP[i].GETShouldPay_all()+BaseSalary+Reward+TelephoneSubsidies,DP[i].GETPaid_all()+RoomCharge+Utilities);
if(i==Num_D)Num_D++;
cout<<"继续添加?
(y和Y或n):
";
cin>>c;
if(c=='y'||c=='Y')InsertNEW(Num_D,Num_P,DP,YG);
}
ETName()<<
setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<<:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<}
system("pause");
}
ETName()
<:
left)<<:
left)<<:
left)<}
system("pause");
}
ETID()==n)break;
}
if(i==Num_P){cerr<<"没有找到该员工,请检查你的输入!
!
!
\n";system("pause");return;};
ETName()==YG[i].GETDepartment())
{
ETNumOfPeople()==1)
{
ET(DP[j].GETName(),DP[j].GETNumOfPeople()-1,DP[j].GETShouldPay_all()-YG[i].GETShouldPay(),DP[j].GETPaid_all()-YG[i].GETPaid());
}
ETID())
{
cout<cout<:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<system("pause");
return;
}
}
ETID())
{
ETName()<<
setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<setiosflags(ios:
:
left)<ETID();ETName();ETDepartment();ETBaseSalary();ETReward();ETTelephoneSubsidies();ETRoomCharge();ETUtilities();ETShouldPay();ETPaid();
本工资2.奖金3.电话补助4.月房租5.水电费\n";
cin>>k;
cout<<"请输入新值:
\n";
switch(k)
{
case1:
cin>>BaseSalary;break;
case2:
cin>>Reward;break;
case3:
cin>>TelephoneSubsidies;break;
case4:
cin>>RoomCharge;break;
case5:
cin>>Utilities;break;
}
t_s=BaseSalary+Reward+TelephoneSubsidies;t_p=RoomCharge+Utilities;
ETName()==Department)
{DP[j].SET(DP[j].GETName(),DP[j].GETNumOfPeople(),DP[j].GETShouldPay_all()+t_s-YG[i].GETShouldPay(),DP[j].GETPaid_all()+t_p-YG[i].GETPaid());break;};
ET(ID,Name,Department,BaseSalary,Reward,TelephoneSubsidies,RoomCharge,Utilities,t_s,t_p);
cout<<"修改成功!
!
!
\n";
system("pause");
return;
}
}
ETName()<<
setiosflags(ios:
:
left)<