员工工资管理系统代码

合集下载

工资管理系统模块中的代码和界面

工资管理系统模块中的代码和界面

工资管理系统模块中的代码和界面:Public Function connectstring() As String'返回一个数据库连接'将字符串赋给用户自定义函数名,即可返回connectstring = "Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=员工薪资管理系统;Data Source=127.0.0.1"'Data Source=.也可以'Integrated Security: 用于指定采用的集成安全机制'Persist Security Info :是否支持安全信息(是否保存密码)'Initial catalog: 用于指定要连接的数据库名称'Data Source:用于指定连接的计算机sql服务器名,或写成本地计算机'Microsoft建议所有的基于Win32的应用程序开发者在进行安全分布式应用程序的开发时使用SSPI的集成安全特性End Function1.创建系统登陆窗体,具体方法如下。

系统登陆窗体中需要输入登陆用户名和密码,并可以请求验证或退出登陆。

在工程中添加一个标准窗体,按照图5-1设计需要的登陆窗体。

将窗体命名为“frm_login",窗体文件保存为“frmSysLogon.frm"。

图5-1 用户登录2.实现系统登陆功能,具体方法如下。

(1)定义窗体级变量。

在窗体代码通用声明部分定义保存允许用户验证登陆信息最大次数的窗体级变量,语句如下所示:Const MaxLogTimes As Integer=3 '定义允许用户验证登陆信息的最大次数(2)实现登陆身份验证。

在用户输入用户名和密码之后,单击登陆按钮提交登陆信息,在按钮的单击事件过程完成所有验证操作,实现代码如下:Private Sub cmdOK_Click()Dim intchecked As IntegerDim strname As String, strpassword As String'静态常量intLogTimes 用于保存用户请求验证的次数Static intlogtimes As Integerintlogtimes = intlogtimes + 1 '保存登陆次数If intlogtimes > maxlogtimes Then'超过允许的登陆次数,显示提示信息MsgBox "你已经超过允许的登录验证次数!" & vbcr_ & "应用程序将结束!", vbCritical, "登录验证"End '结束应用程序Else'进一步验证登录信息的合法性strname = Trim(txtlog(0).Text) '获得用户名strpassword = Trim(txtlog(1).Text) '获得口令'检验用户名和口令的合法性,并根据检验返回值执行相应的操作Select Case check_password(strname, strpassword)Case 0'用户不是系统用户MsgBox "用户不是系统用户,请检查用户名是否输入正确!", vbCritical, "登录验证"txtlog(0).SetFocustxtlog(0).SelStart = 0txtlog(0).SelLength = Len(txtlog(0))Case 1'口令错误MsgBox "口令错误,请重新输入!", vbCritical, "登录验证"txtlog(1) = ""txtlog(1).SetFocusCase 2Unload Me '口令正确,卸载登录窗体MsgBox "登陆成功,将启动系统程序!", vbInformation, "登录验证"frmmain.ShowCase Else'登录验证未正常完成MsgBox "登录验证未正常完成!请重新运行登陆程序," & vbcrlf_ & "如果仍不能登录,请报告系统管理员!", vbCritical, "登录验证"End SelectEnd IfEnd Sub(3)实现退出登陆功能。

员工工资管理系统源代码

员工工资管理系统源代码

#include<stdio.h>#include<string.h> typedefstruct {int basic;// 基本工资int position;// 岗位工资int subsidy;// 津贴intwages;// 奖金int sum;// 总工资}money;typedef struct{char num[20];// 职工号char name[20];// 姓名int age;// 年龄charsex[20];// 性别moneysalary;// 工资}employee;int Print_jinru();// 账号密码输入void Fscan_information();// “职工信息.txt ”文件写入void Print_staff();// 全体员工void Print_empl1(char x[51]);// 按职工号查询void Print_empl2(char s[51]);// 按姓名查询void Print_MainInterface();// 主界面void Print_Interface_1();// 职工信息录入界面void Print_Interface_2();// 职工信息查询界面void Print_Interface_3();// 职工工资排序界面void Print_Interface_4();// 职工总工资void Print_Interface_5();// 文件读出void qsort(int l,int r);// 快速排序voidPrint_delete(int t);// 删除职工信息void Print_Interface_2_1(int t);// 职工信息修改界面int fyanzheng(char s1[],char s2[]);// 密码验证函数employee st[500];// 记录职工信息的函数int n;// 职工总数void main(){int x;employee em;printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@\n");printf("@@@@ 欢迎使用员工工资管理系统@@@@\n");printf("@@@@ 制作人:刘爽@@@@\n");printf("@@@@ 在使用中产生的任何问题,欢迎进行批评指正@@@@\n");printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@\n");printf("\n");printf("\n");printf("\n");if (Print_jinru()){Fscan_information();Print_MainInterface();}else return;}void Fscan_information(){FILE *fp;int i;if ((fp=fopen(" 职工信息.txt","r"))==NULL){printf("cannot open this file\n");return ;}fscanf(fp,"%d",&n);for (i=1;i<=n;i++){fscanf(fp,"%s%s%d%s%d%d%d",st[i].num,st[i].name,&st[i].age,st[i].sex,&st[i].salary.basic,&s t[i].salary.subsidy,&st[i].salary.wages);st[i].salary.sum=st[i].salary.basic+st[i].salary.subsidy+st[i].salary.wages;}fclose(fp);}int fyanzheng(char s1[],char s2[]){FILE *fp1,*fp2;char str1[40]="",str2[40]="",st;int t;if ((fp1=fopen(" 账号验证.in","r"))==NULL){printf("cannot open this file\n");return 0;} t=0;st=fgetc(fp1);while (st!='#'){str1[t]=st;t++;st=fgetc(fp1);}if ((fp2=fopen(" 密码验证.in","r"))==NULL){printf("cannot open this file\n");return 0;}t=0;st=fgetc(fp2);while (st!='#'){str2[t]=st;t++;st=fgetc(fp2);}fclose(fp1);fclose(fp2);if ((strcmp(str1,s1)==0)&&(strcmp(str2,s2)==0)) return 1;elsereturn 0;}int Print_jinru(){int f,d;char x[20],y[20];f=0;d=0;while(1){printf(" 请输入账号:"); scanf("%s",x); getchar();printf(" 请输入密码:"); scanf("%s",y); getchar();f=fyanzheng(x,y);if (d>3)printf(" 错误次数太多,退出系统 \n");return 0;}if (f>0) break;else{printf(" 账号或密码输入错误,请重新输入 \n"); d++;}}printf("\n");printf(" 欢迎进入员工工资管理系统!!!\n");return 1;}else void Print_MainInterface(){int x;printf("\n");printf(" *************************printf("\n");printf("1. 职工信息录入 \n");printf("2. 职工信息查询 \n");printf("3. 职工工资排序 \n");printf("4. 统计职工总工资 \n");printf("5. 保存到文件 \n");printf("6. 退出职工工资系统 \n");printf(" 请选择所需操作 :");scanf("%d",&x);if (x==1)Print_Interface_1();elseif (x==2)Print_Interface_2();elseif (x==3)Print_Interface_3();elseif (x==4)Print_Interface_4();elseif (x==5)Print_Interface_5();华丽的分割线 *********************** **\n");if (x==6){printf(" ******printf("*printf("*printf(" ****** printf(" printf(" printf(" ****** ******** ************ ********************** ******\n");*\n");*\n");*\n");*\n");*\n");\n");printf("233333333333333333333333333333333333333333333333333333\n"); return;} else{printf(" 输入命令错误,返回主菜单 (再乱输入我找人打你啊 )\n");Print_MainInterface(); }}void Print_Interface_1(){n++;if (n>500){printf(" 超出职工最大数 \n");Print_MainInterface();} printf("\n");printf(" ************************* printf("\n");printf(" 新建职工号 :");scanf("%s",st[n].num);printf(" 姓名 :"); scanf("%s",st[n].name);printf(" 年龄 :"); scanf("%d",&st[n].age);printf(" 性别 :"); scanf("%s",st[n].sex);printf(" 基本工资 :"); scanf("%d",&st[n].salary.basic);printf(" 津贴 :"); scanf("%d",&st[n].salary.subsidy);printf(" 奖金 :"); scanf("%d",&st[n].salary.wages);st[n].salary.sum=st[n].salary.basic+st[n].salary.subsidy+st[n].salary.wages; // 妖精的分割线 *************************\n");printf(" 职工信息已成功录入\n");Print_MainInterface();}void Print_Interface_2(){int x;char s[50],y[50];printf("\n");printf(" ************************* 逗比的分割线*********************** **\n");printf("\n");printf("1. 查询所有职工\n");printf("2. 按职工号查询\n"); printf("3. 按职工姓名查询\n");printf("4. 返回主菜单\n"); printf(" 请选择查找方式:\n");scanf("%d",&x);if (x==1)Print_staff();elseif (x==2){printf(" 请输入职工工号:"); scanf("%s",y);Print_empl1(y);}elseif (x==3){printf(" 请输入职工姓名:"); scanf("%s",s);Print_empl2(s);}elseif (x==4)Print_MainInterface();else{printf(" 输入命令错误,返回上一层\n"); Print_Interface_2();}}void Print_Interface_3(){char ch[10];printf("\n");qsort(1,n);printf(" 排序完成!排序后结果请从查询全体职工处查看\n");Print_MainInterface();}void Print_Interface_4(){int i,All=0;char ch[10];printf("\n");for (i=1;i<=n;i++)All=All+st[i].salary.sum;printf(" 所有职工的总工资为:%d\n",All);printf(" 请输入任意字符并敲回车键返回主菜单\n");scanf("%s",&ch);Print_MainInterface();}void Print_Interface_5(){FILE *fp;char ch[10];int i;if ((fp=fopen(" 职工信息.txt","w"))==NULL){printf("cannot open this file\n");return ;}fprintf(fp,"%d\n",n);for (i=1;i<=n;i++)fprintf(fp,"%s %s %d %s %d %d %d\n",st[i].num,st[i].name,st[i].age,st[i].sex,st[i].salary.basic, st[i].salary.subsidy,st[i].salary.wages);fclose(fp);printf("\n");printf(" 已保存到文件\n");printf("\n");printf(" 请输入任意字符返回主菜单\n");scanf("%s",&ch);Print_MainInterface();}void Print_staff(){int i;printf("\n");printf(" ************************* 帅比的分割线*************************" );printf("\n");for (i=1;i<=n;i++){printf(" 职工工号:%s\n",st[i].num);printf(" 姓名:%s\n",st[i].name);printf(" 年龄:%d\n",st[i].age);printf(" 性别:%s\n",st[i].sex);printf(" 基本工资:%d\n",st[i].salary.basic);printf(" 津贴:%d\n",st[i].salary.subsidy);printf(" 奖金:%d\n",st[i].salary.wages);printf(" 总工资:%d\n",st[i].salary.sum); printf("\n");}printf(" 返回上一层\n");Print_Interface_2();}void Print_empl1(char x[]) {int i,t,y,d=0;printf("\n");for (i=1;i<=n;i++)if (strcmp(x,st[i].num)==0) { t=i;d=1;printf(" 职工工号:%s\n",st[i].num);printf(" 姓名:%s\n",st[i].name);printf(" 年龄:%d\n",st[i].age);printf(" 性别:%s\n",st[i].sex);printf(" 基本工资:%d\n",st[i].salary.basic);printf(" 津贴:%d\n",st[i].salary.subsidy); printf(" 奖金:%d\n",st[i].salary.wages);printf(" 总工资:%d\n",st[i].salary.sum); printf("\n");break;}if (d>0){printf(" 如需删除请按2,修改请按1,返回请按0\n"); scanf("%d",&y);if (y==2)Print_delete(t);else if (y==1)Print_Interface_2_1(t);else if (y==0) Print_Interface_2();else{printf(" 输入命令错误,返回上一层(再乱输入我找人打你啊)\n");Print_Interface_2();}}else{printf(" 对不起,查无此人(本系统不包括路人甲乙丙,不要乱输-_-! )\n");printf(" 请重新选择查询方式\n");Print_Interface_2();}}void Print_empl2(char s[]){int i,t,x,y=0;printf("\n");for (i=1;i<=n;i++)if (strcmp(s,st[i].name)==0){t=i;y=1;printf(" 职工工号:%s\n",st[i].num);printf(" 姓名:%s\n",st[i].name);printf(" 年龄:%d\n",st[i].age);printf(" 性别:%s\n",st[i].sex);printf(" 基本工资:%d\n",st[i].salary.basic);printf(" 津贴:%d\n",st[i].salary.subsidy);printf(" 奖金:%d\n",st[i].salary.wages);printf(" 总工资:%d\n",st[i].salary.sum);printf("\n");break;}if (y>0){printf(" 如需删除请按2,修改请按1,返回请按0(再乱输入我找人打你啊)\n");scanf("%d",&x);if (x==2)Print_delete(t);elseif (x==1) Print_Interface_2_1(t);else if (x==0) Print_Interface_2();else{ printf(" 输入命令错误,返回上一层\n"); Print_Interface_2();}}else{printf(" 对不起,查无此人(本系统不包括路人甲乙丙,不要乱输-_-! )\n");printf(" 请重新选择查询方式\n");Print_Interface_2();}}void Print_delete(int t){st[t].salary.sum=0;qsort(1,n);n--;printf(" 已删除该职工并排序,自动返回主菜单\n");Print_MainInterface();}void Print_Interface_2_1(int t){int x;printf("\n");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");scanf("%d",&x);switch(x){case 1:scanf("%s",st[t].num);break;case 2: scanf("%s",st[t].name);break;case 3: scanf("%d",st[t].age);break;case 4: scanf("%s",st[t].sex);break;case 5: scanf("%s",st[t].salary.basic);break;case 6: scanf("%d",st[t].salary.subsidy);break;case 7: scanf("%d",st[t].salary.wages);break;} st[t].salary.sum=st[t].salary.basic+st[t].salary.subsidy+st[t].salary.wages;if (x<=8)Print_Interface_2();elseif (x==9) Print_MainInterface();}void qsort(int l,int r){int i,j,mid;employee tt;i=l;j=r;mid=st[(l+r)/2].salary.sum;do{while (st[i].salary.sum>mid) i++;while (st[j].salary.sum<mid) j--;if (i<=j){tt=st[i];st[i]=st[j];st[j]=tt;i++;j--;}}while(i<=j);if (i<r) qsort(i,r);if (l<j) qsort(l,j);。

数据库工资管理系统报告和代码大全

数据库工资管理系统报告和代码大全

数据库原理及应用课程设计报告题目:工资管理系统所在学院:信息工程学院班级:学号:姓名:指导教师:2014年1月2日目录一、概述二、需求分析三、概念设计四、逻辑设计五、系统实现六、小结一、概述在工资管理中,需要从公司管理方式以及实际情况中提取相关信息,以反映工资管理情况。

传统的手工操作方式,易发生数据丢失,统计错误,劳动强度高,且速度慢。

使用计算机可以高速,快捷地完成以上工作。

避免重复劳动,规范工资管理行为,从而提高了管理效率和水平。

让人们的效率大大提高.不难想象,正是资讯的迅速发展使得人们从过去繁复的手工劳作中得以解脱,从而使这种服务在现在才可能迅速普及。

同时,编写一套完整的工资管理系统的任务就显得尤为重要。

本课程设计共分为四大模块:1.系统数据初始化2.工基本信息数据的输入、修改、删除;3.员工个人信息及工资表的查询;4,员工工资的计算;二、需求分析本系统主要用于员工基本信息的管理,对员工以及其他信息的添加、修改、删除、查询等基本操作。

对于数据库的保护有数据备份和数据恢复的功能。

针对这些要求,设计本月工资信息管理系统。

该系统主要包括职工信息、工资级别和工资金额、公司福利表等。

⒈员工基本状况包括员工号、员工姓名、性别、所在部门、工资级别、工资等级等。

2.工资级别和工资金额包括工资等级、工资额。

3.企业部门及工作岗位信息包括部门名称、工作岗位名称、工作岗位工资等。

4.工龄和工资金额包括工龄及对应工资额。

5.公司福利表包括福利名称、福利值。

本系统概念设计思想:1.对公司软硬件调查,从实际环境出发,以便充分利用公司现在资源,提高系统开发水平和应用效果。

图1.1 系统功能模块图图2.6信息查询及管理的流程图三、概念设计分析前面的系统功能要求,需要一个表来存储和管理员工信息,使系统能够接受员工原始的各项数据,以实现数据录入、查询或统计员工信息等功能。

员工是本系统的第一个实体。

为了能实现查询和统计部门内员工情况等功能,必须有一个表来存储和管理所有部门的信息。

工资管理系统毕业设计附源码

工资管理系统毕业设计附源码

工资管理系统毕业设计附源码工资管理系统是一种用于管理和计算员工工资的软件系统。

它可以帮助企业自动化工资计算、发放和记录,提高工资管理的效率和准确性。

下面是一个简单的工资管理系统的毕业设计附源码的示例。

首先,我们需要设计数据库来存储员工信息和工资数据。

可以使用关系型数据库如MySQL或SQLite。

以下是一个简化的员工表和工资表的设计示例:员工表(employees):employee_id: 员工ID(主键)。

name: 员工姓名。

department: 所属部门。

position: 职位。

工资表(salaries):salary_id: 工资记录ID(主键)。

employee_id: 员工ID(外键)。

salary_date: 工资发放日期。

basic_salary: 基本工资。

bonus: 奖金。

deductions: 扣款。

total_salary: 总工资。

接下来,我们需要开发一个用户界面,让管理员可以输入员工信息和工资数据,并进行工资计算和管理。

可以使用Java编程语言和Swing图形用户界面库来实现。

