版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计设计题目职工工资管理系统学生姓名学号班级指导教师目录一、前言 1HYPERLINK******************************************************************************\n";cout<<"<<欢迎您使用职工工资管理系统>>\n";cout<<"******************************************************************************\n\n";}//作者的信息和提示voideditor(){cout<<"\n\t\t\t本程序制作者:\n\n\t\t\tIdon'tknow\n\n\t\t\tQQ:895026504";cout<<"\n\n\t\t\tMadeByVC6.0++\n\n\t\t\t2008年9月30日\n\n\t\t\t按<Enter>键进入登陆界面!!";cout<<"\n\n\t\t\t如果需要对原来的信息进行操作,则先选择0读取文件信息\n"<<endl;}Information::~Information(){cout<<"******************************************************************************\n";cout<<"<<谢谢您使用职工工资管理系统>>\n";cout<<"******************************************************************************\n";}//建立链表信息epployee*Information::creat(void){//定义一个指向structepployee的结构体指针函数*creat()用来录入职工信息.charch[N];n=0;//用来存放职工姓名p1=p2=(epployee*)malloc(LEN);//调用malloc()函数用来开辟一个新的存储单元cout<<"<<请建立职工信息表,在姓名处键以#结束输入!>>"<<endl;cout<<"姓名:";cin>>ch;head=NULL;//给指针head赋初值while(strcmp(ch,"#")!=0)//调用字符比较函数strcmp()用来判断是否继续输入{p1=(epployee*)malloc(LEN);//调用malloc()函数用来开辟一个新的存储单元strcpy(p1->name,ch);//将循环结构前面输入的姓名复制到结构体名为p1的数组name中cout<<"性别:";cin>>p1->sex;cout<<"编号:";cin>>p1->id;while((p1->id)<0||(p1->id)>100000)//判断输入的编号是否有效(100000个){cout<<"对不起,您的输入错误!请重新输入(>0<1000000):";cin>>p1->id;}cout<<"基本工资:";cin>>p1->paid[0];while((p1->paid[0])<0||(p1->paid[0])>100000)//判断输入的分数是否有效(>=0<=100000){cout<<"对不起,您的输入错误!请重新输入(>0<100000):";cin>>p1->paid[0];}cout<<"加班工资:";cin>>p1->paid[1];while((p1->paid[1])<0||(p1->paid[1])>100000)//判断输入的分数是否有效(>=0<=100000){cout<<"对不起,您的输入错误!请重新输入(>0<100000):";cin>>p1->paid[1];}cout<<"其他奖金:";cin>>p1->paid[2];while((p1->paid[2])<0||(p1->paid[2])>100000)//判断输入的分数是否有效(>=0<=100000){cout<<"对不起,您的输入错误!请重新输入(>0<100000):";cin>>p1->paid[2];}p1->total=p1->paid[0]+p1->paid[1]+p1->paid[2];//计算总额if(n==0)head=p1;//如果是输入第一组职工信息就将指针p1赋给指针headelsep2->next=p1;//否则将p1赋给p2所指结构体的next指针p2=p1;//将指针p1赋给指针p2n++;//将职工人数n的值加1cout<<"\n姓名:";cin>>ch;//将输入的姓名存放到字符数组ch中}p2->next=NULL;//将p2所指结构体的next指针重新赋空值return(head);//将输入的第一组职工信息返回}//定义output()函数将职工的信息从头指针所指内容开始输出voidInformation::output(epployee*head){//system("cls");if(head==NULL)cout<<"这是一个空表,请先输入职工信息!\n";else{cout<<"\n";cout<<"*职工工资信息表*\n";cout<<"\n";cout<<"|编号||姓名||性别||基本工资||加班工资||其他奖金||总额|\n";cout<<"\n";p1=head;//将头指针赋给pdo{cout<<setw(6)<<p1->id<<setw(14)<<p1->name<<setw(11)<<p1->sex<<setw(11)<<p1->paid[0]<<setw(15)<<p1->paid[1]<<setw(13)<<p1->paid[2]<<setw(13)<<p1->total<<endl;cout<<"\n";p1=p1->next;//将下一组职工信息的next指针赋给p}while(p1!=NULL);//若指针p非空则继续,目的是把所有的职工信息都传给指针p然后输出.}}//统计职工人数的函数intInformation::count(structepployee*head)//定义函数count()统计职工总数{if(head==NULL)return(0);//若指针head为空返回值为0elsereturn(1+count(head->next));//函数的递归调用}//添加职工的成绩的函数epployee*Information::insert(epployee*head)//插入新结点定义一个指向structepployee的结构体指针函数*insert()用来添加职工信息.{//system("cls");cout<<"\t<<请输入新增职工成绩信息>>\n"<<endl;p1=(epployee*)malloc(LEN);//使p1指向插入的新结点cout<<"编号:";cin>>p1->id;while((p1->id)<0||(p1->id)>100000){cout<<"对不起,您的输入错误!请重新输入(>0<100000):";cin>>p1->id;//将输入的编号存放到p1所指结构体的数组id中}cout<<"姓名:";cin>>p1->name;//将输入的姓名存放到结构体名为p1的数组name中cout<<"性别:";cin>>p1->sex;cout<<"基本工资:";cin>>p1->paid[0];while((p1->paid[0])<0||(p1->paid[0])>100000){cout<<"对不起,您的输入错误!请重新输入(>0<100000):";cin>>p1->paid[0];//将输入的基本工资存放到p1所指结构体的数组paid中}cout<<"加班工资:";cin>>p1->paid[1];while((p1->paid[1])<0||(p1->paid[1])>100000){cout<<"对不起,您的输入错误!请重新输入(>0<100000):";cin>>p1->paid[1];//将输入的加班工资存放到p1所指结构体的数组paid中}cout<<"其他奖金:";cin>>p1->paid[2];while((p1->paid[2])<0||(p1->paid[2])>100000){cout<<"对不起,您的输入错误!请重新输入(>0<100000):";cin>>p1->paid[2];//将输入的其他奖金存放到p1所指结构体的数组paid中}p1->total=p1->paid[0]+p1->paid[1]+p1->paid[2];//计算总分p2=head;//将头指针赋给p2if(head==NULL)//若没调用次函数以前的头指针head为空{head=p1;p1->next=NULL;}//则将p1赋给头指针head并将p1所指结构体成员指针next赋空值else{while((p1->id>p2->id)&&(p2->next!=NULL)){p3=p2;//p3指向原p2指向的结点p2=p2->next;}//p2后移一个结点if(p1->id<=p2->id){if(head==p2){p1->next=head;head=p1;}//插入到第一个结点之前else{p3->next=p1;p1->next=p2;}//插入到p3所指结点之后}else{p2->next=p1;p1->next=NULL;}//插入到尾结点之后}n++;//将职工人数加1cout<<"\t<<你输入的职工信息已经成功插入>>"<<endl;return(head);}//删除职工信息epployee*Information::cancel(epployee*head,longid)//定义一个指向structepployee的结构体指针函数*delete()用来删除考生信息.{system("cls");if(head==NULL)//若调用次函数以前的头指针head为空{return(head);}else{p1=head;//否则将头指针赋给p1while(id!=p1->id&&p1->next!=NULL)//寻找要删除的结点当p1所指的职工编号不是输入的职工编号并且p1所指的next指针不为空{p2=p1;p1=p1->next;}//p2指向原p1指向的结点p1后移一个结点if(id==p1->id)//如果输入的职工编号是p1所指的职工编号//结点找到后删除{if(p1==head)head=p1->next;//如果head指针和p1指针相等则将下一个结点赋给指针headelsep2->next=p1->next;//否则将p1所指结点赋给p2所指结点将要删除的职工信息跳过去cout<<"删除编号为"<<id<<"的职工\n";n--;//将职工人数减1}return(head);//将头指针返回}}/**************************修改职工数据**************************/epployee*Information::modify(epployee*head,longid){//system("cls");cout<<"\t<<请输入须修改的职工工资信息>>\n"<<endl;p1=(epployee*)malloc(LEN);//使p1指向输入的结点p1=head;//否则将头指针赋给p1while(id!=p1->id&&p1->next!=NULL)//寻找结点当p1所指的职工编号不是输入的职工编号并且p1所指的next指针不为空{p1=p1->next;//p2指向原p1指向的结点p1后移一个结点}if(id==p1->id)//如果要查找的职工编号是p1所指的职工编号{cout<<"你需要修改的职工信息如下:\n";cout<<"\n";cout<<"|编号||姓名||性别||基本工资||加班工资||其他奖金||总额|\n";cout<<"\n";cout<<setw(6)<<p1->id<<setw(10)<<p1->name<<setw(10)<<p1->sex<<setw(10)<<p1->paid[0]<<setw(15)<<p1->paid[1]<<setw(12)<<p1->paid[2]<<setw(12)<<p1->total<<endl;cout<<"\n";cout<<"编号:";cin>>p1->id;while((p1->id)<0||(p1->id)>100000){cout<<"对不起,您的输入错误!请重新输入(>0<100000):";cin>>p1->id;//将输入的编号存放到p1所指结构体的数组id中}cout<<"姓名:";cin>>p1->name;//将输入的姓名存放到结构体名为p1的数组name中cout<<"性别:";cin>>p1->sex;cout<<"基本工资:";cin>>p1->paid[0];while((p1->paid[0])<0||(p1->paid[0])>100000){cout<<"对不起,您的输入错误!请重新输入(>0<100000):";cin>>p1->paid[0];//将输入的基本工资存放到p1所指结构体的数组paid中}cout<<"加班工资:";cin>>p1->paid[1];while((p1->paid[1])<0||(p1->paid[1])>100000){cout<<"对不起,您的输入错误!请重新输入(>0<100000):";cin>>p1->paid[1];//将输入的加班工资存放到p1所指结构体的数组paid中}cout<<"其他奖金:";cin>>p1->paid[2];while((p1->paid[2])<0||(p1->paid[2])>100000){cout<<"对不起,您的输入错误!请重新输入(>0<100000):";cin>>p1->paid[2];//将输入的其他奖金存放到p1所指结构体的数组paid中}p1->total=p1->paid[0]+p1->paid[1]+p1->paid[2];//计算总分}elsecout<<"需要修改的信息中没有编号为"<<id<<"的职工.\n\n";//没有想要修改的结点信息getchar();return(head);}//查找职工信息epployee*Information::find(epployee*head,longid)//定义一个指向structepployee的结构体指针函数*find()用来查找职工信息.{//system("cls");if(head==NULL)//若调用次函数以前的头指针head为空{cout<<"这是一个空表,请先输入职工信息!\n";return(head);}else{p1=head;//否则将头指针赋给p1while(id!=p1->id&&p1->next!=NULL)//寻找结点当p1所指的职工编号不是输入的职工编号并且p1所指的next指针不为空{p1=p1->next;//p2指向原p1指向的结点p1后移一个结点}if(id==p1->id)//如果要查找的职工编号是p1所指的职工编号{cout<<"\n";cout<<"|编号||姓名||性别||基本工资||加班工资||其他奖金||总额|\n";cout<<"\n";cout<<setw(6)<<p1->id<<setw(10)<<p1->name<<setw(10)<<p1->sex<<setw(10)<<p1->paid[0]<<setw(14)<<p1->paid[1]<<setw(12)<<p1->paid[2]<<setw(12)<<p1->total<<endl;cout<<"\n";}elsecout<<"信息中没有编号为"<<id<<"的职工.\n";//结点没找到return(head);}}//定义sort()函数将职工的工资总额从大到小排列并输出voidInformation::sort(epployee*head){//system("cls");inti,k,m=0,j;epployee*p[N];//定义一个指向structepployee的结构体指针数组pif(head!=NULL)//如果头指针是空则继续{m=count(head);cout<<"\n";cout<<"*职工工资统计表*\n";cout<<"\n";cout<<"|编号||姓名||性别||基本工资||加班工资||其他奖金||总额||名次|\n";cout<<"\n";p1=head;for(k=0;k<m;k++){p[k]=p1;p1=p1->next;}for(k=0;k<m-1;k++)//选择排序法for(j=k+1;j<m;j++)if(p[k]->total<p[j]->total){p2=p[k];p[k]=p[j];p[j]=p2;}//从大到小排列的指针for(i=0;i<m;i++){cout<<setw(6)<<p[i]->id<<setw(8)<<p[i]->name<<setw(9)<<p[i]->sex<<setw(10)<<p[i]->paid[0]<<setw(10)<<p[i]->paid[1]<<setw(15)<<p[i]->paid[2]<<setw(11)<<p[i]->total<<setw(10)<<i+1<<endl;cout<<"\n";}}}//求各工资的平均值的函数voidInformation::average(epployee*head){ intk,m; floatarg1=0,arg2=0,arg3=0; if(head==NULL)//如果头指针是空则继续 { cout<<"这是一个空表,请先输入职工信息!\n"; } else { m=count(head); p1=head; for(k=0;k<m;k++) { arg1+=p1->paid[0]; arg2+=p1->paid[1]; arg3+=p1->paid[2]; p1=p1->next; } arg1/=m;arg2/=m;arg3/=m; cout<<"*各项工资的平均值*\n"; cout<<"\n"; cout<<"\t\t基本工资的平均值:"<<setw(4)<<arg1<<"\n"<<"\t\t加班工资的平均值:"<<setw(4)<<arg2 <<"\n"<<"\t\t奖金的平均值:"<<setw(4)<<arg3<<"\n"; cout<<"\n"; }}//保存函数.voidInformation::save(epployee*head){//system("cls");ofstreamout("data",ios::out);out<<count(head)<<endl;while(head!=NULL){out<<head->name<<"\t"<<head->id<<"\t"<<"\t"<<head->sex<<"\t"<<head->paid[0]<<"\t"<<head->paid[1]<<"\t"<<head->paid[2]<<"\t"<<head->total<<endl;head=head->next;}}//读取文件的信息epployee*Information::Read(){//system("cls");inti=0;p1=p2=(epployee*)malloc(LEN);head=NULL;ifstreamin("data",ios::out);in>>i;if(i==0){cout<<"data文件中的数据为空,请先输入数据!"<<endl;return0;}else{cout<<"\n原文件已保存的信息如下:\n";cout<<"………………"<<endl;cout<<"|姓名||编号||性别||基本工资||加班工资||其他奖金||总额|\n";cout<<"………………"<<endl;for(;i>0;i--){ p1=(epployee*)malloc(LEN);in>>>>st.id>>st.sex>>st.paid[0]>>st.paid[1]>>st.paid[2]>>st.total;strcpy(p1->name,);p1->id=st.id;strcpy(p1->sex,st.sex);p1->paid[0]=st.paid[0];p1->paid[1]=st.paid[1];p1->paid[2]=st.paid[2];p1->total=st.total;if(n==0)head=p1;//如果是输入第一组职工信息就将指针p1赋给指针headelsep2->next=p1;//否则将p1赋给p2所指结构体的next指针p2=p1;//将指针p1赋给指针p2n++;//将n的值加1//显示读入数据cout<<""<<p1->name<<"\t"<<p1->id<<"\t"<<p1->sex<<"\t"<<p1->paid[0]<<"\t"<<p1->paid[1]<<"\t"<<p1->paid[2]<<"\t"<<p1->total<<endl;cout<<"………………"<<endl;}cout<<"数据已经成功读取完毕!\n\n"<<endl;p2->next=NULL;return(head);}}//菜单voidMenu(){Informationperson;epployee*head=NULL;intchoice;longi;do{cout<<"\t※※※※※※※※※※※※※※※※※※※※※※※※※※※"<<endl; cout<<"\t※※"<<endl; cout<<"\t※~v~__欢迎进入职工成绩统计管理__~v~※"<<endl; cout<<"\t※※"<<endl; cout<<"\t※※※※※※※※※※※※※※※※※※※※※※※※※※※"<<endl; cout<<"\t"<<endl;cout<<"\t相关操作选项"<<endl; cout<<"\t"<<endl; cout<<"\t※※※※※※※※※※※※※※※※※※※※※※※※※※※"<<endl; cout<<"\t※~v~0.读取文件信息~v~※"<<endl;cout<<"\t※※"<<endl; cout<<"\t※~v~1.职工数据输入~v~※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※~v~2.显示职工工资~v~※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※~v~3.排序统计工资~v~※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※~v~4.查找职工工资~v~※"<<endl;cout<<"\t※※"<<endl; cout<<"\t※~v~5.增加职工工资~v~※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※~v~6.删除职工工资~v~※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※~v~7.修改职工信息~v~※"<<endl;cout<<"\t※※"<<endl; cout<<"\t※~v~8.成功保存信息~v~※"<<endl;cout<<"\t※※"<<endl; cout<<"\t※~v~9.安全退出系统~v~※"<<endl;cout<<"\t※※"<<endl; cout<<"\t※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"<<endl;cout<<"请输入您的选择(0--9):";cin>>choice;while(choice<0||choice>9){cout<<"对不起,您的输入错误!请输入您的选择(0--9):";cin>>choice;}switch(choice){case0:head=person.Read();break;case1:head=person.creat();break;case2:person.output(head);break;case3:person.sort(head);person.average(head);cout<<"参加工作的职工人数为:"<<person.count(head)<<"人\n\n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度停车场场地租赁服务协议8篇
- 二零二四年度新型材料门头广告牌安装与品牌宣传合作协议3篇
- 二零二四年度智慧社区物业安保保洁定制服务合同3篇
- 2025版全新一致行动人协议示例下载2篇
- 二零二五年度草原生态虫害控制与草原保护合同4篇
- 2025年中国锦纶66耐热弹性纬纱市场调查研究报告
- 2025年中国机车夹克衣市场调查研究报告
- 2025至2031年中国陆用柴油发电机组行业投资前景及策略咨询研究报告
- 2025年度床上三件套酒店客房升级改造合同4篇
- 2025至2030年中国羽毛粉数据监测研究报告
- 2025年人教五四新版八年级物理上册阶段测试试卷含答案
- 不同茶叶的冲泡方法
- 光伏发电并网申办具体流程
- 建筑劳务专业分包合同范本(2025年)
- 企业融资报告特斯拉成功案例分享
- 五年(2020-2024)高考地理真题分类汇编(全国版)专题12区域发展解析版
- 《阻燃材料与技术》课件 第8讲 阻燃木质材料
- 低空经济的社会接受度与伦理问题分析
- GB/T 4732.1-2024压力容器分析设计第1部分:通用要求
- 河北省保定市竞秀区2023-2024学年七年级下学期期末生物学试题(解析版)
- 2024年江苏省劳动合同条例
评论
0/150
提交评论