C课程设计-简单的工资管理系统的设计和实现.doc_第1页
C课程设计-简单的工资管理系统的设计和实现.doc_第2页
C课程设计-简单的工资管理系统的设计和实现.doc_第3页
C课程设计-简单的工资管理系统的设计和实现.doc_第4页
C课程设计-简单的工资管理系统的设计和实现.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

怀 化 学 院 计 算 机 系高级语言程序设计课程设计报告书 简单的工资管理系统的设计和实现 专 业: 计算机科学与技术 学生姓名: * 学 号: 年级专业及班级: 指导老师及职称: 湖南怀化提交日期:2010年12月 简单的工资管理系统的设计和实现学 生:指导老师:摘 要:本程序主要是为了训练的自己的基本编程能力,了解信息管理系统的开发流程,熟悉C+语言的各种基本操作。本程序涉及结构体、单链表、文件等方面的知识。通过本程序的训练,能使我们对C+语言的操作有一个更深刻的了解,掌握实现对员工工资的管理,使我们能运用平时学到的东西来处理身边的事情,为进一步开发出高质量的管理系统打下坚实的基础。许多过去有人工处理的繁杂事物开始交付计算机来完成。员工工资管理系统可以说是每个企事业单位的得力助手,它利用计算机对员工工资进行统一管理,实现员工工资发放工资及单位工资管理等工作流程的系统化、规范化和自动化,提高单位的运作效率。因此,工资管理系统对企事业单位起着越来越重要的作用。关键词:;工资管理;排序;查询;删除;修改;C+; 1 前言 C+程序语言设计是一门程序设计语言,本次课程设计是主要运用C+程序语言来实现的,通过此次的设计我了解了C+的类和对象,调用库函数、引用变量,函数等的处理,还有就是文件的读入与读出,本次程序设计的目的是简单的工资管理系统的设计和实现, 从键盘输入:编号、姓名、部门、基本工资、奖金、电话补助、月房租、水电费,统计每人的应发工资、实发工资, 统计各部门的应发工资、实发工资, 实现员工工资发放工资及单位工资管理等工作流程的系统化、规范化和自动化,提高单位的运作效率。在此次的课程设计中除了主要是用C+程序语言完成以外,还运用函数调用文件的读入与读出,还有将一些数据进行排序、删除、修改、查询等基本的算法。字符串和数值的输入分别采用了函数来实现,在函数中完成输入数据任务,并对数据进行条件判断。通过这次课程设计我觉得对于C+的运用更深一层了。2 算法分析否否是是开始以可读写的方式打开一个数据文件将此文件的内容读出并存入一个新的单链表中调用Select()菜单函数进入主界面进入switch函数输入09中的一数值,选择相应操作输入是否为0?判断键值,调用相应函数,完成相应功能是否已对修改进行了存盘?调用SaveToFile ()函数进行写数据文件操作行写数据文件操作结束 3实现方法 采用C+语言来完成 采用color函数对控制台颜色进行控制。其主要功能由以下代码实现 1)用类定义员工基本信息 class YuanGongint ID;/编号string Name;/姓名string Department;/部门float BaseSalary;/基本工资float Reward;/奖金float TelephoneSubsidies;/电话补助float RoomCharge;/房租float Utilities;/水电费float ShouldPay;/应付float Paid;/已付,定义为 房租+水电费 1)从键盘输入,插入新员工信息void InsertNEW(int &Num_D,int &Num_P,DEPARTMENT *DP,YuanGong *YG)system(cls);int i;char c;int ID;float BaseSalary;float Reward;/奖金float TelephoneSubsidies;/电话补助float RoomCharge;/房租float Utilities;/水电费3)对部门每个人修改数据for(j=0;jNum_P;j+)if(YGj.GETDepartment()=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);coutn;/检查输入信息,并获取员工信息储存位置for(i=0;iNum_P;i+)if(YGi.GETID()=n) break;if(i=Num_P) cerr没有找到该员工,请检查你的输入!n;system(pause);return;/找到员工信息,开始删除/找到员工所在部门位置for(j=0;jNum_D;j+)/找到其所在部门if(DPj.GETName()=YGi.GETDepartment()/判断该部门是否有且仅有其一人,是则删除其部门if(DPj.GETNumOfPeople()=1)/删除部门for(k=j;jNum_D-1;j+)DPk=DPk+1;Num_D-;else /在部门中去掉其信息DPj.SET( DPj.GETName() , DPj.GETNumOfPeople()-1 , DPj.GETShouldPay_all()-YGi.GETShouldPay() , DPj.GETPaid_all()-YGi.GETPaid() );/删除该员工for(k=i;kNum_P-1;k+)YGk=YGk+1;Num_P-;cout删除成功!n;system(pause);return;cout删除失败!n;system(pause);6)保存数据到文件void SaveToFile(int Num_D,int Num_P,DEPARTMENT *DP,YuanGong *YG)system(cls);ofstream fout(pay.txt);/没有员工信息if(Num_P=0) fout没有员工信息!n;else 7)找到并保存信息到文件int i;foutINDEX;for(i=0;iNum_P;i+)foutsetiosflags(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;fout.close();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+程序设计,-北京:清华大学出版社,2004.6 2 伍良俊.Visual C+课程设计与系统开发案例,-北京:清华大学出版社,2002.11 致 谢本报告是在老师的悉心指导和热情关怀下完成的,在此谨向姚老师致以诚挚的谢意,祝老师工作顺利,身体健康 。 附录#include#include#include#include#include#include#define INDEX 姓名 编号 部门 基本工资 奖金 电话补助 月房租 水电费 应付 已付nusing namespace std;const int P=100;const int D=50;class DEPARTMENT;/员工类class YuanGongint ID;/编号string Name;/姓名string Department;/部门float BaseSalary;/基本工资float Reward;/奖金float TelephoneSubsidies;/电话补助float RoomCharge;/房租float Utilities;/水电费float ShouldPay;/应付float Paid;/已付,定义为 房租+水电费 public:/构造函数,用以初始化YuanGong()ID=0;BaseSalary=0;Reward=0;TelephoneSubsidies=0;RoomCharge=0;Utilities=0;ShouldPay=0;Paid=0;/设置对象的值void SET(int id,string name,string department,float B,float Re,float T,float Room,float U,float S,float P)ID=id;Name=name;Department=department;BaseSalary=B;Reward=Re;TelephoneSubsidies=T;RoomCharge=Room;Utilities=U;ShouldPay=S;Paid=P;/返回各数据成员的值int GETID()return ID;string GETName()return Name;/姓名string GETDepartment()return Department;float GETBaseSalary()return BaseSalary;/基本工资float GETReward()return Reward;/奖金float GETTelephoneSubsidies()return TelephoneSubsidies;/电话补助float GETRoomCharge()return RoomCharge;/房租float GETUtilities()return Utilities;/水电费float GETShouldPay()return ShouldPay;/应付float GETPaid()return Paid;/部门类class DEPARTMENTstring Name;/部门名;int NumOfPeople;/部门人数float ShouldPay_all;/部门应付float Paid_all; /部门已付public:/构造函数,初始化数据DEPARTMENT()NumOfPeople=0;ShouldPay_all=0;Paid_all=0;/设置设置对象的值void SET(string name,int n,float s,float p)Name=name;NumOfPeople=n;ShouldPay_all=s;Paid_all=p;/返回各数据成员的值string GETName()return Name;int GETNumOfPeople()return NumOfPeople;/部门人数float GETShouldPay_all()return ShouldPay_all;/部门应付float GETPaid_all()return Paid_all; /部门已付;/比较函数,按不同要求排序bool Comp_ID(YuanGong a,YuanGong b)/比较两个员工的编号return a.GETID()0.01;void SortBySalary(int Num_D,int Num_P,DEPARTMENT *DP,YuanGong *YG)/调用库函数,按工资排序sort(YG,YG+Num_P,Comp_Salary);void SortByID(int Num_D,int Num_P,DEPARTMENT *DP,YuanGong *YG)/调用库函数,按编号排序sort(YG,YG+Num_P,Comp_ID);/*主要功能函数*/在系统开始时检查是否有数据文件,并选择读取void ReadFile(int &Num_D,int &Num_P,DEPARTMENT *DP,YuanGong *YG)system(cls);char c;/判断是否有数据文件if( (_access(pay.txt,0)=-1) ) return;coutc;if(c=n|c=N) system(cls);return ;int i;int ID;float BaseSalary;float Reward;/奖金float TelephoneSubsidies;/电话补助float RoomCharge;/房租float Utilities;/水电费float ShouldPay;/应付float Paid;/已付,定义为 房租+水电费 string name,Department,str;/开始读取文件,添加数据ifstream fin(pay.txt);for(i=0;istr;while(finnameIDDepartmentBaseSalaryRewardTelephoneSubsidiesRoomChargeUtilitiesShouldPayPaid)/添加员工信息YGNum_P+.SET(ID,name,Department,BaseSalary,Reward,TelephoneSubsidies,RoomCharge,Utilities, BaseSalary+Reward+TelephoneSubsidies ,RoomCharge+Utilities);for(i=0;iNum_D;i+)if(Department=DPi.GETName() break;/添加部门信息DPi.SET(Department,DPi.GETNumOfPeople()+1,DPi.GETShouldPay_all()+BaseSalary+Reward+TelephoneSubsidies,DPi.GETPaid_all()+RoomCharge+Utilities);if(i=Num_D) Num_D+;fin.close();cout读取完成!n;/对文件中读取的数据按员工编号排序SortByID(Num_D,Num_P,DP,YG);system(pause);system(cls);/功能选择int Select()system(cls);cout .endlendl;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.退 出 endlendl;cout .endlendl;coutchoose;while(choose9);return choose;/欢迎界面void welcome()coutnnnnn;cout *nnendl;cout 欢迎来到工资管理系统的设计和实现 nnendl;cout 制作者: 学号: nnendl;cout 计算机科学与技术一班 nnendl;cout *nnnnnnn;system(pause);/结束界面void end_face()/结束界面cout nnnnnnnttt谢谢您的使用!nnnnnn;system(pause);exit(0);/从键盘输入,插入新员工信息void InsertNEW(int &Num_D,int &Num_P,DEPARTMENT *DP,YuanGong *YG)system(cls);int i;char c;int ID;float BaseSalary;float Reward;/奖金float TelephoneSubsidies;/电话补助float RoomCharge;/房租float Utilities;/水电费string name,Department;coutID;coutname;coutDepartment;coutBaseSalary;coutReward;coutTelephoneSubsidies;coutRoomCharge;coutUtilities;/添加员工信息YGNum_P+.SET(ID,name,Department,BaseSalary,Reward,TelephoneSubsidies,RoomCharge,Utilities, BaseSalary+Reward+TelephoneSubsidies ,RoomCharge+Utilities);for(i=0;iNum_D;i+)if(Department=DPi.GETName() break;/添加部门信息DPi.SET(Department,DPi.GETNumOfPeople()+1,DPi.GETShouldPay_all()+BaseSalary+Reward+TelephoneSubsidies,DPi.GETPaid_all()+RoomCharge+Utilities);if(i=Num_D) Num_D+;coutc;if(c=y|c=Y) InsertNEW(Num_D,Num_P,DP,YG);/显示所有员工信息void TypeAllPeople(int Num_P,YuanGong *YG)system(cls);/检查是否有数据if(Num_P=0) cout没有员工信息!n;system(pause);return;int i;/输出员工信息coutINDEX;for(i=0;iNum_P;i+)coutsetiosflags(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);/显示各部门信息void TypeAllDepartment(int Num_D,DEPARTMENT *DP)system(cls);/检查部门信息if(Num_D=0) cout没有部门信息!n;system(pause);return;/输出部门信息int i;cout部门 人数 应付 已付n;for(i=0;iNum_D;i+)coutsetiosflags(ios:left)setw(6)DPi.GETName()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);/按编号删除员工信息void Delete(int &Num_D,int &Num_P,DEPARTMENT *DP,YuanGong *YG)int n,i,j,k;system(cls);coutn;/检查输入信息,并获取员工信息储存位置for(i=0;iNum_P;i+)if(YGi.GETID()=n) break;if(i=Num_P) cerr没有找到该员工,请检查你的输入!n;system(pause);return;/找到员工信息,开始删除/找到员工所在部门位置for(j=0;jNum_D;j+)/找到其所在部门if(DPj.GETName()=YGi.GETDepartment()/判断该部门是否有且仅有其一人,是则删除其部门if(DPj.GETNumOfPeople()=1)/删除部门for(k=j;jNum_D-1;j+)DPk=DPk+1;Num_D-;else /在部门中去掉其信息DPj.SET( DPj.GETName() , DPj.GETNumOfPeople()-1 , DPj.GETShouldPay_all()-YGi.GETShouldPay() , DPj.GETPaid_all()-YGi.GETPaid() );/删除该员工for(k=i;kNum_P-1;k+)YGk=YGk+1;Num_P-;cout删除成功!n;system(pause);return;cout删除失败!n;system(pause);/按编号查找员工信息void Search(int Num_D,int Num_P,DEPARTMENT *DP,YuanGong *YG)/判断员工信息if(Num_P=0) cerr没有员工!;return;int i,n;coutn;/检查输入信息,并处理for(i=0;iNum_P;i+)/找到该员工if(n=YGi.GETID()coutINDEX;coutsetiosflags(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 ;/没有找到cout没有找到该员工,请检查输入信息!n;system(pause);/修改员工信息void Modify_Salary(int Num_D,int Num_P,DEPARTMENT *DP,YuanGong *YG)/检查员工信息if(Num_P=0) cerr没有员工!;return;int i,j,n,k;int ID;/编号string Name;/姓名string Department;/部门float BaseSalary;/基本工资float Reward;/奖金float TelephoneSubsidies;/电话补助float RoomCharge;/房租float Utilities;/水电费float ShouldPay;/应付float Paid;/已付float t_s,t_p;coutn;/检查输入信息,并获取器储存位置for(i=0;iNum_P;i+)/找到该员工if(n=YGi.GETID()/显示当前信息cout需要修改的员工当前信息n;coutINDEX;coutsetiosflags(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;/临时变量,保存当前信息ID=YGi.GETID();/编号Name=YGi.GETName();/姓名Department=YGi.GETDepartment();/部门BaseSalary=YGi.GETBaseSalary();/基本工资Reward=YGi.GETReward();/奖金TelephoneSubsidies=YGi.GETTelephoneSubsidies();/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论