C语言实现小型工资管理系统
本文实例为大家分享了C语言实现小型工资管理系统的具体代码,供大家参考,具体内容如下
课程大作业目的
通过该大作业,考察学生分析、解决复杂问题的能力,考察学生编写较大程序的能力,检验和评价《程序设计基础》课程的学习效果
大作业内容
【C语言实现小型工资管理系统】编写一个小型工资管理系统,用来管理职工的个人基本信息及工资薪酬等数据
基本要求
1、每个职工的数据应包括:工号、姓名、性别、部门、基本工资、绩效工资、奖金、应发工资(应发工资=基本工资+绩效工资+奖金)。职工数据要求采用结构体数据类型。
2、菜单显示:显示系统的一级功能菜单(数据输入、数据修改、数据处理、数据输出、退出)。
3、数据输入:至少输入10个职工的各项数据(应发工资由系统自动计算,不需要输入)。**录入的第一条记录用自已的真实姓名,部门为自己的真实班级。**并将有自己真实姓名、班级的输出结果截屏保存到大作业总结报告中。
4、数据修改:输入工号,修改指定工号的各项数据。输出修改完成后的全部职工数据。
5、数据处理:处理方式包括:排序、查询。可提供子菜单让用户选择。其中:
(1) 排序:按工号排序,显示所有职工的全部数据。
(2) 查询:按工号查询,显示指定工号的全部数据。
6、数据输出:输出全部职工的各项数据。
7、新增 删除职工数据
8、新增 统计职工男女数量
9、退出:退出整个工资管理系统。
代码如下
#include #include struct staff{ char number[20]; char name[20]; char gender[10]; char bumen[20]; double jbgz; double jxgz; double bonus; double yfgz; }; double jbgz,jxgz,bonus,yfgz; struct staff sta[10]; void inputdata(); //1.定义数据输入函数 input datavoid modifydata(); //2.定义数据修改函数 modify datavoid processdata(); //3.定义数据处理函数 process datavoid sortdata(); //定义数据处理函数中的按工号排序数据函数sort datavoid searchdata(); //定义数据处理函数中的按工号查询数据函数search datavoid outputdata(); //4.定义数据输出函数 output datavoid deldata(); //5.定义数据删除函数 delete data新增void countgender(); //6.定义统计男女职工数量函数 count gender新增 int main(){ int i,choice; while(1) {for(i=1; i<90; i++)printf("*"); printf("\n"); printf("1.数据输入2.数据修改3.数据处理4.数据输出5.数据删除6.统计男女职工数量7.退出\n"); for(i=1; i<90; i++)printf("*"); printf("\n"); do{printf("请根据菜单输入数字:"); scanf("%d",&choice); }while(choice!=1&&choice!=2&&choice!=3&&choice!=4&&choice!=5&&choice!=6&&choice!=7); if(choice==7)break; else{if(choice==1) inputdata(); else if(choice==2) modifydata(); else if(choice==3) processdata(); else if(choice==4) outputdata(); else if(choice==5) deldata(); else if(choice==6) countgender(); else printf("该数不合法; \n"); //另加} } return 0; }void inputdata(){ int i; for(i=1; i<=10; i++) {printf("请输入第%d位职工的工号,姓名,性别,部门,基本工资,绩效工资,奖金:",i); scanf("%s %s %s %s %lf %lf %lf",&sta[i].number,&sta[i].name,&sta[i].gender,&sta[i].bumen,&sta[i].jbgz,&sta[i].jxgz,&sta[i].bonus); //输入第i位职工的工号,姓名,性别,部门,基本工资,绩效工资,奖金sta[i].yfgz=sta[i].jbgz+sta[i].jxgz+sta[i].bonus; printf("输入成功\n"); }}void modifydata(){ int i; char num[20]; printf("请输入您想要修改职工的数据的工号:"); scanf("%s",&num); for(i=1; i<10; i++) {if(strcmp(num,sta[i].number)==0){printf("请输入新工号,姓名,性别,部门,基本工资,绩效工资,奖金\n"); scanf("%s %s %s %s %lf %lf %lf",&sta[i].number,&sta[i].name,&sta[i].gender,&sta[i].bumen,&sta[i].jbgz,&sta[i].jxgz,&sta[i].bonus); sta[i].yfgz=sta[i].jbgz+sta[i].jxgz+sta[i].bonus; }printf("修改成功!\n"); printf("修改后的数据为:\n"); printf("工号姓名性别部门基本工资绩效工资奖金应发工资\n"); printf("%s%s%s%s%f%f%f%f\n",sta[i].number,sta[i].name,sta[i].gender,sta[i].bumen,sta[i].jbgz,sta[i].jxgz,sta[i].bonus,sta[i].yfgz); break; }}void processdata(){ int choice,i; for(i=1; i<30; i++)printf("*"); printf("\n"); printf("二级菜单:\n"); printf("1.排序 2.查询\n"); for(i=1; i<30; i++)printf("*"); printf("\n"); printf("请根据菜单输入数字:"); scanf("%d",&choice); if(choice==1) sortdata(); else searchdata(); }void sortdata(){ int i,j,k; char n[10]; for(i=1; i<=10; i++) {for(j=1; j<=10; j++){if(strcmp(sta[i].number,sta[j].number)>0){strcpy(n,sta[j].number); strcpy(sta[j].number,sta[i].number); strcpy(sta[i].number,n); }} } for(k=1; k<=10; k++) {printf("%s%s%s%s%lf%lf%lf\n",sta[k].number,sta[k].name,sta[k].gender,sta[k].bumen,sta[k].jbgz,sta[k].jxgz,sta[k].bonus,sta[k].yfgz); }}void searchdata(){ int i; char snum[20]; //snum = searchnumber printf("请输入您想要查询的职工工号:"); scanf("%s",&snum); for(i=1; i<10; i++) {if(strcmp(snum,sta[i].number)==0){printf("该职工的数据为:\n"); printf("工号姓名性别部门基本工资绩效工资奖金应发工资\n\n"); printf(" %s%s%s%s%f%f%f%f\n",sta[i].number,sta[i].name,sta[i].gender,sta[i].bumen,sta[i].jbgz,sta[i].jxgz,sta[i].bonus,sta[i].yfgz); }break; }}void outputdata(){ int i; printf("工号姓名性别部门基本工资绩效工资奖金应发工资\n"); for(i=1; i<=10; i++) {printf(" %s%s%s%s%f%f%f%f\n",sta[i].number,sta[i].name,sta[i].gender,sta[i].bumen,sta[i].jbgz,sta[i].jxgz,sta[i].bonus,sta[i].yfgz); }}void deldata(){ int i,j,choi; //char Y=Y; //char N=N; char delnum[20]; printf("请输入您想要删除职工数据的工号:"); scanf("%s",&delnum); for(i=1; i<10; i++) {if(strcmp(delnum,sta[i].number)==0){printf("该职工的数据为:\n"); printf("工号姓名性别部门基本工资绩效工资奖金应发工资\n"); printf(" %s%s%s%s%f%f%f%f\n",sta[i].number,sta[i].name,sta[i].gender,sta[i].bumen,sta[i].jbgz,sta[i].jxgz,sta[i].bonus,sta[i].yfgz); printf("确认删除该名职工的数据吗?(1.确认2.取消)\n"); scanf("%d",&choi); if(choi==1){for(i=1,j=2; j<=10; i++,j++){strcpy(sta[i].number,sta[j].number); strcpy(sta[i].name,sta[j].name); strcpy(sta[i].gender,sta[j].gender); strcpy(sta[i].bumen,sta[j].bumen); sta[i].jbgz=sta[j].jbgz; sta[i].jxgz=sta[j].jxgz; sta[i].bonus=sta[j].bonus; }printf("删除成功!!\n"); }else break; } }}void countgender(){ int i,count=0,fecount=0; char gen[10]="男"; for(i=1; i<=10; i++) {if(strcmp(gen,sta[i].gender)==0) count++; } fecount=10-count; printf("该公司有%d名男职工,有%d名女职工\n",count,fecount); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- C语言中斐波那契数列的三种实现方式(递归、循环、矩阵)
- SpringBoot整合JWT的实现示例
- C语言返回值指针的函数详解
- springCloud|springCloud gateWay 统一鉴权的实现代码
- C语言实现简单的五子棋游戏
- 《C语言杂俎》|证明堆排序的时间复杂度
- R语言ARMA-GARCH-COPULA模型和金融时间序列案例
- 【重磅发布】蚂蚁动态卡片,让 App 首页实现敏捷更新
- android|android studio新闻界面,课内资源 - 基于Android Studio实现的新闻APP
- sql时间段切分实现每隔x分钟出一份高速门架车流量