C语言课程设计_职工工资管理系统

这篇具有很好参考价值的文章主要介绍了C语言课程设计_职工工资管理系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

要求

设计一个职工工资管理系统:

  1. (1)输入记录:将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
  2. (2)显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。
  3. (3)修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。
  4. (4)查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
  5. (5)删除记录:可删除数据文件中的任一记录。 
  6. (6)统计: (A)计算各项工资平均工资及总工资, (B)统计符合指定条件(如职工工资前三项之和在3000元以上、3000~2000元、2000~1000元) 以内的工资职工人数及占总职工人数的百分比。(C)按字符表格形式打印全部职工工资信息表及平均工资(包括各项总的平均工资)。 
  7. (7)保存数据文件功能。

课程设计说明书

(1)系统分析:包括系统功能模块划分、数据的存储和记录属性分析
(2)概要设计:本程序功能模块根据程序设计的要求,将程序划分为6个模块分别编写。六个模块分别为:
1.输入职工基本信息模块
2.显示职工基本信息模块
3.修改职工基本信息模块
4.查找职工基本信息模块
5.删除职工基本信息模块 
6.统计职工基本信息模块C语言课程设计_职工工资管理系统
 

C语言课程设计_职工工资管理系统

C语言课程设计_职工工资管理系统

C语言课程设计_职工工资管理系统

源代码 

