C++课程设计职工工资管理系统(报告内含程序完整清单)
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职工工资管理系统报告
{
int t,button;
system("cls");//清屏
do
{
printf("\n按1按工号查询\n按2按姓名查询\n按3回主菜单\n");
scanf("%d",&t);
if(t>=1&&t<=3)
{
button=1;
break;
}
else
{
button=0;
(6)插入功能:可以插入多名职工信息记录。
(7)保存功能:将职工记录保存在任何自定义的文件中。
(8)读取功能:将保存在文件中的职工信息工资信息读取出来。
(9)有一个清晰美观界面来调用各个功能
3.
(1)整个系统均用C语言实现;
(2)利用指针、链表来实现学生成绩的数据结构设计;
(3)系统具有输入、显示、查询、删除、排序、插入,保存、读取基本功能;
void del() /*删除函数*/
{
int m=load();
int i,j,n,t,button;
char name[20];
printf("\n原来的职工信息:\n");
display(); //显示删除前的员工信息
printf("\n");
printf("按姓名删除:\n");
scanf("%s",name);
}
if(i==m)
printf("\n\n");
printf("\n");
printf("返回查询菜单请按1,继续查询姓名请按2\n");
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语言程序设计课程设计题目:职工工资管理系统院(系):专业班级:学号:学生姓名:指导教师:教师职称:起止时间:课程设计(报告)任务及评语目录第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语言程序设计》课程设计报告设计题目:职工工资管理系统班级:学号:姓名:信息工程学院1 前言工资管理系统是企业不可缺少的一部分,它利用计算机对员工工资进行统一管理,实现工资管理系统的系统化、规范化和自动化,为企业提高工作效率。
本程序旨在训练读者的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和结构数组的各种基本操作。
本程序中涉及结构体、数组、文件等方面的知识。
2 需求分析2.1 课程设计目的学生在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。
通过课程设计(论文),提高学生综合运用所学知识来解决实际问题、使用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础。
2.2 课程设计任务职工工资管理系统功能设计要求(1)输入记录:将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。
该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
(2)显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。
(3)修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。
(4)查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
(5)删除记录:可删除数据文件中的任一记录。
(6)统计: (A)计算各项工资平均工资及总工资, (B)•统计符合指定条件(如职工工资前三项之和在3000元以上、3000~2000元、2000~1000元) 以内的工资职工人数及占总职工人数的百分比。
(C)按字符表格形式打印全部职工工资信息表及平均工资(•包括各项总的平均工资)。
(7)保存数据文件功能。
例如:职工工资信息表ID号姓名基本工资职务工资津贴医疗保险- 公积金- 总工资01 张望 1286 794 198 109 135 203402 李明1185 628 135 94 114 174003 王小民895 438 98 64 73 129404 张效章1350 868 210 116 150 216205 彭山745 398 84 61 68 1098各项平均工资 1092.2 625.2 145 88.8 108图3.1 系统模块图4 具体代码实现#include"stdio.h"#include<stdlib.h>#include<conio.h>#include<string.h> // 头文件static int n=0; // 定义静态全局变量,存储已经读入记录的条数。
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++课程设计_职工工资管理系统(报告内含程序完整清单)
目录目录 (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)参考文献 (10)附录 (11)1 概述本课程设计是《面向对象程序设计》课程的后继教学环节,学好C++语言就必须坚持用面向对象的思维方式分析问题、解决问题,最好的方法是仿照教材编写C++实际应用程序。
此次课程设计的题目及要求:实现一个简单的工资管理系统。
1.1 程序的基本功能系统的主要功能是计算职工当月工资并存档。
公司内有5种不同类型的职工:技术人员、销售人员、文秘、技术经理和销售经理,他们的工资计算方式各不相同。
1.2 其它功能将工资信息存入salary.txt文件中,工资信息包含雇员编号、姓名、职务、月份、月收入。
Info.txt文件中只存留一些信息及会员最后进入系统时输入的数据,最多含有编号、姓名、职务、月份的信息。
1.3 扩展功能采用了会员制度,并将登入信息及编号、密码存入number.txt文件中。
2 课题的分析通过对课题的深入分析,我将这个课题分为以下几个模块,深入详细得剖析它们。
2.1 会员登入系统模块即systemhead静态全局函数模块程序运行后,先进行会员选择判断。
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模板编写一个使用类模板对数组进行查找、求元素和、重载下标[]运算符,以及输出的程序。
职工管理系统课程设计报告c语言
职工管理系统课程设计报告c语言一、引言职工管理系统是一个针对公司或组织内部职工信息管理的软件系统,主要用于记录职工的基本信息、工作情况、考勤记录等,方便管理人员进行数据统计和分析。
本文将介绍一个基于C语言的职工管理系统的设计与实现。
二、系统设计1. 系统功能职工管理系统主要包括以下功能模块:•添加新职工信息•修改职工信息•删除职工信息•查询职工信息•统计各部门职工人数•统计各职工职务人数2. 数据结构为了有效地存储和管理职工信息,系统采用了以下数据结构:•职工信息结构体•部门信息结构体3. 主要算法系统主要采用以下算法实现各功能模块:•添加职工信息:通过链表添加新结点•修改职工信息:更新结点中的字段信息•删除职工信息:在链表中删除指定结点•查询职工信息:根据输入的关键词在链表中查找•统计职工人数:遍历链表统计人数•统计职务人数:遍历链表统计各职务人数三、系统实现系统采用C语言编写,通过文件读写实现数据的持久化存储。
程序运行时,首先读取保存在文件中的职工信息并加载到内存中,用户可以通过交互式界面选择相应功能进行操作。
操作完成后,系统会将数据写回文件,保证数据的持久性。
四、系统优化与改进为了提高系统的性能和用户体验,可以考虑以下改进方案:•引入数据库存储,提高数据读写效率•添加更多的查询条件,提供更灵活的查询功能•增加权限管理模块,限制不同用户的操作权限•完善异常处理机制,提高系统的稳定性和可靠性五、总结通过本次课程设计,我们深入学习了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. 查询职工信息可以通过职工编号或姓名查询职工的详细信息。
5. 显示所有职工信息将所有职工的信息显示在界面上。
开发流程1. 定义数据结构首先,我们需要定义一个数据结构Employee来保存职工的信息,包括职工编号、姓名、性别、职位、基础工资等字段。
struct Employee {int id;char name[50];char gender[10];char position[50];float baseSalary;float hoursWorked;float totalSalary;};2. 编写主要函数添加职工信息void addEmployee(struct Employee emp) {// 将 emp 添加到员工列表中}修改职工信息void updateEmployee(struct Employee emp) {// 根据职工编号修改对应的员工信息}计算工资float calculateSalary(struct Employee emp) {// 计算职工的实际工资return emp.baseSalary + emp.hoursWorked * hourlyRate;}查询职工信息void searchEmployee(int id) {// 根据职工编号查询职工信息}显示所有职工信息void displayAllEmployees() {// 显示所有职工的信息}3. 用户界面交互为了方便用户操作,可以设计一个简单的用户界面,使用控制台打印实现信息展示和输入。
C语言课程设计报告职工信息管理系统[1] (1)
课程设计报告一C语言课程设计的目的设计一职工信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)职工信息录入功能(职工信息用文件保存)(3)职工信息浏览功能(4)职工信息查询功能,查询方式可按学历查询或按职工号查询(5)职工信息删除修改功能(可选项)二课程设计报告正文1题目要求设计职工信息管理系统,要求职工心想包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
设计一职工信息管理系统,使之能提供以下功能:(6)系统以菜单方式工作(7)职工信息录入功能(职工信息用文件保存)(8)职工信息浏览功能(9)职工信息查询功能,查询方式可按学历查询或按职工号查询(10)职工信息删除修改功能(可选项)2需求分析根据题目要求,由于职工信息是存放在文件中,所以应提供文件的输入、输出等操作;在程序中需要浏览职工的信息,应提供显示、查找、排序等操作;另外还应提供键盘式选择菜单实现功能选择。
3总体设计根据上面的需求分析,可以将这个系统设计分为以下模块:数据添加、数据查找、数据修改、数据删除、数据输出.系统功能模块如下:4详细设计1 主函数主函数设计要简洁,只提供部分函数的调用。
其中各功能模块用菜单方式选择。
【程序】void main(){int m;while(1){ printf(”\n\n\n\t\t ______________________________________\n");printf("\t\t 欢迎进入内蒙古科技大学员工信息系统\n”);printf(”\t\t 设计者:计算机—3班学号1076807334\n”);printf("\t\t ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf(”\n\t\t\t\t添加,请按1");printf(”\n\t\t\t\t查找,请按2”);printf("\n\t\t\t\t修改,请按3");printf("\n\t\t\t\t删除,请按4");printf("\n\t\t\t\t输出,请按5”);printf("\n\t\t\t\t退出,请按0\n");scanf("%d”,&m);if(m>=0&&m<=5){switch(m){case 1:append();break;case 2:search();break;case 3:modify();break;case 4:delete();break;case 5: output();break;case 0: exit();}printf(”\n\n操作完毕,请再次选择!");}elseprintf("\n\n选择错误,请再次选择!");}}2 数据添加【程序】void append(){if((fp=fopen(”worker.xls","a"))==NULL){printf("\n不能打开该文件!”);exit();}printf(”\n请输入添加职工信息(姓名、职工号、性别、年龄、学历、职位、工资、电话、地址)\n”);scanf(”%s%s%s%s%s%s%s%s%s",one。
C语言课设——职工工资管理系统
一引言C语言是Combined Language(组合语言)的中英混合简称。
是一种计算机程序设计语言。
它既具有高级语言的特点,又具有汇编语言的特点。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
设计一个程序的过程就是解决一个实际问题的过程,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;在次我们必须捋清思路,逐一的解决问题的各个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数、结构体和文件等,然后确定处理过程。
本课题中主要应用了C语言中的数组、结构体、文件等关键技术。
在C语言中,数组属于构造数据类型。
一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型;结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构,在结构体中的变量,可以是相同、部分相同,或完全不同的数据类型,结构体只能描述一个对象的状态,不能描述一个对象的行为。
文件是一种组织外部存储介质上的数据的数据类型。
它具有两个特征:一是对一个数据集合可以用一个名字命名;二是保存在外部存储介质上,可以长期保存。
通过此次课设可以锻炼学生理论联系实际能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解,并达到如下目的:1.熟悉C语言程序的编辑、编译链接和运行的过程。
2.熟练运用if语句和switch语句以及嵌套应用。
3.学习并掌握C语言定义函数的基本方法、声明函数及调用函数的方法和过程。
4. 掌握文件的概念以及文件的定义方法,认识文件打开、关闭、读、写等文件基本操作函数。
5.掌握结构体类型变量、数组的定义和使用。
6. 掌握数组的定义、引用以及输入输出的方法、通过字符数组存储字符串,进一步使用字符串。
图2程序流程图主函数源代码:void main(){int choose=0;while(true){show();printf("\t\t====>请选择:"); scanf("%d",&choose); system("cls");switch(choose){case 0: exit(0);//退出break;case 1: add();back();//添加职工信息break;case 2: see();back();//查看职工信息break;case 3: search();back();// 查找职工信息break;case 4: del();back();//删除职工信息break;case 5: statistics();back();//统计职工工资break;case 6: modify();back();//修改职工信息break;case 7:reserve();back();//保存数据break;case 8:author();back();//作者信息break;default:break;}fflush(stdin);getchar();system("cls");}}三程序详细设计3.1添加职工信息函数的实现添加记录前如图3所示。
C语言职工工资管理系统程序设计报告
C语言课程设计报告题目小型职工工资管理系统专业班级2016级通信工程本科1班组别通信第二组学生姓名院(系)信息工程系指导教师(职称)完成时间2017年5月31日课程设计任务书题目职工工资管理系统班级2016级通信工程本科1班学号姓名学号姓名学号姓名学号姓名学号姓名一、主要内容:本课程设计结合本学期所学C语言知识,准备设计开发一个简单职工工资管理系统。
工资管理系统是企业不可或缺的一部分,它利用计算机对员工工资进行统一管理,实现工资管理系统的系统化、规范化和自动化,为企业提高工作效率。
设计开发这个系统需要用到单链表、文件读取操作、结构体、函数、指针等C语言知识。
本课程设计准备通过Windows控制台应用程序实现职工工资管理系统的简单运行。
利用所学知识,本着简单、易用的设计原则,本课程设计尽量实现良好、美观的“人机界面”,便于软件的操作使用。
本次设计主要学习内容包括:(一)进一步学习并熟练掌握C语言语法和编程思想。
(二)学习C语言提供的库函数,熟悉VisualC++的开发工具。
(三)学习C语言函数、链表、结构体、文件读取、指针等知识。
(四)学习如何查阅他人的文档进行软件的设计与开发。
二、基本要求:(一)质量要求1.职工工资管理系统基本功能模块的设计应包括:显示主菜单功能、职工信息的录入、添加、删除、修改、查询、排序功能,退出系统。
测试文件的读取与存储是否正常、测试评估界面是否合理,友好。
2.对职工工资管理系统设计并进行调试、修复、完善、测试。
3.定期主动向指导教师汇报任务进度,认真填写相关报告文档。
4.按时完成各阶段工作,不突击,不抄袭。
(二)进度要求1.明确课程设计任务,搜集资料:2017年2月28日—3月14日。
2.完成程序的设计与实现,撰写课程设计论文初稿:2017年3月15日—5月15日。
3.与指导教师沟通,完成课程设计论文定稿:2016年5月16日—2017年5月28日。
4.进入课程设计论文审阅阶段,准备答辩:2017年5月29日—6月9日。
C语言职工工资管理系统设计报告
《C语言程序设计》课程设计报告设计题目:职工工资管理系统Array专业:班级:学号:姓名:信息工程学院1 前言工资管理系统是企业不可缺少的一部分,它利用计算机对员工工资进行统一管理,实现工资管理系统的系统化、规范化和自动化,为企业提高工作效率。
本程序旨在训练读者的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和结构数组的各种基本操作。
本程序中涉及结构体、数组、文件等方面的知识。
2 需求分析课程设计目的学生在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。
通过课程设计(论文),提高学生综合运用所学知识来解决实际问题、使用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础。
课程设计任务职工工资管理系统功能设计要求(1)输入记录:将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。
该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
(2)显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。
(3)修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。
(4)查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
(5)删除记录:可删除数据文件中的任一记录。
(6)统计: (A)计算各项工资平均工资及总工资, (B)•统计符合指定条件(如职工工资前三项之和在3000元以上、3000~2000元、2000~1000元) 以内的工资职工人数及占总职工人数的百分比。
(C)按字符表格形式打印全部职工工资信息表及平均工资(•包括各项总的平均工资)。
(7)保存数据文件功能。
例如:职工工资信息表ID号姓名基本工资职务工资津贴医疗保险- 公积金- 总工资01 张望 1286 794 198 109 135 203402 李明1185 628 135 94 114 174003 王小民895 438 98 64 73 129404 张效章1350 868 210 116 150 216205 彭山745 398 84 61 68 1098各项平均工资 145 108(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)设计环境(1)WINDOWS 2000/2003/XP/7/Vista系统(2)Visual C++开发语言C语言系统模块图图系统模块图4 具体代码实现#include""#include<>#include<>#include<> 添加记录 #\n");printf("\t\t# #\n");printf("\t\t# 2. 显示记录 #\n");printf("\t\t# #\n");printf("\t\t# 3. 删除记录 #\n");printf("\t\t# #\n");printf("\t\t# 4. 查询记录 #\n");printf("\t\t# #\n");printf("\t\t# 5. 修改记录 #\n");printf("\t\t# #\n");printf("\t\t# 6. 统计记录 #\n");printf("\t\t# #\n");printf("\t\t# 0. 退出程序 #\n");printf("\t\t#############################################\n");printf("\t\t\t请您选择(0-6)选择请输入:");scanf("%d",&c);}while(c<0&&c>=7);return(c);}int Input(Student stu[]){int i=0;char sign;while(sign!='n'&&sign!='N'){printf("\tID:");scanf("\t%s",stu[n+i].id);printf("\t姓名:");scanf("\t%s",stu[n+i].name);printf("\t基本工资:");scanf("\t%lf",&stu[n+i].base);printf("\t职务工资:");scanf("\t%lf",&stu[n+i].position);printf("\t津贴:");scanf("\t%lf",&stu[n+i].allowance);printf("\t医疗保险:");scanf("\t%lf",&stu[n+i].insurance);printf("\t公积金:");scanf("\t%lf",&stu[n+i].fund);stu[n+i].wage=stu[n+i].base +stu[n+i].position +stu[n+i].allowance +stu[n+i].insurance +stu[n+i].fund; ;printf("\n\t是否继续添加(Y/N)");scanf("\t%c",&sign);i++;}return(n+i);}void Display(Student stu[]){int i;double m1=0,m2=0,m3=0,m4=0,m5=0;printf("\n\n~~~~~~~~~~~~~按照姓名进行排序!\n\n");printf("------------------------------------------------------------------------------\n");d,stu[i].name,stu[i].base,stu[i].position,stu[i].allowance,stu[i].insuranc e,stu[i].fund,stu[i].wage);ase;m2+=stu[i].position;m3+=stu[i].allowance;m4+=stu[i].insurance;m5+=stu[i].fund;}if(n!=0){printf("----------------------------------------------------------------------\n");printf("各项平均工资:%%%%%\n\n",m1/n,m2/n,m3/n,m4/n,m5/n);}system("pause"); 部删除\n");printf("\t 2.根据ID号删除\n");printf("\t请选择: ");scanf("%d",&x);if(x==1){for(j=0;j<n;j++)d,m)!=0&&i<n)i++;if(i==n){printf("\t职工工资管理系统中没有此人!\n");}else{for(j=i;j<n-1;j++)ame,s)!=0&&i<n ){ d);printf("\t姓名: %s\n",stu[i].name);printf("\t基本工资: %.2lf\n",stu[i].base);printf("\t职务工资: %.2lf\n",stu[i].position);printf("\t津贴: %.2lf\n",stu[i].allowance);printf("\t医疗保险: %.2lf\n",stu[i].insurance);printf("\t公积金: %.2lf\n",stu[i].fund);printf("\t总工资: %.2lf\n",stu[i].wage); }}if(m==2)d,s)!=0&&i<n)i++;if(i==n){printf("\t职工工资管理系统中没有此人!\n");return;}printf("\tID: %s\n",stu[i].id);printf("\t姓名: %s\n",stu[i].name);printf("\t基本工资: %.2lf\n",stu[i].base);printf("\t职务工资: %.2lf\n",stu[i].position);printf("\t津贴: %.2lf\n",stu[i].allowance);printf("\t医疗保险: %.2lf\n",stu[i].insurance);printf("\t公积金: %.2lf\n",stu[i].fund);printf("\t总工资: %.2lf\n",stu[i].wage);}}void Change(Student stu[]){int m;printf("\t\n请选择修改方式:\n"); d,m)!=0&&i<n)i++;if(i==n){printf("\t职工工资管理系统中没有此人!\n");return;}printf("\tID:");scanf("\t%s",stu[i].id);printf("\t姓名:");scanf("\t%s",stu[i].name);printf("\t基本工资:");scanf("\t%lf",&stu[i].base);printf("\t职务工资:");scanf("\t%lf",&stu[i].position);printf("\t津贴:");scanf("\t%lf",&stu[i].allowance);printf("\t医疗保险:");scanf("\t%lf",&stu[i].insurance);printf("\t公积金:");scanf("\t%lf",&stu[i].fund);stu[i].wage=stu[i].base +stu[i].position +stu[i].allowance +stu[i].insurance +stu[i].fund;printf("\t修改成功!");}else if(m==2){int i=0;char m[10];printf("\t请输入想修改的记录中人的姓名:");scanf("%s",m);while(strcmp(stu[i].name,m)!=0&&i<n)i++;if(i==n){printf("\t职工工资管理系统中没有此人!\n");return;}printf("\tID:");scanf("\t%s",stu[i].id);printf("\t姓名:");scanf("\t%s",stu[i].name);printf("\t基本工资:");scanf("\t%lf",&stu[i].base);printf("\t职务工资:");scanf("\t%lf",&stu[i].position);printf("\t津贴:");scanf("\t%lf",&stu[i].allowance);printf("\t医疗保险:");scanf("\t%lf",&stu[i].insurance);printf("\t公积金:");scanf("\t%lf",&stu[i].fund);stu[i].wage=stu[i].base +stu[i].position +stu[i].allowance +stu[i].insurance +stu[i].fund;printf("\t修改成功!");}}void WritetoText(Student stu[]){int i=0;FILE *fp; /*定义文件指针*/ printf("\t保存到文件\n"); /*输入文件名*/ if((fp=fopen("output","w"))==NULL){printf("\t无法打开文件\n");system("pause");return;}while(i<n){fprintf(fp,"%s %s %lf %lf %lf %lf %lf %lf\n",stu[i].id,stu[i].name, stu[i].base,stu[i].position,stu[i].allowance,stu[i].insurance,stu[i].fund, stu[i].wage);i++;}fclose(fp); /*关闭文件*/printf("保存成功!\n");}void Read(Student stu[]){FILE *fp;int i;char filename[20];strcpy(filename,"output");if((fp=fopen(filename,"r"))==NULL){printf("找不到%s文件!\n",filename);system("pause");return ;}n=0;for(i=0;i<100&&!feof(fp);i++)d,&stu[i].name,&stu[i].base,&stu[i].position,&stu[i].allowance,&stu[i].ins urance,&stu[i].fund,&stu[i].wage);n++;}fclose(fp);ase + stu[i].position + stu[i].allowance;if(m>2000){s++;}}printf("在职工工资前三项之和中大于2000的占总职工的百分比:%.2lf\n",s/n);return(n);system("pause");}void Menu(){while(1) 和3版.高等教育出版社致谢通过学习和练习C程序的设计基础,了解了一些关于C的知识。
职工工资管理系统c++程序设计报告
职工工资管理系统c++程序设计报告一、概述本文档是职工工资管理系统的C++程序设计报告,主要介绍该系统的设计思路、功能模块、实现方法等内容。
二、设计思路职工工资管理系统主要包括职工信息管理、工资计算管理和工资发放管理三个模块。
其中,职工信息管理模块主要管理职工的基本信息;工资计算管理模块根据职工的工作内容、工作时长、职称、绩效等因素自动计算工资;工资发放管理模块则负责将计算好的工资及时准确地发放给每个职工。
本系统采用面向对象程序设计方法,将每个职工视为一个对象,实现职工信息管理、工资计算管理和工资发放管理三个模块的相关功能。
三、功能模块1. 职工信息管理实现职工信息的添加、删除、修改、查询及显示等功能。
在职工信息的添加方面,通过将职工信息对象存入文件或数据库中来实现。
2. 工资计算管理根据职工工作的不同内容、工作时长、职称、绩效等系数来计算职工工资,实现工资的自动计算。
在工资计算的过程中,需要根据不同职工的工作内容、工作时长、职称、绩效等因素来实现工资系数的自动计算,然后再根据工资系数计算每个职工的工资。
3. 工资发放管理根据已经计算好的职工工资,实现工资的及时准确发放。
在工资发放管理的过程中,需要将计算好的工资存入文件或数据库中,并实现工资的发放、查询、修改等相关功能。
四、实现方法本系统采用C++语言进行程序设计,根据面向对象的思想,将每个职工视为一个对象,实现职工信息管理、工资计算管理和工资发放管理三个模块的相关功能。
具体实现方法如下:1. 职工类职工类是一个基类,包含了职工的基本信息,如职工号、姓名、性别、年龄、工资等属性,并实现了职工信息的查询、修改、显示等基本功能。
2. 技术员类、经理类、销售员类技术员类、经理类、销售员类是职工类的派生类,分别代表不同类型的职工。
这些类继承了职工类的基本信息,并实现了特定职工类型的工资计算方法。
3. 职工工资管理类职工工资管理类是一个控制类,包含了职工信息管理、工资计算管理和工资发放管理三个模块的相关功能,并根据用户选择的操作来调用相应模块的实现方法。
C语言职工工资管理系统设计报告计划
《C语言程序设计?课程设计报告设计题目:职工薪水管理系统专业:分值班级:学号:姓名:信息工程学院1前言薪水管理系统是企业不可以缺少的一局部,它利用计算机对职工薪水进行一致管理,实现薪水管理系统的系统化、标准化和自动化,为企业提高工作效率。
本程序旨在训练读者的根本编程能力,认识管理信息系统的开发流程,熟悉 C 语言的文件和结构数组的各种根本操作。
本程序中涉及结构体、数组、文件等方面的知识。
2需求解析2.1 课程设计目的学生在教师指导下运用所学课程的知识来研究、解决一些拥有必然综合性问题的专业课题。
经过课程设计〔论文〕,提高学生综合运用所学知识来解决实责问题、使用文件资料、及进行科学实验或技术设计的初步能力,为毕业设计〔论文〕打基础。
2.2 课程设计任务职工薪水管理系统功能设计要求〔1〕输入记录 : 将每一个职工的姓名、 ID 号以及根本薪水、职务薪水、岗位津贴、医疗保险、公积金的数据作为一个记录。
该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
〔2〕显示记录 : 依照用户供应的记录也许依照职工姓名显示一个或几个职工的各项薪水和平均薪水。
〔3〕更正记录 : 可以对数据文件的任意记录的数据进行更正并在更正前后对记录内容进行显示。
〔4〕查找记录 : 可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
〔5〕删除记录 : 可删除数据文件中的任一记录。
〔6〕统计 : (A) 计算各项薪水平均薪水及总薪水 , (B)? 统计吻合指定条件 ( 如职工薪水前三项之和在 3000 元以上、 3000~2000元、 2000~1000元 ) 以内的薪水职工人数及占总职工人数的百分比。
(C) 按字符表格形式打印全部职工薪水信息表及平均薪水 (? 包括各项总的平均薪水 ) 。
〔7〕保存数据文件功能。
比方:职工薪水信息表ID 号姓名根本薪水职务薪水津贴医疗保险-公积金-总薪水01观看1286794198109135203402李明118562813594114174003王小民895438986473129404张效章1350868210116150216205彭山7453988461681098各项平均薪水 1092.2 625.2 145 88.8 108〔要求:1. 源文件采用多文件的工程结构 2. 数据储藏采用文件形式 3. 标准的 C输入输出4. 功能完满,合适的说明, 5. 关于文件的内容需要自学〕2.3 设计环境〔1〕WINDOWS 2000/2003/XP/7/Vista 系统〔2〕Visual C++2.4 开发语言C语言输查显删添修退入找示除加改出功功功功功功程能能能能能能序3解析和设计从主菜单中选择相对应的数字,使程序进入不同样的程序模块,用switch 实现其功能,程序共分为六个模块,分别为:主函数、Input( )函数(输入函数)、Display(T)显示按函姓数〔名计查算职工薪水信息并输入文件〕、更正工号更正姓名Delete (T) 删除函数〔从文件中读入信息并将其删除〕,按姓名删Chick 〔T〕盘问模块, Change(T); 更正模块, sum(T); 统计模块更正根本工更正职务工按工号查3.1 系统模块图按工号删更正津贴更正医疗更正公积图系统模块图4 详尽代码实现#include"stdio.h"#include<stdlib.h>#include<conio.h>#include<string.h> // static int n=0;// typedef struct{头文件定义静态全局变量,储藏已经读入记录的条数。
- 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 andSomething. /lab/cplusplus/nothing/index.html 2007[5]Anonymous. Something to Say. .somewhere./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'<<s alary;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 Manager {private:float gradeBonus;int grade;public:TechManager(float x=1000);void setgrade(int x);void countSalary( );};。