人力资源C语言职工档案管理系统

人力资源C语言职工档案管理系统人力资源C语言职工档案管理系统
一、项目概述
人力资源C语言职工档案管理系统是一款专门用来管理企业职工档案的软件。

该软件能够记录企业职工的个人信息、岗位信息、工资信息等,并能自动生成工资表、考勤统计表等多种报表。

该软件的目的是帮助企业高效便捷地管理职工档案,提高企业管理水平和效率。

二、需求分析
该软件主要需求如下:
1. 对职工档案进行分类管理,包括个人信息、岗位信息、工资信息等。

2. 实现简单易用的数据录入、修改和查询功能。

3. 实现自动生成工资表、考勤统计表和其他需要的报
表。

4. 实现对职工档案的备份和恢复功能。

5. 数据库的安全易维护性。

三、功能设计
1. 个人信息管理功能:
该功能主要管理职工的个人信息,包括姓名、性别、身份证号、联系方式等。

2. 岗位信息管理功能:
该功能主要管理职工的岗位信息,包括岗位名称、所属部门、入职时间、离职时间等。

3. 工资信息管理功能:
该功能主要管理职工的工资信息,包括基本工资、补贴、奖金、扣除项等。

4. 数据录入、修改和查询功能:
该功能能够实现对各个功能模块中的数据进行录入、修改和查询。

5. 报表生成功能:
该功能能够自动生成工资表、考勤统计表等多种报表。

6. 数据库备份和恢复功能:
该功能能够实现对职工档案数据库进行备份和恢复。

7. 数据库的安全易维护性:
该功能需实现数据库的安全管理和易维护性。

四、技术方案
1. 开发语言:C语言
2. 数据库管理系统:MySQL
3. 开发工具:Dev-C++
4. 界面设计:EasyX图形库
5. 报表生成:Excel
六、测试方案
1. 功能测试:
对软件所有功能模块都要进行测试,确保所有功能都能够正常运行。

2. 用户界面测试:
针对软件界面进行测试,确保软件的用户界面友好,易操作。

3. 性能测试:
测试软件在大数据量、多用户同时访问时的性能表现,确保软件在高负载下的表现。

七、成果展示
该软件能够准确地记录职工档案信息,具备较好的实用性和易用性。

同时,该软件提供了多种数据可视化的报表,便于企业高层管理人员及时了解企业运营状况。

合集下载

职工档案管理系统c语言编写

职工档案管理系统c语言编写

职工档案管理系统c语言编写一、背景随着社会的发展和经济的繁荣,人力资源的管理越来越重要,而企业职工档案管理是人力资源管理的基本工作。

目前,很多企业都采用电子化的方式来管理职工档案,这种方式可以提高管理效率,减少人工的干预,保证档案数据的安全性和完整性。

本文将介绍一种职工档案管理系统的设计和实现,并采用C语言进行编写。

二、系统功能该系统包含三个部分,分别是登陆界面、职工档案管理界面和查询统计界面。

系统的主要功能如下:1、登陆界面:用户输入账号和密码即可进入系统,若输入错误,则系统提示错误信息。

2、职工档案管理界面:管理员可以添加、删除、修改职工档案,并可以进行批量操作。

每个档案包括的信息有:姓名、性别、出生日期、手机号码、邮箱、部门、职位、工资等。

3、查询统计界面:管理员可以根据不同的条件进行查询,得到符合条件的职工档案,并可以将查询结果导出为Excel格式,同时还可以进行数据的统计分析,如查看职工分布情况、薪资分布情况等。

三、系统架构和实现该系统采用C语言进行编写,采用MVC架构,即Model、View、Controller模式。

其中,Model层负责职工档案数据的存储和操作,View层负责显示和操作界面,Controller层负责调度和管理Model和View层。

1、Model层职工档案数据的存储采用MySQL数据库,通过C语言中的MySQL API来实现数据库的连接和操作。

每个职工档案都是一个结构体,用链表来存储,并使用文件来进行持久化保存。

2、View层界面采用C语言中的图形库WinAPI,并采用多线程来实现界面的响应和操作。

每个界面都对应了一个窗口,通过消息机制来管理窗口的事件处理。

界面的布局和样式采用了MFC控件的UI界面设计方式,在此基础上进行了二次封装。

3、Controller层Controller主要用于协调和管理Model和View,实现系统中各个部分的耦合。

它负责处理前端发来的请求,调用Model 的相应方法,然后将结果返回给View进行显示。

c语言课设职工管理系统

c语言课设职工管理系统

c语言课设职工管理系统《C语言课设职工管理系统》在当前社会中,职工管理对于一个企事业单位来说至关重要。

如何高效地管理职工,是每个企事业单位都要面临的问题。

为了解决这一问题,我们本次课程设计选择了使用C语言来开发一个职工管理系统。

