C课程设计简单的工资管理系统的设计和实现Word格式.docx
《C课程设计简单的工资管理系统的设计和实现Word格式.docx》由会员分享,可在线阅读,更多相关《C课程设计简单的工资管理系统的设计和实现Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
;
工资管理;
排序;
查询;
删除;
修改;
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<
没有找到该员工,请检查你的输入!
system("
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)<
setw(8)<
YG[i].GETID()<
setw(6)<
YG[i].GETDepartment()<
YG[i].GETBaseSalary()<
YG[i].GETReward()<
setw(10)<
YG[i].GETTelephoneSubsidies()
<
setiosflags(ios:
YG[i].GETRoomCharge()<
setiosflags(ios:
YG[i].GETUtilities()<
YG[i].GETShouldPay()<
YG[i].GETPaid()<
endl;
}
();
保存成功!
}
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);
case3:
TypeAllDepartment(NumOfDepartment,DP);
case4:
SortBySalary(NumOfDepartment,NumOfPeople,DP,YG);
TypeAllPeople(NumOfPeople,YG);
SortByID(NumOfDepartment,NumOfPeople,DP,YG);
break;
case5:
Modify_Salary(NumOfDepartment,NumOfPeople,DP,YG);
case6:
Delete(NumOfDepartment,NumOfPeople,DP,YG);
case7:
Search(NumOfDepartment,NumOfPeople,DP,YG);
case8:
ChangeALL(NumOfDepartment,NumOfPeople,DP,YG);
case9:
SaveToFile(NumOfDepartment,NumOfPeople,DP,YG);
case0:
end_face();
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<
iostream>
fstream>
iomanip>
string>
algorithm>
#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;
i<
Num_D;
i++)
if(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++;
读取完成!
............................................."
endl<
菜单选项"
1.创建工资档案"
2.每人的应发工资、实发工资"
3.部门的应发工资、实发工资"
4.工资的排序"
5.修改工资信息"
6.删除工资信息"
7.查找工资信息"
8.某条件下对工资的变动"
9.工资信息保存在文本文件"
0.退出"
..............................................."
请输入你的选择:
intchoose;
do{cin>
choose;
}while(choose<
0||choose>
9);
returnchoose;
for(i=0;
if(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++;
继续添加?
(y和Y或n):
"
c;
if(c=='
y'
||c=='
Y'
)InsertNEW(Num_D,Num_P,DP,YG);
ETName()<
<
ETName()
DP[i].GETNumOfPeople()
DP[i].GETShouldPay_all()
DP[i].GETPaid_all()<
ETID()==n)break;
ETID())
INDEX;
cout<
YG[i].GETName()<
YG[i].GETTelephoneSubsidies()<
system("
return;
ETID())
ETID();
ETName();
ETDepartment();
ETBaseSalary();
ETReward();
ETTelephoneSubsidies();
ETRoomCharge();
ETUtilities();
ETShouldPay();
ETPaid();
本工资2.奖金3.电话补助4.月房租5.水电费\n"
cin>
k;
请输入新值:
switch(k)
case1:
cin>
BaseSalary;
case2:
Reward;
case3:
TelephoneSubsidies;
case4:
RoomCharge;
case5:
Utilities;
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());
ET(ID,Name,Department,BaseSalary,Reward,TelephoneSubsidies,RoomCharge,Utilities,t_s,t_p);
ETName()<