C++课程设计 职工工资管理系统(报告内含程序完整清单)
【设计】职工工资管理系统C语言程序课程设计报告
【关键字】设计课程设计报告课程名称C语言程序设计课题名称职工工资管理系统专业机械电子班级1101班学号0121姓名王贝贝指导教师肖伟平何宏郭芳2012年12 月19 日湖南工程学院课程设计任务书课程名称C语言程序设计课题职工工资管理系统专业班级机械电子1101班学生姓名王贝贝学号0121指导老师肖伟平何宏郭芳审批任务书下达日期2012 年12 月19日任务完成日期2012年12月29日一、设计内容与设计要求1.设计内容:职工工资管理系统设计涉及的知识点:①掌握并熟练运用C语言的基本数据类型与各种表达式,程序的流程控制语句;②掌握数组的基本概念。
熟练掌握一维数组、二维数组的应用、掌握字符数组与字符串的关系以及字符串的简单处理。
③掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。
④掌握结构体的概念,结构体类型的定义,结构体变量的定义和初始化,结构体成员的表示,结构体变量的赋值含义,结构体与指针、函数的关系。
⑤掌握文件、文件类型指针的基本概念,熟练掌握文件的打开与关闭以及文件的建立、读写等有关操作。
2.设计要求:1)用C语言实现系统;利用结构体数组实现职工工资的数据结构设计;系统的各个功能模块要求用函数的形式实现;应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观;各项显示数据均要求以表格的形式输出;在各功能子模块中应设计相应的二级菜单。
2) 建立一个职工工资信息数据库,文件名为zggzk.txt,并从该文件中读取数据;3) 职工工资管理系统应能提供以下功能:(1)主菜单界面设计。
通过提示用户输入一个数字选项,调用相应的功能函数。
(2)显示功能:完成全部职工记录的显示,显示时按表格的形式,且应有表头;(3)计算功能:完成全部职工的应发工资、税款和实发工资的计算并显示;计算方法是:①应发工资=基本工资+奖金②税款的计算方法是:(基本工资+奖金)<=3500时,税款为0;3500<(基本工资+奖金)<=5000时,税款=(基本工资+奖金-3500)*0.03(基本工资+奖金)>5000时,税款=(基本工资+奖金-3500)*0.1-105③实发工资=应发工资-扣款-税款(4)修改功能:能分别按指定职工工号和按指定姓名修改一个职工的基本工资、奖金和扣款中的一项或多项数据,修改后重新计算职工的应发工资、税款和实发工资,并重新排序和显示;(5)查询功能:要求能分别按工号和按姓名查询一条记录并以表格形式显示;(6)追加功能:追加一条或多条新职工记录,要求在追加过程中有相应的提示信息,完成追加后能重新计算和显示;(7)删除功能:要求可按指定的工号和指定的姓名两种定位方式删除职工的记录。
C语言 课程设计 教师工资管理系统(职工工资管理系统)
课程设计教师工资管理系统运行平台:VC6.0(其他平台未经测试,不一定保证有效)制作者:弓箭中南大学信息科学与工程学院源代码如下:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>#define LEN sizeof(struct teacher)struct teacher{int num;char name[20];char sex[20];char workplace[50];char address[50];long phone;double de_salary;double de_jintie;double de_shenghuobutie;double yingfa_salary;double cost_phone;double cost_water_elec;double cost_rent;double cost_tax;double cost_weisheng;double cost_gongjijin;double cost_all;double shifa_salary;struct teacher *next;};/***********************************读取函数************************************/ struct teacher *load(){struct teacher *p1,*p2,*head;FILE *fp;int i=1;if((fp=fopen("save","rb"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();return (NULL);}else{head=NULL;p1=(struct teacher *)malloc(LEN);while (fread(p1,LEN-4,1,fp)==1){if(i==1){head=p1;p2=p1;i=2;}else{p2->next=p1;p2=p2->next;}p1=(struct teacher *)malloc(LEN);}p2->next=NULL;free(p1);fclose(fp);return(head);}}/**********************************欢迎菜单函数*************************************/ void welcome(){printf("\n\n\n >>>>>欢迎使用教师工资管理系统Beta1.2<<<<<\n");printf(" *******************************************************\n");printf(" * C语言课程设计教师工资管理系统*\n");printf(" * 班级:电气信息类1001班学号:0909100119 *\n");printf(" * 姓名:弓箭*\n");printf(" *******************************************************\n");printf("\n\n 按下任意键进入系统...");getch();system("cls");}/**********************************制作人员名单*************************************/void list(){system("cls");printf("\n\n\n >>>>>版权所有侵权必究<<<<<\n");printf("*******************************************************************************\n");printf("* 学校(College): 中南大学Central South University *\n");printf("* 软件名称(Software):教师工资管理系统Teacher's Salary Managing System *\n");printf("* 版本号(Edition): Beta1.2 *\n");printf("* 制作人(Producer):弓箭James *\n");printf("* 所在班级(Class):电气信息类1001班Electric Information 1001 *\n");printf("* 所在学院(Institute):信息科学与工程学院Information Engineering Institute*\n");printf("*******************************************************************************\n");printf(" >>>>>ILLEGAL COPY BANNED<<<<<\n");printf("\n\n 按下任意键返回主菜单...");getch();}/***********************************菜单函数*****************************************/int menu(){int i;printf("\n\n\n >>>>>欢迎使用教师工资管理系统Beta1.2<<<<<\n");printf(" *******************************************************\n");printf(" * 1.输入教师信息*\n");printf(" * 2.插入教师信息*\n");printf(" * 3.修改教师信息*\n");printf(" * 4.删除教师信息*\n");printf(" * 5.浏览教师信息*\n");printf(" * 6.显示制作人员名单*\n");printf(" * 7.退出系统*\n");printf(" *******************************************************\n");printf(" 请输入你想要的操作:");scanf("%d",&i);getchar();return i;}/***********************************插入函数*****************************************/void input(){struct teacher *head,*p1,*p2,*p3,*px;int i,t;FILE *fp;char k,n='n',num[30],name[20];p1=p2=p3=px=(struct teacher *)malloc(LEN);if((head=load())!=NULL){do{n='n';printf(" 请输入要插入的教师信息:\n");printf(" ------------------------------\n");printf(" 请输入教工号:");gets(num);px->num=atoi(num);printf(" 请输入姓名:");gets(px->name);printf(" 请输入性别:");gets(px->sex);printf(" 请输入单位名称:");gets(px->workplace);printf(" 请输入家庭住址:");gets(px->address);printf(" 请输入联系电话:");gets(num);px->phone=atoi(num);printf(" 请输入基本工资:");gets(num);px->de_salary=atof(num);printf(" 请输入津贴:");gets(num);px->de_jintie=atof(num);printf(" 请输入生活补贴:");gets(num);px->de_shenghuobutie=atof(num);printf(" 请输入电话费:");gets(num);px->cost_phone=atof(num);printf(" 请输入水电费:");gets(num);px->cost_water_elec=atof(num);printf(" 请输入房租:");gets(num);px->cost_rent=atof(num);printf(" 请输入个人所得税:");gets(num);px->cost_tax=atof(num);printf(" 请输入卫生费:");gets(num);px->cost_weisheng=atof(num);printf(" 请输入公积金:");gets(num);px->cost_gongjijin=atof(num);px->yingfa_salary=px->de_salary+px->de_jintie+px->de_shenghuobutie;px->cost_all=px->cost_phone+px->cost_water_elec+px->cost_rent+px->cost_tax+px->cost_weisheng+px->cost_go ngjijin;px->shifa_salary=px->yingfa_salary-px->cost_all;printf(" 数据输入完毕,按下任意键继续...");getch();system("cls");printf("\n\n\n >>>>>>>>>>> 插入教师信息<<<<<<<<<<<\n");printf(" *******************************************************\n");printf(" * 1.输入教师号*\n");printf(" * 2.输入姓名*\n");printf(" * 3.返回上级菜单*\n");printf(" *******************************************************\n");printf(" 请选择插入方式:");scanf("%d",&i);getchar();while (i<1||i>3){printf(" 输入有误!请重新输入:");scanf("%d",&i);getchar();}switch(i){case 1:printf(" 请输入要插入在哪条数据后面:");scanf("%d",&t);getchar();p1=head;while (p1->num!=t){if (p1->next!=NULL){ p1=p1->next;}else{printf(" 查找不到相关数据!\n");break;}}if (p1->num==t){printf("-----------------------------要插入的信息如下:--------------------------------\n");printf("教工号姓名性别单位名称家庭住址联系电话\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",px->num,px->name,px->sex,px->workplace,px->address,px ->phone);printf("电话费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf\n",px->cost_phone,px->cost_water_ele c,px->cost_rent,px->cost_tax,px->cost_weisheng,px->cost_gongjijin,px->cost_all);printf("基本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",px->de_salary,px->de_jintie,px->de_shenghuobutie,px->yingfa_salary,px->shifa_salary);printf("-------------------------------------------------------------------------------\n");printf(" 确定插入吗?(y或n):");scanf("%c",&k);getchar();}if (k=='y'||k=='Y'){if (p1->num==t){if(p1==head)/*如果插入点为头指针*/{p3=p1->next;p1->next=px;px->next=p3;p2=head;}else if(p1->next==NULL)/*如果插入点为末尾指针*/{p3=p1;p1=head;p2=head;while(p1->next!=p3){p1=p1->next;}p1=p1->next;p1->next=px;px->next=NULL;}else{/*如果插入点为中间指针*/p3=p1;p1=head;p2=head;while(p1->next!=p3){p1=p1->next;}p1=p1->next;p3=p1->next;px->next=p3;p1->next=px;}if((fp=fopen("save","wb"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();}else{do{fwrite(p2,LEN-4,1,fp);if(p2->next!=NULL)p2=p2->next;}while(p2->next!=NULL);if(p2!=head)fwrite(p2,LEN-4,1,fp);}fclose(fp);printf(" 插入成功!按下任意键继续...");getch();}}else {printf(" 插入已被取消!按下任意键继续...");getch();}break;case 2:printf(" 请输入要插入的教师姓名:");gets(name);p1=head;while (strcmp((p1->name),name)!=0){if (p1->next!=NULL)p1=p1->next;else{printf(" 查找不到相关数据!\n");break;}}if (strcmp((p1->name),name)==0){printf("-----------------------------要插入的信息如下:--------------------------------\n");printf("教工号姓名性别单位名称家庭住址联系电话\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1 ->phone);printf("电话费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf \n",p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_al l);printf("基本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);printf("-------------------------------------------------------------------------------\n");printf(" 确定插入吗?(y或n):");scanf("%c",&k);getchar();}if (k=='y'||k=='Y'){if (strcmp((p1->name),name)==0){if(p1==head)/*如果插入点为头指针*/{p1->next=px;p2=head;}else if(p1->next==NULL)/*如果插入点为末尾指针*/{p3=p1;p1=head;p2=head;while(p1->next!=p3){p1=p1->next;}p1=p1->next;p1->next=px;px->next=NULL;}else{/*如果插入点为中间指针*/p3=p1;p1=head;p2=head;while(p1->next!=p3){p1=p1->next;}p1=p1->next;p1->next=px;p3=p3->next;px->next=p3;}if((fp=fopen("save","wb"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();}else{do{fwrite(p2,LEN-4,1,fp);if(p2->next!=NULL)p2=p2->next;}while(p2->next!=NULL);if(p2!=head)fwrite(p2,LEN-4,1,fp);}fclose(fp);printf(" 插入成功!按下任意键继续...");getch();}}else {printf(" 插入已被取消!按下任意键继续...");getch();}break;case 3:break;default :break;}if (i!=3){printf("\n 继续插入其他教师的信息吗?(y或n)");scanf("%c",&n);getchar();}}while((n=='y'||n=='Y')&&i!=3);}printf(" 数据插入成功!按下任意键返回主菜单...");getch();getchar();}/***********************************输入函数*****************************************/void insert(){FILE *fp;char m,num[30];struct teacher *p1;p1=(struct teacher *)malloc(LEN);if((fp=fopen("save","ab"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();}else{printf(" 请输入教师信息:\n");do{printf(" ------------------------------\n");printf(" 请输入教工号:");gets(num);p1->num=atoi(num);printf(" 请输入姓名:");gets(p1->name);printf(" 请输入性别:");gets(p1->sex);printf(" 请输入单位名称:");gets(p1->workplace);printf(" 请输入家庭住址:");gets(p1->address);printf(" 请输入联系电话:");gets(num);p1->phone=atoi(num);printf(" 请输入基本工资:");gets(num);p1->de_salary=atof(num);printf(" 请输入津贴:");gets(num);p1->de_jintie=atof(num);printf(" 请输入生活补贴:");gets(num);p1->de_shenghuobutie=atof(num);printf(" 请输入电话费:");gets(num);p1->cost_phone=atof(num);printf(" 请输入水电费:");gets(num);p1->cost_water_elec=atof(num);printf(" 请输入房租:");gets(num);p1->cost_rent=atof(num);printf(" 请输入个人所得税:");gets(num);p1->cost_tax=atof(num);printf(" 请输入卫生费:");gets(num);p1->cost_weisheng=atof(num);printf(" 请输入公积金:");gets(num);p1->cost_gongjijin=atof(num);p1->yingfa_salary=p1->de_salary+p1->de_jintie+p1->de_shenghuobutie;p1->cost_all=p1->cost_phone+p1->cost_water_elec+p1->cost_rent+p1->cost_tax+p1->cost_weisheng+p1->cost_go ngjijin;p1->shifa_salary=p1->yingfa_salary-p1->cost_all;fwrite(p1,LEN-4,1,fp);printf(" 输入下一个?(y或n)");m=getchar();if(m!='y'&&m!='Y'){printf(" 数据保存成功!按下任意键返回主菜单...");getch();}getchar();}while (m=='y'||m=='Y');}fclose(fp);}/***********************************修改函数*****************************************/ void modify(){struct teacher *head,*p1,*p2;int i;FILE *fp;char m='n',n='n',num2[30];p1=head=(struct teacher *)malloc(LEN);if((head=load())!=NULL){do{int num=0;char name[20];p1=head;system("cls");printf("\n\n\n >>>>>>>>>>> 修改教师信息<<<<<<<<<<<\n");printf(" *******************************************************\n");printf(" * 1.输入教师号*\n");printf(" * 2.输入姓名*\n");printf(" * 3.返回上级菜单*\n");printf(" *******************************************************\n");printf(" 请选择修改方式:");scanf("%d",&i);getchar();while (i<1||i>3){printf(" 输入有误!请重新输入:");scanf("%d",&i);getchar();}switch(i){case 1:printf(" 请输入要修改的教师号:");scanf("%d",&num);getchar();while (p1->num!=num){if (p1->next!=NULL)p1=p1->next;else{printf(" 查找不到相关数据!\n");break;}}if (p1->num==num){system("cls");printf("\n\n\n >>>>>欢迎使用教师工资管理系统Beta1.2<<<<<\n");printf("----------------------------------原信息如下:---------------------------------\n");printf("教工号姓名性别单位名称家庭住址联系电话\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1 ->phone);printf("电话费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf\n",p1->cost_phone,p1->cost_water_ele c,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_all);printf("基本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);printf("-------------------------------------------------------------------------------\n");printf(" *******************************************************\n");printf(" * 1.教师号 2.姓名*\n");printf(" * 3.性别 4.单位名称*\n");printf(" * 5.家庭住址 6.联系电话*\n");printf(" * 7.基本工资8.津贴*\n");printf(" * 9.生活补贴10.电话费*\n");printf(" * 11.水电费12.房租*\n");printf(" * 13.所得税14.卫生费*\n");printf(" * 15.公积金*\n");printf(" *******************************************************\n");do{printf(" 请选择要修改的数据:");scanf("%d",&i);getchar();while (i>15||i<1)printf(" 输入有误!请重新输入:");scanf("%d",&i);getchar();}switch(i){case 1:printf(" 请输入新教师号:");gets(num2);p1->num=atoi(num2);break;case 2:printf(" 请输入新姓名:");gets(p1->name);break;case 3:printf(" 请输入新性别:");gets(p1->sex);break;case 4:printf(" 请输入新单位名称:");gets(p1->workplace);break;case 5:printf(" 请输入新家庭住址:");gets(p1->address);break;case 6:printf(" 请输入新联系电话:");gets(num2);p1->phone=atoi(num2);break;case 7:printf(" 请输入新基本工资:");gets(num2);p1->de_salary=atof(num2);break;case 8:printf(" 请输入新津贴:");gets(num2);p1->de_jintie=atof(num2);break;case 9:printf(" 请输入新生活补贴:");gets(num2);p1->de_shenghuobutie=atof(num2);break;case 10:printf(" 请输入新电话费:");gets(num2);p1->cost_phone=atof(num2);break;case 11:printf(" 请输入新水电费:");gets(num2);p1->cost_water_elec=atof(num2);break;case 12:printf(" 请输入新房租:");gets(num2);p1->cost_rent=atof(num2);break;case 13:printf(" 请输入新所得税:");gets(num2);p1->cost_tax=atof(num2);break;case 14:printf(" 请输入新卫生费:");gets(num2);p1->cost_weisheng=atof(num2);break;case 15:printf(" 请输入新公积金:");gets(num2);p1->cost_gongjijin=atof(num2);break;default:break;}p1->yingfa_salary=p1->de_salary+p1->de_jintie+p1->de_shenghuobutie;p1->cost_all=p1->cost_phone+p1->cost_water_elec+p1->cost_rent+p1->cost_tax+p1->cost_weisheng+p1->cost_go ngjijin;p1->shifa_salary=p1->yingfa_salary-p1->cost_all;printf(" 继续修改其他数据吗?(y或n):");scanf("%c",&m);getchar();}while (m=='y'||m=='Y');p2=head;if((fp=fopen("save","wb"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();}elsefwrite(head,LEN-4,1,fp);do{p2=p2->next;fwrite(p2,LEN-4,1,fp);}while(p2->next!=NULL);printf("------------------------------修改后数据如下:---------------------------------\n");printf("教工号姓名性别单位名称家庭住址联系电话\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1 ->phone);printf("电话费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf \n",p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_al l);printf("基本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);printf("-------------------------------------------------------------------------------\n");}fclose(fp);}break;case 2:printf(" 请输入要修改的教师姓名:");gets(name);while (strcmp(p1->name,name)!=0){if (p1->next!=NULL)p1=p1->next;else{printf(" 查找不到相关数据!\n");break;}}if (strcmp(p1->name,name)==0){system("cls");printf("\n\n\n >>>>>欢迎使用教师工资管理系统Beta1.2<<<<<\n");printf("----------------------------------原信息如下:---------------------------------\n");printf("教工号姓名性别单位名称家庭住址联系电话\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1 ->phone);printf("电话费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf \n",p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_al l);printf("基本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);printf("-------------------------------------------------------------------------------\n");printf(" *******************************************************\n");printf(" * 1.教师号 2.姓名*\n");printf(" * 3.性别 4.单位名称*\n");printf(" * 5.家庭住址 6.联系电话*\n");printf(" * 7.基本工资8.津贴*\n");printf(" * 9.生活补贴10.电话费*\n");printf(" * 11.水电费12.房租*\n");printf(" * 13.所得税14.卫生费*\n");printf(" * 15.公积金*\n");printf(" *******************************************************\n");do{printf(" 请选择要修改的数据:");scanf("%d",&i);getchar();while (i>15||i<1){printf(" 输入有误!请重新输入:");scanf("%d",&i);getchar();}switch(i){case 1:printf(" 请输入新教师号:");gets(num2);p1->num=atoi(num2);break;case 2:printf(" 请输入新姓名:");gets(p1->name);break;case 3:printf(" 请输入新性别:");gets(p1->sex);break;case 4:printf(" 请输入新单位名称:");gets(p1->workplace);break;case 5:printf(" 请输入新家庭住址:");gets(p1->address);break;case 6:printf(" 请输入新联系电话:");gets(num2);p1->phone=atoi(num2);break;case 7:printf(" 请输入新基本工资:");gets(num2);p1->de_salary=atof(num2);break;case 8:printf(" 请输入新津贴:");gets(num2);p1->de_jintie=atof(num2);break;case 9:printf(" 请输入新生活补贴:");gets(num2);p1->de_shenghuobutie=atof(num2);break;case 10:printf(" 请输入新电话费:");gets(num2);p1->cost_phone=atof(num2);break;case 11:printf(" 请输入新水电费:");gets(num2);p1->cost_water_elec=atof(num2);break;case 12:printf(" 请输入新房租:");gets(num2);p1->cost_rent=atof(num2);break;case 13:printf(" 请输入新所得税:");gets(num2);p1->cost_tax=atof(num2);break;case 14:printf(" 请输入新卫生费:");gets(num2);p1->cost_weisheng=atof(num2);break;case 15:printf(" 请输入新公积金:");gets(num2);p1->cost_gongjijin=atof(num2);break;default:break;}p1->yingfa_salary=p1->de_salary+p1->de_jintie+p1->de_shenghuobutie;p1->cost_all=p1->cost_phone+p1->cost_water_elec+p1->cost_rent+p1->cost_tax+p1->cost_weisheng+p1->cost_go ngjijin;p1->shifa_salary=p1->yingfa_salary-p1->cost_all;printf(" 继续修改其他数据吗?(y或n):");scanf("%c",&m);getchar();}while (m=='y'||m=='Y');p2=head;if((fp=fopen("save","wb"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();}else{fwrite(head,LEN-4,1,fp);do{p2=p2->next;fwrite(p2,LEN-4,1,fp);}while(p2->next!=NULL);printf("------------------------------修改后数据如下:---------------------------------\n");printf("教工号姓名性别单位名称家庭住址联系电话\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1 ->phone);printf("电话费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf \n",p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_al l);printf("基本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);printf("-------------------------------------------------------------------------------\n");}fclose(fp);}break;case 3:break;default :break;}if (i!=3){printf("\n 继续修改其他教师的信息吗?(y或n)");scanf("%c",&n);}}while((n=='y'||n=='Y')&&i!=3);}}/***********************************删除函数*****************************************/void deletes(){struct teacher *head,*p1,*p2,*p3;int i;char k;FILE *fp;char n='n';p1=p2=p3=(struct teacher *)malloc(LEN);if((head=load())!=NULL){do{int num;char name[20];p1=head;system("cls");printf("\n\n\n >>>>>>>>>>> 删除教师信息<<<<<<<<<<<\n");printf(" *******************************************************\n");printf(" * 1.输入教师号*\n");printf(" * 2.输入姓名*\n");printf(" * 3.返回上级菜单*\n");printf(" *******************************************************\n");printf(" 请选择删除方式:");scanf("%d",&i);getchar();while (i<1||i>3){printf(" 输入有误!请重新输入:");scanf("%d",&i);getchar();}switch(i){case 1:printf(" 请输入要删除的信息的教师号:");scanf("%d",&num);getchar();while (p1->num!=num){if (p1->next!=NULL)p1=p1->next;else{printf(" 查找不到相关数据!\n");break;}}if (p1->num==num){printf("-----------------------------要删除的信息如下:--------------------------------\n");printf("教工号姓名性别单位名称家庭住址联系电话\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1 ->phone);printf("电话费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf\n",p1->cost_phone,p1->cost_water_ele c,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_all);printf("基本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);printf("-------------------------------------------------------------------------------\n");printf(" 确定删除吗?(y或n):");scanf("%c",&k);getchar();}if (k=='y'||k=='Y'){if (p1->num==num){if(p1==head){p1=p1->next;p2=p1;}else if(p1->next==NULL){p3=p1;p1=head;p2=head;while(p1->next!=p3){p1=p1->next;}p1->next=NULL;}else{p2=head;p3=p1;p1=head;while(p1->next!=p3){p1=p1->next;}p3=p3->next;p1->next=p3;}if((fp=fopen("save","wb"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();}else{do{fwrite(p2,LEN-4,1,fp);if(p2->next!=NULL)p2=p2->next;}while(p2->next!=NULL);if(p2!=head)fwrite(p2,LEN-4,1,fp);}fclose(fp);printf(" 删除成功!按下任意键继续...");getch();}}else {printf(" 删除已被取消!按下任意键继续...");getch();}break;case 2:printf(" 请输入要修改的教师姓名:");gets(name);while (strcmp((p1->name),name)!=0){if (p1->next!=NULL)p1=p1->next;else{printf(" 查找不到相关数据!\n");break;}}if (strcmp((p1->name),name)==0){printf("-----------------------------要删除的信息如下:--------------------------------\n");printf("教工号姓名性别单位名称家庭住址联系电话\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1 ->phone);printf("电话费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf \n",p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_al l);printf("基本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);printf("-------------------------------------------------------------------------------\n");printf(" 确定删除吗?(y或n):");scanf("%c",&k);getchar();}if (k=='y'||k=='Y'){if (strcmp((p1->name),name)==0){if(p1==head){p1=p1->next;p2=p1;}else if(p1->next==NULL){p3=p1;p1=head;p2=head;while(p1->next!=p3){p1=p1->next;}p1->next=NULL;}else{p2=head;p3=p1;p1=head;while(p1->next!=p3){p1=p1->next;}p3=p3->next;p1->next=p3;}if((fp=fopen("save","wb"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();}else{do{fwrite(p2,LEN-4,1,fp);if(p2->next!=NULL)p2=p2->next;}while(p2->next!=NULL);if(p2!=head)fwrite(p2,LEN-4,1,fp);}fclose(fp);printf(" 删除成功!按下任意键继续...");getch();}}else {printf(" 删除已被取消!按下任意键继续...");getch();}break;case 3:break;default :break;}if (i!=3){printf("\n 继续删除其他教师的信息吗?(y或n)");scanf("%c",&n);}}while((n=='y'||n=='Y')&&i!=3);}。
C语言职工工资管理系统设计报告
C语言职工工资管理系统设计报告设计报告:C语言职工工资管理系统1.系统介绍职工工资管理系统是一种用于管理公司或组织内部职工工资信息的软件系统。
通过该系统,可以方便地录入、修改、查询和删除职工的工资信息,实现对职工工资的统一管理和自动计算。
2.系统需求分析(1)录入职工信息:系统需要提供录入职工信息的功能,包括职工编号、姓名、性别、工作岗位等基本信息。
(2)录入职工工资:系统需要提供录入职工工资的功能,包括基本工资、绩效奖金、加班工资等,以便计算总工资。
(3)查询职工工资:系统需要提供查询职工工资的功能,可以按照职工编号、姓名、性别等关键字查询。
(4)修改职工工资:系统需要提供修改职工工资的功能,可以根据职工编号进行修改。
(5)删除职工信息:系统需要提供删除职工信息的功能,按照职工编号进行删除。
3.系统设计方案(1)数据结构的设计:-职工信息结构体:包括职工编号、姓名、性别、工作岗位等成员。
-职工工资结构体:包括基本工资、绩效奖金、加班工资等成员。
-职工结构体数组:用于存储多个职工的信息和工资数据。
(2)界面设计:-主菜单:包括录入职工信息、录入职工工资、查询职工工资、修改职工工资、删除职工信息等选项。
-子菜单:不同的功能选项对应不同的界面,可以通过输入不同的选择序号实现功能切换。
-信息显示界面:用于显示职工信息和工资信息。
(3)功能设计:-录入职工信息:通过用户输入,将职工信息存储到职工结构体数组中。
-录入职工工资:通过用户输入,将职工工资信息存储到对应的职工工资结构体中。
-查询职工工资:根据用户输入的关键字,查找并显示匹配的职工工资信息。
-修改职工工资:根据用户输入的职工编号,在职工工资结构体中找到对应职工的工资信息,并修改。
-删除职工信息:根据用户输入的职工编号,在职工结构体数组中找到对应职工的信息,并删除。
4.系统实现系统的实现使用C语言编程,使用结构体和数组进行数据的组织和存储,并利用循环和条件判断语句完成功能。
程序设计基础课程设计报告(c语言实现附源码)(员工工资管理系统)
《程序设计基础》课程设计报告题目:员工工资管理系统院(系):信息科学与工程学院专业班级:学生姓名:学号:指导教师:20 16 年 12 月 12 日至20 16 年 12 月 23 日武昌首义学院制程序设计基础课程设计任务书目录1需求与总体设计 (1)2详细设计 (1)3编码实现 (4)4运行结果 (21)总结 (24)1需求与总体设计1.1需求描述设计一个利用文件处理方式实现对员工工资(包括员工编号、员工姓名、年月、岗位工资、奖金、扣款和实发)进行管理,具有增加数据、更新数据、查询数据、删除数据、列表显示数据以及重组文件的功能。
1.2总体设计先以登陆函数登陆,再进入主菜单,菜单中显示各个要实现的操作,以菜单将各个函数联系起来,对菜单操作以实现系统的目的。
1.3数据结构struct user //登陆者信息{char un[10];char up[10];}us[3] = { "aaa","111","bbb","222","ccc","333" };struct yg //员工结构体{short zt; //数据状态long bh; //编号char name[20]; //名字char time[11]; //时间long money; //基本工资long jj; //奖金long kk; //扣款long sf; //实发工资};整个程序只运用了结构体的数据结构,结构体运用于登陆者信息和员工信息,将员工信息封装在一个结构体里,再创建结构体数组,将多个员工信息储存在结构体数组中。
2详细设计2.1 系统功能设计主函数和子函数:系统包含一个主函数,和子函数,分别有登陆子函数,菜单子函数,增加数据子函数,更新数据子函数,查询数据子函数,删除数据子函数,统计数据子函数,重组文件子函数,排序数据子函数,最后两个分别是读取文件和写入文件子函数。
职工工资管理系统c++程序设计报告
职工工资管理系统c++程序设计报告职工工资管理系统是一种用于管理员工薪资的软件系统。
下面是一个使用C++编写的职工工资管理系统的程序设计报告。
## 设计与实现### 设计该系统的设计主要考虑到以下几个方面:1. 功能需求:设计一个能够记录职工的基本信息、薪资信息、请假信息、加班信息等的系统。
2. 数据库设计:设计一个可以存储数据的数据结构,包括表格和字段。
3. 界面设计:设计一个用户友好的界面,方便用户进行操作。
4. 安全性:设计一个安全性措施,保证数据的安全性和隐私性。
### 实现1. 数据库设计:使用MySQL数据库进行数据存储。
2. 界面设计:使用Qt Creator开发界面。
3. 程序实现:使用C++语言进行程序实现。
#### 功能实现1. 记录职工基本信息:包括职工ID、姓名、性别、出生日期、身份证号码、联系方式等。
2. 记录薪资信息:包括基本工资、基本工资+津贴、基本工资+补贴、奖金等。
3. 记录请假信息:包括请假日期、请假原因、请假时间等。
4. 记录加班信息:包括加班日期、加班时间、加班地点、加班原因等。
5. 记录职工基本信息与薪资信息的关联关系。
6. 记录加班信息与请假信息的关联关系。
7. 显示当前职工的工资信息、请假信息、加班信息等。
8. 允许用户对职工的工资信息、请假信息、加班信息等进行编辑和删除。
## 性能测试为了测试系统的性能和稳定性,我们使用了以下方法:1. 模拟大量数据的操作:在系统中添加大量数据,并对其进行各种操作。
2. 进行并发测试:在系统中添加并发用户,并对系统进行各种操作。
3. 进行压力测试:在系统中添加大量压力,并通过增加并发用户等方式对系统进行压力测试。
通过以上方法,我们测试了系统的性能和稳定性,并得到了以下结果:- 系统在高并发情况下能够稳定运行。
- 系统在低并发情况下也能够流畅运行。
- 系统在高压力情况下能够快速响应,并保持稳定运行。
- 系统在低压力情况下也能够流畅运行。
c语言课程设计报告职工工资管理系统
课程设计报告课程设计报告题目:职工工资管理系统设计者:专业班级:学号:指导教师:所属院系:2011年 6月29日一.设计需求说明一、职工工资管理系统功能设计要求1. 输入记录:将每一个职工的姓名、ID 号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。
•该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
2. 显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。
3. 修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。
4.查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
5. 删除记录:可删除数据文件中的任一记录。
6.恢复记录:能恢复被删除的任一记录。
7. 统计: (A) 计算各项工资平均工资及总工资, (B)•统计符合指定条件(如职工工资前三项之和在2000 元以上、2000~1500 元、1500~1000 元) 以内的工资职工人数及占总职工人数的百分比。
(C)按字符表格形式打印全部职工工资信息表及平均工资(•包括各项总的平均工资)。
8.保存数据文件功能。
9.打开数据文件功能。
经过逐层逐块、不断细化、求精过程,编写程序并进行测试、验证,可以逐个模块地分开调试,并通过文件包含或用工程文件的形式进行逐步联合调试。
程序运行结果如下表所示(记录个数至少8 个)。
二.模块设计分析系统功能模块图:工作程序分析①输入:输入职工工资资料通过结构体的数组来进行操作,先头定义数组em[],先输入需要输入的职工人数m,然后进入循环,每次循环将各项输入结构体数组对应项的对应成员中,当循环次数等于人数时,完成全部员工的资料输入,退出循环。
同时将数据储存在ckerk_list文件中并自动保存至磁盘。
注:如首次使用,尚未输入数据,请先输入数据。
输入的数据将自动保存。
再次选择输入功能时原数据将被覆盖。
②保存:将输入的资料存入磁盘读取文件clerk_list,若文件不存在,打印“打开失败并退出。
c语言课程设计报告职工工资管理系统1.doc
c语言课程设计报告职工工资管理系统1 课程设计报告课程设计报告题目:职工工资管理系统设计者:专业班级:学号:指导教师:所属院系:2011年6月29日一.设计需求说明一、职工工资管理系统功能设计要求1. 输入记录:将每一个职工的姓名、ID 号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。
•该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
2. 显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。
3. 修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。
4.查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
5. 删除记录:可删除数据文件中的任一记录。
6.恢复记录:能恢复被删除的任一记录。
7. 统计: (A) 计算各项工资平均工资及总工资, (B)•统计符合指定条件(如职工工资前三项之和在2000 元以上、2000~1500 元、1500~1000 元) 以内的工资职工人数及占总职工人数的百分比。
(C)按字符表格形式打印全部职工工资信息表及平均工资(•包括各项总的平均工资)。
8.保存数据文件功能。
9.打开数据文件功能。
经过逐层逐块、不断细化、求精过程,编写程序并进行测试、验证,可以逐个模块地分开调试,并通过文件包含或用工程文件的形式进行逐步联合调试。
程序运行结果如下表所示(记录个数至少8个)。
二.模块设计分析系统功能模块图:工作程序分析①输入:输入职工工资资料通过结构体的数组来进行操作,先头定义数组em[],先输入需要输入的职工人数m,然后进入循环,每次循环将各项输入结构体数组对应项的对应成员中,当循环次数等于人数时,完成全部员工的资料输入,退出循环。
同时将数据储存在ckerk_list文件中并自动保存至磁盘。
注:如首次使用,尚未输入数据,请先输入数据。
输入的数据将自动保存。
再次选择输入功能时原数据将被覆盖。
C++课程设计职工工资管理系统报告内含程序完整清单
目录目录............................................................................................................................................... 1概述.......................................................................................................................................1.1程序的基本功能...............................................................................................................1.2其它功能...........................................................................................................................1.3扩展功能........................................................................................................................... 2课题的分析...........................................................................................................................2.1会员登入系统模块即SYSTEMHEAD静态全局函数模块................................................2.2查询功能模块即SEARCH函数模块.................................................................................2.3职务信息匹配及处理模块即SYSTEMBODY静态全局函数模块模块4.........................2.4循环控制模块即WHILE(1)模块.................................................................................. 3详细设计...............................................................................................................................3.1类声明...............................................................................................................................3.2系统简略流程图...............................................................................................................3.3会员登入系统模块即SYSTEMHEAD静态全局函数模块................................................3.4查询功能模块即SEARCH函数模块.................................................................................3.5职务信息匹配及处理模块即SYSTEMBODY静态全局函数模块....................................3.6循环控制模块即WHILE(1)模块.................................................................................. 4课程设计总结.......................................................................................................................4.1完成情况...........................................................................................................................4.2遇到的问题及解决........................................................................................................... 参考文献....................................................................................................................................... 附录...............................................................................................................................................1 概述本课程设计是《面向对象程序设计》课程的后继教学环节,学好C++语言就必须坚持用面向对象的思维方式分析问题、解决问题,最好的方法是仿照教材编写C++实际应用程序。
c语言_职工工资管理系统设计
c语言_职工工资管理系统设计
职工工资管理系统是一种满足组织内部行政职能要求的系统。
它主要用于负责处理职工工资和社会保险的行政处理,致力于实现工资的合理控制,提供可靠的社会保障,维护公司和职员的权益。
职工工资管理系统的总体设计涉及到多个方面,包括职工信息管理、职工入职信息处理、职工调动及离职处理、职工考核信息处理、工资用工成本分析等。
职工信息管理:
主要包括对职工个人信息(包括基本情况、职称、工资等)、职工培训考核信息、职工出勤情况等进行管理及整理。
系统利用数据库,将这些信息统一储存,实现集中管理的目的,从而帮助用人单位对职工的资源进行全面了解,并能有效地实施人力资源政策。
职工入职信息处理:
系统提供职工入职信息处理和调整模块,用于处理职工入职注册信息,装订职工入职相关证明及存档备案,以保障组织职位管理及职员资料处理工作的准确性。
职工调动及离职处理:
职工调动及离职处理模块,是处理职工调动或离职变动的必要模块。
企业可利用系统的这一模块进行职工离职报告与合同变更、职工调动安排登记等工作,以保障职工权益的有效管理。
职工考核信息处理:
职工考核信息处理主要提供职工工作评价功能,实施对职工的定期考核,以便企业对职工培训和考核要求进行动态管理,实现培训及考核结果的连续有效跟踪。
工资用工成本分析:
工资用工成本分析模块,可以帮助企业实时监测用工和工资成本,实现工资控制,提高用工管理效率,增加经济效益,减少企业成本。
总之,职工工资管理系统的设计和实现能够有效的解决企业的业务管理需求,实现职工与组织之间健康、高效的沟通,为企业组织发展提供支持。
C语言课程设计---职工工资管理系统
C语言程序设计课程设计题目:职工工资管理系统院(系):专业班级:学号:学生姓名:指导教师:教师职称:起止时间:课程设计(报告)任务及评语目录第1章课程设计的目的与要求 (1)1.1 课程设计目的 (1)1.2 课程设计的实验环境 (1)1.3 课程设计的预备知识 (1)1.4 课程设计要求 (1)第2章课程设计内容 (2)2.1程序功能介绍 (2)2.2程序整体设计说明 (2)2.2.1设计思路 (2)2.2.2数据结构设计及用法说明 (3)2.2.3程序结构(流程图) (5)2.2.4各模块的功能及程序说明 (6)2.2.5程序结果 (6)2.3程序源代码及注释 (7)第3章课程设计总结 (16)参考资料 (17)第1章课程设计的目的与要求1.1 课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力1.2 课程设计的实验环境硬件要求能运行Windows 2000/XP操作系统的微机系统。
C语言程序设计及相应的开发环境。
1.3 课程设计的预备知识熟悉C语言及C语言开发工具。
1.4 课程设计要求1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告第2章课程设计内容2.1程序功能介绍该系统能够实现工资信息管理。
系统包括录入,浏览,查询,统计等功能。
其中录入功能要求能够添加新的工资信息到文件;浏览功能要求能按照工资卡号,姓名分类浏览,提供分屏显示;有排序功能,排序后按照工资卡号升序或实发工资降序输出;查询功能要求能够按照工资卡号,姓名查询;统计功能要求能够按照月份累计统计某职工在某时间段实发工资总金额。
C语言课程设计报告---职工工资管理系统
C语言课程设计报告---职工工资管理系统湖南涉外经济学院C 语言课程设计(报告书)题目职工工资管理系统作者肖梦星陈名河学院信息科学与工程学院专业软件工程2012102班任课教师李桥二〇一二年十二月二十七日机房管理系统【设计目的】设计“机房管理系统”使其具有上机、下机、查询上机时间、机器使用情况显示等功能。
1、随时都可以来这里上下机,24小时为你服务。
2、上机时间还可以来查询你的上机时间。
3、还可查询本机房所有电脑的使用情况。
【设计思路】根据要求,把学生的信息输入电脑,文本文件存入。
还保存了记录做以查询,使用情况,另外还应提供键盘式选择菜单实现功能选择。
【总体设计】【详细设计】1.主函数主函数设计要求简洁,只提供部分提示语和函数的调用int main() /*主函数*/{int n=0;for(k=0;k<30;k++) /*全部机器标记为未使用*/com[k].f=0;for(;;){switch(main_menu()){case 1:printf("\t\t\t输入学生信息:\n");n=input(stu,n);break;case 2:printf("\t\t\t学生上机\n");online(stu,n);printf("\t\t");system("pause");break;case 3:printf("\t\t\t学生下机\n");offline(stu,n);printf("\t\t");system("pause");break;case 4:printf("\t\t\t上机时间查询\n"); search(stu,n);printf("\t\t");system("pause");break;case 5:printf("\t\t\t机器使用情况显示\n\n"); display();break;case 0:printf("\n\n\t\t感谢使用机房收费管理系统,欢迎下次使用,再见!\n\n");printf("\t\t");system("pause");exit(0);}}return 0;}2.流程图图 2. 主函数流程图3.程序运行截图图3. 主界面截图说明:选择数字0——5,完成相应功能。
C课程设计职工工资管理系统报告内含程序完整清单
C课程设计职工工资管理系统报告内含程序完整清单文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]目录1 概述本课程设计是《面向对象程序设计》课程的后继教学环节,学好C++语言就必须坚持用面向对象的思维方式分析问题、解决问题,最好的方法是仿照教材编写C++实际应用程序。
此次课程设计的题目及要求:实现一个简单的工资管理系统。
1.1 程序的基本功能系统的主要功能是计算职工当月工资并存档。
公司内有5种不同类型的职工:技术人员、销售人员、文秘、技术经理和销售经理,他们的工资计算方式各不相同。
1.2 其它功能将工资信息存入文件中,工资信息包含雇员编号、姓名、职务、月份、月收入。
文件中只存留一些信息及会员最后进入系统时输入的数据,最多含有编号、姓名、职务、月份的信息。
1.3 扩展功能采用了会员制度,并将登入信息及编号、密码存入文件中。
2 课题的分析通过对课题的深入分析,我将这个课题分为以下几个模块,深入详细得剖析它们。
2.1 会员登入系统模块即systemhead静态全局函数模块程序运行后,先进行会员选择判断。
为减少会员重新注册,通过输入两次编号及密码,增加繁琐度。
同时在一定的方面上,又方便忘记密码的会员。
通过密码匹配,雇员的工资信息这一隐私得到了很好的保障。
2.2 查询功能模块即search函数模块首先,从中提取编号,与中的编号进行匹配,匹配成功,输出工资信息,直到文件!()==0。
.2.3 职务信息匹配及处理模块即systembody静态全局函数模块模块4从中提取职务信息,用switch语句进行匹配,据匹配情况调用不同的函数进行输入、处理、显示并以增加方式记录到中。
2.4 循环控制模块即while(1)模块为了更加方便使用,尽量改善系统,实现search函数及systembody函数功能,在search函数及systembody函数模块的基础上加了一些必要的语句,并增加了外层循环控制。
职工工资管理系统c语言程序设计报告
职工工资管理系统1. 背景职工工资管理是企业管理中一个重要且复杂的环节。
合理进行工资管理可以激励员工的工作积极性,提高生产效率和企业的竞争力。
然而,在人工操作的情况下,计算工资涉及到复杂的计算过程和大量的数据处理,容易出现错误和繁琐。
因此,开发一个自动化的职工工资管理系统对于企业的工资管理具有重要意义。
2. 分析职工工资管理系统的核心目标是计算职工的工资,并提供工资查询和报表生成的功能。
为了实现此目标,我们需要设计一个合理的系统架构,并根据需求提供相应的功能模块。
2.1 系统架构职工工资管理系统的基本架构包括以下几个模块:•职工信息管理模块:用于管理职工的基本信息,包括姓名、职位、级别等。
•薪资标准管理模块:用于管理不同职位和级别的薪资标准,包括基本工资、绩效奖金等。
•工资计算模块:根据职工的基本信息和薪资标准,计算实际工资。
•工资查询模块:用于查询职工的工资信息。
•报表生成模块:用于生成各种工资相关的报表,如工资总额、平均工资等。
2.2 功能模块职工工资管理系统应当具备以下功能模块:1.职工信息管理:–添加职工信息–修改职工信息–删除职工信息–查询职工信息2.薪资标准管理:–添加薪资标准–修改薪资标准–删除薪资标准–查询薪资标准3.工资计算:–根据职工信息和薪资标准计算工资4.工资查询:–查询指定职工的工资信息5.报表生成:–生成工资总额报表–生成平均工资报表–生成各部门工资报表2.3 数据结构与算法为了实现上述功能,我们需要选择合适的数据结构和算法来支持系统的运行。
1.数据结构:对于职工信息的管理,我们可以使用链表或数组来存储职工的基本信息。
对于薪资标准的管理,可以使用哈希表或平衡二叉树来存储标准信息。
2.算法:在工资计算模块中,需要根据薪资标准和职工信息计算出实际工资。
可以使用算法来进行工资计算,如基本工资加上绩效奖金等。
3. 结果根据上述分析,我们可以设计并实现一个简单的职工工资管理系统。
C程序设计报告-职工工资管理系统
课程设计报告课程名称C语言程序设计课题名称职工工资管理系统专业班级学号姓名指导教师肖伟平罗敬2008年元月7 日湖南工程学院课程设计任务书课程名称C语言程序设计课题职工工资管理系统专业班级学生姓名学号指导老师肖伟平罗敬审批任务书下达日期2008 年元月7 日任务完成日期2008 年元月15 日目录(一)职工工资管理系统 (6)1.问题描述 (6)2.功能描述 (6)3.测试数据 (6)4.主要的几个模块的流程图 (11)(二)心得体会 (13)(三)原程序清单 (14)1.附件一 (14)2.附件二 (16)(四)计算机科学与技术系课程设计评分表 (21)一、设计内容与设计要求1、设计内容:职工工资管理系统设计涉及的知识点:①掌握并熟练运用C语言的基本数据类型与各种表达式,程序的流程控制语句;②掌握数组的基本概念。
熟练掌握一维数组、二维数组的应用、掌握字符数组与字符串的关系以及字符串的简单处理。
③掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。
④掌握结构的概念,结构类型的定义,结构变量的定义和初始化,结构成员的表示,结构的赋值含义,结构与指针、函数的关系。
⑤掌握文件、文件类型指针的基本概念,熟练掌握文件的打开与关闭以及文件的建立、读写等有关操作。
2、设计要求:1)用C语言实现系统;利用结构体数组实现班级成绩的数据结构设计;系统的各个功能模块要求用函数的形式实现;应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观。
2) 建立一个职工工资信息数据库,文件名为zggzk.txt,并从该文件中读取数据;3) 职工工资管理系统应能提供以下功能:(1)主菜单界面设计。
通过提示用户输入一个数字选项,调用相应的功能函数。
(2)显示功能:完成全部职工记录的显示;(3)计算功能:完成全部职工的应发工资、税款和实发工资的计算并显示;(4)修改功能:按工号修改一个职工的基本工资、奖金或扣款后重新计算职工的应发工资、税款和实发工资,并重新排序和显示;(5)查询功能:要求能分别按职工工号和姓名查询一条记录并显示;(6)追加功能:追加一条新职工记录,并重新排序和显示;⑦删除功能:按工号删除一条指定记录,并重新排序和显示;⑧排序功能:按职工实发工资降序排序;4) 说明:(1)要求将修改后的数据写入到一个新的数据文件nwegzk.txt中。
C语言课程设计报告-工资管理系统
C语言课程设计报告-工资管理系统一.系统功能设计一个职工工资管理系统,其功能包括:(1)职工基本工资信息录入包括工号,姓名,应发工资,奖金,扣款,应发工资,扣税,实发工资。
(2)职工基本工资信息保存(3)职工基本工资信息查询按照工号查询按照姓名查询(4)职工基本工资信息显示在屏幕上显示所有的职工基本工资信息。
(5)职工基本工资信息更新能够实现修改,删除,插入,排序功能。
(6)职工基本工资信息统计统计公司员工工资在各等级的人数主界面系统主界面应有如下功能选项录入职工基本工资信息查询职工基本工资信息保存职工基本工资信息删除职工基本工资信息插入职工基本工资信息修改职工基本工资信息统计职工基本工资信息排序职工基本工资信息显示职工基本工资信息退出代码如下:#incl ude <stdio.h>typed ef st ructemplo yee{ char num[10]; //保存职工编号 char name[15]; //保存职工姓名 floa t jbg z; //保存职工基本工资f loatjj; //保存职工奖金f loatkk; //保存职工扣款float yfgz; //保存职工应发工资 fl oat s k; //保存职工税款f loatsfgz; //保存职工实发工资}ZG GZ;voidmenu(){ pr intf(" Empoy ee Sy stem\n"); pr intf("--<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@--<-<-<@\n"); pr intf(" *1 i nputr ecord *2 dele te recor d\n");print f(" *3 sear ch reco rd *4 mo dify rec ord\n"); pri ntf("*5 in sert re cord *6countr ecord\n");p rintf(" *7sortrecor d *8 sav e reco rd\n"); prin tf("*9 dis play rec ord *0 q uit re cord\n"); pr intf("--<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@--<-<-<@\n"); pr intf("Plea se en ter y ou ch oice(0-9)\n");}i nt in put(Z GGZ a[],in t k){ intj,x; ch ar st r[10];j=x=0;while(1) {p rintf("----------------------------\n"); prin tf("请输入职工的编号:(按0返回主菜单)"); sc anf("%s",s tr); str cpy(a[k].n um,st r);f or(j=0;j<k;j++) {if(st rcmp(a[j].num,s tr)==0){ prin tf("已经有工号为%s的员工信息!请重新输入员工号。
c课程设计职工工资管理系统
c课程设计职工工资管理系统Last updated on the afternoon of January 3, 2021题目c++面向对象程序设计课程设计清单:5小题+职工工资管理系统(类、链表实现)姓名:学号:专业:计算机科学与技术学院:指导教师:2018年6月17日Part1:小程序练习1类的继承定义一个point类,包含私有数据成员x,y,成员函数包括无参构造函数,带参构造函数,set和get属性函数。
定义circle类,从point类公有派生,增加数据成员半径r,成员函数包括无参构造函数,带参构造函数,计算面积函数getarea。
在main 函数中定义一个circle的对象,并计算其面积。
/*1.定义Point类,设置其成员函数(构造函数,拷贝构造函数和析构函数)以及setx()sety()getx()gety()四个属性函数。
2.定义circle类,设置其成员函数(构造函数,拷贝构造函数和析构函数)以及获取半径r的函数get_r()计算面积并获取面积的函数getarea()。
3.在主函数中定义类的对象c1并初始化r=2。
再调用getarea()函数输出面积*/#include<iostream>usingnamespacestd;classpoint 义counter类,私有成员数据weight,设置其成员函数(构造函数和析构函数)2.重载自加自减运算符和<<、>>运算符。
3.在主函数中实现运算符重载。
4.友元函数需要声明。
*/#include<iostream>#include<cmath> usingnamespacestd;classcounter;istream&operator>>(istream&is,counter&a); ostream&operator<<(ostream&os,counter&a); classcounterrintinfo();printf("\n");cout<<"temp中数据构成的圆面积为"<<s->area()<<endl;cout<<"体积为"<<(*s).volume()<<endl;system("pause");return0;}运行结果:4模板编写一个使用类模板对数组进行查找、求元素和、重载下标[]运算符,以及输出的程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.目录目录 (i)1概述 (1)1.1程序的基本功能 (1)1.2其它功能 (1)1.3扩展功能 (1)2课题的分析 (2)2.1会员登入系统模块即SYSTEMHEAD静态全局函数模块 (2)2.2查询功能模块即SEARCH函数模块 (2)2.3职务信息匹配及处理模块即SYSTEMBODY静态全局函数模块模块4 (2)2.4循环控制模块即WHILE(1)模块 (2)3详细设计 (3)3.1类声明 (3)3.2系统简略流程图 (4)3.3会员登入系统模块即SYSTEMHEAD静态全局函数模块 (5)3.4查询功能模块即SEARCH函数模块 (6)3.5职务信息匹配及处理模块即SYSTEMBODY静态全局函数模块 (7)3.6循环控制模块即WHILE(1)模块 (7)4课程设计总结 (8)4.1完成情况 (8)4.2遇到的问题及解决 (8)参考文献 (11)附录 (12)1 概述本课程设计是《面向对象程序设计》课程的后继教学环节,学好C++语言就必须坚持用面向对象的思维方式分析问题、解决问题,最好的方法是仿照教材编写C++实际应用程序。
此次课程设计的题目及要求:实现一个简单的工资管理系统。
1.1 程序的基本功能系统的主要功能是计算职工当月工资并存档。
公司内有5种不同类型的职工:技术人员、销售人员、文秘、技术经理和销售经理,他们的工资计算方式各不相同。
1.2 其它功能将工资信息存入salary.txt文件中,工资信息包含雇员编号、姓名、职务、月份、月收入。
Info.txt文件中只存留一些信息及会员最后进入系统时输入的数据,最多含有编号、姓名、职务、月份的信息。
1.3 扩展功能采用了会员制度,并将登入信息及编号、密码存入number.txt文件中。
2 课题的分析通过对课题的深入分析,我将这个课题分为以下几个模块,深入详细得剖析它们。
2.1 会员登入系统模块即systemhead静态全局函数模块程序运行后,先进行会员选择判断。
为减少会员重新注册,通过输入两次编号及密码,增加繁琐度。
同时在一定的方面上,又方便忘记密码的会员。
通过密码匹配,雇员的工资信息这一隐私得到了很好的保障。
2.2 查询功能模块即search函数模块首先,从info.txt中提取编号,与salary.txt中的编号进行匹配,匹配成功,输出工资信息,直到文件!indata.eof()==0。
.2.3 职务信息匹配及处理模块即systembody静态全局函数模块模块4从info.txt中提取职务信息,用switch语句进行匹配,据匹配情况调用不同的函数进行输入、处理、显示并以增加方式记录到salary.txt中。
2.4 循环控制模块即while(1)模块为了更加方便使用,尽量改善系统,实现search函数及systembody函数功能,在search函数及systembody函数模块的基础上加了一些必要的语句,并增加了外层循环控制。
3 详细设计作为一个面向对象程序设计,我们不得不先从类的声明开始设计,而后是一个整体的流程图做框架。
最后在从小的模块结构着手。
3.13.2 系统简略流程图图3.2 职工工资管理系统简略流程图3.3 会员登入系统模块即systemhead静态全局函数模块3.4 查询功能模块即search函数模块3.5 职务信息匹配及处理模块即systembody静态全局函数模块3.6 循环控制模块即while(1)模块图3.6循环控制模块即while(1)模块4 课程设计总结4.1 完成情况本次面向对象课程设计的所有功能基本完成,并且扩展功能也成功的实现!可执行文件能正常执行指令并运行!4.2 遇到的问题及解决图4.2.1错误[Error] C:\Users\权\Desktop\main.o(.data$_vt$8Employee+0xc):main.cpp: undefined reference to `Employee::countSalary(void)'错误:没有定义Employee类中的countSalary函数!改正:将原先的“virtual void countSalary();”改为” virtual void countSalary(){}”图4.2.2错误错误分析:(会员板块中)提示:“数字1表示是!其他键表示否!”,但定义的选择变量为整型。
加上我当时输入字符p。
改正:“其他键表示否!”改为”数字0表示否”。
输入时按提示进行输入即可!图4.2.3错误调试分析:错误发生在systemhead静态全局函数内的文件输入循环模块中!改正:将以nocreate方式即” ifstream indata("d:\\number.txt",ios::nocreate); “该为默认打开方式即“ifstream indata("d:\\number.txt");”。
图4.2.4错误调试分析:错误发生在调用systembody静态全局函数前后的while循环模块中,很有可能是数据存取混乱造成的。
改正:systemhead静态全局函数内“ofstream outdata("d:\\info.txt",ios::trunc);”改为先清后在以默认方式输入!且将存取整型编号的变量类型从字符型改为整型。
图4.2.5错误错误:后面莫名其妙的跟着一个提示语句指令。
分析调试:当语句指令是基类info函数内的语句,很有可能是循环控制出现了一些问题。
改正:见程序源代码!参考文献[1]下面给出几个参考文献的格式参考[2]匿名,不知道,非常多.计算机实用教程.北京:XX大学出版社,2004,123~234[3][美] Donis Something.Visual X# 2008技术内幕.北京:YYY大学出版社,2007,56~78[4]Johns Smith, James Nothing. Programming in C++ or Anything and Something./lab/cplusplus/nothing/index.html 2007[5]Anonymous. Something to Say. /something.html 2007[6]《面向对象程序设计》,郑莉,清华大学出版社,[7]《面向对象程序设计C++语言》,朱战立等编西安电子科技大学出版社[8]《面向对象程序设计----Visual C++》,刘斌等编, 清华大学出版社[9]《面向对象程序设计----C++语言描述》, Richard Johnsonbaugh(美)等著,蔡宇辉等译,机械工业出版社,2003附录本系统有三个源程序文件构成,分别为system.h, system.cpp及main.cpp。
同时含有三个系统文件,分别为info.txt, name.txt及salary.txt,且全部存放在D盘根目录下,请勿随意移动或修改系统文件。
当会员正式进入系统,info.txt是先清空后用来存储会员输入的信息,最多含有编号、姓名、职务及月份。
当仅会员注册时,会将编码及密码存储到name.txt中。
当仅会员登入的编号及密码进行匹配时,会打开输入文件name.txt,提取编号及密码,进行匹配。
当仅当输入工资数据时,会将工资、编号、姓名、职务、月份存储到salary.txt中。
当仅当查询工资信息时,会打开salary.txt,提取编号、姓名、职务、月份及工资。
该系统是一个只适合5种及5种职务的工资管理系统。
并将职务分为技术人员、销售人员、文秘、技术经理和销售经理,其代号分别为1,2,3,4,5。
雇员编号以整型变量存储,编号所取范围在-65536至65535之内(包括边界值),首位数字表示相应的职务代码。
该系统能力有限,请根据指示严格输入相应字符!程序清单Main 函数#include "system.cpp"#include "cstring"static void systemhead();static void systembody();static void technician();static void salesman();static void secretary();static void techmanager();static void salesmanager();using namespace std;void main()systemhead(); //调用systemhead静态全局函数cout<<"\n\n1: 查询工资";cout<<"\n\n2: 输入工资数据";cout<<"\n\n0: 退出系统!\n\n";cout<<"请选择您需要的操作!!\n";while(1){int xuanze;cin>>xuanze;if(xuanze==1){employee a;cout<<endl<<endl;a.search();cout<<"\n\n输入工资数据请按数字2,退出系统请按数字0!\n\n";} //查询工资信息if(xuanze==2){employee a;();a.recordinfo(); //输入处理工资数据并暂时记录systembody(); //调用systembody静态全局函数cout<<"\n\n查询工资请按数字1,退出系统请按数字0!\n\n";}if(xuanze==0)exit(0);}static void salesmanager(){SalesManager a5;float sum;cout<<"请输入整个月的总营业额:";cin>>sum;a5.setsalesnum(sum);a5.countSalary();a5.recordSalary();}static void techmanager(){TechManager a4;int gra;cout<<"请输入这个月的评级:"; //1,2,3三个等级cin>>gra;a4.setgrade(gra);a4.countSalary();a4.recordSalary();}static void secretary(){Secretary a3;float bon;cout<<"请输入这个月的额外奖励:";cin>>bon;a3.setbonus(bon);a3.countSalary();a3.recordSalary();}static void salesman(){Salesman a2;float sum;cout<<"请输入整个月的营业额:";cin>>sum;a2.setsalesnum(sum);a2.countSalary();a2.recordSalary();}static void technician(){Technician a1;float hour;cout<<"请输入整个月的工作时间:";cin>>hour;a1.setHour(hour);a1.countSalary();a1.recordSalary();}static void systembody(){ifstream indata("info.txt");if(indata==NULL) exit(0);int num;char na[25];int sta;indata>>num>>na>>sta; //职务代号分别为1,2,3,4,5switch(sta){case 1:technician();break;case 2:salesman();break;case 3:secretary();break;case 4:techmanager();break;case 5:salesmanager();break;default:cout<<"职务代号错误!\n请重新输入!";}}static void systemhead(){char x,y='y';int num;char secret[6];while(y){cout<<"\n\n系统会员请输入'y',非系统会员请输入‘n’\n";cin>>x;if(x){cout<<"请输入编号(首位为职务代号且为不超过5位数的整数):\n";cin>>num;cout<<"请输入密码(6及6位字符以下):\n";cin>>secret; //输入编号及密码ifstream indata("number.txt");if(indata==NULL){cout<<"文件打开失败!请联系管理员!\n"; exit(0); //文件没打开,退出程序}int num1;char secret1[6];indata>>num1;while(!indata.eof()){indata>>secret1;if((num==num1)&&(strcmp(secret,secret1)==0)){y=0; //改变判断变量的值,停止外层循环break; //终止内层循环}indata>>num1;}indata.close(); // 检验登入信息}else{cout<<"请输入编号(首位为职务代号且为不超过5位数的整数):\n";cin>>num;cout<<"请输入密码(6及6位字符以下):\n";cin>>secret; //注册输入编号及密码ofstream outdata("number.txt",ios::app);outdata<<num<<'\t'<<secret<<'\t';outdata.close(); //将编号及密码保存到number.txt中cout<<endl<<endl;}}ofstream outdata("info.txt",ios::trunc);outdata.close(); //清空文件内容ofstream outdata1("info.txt");outdata1<<num<<'\t';outdata.close(); //输入编号至info.txt}System.cpp#include <iostream>#include <fstream>#include "system.h"using namespace std;void Employee::info(){char na[25];int sta,mon;cout<<"请依次输入姓名、职务代号及月份(以空格符分隔):";cin>>na>>sta>>mon;name=na;status=sta;month=mon; //存储姓名、职务、月份}void Employee::search(){int num;ifstream indata0("info.txt");if(indata0==NULL) exit(0);indata0>>num;indata0.close(); //从文件info.txt中提取编号int num1;char na1[25];int sta1;int mon1;float sal;int mon0;ifstream indata("salary.txt");if(indata==NULL) exit(0);while(!indata.eof()){indata>>num1>>na1>>sta1>>mon1>>sal;if(num==num1)cout<<num1<<'\t'<<na1<<'\t'<<sta1<<'\t'<<mon1<<'\t'<<sal<<'\n';//依次输出该雇员的工资信息}if(indata.eof())cout<<"\n\n以上是你的工资信息!\n\n";indata.close();}void Employee::recordinfo(){ofstream outdata("info.txt",ios::app);outdata<<name<<'\t'<<status<<'\t'<<month;outdata.close(); //添加姓名、职务、月份至存有编号的info.txt中}void Employee::recordSalary(){ifstream indata("info.txt");indata>>number>>name>>status>>month;indata.close(); //依次输出该雇员的工资信息int num1;char na1[25];int sta1;int mon1;float sal;ifstream indata1("salary.txt");if(indata1==NULL) exit(0);while(!indata1.eof()){indata1>>num1>>na1>>sta1>>mon1>>sal;if(month!=mon1)cout<<num1<<'\t'<<na1<<'\t'<<sta1<<'\t'<<mon1<<'\t'<<sal<<'\n';elseexit(0);//依次输出该雇员的工资信息}cout<<number<<'\t'<<name<<'\t'<<status<<'\t'<<month<<'\t'<<salary;//显示工资信息ofstream outdata("salary.txt",ios::app);outdata<<'\n'<<number<<'\t'<<name<<'\t'<<status<<'\t'<<month<<'\t'<<salary;outdata.close();}void Technician::setHour(float x){workHour=x;}Technician::Technician(float x){hourSalary=x;}void Technician::countSalary(){salary=workHour*hourSalary;}void Salesman::setsalesnum(float x){salesnum=x;}Salesman::Salesman(float x){getRate=x;}void Salesman::countSalary( ) {salary=salesnum*getRate;}void Secretary::setbonus(float x) {bonus=x;}Secretary::Secretary(float x){fixedSalary=x;}void Secretary::countSalary( ) {salary=fixedSalary+bonus;}Manager::Manager(float x){fixedSalary=x;}void TechManager::setgrade(int x) {grade=x;}TechManager::TechManager(float x){gradeBonus=x;}void TechManager::countSalary(){salary=fixedSalary+grade*gradeBonus; }SalesManager::SalesManager(float x) {getRate=x;}void SalesManager::countSalary(){salary=fixedSalary+salesnum*getRate; }void Technician::setHour(float x){workHour=x;}Technician::Technician(float x){hourSalary=x;}void Technician::countSalary() {salary=workHour*hourSalary; }void Salesman::setsalesnum(float x) {salesnum=x;}Salesman::Salesman(float x){getRate=x;}void Salesman::countSalary( ){salary=salesnum*getRate;}void Secretary::setbonus(float x) {bonus=x;}Secretary::Secretary(float x){fixedSalary=x;}void Secretary::countSalary( ){salary=fixedSalary+bonus;Manager::Manager(float x){fixedSalary=x;}void TechManager::setgrade(int x){grade=x;}TechManager::TechManager(float x){gradeBonus=x;}void TechManager::countSalary(){salary=fixedSalary+grade*gradeBonus; }SalesManager::SalesManager(float x) {getRate=x;}void SalesManager::countSalary(){salary=fixedSalary+salesnum*getRate; }System.hclass Employee{protected:int number; char name[25]; int status;int month; float salary;public:void info(); void search();virtual void countSalary(){}void recordinfo(); void recordinfo1();void recordSalary();};class Salesman:public Employee{ protected:float salesnum;double getRate;public:Salesman(float x=0.05);void setsalesnum(float x);void countSalary( );};class Technician:public Employee{private:float workHour;float hourSalary;public:Technician(float x=35.0); void setHour(float x); void countSalary( );};class Secretary:public Employee{private:float fixedSalary;float bonus;public:Secretary(float x=4000);void setbonus(float x);void countSalary( );};class Manager{protected:float fixedSalary;public:Manager(float x=6000);void countSalary( );};class SalesManager:public Salesman, public Manager {public:SalesManager(float x=0.02);void countSalary( );};class TechManager:public Technician, public Managerprivate:float gradeBonus;int grade;public:TechManager(float x=1000); void setgrade(int x);void countSalary( );};。