下面将一步一步回答与该系统相关的问题。

1.系统需求分析人力资源管理系统对于企事业单位来说十分重要,所以我们的职工管理系统必须具备以下基本功能:-能够录入、修改和删除职工信息;-能够查询和打印职工信息表;-能够计算和输出职工薪资;-具备良好的用户操作界面。

2.系统设计与实现在设计与实现过程中,我们可以使用结构体来表示职工的信息,如下所示:cs t r u c t E m p l o y e e{c h a r n a m e[20];职工姓名i n t a g e;职工年龄c h a r g e nde r[5];职工性别f l o a t s a l a r y;职工薪资};同时,我们还可以设计一个数组来存储多个职工的信息:cs t r u c t E m p l o y e ee m p l o y e e s[M A X_E M P L O Y E E S];职工信息数组在实现过程中,我们可以使用菜单功能来提供用户操作选项,并根据用户选择进行相应的操作。

下面是一个示例菜单代码:cw h i l e(1){p r i n t f("职工管理系统\n");p r i n t f("1.录入职工信息\n");p r i n t f("2.修改职工信息\n");p r i n t f("3.删除职工信息\n");p r i n t f("4.查询职工信息\n");p r i n t f("5.计算薪资\n");p r i n t f("6.打印职工信息表\n");p r i n t f("0.退出系统\n");p r i n t f("请输入你的选择:");s c a n f("d",&c h o i c e);s w i t c h(c h o i c e){c a s e1:录入职工信息的代码逻辑b r e a k;c a s e2:修改职工信息的代码逻辑b r e a k;c a s e3:删除职工信息的代码逻辑b r e a k;c a s e4:查询职工信息的代码逻辑b r e a k;c a s e5:计算薪资的代码逻辑b r e a k;c a s e6:打印职工信息表的代码逻辑b r e a k;c a s e0:退出系统的代码逻辑b r e a k;d e f a u l t:p r i n t f("无效的选择,请重新输入!\n");b r e a k;}}3.系统测试与调试在系统功能完成后,我们要进行测试与调试,以确保系统的稳定性和正确性。

C人事管理系统

C人事管理系统

C人事管理系统简介C人事管理系统是一个基于C语言开发的员工管理系统,旨在帮助企业高效地管理员工和人力资源。

该系统可以实现员工信息的录入、查询、修改和删除等功能,同时还支持部门管理、岗位管理、薪资管理等人力资源管理功能。

通过C人事管理系统,企业可以更好地管理员工信息,实现人事管理的科学化和规范化。

功能模块C人事管理系统包含以下主要功能模块:1.员工管理模块:用于员工信息的录入、查询、修改和删除。

2.部门管理模块:用于部门信息的录入、查询、修改和删除。

3.岗位管理模块:用于岗位信息的录入、查询、修改和删除。

4.薪资管理模块:用于员工薪资信息的录入、查询、修改和计算。

使用说明系统安装1.确保已经安装了C编译器,比如GCC。

2.下载C人事管理系统的源代码文件。

3.打开命令行界面,进入源代码所在目录。

4.在命令行中输入如下命令进行编译:gcc main.c -o HRMS。

5.编译成功后,将会生成可执行文件HRMS。

系统初始化1.双击可执行文件HRMS或在命令行中输入./HRMS 启动系统。

员工管理1.进入员工管理模块后,可以选择添加员工、查询员工、修改员工或删除员工。

2.输入员工的基本信息,包括姓名、性别、年龄、所属部门和岗位。

确认后信息将保存在系统中。

3.查询员工时,可以按照员工编号、姓名、部门或岗位等条件进行查询。

4.修改员工信息时,输入员工编号,然后修改相应的信息。

5.删除员工时,输入员工编号,系统将会删除该员工的信息。

部门管理1.进入部门管理模块后,可以选择添加部门、查询部门、修改部门或删除部门。

2.输入部门的名称和描述,确认后部门信息将保存在系统中。

3.查询部门时,可以按照部门名称进行查询。

4.修改部门信息时,输入部门名称,然后修改相应的信息。

5.删除部门时,输入部门名称,系统将会删除该部门的信息。

岗位管理1.进入岗位管理模块后,可以选择添加岗位、查询岗位、修改岗位或删除岗位。

2.输入岗位的名称和描述,确认后岗位信息将保存在系统中。

C语言人事管理系统设计

C语言人事管理系统设计