以下是一个简单的Java代码示例:java.import javax.swing.;import java.awt.;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class SalaryManagementSystem extends JFrame {。

// 声明界面组件。

private JTextField idField, nameField, departmentField, positionField;private JTextField dateField, basicSalaryField, bonusField, deductionsField;private JTextArea resultArea;private JButton calculateButton, saveButton;public SalaryManagementSystem() {。

员工工资管理系统源代码

员工工资管理系统源代码

#include<stdio.h>#include<string.h>typedef struct{int basic;//基本工资int position;//岗位工资int subsidy;//津贴int wages;//奖金int sum;//总工资}money;typedef struct{char num[20];//职工号char name[20];//姓名int age;//年龄char sex[20];//性别money salary;//工资}employee;int Print_jinru();//账号密码输入void Fscan_information();//“职工信息.txt”文献写入void Print_staff();//全体员工void Print_empl1(char x[51]);//按职工号查询void Print_empl2(char s[51]);//按姓名查询void Print_MainInterface();//主界面void Print_Interface_1();//职工信息录入界面void Print_Interface_2();//职工信息查询界面void Print_Interface_3();//职工工资排序界面void Print_Interface_4();//职工总工资void Print_Interface_5();//文献读出void qsort(int l,int r);//快速排序void Print_delete(int t);//删除职工信息void Print_Interface_2_1(int t);//职工信息修改界面int fyanzheng(char s1[],char s2[]);//密码验证函数employee st[500];//记录职工信息的函数int n;//职工总数void main(){int x;employee em;printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@\n");printf("@@@@ 欢迎使用员工工资管理系统@@@@\n");printf("@@@@ 制作人:刘爽@@@@\n");printf("@@@@在使用中产生的任何问题, 欢迎进行批评指正@@@@\n");printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");printf("\n");printf("\n");printf("\n");if (Print_jinru()){Fscan_information();Print_MainInterface();}else return;}void Fscan_information(){FILE *fp;int i;if ((fp=fopen("职工信息.txt","r"))==NULL){printf("cannot open this file\n");return ;}fscanf(fp,"%d",&n);for (i=1;i<=n;i++){fscanf(fp,"%s%s%d%s%d%d%d",st[i].num,st[i].name,&st[i].age,st[i].sex,&st[i].salary.basic,&st[i].salary.subsidy,&st[i].salary.wages);st[i].salary.sum=st[i].salary.basic+st[i].salary.subsidy+st[i].salary.wages;}fclose(fp);}int fyanzheng(char s1[],char s2[]){FILE *fp1,*fp2;char str1[40]="",str2[40]="",st;int t;if ((fp1=fopen("账号验证.in","r"))==NULL){printf("cannot open this file\n");return 0;}t=0;st=fgetc(fp1);while (st!='#'){str1[t]=st;t++;st=fgetc(fp1);}if ((fp2=fopen("密码验证.in","r"))==NULL){printf("cannot open this file\n");return 0;}t=0;st=fgetc(fp2);while (st!='#'){str2[t]=st;t++;st=fgetc(fp2);}fclose(fp1);fclose(fp2);if ((strcmp(str1,s1)==0)&&(strcmp(str2,s2)==0)) return 1;elsereturn 0;}int Print_jinru(){int f,d;char x[20],y[20];f=0;d=0;while(1){printf("请输入账号:");scanf("%s",x);getchar();printf("请输入密码:");scanf("%s",y);getchar();f=fyanzheng(x,y);if (d>3){printf("错误次数太多, 退出系统\n");return 0;}if (f>0) break;else{printf("账号或密码输入错误, 请重新输入\n");d++;}}printf("\n");printf("欢迎进入员工工资管理系统\n");return 1;}void Print_MainInterface(){int x;printf("\n");printf("*************************华丽的分割线*************************\n");printf("\n");printf("1.职工信息录入\n");printf("2.职工信息查询\n");printf("3.职工工资排序\n");printf("4.记录职工总工资\n");printf("5.保存到文献\n");printf("6.退出职工工资系统\n");printf("请选择所需操作:");scanf("%d",&x);if (x==1)Print_Interface_1();elseif (x==2)Print_Interface_2();elseif (x==3)Print_Interface_3();elseif (x==4)Print_Interface_4();elseif (x==5)Print_Interface_5();elseif (x==6){printf(" ****** **** **** * * ***** * *\n");printf("* * * * * * * * * * *\n");printf("* * * * * * * * * * *\n");printf(" ****** ******** ******** ** * * * *\n");printf(" * * * ** * * * *\n");printf(" * * * ** * * * *\n");printf(" ****** **** **** ** ***** ***** \n");// printf("333333\n");return;}else{printf("输入命令错误, 返回主菜单(再乱输入我找人打你啊)\n");Print_MainInterface();}}void Print_Interface_1(){n++;if (n>500){printf("超过职工最大数\n");Print_MainInterface();}printf("\n");printf("*************************妖精的分割线*************************\n"); printf("\n");printf("新建职工号:");scanf("%s",st[n].num);printf("姓名:");scanf("%s",st[n].name);printf("年龄:");scanf("%d",&st[n].age);printf("性别:");scanf("%s",st[n].sex);printf("基本工资:");scanf("%d",&st[n].salary.basic);printf("津贴:");scanf("%d",&st[n].salary.subsidy);printf("奖金:");scanf("%d",&st[n].salary.wages);st[n].salary.sum=st[n].salary.basic+st[n].salary.subsidy+st[n].salary.wages;printf("职工信息已成功录入\n");Print_MainInterface();}void Print_Interface_2(){int x;char s[50],y[50];printf("\n");printf("*************************逗比的分割线*************************\n");printf("\n");printf("1.查询所有职工\n");printf("2.按职工号查询\n");printf("3.按职工姓名查询\n");printf("4.返回主菜单\n");printf("请选择查找方式:\n");scanf("%d",&x);if (x==1)Print_staff();elseif (x==2){printf("请输入职工工号:");scanf("%s",y);Print_empl1(y);}elseif (x==3){printf("请输入职工姓名:");scanf("%s",s);Print_empl2(s);}elseif (x==4)Print_MainInterface();else{printf("输入命令错误, 返回上一层\n");Print_Interface_2();}}void Print_Interface_3(){char ch[10];printf("\n");qsort(1,n);printf("排序完毕!排序后结果请从查询全体职工处查看\n");Print_MainInterface();}void Print_Interface_4(){int i,All=0;char ch[10];printf("\n");for (i=1;i<=n;i++)All=All+st[i].salary.sum;printf("所有职工的总工资为:%d\n",All);printf("请输入任意字符并敲回车键返回主菜单\n");scanf("%s",&ch);Print_MainInterface();}void Print_Interface_5(){FILE *fp;char ch[10];int i;if ((fp=fopen("职工信息.txt","w"))==NULL){printf("cannot open this file\n");return ;}fprintf(fp,"%d\n",n);for (i=1;i<=n;i++)fprintf(fp,"%s %s %d %s %d %d %d\n",st[i].num,st[i].name,st[i].age,st[i].sex,st[i].salary.basic,st[i].salary.subsidy,st[i].salary.wages);fclose(fp);printf("\n");printf("已保存到文献\n");printf("\n");printf("请输入任意字符返回主菜单\n");scanf("%s",&ch);Print_MainInterface();}void Print_staff(){int i;printf("\n");printf("*************************帅比的分割线*************************");printf("\n");for (i=1;i<=n;i++){printf("职工工号:%s\n",st[i].num);printf("姓名:%s\n",st[i].name);printf("年龄:%d\n",st[i].age);printf("性别:%s\n",st[i].sex);printf("基本工资:%d\n",st[i].salary.basic);printf("津贴:%d\n",st[i].salary.subsidy);printf("奖金:%d\n",st[i].salary.wages);printf("总工资:%d\n",st[i].salary.sum);printf("\n");}printf("返回上一层\n");Print_Interface_2();}void Print_empl1(char x[]){int i,t,y,d=0;printf("\n");for (i=1;i<=n;i++)if (strcmp(x,st[i].num)==0){t=i;d=1;printf("职工工号:%s\n",st[i].num);printf("姓名:%s\n",st[i].name);printf("年龄:%d\n",st[i].age);printf("性别:%s\n",st[i].sex);printf("基本工资:%d\n",st[i].salary.basic);printf("津贴:%d\n",st[i].salary.subsidy);printf("奖金:%d\n",st[i].salary.wages);printf("总工资:%d\n",st[i].salary.sum);printf("\n");break;}if (d>0){printf("如需删除请按2,修改请按1,返回请按0\n");scanf("%d",&y);if (y==2)Print_delete(t);elseif (y==1)Print_Interface_2_1(t);elseif (y==0)Print_Interface_2();else{printf("输入命令错误, 返回上一层(再乱输入我找人打你啊)\n");Print_Interface_2();}}else{printf("对不起,查无此人(本系统不涉及路人甲乙丙, 不要乱输-_-!)\n");printf("请重新选择查询方式\n");Print_Interface_2();}}void Print_empl2(char s[]){int i,t,x,y=0;printf("\n");for (i=1;i<=n;i++)if (strcmp(s,st[i].name)==0){t=i;y=1;printf("职工工号:%s\n",st[i].num);printf("姓名:%s\n",st[i].name);printf("年龄:%d\n",st[i].age);printf("性别:%s\n",st[i].sex);printf("基本工资:%d\n",st[i].salary.basic);printf("津贴:%d\n",st[i].salary.subsidy);printf("奖金:%d\n",st[i].salary.wages);printf("总工资:%d\n",st[i].salary.sum);printf("\n");break;}if (y>0){printf("如需删除请按2,修改请按1,返回请按0(再乱输入我找人打你啊)\n");scanf("%d",&x);if (x==2)Print_delete(t);elseif (x==1)Print_Interface_2_1(t);elseif (x==0)Print_Interface_2();else{printf("输入命令错误, 返回上一层\n");Print_Interface_2();}}else{printf("对不起,查无此人(本系统不涉及路人甲乙丙, 不要乱输-_-!)\n");printf("请重新选择查询方式\n");Print_Interface_2();}}void Print_delete(int t){st[t].salary.sum=0;qsort(1,n);n--;printf("已删除该职工并排序, 自动返回主菜单\n");Print_MainInterface();}void Print_Interface_2_1(int t){int x;printf("\n");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");scanf("%d",&x);switch(x){case 1:scanf("%s",st[t].num);break;case 2:scanf("%s",st[t].name);break;case 3:scanf("%d",st[t].age);break;case 4:scanf("%s",st[t].sex);break;case 5:scanf("%s",st[t].salary.basic);break;case 6:scanf("%d",st[t].salary.subsidy);break;case 7:scanf("%d",st[t].salary.wages);break;}st[t].salary.sum=st[t].salary.basic+st[t].salary.subsidy+st[t].salary.wages;if (x<=8)Print_Interface_2();elseif (x==9)Print_MainInterface();}void qsort(int l,int r){int i,j,mid;employee tt;i=l;j=r;mid=st[(l+r)/2].salary.sum;do{while (st[i].salary.sum>mid) i++;while (st[j].salary.sum<mid) j--;if (i<=j){tt=st[i];st[i]=st[j];st[j]=tt;i++;j--;}}while(i<=j);if (i<r) qsort(i,r);if (l<j) qsort(l,j);}。

Java和SQL-Server2000开发的职工和工资管理系统(全过程及代码)

Java和SQL-Server2000开发的职工和工资管理系统(全过程及代码)

工资管理系统一,设计数据库SalaryManagement职工表:工资表二,创建“数据源(ODBC)”具体步骤:“开始”-“控制面板”-“管理工具”-“数据源(ODBC)-在用户DNS里,点“添加”--在数据源驱动列表最下方选择“SQLServer”-点“完成”--出现了一个创建到SQL Server的新数据源-在数据源“名称”右侧,填写数据库的名称;在“服务器”右侧,写(local)-点“下一步”--继续点“下一步”-在更改默认的数据库为“SalaryManagement”,这里的数据库为我刚刚新建的数据库。

-点“下一步”-点“完成”-出现一个“ODBC Microsoft SQL Server 安装”对话框-点击下面的“测试数据源”-出现图2.1就好了。

图2.1-下面依次点击“确定”就完成了。

-完成了以后,你会在数据源里看到自己刚刚新建的数据源,名为:“SalaryManagement”三代码的编写:3.1数据库连接(文件名:DBConnect.java)注意,这个文件最好先编译,因为后面的main.java文件的编译会用到该文件编译完产生的DBConnect.class文件//类DBConnect用于数据库的连接//导入sql包import java.sql.*;//创建数据库连接类DBConnectpublic class DBConnect{//静态方法提高数据库的连接效率public static Connection getConn() throws Exception{//加载JDBC驱动Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//以系统默认用户身份,连接数据库StudentManagerreturn DriverManager.getConnection("jdbc:odbc:SalaryManagement","","");}}3.2 添加职工信息(文件名:AddEmployee.java)//添加职工面板类AddEmployee//导入系统的类包import java.awt.*;import java.sql.*;import javax.swing.*;import java.awt.event.*;//创建“添加职工“面板类public class AddEmployee extends JPanel implements ActionListener {//声明连接数据库对象Connection con;//声明SQL语句对象Statement st;//创建组件对象:标签、文本行、单选JLabel jLabel1=new JLabel("职工工号");JLabel jLabel2=new JLabel("职工姓名");JLabel jLabel3=new JLabel("职工性别");JLabel jLabel4=new JLabel("职工年龄");JLabel jLabel5=new JLabel("家庭住址");JLabel jLabel6=new JLabel("联系电话");JTextField jTextField1=new JTextField();JTextField jTextField2=new JTextField();JTextField jTextField3=new JTextField();JTextField jTextField4=new JTextField();JTextField jTextField5=new JTextField();JRadioButton jRadioButton1=new JRadioButton("男");JRadioButton jRadioButton2=new JRadioButton("女");ButtonGroup buttonGroup1=new ButtonGroup();JButton jButton1=new JButton("添加职工");//构造方法public AddEmployee(){try{//调用初始化方法jbInit();}catch(Exception exception){exception.printStackTrace();}}//界面初始化方法private void jbInit() throws Exception{//连接数据库con=DBConnect.getConn();st=con.createStatement();//框架的布局this.setLayout(null);//设置各组件的大小jLabel1.setBounds(new Rectangle(21,17,64,24));jLabel2.setBounds(new Rectangle(21,51,53,22));jLabel3.setBounds(new Rectangle(21,86,61,27));jLabel4.setBounds(new Rectangle(21,122,59,25));jLabel5.setBounds(new Rectangle(21,168,54,24));jLabel6.setBounds(new Rectangle(21,205,54,24));jTextField1.setBounds(new Rectangle(102,10,200,30));jTextField2.setBounds(new Rectangle(102,49,200,30));jTextField3.setBounds(new Rectangle(102,117,80,33));jTextField4.setBounds(new Rectangle(102,163,200,29));jTextField5.setBounds(new Rectangle(102,200,200,29));jRadioButton1.setBounds(new Rectangle(102,83,65,30));jRadioButton2.setBounds(new Rectangle(190,85,85,30));jButton1.setBounds(new Rectangle(130,240,150,32));//设置单选按钮被选中jRadioButton1.setSelected(true);//添加按钮动作事件jButton1.addActionListener(this);//添加组件到面板this.add(jLabel1);this.add(jTextField1);this.add(jLabel2);this.add(jTextField2);this.add(jLabel3);buttonGroup1.add(jRadioButton1);buttonGroup1.add(jRadioButton2);this.add(jRadioButton1);this.add(jRadioButton2);this.add(jLabel4);this.add(jTextField3);this.add(jLabel5);this.add(jTextField4);this.add(jLabel6);this.add(jTextField5);this.add(jButton1);}//点击按钮事件public void actionPerformed(ActionEvent e){//获取用户输入的信息String EmployeeID=jTextField1.getText();String EmployeeName=jTextField2.getText();String EmployeeSex="";if(jRadioButton1.isSelected())EmployeeSex+="男";if(jRadioButton2.isSelected())EmployeeSex+="女";String EmployeeAge=jTextField3.getText();String EmployeeAddress=jTextField4.getText();String EmployeePhone=jTextField5.getText();try{//设置日期格式st.execute("set dateformat ymd");//利用st对象执行SQL语句,进行插入操作st.executeUpdate("insert into Employee values('"+EmployeeID+"','"+EmployeeName+"','"+EmployeeSex+"','"+EmployeeAge+"','"+Empl oyeeAddress+"','"+EmployeePhone+"')");//利用消息对话框提示职工添加成功JOptionPane.showMessageDialog(this,"职工添加成功!");//清空文本行的内容jTextField1.setText("");jTextField2.setText("");jTextField3.setText("");jTextField4.setText("");jTextField5.setText("");}catch(Exception ex){//利用消息对话框提示异常的信息JOptionPane.showMessageDialog(this,"职工添加失败!");ex.printStackTrace();}}}3.3 修改职工信息(文件名:ModifyEmployee.java)//“职工信息修改”面板类ModifyEmployee//导入系统的类包import java.awt.*;import java.sql.*;import javax.swing.*;import java.awt.event.*;//创建“职工信息修改资”类public class ModifyEmployee extends JPanel implements ActionListener {//声明连接数据库对象Connection con;//声明SQL语句对象Statement st;//创建组件对象:标签、文本行、单选JLabel jLabel1=new JLabel("请输入职工的编号:");JTextField jTextField1=new JTextField();JButton jButton1=new JButton("查找该职工");JLabel jLabel2=new JLabel("职工编号:");JTextField jTextField2=new JTextField();JLabel jLabel3=new JLabel("职工姓名:");JTextField jTextField3=new JTextField();JLabel jLabel4=new JLabel("职工性别:");JTextField jTextField4=new JTextField();JLabel jLabel5=new JLabel("职工年龄:");JTextField jTextField5=new JTextField();JLabel jLabel6=new JLabel("家庭住址:");JTextField jTextField6=new JTextField();JLabel jLabel7=new JLabel("联系电话:");JTextField jTextField7=new JTextField();JButton jButton2=new JButton("修改职工信息");//构造方法public ModifyEmployee(){try{//调用初始化方法jbInit();}catch(Exception exception){exception.printStackTrace();}}//面板初始化方法private void jbInit() throws Exception{//连接数据库con=DBConnect.getConn();st=con.createStatement();//框架的布局this.setLayout(null);//设置各组件的大小jLabel1.setFont(new java.awt.Font("楷体",Font.BOLD,14)); jLabel1.setBounds(new Rectangle(40,15,140,30)); jTextField1.setBounds(new Rectangle(185,15,120,30)); jButton1.setBounds(new Rectangle(110,55,150,30)); jLabel2.setFont(new java.awt.Font("楷体",Font.BOLD,14)); jLabel2.setBounds(new Rectangle(20,105,80,30)); jTextField2.setBounds(new Rectangle(100,105,80,30)); jLabel3.setFont(new java.awt.Font("楷体",Font.BOLD,14)); jLabel3.setBounds(new Rectangle(190,105,80,30)); jTextField3.setBounds(new Rectangle(270,105,80,30)); jLabel4.setFont(new java.awt.Font("楷体",Font.BOLD,14)); jLabel4.setBounds(new Rectangle(20,145,80,30)); jTextField4.setBounds(new Rectangle(100,145,80,30)); jLabel5.setFont(new java.awt.Font("楷体",Font.BOLD,14)); jLabel5.setBounds(new Rectangle(190,145,80,30)); jTextField5.setBounds(new Rectangle(270,145,80,30)); jLabel6.setFont(new java.awt.Font("楷体",Font.BOLD,14)); jLabel6.setBounds(new Rectangle(20,185,80,30)); jTextField6.setBounds(new Rectangle(100,185,80,30)); jLabel7.setFont(new java.awt.Font("楷体",Font.BOLD,14)); jLabel7.setBounds(new Rectangle(190,185,80,30)); jTextField7.setBounds(new Rectangle(270,185,80,30)); jButton2.setBounds(new Rectangle(120,240,150,30));//添加按钮动作事件jButton1.addActionListener(this);jButton2.addActionListener(this);//添加组件到面板this.add(jLabel1);this.add(jTextField1);this.add(jButton1);this.add(jLabel2);this.add(jTextField2);jTextField2.setEditable(false);this.add(jLabel3);this.add(jTextField3);this.add(jLabel4);this.add(jTextField4);this.add(jLabel5);this.add(jTextField5);this.add(jLabel6);this.add(jTextField6);this.add(jLabel7);this.add(jTextField7);this.add(jButton2);}//点击按钮事件public void actionPerformed(ActionEvent actionevent){//点击“查找该职工”按钮if(actionevent.getSource()==jButton1){try{//利用st对象执行SQL语句,返回结果集对象ResultSet rs=st.executeQuery("select * from Employee where 职工编号='"+jTextField1.getText()+"'");//处理结果集if(rs.next()){jTextField2.setText(rs.getString("职工编号"));jTextField3.setText(rs.getString("职工姓名"));jTextField4.setText(rs.getString("职工性别"));jTextField5.setText(rs.getString("职工年龄"));jTextField6.setText(rs.getString("家庭住址"));jTextField7.setText(rs.getString("联系电话"));}else{JOptionPane.showMessageDialog(this,"没有这个工号的职工!");}}catch(Exception ex){//利用消息对话框提示查询失败JOptionPane.showMessageDialog(this,"职工信息修改失败!");}}//点击“修改工资”按钮if(actionevent.getSource()==jButton2){//获取用户更改的工资try{//利用st对象执行SQL语句,进行插入操作st.executeUpdate("update Employee set 职工姓名='"+jTextField3.getText()+"' where 职工编号='"+jTextField2.getText()+"'");st.executeUpdate("update Employee set 职工性别='"+jTextField4.getText()+"' where 职工编号='"+jTextField2.getText()+"'");st.executeUpdate("update Employee set 职工年龄='"+jTextField5.getText()+"' where 职工编号='"+jTextField2.getText()+"'");st.executeUpdate("update Employee set 家庭住址='"+jTextField6.getText()+"' where 职工编号='"+jTextField2.getText()+"'");st.executeUpdate("update Employee set 联系电话='"+jTextField7.getText()+"' where 职工编号='"+jTextField2.getText()+"'");//利用消息对话框提示职工信息修改成功JOptionPane.showMessageDialog(this,"职工信息修改成功!");}catch(Exception ex){//利用消息对话框提示异常的信息JOptionPane.showMessageDialog(this,"职工信息修改失败!");ex.printStackTrace();}}}}3.4 删除职工信息(文件名:DeleteEmployee.java)//”删除职工“面板类DeleteEmployee//导入系统的类包import java.awt.*;import java.sql.*;import javax.swing.*;import java.awt.event.*;//创建“删除职工”类public class DeleteEmployee extends JPanel implements ActionListener{//声明连接数据库对象Connection con;//声明SQL语句对象Statement st;//创建组件对象JLabel jLabel1=new JLabel("请输入待删除的职工的编号");JTextField jTextField1=new JTextField();JButton jButton1=new JButton("删除");//构造方法public DeleteEmployee(){try{//调用初始化方法jbInit();}catch(Exception exception){exception.printStackTrace();}}//界面初始化方法private void jbInit() throws Exception{//连接数据库con=DBConnect.getConn();st=con.createStatement();//框架的布局this.setLayout(null);//设置各组件的大小jLabel1.setFont(new java.awt.Font("黑体",Font.BOLD,14));jLabel1.setBounds(new Rectangle(70,20,200,30));jTextField1.setBounds(new Rectangle(70,80,207,41));jButton1.setBounds(new Rectangle(70,175,205,36));//添加按钮动作事件jButton1.addActionListener(this);//添加组件到面板this.add(jLabel1);this.add(jTextField1);this.add(jButton1);}//点击按钮事件public void actionPerformed(ActionEvent e){//获取用户输入的职工编号String EmployeeID=jTextField1.getText();//要求用户确认删除if(JOptionPane.showConfirmDialog(this,"确认要删除吗?")==JOptionPane.YES_OPTION){try{//利用st对象执行SQL删除操作st.executeUpdate("delete from Employee where 职工编号='"+EmployeeID+"'");//利用消息对话框提示删除操作成功JOptionPane.showMessageDialog(this,"职工删除操作,执行成功!");//清空输入学号的文本行jTextField1.setText("");}catch(Exception ex){//利用消息对话框提示不能删除JOptionPane.showMessageDialog(this,"职工删除操作,执行失败!");}}}}3.5 添加工资类(文件名:AddSalary.java)//"添加工资"面板类AddSalary//导入系统的类包import java.awt.*;import java.sql.*;import javax.swing.*;import java.awt.event.*;//创建“添加工资“类public class AddSalary extends JPanel implements ActionListener {//声明连接数据库对象Connection con;//声明SQL语句对象Statement st;//创建组件对象:标签、文本行、单选JLabel jLabel1=new JLabel("职工工号");JLabel jLabel2=new JLabel("职工工资");JTextField jTextField1=new JTextField();JTextField jTextField2=new JTextField();JButton jButton1=new JButton("添加工资");//构造方法public AddSalary(){try{//调用初始化方法jbInit();}catch(Exception exception){exception.printStackTrace();}}//界面初始化方法private void jbInit() throws Exception{//连接数据库con=DBConnect.getConn();st=con.createStatement();//框架的布局this.setLayout(null);//设置各组件的大小jLabel1.setBounds(new Rectangle(21,17,64,24));jLabel2.setBounds(new Rectangle(21,51,53,22));jTextField1.setBounds(new Rectangle(102,10,200,30));jTextField2.setBounds(new Rectangle(102,60,200,30));jButton1.setBounds(new Rectangle(130,120,150,32));//添加按钮动作事件jButton1.addActionListener(this);//添加组件到面板this.add(jLabel1);this.add(jTextField1);this.add(jLabel2);this.add(jTextField2);this.add(jButton1);}//点击按钮事件public void actionPerformed(ActionEvent e){//获取用户输入的信息String EmployeeID=jTextField1.getText();String EmployeeSalary=jTextField2.getText();try{//利用st对象执行SQL语句,进行插入操作st.executeUpdate("insert into Salary values('"+EmployeeID+"','"+EmployeeSalary+"')");//利用消息对话框提示工资添加成功JOptionPane.showMessageDialog(this,"工资添加成功!");//清空文本行的内容jTextField1.setText("");jTextField2.setText("");}catch(Exception ex){//利用消息对话框提示异常的信息JOptionPane.showMessageDialog(this,"工资添加失败!");ex.printStackTrace();}}}3.6 修改工资信息(文件名ModifySalary.java)//“修改工资”面板类ModifySalary//导入系统的类包import java.awt.*;import java.sql.*;import javax.swing.*;import java.awt.event.*;//创建“修改工资”面板类public class ModifySalary extends JPanel implements ActionListener {//声明连接数据库对象Connection con;//声明SQL语句对象Statement st;//创建组件对象:标签、文本行、单选JLabel jLabel1=new JLabel("请输入职工的编号:");JTextField jTextField1=new JTextField();JButton jButton1=new JButton("查找该职工");JLabel jLabel2=new JLabel("职工编号:");JTextField jTextField2=new JTextField();JLabel jLabel3=new JLabel("职工工资:");JTextField jTextField3=new JTextField();JButton jButton2=new JButton("修改工资");//构造方法public ModifySalary(){try{//调用初始化方法jbInit();}catch(Exception exception){exception.printStackTrace();}}//面板初始化方法private void jbInit() throws Exception{//连接数据库con=DBConnect.getConn();st=con.createStatement();//框架的布局this.setLayout(null);//设置各组件的大小jLabel1.setFont(new java.awt.Font("楷体",Font.BOLD,14));jLabel1.setBounds(new Rectangle(40,25,140,30));jTextField1.setBounds(new Rectangle(185,25,120,30));jButton1.setBounds(new Rectangle(110,65,120,30));jLabel2.setFont(new java.awt.Font("楷体",Font.BOLD,14));jLabel2.setBounds(new Rectangle(90,125,80,30));jTextField2.setBounds(new Rectangle(170,125,80,30));jLabel3.setFont(new java.awt.Font("楷体",Font.BOLD,14));jLabel3.setBounds(new Rectangle(90,160,80,30));jTextField3.setBounds(new Rectangle(170,160,80,30));jButton2.setBounds(new Rectangle(120,200,100,30));//添加按钮动作事件jButton1.addActionListener(this);jButton2.addActionListener(this);//添加组件到面板this.add(jLabel1);this.add(jTextField1);this.add(jButton1);this.add(jLabel2);this.add(jTextField2);jTextField2.setEditable(false);this.add(jLabel3);this.add(jTextField3);this.add(jButton2);}//点击按钮事件public void actionPerformed(ActionEvent actionevent){//点击“查找该职工”按钮if(actionevent.getSource()==jButton1){//获取输入的职工的编号String EmployeeID=jTextField1.getText();try{//利用st对象执行SQL语句,返回结果集对象ResultSet rs=st.executeQuery("select * from Salary where 职工编号='"+EmployeeID+"'");//处理结果集if(rs.next()){jTextField2.setText(rs.getString("职工编号"));jTextField3.setText(rs.getString("职工工资"));}else{JOptionPane.showMessageDialog(this,"没有这个工号的职工!");}}catch(Exception ex){//利用消息对话框提示查询失败JOptionPane.showMessageDialog(this,"工资修改失败!");}}//点击“修改工资”按钮if(actionevent.getSource()==jButton2){//获取用户更改的工资try{//利用st对象执行SQL语句,进行修改操作st.executeUpdate("update Salary set 职工工资='"+jTextField3.getText()+"' where 职工编号='"+jTextField2.getText()+"'");//利用消息对话框提示工资修改成功JOptionPane.showMessageDialog(this,"工资修改成功!");}catch(Exception ex){//利用消息对话框提示异常的信息JOptionPane.showMessageDialog(this,"工资修改失败!");ex.printStackTrace();}}}}3.7 查询工资(文件名SalaryInquire.java)//"工资查询"面板类SalaryInquire//导入系统的类包import java.awt.*;import java.sql.*;import javax.swing.*;import java.awt.event.*;//创建“工资查询”类public class SalaryInquire extends JPanel implements ActionListener{//声明连接数据库对象Connection con;//声明SQL语句对象Statement st;//创建组件对象:标签、文本行、单选JLabel jLabel1=new JLabel("请输入要查询的职工的编号:");JTextField jTextField1=new JTextField();JButton jButton1=new JButton("工资查询");JTextArea jTextArea1=new JTextArea();//构造方法public SalaryInquire(){try{//调用初始化方法jbInit();}catch(Exception exception){exception.printStackTrace();}}//面板初始化方法private void jbInit() throws Exception{//连接数据库con=DBConnect.getConn();st=con.createStatement();//框架的布局this.setLayout(null);//设置各组件的大小jLabel1.setFont(new java.awt.Font("黑体",Font.BOLD,16));jLabel1.setBounds(new Rectangle(46,4,222,32));jTextField1.setBounds(new Rectangle(47,37,247,31));jButton1.setBounds(new Rectangle(47,86,247,30));jTextArea1.setBounds(new Rectangle(24,130,305,109));//添加按钮动作事件jButton1.addActionListener(this);//添加组件到面板this.add(jLabel1);this.add(jTextField1);this.add(jTextArea1);this.add(jButton1);}//点击按钮事件public void actionPerformed(ActionEvent e){//获取输入的职工的编号String EmployeeID=jTextField1.getText();//清空文本区原有的内容jTextArea1.setText("");try{//利用st对象执行SQL语句,返回结果集对象ResultSet rs=st.executeQuery("select * from Salary where 职工编号='"+EmployeeID+"'");//处理结果集if(rs.next()){jTextArea1.setText("职工编号:"+rs.getString("职工编号")+"\n"+"职工工资:"+rs.getString("职工工资")+"\n");}else{JOptionPane.showMessageDialog(this,"该工号的职工没有工资记录!");}}catch(Exception ex){//利用消息对话框提示查询失败JOptionPane.showMessageDialog(this,"工资查询失败!");}}}3.8 按编号查询程序(文件名InquireOnGH.java)//"按职工的编号查询"面板类InquireOnGH//导入系统的类包import java.awt.*;import java.sql.*;import javax.swing.*;import java.awt.event.*;//创建“按职工的编号查询”类public class InquireOnGH extends JPanel implements ActionListener{//声明连接数据库对象Connection con;//声明SQL语句对象Statement st;//创建组件对象:标签、文本行、单选JLabel jLabel1=new JLabel("请输入职工的编号:");JTextField jTextField1=new JTextField();JButton jButton1=new JButton("查找");JTextArea jTextArea1=new JTextArea();//构造方法public InquireOnGH(){try{//调用初始化方法jbInit();}catch(Exception exception){exception.printStackTrace();}}//面板初始化方法private void jbInit() throws Exception{//连接数据库con=DBConnect.getConn();st=con.createStatement();//框架的布局this.setLayout(null);//设置各组件的大小jLabel1.setFont(new java.awt.Font("黑体",Font.BOLD,16));jLabel1.setBounds(new Rectangle(46,4,222,32));jTextField1.setBounds(new Rectangle(47,37,247,31));jButton1.setBounds(new Rectangle(47,86,247,30));jTextArea1.setBounds(new Rectangle(24,130,305,109));//添加按钮动作事件jButton1.addActionListener(this);//添加组件到面板this.add(jLabel1);this.add(jTextField1);this.add(jTextArea1);this.add(jButton1);}//点击按钮事件public void actionPerformed(ActionEvent e){//获取输入的职工的编号String EmployeeID=jTextField1.getText();//清空文本区原有的内容jTextArea1.setText("");try{//利用st对象执行SQL语句,返回结果集对象ResultSet rs=st.executeQuery("select * from Employee where 职工编号='"+EmployeeID+"'");//处理结果集if(rs.next()){jTextArea1.setText("职工编号:"+rs.getString("职工编号")+"\n"+"职工姓名:"+rs.getString("职工姓名")+"\n"+"职工性别:"+rs.getString("职工性别")+"\n"+"职工年龄:"+rs.getString("职工年龄")+"\n"+"家庭住址:"+rs.getString("家庭住址")+"\n"+"联系电话:"+rs.getString("联系电话")+"\n");}else{JOptionPane.showMessageDialog(this,"没有这个工号的职工!");}}catch(Exception ex){//利用消息对话框提示查询失败JOptionPane.showMessageDialog(this,"职工查询失败!");}}}3.9 按姓名查询程序(文件名InquireOnName.java)//"按职工的姓名查询"面板类InquireOnName//导入系统的类包import java.awt.*;import java.sql.*;import javax.swing.*;import java.awt.event.*;//创建“按职工的姓名查询”类public class InquireOnName extends JPanel implements ActionListener{//声明连接数据库对象Connection con;//声明SQL语句对象Statement st;//创建组件对象:标签、文本行、单选JLabel jLabel1=new JLabel("请输入职工的姓名:");JTextField jTextField1=new JTextField();JButton jButton1=new JButton("查找");JTextArea jTextArea1=new JTextArea();//构造方法public InquireOnName(){try{//调用初始化方法jbInit();}catch(Exception exception){exception.printStackTrace();}}//面板初始化方法private void jbInit() throws Exception{//连接数据库con=DBConnect.getConn();st=con.createStatement();//框架的布局this.setLayout(null);//设置各组件的大小jLabel1.setFont(new java.awt.Font("黑体",Font.BOLD,16));jLabel1.setBounds(new Rectangle(46,4,222,32));jTextField1.setBounds(new Rectangle(47,37,247,31));jButton1.setBounds(new Rectangle(47,86,247,30));jTextArea1.setBounds(new Rectangle(24,130,305,109));//添加按钮动作事件jButton1.addActionListener(this);//添加组件到面板this.add(jLabel1);this.add(jTextField1);this.add(jTextArea1);this.add(jButton1);}//点击按钮事件public void actionPerformed(ActionEvent e){//获取输入的职工的姓名String EmployeeName=jTextField1.getText();//清空文本区原有的内容jTextArea1.setText("");try{//利用st对象执行SQL语句,返回结果集对象ResultSet rs=st.executeQuery("select * from Employee where 职工姓名='"+EmployeeName+"'");//处理结果集if(rs.next()){jTextArea1.setText("职工编号:"+rs.getString("职工编号")+"\n"+"职工姓名:"+rs.getString("职工姓名")+"\n"+"职工性别:"+rs.getString("职工性别")+"\n"+"职工年龄:"+rs.getString("职工年龄")+"\n"+"家庭住址:"+rs.getString("家庭住址")+"\n"+"联系电话:"+rs.getString("联系电话")+"\n");}else{JOptionPane.showMessageDialog(this,"没有这个工号的职工!");}}catch(Exception ex){//利用消息对话框提示查询失败JOptionPane.showMessageDialog(this,"职工查询失败!");}}}3.10 按帮助查询程序(文件名EmployeeHelp.java)//“帮助”面板类EmployeeHelp//导入系统的类包import java.awt.*;import java.sql.*;import javax.swing.*;import java.awt.event.*;//创建“帮助”面板类public class EmployeeHelp extends JPanel{//创建组件对象:标签JLabel jLabel1=new JLabel("有问题,请你联系作者:");JLabel jLabel4=new JLabel("林德军");JLabel jLabel2=new JLabel("QQ:929156887");JLabel jLabel3=new JLabel("邮箱:929156887@");//构造方法public EmployeeHelp(){try{//调用初始化方法jbInit();}catch(Exception exception){exception.printStackTrace();}}//初始化private void jbInit() throws Exception{//框架的布局this.setLayout(null);//设置各组件的大小jLabel1.setFont(new java.awt.Font("楷体",Font.BOLD,20));jLabel1.setBounds(new Rectangle(50,50,300,30));jLabel4.setFont(new java.awt.Font("楷体",Font.BOLD,20));jLabel4.setBounds(new Rectangle(50,90,150,30));jLabel2.setFont(new java.awt.Font("楷体",Font.BOLD,20));jLabel2.setBounds(new Rectangle(50,140,300,30));jLabel3.setFont(new java.awt.Font("楷体",Font.BOLD,20));jLabel3.setBounds(new Rectangle(50,180,300,30));//添加组件到面板this.add(jLabel1);this.add(jLabel2);this.add(jLabel3);this.add(jLabel4);}}3.11 主框架程序(文件名MainFrame.java)//系统主框架类//导入系统的包import java.awt.*;import java.awt.event.*;import javax.swing.*;//创建主框架类MainFramepublic class MainFrame extends JFrame implements ActionListener {//创建内容面板JPanel contentPane;//创建菜单栏组件的对象JMenuBar jMenuBar1=new JMenuBar();//菜单条JMenu jMenu0=new JMenu("系统");//菜单JMenuItem jMenuItem0=new JMenuItem("退出");//子菜单JMenu jMenu1=new JMenu("职工管理");JMenuItem jMenuItem1=new JMenuItem("添加职工");JMenuItem jMenuItem2=new JMenuItem("修改职工");JMenuItem jMenuItem3=new JMenuItem("删除职工");JMenu jMenu2=new JMenu("工资管理");JMenuItem jMenuItem4=new JMenuItem("添加工资");JMenuItem jMenuItem5=new JMenuItem("修改工资");JMenuItem jMenuItem8=new JMenuItem("工资查询");JMenu jMenu3=new JMenu("职工查询");JMenuItem jMenuItem6=new JMenuItem("按工号查询");JMenuItem jMenuItem7=new JMenuItem("按姓名查询");JMenu jMenu4=new JMenu("帮助");JMenuItem jMenuItem9=new JMenuItem("互动");//创建标签,用于显示信息JLabel jLabel1=new JLabel("职工和工资管理小系统"); JLabel jLabel2=new JLabel("2010年12月22日,林德军"); //创建构造方法public MainFrame(){try{//关闭框架窗口时的默认事件方法setDefaultCloseOperation(EXIT_ON_CLOSE);//调用初始化方法jbInit();}catch(Exception exception){exception.printStackTrace();}}//界面初始化方法private void jbInit() throws Exception{//创建内容面板contentPane =(JPanel) getContentPane();//设置内容面板的布局为空contentPane.setLayout(null);//主框架的大小setSize(new Dimension(400,360));//主框架的标题setTitle("职工和工资管理小系统");//添加事件监听器jMenuItem0.addActionListener(this);jMenuItem1.addActionListener(this);jMenuItem2.addActionListener(this);jMenuItem3.addActionListener(this);jMenuItem4.addActionListener(this);jMenuItem5.addActionListener(this);jMenuItem6.addActionListener(this);jMenuItem7.addActionListener(this);jMenuItem8.addActionListener(this);jMenuItem9.addActionListener(this);//添加菜单条到主框架setJMenuBar(jMenuBar1);//添加菜单到菜单条jMenuBar1.add(jMenu0);jMenuBar1.add(jMenu1);jMenuBar1.add(jMenu2);jMenuBar1.add(jMenu3);jMenuBar1.add(jMenu4);//添加菜单项到菜单jMenu0.add(jMenuItem0);jMenu1.add(jMenuItem1);jMenu1.add(jMenuItem2);jMenu1.add(jMenuItem3);jMenu2.add(jMenuItem4);jMenu2.add(jMenuItem5);jMenu2.add(jMenuItem8);jMenu3.add(jMenuItem6);jMenu3.add(jMenuItem7);jMenu4.add(jMenuItem9);//添加标签到主框架内容面板contentPane.add(jLabel1);contentPane.add(jLabel2);//设置标签组件的大小和字体jLabel1.setFont(new java.awt.Font("黑体",Font.BOLD,20));jLabel1.setBounds(new Rectangle(65,70,275,55));jLabel2.setFont(new java.awt.Font("黑体",Font.BOLD,16));jLabel2.setBounds(new Rectangle(90,150,200,35));}//菜单项事件对应的处理方法public void actionPerformed(ActionEvent actionEvent){//点击“系统”菜单下的“退出”菜单项if(actionEvent.getSource()==jMenuItem0){System.exit(0);}//点击“职工管理”菜单下的“添加职工”菜单项if(actionEvent.getSource()==jMenuItem1){//创建“添加职工”面板对象AddEmployee AddEmp=new AddEmployee();//移除主框架上原有的内容this.remove(this.getContentPane());//加载“添加职工”面板的对象到主框架this.setContentPane(AddEmp);//令界面可见this.setVisible(true);}//点击“职工管理”菜单下的“修改职工”菜单项if(actionEvent.getSource()==jMenuItem2)。

c语言职工工资管理系统代码

c语言职工工资管理系统代码

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语言的职工工资管理系统代码。

SQL-sever工资管理系统源代码

SQL-sever工资管理系统源代码

SQL-sever工资管理系统源代码4.1登陆界面功能实现Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim mysql As Stringmysql = "select * from [user] where username ='" &Me.TextBox1.Text & "'and passwd='" & Me.TextBox2.Text & " '"Dim myadapter As SqlClient.SqlDataAdapter = NewSqlClient.SqlDataAdapter(mysql, mycoon)Dim mydb As New DataSetmyadapter.Fill(mydb, "user")If mydb.Tables("user").Rows.Count = 0 ThenMsgBox("用户名或密码错误!")Me.TextBox1.Text = ""Me.TextBox2.Text = ""ElseMe.Hide()Form2.Show()End IfEnd Sub4.2员工信息查询功能实现Public Class Form3Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim mycoon As New SqlConnection("integrated security=SSPI;data source=.;initial catalog=工资管理系统") Dim mysql As Stringmysql = "select * from work where wnum='" &Me.TextBox1.Text & "'"Dim myadapter As SqlClient.SqlDataAdapter = NewSqlClient.SqlDataAdapter(mysql, mycoon)Dim mydb As New DataSetmyadapter.Fill(mydb, "work")DataGridView1.DataSource = mydb.T ables(0)End Sub4.3员工信息添加功能实现Public Class Form4Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim mycoon As New SqlConnection("integrated security=SSPI;data source=.;initial catalog=工资管理系统") Dim mysql As Stringmysql = "insert into work values('" & Me.TextBox1.Text & "','" & Me.TextBox2.Text & "','" & Me.TextBox3.Text & "','" & Me.TextBox4.Text & "','" & Me.TextBox5.Text & "','" & Me.TextBox6.Text & "')"Dim mycmd As New SqlClient.SqlCommand(mysql, mycoon) mycoon.Open()Trymycmd.ExecuteNonQuery()Catch ex As ExceptionMsgBox(ex.Message)End Trymycoon.Close()Me.Close()Form1.Show()MsgBox("添加成功!")End Sub4.4员工信息删除功能实现Public Class Form5Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim mycoon As New SqlConnection("integrated security=SSPI;data source=.;initial catalog=pay")Dim mysql As Stringmysql = "delete from work where wnum='" & Me.TextBox1.Text & "'" Dim mycmd As New SqlClient.SqlCommand(mysql, mycoon)mycoon.Open()Trymycmd.ExecuteNonQuery()Catch ex As ExceptionMsgBox(ex.Message)End Trymycoon.Close()Me.Close()Form1.Show()MsgBox("删除成功!")End Sub4.5员工信息修改功能实现Public Class Form6Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim mycoon As New SqlConnection("integrated security=SSPI;data source=.;initial catalog=pay")Dim mysql As Stringmysql = "update work set wnum='" & Me.TextBox2.Text & "',wname='" & Me.TextBox3.Text & "',sex='" & Me.TextBox4.Text & "',birthday='" & Me.TextBox5.Text & "',branch='" &Me.TextBox6.Text & "',title='" & Me.TextBox7.Text & "' where wnum='" & Me.TextBox1.T ext & "'"Dim myadapter As SqlClient.SqlDataAdapter = NewSqlClient.SqlDataAdapter(mysql, mycoon)Dim mydb As New DataSetDim mycmd As New SqlClient.SqlCommand(mysql, mycoon) mycoon.Open()Trymycmd.ExecuteNonQuery()Catch ex As ExceptionMsgBox(ex.Message)End Trymycoon.Close()Me.Close()Form1.Show()MsgBox("修改成功!")End Sub4.6工资信息查询功能实现Public Class Form7Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim mycoon As New SqlConnection("integrated security=SSPI;data source=.;initial catalog=工资管理系统") Dim mysql As Stringmysql = "select * from wages where wnum='" & Me.TextBox1.Text & "'"Dim myadapter As SqlClient.SqlDataAdapter = NewSqlClient.SqlDataAdapter(mysql, mycoon)Dim mydb As New DataSetmyadapter.Fill(mydb, "wages")DataGridView1.DataSource = mydb.T ables(0)End Sub4.7工资信息添加功能实现Public Class Form8Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim mycoon As New SqlConnection("integrated security=SSPI;data source=.;initial catalog=工资管理系统") Dim mysql As Stringmysql = "insert into wages values('" & Me.TextBox1.Text & "','" & Me.TextBox2.Text & "','" & Me.TextBox3.Text & "','" & Me.TextBox4.Text & "','" & Me.TextBox5.Text & "','" & Me.TextBox6.Text & "')"Dim mycmd As New SqlClient.SqlCommand(mysql, mycoon) mycoon.Open()Trymycmd.ExecuteNonQuery()Catch ex As ExceptionMsgBox(ex.Message)End Trymycoon.Close()Me.Close()Form1.Show()MsgBox("添加成功!")End Sub4.8工资信息删除功能实现Public Class Form9Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim mycoon As New SqlConnection("integratedsecurity=SSPI;data source=.;initial catalog=工资管理系统") Dim mysql As Stringmysql = "delete from wages where wnum='" & Me.TextBox1.Text & "'" Dim mycmd As New SqlClient.SqlCommand(mysql, mycoon)mycoon.Open()Trymycmd.ExecuteNonQuery()Catch ex As ExceptionMsgBox(ex.Message)End Trymycoon.Close()Me.Close()Form1.Show()MsgBox("删除成功!")End Sub4.9工资信息修改功能实现Public Class Form10Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim mycoon As New SqlConnection("integrated security=SSPI;data source=.;initial catalog=工资管理系统") Dim mysql As Stringmysql = "update wages set wnum='" & Me.TextBox2.Text & "',wname='" & Me.TextBox3.Text & "',months='" & Me.TextBox4.Text & "',basic='" & Me.TextBox5.Text & "',benefit='" & Me.TextBox6.Text & "',real='" & Me.TextBox7.Text & "' where wnum='" & Me.TextBox1.T ext & "'" Dim myadapter As SqlClient.SqlDataAdapter = NewSqlClient.SqlDataAdapter(mysql, mycoon)Dim mydb As New DataSetDim mycmd As New SqlClient.SqlCommand(mysql, mycoon) mycoon.Open()Trymycmd.ExecuteNonQuery()Catch ex As ExceptionMsgBox(ex.Message)End Trymycoon.Close()Me.Close()Form1.Show()MsgBox("修改成功!")End Sub4.10津贴信息查询功能实现Public Class Form11Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim mycoon As New SqlConnection("integrated security=SSPI;data source=.;initial catalog=工资管理系统") Dim mysql As Stringmysql = "select * from benefit where wnum='" & Me.TextBox1.Text & "'"Dim myadapter As SqlClient.SqlDataAdapter = NewSqlClient.SqlDataAdapter(mysql, mycoon)Dim mydb As New DataSetmyadapter.Fill(mydb, "benefit")DataGridView1.DataSource = mydb.T ables(0)End Sub4.11津贴信息添加功能实现Public Class Form12Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim mycoon As New SqlConnection("integrated security=SSPI;data source=.;initial catalog=工资管理系统") Dim mysql As Stringmysql = "insert into benefit values('" & Me.TextBox1.T ext & "','" & Me.TextBox2.Text & "','" & Me.TextBox3.Text & "','" & Me.TextBox4.Text & "','" & Me.TextBox5.Text & "')"Dim mycmd As New SqlClient.SqlCommand(mysql, mycoon) mycoon.Open()Trymycmd.ExecuteNonQuery()Catch ex As ExceptionMsgBox(ex.Message)End Trymycoon.Close()Me.Close()Form1.Show()MsgBox("添加成功!")End Sub4.11津贴信息删除功能实现Public Class Form13Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim mycoon As New SqlConnection("integrated security=SSPI;data source=.;initial catalog=工资管理系统") Dim mysql As Stringmysql = "delete from benefit where wnum='" & Me.TextBox1.Text & "'"Dim mycmd As New SqlClient.SqlCommand(mysql, mycoon)mycoon.Open()Trymycmd.ExecuteNonQuery()Catch ex As ExceptionMsgBox(ex.Message)End Trymycoon.Close()Me.Close()Form1.Show()MsgBox("删除成功!")End Sub4.12津贴信息修改功能实现Public Class Form14Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim mycoon As New SqlConnection("integrated security=SSPI;data source=.;initial catalog=工资管理系统") Dim mysql As Stringmysql = "update benefit set wnum='" & Me.TextBox2.T ext & "',wname='" & Me.TextBox3.Text & "',months='" & Me.TextBox4.Text & "',overtime='" & Me.TextBox5.Text & "',gangwei='" & Me.TextBox6.Text & "' where wnum='" & Me.TextBox1.Text & "'"Dim myadapter As SqlClient.SqlDataAdapter = NewSqlClient.SqlDataAdapter(mysql, mycoon)Dim mydb As New DataSetDim mycmd As New SqlClient.SqlCommand(mysql, mycoon) mycoon.Open()Trymycmd.ExecuteNonQuery()Catch ex As ExceptionMsgBox(ex.Message)End Trymycoon.Close()Me.Close()Form1.Show()MsgBox("修改成功")End Sub4.13退出系统功能实现Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.ClickMe.Close()Form2.Show()End Sub。

C++员工工资管理系统源代码

C++员工工资管理系统源代码

#include <iomanip>#include <iostream>#include <fstream>#include <malloc.h>#include <stdlib.h>#include <string.h>using namespace std;#define NULL 0#define LEN sizeof(struct student)int const N=20;void Menu();void Pass();int n=0; //定义一个全局变量统计职工人数//——--------->定义一个职工信息的结构体struct student{char name[N]; //用来存放姓名char sex[N]; //用来存放性别long id; //用来存放编号float paid[3]; //用来存放工资int total; //用来存放总工资struct student *next;};//-------------->职工类class Information{public:Information() ; //构造函数.~Information() ; //析构函数.student *creat(); //建立链表void output(student *head); //显示职工信息int count(student *head); //定义函数count()统计职工总数student *insert(student*head); //指针函数*insert()用来添加职工信息.student *cancel(student *head,long id); //指针函数*cancel()用来删除职工信息. student *find(student *head,long id); //指针函数*find()用来查找职工信息.student *modify(student *head,long id); //指针函数*modife()用来修改职工的信息.void paixu(student *head); //定义paixu()函数将职工的总额从大到小排列并输出void average(student *head); //定义职工工资平均值的函数void save(student *head); //保存文件信息student *Read(); //读取文件信息private:student *p1,*p2,*p3,*head,st;};Information::Information(){cout<<" ******************************************************************************\n";cout<<" ------------------------<<欢迎您使用员工工资管理系统>>------------------------\n";cout<<" ******************************************************************************\n\n";}Information::~Information(){ cout<<" ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤\n";cout<<" \n"; cout<<" 本系统管理员\n"; cout<<" \n"; cout<<" \n"; cout<<" ------------------------<<谢谢您使用员工工资管理系统>>------------------------\n";cout<<" \n"; cout<<" \n"; cout<<" 欢迎下次使用\n"; cout<<" \n"; cout<<" \n"; cout<<" 再见\n"; cout<<" \n"; cout<<" ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤\n";}//------------>建立链表信息student *Information::creat(void){//定义一个指向struct student的结构体指针函数*creat()用来录入职工信息.char ch[N];n=0; //用来存放职工姓名p1=p2=(student *)malloc(LEN);//调用malloc()函数用来开辟一个新的存储单元cout<<" -------------<<请建立员工信息表,在姓名处键以# 结束输入!>>--------------"<<endl;cout<<" 姓名:";cin>>ch;head=NULL; //给指针head赋初值while (strcmp(ch,"#")!=0){ //调用字符比较函数strcmp()用来判断是否继续输入p1=(student *)malloc(LEN); //调用malloc()函数用来开辟一个新的存储单元strcpy(p1->name,ch); //将循环结构前面输入的姓名复制到结构体名为p1的数组name中cout<<" 性别:";cin>>p1->sex;cout<<" 编号:";cin>>p1->id;while((p1->id)<0||(p1->id)>100000) //判断输入的编号是否有效(100000个){cout<<" 对不起您的输入错误!请重新输入(>0<1000000): ";cin>>p1->id;}cout<<" 基本工资:";cin>>p1->paid[0];while((p1->paid[0])<0||(p1->paid[0])>100000) //判断输入的分数是否有效(>=0 <=100000){cout<<" 对不起您的输入错误!请重新输入(>0<100000): ";cin>>p1->paid[0];}cout<<" 加班工资:";cin>>p1->paid[1];while((p1->paid[1])<0||(p1->paid[1])>100000) //判断输入的分数是否有效(>=0<=100000){cout<<" 对不起您的输入错误!请重新输入(>0<100000): ";cin>>p1->paid[1];}cout<<" 其他奖金:";cin>>p1->paid[2];while((p1->paid[2])<0||(p1->paid[2])>100000) //判断输入的分数是否有效(>=0 <=100000){cout<<" 对不起您的输入错误!请重新输入(>0<100000): ";cin>>p1->paid[2];}p1->total=p1->paid[0]+p1->paid[1]+p1->paid[2]; //计算总额if(n==0)head=p1; //如果是输入第一组职工信息就将指针p1赋给指针headelse p2->next=p1; //否则将p1赋给p2所指结构体的next指针p2=p1; //将指针p1赋给指针p2n++; //将职工人数n的值加1cout<<"\n 姓名:";cin>>ch; //将输入的姓名存放到字符数组ch中}p2->next=NULL; //将p2所指结构体的next指针重新赋空值return (head);//将输入的第一组职工信息返回}//--------------->定义output()函数将职工的信息从头指针所指内容开始输出void Information::output(student *head)system("cls");if(head==NULL) cout<<" 这是一个空表,请先输入员工信息!\n";else{cout<<"-------------------------------------------------------------------------------\n";cout<<" *职工工资信息表*\n";cout<<"-------------------------------------------------------------------------------\n";cout<<"|编号| |姓名| |性别| |基本工资| |加班工资| |其他奖金| |总额|\n"; cout<<"-------------------------------------------------------------------------------\n";p1=head; //将头指针赋给pdo{cout<<setw(6)<<p1->id<<setw(10)<<p1->name<<setw(10)<<p1->sex<<setw(10)<<p1->paid[0]<<setw(10)<<p1->paid[1]<<setw(12)<<p1->paid[2]<<setw(12)<<p1->total<<endl;cout<<"-------------------------------------------------------------------------------\n";p1=p1->next; //将下一组职工信息的next指针赋给p}while(p1!=NULL); //若指针p非空则继续,目的是把所有的职工信息都传给指针p然后输出.}//------------>统计职工人数的函数int Information::count(struct student *head) //定义函数count()统计职工总数{if(head==NULL)return(0); //若指针head为空返回值为0else return(1+count(head->next)); //函数的递归调用}//----------->添加职工的成绩的函数student *Information::insert( student *head)//插入新结点定义一个指向struct student的结构体指针函数*insert()用来添加职工信息. {system("cls");cout<<"\t----------------<<请输入新增员工信息>>----------------\n"<<endl;p1=(student *)malloc(LEN); //使p1指向插入的新结点cout<<" 编号:";cin>>p1->id;while((p1->id)<0||(p1->id)>100000){cout<<" 对不起您的输入错误!请重新输入(>0<100000): ";cin>>p1->id; //将输入的编号存放到p1所指结构体的数组id中}cout<<" 姓名:";cin>>p1->name; //将输入的姓名存放到结构体名为p1的数组name中cout<<" 性别:";cin>>p1->sex;cout<<" 基本工资:";cin>>p1->paid[0];while((p1->paid[0])<0||(p1->paid[0])>100000){cout<<" 对不起您的输入错误!请重新输入(>0<100000): ";cin>>p1->paid[0]; //将输入的基本工资存放到p1所指结构体的数组paid中}cout<<" 加班工资:";cin>>p1->paid[1];while((p1->paid[1])<0||(p1->paid[1])>100000){cout<<" 对不起您的输入错误!请重新输入(>0<100000): ";cin>>p1->paid[1]; //将输入的加班工资存放到p1所指结构体的数组paid中}cout<<" 其他奖金:";cin>>p1->paid[2];while((p1->paid[2])<0||(p1->paid[2])>100000){cout<<" 对不起您的输入错误!请重新输入(>0<100000): ";cin>>p1->paid[2]; //将输入的其他奖金存放到p1所指结构体的数组paid中}p1->total=p1->paid[0]+p1->paid[1]+p1->paid[2];//计算总分p2=head; //将头指针赋给p2if(head==NULL) //若没调用次函数以前的头指针head为空{head=p1;p1->next=NULL;} //则将p1赋给头指针head并将p1所指结构体成员指针next赋空值else{while((p1->id>p2->id)&&(p2->next!=NULL)){p3=p2; //p3指向原p2指向的结点p2=p2->next;} //p2后移一个结点if(p1->id<=p2->id){if(head==p2){p1->next=head;head=p1;} //插入到第一个结点之前else{p3->next=p1;p1->next=p2;} //插入到p3所指结点之后}else{p2->next=p1;p1->next=NULL;} //插入到尾结点之后}n++; //将职工人数加1cout<<"\t----------------<<你输入的员工信息已经成功插入>>----------------"<<endl; return (head);}//------------>删除职工信息student *Information::cancel(student *head,long id) //定义一个指向struct student的结构体指针函数*delete()用来删除考生信息.{system("cls");if(head==NULL) //若调用次函数以前的头指针head为空{return(head);}else{p1=head; //否则将头指针赋给p1while(id!=p1->id&&p1->next!=NULL) //寻找要删除的结点当p1所指的职工编号不是输入的职工编号并且p1所指的next指针不为空{p2=p1;p1=p1->next;} //p2指向原p1指向的结点p1后移一个结点if(id==p1->id) //如果输入的职工编号是p1所指的职工编号//结点找到后删除{if(p1==head) head=p1->next; //如果head指针和p1指针相等则将下一个结点赋给指针head elsep2->next=p1->next; //否则将p1所指结点赋给p2所指结点将要删除的职工信息跳过去cout<<" 删除编号为"<<id<<"的职工\n";n--; //将职工人数减1}return(head); //将头指针返回}}/**************************修改职工数据**************************/student *Information::modify(student *head,long id){system("cls");cout<<"\t----------------<<请输入须修改的员工工资信息>>----------------\n"<<endl;p1=(student *)malloc(LEN); //使p1指向输入的结点p1=head; //否则将头指针赋给p1while(id!=p1->id&&p1->next!=NULL)//寻找结点当p1所指的职工编号不是输入的职工编号并且p1所指的next指针不为空{p1=p1->next; //p2指向原p1指向的结点p1后移一个结点}if(id==p1->id) //如果要查找的职工编号是p1所指的职工编号{cout<<"你需要修改的员工信息如下:\n";cout<<"------------------------------------------------------------------------------\n";cout<<"|编号| |姓名| |性别| |基本工资| |加班工资| |其他奖金| |总额|\n";cout<<"------------------------------------------------------------------------------\n";cout<<setw(6)<<p1->id<<setw(10)<<p1->name<<setw(10)<<p1->sex<<setw(10)<<p1->paid[0]<<setw(10)<<p1->paid[1]<<setw(12)<<p1->paid[2]<<setw(12)<<p1->total<<endl;cout<<"------------------------------------------------------------------------------\n";cout<<" 编号:";cin>>p1->id;while((p1->id)<0||(p1->id)>100000){cout<<" 对不起您的输入错误!请重新输入(>0<100000): ";cin>>p1->id; //将输入的编号存放到p1所指结构体的数组id中}cout<<" 姓名:";cin>>p1->name; //将输入的姓名存放到结构体名为p1的数组name中cout<<" 性别:";cin>>p1->sex;cout<<" 基本工资:";cin>>p1->paid[0];while((p1->paid[0])<0||(p1->paid[0])>100000){cout<<" 对不起您的输入错误!请重新输入(>0<100000): ";cin>>p1->paid[0]; //将输入的基本工资存放到p1所指结构体的数组paid中}cout<<" 加班工资:";cin>>p1->paid[1];while((p1->paid[1])<0||(p1->paid[1])>100000){cout<<" 对不起您的输入错误!请重新输入(>0<100000): ";cin>>p1->paid[1]; //将输入的加班工资存放到p1所指结构体的数组paid中}cout<<" 其他奖金:";cin>>p1->paid[2];while((p1->paid[2])<0||(p1->paid[2])>100000){cout<<" 对不起您的输入错误!请重新输入(>0<100000): ";cin>>p1->paid[2]; //将输入的其他奖金存放到p1所指结构体的数组paid中}p1->total=p1->paid[0]+p1->paid[1]+p1->paid[2]; //计算总分}elsecout<<" 需要修改的信息中没有编号为"<<id<<"的员工.\n\n"; //没有想要修改的结点信息getchar();return(head);}//------------>查找职工信息student *Information::find(student *head,long id)//定义一个指向struct student的结构体指针函数*find()用来查找职工信息.{system("cls");if(head==NULL) //若调用次函数以前的头指针head为空{cout<<" 这是一个空表,请先输入员工信息!\n";return(head);}else{p1=head; //否则将头指针赋给p1while(id!=p1->id&&p1->next!=NULL)//寻找结点当p1所指的职工编号不是输入的职工编号并且p1所指的next指针不为空{p1=p1->next; //p2指向原p1指向的结点p1后移一个结点}if(id==p1->id) //如果要查找的职工编号是p1所指的职工编号{cout<<"------------------------------------------------------------------------------\n";cout<<"|编号| |姓名| |性别| |基本工资| |加班工资| |其他奖金| |总额|\n"; cout<<"------------------------------------------------------------------------------\n";cout<<setw(6)<<p1->id<<setw(10)<<p1->name<<setw(10)<<p1->sex<<setw(10)<<p1->paid[0]<<setw(10)<<p1->paid[1]<<setw(12)<<p1->paid[2]<<setw(12)<<p1->total<<endl;cout<<"------------------------------------------------------------------------------\n";}elsecout<<"信息中没有编号为"<<id<<"的员工.\n"; //结点没找到return(head);}}//------------定义paixu()函数将职工的工资总额从大到小排列并输出void Information::paixu(student *head){system("cls");int i,k,m=0,j;student *p[N];//定义一个指向struct student的结构体指针数组pif(head!=NULL)//如果头指针是空则继续{ m=count(head);cout<<"------------------------------------------------------------------------------\n";cout<<" *员工工资统计表*\n";cout<<"------------------------------------------------------------------------------\n";cout<<"|编号| |姓名| |性别| |基本工资| |加班工资| |其他奖金| |总额| |名次|\n"; cout<<"------------------------------------------------------------------------------\n";p1=head;for(k=0;k<m;k++){p[k]=p1;p1=p1->next;}for(k=0;k<m-1;k++) //选择排序法for(j=k+1;j<m;j++)if(p[k]->total<p[j]->total){p2=p[k];p[k]=p[j];p[j]=p2;} //从大到小排列的指针for(i=0;i<m;i++){cout<<setw(6)<<p[i]->id<<setw(8)<<p[i]->name<<setw(9)<<p[i]->sex<<setw(10)<<p[i]->paid[0]<<setw(10)<<p[i]->paid[1]<<setw(10)<<p[i]->paid[2]<<setw(10)<<p[i]->total<<setw(10)<<i+1<<endl;cout<<"------------------------------------------------------------------------------\n";}}}//------------>求各工资的平均值的函数void Information::average(student *head){int k,m;float arg1=0,arg2=0,arg3=0;if(head==NULL)//如果头指针是空则继续{cout<<" 这是一个空表,请先输入员工信息!\n";}else{m=count(head);p1=head;for(k=0;k<m;k++){arg1+=p1->paid[0];arg2+=p1->paid[1];arg3+=p1->paid[2];p1=p1->next;}arg1/=m;arg2/=m;arg3/=m;cout<<" *各项工资的平均值*\n";cout<<"------------------------------------------------------------------------------\n";cout<<"\t\t基本工资的平均值: "<<setw(4)<<arg1<<"\n"<<"\t\t加班工资的平均值: "<<setw(4)<<arg2<<"\n"<<"\t\t奖金的平均值: "<<setw(4)<<arg3<<"\n";cout<<"------------------------------------------------------------------------------\n";}}//------------------->保存函数.void Information::save(student *head){system("cls");ofstream out("data.txt",ios::out);out<<count(head)<<endl;while(head!=NULL){ out<<head->name<<"\t"<<head->id<<"\t"<<"\t"<<head->sex<<"\t"<<head->paid[0]<<"\t"<<head->paid[1]<<"\t"<<head->paid[2]<<"\t"<<head->total<<endl;head=head->next;}}//———————————>读取文件的信息student *Information::Read(){system("cls");int i=0;p1=p2=( student *)malloc(LEN);head=NULL;ifstream in("data.txt",ios::in);in>>i;if(i==0){cout<<" data 文件中的数据为空,请先输入数据!"<<endl; return 0;}else {cout<<"\n原文件已保存的信息如下:\n";cout<<" ………………………………………………………………………………………………" <<endl;cout<<"|姓名| |编号| |性别| |基本工资| |加班工资| |其他奖金| |总额|\n";cout<<" ………………………………………………………………………………………………" <<endl;for(;i>0;i--){p1=(student *)malloc(LEN);in>>>>st.id>>st.sex>>st.paid[0]>>st.paid[1]>>st.paid[2]>>st.total;strcpy(p1->name,);p1->id=st.id;strcpy(p1->sex,st.sex);p1->paid[0]=st.paid[0];p1->paid[1]=st.paid[1];p1->paid[2]=st.paid[2];p1->total=st.total;if(n==0)head=p1; //如果是输入第一组职工信息就将指针p1赋给指针headelse p2->next=p1; //否则将p1赋给p2所指结构体的next指针p2=p1; //将指针p1赋给指针p2n++; //将n的值加1//显示读入数据cout<<" "<<p1->name<<"\t"<<p1->id<<" \t"<< p1->sex <<" \t"<< p1->paid[0] <<" \t"<< p1->paid[1] <<" \t"<< p1->paid[2] <<" \t"<< p1->total<<endl;cout<<" ………………………………………………………………………………………………" <<endl;}cout<<" 数据已经成功读取完毕!\n\n"<<endl;p2->next=NULL;in.close();return (head);}}//-------------------->菜单void Menu(){Information person;student *head=NULL;int choice;long i;head=person.Read();do{cout<<"\t※※※※※※※※※※※※※※※※※※※※※※※※※"<<endl;cout<<"\t※"<<endl;cout<<"\t※_ _ _ 欢迎进入员工信息统计管理_ _ _ "<<endl;cout<<"\t※"<<endl;cout<<"\t※※※※※※※※※※※※※※※※※※※※※※※※※"<<endl;cout<<"\t "<<endl;cout<<"\t 相关操作选项"<<endl;cout<<"\t "<<endl;cout<<"\t※※※※※※※※※※※※※※※※※※※※※※※※※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※ 1. 员工数据输入※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※ 2. 显示员工工资※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※ 3. 排序统计工资※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※ 4. 查找员工工资※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※ 5. 增加员工工资※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※ 6. 删除员工工资※"<<endl; cout<<"\t※※"<<endl;cout<<"\t※7. 修改员工信息※"<<endl; cout<<"\t※※"<<endl;cout<<"\t※8. 成功保存信息※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※9. 安全退出系统※"<<endl; cout<<"\t※※"<<endl;cout<<"\t※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"<<endl; cout<<" 请输入您的选择(0--9):";cin>>choice;while(choice<0||choice>9){cout<<" 对不起您的输入错误!请输入您的选择(0--9): ";cin>>choice;}//head=person.Read();switch(choice){case 1:head=person.creat();break;case 2://head=person.Read();person.output(head);break;case 3://head=person.Read();person.paixu(head); person.average(head);cout<<" 参加工作的员工人数为:"<<person.count(head)<<"人\n\n";break;case 4://head=person.Read();cout<<" 请输入要查找的编号:";cin>>i;while(i<0||i>100000){cout<<" 对不起您的输入错误!请重新输入: ";cin>>i;}person.find(head,i);break;case 5://head=person.Read();head=person.insert(head);person.output(head);break;case 6://head=person.Read();cout<<" 请输入要删除的编号:";cin>>i;while(i<0||i>100000){cout<<" 对不起您的输入错误!请重新输入: ";cin>>i;}head=person.cancel(head,i);person.output(head);break;case 7://head=person.Read();cout<<" 请输入要修改的编号:";cin>>i;while(i<0||i>100000){cout<<" 对不起您的输入错误!请重新输入: ";cin>>i;}person.modify(head,i);break;case 8:cout<<"信息已经成功保存!"<<endl;person.save(head);break;case 9:system("cls");break;default :cout<<" 对不起您的输入有误!请重新输入:\n";break;}}while(choice!=9);}//----------------->管理员登陆void Pass(){char UserName[30];char Passward[20];int i=0;cout<<"****************************************************************************\n";cout<<"\n\t为保护员工信息,只有管理员才可以进行管理!\n";cout<<"\n\t管理员名和登陆密码都只有4次机会,如果超过将自动退出系统!\n\n";cout<<"****************************************************************************\n";cout<<"\n请输入管理员名:";cin>>UserName;while (strcmp(UserName,"1")!=0){if(i>=3)exit(0); //超过4次则登陆失败,退出系统i++;cout<<"\n管理员名无效!请重新输入:";cin>>UserName;}cout<<"\n请输入密码:";cin>>Passward;while(strcmp(Passward,"1")!=0){if(i>=3)exit(0); //超过4次则登陆失败,退出系统i++;cout<<"\n密码输入错误!请重新输入:"<<endl; cin>>Passward;}cout<<"\n\t\t欢迎管理员的到来!!!!!\n"<<endl;}//------------------------------>主函数.int main(void){//设置背景色和字体颜色system("PAUSE"); //系统暂停system("cls"); //系统清屏Pass();system("PAUSE");system("cls");Menu();return 0; }//。

工资管理系统源代码

工资管理系统源代码

#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指向的当前节点占用的内存*/}}。

java工资管理系统代码

java工资管理系统代码

Java工资管理系统代码简介工资管理是企业人力资源管理中重要的一环,可以通过一个可靠的工资管理系统来方便地计算、调整、记录和管理员工工资信息。

本文将介绍一个基于Java语言开发的简单而实用的工资管理系统代码。

功能特点该工资管理系统代码具有以下功能特点:1.员工管理:可以添加、删除、修改和查询员工信息。

2.工资计算:可以根据员工的基本工资、绩效考核等因素来计算实际工资。

3.工资调整:可以根据业务需要进行工资调整,并记录调整日志。

4.工资报表:可以生成月度、季度或年度的工资报表,用于管理和分析工资情况。

系统框架该工资管理系统代码基于Java语言开发,采用MVC(Model-View-Controller)架构,方便代码的维护和扩展。

模型层(Model)模型层负责处理数据相关的逻辑,包括员工信息的增删改查、工资的计算和调整等。

视图层(View)视图层负责与用户的交互,展示员工信息、工资报表等内容,并接收用户的操作。

控制层(Controller)控制层负责处理用户操作的逻辑,根据用户的请求调用模型层的方法,并将结果返回给视图层。

代码示例下面是部分Java代码示例,展示了工资管理系统的主要功能:```java // 员工类 public class Employee { private int id; private String name; private double baseSalary; // 其他属性和方法省略// 获取员工实际工资public double getActualSalary() {// 根据基本工资、绩效考核等因素来计算工资// 省略具体实现}}// 工资管理类 public class SalaryManager { // 员工列表 private List employees; // 其他属性和方法省略// 添加员工public void addEmployee(Employee employee) {// 省略具体实现}// 删除员工public void deleteEmployee(int id) {// 省略具体实现}// 修改员工信息public void updateEmployee(Employee employee) {// 省略具体实现}// 查询员工信息public Employee findEmployee(int id) {// 省略具体实现}// 计算员工工资public double calculateSalary(Employee employee) {// 省略具体实现}// 调整员工工资public void adjustSalary(Employee employee, double newSalary) {// 省略具体实现}// 生成工资报表public void generateSalaryReport() {// 省略具体实现}}// 主程序 public class Main { public static void main(String[] args) { // 创建工资管理对象 SalaryManager salaryManager = new SalaryManager();// 添加员工Employee employee1 = new Employee(1, \。

数据库课程设计企业工资管理系统java版完整代码

数据库课程设计企业工资管理系统java版完整代码

课程设计报告企业工资管理系统姓名X X X班级XXXXX学号XXXXXX课程名称数据库原理及应用指导教师201X年X月X日目录一.工资管理系统需求分析…………………………………功能需求…………………………………………………功能划分………………………………………功能描述……………………………………………性能需求…………………………………………………数据流图………………………………………………二.总体设计…………………………………………………数据库概念设计…………………………………………功能模块…………………………………………………三.系统详细设计……………………………………………数据库逻辑设计…………………………………………各模块功能………………………………………………职工信息管理系统…………………………………职工工资管理系统…………………………………职工津贴管理系统…………………………………四.系统实现…………………………………………………界面截图…………………………………………………主界面及工资基本信息界面……………………登录界面…………………………………………系统主界面………………………………………信息录入,修改,删除,查询界面…………设计代码…………………………………………………五.实验总结…………………………………………………1、需求分析1.1功能需求功能划分(1)、员工信息表;及时反映员工(de)基本信息(2)、员工津贴表,反映员工津贴(3)、员工基本工资表功能描述(1)、基本工资(de)设定(2)、津贴(de)设定(3)、计算出月工资(4)、录入员工工资信息(5)、添加员工工资信息(6)、更改员工工资信息性能需求此工资管理系统对工资数据精度(de)计算能在默认情况之下精确到小数点后3位小数,即是精确到分(de)计算.但在用户使用过程中,能自行根据实际情况进行小数计算精度(de)设定,最大能允许保留小数点后5位(de)精度.在时间特性上,当用户发出命令请求时(de)服务器(de)响应时间、对数据更新处理、工资数据(de)查询检索等上,同样要求系统响应时间不会超过秒时间.系统支持多种操作系统(de)运行环境,多不同操作系统,不同文件格式(de)磁盘上(de)数据均能实现信息(de)互通,及共享.当服务器移植到其他(de)系统平台,如:Linux平台下时,同样能和其他(de)系统进行数据存取同步,不会出现系统之间互不兼容(de)情况,系统支持多系统之间(de)互连互通,系统有巨大(de)强健性.本课程设计是用Java 语言编写,mysql数据库.数据流图根据工资管理要求及用户需求调查分析,得到以下数据流图图第一层数据流图图职工信息(de)载入图考勤(de)信息载入2.总体设计数据库概念设计有了数据流图,用E-R图来说明工资信息管理系统(de)数据库概念模式,如图图实体之间关系E-R 图功能模块3.系统详细设计数据库逻辑设计将以上E-R转换成如下关系模式员工(职工号,姓名,密码)工资(职工号,姓名,基本工资,)津贴(职工号,姓名,奖金)其中,标有下划线(de)字段表示为该数据表(de)主码,即主关键字.在上面(de)实体以及实体之间关系(de)基础上,形成数据库中(de)表格以及各个表格之间(de)关系.工资信息管理系统数据库中各个表格(de)设计结果如下面(de)几个表格所示.每个表格表示在数据库中(de)一个表.表一:员工信息表:表二:基本工资表:表四:津贴信息表各模块功能职工信息管理系统功能为:财务部门相关人员录入、修改、删除、查询员工个人信息职工工资管理系统功能为:根据工资生成公式,按照员工(de)考勤情况及各种表现按月生成相应(de)工资;财务部门相关人员能录入、修改、删除、查询每个月每个员工(de)工资信息以及工资汇总;员工本人能查询自己(de)工资信息以及工资汇总;职工登陆查询系统功能为:员工本人能通过用户名和密码查询自己(de)信息以及修改自己(de)密码;4.系统实现界面截图主界面登录界面管理员管理工资界面信息录入,修改,删除,查询界面职工信息查询界面职工密码修改界面设计代码package wage_management;import .;import .;class DB extends JFrame implements ActionListener { JFrame frame = new JFrame("欢迎进入企业工资管理系统");JLabel label = new JLabel("", ;JButton button1 = new JButton("进入系统"); JButton button2 = new JButton("退出系统"); ImageIcon im = new ImageIcon("");JLabel a1 = new JLabel(im);void Create() {JPanel pcontentPane = (JPanel) ();(a1);(label);(new FlowLayout());(button1);(button2);(true);(this);(this);;();(200, 100, 550, 180);(true);}public static void main(String[] args) {DB dome = new DB();();}public void actionPerformed(ActionEvent e) { if ())) {DL dl = new DL();();();}if ())) {quals("admin") == true&& ().equals("admin") == true)) {(this, "登录成功");GZGLZJM gz = new GZGLZJM();();();}else {(null, "输入用户名或密码错误");}}if ()==logonButton2){try {Connection con;Statement ps;ResultSet rs;String sql = null;("");("").newInstance();con = ("jdbc: management","root","jxb");sql="select from workerinfo where name='"+t1+"' and mi='"+t2+"'";ps = (PreparedStatement) (sql);rs = (sql);if()){if("name").equals(t1) && ("mi").equals(t2)){YGDLJM yg = new YGDLJM();();();(this, "登录成功");();}}else {(this, "输入用户名或密码错误");}}catch (Exception e1) {// TODO Auto-generated catch block();}}if ())) // 退出{(0);}}}package wage_management;import GZGLZJM extends JFrame implements ActionListener {JFrame f = new JFrame("工资管理系统");JButton b1 = new JButton("工资管理");JButton b2 = new JButton("员工信息管理");JButton b3 = new JButton("返回");ImageIcon im = new ImageIcon("");JLabel a1 = new JLabel(im);void create() {JPanel p = (JPanel) ();(new FlowLayout());(a1);(b1);(b2);(b3);;(true);(this);(this);(this);(200, 100, 500, 200);(true);}public void actionPerformed(ActionEvent e) { if ())) {// 返回DL d = new DL();();();}if ())) {// 员工信息管理YGGL yg = new YGGL();();();}if ())) {// 工资管理GZGL gz = new GZGL();();();}}}package wage_management;import class GZGL extends JFrame implements ActionListener {JFrame f = new JFrame("工资管理");JButton b1 = new JButton("录入");JButton b2 = new JButton("修改");JButton b3 = new JButton("删除");JButton b4 = new JButton("查询所有");JButton b5 = new JButton("返回");JTextField tf1 = new JTextField(4);JTextField tf2 = new JTextField(4);JTextField tf3 = new JTextField(4);JTextField tf4 = new JTextField(4);JTextField tf5 = new JTextField(6);JTextField tf6 = new JTextField(7);String[] cloum = { "职工号", "姓名", "津贴", "月基本工资","月薪"};Object[][] row = new Object[50][5];JTable table = new JTable(row, cloum);JScrollPane scrollpane = new JScrollPane(table); JSplitPane splitpane = new JSplitPane;void create() {JPanel p = (JPanel) ();(new FlowLayout());(scrollpane);(splitpane);JPanel p1 = new JPanel();(b1);(b2);(b3);(b4);(b5);JPanel p2 = new JPanel();;(scrollpane);JPanel p3 = new JPanel();(new FlowLayout());(new JLabel(""));(new JLabel("职工号"));(tf1);(new JLabel("姓名"));(tf2);(new JLabel("津贴"));(tf3);(new JLabel("月基本工资"));(tf4);(new JLabel("月薪"));(tf5);(new JLabel(" 在此处输入职工号点击查询删除"));(tf6);(p1, ;(p2, ;(50);;(this);(this);(this);(this);(this);(200, 100, 500, 600);(true);// 可以调整界面大小(true);}public void actionPerformed(ActionEvent e) {if ())) { // 录入Connection con;Statement sql;try {("");} catch (ClassNotFoundException e1) {"" + e1);}try {con = ("jdbc: management","root","jxb");sql = ();String insertStr = "INSERT INTO welfare (no,name,jt)VALUES('"+()+"','"+()+"','"+()+"');";(insertStr);String insertStr1 = "INSERT INTO wageinfo (no,name,jb)VALUES('"+()+"','"+()+"','"+()+"');";(insertStr1);();(this, "入录成功");} catch (SQLException e1) {(this, "入录失败");}}if ())) {// 修改Connection con;Statement sql;try {("");} catch (ClassNotFoundException e1) {"" + e1);}try {con = ("jdbc: management","root","jxb");sql = ();String updateStr = "UPDATE welfare SET jt='"+()+"',name='"+()+"'where no='"+()+"';";(updateStr);String updateStr1 = "UPDATE wageinfo SET jb='"+()+"',name='"+()+"'where no='"+()+"';";(updateStr1);(this, "修改成功");();} catch (SQLException e1) {(this, "信息不存在");}}if ())) {// 删除Connection con;Statement sql;ResultSet rs;try {("");} catch (ClassNotFoundException e1) {"" + e1);}try {con = ("jdbc: management","root","jxb");sql = ,;("DELETE FROM wageinfo where no='"+()+"';");("DELETE FROM welfare where no='"+()+"';");(this, "删除成功");();} catch (SQLException e1) {(this, "删除失败");}}if ())) {// 查询全部Connection con;Statement sql;ResultSet rs;//Vector vector = new Vector();try {("");} catch (ClassNotFoundException e1) { (this, "连接数据库失败");}try {con = ("jdbc: management","root","jxb");sql = ,;if ())) {for (int i = 0; i < 50; i++)for (int j = 0; j < 4; j++)("", i, j);rs = ("select distinct from wageinfo ,welfare where =");int k = -1;while ()) {++k;String no = (1);String name = (2);String jb = (3);String jt = (6);int sum= (3)+(6);(no, k, 0);(name, k, 1);(jb, k, 3);(jt, k, 2);(sum,k,4);}}} catch (SQLException e1) {(this, "查询失败");}}if ())) {// 返回GZGLZJM gl=new GZGLZJM();();();}}}package wage_management;import class YGDLJM extends DL implements ActionListener {JFrame f = new JFrame("工资管理");JButton b1 = new JButton("查询个人工资");JButton b2 = new JButton("修改密码");JButton b3 = new JButton("返回");String[] cloum = { "职工号", "姓名", "津贴", "月基本工资","月薪"};Object[][] row = new Object[50][5];JTable table = new JTable(row, cloum);JScrollPane scrollpane = new JScrollPane(table);JSplitPane splitpane = new JSplitPane;void create() {JPanel p = (JPanel) ();(new FlowLayout());(scrollpane);(splitpane);JPanel p1 = new JPanel();(b1);(b2);(b3);JPanel p2 = new JPanel();;(scrollpane);JPanel p3 = new JPanel();(new FlowLayout());(p1, ;(p2, ;(50);;(this);(this);(this);(200, 100, 500, 550);(true);// 可以调整界面大小(true);}public void actionPerformed(ActionEvent e) { if ())) {// 查询个人工资Connection con;Statement sql;ResultSet rs;try {("");} catch (ClassNotFoundException e1) {"" + e1);}try {con = ("jdbc: management","root","jxb");sql = ,;if ())) {for (int i = 0; i < 50; i++)for (int j = 0; j < 4; j++)("", i, j);// rs = ("select distinct from wageinfo ,welfare,workerinfo where = and = and ='"+t1+"' and ='"+t2+"'");int k = -1;while ()) {++k;String no = (1);String name = (2);String jb = (3);String jt = (6);int sum= (3)+(6);(no, k, 0);(name, k, 1);(jb, k, 3);(jt, k, 2);(sum,k,4);}}} catch (SQLException e1) {(this, "查询失败");}}if ())){// 修改密码XGMM xgmm=new XGMM();();}if ())) {// 返回DL dl=new DL();();();}}}package wage_management;import class YGGL extends JFrame implements ActionListener {JFrame f = new JFrame("员工信息管理");JButton b1 = new JButton("添加新员工信息");JButton b2 = new JButton("修改员工信息");JButton b3 = new JButton("删除员工信息");JButton b4 = new JButton("查询所有员工信息");JButton b5 = new JButton("返回");JTextField tf1 = new JTextField(4);JTextField tf2 = new JTextField(4);JTextField tf3 = new JTextField(4);JTextField tf4 = new JTextField(4);JTextField tf5 = new JTextField(6);JTextField tf6 = new JTextField(7);String[] cloum = { "职工号", "姓名", "津贴", "月基本工资","月薪","登陆密码"};Object[][] row = new Object[50][6];JTable table = new JTable(row, cloum);JScrollPane scrollpane = new JScrollPane(table);JSplitPane splitpane = new JSplitPane; void create() {JPanel p = (JPanel) ();(new FlowLayout());(scrollpane);(splitpane);JPanel p1 = new JPanel();(b1);(b2);(b3);(b4);(b5);JPanel p2 = new JPanel();;(scrollpane);(new FlowLayout());(new JLabel(""));(new JLabel("职工号"));(tf1);(new JLabel("姓名"));(tf2);(new JLabel("津贴"));(tf3);(new JLabel("月基本工资"));(tf4);(new JLabel("登陆密码"));(tf5);(new JLabel(" 在此处输入职工号点击查询删除"));(tf6);(p1, ;(p2, ;(50);;(this);(this);(this);(this);(this);(200, 100, 600, 600);(true);// 可以调整界面大小(true);}public void actionPerformed(ActionEvent e) {if ())) { // 添加新员工信息Connection con;Statement sql;try {("");} catch (ClassNotFoundException e1) {(this, "连接数据库失败");}try {con = ("jdbc: management","root","jxb");sql = ();String insertStr = "INSERT INTO welfare (no,name,jt)VALUES('"+()+"','"+()+"','"+()+"');";(insertStr);String insertStr1 = "INSERT INTO wageinfo (no,name,jb)VALUES('"+()+"','"+()+"','"+()+"');";(insertStr1);String insertStr2 = "INSERT INTO workerinfo (no,name,mi)VALUES('"+()+"','"+()+"','"+()+"');";(insertStr2);(this, "添加成功");();} catch (SQLException e1) {(this, "添加失败");}}if ())) {// 修改员工信息Connection con;Statement sql;try {("");} catch (ClassNotFoundException e1) {(this, "连接数据库失败");}try {con = ("jdbc: management","root","jxb");sql = ();con = ("jdbc: management","root","jxb");sql = ();String updateStr = "UPDATE welfare SET jt='"+()+"',name='"+()+"'where no='"+()+"';";(updateStr);String updateStr1 = "UPDATE wageinfo SET jb='"+()+"',name='"+()+"'where no='"+()+"';";(updateStr1);(updateStr1);String updateStr2 = "UPDATE workerinfo SET name='"+()+"',mi='"+()+"'where no='"+()+"';";(updateStr2);(this, "修改成功");();} catch (SQLException e1) {(this, "修改失败");}}if ())) {// 删除员工信息Connection con;Statement sql;try {("");} catch (ClassNotFoundException e1) {(this, "连接数据库失败");}try {con = ("jdbc: management","root","jxb");sql = ,;("DELETE FROM wageinfo where no='"+()+"';");("DELETE FROM welfare where no='"+()+"';");("DELETE FROM workerinfo where no='"+()+"';");(this, "删除成功");();} catch (SQLException e1) {(this, "删除失败");}}if ())) {// 查询全部员工信息Connection con;Statement sql;ResultSet rs;try {("");} catch (ClassNotFoundException e1) {(this, "连接数据库失败");}try {con = ("jdbc: management","root","jxb");sql = ,;if ())) {for (int i = 0; i < 50; i++)for (int j = 0; j < 4; j++)("", i, j);rs = ("select distinct from wageinfo ,welfare,workerinfo where = and = ;");int k = -1;while ()) {++k;String no = (1);String name = (2);String jb = (3);String jt = (6);int sum= (3)+(6);String mi = (9);(no, k, 0);(name, k, 1);(jb, k, 3);(jt, k, 2);(sum,k,4);(mi,k,5);}}} catch (SQLException e1) {(this, "查询失败");}}if ())) {// 返回GZGLZJM gl=new GZGLZJM();();();}}}package wage_management;import XGMM extends DL implements ActionListener{JFrame frame = new JFrame("密码修改");JLabel label1 = new JLabel("原密码");JLabel label2 = new JLabel("新密码");JButton Button1 = new JButton("确定");JButton cancelButton = new JButton("返回");JPasswordField password = new JPasswordField(9);JPasswordField newpassword = new JPasswordField(9);void create(){JPanel p = (JPanel) ();(new FlowLayout());(label1);(5, 5);(4, 8);(password);(100, 200);(600, 600);(label2);(50, 20);(newpassword);(100, 20);(80, 120);(Button1);(cancelButton);;(true);(this);(this);;();(200, 100, 500, 220);(true);}public void actionPerformed(ActionEvent e) {if ()==Button1){Connection con;Statement sql;try {} catch (ClassNotFoundException e1) {(this, "连接数据库失败");}try {con = ("jdbc: management","root","jxb");sql = ();String updateStr = "UPDATE workerinfo SET mi='"+()+"'where name='"+t1+"';";(updateStr);(this, "修改成功");();} catch (SQLException e1) {(this, "请输入原密码和新密码");// }}if ()==cancelButton) // 返回{YGDLJM dl=new YGDLJM();();();}}}5.课设总结此次课设难度有点大,通过几天(de)努力终于完成了,开始对如何连接数据库不太了解,通过小组合作,和网上查阅资料,最终解决了问题,在写员工登陆界面时,要从数据库读取和验证密码,开始遇到了些问题,后来慢慢都完成了,总(de)来说收获很大,了解了如何将所学数据库运用到编程里,对数据库数据(de)查询,更改,添加都有了更一步(de)了解.。

c语言职工工资管理系统代码

c语言职工工资管理系统代码

c语言职工工资管理系统代码随着社会的发展和经济的进步,职工工资管理成为了企业管理中的重要一环。

为了提高工资管理的效率和准确性,许多企业开始采用计算机软件来进行工资管理。

本文将介绍一个基于C语言的职工工资管理系统代码。

首先,我们需要定义一些基本的数据结构和变量。

在这个系统中,我们需要记录每个职工的姓名、工号、基本工资、津贴、扣款等信息。

我们可以使用结构体来定义这些信息,例如:```cstruct Employee {char name[20];int id;float basicSalary;float allowance;float deduction;};```接下来,我们可以定义一些函数来实现不同的功能。

例如,我们可以编写一个函数来添加新的职工信息:```cvoid addEmployee(struct Employee *employees, int *count) { printf("请输入职工姓名:");scanf("%s", employees[*count].name);printf("请输入职工工号:");scanf("%d", &employees[*count].id);printf("请输入职工基本工资:");scanf("%f", &employees[*count].basicSalary);printf("请输入职工津贴:");scanf("%f", &employees[*count].allowance);printf("请输入职工扣款:");scanf("%f", &employees[*count].deduction);(*count)++;}```我们还可以编写一个函数来计算每个职工的实际工资:```cfloat calculateSalary(struct Employee employee) {return employee.basicSalary + employee.allowance - employee.deduction;}```接下来,我们可以编写一个函数来显示所有职工的信息和实际工资:```cvoid displayEmployees(struct Employee *employees, int count) {printf("姓名\t工号\t基本工资\t津贴\t扣款\t实际工资\n");for (int i = 0; i < count; i++) {printf("%s\t%d\t%.2f\t\t%.2f\t%.2f\t%.2f\n", employees[i].name, employees[i].id, employees[i].basicSalary, employees[i].allowance, employees[i].deduction, calculateSalary(employees[i]));}}```最后,我们可以编写一个主函数来实现整个系统的流程:```cint main() {struct Employee employees[100];int count = 0;int choice;do {printf("请选择操作:\n");printf("1. 添加职工信息\n");printf("2. 显示职工信息\n");printf("3. 退出\n");scanf("%d", &choice);switch (choice) {case 1:addEmployee(employees, &count);break;case 2:displayEmployees(employees, count);break;case 3:printf("感谢使用职工工资管理系统!\n"); break;default:printf("无效的选择,请重新输入!\n");break;}} while (choice != 3);return 0;}```通过以上代码,我们可以实现一个简单的职工工资管理系统。

C++职工工资管理系统代码

C++职工工资管理系统代码

C++职工工资管理系统代码项目简介本项目是一个基于C++语言的职工工资管理系统。

它能够很好地管理公司内部的职工信息和工资发放情况,方便公司管理人员对职工数据进行快速、准确的查询和统计。

技术实现本项目使用C++语言编写,主要用到了以下技术:•面向对象编程:本项目基于面向对象的编程思想,将职工信息和工资管理抽象成对象,方便代码的组织和维护。

•文件操作:本项目使用文件存储职工信息和工资发放情况,利用文件操作实现数据的读写和更新。

•数据结构:本项目用到了数组、链表等数据结构,用来存储和操作职工和工资数据。

功能实现本项目包含以下功能:•添加职工信息:可以添加新的职工信息,包括职工编号、姓名、性别、年龄、职位等。

•显示职工信息:可以输出所有职工的信息,或根据职工编号、姓名等关键字查询职工信息。

•删除职工信息:可以根据职工编号删除职工信息。

•修改职工信息:可以根据职工编号修改职工信息,包括姓名、性别、年龄、职位等。

•计算职工工资:可以根据职工编号计算职工的工资,并输出实发工资。

•按照职工编号排序:可以按照职工编号升序排序输出所有职工信息。

•清空所有职工信息:可以清空文件中所有的职工信息。

使用说明1.安装编译环境:本项目需要使用C++编译器才能运行,请安装相关的编译环境。

2.下载代码:可以直接在Github上下载本项目的源代码,或通过Git命令将代码clone到本地。

3.编译运行:使用编译器将源代码编译成可执行文件,然后在终端运行可执行文件即可使用本系统。

代码实现下面是本项目部分核心代码的实现:// 职工类class Worker {public:// 构造函数Worker(int id, string name, int age, string sex, string position);// 显示职工信息void showInfo();// 获取职工编号int getId();// 修改职工信息void updateInfo();// 计算职工工资virtual int getSalary() = 0;private:int m_id; // 编号string m_name; // 姓名int m_age; // 年龄string m_sex; // 性别string m_position;// 职位};// 公司类class WorkerManager {public:// 构造函数WorkerManager();// 显示菜单void showMenu();// 退出系统void exitSystem();// 添加职工void addWorker();// 显示所有职工void showAllWorkers();// 删除职工void deleteWorker();// 修改职工信息void modifyWorker();// 查找职工void findWorker();// 按编号排序void sortWorker();// 清空所有记录void cleanAllWorkers();// 获取职工数量int getWorkerNum();// 析构函数~WorkerManager();private:int m_workerNum; // 职工人数bool m_fileIsEmpty; // 文件是否为空vector<Worker*> m_workerArray; // 职工数组};技术难点与解决方案在开发本项目的过程中,我遇到了一些技术难点,主要包括:1.文件读写:如何实现数据的读写和更新,避免数据出错和丢失。

c语言职工工资管理系统代码

c语言职工工资管理系统代码

c语言职工工资管理系统代码
(实用版)
目录
1.引言
2.系统功能介绍
3.系统设计与实现
4.系统测试与验证
5.总结
正文
一、引言
随着社会的快速发展,职工工资管理系统已经成为企事业单位不可或缺的一部分。

本文将介绍一个基于 C 语言编写的职工工资管理系统代码,以满足企事业单位对职工工资管理的需求。

二、系统功能介绍
该职工工资管理系统主要包括以下功能:
1.员工信息管理:用于添加、修改和删除员工的基本信息,如姓名、工号、性别、出生日期、职位、电话等。

2.工资信息管理:用于录入、修改和删除员工的工资信息,包括基本工资、绩效工资、奖金、扣款等。

3.查询功能:提供按工号、姓名、职位等多种条件查询员工信息及工资信息。

4.打印功能:支持打印员工工资单。

三、系统设计与实现
本系统采用 C 语言编写,利用结构体和文件操作实现员工信息和工资信息的存储和管理。

系统主要包括以下几个模块:
1.数据结构设计:定义员工结构体和工资结构体,用于存储员工信息和工资信息。

2.文件操作:实现员工信息和工资信息的存储和读取,采用文件存储数据,确保数据安全性。

3.功能模块:实现员工信息管理、工资信息管理、查询和打印功能。

四、系统测试与验证
为确保系统的正确性和可靠性,对系统进行了详细测试。

测试结果表明,本系统能够正确处理各种操作,满足用户需求。

五、总结
本文介绍了一个基于 C 语言编写的职工工资管理系统代码。

该系统具有简单易用、功能齐全、安全性高等特点,可满足企事业单位对职工工资管理的需求。

c语言职工工资管理系统代码

c语言职工工资管理系统代码

C语言职工工资管理系统代码1. 项目简介本项目是一个用C语言编写的职工工资管理系统。

该系统旨在帮助企业或组织更好地管理职工的工资信息,包括薪资计算、数据存储和查询等功能。

通过该系统,可以提高工资管理的效率和准确性,减少人力资源部门的负担。

2. 功能需求本系统需要实现以下功能:•添加新员工:输入员工姓名、基本工资、津贴等信息,并生成唯一的员工ID。

•删除员工:根据员工ID删除指定员工信息。

•修改员工信息:根据员工ID修改指定员工的基本信息。

•计算薪资:根据员工ID计算指定员工的实际薪资,并将结果保存到数据库中。

•查询薪资:根据员工ID查询指定员工的薪资信息。

3. 数据结构设计为了存储职工的基本信息和薪资数据,我们可以使用以下数据结构:3.1 员工结构体定义struct Employee {int id; // 员工IDchar name[50]; // 员工姓名float basicSalary; // 基本工资float allowance; // 津贴float actualSalary; // 实际薪资};3.2 员工数组定义struct Employee employees[100]; // 最多存储100个员工的信息int employeeCount = 0; // 当前员工数量4. 系统实现4.1 添加新员工void addEmployee() {struct Employee employee;printf("请输入员工姓名:");scanf("%s", );printf("请输入基本工资:");scanf("%f", &employee.basicSalary);printf("请输入津贴:");scanf("%f", &employee.allowance);employee.id = employeeCount + 1;employee.actualSalary = employee.basicSalary + employee.allowance;employees[employeeCount] = employee;employeeCount++;printf("添加成功!员工ID为:%d\n", employee.id);}4.2 删除员工void deleteEmployee() {int id;printf("请输入要删除的员工ID:");scanf("%d", &id);int index = findEmployeeIndex(id);if (index == -1) {printf("未找到对应的员工信息。

企业职工工资管理系统_附代码

企业职工工资管理系统_附代码

#include <stdio.h>#include <string.h> #include <stdlib.h>#define E 50void Creat();void Creat2();void Creat3();void Chakan();void Chakan2();void Chakan3();void add();void del();void xiugai();void findnum();void findname(); void findname2(); void findshijian(); void gengxin();void findtime();void jisuan();void jisuan2();void jisuan3();void pai();void put();int number;float sum;struct employee{char num[5];char name[10];char sex[3];char shengri[10];char degree[10];int nianxian; } emp[E];struct emp_kao{char num[5];char name[10];char riqi[10];int tianshu;}emp_kaoqin[E];struct emp_gong{char num[5];char name[10];floatzhiwugongzi,zhiwubutie,zhufangbutie,kaoqin,yingfagongzi,yanglaobaoxian,zhufang,shifagongzi; }emp_gongzi[E];void main (){char YN[3];char *Y="Y";char *N="N";int i;int LL;//put();printf(" ********企业职工人为治理系统********\n");kaishi: printf("\n创建文件(请选【1】)\n 操纵文件(请选【2】)\n 检察文件(请选【3】)\n 更新文件(请选【4】)\n");scanf("%d",&LL);if(LL==1){Creat();printf("\n创建考勤记载文件??Y/N(注意大写)\n");scanf("%s",&YN);if (strcmp(YN,Y) == 0){Creat2();printf("\n创建人为信息文件??Y/N(注意大写)\n");scanf("%s",&YN);if (strcmp(YN,Y) == 0){Creat3();goto kaishi;}else{goto kaishi;}}else{goto kaishi;}}else if (LL==2){caozuo: printf("增加人事根本信息(请选【1】)\n");printf("删除人事根本信息(请选【2】)\n");printf("修改人事根本信息(请选【3】)\n");printf("查询人事根本信息(请选【4】)\n");printf("输出某月份的职工人为信息(请选【5】)\n");printf("职工人为信息进行统计(请选【6】)\n");printf("退出(请选【7】)\n");scanf("%d",&LL);if (LL==1){add();goto caozuo;}else if (LL==2){shanchu :del();printf(" 是否继承删除??(注意大写)\n");scanf("%s",&YN);if (strcmp(YN,Y) == 0){goto shanchu;}else if (strcmp(YN,N) == 0){goto caozuo;}else{printf("操纵错误!!返回->\n");goto caozuo;}}else if (LL==3){xiugai:xiugai();printf(" 是否继承修改??(注意大写)\n");scanf("%s",&YN);if (strcmp(YN,Y) == 0){goto xiugai;}else if (strcmp(YN,N) == 0){goto caozuo;}else{printf("操纵错误!!返回->\n");goto caozuo;}}else if (LL==4){chaxun: printf("编号查询(请选【1】)\n 全名查询(请选【2】)\n 姓查询(请选【3】)\n 月份查询(请选【4】)\n 退出(请选【5】)\n\n");scanf("%d",&LL);if (LL==1){findnum();goto chaxun;}if (LL==2){findname();goto chaxun;}if (LL==3){findname2();goto chaxun;}if (LL==4){findtime();goto chaxun;}if(LL==5){goto caozuo;}else{printf("操纵错误!!返回->\n");goto caozuo;}}if(LL==5){findshijian();goto caozuo;}if (LL==6){jisuan: printf("职工人数...(请选【1】)\n 平均实发人为(请选【2】)\n低于平均人为(请选【3】)\n 退出(请选【4】)\n");scanf("%d",&LL);if (LL==1){jisuan();goto jisuan;}else if (LL==2){jisuan2();goto jisuan;}else if (LL==3){jisuan3();goto jisuan;}else if (LL==4){goto caozuo;}else{printf("操纵错误!!返回->\n");goto jisuan;}}if (LL==7){goto kaishi;}}else if(LL==3){chakan: printf("\n检察根本信息文件(请选【1】)\n检察考勤记载文件(请选【2】)\n检察人为信息文件(请选【3】)\n退出(请选【4】)\n");scanf("%d",&LL);if (LL==1){Chakan();goto chakan;}else if(LL==2){Chakan2();goto chakan;}else if(LL==3){Chakan3();goto chakan;}else if(LL==4){goto kaishi;}else{printf("操纵错误!!返回->\n");goto chakan;}}else if (LL==4){gengxin();goto kaishi;}int aa;scanf("%d",&aa);}void Creat(){FILE *fp;int i,j;printf("创建【一】根本信息文件.....\n");printf(" 请您输入创建人数:");scanf("%d",&number);if ((fp = fopen("number.dat", "wb+")) == NULL){printf("Can't open file\n");exit(0);}fwrite(&number,sizeof(int),1,fp);fclose(fp);if ((fp = fopen("employee.dat", "wb+")) == NULL){printf("Can't open file\n");exit(0);}printf(" 编号姓名性别出生日期职称事情年限\n");for (i=0;i<number;i++){j=i+1;printf("->【%d】",j);scanf(" %s %s %s %s %s %d",emp[i].num,emp[i].name,emp[i].sex,emp[i].sh engri,emp[i].degree,&emp[i].nianxian);printf("\n");}pai();fwrite(emp,sizeof(struct employee),number, fp);fclose(fp);if ((fp = fopen("employee.dat", "rb+")) == NULL){printf("Can't open file\n");exit(0);}printf(" 创建乐成!!\n");printf(" 编号姓名性别出生日期职称事情年限\n");for (i = 0; fread(&emp[i],sizeof(struct employee),1,fp) == 1 ; i++){printf(" %s %s %s %s %s %d\n",emp[i].num,emp[i].name,emp[i].s ex,emp[i].shengri,emp[i].degree,emp[i].nianxian);}fclose(fp);}void Creat2(){FILE *fp,*fp2;int i,j;printf("创建【二】考勤记载文件.....\n");printf(" 目前需创建人数:%d\n",number);printf(" 编号姓名日期出勤次数\n",number);if ((fp = fopen("employee.dat", "rb")) == NULL){printf("Can't open file\n");exit(0);}fread(emp,sizeof(struct employee),number, fp);if ((fp2 = fopen("emp_kao.dat", "wb")) == NULL){printf("Can't open file\n");exit(0);}for (i=0;i<number;i++){j=i+1;strcpy(emp_kaoqin[i].name, emp[i].name);strcpy(emp_kaoqin[i].num, emp[i].num);printf("->【%d】%s %s",j,emp_kaoqin[i].num,emp_kaoqin[i].name);scanf(" %s %d",emp_kaoqin[i].riqi,&emp_kaoqin[i].tianshu);printf("\n");}fwrite(emp_kaoqin, sizeof(struct emp_kao),number, fp2);fclose(fp);fclose(fp2);if ((fp = fopen("emp_kao.dat", "rb+")) == NULL){printf("Can't open file\n");exit(0);}printf(" 创建乐成!!\n");printf(" 编号姓名日期出勤天数\n");for (i = 0; fread(&emp_kaoqin[i],sizeof(struct emp_kao),1,fp) == 1 ; i++){printf(" %s %s %s %d\n",emp_kaoqin[i].num,emp_kaoqin[i].name,emp_ka oqin[i].riqi,emp_kaoqin[i].tianshu);}fclose(fp);}void Creat3(){FILE *fp,*fp2,*fp3;int i,j;char *zhugong="助工";char *gongchengshi="工程师";char *gaojigongchengshi="高级工程师";floatzhiwugongzi,zhiwubutie,zhufangbutie,kaoqin,yingfagongzi,yanglaobaoxian,zhufang,shifagongzi;printf("创建【三】人为信息文件.....\n");printf(" 共创建人数:%d\n",number);if ((fp = fopen("employee.dat", "rb")) == NULL){printf("Can't open file\n");exit(0);}fread(emp,sizeof(struct employee),number, fp);if ((fp2 = fopen("emp_kao.dat", "rb")) == NULL){printf("Can't open file\n");exit(0);}fread(emp_kaoqin,sizeof(struct emp_kao),number, fp2);if ((fp3 = fopen("emp_gong.dat", "wb")) == NULL){printf("Can't open file\n");exit(0);}for (i=0;i<number;i++){j=i+1;strcpy(emp_gongzi[i].name, emp[i].name);strcpy(emp_gongzi[i].num, emp[i].num);floatzhiwugongzi,zhiwubutie,zhufangbutie,kaoqin,yingfagongzi,yanglaobaoxian,zhufang,shifagongzi; if (strcmp(emp[i].degree,zhugong) == 0){zhiwugongzi=720*(1+(emp[i].nianxian*2)/100);zhiwubutie=zhiwugongzi*25/100;zhufangbutie=(zhiwugongzi+zhiwubutie)*25/100;if (emp_kaoqin[i].tianshu>=20){kaoqin=10*emp_kaoqin[i].tianshu;}else if ((emp_kaoqin[i].tianshu>=10)&&(emp_kaoqin[i].tianshu<20)){kaoqin=5*emp_kaoqin[i].tianshu;}else{kaoqin=0;}yingfagongzi=zhiwugongzi+zhiwubutie+zhufangbutie+kaoqin;yanglaobaoxian=(zhiwugongzi+zhiwubutie)*0.1;zhufang=yingfagongzi*0.05;shifagongzi=yingfagongzi-yanglaobaoxian-zhufang;emp_gongzi[i].zhiwugongzi=zhiwugongzi;emp_gongzi[i].zhiwubutie=zhufangbutie;emp_gongzi[i].zhufangbutie=zhufangbutie;emp_gongzi[i].kaoqin=kaoqin;emp_gongzi[i].yingfagongzi=yingfagongzi;emp_gongzi[i].yanglaobaoxian=yanglaobaoxian;emp_gongzi[i].zhufang=zhufang;emp_gongzi[i].shifagongzi=shifagongzi;}if (strcmp(emp[i].degree,gongchengshi) == 0){zhiwugongzi=960*(1+(emp[i].nianxian*3)/100);zhiwubutie=zhiwugongzi*25/100;zhufangbutie=(zhiwugongzi+zhiwubutie)*25/100;if (emp_kaoqin[i].tianshu>=20){kaoqin=10*emp_kaoqin[i].tianshu;}else if ((emp_kaoqin[i].tianshu>=10)&&(emp_kaoqin[i].tianshu<20)) {kaoqin=5*emp_kaoqin[i].tianshu;}else{kaoqin=0;}yingfagongzi=zhiwugongzi+zhiwubutie+zhufangbutie+kaoqin;yingfagongzi=zhiwugongzi+zhiwubutie+zhufangbutie+kaoqin;yanglaobaoxian=(zhiwugongzi+zhiwubutie)*0.1;zhufang=yingfagongzi*0.05;shifagongzi=yingfagongzi-yanglaobaoxian-zhufang;emp_gongzi[i].zhiwugongzi=zhiwugongzi;emp_gongzi[i].zhiwubutie=zhufangbutie;emp_gongzi[i].zhufangbutie=zhufangbutie;emp_gongzi[i].kaoqin=kaoqin;emp_gongzi[i].yingfagongzi=yingfagongzi;emp_gongzi[i].yanglaobaoxian=yanglaobaoxian;emp_gongzi[i].zhufang=zhufang;emp_gongzi[i].shifagongzi=shifagongzi;}if (strcmp(emp[i].degree,gaojigongchengshi) == 0){zhiwugongzi=1350*(1+(emp[i].nianxian*5)/100);zhiwubutie=zhiwugongzi*25/100;zhufangbutie=(zhiwugongzi+zhiwubutie)*25/100;if (emp_kaoqin[i].tianshu>=20){kaoqin=10*emp_kaoqin[i].tianshu;}else if ((emp_kaoqin[i].tianshu>=10)&&(emp_kaoqin[i].tianshu<20)) {kaoqin=5*emp_kaoqin[i].tianshu;}else{kaoqin=0;}yingfagongzi=zhiwugongzi+zhiwubutie+zhufangbutie+kaoqin;yingfagongzi=zhiwugongzi+zhiwubutie+zhufangbutie+kaoqin;yanglaobaoxian=(zhiwugongzi+zhiwubutie)*0.1;zhufang=yingfagongzi*0.05;shifagongzi=yingfagongzi-yanglaobaoxian-zhufang;emp_gongzi[i].zhiwugongzi=zhiwugongzi;emp_gongzi[i].zhiwubutie=zhufangbutie;emp_gongzi[i].zhufangbutie=zhufangbutie;emp_gongzi[i].kaoqin=kaoqin;emp_gongzi[i].yingfagongzi=yingfagongzi;emp_gongzi[i].yanglaobaoxian=yanglaobaoxian;emp_gongzi[i].zhufang=zhufang;emp_gongzi[i].shifagongzi=shifagongzi;}printf("\n");}fwrite(emp_gongzi, sizeof(struct emp_gong),number, fp3);fclose(fp);fclose(fp2);fclose(fp3);if ((fp = fopen("emp_gong.dat", "rb+")) == NULL){printf("Can't open file\n");exit(0);}printf(" 自动创建乐成!!\n\n\n");for (i = 0; fread(&emp_gongzi[i],sizeof(struct emp_gong),1,fp) == 1 ; i++){printf("编号%s 姓名%s 职务人为%f 职务补贴%f 住房补贴%f\n考勤治理奖%f 应发人为%f 养老保险%f 住房公积金%f 实发人为%f\n",emp_gongzi[i].num,emp_gongzi[i].name,emp_gongzi[i].zhiwugongzi,emp_gongzi[i].zhiwubutie, emp_gongzi[i].zhufangbutie,emp_gongzi[i].kaoqin,emp_gongzi[i].yingfagongzi,emp_gongzi[i].yanglaobaoxian,emp_gongzi[i].zhufang,emp_gongzi[i].shifagongzi);printf("\n\n\n");}fclose(fp);}void pai(){int i,j;int t;char temp[10];for (i=0;i<number;i++){for (j=i+1;j<number;j++){if (strcmp(emp[i].num,emp[j].num)>0){strcpy(temp, emp[i].num);strcpy(emp[i].num,emp[j].num);strcpy( emp[j].num,temp);strcpy(temp, emp[i].name);strcpy(emp[i].name,emp[j].name);strcpy(emp[j].name,temp);strcpy(temp, emp[i].sex);strcpy(emp[i].sex,emp[j].sex);strcpy( emp[j].sex,temp);strcpy(temp, emp[i].shengri);strcpy(emp[i].shengri,emp[j].shengri);strcpy( emp[j].shengri,temp);strcpy(temp, emp[i].degree);strcpy(emp[i].degree,emp[j].degree);strcpy( emp[j].degree,temp);t=emp[i].nianxian;emp[i].nianxian=emp[j].nianxian;emp[j].nianxian=t;}}}}void put(){printf(" ********企业职工人为治理系统********\n");printf("创建:\n【一】根本信息文件\n【二】考勤记载文件(每个月1份)\n【三】人为信息文件(每个月1份)\n");printf("操纵:\n");printf("【1】增加人事根本信息|\n");printf("【2】删除人事根本信息|\n");printf("【3】修改人事根本信息|\n");printf("【4】查询人事根本信息|\n");printf("【5】输出某月份的职工的人为信息|\n");printf("【6】职工人为信息进行统计|\n");}void Chakan(){FILE *fp;int i;if ((fp = fopen("employee.dat", "rb+")) == NULL){printf("Can't open file\n");exit(0);}printf(" 检察乐成!!\n");printf(" 编号姓名性别出生日期职称事情年限\n");for (i = 0; fread(&emp[i],sizeof(struct employee),1,fp) == 1 ; i++){printf(" %s %s %s %s %s %d\n",emp[i].num,emp[i].name,emp[i].s ex,emp[i].shengri,emp[i].degree,emp[i].nianxian);}fclose(fp);//goto chakan;}void Chakan2(){FILE *fp;int i;char name[15];printf("请您输入要检察的考勤文件:\n");scanf("%s",name);if ((fp = fopen(name, "rb+")) == NULL){printf("Can't open file\n");exit(0);}printf(" 检察乐成!!\n");printf(" 编号姓名日期出勤天数\n");for (i = 0; fread(&emp_kaoqin[i],sizeof(struct emp_kao),1,fp) == 1 ; i++){printf(" %s %s %s %d\n",emp_kaoqin[i].num,emp_kaoqin[i].name,emp_ka oqin[i].riqi,emp_kaoqin[i].tianshu);}fclose(fp);//goto chakan;}void Chakan3(){FILE *fp;int i;char name[15];printf("请您输入要检察的人为文件:\n");scanf("%s",name);if ((fp = fopen(name, "rb+")) == NULL){printf("Can't open file\n");exit(0);}printf(" 检察乐成!!\n");for (i = 0; fread(&emp_gongzi[i],sizeof(struct emp_gong),1,fp) == 1 ; i++){printf("编号%s 姓名%s 职务人为%f 职务补贴%f 住房补贴%f\n考勤治理奖%f 应发人为%f 养老保险%f 住房公积金%f 实发人为%f\n",emp_gongzi[i].num,emp_gongzi[i].name,emp_gongzi[i].zhiwugongzi,emp_gongzi[i].zhiwubutie,emp_gongzi[i].zhufangbutie,emp_gongzi[i].kaoqin,emp_gongzi[i].yingfagongzi,emp_gongzi[i].yanglaobaoxian, emp_gongzi[i].zhufang,emp_gongzi[i].shifagongzi);printf("\n\n\n");}fclose(fp);//goto chakan;}void add(){FILE *fp;int i;if ((fp = fopen("number.dat", "rb+")) == NULL){printf("Can't open file\n");exit(0);fread(&number,sizeof(int),1,fp);fclose(fp);if ((fp = fopen("employee.dat", "rb+")) == NULL){printf("Can't open file\n");exit(0);}fread(emp,sizeof(struct employee),number,fp);fclose(fp);if ((fp = fopen("employee.dat", "wb+")) == NULL){printf("Can't open file\n");exit(0);}printf("编号姓名性别出生日期职称事情年限\n");scanf(" %s %s %s %s %s %d",emp[number].num,emp[number].name,emp[n umber].sex,emp[number].shengri,emp[number].degree,&emp[number].nianxian);number++;pai();fwrite(emp,sizeof(struct employee),number, fp);fclose(fp);if ((fp = fopen("number.dat", "wb+")) == NULL){printf("Can't open file\n");exit(0);}fwrite(&number,sizeof(int),1,fp);fclose(fp);if ((fp = fopen("employee.dat", "rb+")) == NULL){printf("Can't open file\n");exit(0);}printf(" 添加乐成!!\n");printf(" 编号姓名性别出生日期职称事情年限\n");for (i = 0; fread(&emp[i],sizeof(struct employee),1,fp) == 1 ; i++)printf(" %s %s %s %s %s %d\n",emp[i].num,emp[i].name,emp[i].s ex,emp[i].shengri,emp[i].degree,emp[i].nianxian);}fclose(fp);}void del(){FILE *fp;int i;char num[5];if ((fp = fopen("number.dat", "rb+")) == NULL){printf("Can't open file\n");exit(0);}fread(&number,sizeof(int),1,fp);fclose(fp);if ((fp = fopen("employee.dat", "rb+")) == NULL){printf("Can't open file\n");exit(0);}fread(emp,sizeof(struct employee),number,fp);fclose(fp);if ((fp = fopen("employee.dat", "wb+")) == NULL){printf("Can't open file\n");exit(0);}printf("请您输入编号:\n");scanf("%s",num);for (i=0;i<number;i++){if (strcmp(num, emp[i].num) != 0){fwrite(&emp[i], sizeof(struct employee), 1, fp);}number--;fclose(fp);if ((fp = fopen("number.dat", "wb+")) == NULL){printf("Can't open file\n");exit(0);}fwrite(&number,sizeof(int),1,fp);fclose(fp);if ((fp = fopen("employee.dat", "rb+")) == NULL){printf("Can't open file\n");exit(0);}printf(" 删除乐成!!\n");printf(" 编号姓名性别出生日期职称事情年限\n");for (i = 0; fread(&emp[i],sizeof(struct employee),1,fp) == 1 ; i++){printf(" %s %s %s %s %s %d\n",emp[i].num,emp[i].name,emp[i].s ex,emp[i].shengri,emp[i].degree,emp[i].nianxian);}fclose(fp);}void xiugai(){FILE *fp;int i;char num[5];int flag=1;if ((fp = fopen("number.dat", "rb+")) == NULL){printf("Can't open file\n");exit(0);}fread(&number,sizeof(int),1,fp);fclose(fp);if ((fp = fopen("employee.dat", "rb+")) == NULL){printf("Can't open file\n");exit(0);}fread(emp,sizeof(struct employee),number,fp);fclose(fp);if ((fp = fopen("employee.dat", "wb+")) == NULL){printf("Can't open file\n");exit(0);}printf("请您输入编号:\n");scanf("%s",num);for (i=0;i<number;i++){if (strcmp(num,emp[i].num)==0){printf("搜索到!!请您修改:\n");printf("职称:现任年限:\n");scanf("%s %d",emp[i].degree,&emp[i].nianxian);flag=2;}}fwrite(emp, sizeof(struct employee), number, fp);fclose(fp);if(flag==2){if ((fp = fopen("employee.dat", "rb+")) == NULL){printf("Can't open file\n");exit(0);}printf(" 修改乐成!!\n");printf(" 编号姓名性别出生日期职称事情年限\n");for (i = 0; fread(&emp[i],sizeof(struct employee),1,fp) == 1 ; i++){printf(" %s %s %s %s %s %d\n",emp[i].num,emp[i].name,emp[i].s ex,emp[i].shengri,emp[i].degree,emp[i].nianxian);}fclose(fp);}else{printf("该信息不存在\n");}}void gengxin(){char nian[15];char nian2[15];FILE *fp,*fp2,*fp3;int i,j;printf("更新考勤记载文件.....\n");printf(" 请输入年月(k.dat):\n");scanf("%s",nian);printf(" 编号姓名日期出勤次数\n",number);if ((fp = fopen("number.dat", "rb+")) == NULL){printf("Can't open file\n");exit(0);}fread(&number,sizeof(int),1,fp);fclose(fp);if ((fp = fopen("employee.dat", "rb")) == NULL){printf("Can't open file\n");exit(0);}fread(emp,sizeof(struct employee),number, fp);if ((fp2 = fopen(nian, "wb")) == NULL){printf("Can't open file\n");exit(0);}for (i=0;i<number;i++){j=i+1;strcpy(emp_kaoqin[i].name, emp[i].name);strcpy(emp_kaoqin[i].num, emp[i].num);printf("->【%d】%s %s",j,emp_kaoqin[i].num,emp_kaoqin[i].name);scanf(" %s %d",emp_kaoqin[i].riqi,&emp_kaoqin[i].tianshu);printf("\n");}fwrite(emp_kaoqin, sizeof(struct emp_kao),number, fp2);fclose(fp);fclose(fp2);if ((fp = fopen(nian, "rb+")) == NULL){printf("Can't open file\n");exit(0);}printf("更新乐成!!\n");printf(" 编号姓名日期出勤天数\n");for (i = 0; fread(&emp_kaoqin[i],sizeof(struct emp_kao),1,fp) == 1 ; i++){printf(" %s %s %s %d\n",emp_kaoqin[i].num,emp_kaoqin[i].name,emp_ka oqin[i].riqi,emp_kaoqin[i].tianshu);}fclose(fp);printf("更新人为文件.....\n");printf(" 请输入年月(g.dat):\n");scanf("%s",nian);char *zhugong="助工";char *gongchengshi="工程师";char *gaojigongchengshi="高级工程师";floatzhiwugongzi,zhiwubutie,zhufangbutie,kaoqin,yingfagongzi,yanglaobaoxian,zhufang,shifagongzi;if ((fp = fopen("employee.dat", "rb")) == NULL){printf("Can't open file\n");exit(0);}fread(emp,sizeof(struct employee),number, fp);if ((fp2 = fopen("emp_kao.dat", "rb")) == NULL){printf("Can't open file\n");exit(0);}fread(emp_kaoqin,sizeof(struct emp_kao),number, fp2);if ((fp3 = fopen(nian, "wb")) == NULL){printf("Can't open file\n");exit(0);}for (i=0;i<number;i++){j=i+1;strcpy(emp_gongzi[i].name, emp[i].name);strcpy(emp_gongzi[i].num, emp[i].num);floatzhiwugongzi,zhiwubutie,zhufangbutie,kaoqin,yingfagongzi,yanglaobaoxian,zhufang,shifagongzi;if (strcmp(emp[i].degree,zhugong) == 0){zhiwugongzi=720*(1+(emp[i].nianxian*2)/100);zhiwubutie=zhiwugongzi*25/100;zhufangbutie=(zhiwugongzi+zhiwubutie)*25/100;if (emp_kaoqin[i].tianshu>=20){kaoqin=10*emp_kaoqin[i].tianshu;}else if ((emp_kaoqin[i].tianshu>=10)&&(emp_kaoqin[i].tianshu<20)){kaoqin=5*emp_kaoqin[i].tianshu;}else{kaoqin=0;}yingfagongzi=zhiwugongzi+zhiwubutie+zhufangbutie+kaoqin;yanglaobaoxian=(zhiwugongzi+zhiwubutie)*0.1;zhufang=yingfagongzi*0.05;shifagongzi=yingfagongzi-yanglaobaoxian-zhufang;emp_gongzi[i].zhiwugongzi=zhiwugongzi;emp_gongzi[i].zhiwubutie=zhufangbutie;emp_gongzi[i].zhufangbutie=zhufangbutie;emp_gongzi[i].kaoqin=kaoqin;emp_gongzi[i].yingfagongzi=yingfagongzi;emp_gongzi[i].yanglaobaoxian=yanglaobaoxian;emp_gongzi[i].zhufang=zhufang;emp_gongzi[i].shifagongzi=shifagongzi;}if (strcmp(emp[i].degree,gongchengshi) == 0){zhiwugongzi=960*(1+(emp[i].nianxian*3)/100);zhiwubutie=zhiwugongzi*25/100;zhufangbutie=(zhiwugongzi+zhiwubutie)*25/100;if (emp_kaoqin[i].tianshu>=20){kaoqin=10*emp_kaoqin[i].tianshu;}else if ((emp_kaoqin[i].tianshu>=10)&&(emp_kaoqin[i].tianshu<20)) {kaoqin=5*emp_kaoqin[i].tianshu;}else{kaoqin=0;}yingfagongzi=zhiwugongzi+zhiwubutie+zhufangbutie+kaoqin;yingfagongzi=zhiwugongzi+zhiwubutie+zhufangbutie+kaoqin;yanglaobaoxian=(zhiwugongzi+zhiwubutie)*0.1;zhufang=yingfagongzi*0.05;shifagongzi=yingfagongzi-yanglaobaoxian-zhufang;emp_gongzi[i].zhiwugongzi=zhiwugongzi;emp_gongzi[i].zhiwubutie=zhufangbutie;emp_gongzi[i].zhufangbutie=zhufangbutie;emp_gongzi[i].kaoqin=kaoqin;emp_gongzi[i].yingfagongzi=yingfagongzi;emp_gongzi[i].yanglaobaoxian=yanglaobaoxian;emp_gongzi[i].zhufang=zhufang;emp_gongzi[i].shifagongzi=shifagongzi;}if (strcmp(emp[i].degree,gaojigongchengshi) == 0){zhiwugongzi=1350*(1+(emp[i].nianxian*5)/100);zhiwubutie=zhiwugongzi*25/100;zhufangbutie=(zhiwugongzi+zhiwubutie)*25/100;if (emp_kaoqin[i].tianshu>=20){kaoqin=10*emp_kaoqin[i].tianshu;}else if ((emp_kaoqin[i].tianshu>=10)&&(emp_kaoqin[i].tianshu<20)) {kaoqin=5*emp_kaoqin[i].tianshu;}else{kaoqin=0;}yingfagongzi=zhiwugongzi+zhiwubutie+zhufangbutie+kaoqin;yingfagongzi=zhiwugongzi+zhiwubutie+zhufangbutie+kaoqin;yanglaobaoxian=(zhiwugongzi+zhiwubutie)*0.1;zhufang=yingfagongzi*0.05;shifagongzi=yingfagongzi-yanglaobaoxian-zhufang;emp_gongzi[i].zhiwugongzi=zhiwugongzi;emp_gongzi[i].zhiwubutie=zhufangbutie;emp_gongzi[i].zhufangbutie=zhufangbutie;emp_gongzi[i].kaoqin=kaoqin;emp_gongzi[i].yingfagongzi=yingfagongzi;emp_gongzi[i].yanglaobaoxian=yanglaobaoxian;emp_gongzi[i].zhufang=zhufang;emp_gongzi[i].shifagongzi=shifagongzi;}printf("\n");}fwrite(emp_gongzi, sizeof(struct emp_gong),number, fp3);fclose(fp);fclose(fp2);fclose(fp3);if ((fp = fopen(nian, "rb+")) == NULL){printf("Can't open file\n");exit(0);}printf(" 更新乐成!!\n");for (i = 0; fread(&emp_gongzi[i],sizeof(struct emp_gong),1,fp) == 1 ; i++){printf("编号%s 姓名%s 职务人为%f 职务补贴%f 住房补贴%f\n考勤治理奖%f 应发人为%f 养老保险%f 住房公积金%f 实发人为%f\n",emp_gongzi[i].num,emp_gongzi[i].name,emp_gongzi[i].zhiwugongzi,emp_gongzi[i].zhiwubutie,emp_gongzi[i].zhufangbutie,emp_gongzi[i].kaoqin,emp_gongzi[i].yingfagongzi,emp_gongzi[i].yanglaobaoxian, emp_gongzi[i].zhufang,emp_gongzi[i].shifagongzi);printf("\n\n\n");}fclose(fp);}void findnum(){FILE *fp;int i;char num[5];int flag=1;if ((fp = fopen("number.dat", "rb+")) == NULL){printf("Can't open file\n");exit(0);}fread(&number,sizeof(int),1,fp);fclose(fp);if ((fp = fopen("emp_gong.dat", "rb+")) == NULL){printf("Can't open file\n");exit(0);}fread(emp_gongzi,sizeof(struct emp_gong),number,fp);fclose(fp);printf("请您输入编号:\n");scanf("%s",num);for (i=0;i<number;i++){if (strcmp(num, emp_gongzi[i].num) == 0){printf("搜索乐成!!\n");printf("编号%s 姓名%s 职务人为%f 职务补贴%f 住房补贴%f\n考勤治理奖%f 应发人为%f 养老保险%f 住房公积金%f 实发人为%f\n",emp_gongzi[i].num,emp_gongzi[i].name,emp_gongzi[i].zhiwugongzi,emp_gongzi[i].zhiwubutie,emp_gongzi[i].zhufangbutie,emp_gongzi[i].kaoqin,emp_gongzi[i].yingfagongzi,emp_gongzi[i].yanglaobaoxian,emp_gongzi[i].zhufang,emp_gongzi[i].shifagongzi);flag=2;}}if (flag==1){printf("该信息不存在\n");}}void findname(){FILE *fp;int i;char name[10];int flag=1;if ((fp = fopen("number.dat", "rb+")) == NULL){printf("Can't open file\n");exit(0);}fread(&number,sizeof(int),1,fp);fclose(fp);if ((fp = fopen("emp_gong.dat", "rb+")) == NULL){printf("Can't open file\n");exit(0);}fread(emp_gongzi,sizeof(struct emp_gong),number,fp);fclose(fp);printf("请您输入姓名:\n");scanf("%s",name);for (i=0;i<number;i++){if (strcmp(name, emp_gongzi[i].name) == 0){printf("搜索乐成!!\n");printf("搜索乐成!!\n");printf("编号%s 姓名%s 职务人为%f 职务补贴%f 住房补贴%f\n考勤治理奖%f 应发人为%f 养老保险%f 住房公积金%f 实发人为%f\n",emp_gongzi[i].num,emp_gongzi[i].name,emp_gongzi[i].zhiwugongzi,emp_gongzi[i].zhiwubutie,emp_gongzi[i].zhufangbutie,emp_gongzi[i].kaoqin,emp_gongzi[i].yingfagongzi,emp_gongzi[i].yanglaobaoxian, emp_gongzi[i].zhufang,emp_gongzi[i].shifagongzi);flag=2;}}if (flag==1){printf("该信息不存在\n");}}void findname2(){FILE *fp;int i;char name[10];int flag=1;if ((fp = fopen("number.dat", "rb+")) == NULL){printf("Can't open file\n");exit(0);}fread(&number,sizeof(int),1,fp);fclose(fp);if ((fp = fopen("emp_gong.dat", "rb+")) == NULL){printf("Can't open file\n");exit(0);}fread(emp_gongzi,sizeof(struct emp_gong),number,fp);fclose(fp);printf("请您输入姓:\n");scanf("%s",name);for (i=0;i<number;i++){if (name[0]==emp_gongzi[i].name[0]){。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf("实发工资:");
scanf("%s",employee.shi);
fseek (fp,0,SEEK_END); /*移动文件内部位置指针*/
fwrite(&employee,sizeof(EmployeeType),1,fp); /*将员工信息存入文件中*/
tag=tolower(tag); /*大写字母转化为小写字母*/
}
} while(tag=='y'); /*肯定回答时循环*/
}
fseek(fp,-sizeof(EmployeeType),SEEK_CUR); /*移动文件内部位置指针*/
fwrite(&employee,sizeof(EmployeeType),1,fp); /*输入数据*/
}break;
case 2: /*按员工姓名查询*/
printf("输入员工的姓名:\n");
scanf("%s",name);
rewind (fp); /*使指针位置返回到文件的开头*/
void ListDate(void); /*显示数据*/
void Pack(void); /*在物理上删除作有标记的记录*/
#endif
FILE *fp;
void AddData(void) /*增添数据*/
&& employee.status==0
)break;
fread (&employee,sizeof(EmployeeType),1,fp);
}
if(!feof(fp))
{ /*查询成功*/
printf("%-15s%-15s%-15s%-15s%-15s\n","员工编号","员工姓名","应发工资","扣款","实发工资");
printf("%-15s%-15s%-15s%-15s%-15s",employee.num,,employee.ying,employee.kou,employee.shi);
/*输出信息*/
printf("\n输入更新后的数据:\n");
printf("员工编号:");
scanf("%s",employee.num);
printf("员工姓名:");
char num[10];
char name[20];
printf("选择查询方式:\n");
printf("1.按员工编号查询 2.按员工姓名查询\n");
scanf("%d",&select);
while(select>2||select<1)
typedef struct
{ /*员工工资结构*/
short status; /*数据状态,0:正常 1:删除*/
char num[10]; /*员工编号*/
char name[20]; /*员工姓名*/
printf("输入员工的编号:\newind (fp); /*使指针位置返回到文件的开头*/
fread(&employee,sizeof(EmployeeType),1,fp); /*读入员工信息*/
while (!feof(fp))
{ /*文件未结束*/
if(strcmp(employee.num,num)==0 /*员工编号相同*/
void UpdateData(void) /*更新数据*/
{
EmployeeType employee; /*员工*/
char num[10];
printf("输入要更新的员工的编号:");
tag=tolower(tag); /*大写字母转化为小写字母*/
while(tag !='y' && tag!='n')
{ /*非法输入时重新输入*/
}
else
{ /*查询失败*/
printf("无此编号的员工!\n"); /*清除文件结束标志*/
clearerr(fp);
void UpdateData(void); /*更新数据*/
void SearchDate(void); /*查询数据*/
void DeleteData(void); /*删除数据,只作删除标志*/
scanf("%s", employee.num);
printf("员工姓名:");
scanf("%s",);
printf("应发工资:");
scanf("%s",employee.ying);
printf("扣款:");
scanf("%s",employee.kou);
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#ifndef __EMPLOYEE_MANAGE_SYSTEM_H__
#define __EMPLOYEE_MANAGE_SYSTEM_H__
scanf("%s",);
printf("应发工资:");
scanf("%s",employee.ying);
printf("扣款:");
scanf("%s",employee.kou);
printf("实发工资:");
scanf("%s",employee.shi);
printf("继续添加吗(y/n):");
while(getchar() !='\n'); /*跳过当前行*/
tag=getchar(); /*Y,y表示继续,N,n表示结束*/
char ying[10]; /*应发*/
char kou[10]; /*扣款*/
char shi[10]; /*实发*/
}EmployeeType;
void AddData(void); /*增加数据*/
while (!feof(fp))
{ /*文件未结束*/
if(
strcmp(employee.num,num)==0
printf("非法输入,重新输入(y/n):");
while(getchar() !='\n'); /*跳过当前行*/
tag=getchar(); /*Y,y表示继续,N,n表示结束*/
&& employee.status==0 /*数据状态正常,未作删除*/
)break; /*查询成功*/
fread (&employee,sizeof(EmployeeType),1,fp); /*读入员工信息*/
scanf("%s",num);
rewind (fp); /*使位置指针返回到文件的开头*/
fread(&employee,sizeof(EmployeeType),1,fp); /*读入员工信息*/
{
EmployeeType employee;
char tag; /*设置标志是否继续添加数据*/
employee.status=0; /*数据状态,0:正常 1:删除*/
do
{
printf("员工编号:");
}
}
void SearchDate(void) /*查询数据*/
{
EmployeeType employee; /*员工*/
int select; /*工作变量*/
{
printf("请输入1~2的数");
scanf("%d",&select);
}
switch(select)
{
case 1: /*按员工编号查询*/
fread(&employee,sizeof(EmployeeType),1,fp); /*读入员工信息*/
while (!feof(fp))
{ /*文件未结束*/
相关文档
最新文档