C语言编写工资管理系统类似学生管理系统
C语言编写工资管理系统类似学生管理系统
开始界面和菜单界面B
void start() //开始界面
{system("cls");//清屏
system("color 1E"); //设置文字颜色为黄色 背景色蓝色
printf("\n\n\n\n\n\n");
printf("********************************************************************************");
printf("*****************************欢迎使用工资管理系统*****************************");
printf("*********************************************************************************\n\n\n\n\n");
printf("\t\t\t ***按任意键进入***\n");
}void menu() //菜单界面
{system("cls");system("color 1F");printf("***菜单***\n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 1 输入 \n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 2 显示 \n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 3 查找 \n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 4 删除 \n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 5 添加 \n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 6 修改 \n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 7 统计 \n\n");printf(">>>>>>>>>>>>>>>>>>>>>>>>> 8 退出 \n\n");printf("说明:*如首次使用 尚未输入数据 请先输入数据 \n *输入的数据将自动保存 \n *再次选择输入功能时原数据将被覆盖\n\n");}
主函数
void main()//主函数{ int n,button;char a;start();
getch();menu(); do{printf("功能选择(1--8):\n");scanf("%d",&n);if(n>=1&&n<=8){button=1;break;}else{button=0;printf("您输入有误,请重新选择!");}}while(button==0);while(button==1){switch(n){ case 1: input();break;case 2: display();break;case 3: search();break;case 4:del();break;case 5: add();break;case 6:modify();break;case 7:sta();break;case 8:exit(0);break;default :break;}getchar();printf("\n");printf("按任意键继续\n");getch();system("cls"); /*清屏*/menu(); /*调用菜单函数*/printf("功能选择(1--8):\n");scanf("%d",&n);printf("\n");}}
函数头和定义函数A
#include<stdio.h>
#include<windows.h>
#include<string.h>
#include<conio.h>
#define N 100
struct clerk
{
int num; //ID号
char name[20]; //姓名
int jbgz; //基本工资
int zwgz; //职务工资
int jt; // 津贴
int yb; //医疗保险
int gjj; /公积金/
int total; //总工资
}em[100];
void menu();
void input();
void save(int);
void display();
void del();
void add();
void search();
void search_num();
void search_name();
void modify();
void sta();
void start(); /定义各函数/
浏览函数
void display() /浏览函数/
{
int i,sum=0;
int m=load();
system(“cls”);
printf(“职工号 姓名 基本工资 职务工资 津贴 医疗保险 公积金 总工资 \n”);
for(i=0;i<m;i++) /m为输入部分的职工人数/
{printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total);
sum+=em[i].total;//计算员工总工资之和
}
printf("\n\n职工平均工资为:%d \n",sum/m);
}
录入函数
void input() /录入函数/
{
int i,m;
system(“cls”);
printf(“职工人数(1–100):\n”);
scanf("%d",&m);
for (i=0;i<m;i++)
{
printf("请输入职工号: ");
scanf("%d",&em[i].num);
printf("请输入姓名: ");
scanf("%s",&em[i].name);
getchar();
printf("请输入基本工资: ");
scanf("%d",&em[i].jbgz);
printf("请输入职务工资: ");
scanf("%d",&em[i].zwgz);
printf("请输入津贴: ");
scanf("%d",&em[i].jt);
printf("请输入医疗保险: ");
scanf("%d",&em[i].yb);
printf("请输入公积金: ");
scanf("%d",&em[i].gjj);
em[i].total=((em[i].jbgz)+(em[i].zwgz)+(em[i].jt)-(em[i].yb)-(em[i].gjj));//计算总工资
printf("\n");//计算总工资
}
printf("\n创建完毕!\n");
save(m);//保存职工人数m
}
删除函数
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);
for(button=1,i=0;button&&i<m;i++)//主函数中确定button==1时各函数才可以被调用
{
if(strcmp(em[i].name,name)==0)//按员工姓名查找到某员工 并调出其资料
{
printf("\n此人原始记录为:\n");//显示选定员工的信息
printf(“职工号 姓名 基本工资 职务工资 津贴 医疗保险 公积金 总工资 \n”);
printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total);
printf("\n确定删除 请按1,不删除请按0\n");
scanf("%d",&n);
if(n==1)
{
for(j=i;j<m-1;j++)//从第i项开始 将后一项的各成员的值赋给前一项各对应的成员 完成对第i项的删除
{
strcpy(em[j].name,em[j+1].name);
em[j].num=em[j+1].num;
em[j].jbgz=em[j+1].jbgz;
em[j].zwgz=em[j+1].zwgz;
em[j].jt=em[j+1].jt;
em[j].yb=em[j+1].yb;
em[j].gjj=em[j+1].gjj;
em[j].total=em[j+1].total;
}
. button=0;
}
}
}
if(!button)//button==0表明删除已完成
m=m-1;//总员工数减少一人
else
printf("\n查无此人!\n");
printf("\n 删除后的所有职工信息:\n");
save(m); //调用保存函数
display(); //调用浏览函数
printf("\n继续删除请按1,不再删除请按0\n");
scanf("%d",&t);
switch(t)
{
case 1:del();break;
case 0:break;
default :break;
}
}
添加函数
void add()/添加函数/
{
FILE*fp;
int n;
int count=0;
int i;
int m=load();
printf("\n 原来的职工信息:\n");
display();
printf("\n");
fp=fopen(“emploee_list”,“a”);
printf(“请输入想增加的职工数:\n”);//确定要加入的职工数n
scanf("%d",&n);
for (i=m;i<(m+n);i++)//添加n名员工的信息
{
printf("\n 请输入新增加职工的信息:\n");
printf("请输入职工号: ");
scanf("%d",&em[i].num);
printf("\n");
printf("请输入姓名: ");
scanf("%s",em[i].name);
getchar();
printf("请输入基本工资: ");
scanf("\t%d",&em[i].jbgz);
printf("请输入职务工资: ");
scanf("%d",&em[i].zwgz);
printf("请输入津贴: ");
scanf("%d",&em[i].jt);
printf("请输入医疗保险: ");
scanf("\t%d",&em[i].yb);
printf("请输入公积金: ");
scanf("%d",&em[i].gjj);
em[i].total=( em[i].jbgz+ em[i].zwgz + em[i].jt- em[i].yb- em[i].gjj);//计算该员工总工资
printf("\n");
count=count+1;
printf(“已增加的人数:\n”);
printf("%d\n",count);
}
printf("\n添加成功\n");
m=m+count;//将新添加员工的人数加到总员工人数中
printf("\n增加后的所有职工信息:\n");
printf("\n");
save(m);
display();//显示添加后的信息
fclose(fp);
}
统计函数
void sta()//统计函数
{
int i;
int sum=0;
int a=0,b=0,c=0;
int m=load();
system(“cls”);//清屏函数
for(i=0;i<m;i++) /m为输入部分的职工人数/
{sum+=em[i].total;
if((em[i].total)<=1500&&em[i].total>=1000)
{a++;}
if(em[i].total>1500&&em[i].total<=2000)
{b++;}
if(em[i].total>2000)
{c++;}
}
printf("\n\n工资总额为:%d\n",sum);
printf(“平均工资为:%d\n”,sum/m);
printf("\n基本工资、职务工资、津贴之和\n");
printf(“在1000-1500圆的员工占总员工的百分之%d\n”,a*100/m);
printf(“在1500-2000圆的员工占总员工的百分之%d\n”,b*100/m);
printf(“在2000圆以上的员工占总员工的百分之%d\n”,c*100/m);
printf("\n\n按任意键继续");
getch();
menu();
}
修改函数
void modify() /修改函数/
{
int num;
char name[20];
int jbgz;
int zwgz;
int jt;
int yb;
int gjj;
int b,c,i,n,t,button;
int m=load();
system(“cls”);
printf("\n 原来的职工信息:\n");
display();
printf("\n");
printf(“请输入要修改的职工的姓名:\n”);
scanf("%s",name);
for(button=1,i=0;button&&i<m;i++)
{
if(strcmp(em[i].name,name)==0)
{
printf("\n此人原始记录为:\n");
printf(“职工号 姓名 基本工资 职务工资 津贴 医疗保险 公积金 总工资 \n”);
printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total);
printf("\n确定 按1 ; 不修改请按0\n");
scanf("%d",&n);
if(n==1)
{
printf("\n需要进行修改的选项\n 1.职工号 2.姓名 3.基本工资 4.职务工资 5.津贴 6.医疗保险 7.公积金 8.返回上层\n");
printf(“请选择序号1-8:\n”);
scanf("%d",&c);
if(c>8||c<1)
printf("\n选择错误,请重新选择!\n");
}
button=0;
}
}
if(button==1)
printf("\n查无此人\n");
do
{
switch© /因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人/
{
case 1:printf("职工号改为: ");
scanf("%d",&num);
em[i-1].num=num;
break;
case 2:printf("姓名改为: ");
scanf("%s",name);
strcpy(em[i-1].name,name);
break;
case 3:printf("基本工资改为: ");
getchar();
scanf("%d",&jbgz);
em[i-1].jbgz=jbgz;
em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);
break;
case 4:printf("职务工资改为: ");
scanf("%d",&zwgz);
em[i-1].zwgz=zwgz;
em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);
break;
case 5:printf("津贴改为: ");
scanf("%d",&jt);
em[i-1].jt=jt;
em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);
break;
case 6:printf("医疗保险改为: ");
scanf("%d",&yb);
em[i-1].yb=yb;
em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);
break;
case 7:printf("公积金改为: ");
scanf("%d",&gjj);
em[i-1].gjj=gjj;
em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);
break;
case 8:modify();
break;
}
printf("\n");
printf("\n\n 确定修改 请按1 ; 重新修改 请按2: \n");
scanf("%d",&b);
}
while(b==2);
printf("\n修改后的所有职工信息:\n");
printf("\n");
save(m);
display();
printf("\n按1 继续修改 ,不再修改请按0\n");
scanf("%d",&t);
switch(t)
{
case 1:modify();break;
case 0:break;
default :break;
}
}
查询函数
void search()/查询函数/
{
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;
printf(“输入错误”);
}
}
while(button==0);//回到查询选择项
while(button==1)
{
switch(t)//选择查询方式
{
case 1:printf(“按工号查询\n”);search_num();break;
case 2:printf(“按姓名查询\n”);search_name();break;
case 3:button=2,menu();
default:break;
}
}
}
void search_num()//按职工号查询
{
int a;
int i,t;
int m=load();
printf(“请输入要查找的职工号:\n”);
scanf("%d",&a);
for(i=0;i<m;i++)
if(a==em[i].num)
{
printf(“职工号 姓名 基本工资 职务工资 津贴 医疗保险 公积金 总工资 \n”);
printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total);
break;
}
if(i==m)
printf("\n对不起,查无此人\n");
printf("\n");
printf(“返回查询函数请按1,继续查询职工号请按2\n”);
scanf("%d",&t);
switch(t)
{
case 1:search();break;
case 2: break;
default:break;
}
}
void search_name()
{
char name[30];
int i,t;
int m=load();
printf(“请输入姓名:\n”);
scanf("%s",name);
for(i=0;i<m;i++)
if(strcmp(em[i].name,name)==0)
{
printf("\n已找到,其记录为:\n");
printf(“职工号 姓名 基本工资 职务工资 津贴 医疗保险 公积金 总工资 \n”);
printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total);
}
if(i==m)
printf("\n\n");
printf("\n");
printf(“返回查询菜单请按1,继续查询姓名请按2\n”);
scanf("%d",&t);
switch(t)
{
case 1:search();break;
case 2:break;
default :break;
}
}
保存文件
void save(int m) /保存文件函数/
{
int i;
FILE*fp; //声明fp是指针,用来指向FILE类型的对象
if ((fp=fopen(“clerk_list”,“wb”))==NULL) //打开职工列表文件为空
{
printf (“打开失败\n”);
exit(0);
}
for (i=0;i<m;i++) /将内存中职工的信息输出到磁盘文件中去/
if (fwrite(&em[i],sizeof(struct clerk),1,fp)!=1)//写入数据块 &em[i]:是要输出数据的地址 sizeof(struct clerk):获取一个单体的长度 1:数据项的个数 fp:目标文件指针
printf(“文件读写错误\n”);
fclose(fp);// 缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区
}
int load() /导入函数 int型/
{
FILE*fp;
int i=0;
if((fp=fopen(“clerk_list”,“rb”))==NULL)
{
printf (“cannot open file\n”);
exit(0);
}
else
{
do
{
fread(&em[i],sizeof(struct clerk),1,fp); //读取
i++;
}
while(feof(fp)==0); //检测流上的文件结束符
}
fclose(fp);
return(i-1);//返回人数
}
C语言编写工资管理系统类似学生管理系统相关推荐
- JAVA JSP学生信息档案管理系统JSP学生管理系统JSP学生档案管理系统JSP学生信息管理系统
JAVA JSP学生信息档案管理系统JSP学生管理系统JSP学生档案管理系统JSP学生信息管理系统 protected void doGet(HttpServletRequest req, HttpS ...
- java考勤管理系统源码java学生考勤请假系统java学生考勤管理系统 java考勤系统java学生信息管理系统java学生管理系统
java考勤管理系统源码java学生考勤请假系统java学生考勤管理系统 java考勤系统java学生信息管理系统java学生管理系统 public Swingtest002() {// 设置标题se ...
- c语言课程设计2018,C语言课程设计报告(2018)——学生管理系统(17页)-原创力文档...
兰州交通大学博文学院 <C语言程序设计> 课 程 设 计 报 告 系 别: 交通运输系 班 级: 16交通运输(3)班 姓 名: 学 号: 指导老师: 2018年1月5日 兰州交通大学博文 ...
- c语言学生管理系统结点,学生管理系统(数据结构课程设计之完整代码)
<学生管理系统(数据结构课程设计之完整代码)>由会员分享,可在线阅读,更多相关<学生管理系统(数据结构课程设计之完整代码)(14页珍藏版)>请在人人文库网上搜索. 1.数据结构 ...
- C语言实用算法系列之学生管理系统_单向链表内操作_选择排序
单向链表实现 #include <stdio.h> #include <malloc.h>typedef int DATA;struct SNode {DATA data;SN ...
- C语言 学生管理系统 c++ 学生管理系统
这是在大一上学期写的课设,到大二才开始写csdn博客,花了四天时间从零到一,废话不多说,请欣赏下面的代码 c语言版 学生管理系统 #include<stdio.h> #include< ...
- java开发的图片管理系统,一个使用Java语言编写的Web本地照片管理系统
jAlbum 这是一个使用Java语言编写的本地照片管理系统.使用BS架构.服务端采用Servlet提供RESTful风格接口和动态页面供浏览器直接访问,集成照片Exif信息处理.视频流信息处理和人像 ...
- c语言编写老师信息系统源代码,学生信息管理系统c语言版源代码
自己刚学习c语言时,老师让编写的一个学生信息管理系统,仅供参考!违版必究! ------------------------------------------------------------MR ...
- c语言小学期大作业学生管理系统,小学期完成
小学期...给我最深刻的启发就是...这辈子打死我都不做程序员...太TM累了... 小学期的任务是这样的: 题目概述: 某学校近年来招生规模不断扩大,每个院系的专业.班级.学生的数量急剧增加,在校学 ...
最新文章
- iOS7导航栏和状态栏的定制
- Scrum Mastery:有效利用组织的5个步骤
- 实验:3*3卷积核10分类9*9图片卷积核数量最优值
- 我们做了一个医疗版MNIST数据集,发现常见AutoML算法没那么好用
- 用C++实现二分查找
- 纯脚本创建桌面快捷方式
- 使用参数来防止SQL注入
- 通过德雷福斯模型探寻成长之路
- Ubuntu 14.04 英文版安装中文输入法
- 2021年SWPUACM暑假集训day5单调栈算法
- 卡巴斯基正式版 送一年
- DP转HDMI方案|DP转HDMI自带SPI|AG6311设计电路|AG6311MDQ设计参考原理图
- pytorch_geometric(pyg)复现T-GCN
- 关于position: sticky的简单用法
- 自定义注解+拦截器优化项目代码
- 洛谷P1149(NOIP2008) 火柴棒等式 (C语言 + 详细注释)
- 硬盘的读写原理(图文详解)
- 浅谈车载 Android 开发趋势~
- 2020年吉林省考申论指导:解题思路总结
- k8s部署jenkins和Pod始终为pending状态“persistentvolume-controller no persistent volumes available.....”解决办法
热门文章
- java html entity encoding,实体“HTML.Version”的声明必须以''结尾
- SPT20 协议_协议离婚协议书模板锦集6篇
- 二极管为什么单向导电?
- 廉价公开课 | 快到没朋友?程序员必会的yolo模型(附福利)
- android 图片特征提取比对_判断ImageView当前的图片是哪个图片,然后比对资源文件的操作...
- js 数组移除_JS某些封装方法
- 二级考试java模拟考试_2017年计算机二级考试Java模拟试题及答案
- python查找最长公共前缀_Python实现查找字符串数组最长公共前缀示例
- Linux下shellcode的编写
- input的type为number