设计题目:人事管理系统设计目录:1.设计任务---------------------------------------------------------------------------------------------12.正文-----------------------------------------------------------------------------------------------------------2(1).系统模块图------------------------------------------------------------------------------------------3 (2).模块说明---------------------------------------------------------------------------------------------3 (3).用户使用说明---------------------------------------------------------------------------------------3 (4).测试结果---------------------------------------------------------------------------------------------33.设计小结--------------------------------------------------------------------------------------------------94.附录-----------------------------------------------------------------------------------------------------------10一.设计任务1、需求分析:人事档案信息采用文件存储,因而要提供文件的输入输出操作;根据学院人事的变动情况,添加删除记录,因而要提供文件的添加删除操作;根据编号和姓名进项查询,所以要提供文件的查找操作;高级编辑功能,就是提供文件的修改操作;统计功能要提供统计操作;排序功能要提供用排序算法对文件记录的排序;另外还要提供键盘式选择菜单以实现功能选择。

人事档案管理系统_c语言

人事档案管理系统_c语言

人事档案管理系统_c语言人事档案管理系统是一种用于管理和维护组织内员工档案的软件系统。

随着企业的发展和人力资源管理的进步,人事档案管理系统已经成为企业管理不可或缺的一部分。

本文将介绍一个C语言实现的人事档案管理系统,包括系统设计和功能。

一、系统设计1.系统结构人事档案管理系统主要由以下几个组成部分:• 用户界面模块:用于管理和维护档案等信息与操作。

• 数据库模块:用于存储和管理各类档案资料等数据。

• 后台模块:用于管理人事档案管理系统的整体运作和处理。

2.系统功能设计人事档案管理系统主要功能包括以下几个方面:(1)用户登录,实现用户身份验证和权限管理;(2)新增、编辑、删除、查询员工等记录,实现简单员工档案的管理。

(3)工资信息管理,包括薪资发放、薪资统计等功能。

(4)请假管理,包括请假类型、请假时间、请假理由等。

(5)培训管理,包括员工培训计划、培训内容、培训结果等方面的管理。

(6)人事报表生成与查询,包括人事统计分析、人力资源计划等多个方面的管理。

二、C语言实现1.系统架构首先,需要确定系统的核心模块和需求,例如文件管理、用户管理、员工管理、考勤管理等。

然后,可以使用C语言中的结构体和函数对这些核心模块进行设计和实现。

2.模块设计(1)文件管理文件管理模块用于管理人事档案管理系统的数据文件,包括打开、创建、保存、修改、删除等功能。

由于数据是非常重要的,所以应该对其进行备份和恢复操作。

(2)用户管理用户管理模块用于管理人事档案管理系统的用户信息,包括用户的姓名、密码、权限等。

通过用户管理模块,可以对不同的用户进行身份验证和权限管理。

(3)员工管理员工管理模块用于管理和维护员工的档案信息,包括员工姓名、工号、部门、职位、工资、请假信息等。

通过员工管理模块,可以方便地查询和管理员工的信息。

(4)考勤管理考勤管理模块用于管理员工的考勤信息,包括上班打卡、下班打卡等。

通过考勤管理模块,可以方便地查询和管理员工的请假、加班、旷工等信息。

职工档案管理系统c语言课程设计报告与代码

职工档案管理系统c语言课程设计报告与代码

建立 p 结点 申请空间 p=head,p 指向第一个结点 头结点是否为空 (if判定) p 结点不为空 工号是否相等 是 跳出 循环 p指向下一结点 否
是 没有 数据 可以 显示
否
2 姓名查找函数struct employee *Findname(struct employee *head,char findname[]) ○ 这是一个有参函数,形参为“链表头的指针”,用来查找指定工号的职工信息,函 数结束后,带回一个指向职工信息的指针。 算法:将指针p指向工号,依次与寻找的工号进行对比,相等则返回指针p。 N-S流程图如下:
返回 head 指针
4.9 保存数据到文件函数 void Save(struct employee *head)
这是一个不返回值的有参函数,形参为“链表头的指针” ,可以把职工记录保存在电脑 上指定的 TXT 文件中。 p=head 文件是否能打开 否 输出出 错信息 当 p 不为空 fprintf()函数将信息输入进文件 p=p->next,指针后移 关闭文件 是
(3)最初设计时插入功能与排序功能是由两部分组成,后来查阅了书籍后发现两者可 以合二为一,更加简洁,就将其学习后运用到了自己的编程中。 (4)刚开始界面设计的有点乱,后来经过许多次的修改,并且学习了清屏功能的用法, 整个界面顿时清爽了很多。 (5)用两种排序最初是放在同一个函数中,造成排序重复,于是重新建立了一个新的 函数用来排序,在读取文件时进行排序,然后系统终于可以运用两种排序方式。
苏州科技学院
二○一四 ~二○一五学年第二学期
电子与信息工程学院
课程设计报告书
课程名称: 班 学 姓 级: 号: 名: 程序设计实践 电子 1412 14200106214 孙玮 任建平

C语言人事档案管理系统

