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语言编写工资管理系统类似学生管理系统相关推荐

  1. JAVA JSP学生信息档案管理系统JSP学生管理系统JSP学生档案管理系统JSP学生信息管理系统

    JAVA JSP学生信息档案管理系统JSP学生管理系统JSP学生档案管理系统JSP学生信息管理系统 protected void doGet(HttpServletRequest req, HttpS ...

  2. java考勤管理系统源码java学生考勤请假系统java学生考勤管理系统 java考勤系统java学生信息管理系统java学生管理系统

    java考勤管理系统源码java学生考勤请假系统java学生考勤管理系统 java考勤系统java学生信息管理系统java学生管理系统 public Swingtest002() {// 设置标题se ...

  3. c语言课程设计2018,C语言课程设计报告(2018)——学生管理系统(17页)-原创力文档...

    兰州交通大学博文学院 <C语言程序设计> 课 程 设 计 报 告 系 别: 交通运输系 班 级: 16交通运输(3)班 姓 名: 学 号: 指导老师: 2018年1月5日 兰州交通大学博文 ...

  4. c语言学生管理系统结点,学生管理系统(数据结构课程设计之完整代码)

    <学生管理系统(数据结构课程设计之完整代码)>由会员分享,可在线阅读,更多相关<学生管理系统(数据结构课程设计之完整代码)(14页珍藏版)>请在人人文库网上搜索. 1.数据结构 ...

  5. C语言实用算法系列之学生管理系统_单向链表内操作_选择排序

    单向链表实现 #include <stdio.h> #include <malloc.h>typedef int DATA;struct SNode {DATA data;SN ...

  6. C语言 学生管理系统 c++ 学生管理系统

    这是在大一上学期写的课设,到大二才开始写csdn博客,花了四天时间从零到一,废话不多说,请欣赏下面的代码 c语言版 学生管理系统 #include<stdio.h> #include< ...

  7. java开发的图片管理系统,一个使用Java语言编写的Web本地照片管理系统

    jAlbum 这是一个使用Java语言编写的本地照片管理系统.使用BS架构.服务端采用Servlet提供RESTful风格接口和动态页面供浏览器直接访问,集成照片Exif信息处理.视频流信息处理和人像 ...

  8. c语言编写老师信息系统源代码,学生信息管理系统c语言版源代码

    自己刚学习c语言时,老师让编写的一个学生信息管理系统,仅供参考!违版必究! ------------------------------------------------------------MR ...

  9. c语言小学期大作业学生管理系统,小学期完成

    小学期...给我最深刻的启发就是...这辈子打死我都不做程序员...太TM累了... 小学期的任务是这样的: 题目概述: 某学校近年来招生规模不断扩大,每个院系的专业.班级.学生的数量急剧增加,在校学 ...

最新文章

  1. iOS7导航栏和状态栏的定制
  2. Scrum Mastery:有效利用组织的5个步骤
  3. 实验:3*3卷积核10分类9*9图片卷积核数量最优值
  4. 我们做了一个医疗版MNIST数据集,发现常见AutoML算法没那么好用
  5. 用C++实现二分查找
  6. 纯脚本创建桌面快捷方式
  7. 使用参数来防止SQL注入
  8. 通过德雷福斯模型探寻成长之路
  9. Ubuntu 14.04 英文版安装中文输入法
  10. 2021年SWPUACM暑假集训day5单调栈算法
  11. 卡巴斯基正式版 送一年
  12. DP转HDMI方案|DP转HDMI自带SPI|AG6311设计电路|AG6311MDQ设计参考原理图
  13. pytorch_geometric(pyg)复现T-GCN
  14. 关于position: sticky的简单用法
  15. 自定义注解+拦截器优化项目代码
  16. 洛谷P1149(NOIP2008) 火柴棒等式 (C语言 + 详细注释)
  17. 硬盘的读写原理(图文详解)
  18. 浅谈车载 Android 开发趋势~
  19. 2020年吉林省考申论指导:解题思路总结
  20. k8s部署jenkins和Pod始终为pending状态“persistentvolume-controller no persistent volumes available.....”解决办法

热门文章

  1. java html entity encoding,实体“HTML.Version”的声明必须以''结尾
  2. SPT20 协议_协议离婚协议书模板锦集6篇
  3. 二极管为什么单向导电?
  4. 廉价公开课 | 快到没朋友?程序员必会的yolo模型(附福利)
  5. android 图片特征提取比对_判断ImageView当前的图片是哪个图片,然后比对资源文件的操作...
  6. js 数组移除_JS某些封装方法
  7. 二级考试java模拟考试_2017年计算机二级考试Java模拟试题及答案
  8. python查找最长公共前缀_Python实现查找字符串数组最长公共前缀示例
  9. Linux下shellcode的编写
  10. input的type为number