#include<stdio.h>
#include<windows.h>
#include<string.h>
#include<conio.h>
#define N 100
struct clerk
{
 	int num;         
 	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 search();      //查找
void search_num();  //按工号
void search_name(); //按姓名
void modify();      //修改
void sta();         //统计
void start();       //开始
void start() 
{
    	system("cls");    //清屏
	printf("\n\n\n\n\n\n");
	printf("********进入职工工资管理系统**********");
}
void menu() 
{
	system("cls"); 
	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");
	}
void input()   
{
   	int i,m;
   	system("cls");
  	printf("职工人数(1--100):");
   	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);
}
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)    //写入数据块
   	printf("文件读写错误\n");
   	fclose(fp);               //关闭文件
}
int load()  
{
    	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);    //返回人数
}
void display()         //显示信息
{
	int i,sum=0;
 	int m=load();
 	system("cls");
 	printf("职工号   姓名   基本工资  职务工资   津贴    医疗保险  公积金   总工资 \n");
 	for(i=0;i<m;i++)
 	{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 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)
    		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 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("按工号查询");search_num();break;
     			case 2:printf("按姓名查询");search_name();break;
				case 3:button=1;break;
				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 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(c)      
  		{  
           		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 sta()    //统计
{
 	int i;
 	int sum=0; 
 	int a=0,b=0,c=0;
 	int m=load();
	system("cls");
 	for(i=0;i<m;i++) 
 		{sum+=em[i].total;
  		if((em[i].total)<=2000&&em[i].total>=1000) 
    			{a++;}
  		if(em[i].total>2000&&em[i].total<=3000) 
    			{b++;}
  		if(em[i].total>3000) 
    			{c++;}
		}
	printf("\n\n工资总额为:%d\n",sum);
	printf("平均工资为:%d\n",sum/m);
	printf("\n基本工资、职务工资、津贴之和\n");
	printf("在1000-2000圆的员工占总员工的百分之%d\n",a*100/m); 
	printf("在2000-3000圆的员工占总员工的百分之%d\n",b*100/m); 
	printf("在3000圆以上的员工占总员工的百分之%d\n",c*100/m);
	printf("\n\n按任意键继续");
	getch();
	menu();
}
void main()
{   
	int n,button;
 	start();
	getch();
 	menu();
	do
 	{
    		printf("功能选择(1--7):");
    		scanf("%d",&n);
    		if(n>=1&&n<=7)
    		{
    			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:modify();break;
       		case 6:sta();break;
       		case 7:exit(0);break;
       		default :break;
  	}
			getchar();
  	printf("\n");
  	printf("按任意键继续\n");
  	getch();
     	system("cls");  
     	menu();
     	printf("功能选择(1--7):");
     	scanf("%d",&n);
     	printf("\n");
     }
 
}

设计心得 

 这两周的c语言课程设计,我加深了对c语言程序设计的理解,使自己的操作更加熟练,发现了自己的不足,为自己今后的继续学习指明了方向。在我看来,考试考察的仅仅是个别知识点,而课程设计就比较的全面。虽然说只是做了一个程序,但是其中运用到的知识确实很多所学到的内容,很好的考验了我们的综合能力。在这次课程设计中,我巩固所了学过的知识,能用汇编语言熟练地运用顺序、选择、循环三大结构,进一步掌握结构体数组的使用,文件函数的使用,掌握了子程序的定义及调用。并在调试过程中不断发现与改正错误,完善算法,改进用户体验等等。调试索然繁琐而艰苦,但极大的促进了我编程能力的提高。由于自己目前能力有限,该程序还有诸多不足,感谢指正。感谢老师的悉心教导与细致的帮助。虽然c语言的课程与课程设计都已结束,但通过这次课程设计我也发现了差距,并将在未来努力学习,积极实践,使自己能真正的掌握运用c语言。

附件:源码下载

计算机课程设计-C语言课程设计职工工资管理系统.zip-C文档类资源-CSDN文库https://download.csdn.net/download/NBITer/87372935?spm=1001.2014.3001.5503文章来源地址https://www.toymoban.com/news/detail-495834.html

到了这里,关于C语言课程设计_职工工资管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 职工信息管理系统(C语言)

    目录 1.前言 2.实现功能 3.流程图  4.源码 5.总结         距学习C语言已经相当长的一段时间了,编写一个小项目,功能实现可能不是很完美,算是复习和记录吧! 0.录入职工信息                      1.按工资高低排序 2.修改职工信息 3.显示职工信息 4.删除职工信息 5.查询

    2024年02月11日
    浏览(28)
  • 程序设计职工管理系统

    本系统要求用 C 语言建立 一个职工信息管理系统 ,本职工信息管理系统可以实现对众多员工信息 的管理 。 包含 对 职工信息 进行 添加 、 查询 、 删除 、修改 。 1.2 系统的界面要求  按任意键便可以进入主菜单,在主菜单上显示出 该系统 的功能,通过输入数字 0 到 6  来

    2024年02月08日
    浏览(31)
  • 图书管理系统——C语言课程设计

    新进图书基本信息的输入 图书借本信息的查询 对撤销图书的删除 办理借书手续 办理还书手续 提供使用文件方式存储数据 新进图书的输入,首先要输入要添加的书的基本信息,如:书名、书号、价格、作者,再通过fprintf()函数将输入的信息写入文件中 图书信息的查询可分为

    2024年02月09日
    浏览(30)
  • 【C语言课程设计】图书管理系统

    引言 : 图书管理系统是一个重要的信息管理系统,对于图书馆和书店等机构来说,它能够方便地管理图书的录入、显示、查询、修改和删除等操作。本实验基于C语言开发了一个简单的图书管理系统,通过账户名和密码进行系统访问和权限控制,并实现了上述功能。在本实验

    2024年02月15日
    浏览(26)
  • C语言课程设计-图书管理系统

    需求分析:   为了满足图书管理的要求,通过计算机技术给图书管理人员和读者借、还书带来便利。使用c语言编写了图书管理系统。本系统主要实现图书信息管理的功能,通过此系统可对图书馆库存图书信息进行管理和维护操作。实现了图书馆内管理的一般功能,包括查询

    2024年02月04日
    浏览(30)
  • C语言课程设计——航班信息管理系统

    实现功能 整体概述 系统结构 主要功能模块实现 身份验证 信息遍历 查找航班信息 编辑航班信息 整理信息顺序 预订航班 小结 通过此系统可以实现如下功能:(1) 录入 :管理员用户可以录入航班情况,数据存储在一个数据文件中;(2) 遍历 :可以查看某一类信息的所有

    2024年02月05日
    浏览(28)
  • C语言课程设计-车辆信息管理系统

    这个是我学编程以来写的第一个管理系统,现在回来看,当时写的代码还是很青涩的,写得不好大家轻点喷!!! 题目描述: 建立车辆信息管理系统,实现车辆信息的添加和维护管理。 系统存储数据要求: 每台车辆至少需要包含以下属性,系统中保存多台车辆的信息: 

    2024年02月09日
    浏览(35)
  • C语言课程设计-学生成绩管理系统

    需求分析: 1.设计题目:学生成绩管理系统 2.系统功能需求分析:实现对学生各科成绩总分及平均分的排序,和成绩的查找 概要设计 1. 功能模块图 详细设计 1. 流程图 测试结果 :列出所有功能的运行界面,并作文字说明。 1.录入成绩:录入3个人的学号和各科成绩 2.每门课程

    2024年02月11日
    浏览(36)
  • 37基于java的职工管理系统设计与实现

    本章节给大家带来一个基于java的职工管理系统设计与实现,可适用于员工管理系统,企业员工管理系统,公司员工管理系统,企业人事管理系统,基于java职工管理系统,前后端分离,员工考勤管理系统,职工奖惩管理系统,职员合同管理,HR管理系统,人事HR管理系统等;

    2024年02月05日
    浏览(88)
  • 操作系统课程设计----模拟文件管理系统(c语言)

    1.采用高级语言编写程序模拟文件系统,文件系统采用多级目录结构,实现对文件和目录的创建、删除、重命名、变更权限、显示文件内容、修改文件内容等操作。 2.撰写课程设计报告。 编写程序模拟一个简单的文件系统,具体实验内容如下: (1)实现多级目录结构,而

    2024年01月21日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包