#include <stdio.h>#include <string.h>#include <stdlib.h>#define N 10struct worker{char num[20]; //员工编号char name[20]; //员工名称char sex;//员工性别int age;//员工年龄char remark[20];//员工备注} stu[10];void input()//员工基本信息录入{int i=0;FILE *fp; //文献指针for(i=0;i<N;i++) //录入信息{printf("\n请输入第%d个员工旳基本信息:\n",i+1); printf("员工编号: ");scanf("%s",stu[i].num);printf("员工名称: ");scanf("%s",stu[i].name);fflush(stdin);printf("员工性别: ");scanf("%c",&stu[i].sex);printf("员工年龄:");scanf("%d",&stu[i].age);printf("备注: ");scanf("%s",stu[i].remark);}if((fp=fopen("worker-massge","wb"))==NULL) //判断文献打开与否成功{printf("文献打开失败");exit(0);}for(i=0;i<N;i++){if(fwrite(&stu[i],sizeof(struct worker),1,fp)!=1)printf("file writer error\n");}fclose(fp);}void show(int j)//显示员工信息{int i;FILE *fp;if((fp=fopen("worker-massge","rb"))==NULL)//判断文献打开与否成功{printf("文献打开失败");exit(0);}for(i=0;i<j;i++)fread(&stu[i],sizeof(struct worker),1,fp); /*读磁盘文献*/printf("\n***********员工基本信息表*************\n"); //显示员工信息printf("编号\t名称\t性别\t年龄\t备注\n");for(i=0;stu[i].age!=-1&&i<N;i++){printf("\n%s\t%s\t%c\t%d\t%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].remark); }}void search()//按照员工名称进行查询{int a,i,g,e;char d,r[20],c[20];FILE *fp;if((fp=fopen("worker-massge","rb"))==NULL)//判断文献打开与否成功{printf("文献打开失败");return;}for(i=0;i<N;i++)fread(&stu[i],sizeof(struct worker),1,fp); /*读磁盘文献*/fclose(fp);while(g){printf("***********请选择查询方式***************\n");printf(" 1,姓名2,序号3,性别4,年龄\n ");printf("****************************************\n");scanf("%d",&a);switch(a){case 1:printf("请输入姓名:");scanf("%s",r);printf("姓名序号性别年龄备注\n ");for(i=0;i<N;i++){if(strcmp(stu[i].name,r)==0)printf("\n%s\t%s\t%c\t%d\t%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].remark);}break;case 2:printf("请输序号:");scanf("%s",&c);printf("姓名序号性别年龄备注\n ");for(i=0;i<N;i++){if(strcmp(c,stu[i].num)==0)printf("\n%s\t%s\t%c\t%d\t%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].remark);}break;case 3:printf("请输性别:");getchar();scanf("%c",&d);printf("姓名序号性别年龄备注\n ");for(i=0;i<N;i++){if(stu[i].sex==d)printf("\n%s\t%s\t%c\t%d\t%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].remark);}break;case 4:printf("请输年龄:");scanf("%d",&e);printf("姓名序号性别年龄备注\n ");for(i=0;i<10;i++){if(stu[i].age==e)printf("\n%s\t%s\t%c\t%d\t%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].remark);}break;default :printf("错误");break;} printf("-----__与否继续查询(是按1/否按0):");scanf("%d",&g);}}void change(int k)//修改员工信息{int i;FILE *fp;char listname[20];char password[10];do{printf("请输入修改密码\n");scanf("%s",password);if((strcmp(password,"0819")!=0)){printf("密码错误,不能修改\n");continue;}break;}while(1);printf("密码对旳,可以修改\n");if((fp=fopen("worker-massge","rb"))==NULL){ printf("文献打开失败");return ;}for(i=0;i<k;i++)fread(&stu[i],sizeof(struct worker),1,fp); /*读磁盘文献*/printf("\n\n-----------------员工信息表------------------\n\n");printf("编号\t姓名\t性别\t年龄\t备注\n");for(i=0;i<k;i++){printf("%s\t%s\t%c\t%d\t%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].remark); }printf("请输入要更改旳员工旳编号:");scanf("%s",listname);for(i=0;i<k;i++){if(strcmp(listname,stu[i].num)==0)break;}if(i<k) //修改员工信息{printf("\n请修改员工旳信息:\n");printf("员工编号: ");scanf("%s",stu[i].num);printf("员工姓名: ");scanf("%s",stu[i].name);fflush(stdin);printf("员工性别: ");scanf("%c",&stu[i].sex);printf("员工年龄: ");scanf("%d",&stu[i].age);printf("员工备注: ");scanf("%s",&stu[i].remark);}else{printf("对不起,你请输入员工编号是错误旳或没有此编号");return ;}//if((fp=fopen("worker-massge","wb"))==NULL){printf("文献打开失败");exit(0);}for(i=0;i<k;i++) //往文献里写修改旳数据{if(fwrite(&stu[i],sizeof(struct worker),1,fp)!=1)printf("file writer error\n");}fclose(fp);}int del() //员工信息删除{int i,j,k=0;FILE *fp;char listname[20];printf("请输入要删除旳员工旳编号:");scanf("%s",listname);if((fp=fopen("worker-massge","rb"))==NULL) {printf("文献打开失败");return 0; ;}for(i=0;i<N;i++)fread(&stu[i],sizeof(struct worker),1,fp); /*读磁盘文献*/ fclose(fp);for(i=0;i<N;i++){if(strcmp(listname,stu[i].num)==0){k=1;break;}}if(k==1) //修改员工信息{for(j=i;j<N-1;j++){stu[j]=stu[j+1];}}else{printf("对不起,你请输入员工编号是错误旳或没有此编号");return 0;}strcpy(stu[j].num,"000");stu[j].age=-1;//往文献里写if((fp=fopen("worker-massge","wb"))==NULL) {printf("文献打开失败");return 0;}for(i=0;i<N-1;i++) //往文献里写修改旳数据{if(fwrite(&stu[i],sizeof(struct worker),1,fp)!=1) printf("file writer error\n");}fclose(fp);return N-1;}void save(int j) //保存员工信息{ FILE *fp;int i;if((fp=fopen("worker-massge","wb"))==NULL) {printf("文献打开失败");exit(0);}for(i=0;i<j;i++){if(fwrite(&stu[i],sizeof(struct worker),1,fp)!=1) printf("file writer error\n");}printf("保存成功\n");fclose(fp);}void main(){char choice; //输入数值,拟定选项.char password[10];do{printf("请输入进入人事档案管理系统旳密码\n"); scanf("%s",password);if((strcmp(password,"0819")!=0)){printf("密码错误,不能进入主界面\n"); continue;}break;}while (1);{printf("密码对旳,可以进入人事档案管理系统\n");}while(choice!=0){printf("********************人事档案管理系统*********************\n");printf(" 1.输入员工基本信息& 2.显示员工基本信息\n");printf(" 3.保存员工基本信息& 4.删除员工基本信息\n");printf(" 5.修改员工基本信息(要输入密码) & 6.查询员工基本信息\n");printf(" 0.退出系统\n");printf("*********************************************************\n");printf("请选择以上目录(0-6)\n");scanf("%d",&choice);switch (choice){case 1:input();//输入员工信息break;case 2:show(N);//显示员工信息break;case 3:save(N); //保存员工信息break;case 4:del();//删除员工信息break;case 6:search();//查询员工break;case 5:change(N);//修改改员工信息break;}}}。

