职工工资管理系统代码
- 格式:doc
- 大小:55.50 KB
- 文档页数:7
1. 工资管理系统的数据流程图,如图:2. 主要数据字典 1) 数据项的定义数据项数据项名称类型及宽度简述取值范围编号 I1 标示其他部门提交的职工考勤信息的年考勤日期 Char ( 10) 月工资日期 Char10) 标示职工工资的年月 I2 职工编码 Char10) 唯一用来标示职工的编码 I3 部门名称 Char(20) 使用此系统单位内部子部分 I4 基本工资 decimal(7,2) I5 各部门内的员工固定工资,即部门岗位工资。
2)数据存储的描述数据数据存简述数据存储组成相关联的存储储名称处理编号 S1 变动工记录职工变动工资的工资日期 + 职工编码 + 加班费 + 奖金 + 水P2 、 p4 资表详细信息电费 + 保险费 + 病假扣款 + 事假扣款 + 旷工扣款 + 其他扣款 + 个人所得税 S2 基本工记录职工固定工资的工资日期 + 职工编码 + 基本工资 + 工 P4 、 p5 资表详细信息龄工资 + 岗位津贴 + 固定补贴 S3 工资计记录职工工资的详细工资日期 + 职工编码 + 职工姓名 + 个 P4 、 p5 、算表信息人账号 + 基本工资 + 工龄工资 + 岗位p6 、 p7 、津贴 + 固定补贴 + 变动津贴 + 加班费 + p8 、 p9 奖金 + 应发工资 + 水电费 + 保险费 + 病假扣款 + 事假扣款 + 旷工扣款 + 其他扣款 + 个人所得税 + 扣款合计 + 实发工资 S4 福利费记录职工福利费分配日期 + 职工编码 + 部门编码 + 对应科目编码 P8 、 p10 计提分的详细信息 + 金额配表 S5 个人所记录职工个人所得税职工编码 + 职工姓名 + 所得期间 + 所得项目 P9 、 p10 得税申情况 + 收入额合计 + 费用额 + 应纳税所得额 + 税报表率 + 速算扣除数 + 扣缴所得税额 S6 工资费描述工资费用的分摊日期 + 职工编码 + 部门编码 + 对应科目编码 P7 、 p10 用分配(来源) + 金额表S8 职员信职员基本信息职工编码 + 职工姓名 + 性别 + 人员类别 + P3 、 E3息表部门编码 + 部门名称 + 岗位编码 + 岗位名称 + 职称 + 工龄 + 个人账号 + 联系电话 S9 工资计设置职工工资项目金基本工资计算标准 + 变动工资计算标准 E3 、 P2 算标准额标准表 S10 考勤表记录职工考勤信息情考勤日期 + 职工编码 + 加班天数 + 病假天数 P1 、 P2 况 + 旷工天数 + 事假天数; 3)数据流的描述数据数据流简述数据流数据流数据流组成数据高峰流编名称来源去向流量流量号D1 考勤记输入的企业所有E1 P1 考勤日期 + 职工编码 + 1 次 1 次录职工的考勤信息加班天数 + 病假天数 + / 月 / 月旷工天数 + 事假天数; D1 人事基描述人事基本信E2 P3 职工编码 + 职工姓名 + 1 次 1 次本信息息性别 + 人员类别 + 部门/ 月 / 月编码 + 部门名称 + 岗位编码 + 岗位名称 + 职称 + 工龄 + 个人账号 + 联系电话 4) 处理的描述处理处理逻输入的数据流处理逻辑的描述输出的数处理逻辑辑名称据流频率编号 P1 输入考D1 其他部门汇总的由其他部门的负责人每个月按期输入S11 考勤1 次勤信息考勤信息企业所有职工的考勤信息表 / 月 P2 编制变S9 工资计算标准财务处根据其他部门的负责人输入的S1 变动1 次动工资表 ;s11 考勤表职工考勤等考勤信息,以及工资计算标工资表 / 月表准表中设置的金额计算出企业每个职工的加班费、病假扣款、事假扣款、旷工扣款等金额,并编制变动工资表。
源代码package lesson2;import java。
sql。
*;public class employee{public String num;public String name;public String sex;public String age;public String edu;public String sla;public String add;public String tel;public void init(String x1,String x2,String x3,String x4,String x5,String x6,String x7,String x8){num=x1;name=x2;sex=x3;age=x4;edu=x5;sla=x6;add=x7;tel=x8;}public void load(String f){try{Class。
forName(”com.microsoft.sqlserver.jdbc。
SQLServerDriver”);String url=”jdbc:sqlserver://localhost:1433;DatabaseName=employee";String userName=”sa”;String password="xhw";Connection conn=DriverManager.getConnection (url,userName,password);if(conn!=null)System.out。
println(”已成功地与SQL Server 2005数据库建立连接!");Statement stmt=conn.createStatement();stmt.executeUpdate(f);stmt。
close();}catch(Exception e){e。
数据库原理及应用课程设计报告题目:工资管理系统所在学院:信息工程学院班级:学号:姓名:指导教师:2014年1月2日目录一、概述二、需求分析三、概念设计四、逻辑设计五、系统实现六、小结一、概述在工资管理中,需要从公司管理方式以及实际情况中提取相关信息,以反映工资管理情况。
传统的手工操作方式,易发生数据丢失,统计错误,劳动强度高,且速度慢。
使用计算机可以高速,快捷地完成以上工作。
避免重复劳动,规范工资管理行为,从而提高了管理效率和水平。
让人们的效率大大提高.不难想象,正是资讯的迅速发展使得人们从过去繁复的手工劳作中得以解脱,从而使这种服务在现在才可能迅速普及。
同时,编写一套完整的工资管理系统的任务就显得尤为重要。
本课程设计共分为四大模块:1.系统数据初始化2.工基本信息数据的输入、修改、删除;3.员工个人信息及工资表的查询;4,员工工资的计算;二、需求分析本系统主要用于员工基本信息的管理,对员工以及其他信息的添加、修改、删除、查询等基本操作。
对于数据库的保护有数据备份和数据恢复的功能。
针对这些要求,设计本月工资信息管理系统。
该系统主要包括职工信息、工资级别和工资金额、公司福利表等。
⒈员工基本状况包括员工号、员工姓名、性别、所在部门、工资级别、工资等级等。
2.工资级别和工资金额包括工资等级、工资额。
3.企业部门及工作岗位信息包括部门名称、工作岗位名称、工作岗位工资等。
4.工龄和工资金额包括工龄及对应工资额。
5.公司福利表包括福利名称、福利值。
本系统概念设计思想:1.对公司软硬件调查,从实际环境出发,以便充分利用公司现在资源,提高系统开发水平和应用效果。
图1.1 系统功能模块图图2.6信息查询及管理的流程图三、概念设计分析前面的系统功能要求,需要一个表来存储和管理员工信息,使系统能够接受员工原始的各项数据,以实现数据录入、查询或统计员工信息等功能。
员工是本系统的第一个实体。
为了能实现查询和统计部门内员工情况等功能,必须有一个表来存储和管理所有部门的信息。
员工管理系统SQL员工管理系统SQL一、简介员工管理系统SQL是一种用于员工管理的软件,它可以帮助企业管理人员记录和追踪员工的信息,包括工资、工作时长、出勤记录等。
本文将介绍员工管理系统SQL的相关内容。
二、系统功能员工管理系统SQL的功能主要分为以下几类:1.员工信息管理:包括员工姓名、身份证号、联系方式、职位、入职时间、离职时间等基本信息的录入和修改。
2.出勤记录管理:员工每日的出勤记录可以被系统实时记录,包括迟到早退、请假等情况。
系统能够根据这些记录自动计算出勤率,并生成相关报表。
3.工资管理:员工的薪资信息可以被系统储存和更新,并根据考勤记录等信息自动生成月度工资表。
4.权限管理:不同职位的员工拥有不同的权限,管理员可以通过员工管理系统SQL来设置每个员工的权限,并限制他们使用系统的功能。
5.报表制作:员工管理系统SQL可以生成各种类型的报表,如员工出勤率报表、薪资报表等,利于企业管理人员进行决策和统计分析。
三、系统架构员工管理系统SQL的架构主要包括以下几个组件:1.数据库:数据库是员工管理系统SQL的核心组件,包括员工信息、出勤记录、薪资信息等。
2.前端界面:前端界面是员工管理系统SQL的用户接口,可以让用户轻松地浏览系统功能和信息。
3.逻辑代码:逻辑代码是员工管理系统SQL的实现代码,包括员工信息的查询、更新、删除等。
四、系统实现员工管理系统SQL的实现过程主要包括以下几个步骤:1.设计数据库:首先需要设计一个数据库,储存员工信息、出勤记录、薪资信息等。
2.开发前端界面:根据企业用户的需求和设计要求,开发前端界面,实现用户与系统的交互。
3.编写逻辑代码:根据企业用户要求和设计需求,编写逻辑代码,实现员工信息的录入、查询、更新、删除等功能。
4.测试和维护:系统完成开发后,需要进行测试,确保系统能够正常工作。
在日后的使用中,还需要对系统进行维护和更新。
五、总结员工管理系统SQL是一种功能强大的企业管理软件,可以实现员工信息管理、工资管理、出勤记录管理等功能。
1.课程论文题目职工信息管理系统程序设计一、题目要求职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之能提供以下功能:(1)系统以菜单的方式工作。
(2)职工信息录入功能(职工信息用文件保存)。
(3)职工浏览功能。
(4)职工信息查询功能,查询方式可按学历查询或者工号查询。
(5)职工信息的删除、修改功能(可选项)。
2.程序设计思路1、设计思路(1)根据题目要求,应该把职工工资信息用结构体形式输入,在定义一个全局变量和文件指针进行整个程序的运行,然后把职工工资信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;(2)在程序中需实现职工工资浏览、查询、统计等功能的操作,所以需要建立相应的功能模块来实现;(3)另外还需要提供键盘式选择菜单实现功能,在运行时达到所要的目的。
3.功能模块图5.算法设计1.主函数提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。
2浏览模块【分析】该模块的功能是浏览职工的全部信息3排序模块4查询模块【分析】该模块的功能是根据输入的职工按照工号和学历查找对应的记录,找到以后,可进行继续查找或修改信息的操作。
流程图如下:5修改模块【分析】该模块的功能是显示所有职工的信息,考虑到记录较多,建议采用分屏显示。
显示完所有记录后,输入要修改的职工的工号,根据工号查到职工的记录,并提示用户修改该记录的哪部分信息,根据用户做的选择修改相应信息。
流程图如下:6.程序代码#include<stdio.h>#define N 50struct worker{char id[50];char name[20];char sex[10];char age[10];char edu[20];char salary[10];char address[20];char tel[20];}worker[N];void save(int n) //保存函数,保存n个记录{ FILE *fp;int i;if((fp=fopen("worker.txt","wb"))==NULL) //以只写方式为输出打开一个二进制文件{ printf("\nCannot open file\n");}for(i=0;i<n;i++)if(fwrite(&worker[i],sizeof(struct worker),1,fp)!=1)printf("file write error\n");fclose(fp);}int load() //加载函数{ FILE *fp;int i;if((fp=fopen("worker.txt","rb"))==NULL){printf("\nCannot open file\n");return NULL;}for(i=0;!feof(fp);i++)fread(&worker[i],sizeof(struct worker),1,fp);fclose(fp);return(i-1);}void no_input(int i,int n) //工号输入函数,i表示第i个职工的信息,n 表示比较到第n个职工{ int j,k,w1;do{w1=0;printf("工号:");scanf("%s",worker[i].id);for(j=0;worker[i].id[j]!='\0';j++)if(worker[i].id[j]<'0'||worker[i].id[j]>'9') //判断工号是否为数字{puts("请重新输入!\n");w1=1;break;}if(w1!=1)for(k=0;k<n;k++) //比较到第N个职工if(k!=i&&strcmp(worker[k].id,worker[i].id)==0) //判断职工号是否有雷同{puts("请重新输入!\n");w1=1;break;}}while(w1==1);}void input(int i) //输入一个记录的函数{ no_input(i,i);printf("姓名:");scanf("%s",worker[i].name);printf("性别:");scanf(" %s",&worker[i].sex);printf("年龄:");scanf("%s",&worker[i].age);printf("工资:");scanf("%s",worker[i].salary);printf("学历:");scanf("%s",&worker[i].edu);printf("住址:");scanf("%s",worker[i].address);printf("电话:");scanf("%s",worker[i].tel);}void printf_one(int i) //显示一个记录的函数{printf("%10s %10s %5s %5s %8s %6s %10s %10s\n",worker[i].id,worker[i].name,worker[i].sex,worker[i].age,worker[i].salary,worker[i].edu,worker[i].address,worker[i].tel); }void printf_back() //一个任务结束后选择是好似浏览还是返回{ int k,w;printf("\n\n\tSuccessful^-^.\n\n");printf("接下来做什么?\n\n\t1).浏览全部\t2).返回: [ ]\b\b");scanf("%d",&w);if(w==1)browse();else menu();}modify_data(int i,int n) //修改函数{ int c,w1;do{puts("\nmodify by=>\n\n 1).工号 2).姓名 3).性别 4).年龄 5).工资6).学历 7).地址 8).电话 9).取消");printf("请选择?:[ ]\b\b");scanf("%d",&c);if(c>9||c<1){puts("\nChoice error!please again!");getchar();}}while(c>9||c<1);do{switch(c){case 1:no_input(i,n);break;case 2:printf("name:");scanf("%s",worker[i].name);break;case 3:printf("sex:");scanf("%s",worker[i].sex);break;case 4:printf("age:");scanf("%s",worker[i].age);break;case 5:printf("salary:");scanf("%s",worker[i].salary);break;case 6:printf("edu:");scanf("%s",worker[i].edu);break;case 7:printf("address:");scanf("%s",worker[i].address);break;case 8:printf("tel:");scanf("%s",worker[i].tel);break;case 9:menu();break;}puts("\nNow:\n");printf_face();printf_one(i);printf("\n确定?\n\n\t1).是2).否,重新修改3).不保存退出[ ]\b\b");scanf("%d",&w1);if(w1==1)save(n);}while(w1==2);return(w1);}printf_face() //显示数据结构项目{ printf("\n\t工号姓名性别年龄工资学历地址电话号码\n"); }void enter() //输入模块{ int i,n;printf("输入多少个职工信息(0-%d):",N-1);scanf("%d",&n);printf("\n 请输入职工信息\n\n");for(i=0;i<n;i++)input(i);if(i!=0)save(n);printf_back();}browse() //浏览模块{ int i,j,n;n=load();printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)){printf("\n\n按任意键显示下一页...");getch();puts("\n\n");}printf_one(i);}printf("\t这里有 %d 条记录.\n",n);printf("\n按任意键返回...");getch();menu();}modify() //修改模块{struct worker s;FILE *fp;int i,n,k,w0=1,w1,w2=0;n=load();do{k=-1;printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)) //目的是分屏显示{printf("\n\n记住要修改的工号.按任意键显示下一页");getch();puts("\n\n");}printf_one(i); //调用显示一个记录的函数}do{printf("\n\n输入要修改的职工工号! 工号:");scanf("%s",s.id); //输入要修改的IDfor(i=0;i<n;i++) //查找要修改的数据if(strcmp(s.id,worker[i].id)==0){k=i; //找到要修改的记录s=worker[i]; //把worker[i]备份,以便恢复}if(k==-1)printf("\n\n未找到请重输");}while(k==-1); //当k=-1表示没有找到printf_face(); //调用显示数据结构项目的函数printf_one(k); //调用显示一个记录的函数w1=modify_data(k,n); //修改记录并返回保存控制值w1,w1=1表示用户已确认修改if(w1==1){printf("\Successful^_^.\n\n修改另一个?\n\n\t1).是 2).否,保存退出\t[ ]\b\b");scanf("%d",&w0);w2=1; //用来控制保存,使w2=1是标记已有过修改}else{w0=0;if(w2==1)worker[k]=s;}if(w0!=1&&w2==1)save(n);}while(w0==1);menu();}search() //查询模块{ int c,w1;do{puts("\nsearch by=>\n\n1).工号 2}.学历 3).取消并返回"); printf("Which you needed?:[ ]\b\b");scanf("%d",&c);if(c>3||c<1){ puts("\nchoice error!please again!");getchar();}}while(c>3||c<1);{switch(c){case 1:search1();break;case 2:search2();break;case 3:menu();break;}}}search1() //按工号查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n输入要查询的工号! id:");scanf("%s",s.id);printf_face();for(i=0;i<n;i++)if(strcmp(s.id,worker[i].id)==0){k=i;printf_one(k);break;}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search1();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}search2() //按学历查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n请输入你要查询的学历:\n");scanf("%s",);printf_face();for(i=0;i<n;i++)if(strcmp(,worker[i].edu)==0){k=i;printf_one(k);}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search2();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}menu(){int n,w1;do{puts("\t\t*******************菜单*******************\n\n");puts("\t\t\t\t1.录入职工信息");puts("\t\t\t\t2.浏览职工信息");puts("\t\t\t\t3.查询职工信息");puts("\t\t\t\t4.修改职工信息");puts("\t\t\t\t5.退出");puts("\t\t****************************************\n\n");printf("请选择(1~5): [ ]\b\b");scanf("%d",&n);if(n<1||n>5) //对选择的数字作判断{w1=1;getchar();}else w1=0;} while(w1==1);switch(n){case 1:enter();break; //录入 case 2:browse();break; //浏览 case 3:search();break; //查询 case 4:modify();break; //修改 case 5:exit(0); //退出}}main(){menu();}7.程序运行结果下面是各个模块的的界面截图(1)、主菜单(2)、输入模块(3)、浏览模块(3)、查找模块(4)、修改模块8.编程中遇到的困难及解决方法温故而知新,可以为师矣。
C语言职工工资管理系统代码简介职工工资管理是一项重要的任务,它涉及到工资计算、薪资发放、绩效评估等方面。
为了提高管理的有效性和准确性,许多公司和组织都开发了各种各样的工资管理系统。
本文将介绍一种基于C语言开发的职工工资管理系统代码。
代码功能及特点1. 基本功能•添加新员工信息•更新员工信息•计算员工工资•发放工资•查询员工信息•统计工资情况2. 特点•简单易懂:代码使用C语言编写,阅读和理解都相对简单。
•高效可靠:代码采用模块化设计,结构清晰,运行效率高,容错性强。
•跨平台支持:C语言是一种具有广泛应用的语言,可以在多个操作系统上运行。
代码实现1. 员工信息结构体定义struct Employee {int id; // 员工编号char name[20]; // 员工姓名float basicSalary; // 员工基本工资float performanceBonus; // 绩效奖金float salary; // 员工工资};2. 添加新员工信息函数void addEmployee(struct Employee *employee, int num) {printf("请输入员工编号:");scanf("%d", &(employee[num].id));// 输入其他员工信息...}3. 更新员工信息函数void updateEmployee(struct Employee *employee, int id) {int i;for (i = 0; i < num; i++) {if (employee[i].id == id) {// 更新员工信息...}}}4. 计算员工工资函数void calculateSalary(struct Employee *employee, int num) {int i;for (i = 0; i < num; i++) {employee[i].salary = employee[i].basicSalary + employee[i].performance Bonus;}}5. 发放工资函数void paySalary(struct Employee *employee, int num) {int i;for (i = 0; i < num; i++) {printf("员工编号:%d,工资:%.2f\n", employee[i].id, employee[i].salar y);}}6. 查询员工信息函数void searchEmployee(struct Employee *employee, int id) {int i;for (i = 0; i < num; i++) {if (employee[i].id == id) {// 输出员工信息...}}}7. 统计工资情况函数void statisticsSalary(struct Employee *employee, int num) { float totalSalary = 0;int i;for (i = 0; i < num; i++) {totalSalary += employee[i].salary;}printf("总工资:%f\n", totalSalary);}使用示例1. 添加员工信息struct Employee employees[100];int num = 0;addEmployee(employees, num);num++;2. 更新员工信息int id = 12345;updateEmployee(employees, id);3. 计算员工工资calculateSalary(employees, num);4. 发放工资paySalary(employees, num);5. 查询员工信息int id = 12345;searchEmployee(employees, id);6. 统计工资情况statisticsSalary(employees, num);总结本文介绍了一个基于C语言的职工工资管理系统代码。
#include <stdio.h>#include <string.h>#include <ctype.h>#include <stdlib.h>#include <windows.h>#define MONTH_NUM 5 /* 最多的月份*/struct worker{int number; /* 每个工人的工号*/char name[15]; /* 每个工人的姓名*/int salary[MONTH_NUM]; /* 每个工人M月的工资*/ int sum; /* 每个工人的总工资*/ float average; /* 每个工人的平均工资*/ struct worker *next; //下一个节点的地址};typedef struct worker STU;char Menu(void);int Ascending(int a, int b);int Descending(int a, int b);void IntSwap(int *pt1, int *pt2);void CharSwap(char *pt1, char *pt2);void FloatSwap(float *pt1, float *pt2);STU *AppendNode(STU *head, const int m);STU *DeleteNode(STU *head, int nodeNum);STU *ModifyNode(STU *head, int nodeNum, const int m); STU *SearchNode(STU *head, int nodeNum);STU *Appendsalary(STU *head, const int m);void Totalsalary(STU *head, const int m);void Printsalary(STU *head, const int m);STU *Deletesalary(STU *head, const int m);void Modifysalary(STU *head, const int m);void Sortsalary(STU *head, const int m, int (*compare)(int a, int b));void Searchsalary(STU *head, const int m);void DeleteMemory(STU *head);void numberSwap(STU *head);main(){char ch,b;int m,a;STU *head = NULL;printf("\n\n\n\n\n\n\n\n\n");printf("``╭╮╭╮╭╮\n");printf("``│││││└╮\n");printf("╭┴┴———————┴┴╮~└—╯\n");printf("││╭—————╮\n");printf("│││哈│\n");printf("│●●│╭╮│喽! │\n");printf("│○╰┬┬┬╯○│o╰╯╰—————╯\n");printf("│╰—╯│\n");printf("╰——┬o———o┬——╯\n");printf(" ╭╮╭╮\n");printf(" ╰┴————┴╯\n");Sleep(3000);system("cls");printf("\n\n\n\n\n\n\n\n\n\n\n ≈~☆输入要记录的月份个数(m<10)☆~~`≈: "); scanf("%d", &m);system("cls");while (1){ch = Menu();switch (ch){case'1':head = Appendsalary(head, m);Totalsalary(head, m);break;case'2':Modifysalary(head, m);Totalsalary(head, m);printf("\nAfter modified\n");Printsalary(head, m);Sleep(1000);break;case'3':head = Deletesalary(head, m);printf("\nAfter deleted\n");Printsalary(head, m);break;case'4':do{Searchsalary(head, m);printf("\(≧▽≦)/ 是否要继续查询?Y or N:");scanf(" %c",&b);}while(b=='y'||b=='Y');break;case'5':Printsalary(head, m);printf("\(≧▽≦)/ 是否要选择排列方式?Y or N:");scanf(" %c",&b);while(b=='y'||b=='Y'){printf("你想降序排列还是升序排列?(1降序2升序):");scanf(" %d",&a);if(a==1){Sortsalary(head, m, Descending);printf("\nsorted in descending order by sum\n");Printsalary(head, m);}else{Sortsalary(head, m, Ascending);printf("\nsorted in ascending order by sum\n");Printsalary(head, m);}printf("O(∩_∩)O 是否继续选择排列方式?Y or N:");scanf(" %c",&b);}break;case'0':system("cls");printf("┴┬┴┬/ ̄\_/ ̄\\n");printf("┬┴┬┴▏▏▔▔▔▔\\n");printf("┴┬┴/\/﹨\n");printf("┬┴∕/)╭—————╮\n"); printf("┴┬▏●▏│再│\n"); printf("┬┴▏▔█◤╭╮│见! │\n"); printf("┴◢██◣\__/o╰╯╰—————╯\n"); printf("┬█████◣/\n");printf("┴█████████████◣\n");printf("◢██████████████▆▄\n");printf("◢██████████████▆▄\n");printf("█◤◢██◣◥█████████◤\\n");printf("◥◢████████████◤\\n");printf("┴███████████◤﹨\n");printf("┬││█████◤▏\n");printf("┴││)\n");printf("┬∕∕/▔▔▔\∕\n");printf("*∕___/﹨∕\/\\n");printf("┬┴┬┴┬┴\\_ ﹨/﹨\n");printf("┴┬┴┬┴┬┴\___\﹨/▔\﹨\n");exit(0);DeleteMemory(head);printf("End of program!");break;default:printf("Input error!");break;}}}char Menu(void)//主菜单{char ch;system("cls");printf("\n\n\n\n ━━●●━━━━━━━━━━━管理工人的工资━━━━━━...........(╯3╰)\n");printf(" 1.添加记录\n");printf(" 2.更新记录\n");printf(" 3.删除记录\n");printf(" 4.查询记录\n");printf(" 5.统计分析记录\n");printf(" 0.退出\n");printf(" ━━━━━━━━━━☆━━━━━━━━━━━━━━━━━☆━━━━━━━━━━\n");printf("` `.~ ☆~~`≈~☆☆~~`≈~☆☆~~`≈~☆.` `.~\n");printf("\n请输入你的选择:");scanf(" %c", &ch); /*在%c前面加一个空格,将存于缓冲区中的回车符读入*/system("cls");return ch;}STU *Appendsalary(STU *head, const int m)//添加新记录{int i = 0;char c;do{head = AppendNode(head, m); /*向链表末尾添加一个节点*/printf("\n O(∩_∩)O 你想再添加一个新的记录吗(Y/N)?");scanf(" %c",&c); /*%c前面有一个空格*/i++;}while (c=='Y' || c=='y');printf("%d new nodes have been apended!\n", i);return head;}STU *Deletesalary(STU *head, const int m)//删除记录{int i = 0, nodeNum;char c;do{printf("\n ⊙﹏⊙请输入你想删除的记录编号:");scanf("%d", &nodeNum);head = DeleteNode(head, nodeNum); /*删除工号为nodeNum的工人信息*/ Printsalary(head, m); /*显示当前链表中的各节点信息*/printf("Do you want to delete a node(Y/N)?");scanf(" %c",&c); /*%c前面有一个空格*/i++;}while (c=='Y' || c=='y');printf("%d nodes have been deleted!\n", i);return head;}void Modifysalary(STU *head, const int m)//修改记录{int i = 0, nodeNum;char c;do{printf("\n~~~^_^~~~ 请输入你想修改的记录编号:");scanf("%d", &nodeNum);head = ModifyNode(head, nodeNum, m); /*修改工号为nodeNum的节点*/ printf("Do you want to modify a node(Y/N)?");scanf(" %c",&c); /*%c前面有一个空格*/ i++;}while (c=='Y' || c=='y');printf("%d nodes have been modified!\n", i);}void Totalsalary(STU *head, const int m){STU *p = head;int i;while (p != NULL) /*若不是表尾,则循环*/{p->sum = 0;for (i=0; i<m; i++){p->sum += p->salary[i];}p->average = (float)p->sum / m;p = p->next; /*让p指向下一个节点*/}}void Sortsalary(STU *head, const int m, int (*compare)(int a, int b)){STU *pt;int flag = 0, i;do{flag = 0 ;pt = head;/*若后一个节点的总工资比前一个节点的总工资高,则交换两个节点中的数据注意只交换节点数据,而节点顺序不变,即节点next指针内容不进行交换*/ while (pt->next != NULL){if ((*compare)(pt->next->sum, pt->sum)){IntSwap(&pt->number, &pt->next->number);CharSwap(pt->name, pt->next->name);for (i=0; i<m; i++){IntSwap(&pt->salary[i], &pt->next->salary[i]);}IntSwap(&pt->sum, &pt->next->sum);FloatSwap(&pt->average, &pt->next->average);flag = 1;}pt = pt->next;}}while(flag);}/*交换两个整型数*/void IntSwap(int *pt1, int *pt2){int temp;temp = *pt1;*pt1 = *pt2;*pt2 = temp;}/*交换两个实型数*/void FloatSwap(float *pt1, float *pt2){float temp;temp = *pt1;*pt1 = *pt2;*pt2 = temp;}/*交换两个字符串*/void CharSwap(char *pt1, char *pt2){char temp[15];strcpy(temp, pt1);strcpy(pt1, pt2);strcpy(pt2, temp);}/*决定数据是否按升序排序,a<b为真,则按升序排序*/ int Ascending(int a, int b){return a < b;}/* 决定数据是否按降序排序,a>b为真,则按降序排序*/ int Descending(int a, int b){return a > b;}void Searchsalary(STU *head, const int m)//查询记录{int number, i,j,k=0,x,t=0;char str[100] = {'\0'}, temp[3];STU *findNode;printf("\n 请输入你想查找的记录编号:");scanf("%d", &number);findNode = SearchNode(head, number);if (findNode == NULL){printf("Not found!\n");}else{strcat(str, "工号");for(j=0;j<=strlen(findNode->name);j++)strcat(str," ");strcat(str, "姓名");for (i=1; i<=m; i++){if(findNode->salary[i]/10) t++;for(x=0;x<2*t;x++)strcat(str," ");strcat(str, "工资");itoa(i,temp, 10);strcat(str, temp);}strcat(str," 已发工资总和");if(findNode->sum/10) k++;for(i=0;i<k;i++)strcat(str," ");strcat(str," 个人平均工资");printf("%s", str);printf("\nNo.%3d %-8s ", findNode->number, findNode->name); for (i=0; i<m; i++){printf("%-7d ", findNode->salary[i]);}printf("%9d %9.2f\n", findNode->sum, findNode->average);}}void Printsalary(STU *head, const int m){STU *p = head;char str[100] = {'\0'}, temp[3];int i, j = 1,k,x,n=0,t=0;strcat(str, "工号");for(k=0;k<=strlen(p->name);k++)strcat(str," ");strcat(str, "姓名");for (i=1; i<=m; i++){if(p->salary[i]/10) t++;for(x=0;x<2*t;x++)strcat(str," ");strcat(str, "工资");itoa(i,temp, 10);strcat(str, temp);}strcat(str," 已发工资总和");if(p->sum/10) n++;for(k=0;k<n;k++)strcat(str," ");strcat(str," 个人平均工资");printf("%s", str); /* 打印表头*/while (p != NULL) /*若不是表尾,则循环打印*/{printf("\nNo.%3d %-8s ", p->number, p->name);for (i=0; i<m; i++){printf("%-7d ", p->salary[i]);}printf("%9d %9.2f\n", p->sum, p->average);p = p->next; /*让p指向下一个节点*/j++;}printf("\n");}STU *AppendNode(STU *head, const int m){STU *p = NULL;STU *pr = head;int j;p = (STU *)malloc(sizeof(STU)); /*为新添加的节点申请内存*/if (p == NULL) /*若申请内存失败,则打印错误信息,退出程序*/ {printf("No enough memory to alloc");exit(0);}if (head == NULL) /*若原链表为空表,则将新建节点置为首节点*/ {head = p;}else /*若原链表为非空,则将新建节点添加到表尾*/{/*若未到表尾,则继续移动指针pr,直到pr指向表尾*/while (pr->next != NULL){pr = pr->next;}pr->next = p; /*将新建节点添加到链表的末尾*/}pr = p; /*让pr指向新建节点*/printf("Input node data......");printf("\nInput number:");scanf("%d", &p->number);printf("Input name:");scanf("%s", p->name);for (j=0; j<m; j++){printf("Input salary%d:", j+1);scanf("%d", p->salary+j);}pr->next = NULL; /*将新建节点置为表尾*/return head; /*返回添加节点后的链表的头节点指针*/ }STU *ModifyNode(STU *head, int nodeNum, const int m){int j;STU *newNode;newNode = SearchNode(head, nodeNum);if (newNode == NULL){printf("Not found!\n");}else{printf("Input the new node data:\n");printf("Input name:");scanf("%s", newNode->name);for (j=0; j<m; j++){printf("Input salary%d:", j+1);scanf("%d", newNode->salary+j);}}return head;}STU *DeleteNode(STU *head, int nodeNum){STU *p = head, *pr = head;if (head == NULL) /*链表为空,没有节点,无法删除节点*/{printf("No Linked Table!\n");return(head);}/*若没找到节点nodeNum且未到表尾,则继续找*/while (nodeNum != p->number && p->next != NULL){pr = p;p = p->next;}if (nodeNum == p->number) /*若找到节点nodeNum,则删除该节点*/{if (p == head) /*若待删节点为首节点,则让head指向第2个节点*/{head = p->next;}else /*若待删节点非首节点,则将前一节点指针指向当前节点的下一节点*/ {pr->next = p->next;}free(p); /*释放为已删除节点分配的内存*/}else /*没有找到待删除节点*/{printf("This Node has not been found!\n");}return head; /*返回删除节点后的链表的头节点指针*/}STU *SearchNode(STU *head, int nodeNum){STU *p = head;int j = 1;while (p != NULL) /*若不是表尾,则循环*/{if (p->number == nodeNum) return p;p = p->next; /*让p指向下一个节点*/j++;}return NULL;}void DeleteMemory(STU *head){STU *p = head, *pr = NULL;while (p != NULL) /*若不是表尾,则释放节点占用的内存*/ {pr = p; /*在pr中保存当前节点的指针*/p = p->next; /*让p指向下一个节点*/free(pr); /*释放pr指向的当前节点占用的内存*/}}。
本科生毕业设计(论文)任务书系(教研室)主任审批数学与计算科学学院信息与计算科学系(教研室)签名:日期:学生姓名:学号:101071069 专业:信息与计算科学1、设计(论文)题目及专题:职工工资管理信息系统2、学生设计(论文)时间:自2005年1 月5 日开始至2005 年5 月20 日止3、设计(论文)所用资料和参考资料:[1] 陈艳华,深入浅出Access 2002数据库实例开发[M],中国青年出版社,2003.53-57.[2] HTML,VBSCRIPT与ASP三合一最新培训教程。
电子工业出版社,曹建主编,杨静等编著。
2004 .142-148.[3] Visual Basic 网络程序设计.人民邮电出版社出版.卡志强编著.2004.39-75.[4] 苗雪兰,刘瑞新,王怀峰、数据库系统原理及应用教程[M],机械工业出版社,2001.175-198.[5] 张海藩.软件工程导论[M].清华大学出版社.1998.18-35.[6] 张丕军,杨顺花,王靖诚,中文版PhotoshopCS完全自学手册[M],海洋出版社,2005.193-245.4、设计(论文)完成的主要内容:本文主要介绍职工工资管理信息系统的开发过程。
论文详尽地论述从需求分析,系统分析,概要设计,详细设计,到测试与调试的整个开发过程,总结开发过程中的经验及本系统今后的改进方向。
5、提交设计(论文)形式(设计说明与图纸或论文等)及要求:提交职工工资信息管理系统的毕业设计论文(打印版)一份及相同内容的电子文档一份6、发题时间:2005年 1 月 5 日指导老师(签名):学生(签名):。
《C语言程序设计》课程设计报告设计题目:职工工资管理系统班级:学号:姓名:信息工程学院1 前言工资管理系统是企业不可缺少的一部分,它利用计算机对员工工资进行统一管理,实现工资管理系统的系统化、规范化和自动化,为企业提高工作效率。
本程序旨在训练读者的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和结构数组的各种基本操作。
本程序中涉及结构体、数组、文件等方面的知识。
2 需求分析2.1 课程设计目的学生在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。
通过课程设计(论文),提高学生综合运用所学知识来解决实际问题、使用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础。
2.2 课程设计任务职工工资管理系统功能设计要求(1)输入记录:将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。
该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
(2)显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。
(3)修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。
(4)查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
(5)删除记录:可删除数据文件中的任一记录。
(6)统计: (A)计算各项工资平均工资及总工资, (B)•统计符合指定条件(如职工工资前三项之和在3000元以上、3000~2000元、2000~1000元) 以内的工资职工人数及占总职工人数的百分比。
(C)按字符表格形式打印全部职工工资信息表及平均工资(•包括各项总的平均工资)。
(7)保存数据文件功能。
例如:职工工资信息表ID号姓名基本工资职务工资津贴医疗保险- 公积金- 总工资01 张望 1286 794 198 109 135 203402 李明1185 628 135 94 114 174003 王小民895 438 98 64 73 129404 张效章1350 868 210 116 150 216205 彭山745 398 84 61 68 1098各项平均工资 1092.2 625.2 145 88.8 108图3.1 系统模块图4 具体代码实现#include"stdio.h"#include<stdlib.h>#include<conio.h>#include<string.h> // 头文件static int n=0; // 定义静态全局变量,存储已经读入记录的条数。
职工工资管理信息系统设计与实现学院:经济与管理学院班级:09信管姓名:王友兴学号:090403010043目录1 引言 (2)1.1问题的提出 (3)1.2任务与分析 (3)2设计方案 (4)2.1程序功能设计 (4)2.1.1程序功能描述 (4)2.1.2程序结构分析 (4)2.1.3 数据表结构分析 (5)2.1.4程序流程分析 (7)2.2程序界面和代码设计 (7)2.2.1项目设计框架 (7)2.2.2主要表单及代码设计 (9)3 结果分析 (20)结论 (25)致谢 (26)参考文献 (27)1 引言1.1 问题的提出为适合现代企业的需要,职工工资管理已经成为企业管理的一个难题,由于其费时和繁琐性,企业迫切需要一种专门为职工工资管理而服务的工具。
为此,简单的职工工资管理系统为此而制造出来。
本简单程序是为职工工资管理而设计的,内容简单,使用方便。
程序稍加变更可以适合对资源分配方面的杂事加以处理。
作为当代大学生,熟练的操作计算机是一种必备的素质。
本次设计会让我们更加熟悉VF编程,把以前学过的一些东西又重新复习了一遍,并与实际结合起来,对我们能力的提升有了很大的帮助,还能促使我们在以后的实际应用中更好的应用VF编程来设计一些数据库管理系统。
1.2 任务与分析分析你的设计任务,有什么难点?怎么解决?完成的步骤!职工工资管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的库。
而对于后者则要求应用程序功能完备,易使用等特点.本系统主要完成对学生选课信息的管理,包括数据库中表的添加、删除等。
系统可以完成对各类信息的浏览、修改、查询和工资信息对工资进行计算的功能。
系统的核心是数据库中各个表联系,每一个表的修改都将联动的影响其它的表,当完成对数据的操作时系统会自动地完成数据库的修改。
查询功能也是系统的核心之一,在系统中即有单条件查询和多条件查询,也有精确查询和模糊查询,系统不仅有静态的条件查询,也有动态生成的条件查询,其目的都是为了方便用户使用。
管理系统产品介绍一、系统简介【定义,含系统名称英文及简称。
并简单解释。
】LPMS即劳动人事管理系统(Labor Personnel Management System)。
在信息系统五级架构中,LPMS系统处于第四级,属于企业资源控制部分。
LPMS以全面掌握人力资源信息为目标,完善人力资源管理体系,转变人力资源管理职能,建立人力资源管理基础信息平台,对人事招聘、调动和工资管理等进行优化和固化,系统同时处理人事与工资双重信息,实现业务流、信息流、物流的高度集成和统一。
LPMS系统是针对人力资源管理过程进行管控的信息化管理工具,它主要面向决策者和管理层实现人事和工资管理等业务,增强管理者对员工结构和工资水平等自身业务进行了解和掌握、支配等处置。
系统从招聘开始,到员工信息录入、内部调动、工资编制、报表等信息的查询,实现对人力资源进行集成化的管理,实现标准化的组织和控制。
应用LPMS系统,可以实现工资总额的自动计算,支持社会社保和公积金以及个人收入所得税等管理,实现工资发放步骤流程化,岗位工资数据维护、工资的计算、审批、发放,实现严格的操作流程,帮助企业提高工资核算效率、增强指标管控能力。
提升企业生产效率和竞争力,进而促进企业实现生产经营目标。
图1.1 功能总图LPMS系统融合了人力资源管理的优秀管理经验,贯穿选人、用人、育人、留人的全过程。
通过实施人事招聘、人事管理、工资核算等功能,可以提高工作效率,优化人力资源管理。
LPMS实施队伍由多年从事劳动人事管理的人员组成,对整体的国家劳动人事政策有深刻的了解,在人事管理、社会保险、工伤福利、薪酬核算方面有丰富的经验,并实现了将行业知识与信息化系统的完美结合,有着同行业先进经验,从而帮助企业快速实施应用。
二、系统亮点【突出亮点,几个,可从小处着眼,举例说明】人事及工资等信息的项目、计算公式、报表及查询可灵活设置;对上述人事及工资等信息的项目、报表及查询的可授权访问控制;人事档案支持员工照片、人员增加、调动,实现对人员学历、职称、奖惩、培训等信息的全面管理,并可扩展加入其他管理功能;人事管理与工资管理功能相整合,工资中的人员基本信息来自于人事系统的人员基本信息中,实现了信息的高度一致和整合,避免了用户需要维护两套系统或人事系统与工资系统人员信息不一致的弊端;工资中相同数据可实现自动携带与获取。
一.设计需求说明一、职工工资管理系统功能设计要求1. 输入记录:将每一个职工的姓名、ID 号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。
•该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
2. 显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。
3. 修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。
4.查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
5. 删除记录:可删除数据文件中的任一记录。
6.恢复记录:能恢复被删除的任一记录。
7. 统计: (A) 计算各项工资平均工资及总工资, (B)•统计符合指定条件(如职工工资前三项之和在2000 元以上、2000~1500 元、1500~1000 元) 以内的工资职工人数及占总职工人数的百分比。
(C)按字符表格形式打印全部职工工资信息表及平均工资(•包括各项总的平均工资)。
8.保存数据文件功能。
9.打开数据文件功能。
经过逐层逐块、不断细化、求精过程,编写程序并进行测试、验证,可以逐个模块地分开调试,并通过文件包含或用工程文件的形式进行逐步联合调试。
程序运行结果如下表所示(记录个数至少8 个)。
二.模块设计分析系统功能模块图:工作程序分析①输入:输入职工工资资料通过结构体的数组来进行操作,先头定义数组em[],先输入需要输入的职工人数m,然后进入循环,每次循环将各项输入结构体数组对应项的对应成员中,当循环次数等于人数时,完成全部员工的资料输入,退出循环。
同时将数据储存在ckerk_list文件中并自动保存至磁盘。
注:如首次使用,尚未输入数据,请先输入数据。
输入的数据将自动保存。
再次选择输入功能时原数据将被覆盖。
②保存:将输入的资料存入磁盘读取文件clerk_list,若文件不存在,打印“打开失败并退出。
若存在,则通过循环语句将输入到结构体数组的数据逐个输入磁盘。
#include<stdio.h>#include<string.h>#define N 100typedef struct worker{char name[20];long number;int y,m,d;char zhicheng[20];char bumen[20];float salary;}Worker;void Display(){printf("\n\n\n\t\t***************职工管理系统*************\n\n");printf("\t\t\t0.退\t\t 出\n");printf("\t\t\t1.新\t\t 建\n");printf("\t\t\t2.显\t\t 示\n");printf("\t\t\t3.查\t\t 询\n");printf("\t\t\t4.删\t\t 除\n\n");}/*******1.新建**********/void Add( Worker w[],int n){int i;printf("\t姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");for(i=0;i< n;i++){printf("员工%d: ",i+1);scanf("%s %ld %d %d %d %s %s %f",w[i].name,&w[i].number, &w[i].y,&w[i].m,&w[i].d,w[i].zhicheng,w[i].bumen,&w[i].salary);}}/*******2.显示**********/void Browse( Worker w[],int n ){int i;printf("\t姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");for(i=0;i< n;i++){printf("员工%d:",i+1);printf("%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i].m, w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);}}/*******3.1查询姓名**********/void SearchName( Worker w[],int n ){char name[20];int i;printf("\t\t\t输入要查询的名字:");scanf("%s",name);for( i = 0; i < n; i ++ ){if( strcmp( w[i].name,name ) == 0 ){printf("\n\t\t\t查得信息如下:\n\n");printf("姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");printf("%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i].m,w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);return;}}printf("\t\t\t查无此人!");}/*******3.2查询工号**********/void SearchNumber( Worker w[],int n ){long number;int i,k=0;printf("\t\t\t输入要查询的工号:");scanf("%ld",&number);for( i = 0; i < n; i ++ ){if( w[i].number == number ){printf("\n\t\t\t查得信息如下:\n\n");printf("姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");printf("%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i].m, w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);return;}}printf("\n\t\t\t查无此人!");}/*******3.查询**********/void Search( Worker w[],int n ){int x;printf("\t\t\t选择查询方式(1.姓名/2.工号):");scanf("%d",&x);printf("\n");switch(x){case 1:SearchName(w,n);break;case 2:SearchNumber(w,n);break;}}/*******4.删除**********/void Delete( Worker w[],int n ){char name[20];int i,j;printf("\t\t\t输入要删除的名字:");scanf("%s",name);printf("\n");for( i = 0; i < n; i ++ ){if( strcmp( w[i].name,name ) == 0 ){printf("\t\t\t将删除以下信息:\n\n");printf("\t姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");printf("\t%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i]. m,w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);for( j = i;j<n-1;j++ ){w[j] = w[j+1];}printf("\t\t\t成功删除!\n\n");return;}}printf("\t\t\t查无此人!");}void Run( Worker w[],int n ){int choice;do{Display();printf("\t\t\t输入你的选择:");scanf("%d",&choice);printf("\n");switch( choice ){case 0:break;case 1:Add(w,n);break;case 2:Browse(w,n);break;case 3:Search(w,n);break;case 4:Delete(w,n);n--;break;}}while(choice);}void main(){int n;Worker w[N];printf("\t输入职员个数:");scanf("%d",&n);Run(w,n);}友情提示:范文可能无法思考和涵盖全面,供参考!最好找专业人士起草或审核后使用,感谢您的下载!。
SAP系统人资模块常用事务代码(用户版) SAP系统人资模块常用事务代码(用户版)在SAP系统中,人力资源(Human Resources,简称HR)模块是企业管理中至关重要的组成部分,涉及到员工信息、工资管理、招聘流程等多个核心业务领域。
为了更高效地操作和管理HR模块,SAP系统提供了许多常用的事务代码(Transaction Codes,简称T-Code)。
本文将为大家介绍一些人资模块常用的事务代码及其功能,帮助用户快速了解并掌握相关操作。
1. PA30 - 维护员工主数据PA30事务代码用于新增、更新和维护员工的主数据。
在人力资源管理中,员工主数据包括个人信息、岗位信息、合同信息、薪资信息等。
通过使用PA30,用户可以方便地对员工主数据进行录入和修改。
2. PA40 - 入职员工PA40事务代码用于入职新员工。
在使用PA40时,用户需要填写员工的个人信息、入职日期、合同类型等,并对员工进行合同签署和薪资设定等操作。
该事务代码将帮助用户规范化和简化新员工的入职流程。
3. PA70 - 员工时间管理PA70事务代码用于管理员工的时间记录,包括考勤管理和请假管理等。
通过PA70,用户可以输入员工的出勤情况、请假类型和请假时长等信息,并能生成相应的时间报表和考勤统计。
4. PC00_M10_CALC - 计算薪资PC00_M10_CALC事务代码用于计算员工的薪资。
通过该事务代码,用户可以选择计算特定时间段内员工的应发工资、应扣除项等,并生成相应的薪资报表。
同时,用户还能根据需要进行薪资调整和福利补贴等操作。
5. PA20 - 员工概览PA20事务代码提供了员工概览的功能,用户可以通过输入员工的个人编号或姓名等信息,快速查看员工的基本信息、薪资记录、工作历史等。
这有助于用户快速了解员工的全面情况,为人力资源管理提供参考依据。
6. PA71 - 薪资调整PA71事务代码用于进行员工的薪资调整。
用户可以在PA71中选择特定员工或员工群组,设定薪资增加或减少的比例,并将调整结果进行保存和生效。
#include "stdafx.h"#include "iostream"#include "string"#include "list"#include "cassert"using namespace std;/*编号、姓名、部门、应付工资、保险、税金、实付工资。
其中实付工资由公式计算得到:实付工资=应付工资- 保险- 税金*/struct employee{string m_num;//编号string m_name;//姓名string m_dep;//部门double m_salary;//应付工资double m_insurance;//保险double m_tax;//税金};/*(1)录入:输入职工数据,其中“实付工资”通过计算得到;(2)删除:删除指定的职工信息(输入姓名,若找到则删除该信息)(3) 修改:允许对已经录入的数据重新进行编辑、修改;(4) 显示:显示全体职工数据;(5)查询:a. 输入职工姓名,显示该职工的全部数据;b. 输入某部门值,显示该部门职工的数据、工资总额、平均工资。
(6) 退出程序。
*/list<employee> emps;int _tmain(int argc, _TCHAR* argv[]){void print(const employee &e);void input();void del();void mod();void show_all();void show_name();void show_dep();cout<<"简易职工薪水管理程序by 做他\n";// delete this linecout<<"版权没有请随意复制或修改任何代码\n";//delete this linecout<<"请选择操作:1.录入2.删除3.修改4.查询5.显示所有员工6.退出:"; int choose=0;cin>>choose;assert(!cin.fail());while (choose!=6){if (choose==1) input();if (choose==2) del();if (choose==3) mod();if (choose==4){int choice=0;cout<<"请选择操作1.按姓名查询2.按部门查询3.退出:";cin>>choice;if (choice==1) show_name();if (choice==2) show_dep();if (choice==3){cout<<"请选择操作:1.录入2.删除3.修改4.查询5.显示所有员工6.退出:";cin>>choose;assert(!cin.fail());continue;}}if (choose==5) show_all();cout<<"请选择操作:1.录入2.删除3.修改4.查询5.显示所有员工6.退出:"; cin>>choose;assert(!cin.fail());}return 0;}void print(const employee &e){cout<<"编号:"<<e.m_num<<endl;cout<<"姓名:"<<e.m_name<<endl;cout<<"部门:"<<e.m_dep<<endl;cout<<"保险:"<<e.m_insurance<<endl;cout<<"税金:"<<e.m_tax<<endl;cout<<"应付工资:"<<e.m_salary<<endl;cout<<"实付工资:"<<e.m_salary-e.m_insurance-e.m_tax<<endl; }void input(){string num,name,dep;double salary,ins,tax;cout<<"请输入员工编号:";cin>>num;cout<<"请输入员工姓名:";cin>>name;cout<<"请输入员工部门:";cin>>dep;cout<<"请输入员工保险:";cin>>ins;assert(!cin.fail());cout<<"请输入员工税金:";cin>>tax;assert(!cin.fail());cout<<"请输入员工应付工资:";cin>>salary;assert(!cin.fail());employee temp;temp.m_dep=dep;temp.m_insurance=ins;temp.m_name=name;temp.m_num=num;temp.m_salary=salary;temp.m_tax=tax;emps.push_back(temp);cout<<"员工录入操作完毕.\n";}void del(){if (emps.size()==0){cout<<"没有员工记录.\n";return;string name;bool isfind=false;cout<<"请输入要删除的员工姓名:";cin>>name;list<employee>::iterator iter;for (iter=emps.begin();iter!=emps.end();iter++){if (iter->m_name==name){isfind=true;emps.erase(iter);cout<<"姓名为\""<<name<<"\"的员工记录已删除.\n";return;}}if (!isfind){cout<<"没有找到姓名为\""<<name<<"\"的员工.\n"; return;}}void mod(){if (emps.size()==0){cout<<"员工记录为空.\n";return;}bool isfind=false;string name;cout<<"请输入要修改的员工姓名:";cin>>name;list<employee>::iterator iter;for (iter=emps.begin();iter!=emps.end();iter++){if (iter->m_name==name){isfind=true;cout<<"姓名为\""<<name<<"\"的员工记录已找到.\n";break;}if (isfind){string num,name,dep;double tax,ins,salary;print(*iter);cout<<endl;cout<<"请输入新的员工编号:";cin>>num;cout<<"请输入新的员工姓名:";cin>>name;cout<<"请输入新的员工部门:";cin>>dep;cout<<"请输入新的员工保险:";cin>>ins;assert(!cin.fail());cout<<"请输入新的员工税金:";cin>>tax;assert(!cin.fail());cout<<"请输入新的员工工资:";cin>>salary;assert(!cin.fail());iter->m_dep=dep;iter->m_insurance=ins;iter->m_name=name;iter->m_num=num;iter->m_salary=salary;iter->m_tax=tax;cout<<"1 员工记录被成功修改.\n";}else{cout<<"没有找到姓名为\""<<name<<"\"的员工记录.\n"; }}void show_all(){if (emps.size()==0){cout<<"员工记录为空.\n";return;}cout<<"显示全体员工数据:\n";cout<<"--------------------\n";list<employee>::iterator iter;for(iter=emps.begin();iter!=emps.end();iter++){cout<<endl;print(*iter);cout<<endl;}cout<<"--------------------\n";}void show_name(){if (emps.size()==0){cout<<"员工记录为空.\n";return;}bool isfind=false;string name;cout<<"请输入要查询的员工姓名:";cin>>name;list<employee>::iterator iter;for(iter=emps.begin();iter!=emps.end();iter++){if (iter->m_name==name){isfind=true;cout<<"姓名为\""<<name<<"\"的员工记录已找到.\n";print(*iter);break;}}if (!isfind){cout<<"没有找到姓名为\""<<name<<"\"的员工.\n"; return;}}void show_dep(){if (emps.size()==0){cout<<"员工记录为空.\n";return;}double isfind=0.00;double total_salary=0.00;string dep;cout<<"请输入要查询的部门名称:";cin>>dep;cout<<"部门["<<dep<<"]的员工信息:\n";cout<<"--------------------\n\n";list<employee>::iterator iter;for(iter=emps.begin();iter!=emps.end();iter++) {if (iter->m_dep==dep){isfind++;total_salary+=iter->m_salary;print(*iter);cout<<endl;continue;}}cout<<"--------------------\n";if (isfind==0){cout<<"没有找到名称为["<<dep<<"]的部门.\n"; }else{cout<<"部门["<<dep<<"]工资统计:\n";cout<<"工资总额:"<<total_salary<<endl;cout<<"平均工资:"<<total_salary/isfind<<endl; }。