C课程设计简单的工资管理系统的设计和实现.doc
怀 化 学 院 计 算 机 系高级语言程序设计课程设计报告书 简单的工资管理系统的设计和实现 专 业: 计算机科学与技术 学生姓名: * 学 号: 年级专业及班级: 指导老师及职称: 湖南怀化提交日期:2010年12月 简单的工资管理系统的设计和实现学 生:指导老师:摘 要:本程序主要是为了训练的自己的基本编程能力,了解信息管理系统的开发流程,熟悉C+语言的各种基本操作。本程序涉及结构体、单链表、文件等方面的知识。通过本程序的训练,能使我们对C+语言的操作有一个更深刻的了解,掌握实现对员工工资的管理,使我们能运用平时学到的东西来处理身边的事情,为进一步开发出高质量的管理系统打下坚实的基础。许多过去有人工处理的繁杂事物开始交付计算机来完成。员工工资管理系统可以说是每个企事业单位的得力助手,它利用计算机对员工工资进行统一管理,实现员工工资发放工资及单位工资管理等工作流程的系统化、规范化和自动化,提高单位的运作效率。因此,工资管理系统对企事业单位起着越来越重要的作用。关键词:;工资管理;排序;查询;删除;修改;C+; 1 前言 C+程序语言设计是一门程序设计语言,本次课程设计是主要运用C+程序语言来实现的,通过此次的设计我了解了C+的类和对象,调用库函数、引用变量,函数等的处理,还有就是文件的读入与读出,本次程序设计的目的是简单的工资管理系统的设计和实现, 从键盘输入:编号、姓名、部门、基本工资、奖金、电话补助、月房租、水电费,统计每人的应发工资、实发工资, 统计各部门的应发工资、实发工资, 实现员工工资发放工资及单位工资管理等工作流程的系统化、规范化和自动化,提高单位的运作效率。在此次的课程设计中除了主要是用C+程序语言完成以外,还运用函数调用文件的读入与读出,还有将一些数据进行排序、删除、修改、查询等基本的算法。字符串和数值的输入分别采用了函数来实现,在函数中完成输入数据任务,并对数据进行条件判断。通过这次课程设计我觉得对于C+的运用更深一层了。2 算法分析否否是是开始以可读写的方式打开一个数据文件将此文件的内容读出并存入一个新的单链表中调用Select()菜单函数进入主界面进入switch函数输入09中的一数值,选择相应操作输入是否为0?判断键值,调用相应函数,完成相应功能是否已对修改进行了存盘?调用SaveToFile ()函数进行写数据文件操作行写数据文件操作结束 3实现方法 采用C+语言来完成 采用color函数对控制台颜色进行控制。其主要功能由以下代码实现 1)用类定义员工基本信息 class YuanGongint ID;ETDepartment()=str)YGj.SET( YGj.GETID() , YGj.GETName(),YGj.GETDepartment(),YGj.GETBaseSalary()+sub_BaseSalary,YGj.GETReward()+sub_Reward,YGj.GETTelephoneSubsidies()+sub_TelephoneSubsidies,YGj.GETRoomCharge()+sub_RoomCharge,YGj.GETUtilities()+sub_Utilities,YGj.GETShouldPay()+sub_BaseSalary+sub_Reward+sub_TelephoneSubsidies,YGj.GETPaid()+sub_RoomCharge+sub_Utilities);4)修改部门数据DPi.SET(DPi.GETName(),DPi.GETNumOfPeople(),DPi.GETShouldPay_all()+sub_BaseSalary+sub_Reward+sub_TelephoneSubsidies,DPi.GETPaid_all()+sub_RoomCharge+sub_Utilities);cout<<"修改成功!n"system("pause");return ;5)删除员工信息void Delete(int &Num_D,int &Num_P,DEPARTMENT *DP,YuanGong *YG)int n,i,j,k;system("cls");cout<<"请输入需要删除的员工编号:"cin>>n;ETID()=n) break;if(i=Num_P) cerr<<"没有找到该员工,请检查你的输入!n"system("pause");return;ETName()=YGi.GETDepartment()ETNumOfPeople()=1)ET( DPj.GETName() , DPj.GETNumOfPeople()-1 , DPj.GETShouldPay_all()-YGi.GETShouldPay() , DPj.GETPaid_all()-YGi.GETPaid() );ETName()<<setiosflags(ios:left)<<setw(8)<<YGi.GETID()<<setiosflags(ios:left)<<setw(6)<<YGi.GETDepartment()<<setiosflags(ios:left)<<setw(8)<<YGi.GETBaseSalary()<<setiosflags(ios:left)<<setw(8)<<YGi.GETReward()<<setiosflags(ios:left)<<setw(10)<<YGi.GETTelephoneSubsidies()<<setiosflags(ios:left)<<setw(8)<<YGi.GETRoomCharge()<< setiosflags(ios:left)<<setw(8)<<YGi.GETUtilities()<<setiosflags(ios:left)<<setw(6)<<YGi.GETShouldPay()<<setiosflags(ios:left)<<setw(6)<<YGi.GETPaid()<<endl;();cout<<"保存成功!n"system("pause");8)主函数main()执行int main()int NumOfPeople=0;int NumOfDepartment=0;DEPARTMENT *DP=new DEPARTMENTD;YuanGong *YG=new YuanGong P ;welcome();ReadFile(NumOfDepartment,NumOfPeople,DP,YG);doswitch(Select()case 1: InsertNEW(NumOfDepartment,NumOfPeople,DP,YG);break;case 2: TypeAllPeople(NumOfPeople,YG);break;case 3: TypeAllDepartment(NumOfDepartment,DP);break;case 4: SortBySalary(NumOfDepartment,NumOfPeople,DP,YG);TypeAllPeople(NumOfPeople,YG);SortByID(NumOfDepartment,NumOfPeople,DP,YG); break;case 5: Modify_Salary(NumOfDepartment,NumOfPeople,DP,YG);break;case 6: Delete(NumOfDepartment,NumOfPeople,DP,YG);break;case 7: Search(NumOfDepartment,NumOfPeople,DP,YG);break;case 8: ChangeALL(NumOfDepartment,NumOfPeople,DP,YG);break;case 9: SaveToFile(NumOfDepartment,NumOfPeople,DP,YG);break;case 0: 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 伍良俊.Visual C+课程设计与系统开发案例,-北京:清华大学出版社, 致 谢本报告是在老师的悉心指导和热情关怀下完成的,在此谨向姚老师致以诚挚的谢意,祝老师工作顺利,身体健康 。 附录#include<iostream>#include<fstream>#include<iomanip>#include<>#include<string>#include<algorithm>#define INDEX "姓名 编号 部门 基本工资 奖金 电话补助 月房租 水电费 应付 已付n"using namespace std;const int P=100;const int D=50;class DEPARTMENT;ET(ID,name,Department,BaseSalary,Reward,TelephoneSubsidies,RoomCharge,Utilities, BaseSalary+Reward+TelephoneSubsidies ,RoomCharge+Utilities);for(i=0;i<Num_D;i+)if(Department=DPi.GETName() break;ET(Department,DPi.GETNumOfPeople()+1,DPi.GETShouldPay_all()+BaseSalary+Reward+TelephoneSubsidies,DPi.GETPaid_all()+RoomCharge+Utilities);if(i=Num_D) Num_D+;();cout<<"读取完成!n"."<<endl<<endl;cout<<" 菜单选项 "<<endl;cout<<" 1.创建工资档案 "<<endl;cout<<" 2.每人的应发工资、实发工资"<<endl;cout<<" 3.部门的应发工资、实发工资 "<<endl;cout<<" 4.工资的排序 "<<endl; cout<<" 5.修改工资信息 "<<endl;cout<<" 6.删除工资信息 "<<endl;cout<<" 7.查找工资信息 "<<endl;cout<<" 8.某条件下对工资的变动 "<<endl; cout<<" 9.工资信息保存在文本文件 "<<endl;cout<<" 0.退 出 "<<endl<<endl;cout<<" ."<<endl<<endl;cout<<" 请输入你的选择:"int choose;docin>>choose;while(choose<0|choose>9);return choose;ET(ID,name,Department,BaseSalary,Reward,TelephoneSubsidies,RoomCharge,Utilities, BaseSalary+Reward+TelephoneSubsidies ,RoomCharge+Utilities);for(i=0;i<Num_D;i+)if(Department=DPi.GETName() break;ET(Department,DPi.GETNumOfPeople()+1,DPi.GETShouldPay_all()+BaseSalary+Reward+TelephoneSubsidies,DPi.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)<<setw(8)<<YGi.GETID()<<setiosflags(ios:left)<<setw(6)<<YGi.GETDepartment()<<setiosflags(ios:left)<<setw(8)<<YGi.GETBaseSalary()<<setiosflags(ios:left)<<setw(8)<<YGi.GETReward()<<setiosflags(ios:left)<<setw(10)<<YGi.GETTelephoneSubsidies()<<setiosflags(ios:left)<<setw(8)<<YGi.GETRoomCharge()<<setiosflags(ios:left)<<setw(8)<<YGi.GETUtilities()<<setiosflags(ios:left)<<setw(6)<<YGi.GETShouldPay()<<setiosflags(ios:left)<<setw(6)<<YGi.GETPaid()<<endl;system("pause");ETName()<<setiosflags(ios:left)<<setw(6)<<DPi.GETNumOfPeople()<<setiosflags(ios:left)<<setw(6)<<DPi.GETShouldPay_all()<<setiosflags(ios:left)<<setw(6)<<DPi.GETPaid_all()<<endl;system("pause");ETID()=n) break;if(i=Num_P) cerr<<"没有找到该员工,请检查你的输入!n"system("pause");return;ETName()=YGi.GETDepartment()ETNumOfPeople()=1)ET( DPj.GETName() , DPj.GETNumOfPeople()-1 , DPj.GETShouldPay_all()-YGi.GETShouldPay() , DPj.GETPaid_all()-YGi.GETPaid() );ETID()cout<<INDEX;cout<<setiosflags(ios:left)<<setw(6)<<YGi.GETName()<<setiosflags(ios:left)<<setw(8)<<YGi.GETID()<<setiosflags(ios:left)<<setw(6)<<YGi.GETDepartment()<<setiosflags(ios:left)<<setw(8)<<YGi.GETBaseSalary()<<setiosflags(ios:left)<<setw(8)<<YGi.GETReward()<<setiosflags(ios:left)<<setw(10)<<YGi.GETTelephoneSubsidies()<<setiosflags(ios:left)<<setw(8)<<YGi.GETRoomCharge()<<setiosflags(ios:left)<<setw(8)<<YGi.GETUtilities()<<setiosflags(ios:left)<<setw(6)<<YGi.GETShouldPay()<<setiosflags(ios:left)<<setw(6)<<YGi.GETPaid()<<endl;system("pause");return ;ETID()ETName()<<setiosflags(ios:left)<<setw(8)<<YGi.GETID()<<setiosflags(ios:left)<<setw(6)<<YGi.GETDepartment()<<setiosflags(ios:left)<<setw(8)<<YGi.GETBaseSalary()<<setiosflags(ios:left)<<setw(8)<<YGi.GETReward()<<setiosflags(ios:left)<<setw(10)<<YGi.GETTelephoneSubsidies()<<setiosflags(ios:left)<<setw(8)<<YGi.GETRoomCharge()<<setiosflags(ios:left)<<setw(8)<<YGi.GETUtilities()<<setiosflags(ios:left)<<setw(6)<<YGi.GETShouldPay()<<setiosflags(ios:left)<<setw(6)<<YGi.GETPaid()<<endl;ETID();ETName();ETDepartment();ETBaseSalary();ETReward();ETTelephoneSubsidies();ETRoomCharge();ETUtilities();ETShouldPay();ETPaid();本工资 2.奖金 3.电话补助 4.月房租 5.水电费n"cin>>k;cout<<"请输入新值:n"switch(k)case 1:cin>> BaseSalary;break;case 2:cin>> Reward;break;case 3:cin>> TelephoneSubsidies;break;case 4:cin>> RoomCharge;break;case 5:cin>> Utilities;break;t_s=BaseSalary+Reward+TelephoneSubsidies;t_p=RoomCharge+Utilities;ETName()=Department)DPj.SET( DPj.GETName() , DPj.GETNumOfPeople() , DPj.GETShouldPay_all()+t_s-YGi.GETShouldPay(), DPj.GETPaid_all()+t_p-YGi.GETPaid() );break;ET(ID,Name,Department,BaseSalary,Reward,TelephoneSubsidies,RoomCharge,Utilities,t_s,t_p);cout<<"修改成功!n"system("pause");return ;ETName()<<setiosflags(ios:left)<<setw(8)<<YGi.GETID()<<setiosflags(ios:left)<<setw(6)<<YGi.GETDepartment()<<setiosflags(ios:left)<<setw(8)<<YGi.GETBaseSalary()<<setiosflags(ios:left)<<setw(8)<<YGi.GETReward()<<setiosflags(ios:left)<<setw(10)<<YGi.GETTelephoneSubsidies()<<setiosflags(ios:left)<<setw(8)<<YGi.GETRoomCharge()<< setiosflags(ios:left)<<setw(8)<<YGi.GETUtilities()<<setiosflags(ios:left)<<setw(6)<<YGi.GETShouldPay()<<setiosflags(ios:left)<<setw(6)<<YGi.GETPaid()<<endl;();cout<<"保存成功!n"system("pause");ETName()<<" "cout<<endl;cin>>str;for(i=0;i<Num_D;i+)if(DPi.GETName()=str)本工资 2.奖金 3.电话补助 4.月房租 5.水电费_b"cin>>k;ETDepartment()=str)YGj.SET( YGj.GETID() , YGj.GETName(),YGj.GETDepartment(),YGj.GETBaseSalary()+sub_BaseSalary,YGj.GETReward()+sub_Reward,YGj.GETTelephoneSubsidies()+sub_TelephoneSubsidies,YGj.GETRoomCharge()+sub_RoomCharge,YGj.GETUtilities()+sub_Utilities,YGj.GETShouldPay()+sub_BaseSalary+sub_Reward+sub_TelephoneSubsidies,YGj.GETPaid()+sub_RoomCharge+sub_Utilities);ET(DPi.GETName(),DPi.GETNumOfPeople(),DPi.GETShouldPay_all()+sub_BaseSalary+sub_Reward+sub_TelephoneSubsidies,DPi.GETPaid_all()+sub_RoomCharge+sub_Utilities);cout<<"修改成功!n"system("pause");return ;/没有找到部门信息if(i=Num_D) cerr<<"输入的部门没有找到,请检查输入信息!n"system("pause");return;cerr<<"运行出错!n"return ;int main()int NumOfPeople=0;int NumOfDepartment=0;DEPARTMENT *DP=new DEPARTMENTD;YuanGong *YG=new YuanGong P ;welcome();ReadFile(NumOfDepartment,NumOfPeople,DP,YG);doswitch(Select()case 1: InsertNEW(NumOfDepartment,NumOfPeople,DP,YG);break;case 2: TypeAllPeople(NumOfPeople,YG);break;case 3: TypeAllDepartment(NumOfDepartment,DP);break;case 4: SortBySalary(NumOfDepartment,NumOfPeople,DP,YG);TypeAllPeople(NumOfPeople,YG);SortByID(NumOfDepartment,NumOfPeople,DP,YG); break;case 5: Modify_Salary(NumOfDepartment,NumOfPeople,DP,YG);break;case 6: Delete(NumOfDepartment,NumOfPeople,DP,YG);break;case 7: Search(NumOfDepartment,NumOfPeople,DP,YG);break;case 8: ChangeALL(NumOfDepartment,NumOfPeople,DP,YG);break;case 9: SaveToFile(NumOfDepartment,NumOfPeople,DP,YG);break;case 0: end_face();break;while(1);return 0;