人事管理系统c语言版

⼈事管理系统c语⾔版int menu(){printf("请按提⽰输⼊完毕操作!\n");printf("1.查询员⼯信息\n");printf("2.统计员⼯数量\n");printf("3.录⼊员⼯信息\n");printf("4.删除员⼯信息\n");printf("5.按id排序全部员⼯\n");printf("6.打印全部员⼯信息\n");printf("7.退出系统\n");return 0;}如menu()函数所看到的,该系统⼀共同拥有7个功能#include <stdio.h>#include <stdlib.h>#include <string.h>struct emp{int id;char name[50];struct emp * next;// struct emp * prev;};struct emp * initList();struct emp * addListTailNode(struct emp * head);struct emp * deleteListNode(struct emp * head,int id);struct emp * searchEmp(struct emp * head,int id);int printList(struct emp * l);int printNode(struct emp * p);struct emp * sortList(struct emp * head);int getListLen(struct emp * head);int writeToDisk(struct emp * head);struct emp * readFromDisk();int menu();int usage(struct emp * head);#include "emp.h"int main(){struct emp * head;head=readFromDisk();usage(head);return 0;}struct emp * initList(){struct emp * head;head=(struct emp *)malloc(sizeof(struct emp));head->next=NULL;return head;}struct emp * addListTailNode(struct emp * head){int id;char name[50];struct emp * p, * last , * check;last = head;while(last->next!=NULL){last=last->next;}printf("依次输⼊:员⼯id号,姓名!\n");scanf("%d%s",&id,&name);check = head;while(check!=last){ //遍历check=check->next;if(id==check->id){printf("加⼊�失败!员⼯id号反复!\n");return head;}}p=(struct emp *)malloc(sizeof(struct emp));p->id=id;strcpy(p->name,name);//last->next=p;last=p;p->next=NULL;printf("%s员⼯信息已加⼊�!\n",p->name);return head;}struct emp * deleteListNode(struct emp * head,int id){struct emp * p,* q;p = head->next;while(p!=NULL){if(p->next->id==id){break;}p=p->next;}if(head->next==NULL){printf("书籍信息为空!删除失败!\n");}else{q = p->next;p->next = q->next;printf("%s书籍信息被删除!\n",q->name);free(q);}return head;}struct emp * searchEmp(struct emp * head,int id){//查询,返回节点信息 struct emp * p;p = head->next;while(p!=NULL){if(p->id==id){break;}p=p->next;}return p;}int printNode(struct emp * p){//打印节点信息if(p!=NULL){printf("员⼯id: %d 员⼯姓名:%s\n",p->id,p->name);}else{printf("系统内⽆该员⼯信息!\n");}return 0;}int printList(struct emp * head){ //打印整条链表struct emp * p;p = head->next;while(p!=NULL){printNode(p);p=p->next;}return 0;}struct emp * sortList(struct emp * head){//排序struct emp * p,* q;int temp_id;char temp_name[50];for(p=head->next;p!=NULL;p=p->next){for(q=p->next;q!=NULL;q=q->next){if(p->id>q->id){temp_id = q->id;q->id = p->id;p->id = temp_id;//strcpy(temp_name,q->name);strcpy(q->name,p->name);strcpy(p->name,temp_name);}}}return head;}int getListLen(struct emp * head){int len=0;struct emp * p;p=head->next;while(p!=NULL){len++;p=p->next;}return len;}int writeToDisk(struct emp * head){FILE * fp;struct emp * p;if((fp = fopen("D:\\emp.hhtx", "w")) == 0){printf("写⼊失败……!\n");return 0;}//p=head->next;while(p!=NULL){fwrite(p,sizeof(struct emp),1,fp);printf("%d %s\n",p->id,p->name);p=p->next;}fclose(fp);return 0;}struct emp * readFromDisk(){FILE * fp;struct emp * head,* last,* p,* temp;head = initList();if((fp = fopen("D:\\emp.hhtx", "r")) == 0){printf("载⼊失败……未找到存档数据!\n\n"); return head;}//last = head;p=(struct emp *)malloc(sizeof(struct emp)); while(p!=NULL){p=(struct emp *)malloc(sizeof(struct emp)); fread(p,sizeof(struct emp),1,fp);printf("读取数据: %d %s\n",p->id,p->name); //last->next=p;last=p;p=p->next;}fclose(fp);printf("系统数据初始化完毕!");return head;}int menu(){printf("请按提⽰输⼊完毕操作!\n");printf("1.查询员⼯信息\n");printf("2.统计员⼯数量\n");printf("3.录⼊员⼯信息\n");printf("4.删除员⼯信息\n");printf("5.按id排序全部员⼯\n");printf("6.打印全部员⼯信息\n");printf("7.退出系统\n");return 0;}int usage(struct emp * head){int x,id;struct emp * p;menu();while(1){printf("请输⼊序列号:");scanf("%d",&x);switch(x){case 1:printf("输⼊所要查询的员⼯的id号:");scanf("%d",&id);p = searchEmp(head,id);printNode(p);printf("---------------------------------\n");break;case 2:printf("系统中⼀共存在%d个员⼯\n",getListLen(head)); break;case 3:head=addListTailNode(head);printf("---------------------------------\n");break;case 4:printf("输⼊所要删除的员⼯的id号:");scanf("%d",&id);head=deleteListNode(head,id);printf("---------------------------------\n");break;case 5:printf("排序開始……\n");head=sortList(head);printf("排序已完毕!\n");printf("---------------------------------\n");break;case 6:printList(head);printf("---------------------------------\n");break;case 7:writeToDisk(head);printf("保存完毕……\n");printf("已退出系统!\n");printf("---------------------------------\n");return 0;default:return 0;}}return 0;}。

C语言-人事管理系统

人事管理管理系统[要求]某高校主要人员有:在职人员(行政人员、教师、一般员工)、退休人员和临时工。

现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。

其中,人员编号唯一,不能重复。

(1)添加删除功能:能根据学院人事的变动情况,添加删除记录;(2)查询功能:能根据编号和姓名进行查询;(3)编辑功能(高级):根据查询对相应的记录进行修改,并存储;(4)统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数(硕士学位以上或者副教授以上)),统计要求同时显示被统计者的信息;(5)排序功能:按照年龄、来院时间进行排序;(6)保存功能:能对输入的数据进行相应的存储;一、需求分析:根据题目要求,职工信息是存放在文件中的,所以应该提供相应的文件的输入输出的功能,在程序中应该有添加删除,查询,编辑,统计,排序,保存等程序实现相应的操作,另外菜单式的选择方式选择程序的功能也是必须需的。

另外程序中要求存储的模块,采用的方式均为将原文件中的所有数据读入内存,在内存中处理之后以覆盖的方式写入文件中重新储存,这样的方法容易理解、容易编写,但当文件中的数据量很大时,这种方法也存在一定的难度,在本程序中将N定为100,也即最多可储存的职工人数为100;二、总体设计:根据以上需求分析,将程序分成以下几个模块:1、新建档案信息;2、删除信息;3、追加信息;4、搜索查找信息(按姓名或者编号搜索);5、浏览全部信息;6、修改信息;7、信息排序;8、信息统计;三、详细设计;1、主函数:〈1〉需求分析:为使系统执行完每部分功能后能够方便的回到系统主界面,main()函数设计的很简单,只包含一个menu()函数,其余的全部功能都通过menu()函数调用来实现,并通过menu()函数的递归调用实现返回主界面的功能。

main()函数定义如下:main(){menu();}而menu()定义如下:〈2〉流程图:void menu(){int n,w1;do{printf("\n\t\t\t\t菜\t单\n");printf("\n\t\t0\t新建档案信息\n\n");printf("\t\t1\t删除信息\n\n");printf("\t\t2\t追加信息\n\n");printf("\t\t3\t搜索查找信息\n\n");printf("\t\t4\t浏览所有信息\n\n");printf("\t\t5\t修改信息\n\n");printf("\t\t6\t信息排序\n\n");printf("\t\t7\t信息统计\n\n");printf("\t\t8\t离开\n\n");printf("\t\t请选择您要进行的操作 [ ]\b\b"); /**显示一系列功能并提示选择**/scanf("%d",&n);if(n<0||n>8){w1=1;getchar();}else w1=0;}while(w1==1); /**输入n并判断是否属于0到8**/switch(n){case 0:build();break;case 1:del();break;case 2:add();break;case 3:search();break;case 4:browse();break;case 5:modify();break;case 6:order();break;case 7:data();break;case 8:exit(0);default:{printf("输入错误!请重新输入");menu();}/**根据n的值调用各功能函数**/}}2、各功能模块设计:(1)、新建档案信息模块:<1>、数据结构;看各个数据信息,编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别,均为字符串类型,在文件中以文本形式存放,每条记录对应一个人员的信息,可以方便信息的管理;而数据读进内存中时,可以以结构体的形式,每一个结构体包含了一个人员的全部信息,多的人员的信息组成了一个结构体数组。

c语言员工人事档案管理系统

c语⾔员⼯⼈事档案管理系统⼀、设计内容与设计要求1.设计内容1)问题描述:对⼀个有N个员⼯的公司,通过该系统实现对员⼯学⽣的基本信息进⾏录⼊、显⽰、修改、删除、保存等操作的管理。

2) 功能要求:1、本系统采⽤⼀个包含N个数据的结构体数组,每个数据的结构应当包括:序号、姓名、性别、年龄、备注等。

2、本系统显⽰这样的菜单:请选择系统功能项:1.员⼯基本信息录⼊2.员⼯基本信息显⽰c.员⼯基本信息保存d.员⼯基本信息删除e.员⼯基本信息修改(要求先输⼊密码)f.员⼯基本信息查询1.按序号查询2.按姓名查询3.按性别查询4.按年龄查询g. 退出系统3、执⾏⼀个具体的功能之后,程序将重新显⽰菜单。

4、将员⼯基本信息保存到⽂件中。

5、进⼊系统之前要先输⼊密码。

1、源程序清单(带注释)#include#include#includestruct student //定义结构类型,类型名为student{char name[10]; //name为学⽣姓名int num; //num为学⽣学号float score[4]; //score为学⽣成绩}stur[10];void luru() //成绩录⼊{for(i=1;i<=10;i++){printf("请输⼊第%d个学⽣的姓名:\n",i);scanf("%s",stur[i].name);printf("请输⼊该学⽣的学号:");scanf("%d",&stur[i].num);printf("请输⼊该学⽣的数学成绩:");scanf("%f",&stur[i].score[0]);printf("英语成绩:");scanf("%f",&stur[i].score[1]);printf("语⽂成绩:");scanf("%f",&stur[i].score[2]);printf("政治成绩:");scanf("%f",&stur[i].score[3]);}printf("学⽣成绩录⼊完毕!");printf("\n");}void xianshi() //成绩显⽰{int i;printf("姓名学号数学英语语⽂政治\n"); for(i=0;i<10;i++){printf("%s %d %.2f %.2f %.2f %.2f\n",stur[i].name,stur[i].num,stur[i].score[0],stur[i].score[1],stur[i].score[2],stu r[i].score[3]); }printf("学⽣成绩显⽰完毕!");printf("\n");}void baocun() //成绩保存{int i;FILE *out;if((out=fopen("student.txt","wb"))==NULL)printf("⽆法打开⽂件\n");exit(0) ;}fprintf(out,"%-10s%-10d%-10s%-10s%-10s%-10s\n","姓名","学号","数学","英语","语⽂","政治"); for(i=0;i<10;i++)fprintf(out,"%-10d%-10s%-10d%-10d%-10d%-10d\n",stur[i].num,stur[i].name,stur[i].score[0],stur[i].score[1],stur[i].score[2],stur[i] .score[3]);close(out);printf("学⽣成绩保存完毕!");printf("\n");}void paixu() //成绩排序{int a[10];int i,j,t;int M[4];{printf("请输⼊10个学⽣的数学成绩:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");for(j=0;j<9;j++)for(i=0;i<9-j;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}}printf("该10个学⽣的%d成绩由低到⾼为:\n"); for(i=0;i<10;i++)printf("%d",a[i]);printf("\n");return(M);}void xiugai() // 成绩修改int i,j;char str1[10];printf("请输⼊密码:");scanf("%s",str1);if(strcmp(str1,"123456")!=0)printf("\t请重新输⼊密码!");if(strcmp(str1,"abcdef")==0){printf("请输⼊要修改成绩学⽣学号:"); scanf("%d",&j);for(i=0;i<10;i++){if(stur[i].num==j)break;}printf("输⼊数学成绩:");scanf("%f",&stur[i].score);printf("输⼊英语成绩:");scanf("%f",&stur[i].score);printf("输⼊语⽂成绩:");scanf("%f",&stur[i].score);printf("输⼊政治成绩:");scanf("%f",&stur[i].score);}}void shuxue() //数学成绩统计{float max=0;float average1(float a[10],int n);float score[10],aver1;int i;printf("请输⼊10个学⽣的数学成绩:\n"); for(i=0;i<10;i++)scanf("%f",&score[i]);printf("\n");aver1=average1(score,10);printf("max=%5.2f\n10个学⽣数学的平均分:%.2f\n",max,aver1); } float average1(float a[10],int n){int i;float max=0;float aver1,sum=a[0];max=a[0];for(i=1;i{if(a[i]>max)max=a[i];else ;sum=sum+a[i];}aver1=sum/n;return(aver1);}void yingyu() //英语成绩统计{float max=0;float average2(float a[10],int n);float score[10],aver2;int i;printf("请输⼊10个学⽣的英语成绩:\n");for(i=0;i<10;i++)scanf("%f",&score[i]);printf("\n");aver2=average2(score,10);printf("max=%5.2f\n10个学⽣的英语平均分:%.2f\n",max,aver2); } float average2(float a[10],int n){int i;float max=0;float aver2,sum=a[0];max=a[0];for(i=1;i{if(a[i]>max)max=a[i];else ;sum=sum+a[i];}aver2=sum/n;return(aver2);}void yuwen() //语⽂成绩统计{float max=0;float average3(float a[10],int n);float score[10],aver3;int i;printf("请输⼊10个学⽣的语⽂成绩:\n");for(i=0;i<10;i++)scanf("%f",&score[i]);printf("\n");aver3=average3(score,10);printf("max=%5.2f\n10个学⽣的语⽂平均分:%.2f\n",max,aver3); } float average3(float a[10],int n){int i;float max=0;float aver3,sum=a[0];max=a[0];for(i=1;i{if(a[i]>max)max=a[i];else ;sum=sum+a[i];}aver3=sum/n;return(aver3);}void zhengzhi() //政治成绩统计{float max=0;float average4(float a[10],int n);float score[10],aver4;int i;printf("请输⼊10个学⽣的政治成绩:\n");for(i=0;i<10;i++)scanf("%f",&score[i]);printf("\n");aver4=average4(score,10);printf("max=%5.2f\n10个学⽣政治的平均分:%.2f\n",max,aver4); } float average4(float a[10],int n){int i;float max=0;float aver4,sum=a[0];max=a[0];for(i=1;i{if(a[i]>max)max=a[i];else ;sum=sum+a[i];}aver4=sum/n;return(aver4);}void main(){while(1){printf("***********管理系统**********\n"); printf(" 1 成绩录⼊ \n"); printf(" 2 成绩显⽰ \n");printf(" 3 成绩保存 \n");printf(" 4 成绩排序 \n");printf(" 5 成绩修改 \n");printf(" 6 数学平均成绩 \n");printf(" 7 英语平均成绩 \n");printf(" 8语⽂平均成绩 \n");printf(" 9政治平均成绩 \n");printf(" 0 退出系统 \n");scanf("%d",&choice);switch(choice){case 1:luru();break;case 2:xianshi(); break;case 3:baocun(); break;case 4:paixu();break;case 5:xiugai();break;case 6:shuxue(); break;case 7:yingyu(); break;case 8:yuwen(); break;zhengzhi(); break; case 0:exit(0);break; }}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档