职工工资管理系统设计课程设计含源代码.doc
- 格式:doc
- 大小:697.50 KB
- 文档页数:19
#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,&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;}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();else{printf(" ****** **** **** * * ***** * *\n");printf("* * * * * * * * * * *\n");printf("* * * * * * * * * * *\n");printf(" ****** ******** ******** ** * * * *\n");printf(" * * * ** * * * *\n");printf(" * * * ** * * * *\n");printf(" ****** **** **** ** ***** ***** \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("*************************妖精的分割线*************************\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);。
工资管理系统毕业设计1. 引言工资管理是任何企业组织中必不可少的一项重要工作。
它涉及到员工的薪资计算、发放、个税扣除和社保缴纳等方面。
为了提高工资管理的效率和准确性,许多企业都采用了工资管理系统。
本篇文章将详细介绍一个工资管理系统的毕业设计,包括系统的功能、设计思路和源码实现。
2. 功能需求工资管理系统的功能需求主要包括以下几个方面:2.1 员工信息管理工资管理系统需要能够管理企业员工的基本信息,包括员工姓名、工号、部门、职位、入职日期等。
管理员可以通过系统对员工信息进行增加、修改和删除操作。
2.2 工资计算系统需要能够根据员工的工作情况和薪资标准进行工资计算。
计算的依据包括基本工资、绩效奖金、加班工资、扣款等因素。
系统应该能够自动计算出每个员工的实际工资,并生成工资明细报表。
2.3 工资发放工资管理系统需要能够实现工资的发放功能。
管理员可以通过系统选择发放日期和发放方式(现金、银行转账等),然后系统会自动将员工的工资发放到指定的账户。
2.4 个税扣除和社保缴纳系统需要能够根据国家的个税和社保政策,自动计算员工的个税扣除和社保缴纳金额。
管理员可以通过系统查看每个员工的个税和社保缴纳情况,并生成相应的报表。
2.5 报表生成和导出系统需要能够生成各种工资相关的报表,如工资明细表、个税报表、社保缴纳报表等。
管理员可以通过系统选择报表类型和时间范围,然后系统会自动生成相应的报表。
此外,系统还应支持将报表导出为Excel或PDF格式,方便打印和分享。
3. 设计思路基于以上功能需求,我们可以设计一个基于Web的工资管理系统。
系统的前端使用HTML、CSS和JavaScript进行开发,后端使用Java语言和MySQL数据库进行开发。
系统的前端界面应该简洁美观,用户友好。
通过使用HTML和CSS进行页面布局和样式设计,使用JavaScript实现页面的交互和表单验证。
系统的后端主要包括以下几个模块:员工信息管理模块、工资计算模块、工资发放模块、个税扣除和社保缴纳模块、报表生成和导出模块。
企业员工工资管理系统设计1一、背景 .........................................................1二、员工工资系统设计 ............................................12.1系统功能分析 ...............................................22.2系统物理模块设计 ...........................................2三、 数据库设计 .................................................23.1数据流需求分析 ............................................23.2概念模型设计 ...............................................53.3逻辑结构设计 ...............................................6四、数据库程序设计 ...............................................4.1用户登录模块 ...............................................674.2 主窗体模块 ...............................................4.3员工信息模块 ...............................................894.4工资信息模块 ...............................................9附录 .............................................................一、背景S家具企业始建于1954年,是一家有着40多年历史的老厂。
工资管理系统毕业设计附源码工资管理系统是一种用于管理和计算员工工资的软件系统。
它可以帮助企业自动化工资计算、发放和记录,提高工资管理的效率和准确性。
下面是一个简单的工资管理系统的毕业设计附源码的示例。
首先,我们需要设计数据库来存储员工信息和工资数据。
可以使用关系型数据库如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> #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]){。
(完整)java课程设计-----员工工资管理系统-编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)java课程设计-----员工工资管理系统-)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)java课程设计-----员工工资管理系统-的全部内容。
《JAVA程序语言设计》课程设计报告书设计题目:员工工资管理系统指导老师:学生班级:软工1602学生学号: 2016028学生姓名:同组人员:时间: 2018年12月一.引言1.1项目的名称员工工资管理系统1.2项目背景和目标职工工资信息管理系统主要能够对职工个人信息进行管理,对职工用户提供个人信息查询,工资查询等,对管理用户提供增加,修改,删除员工信息等操作.我们的目标就是为该系统提供后台连接数据库程序设计以及前台用户界面设计。
1.3项目的可行性研究设计此系统需要Java 面向对象编程基础,数据库应用知识以及功能分析。
根据目前所开设的课程,学生已经具备了这样的知识,有能力综合Java 编程知识和数据库应用知识做出一个这样的职工工资信息管理系统。
二.需求分析2.1 系统概述此系统提供给公司职工和管理者使用,职工登陆后可以对自己的信息进行查询,管理者登陆后可以对职工的信息进行修改,增加,删除等操作。
2.2 系统运行环境Java 程序运行在eclipse 软件上编译并且运行,数据库用MYSQL 数据库三. 系统设计3.1 开发与设计的总体思想职工方面:职工可以通过自己的职工号和密码登陆后,进入职工主界面,在这个主界面里,职工可以进行信息查询操作。
管理员方面:管理员通过自己的密码登陆后可以选择:查询功能,修改功能。
西安郵電大學C语言课程设计报告题目: 职工工资管理系统院系名称: 计算机学院专业名称: 软件工程班级:学生姓名:学号(8位):指导教师:设计起止时间: 2013年06月03日~2013年06月12日一.设计目的1.通过本课程设计, 强化上机动手能力, 使学生在理论和实践的基础上进一步巩固《c语言程序设计》课程学习的内容, 掌握工程软件设计的基本方法.2.学会将知识应用于实际的方法, 提高分析和解决问题的能力, 增加综合能力.3.为后续各门计算机课程的学习打下坚实基础; 为毕业设计和以后工作打下必要基础。
二.设计内容本设计主要包括了用户登录和主菜单,其中用户登录包括了一下几个功能1.新用户的注.2.用户登.3。
用户密码的修改。
而主菜单包括: 1.职工信息的录.2.职工信息的修.3.选择性排.4.统计人数和工.5. 输出现有的信.6.自定义查询信息。
三. 概要设计1. 功能模块图;1.2. 各个模块详细的功能描述。
2.修改密码的时候, 需要输入原密码, 并且输入两次新的密码必须相同才能完成密码的修改。
3.用户登录: 需要输入用户名和密码, 如果用户名不存在或密码错误会给出相应的提醒, 当输入正确的时候会进入主菜单。
4.新用户注册:需要输入注册的用户和密码, 如果用户明已被注册过会给出相应的提醒。
5.职工信息的输入:是从无开始输入职工的信息, 同样也会给出输入内容的提醒, 当输入最后一次职工的信息为零时结束输入, 同是会将输入的信息写入到文件里。
6.修改职工信息其中包括a.添加职工信息和输入职工信息相同在添加完会提醒是否继续添加。
b.修改员工信息: 此时会出现选择性修改职工的哪项信息,先进行选择再进行修改。
C.删除员工信息: 需要输入所要删除员工的姓名或id进行删除!如果删除不成功或者删除者不存在会给出相应的提醒。
7.统计信息: 会自动的统计现有员工的总人数和现有员工的总工资。
8.输出现有职工的信息: 会显示现在记录的职工的各项信息。
C语言程序设计课程设计题目:职工工资管理系统院(系):专业班级:学号:学生姓名:指导教师:教师职称:起止时间:课程设计(报告)任务及评语目录第1章课程设计的目的与要求 (1)1.1 课程设计目的 (1)1.2 课程设计的实验环境 (1)1.3 课程设计的预备知识 (1)1.4 课程设计要求 (1)第2章课程设计内容 (2)2.1程序功能介绍 (2)2.2程序整体设计说明 (2)2.2.1设计思路 (2)2.2.2数据结构设计及用法说明 (3)2.2.3程序结构(流程图) (5)2.2.4各模块的功能及程序说明 (6)2.2.5程序结果 (6)2.3程序源代码及注释 (7)第3章课程设计总结 (16)参考资料 (17)第1章课程设计的目的与要求1.1 课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力1.2 课程设计的实验环境硬件要求能运行Windows 2000/XP操作系统的微机系统。
C语言程序设计及相应的开发环境。
1.3 课程设计的预备知识熟悉C语言及C语言开发工具。
1.4 课程设计要求1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告第2章课程设计内容2.1程序功能介绍该系统能够实现工资信息管理。
系统包括录入,浏览,查询,统计等功能。
其中录入功能要求能够添加新的工资信息到文件;浏览功能要求能按照工资卡号,姓名分类浏览,提供分屏显示;有排序功能,排序后按照工资卡号升序或实发工资降序输出;查询功能要求能够按照工资卡号,姓名查询;统计功能要求能够按照月份累计统计某职工在某时间段实发工资总金额。
课程设计报告课程设计报告题目:职工工资管理系统设计者:专业班级:学号:指导教师:所属院系:2011年6月29日一.设计需求说明一、职工工资管理系统功能设计要求1. 输入记录:将每一个职工的姓名、ID 号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。
•该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
2. 显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。
3. 修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。
4.查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
5. 删除记录:可删除数据文件中的任一记录。
6.恢复记录:能恢复被删除的任一记录。
7. 统计: (A) 计算各项工资平均工资及总工资, (B)•统计符合指定条件(如职工工资前三项之和在2000 元以上、2000~1500 元、1500~1000 元) 以内的工资职工人数及占总职工人数的百分比。
(C)按字符表格形式打印全部职工工资信息表及平均工资(•包括各项总的平均工资)。
8.保存数据文件功能。
9.打开数据文件功能。
经过逐层逐块、不断细化、求精过程,编写程序并进行测试、验证,可以逐2个模块地分开调试,并通过文件包含或用工程文件的形式进行逐步联合调试。
程序运行结果如下表所示(记录个数至少8 个)。
3二.模块设计分析系统功能模块图:4工作程序分析①输入:输入职工工资资料通过结构体的数组来进行操作,先头定义数组em[],先输入需要输入的职工人数m,然后进入循环,每次循环将各项输入结构体数组对应项的对应成员中,当循环次数等于人数时,完成全部员工的资料输入,退出循环。
同时将数据储存在ckerk_list文件中并自动保存至磁盘。
注:如首次使用,尚未输入数据,请先输入数据。
输入的数据将自动保存。
再次选择输入功能时原数据将被覆盖。
职工工资管理系统一、设计目标:按照软件工程的规范,以SQL Server或Access为后台数据库,以Delphi 或Visual C++为前端开发工具,设计并实现一个简化的工资管理系统。
二、需求描述该系统存储了某单位全体职工和工资信息。
职工的基本信息包括:职工编号、姓名、性别、出生年月、职称、最后学历、工资和婚否。
每一个职工的工资信息包括:月份、职工编号、职工姓名、基本工资、津贴、岗贴、补贴、房贴、交通补贴、应发数、房租、储蓄、会费、个人所得税、应扣数、实发数、其他收入。
个人所得税计算方法设为:应发数少于800元为0;800~1000元的部分为5%;1000~5000元的部分为10%;5000元以上的部分为20%。
系统功能如下:1.职工信息管理:a.增加职工信息。
增加新职工时输入新职工的基本信息;b.删除某职工的基本信息。
如,职工死亡或离职时;c.修改某职工(指定职工编号)的某些信息(如,加工资、获得新学位、晋升职称、结婚或离婚)。
2.工资管理:a.增加工资信息。
当增加新职工时,添加某职工的工资信息;b.职工离职或死亡时,删除某职工的工资信息;c.修改工资信息。
当月开始增加或减少某些项工资或扣款数变化时,修改某职工的部分工资信息;3.查询与统计:a.查询职工信息,如查询全体职工信息,或按职称、学历、出生年月、出生年月之前/ 之后、已婚/ 未婚等条件或多个条件的组合来查询相应的职工信息。
b.查询指定编号职工的工资信息;c.按时间段统计职工收入或单位的工资支出。
三、概要设计四、详细设计void CWorkerMgr6View::OnExit(){OnExit();}void CWorkerMgr6View::OnRecordFirst(){if(m_pSet->IsBOF()){m_pSet->SetFieldNull(NULL);}else{m_pSet->MoveFirst();UpdateData(FALSE);//更新对话框窗口}}void CWorkerMgr6View::OnRecordLast(){m_pSet->MoveLast();UpdateData(FALSE);//更新对话框窗口}void CWorkerMgr6View::OnRecordNext(){if(m_pSet->IsBOF()){m_pSet->SetFieldNull(NULL);}//判断是否溢出if(m_pSet->IsEOF()){AfxMessageBox("已经到达最后记录");}else{m_pSet->MoveNext();}UpdateData(FALSE);}void CWorkerMgr6View::OnRecordPre(){if(m_pSet->IsBOF()){AfxMessageBox("已经到达第一个记录");m_pSet->MoveFirst();}m_pSet->MovePrev();UpdateData(FALSE);}void CWorkerMgr6View::OnAddWorker(){HRESULT hr;try{hr =m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象if(SUCCEEDED(hr)){hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=worker.mdb","","",adModeUnknown);//连接数据库//上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51;}}catch(_com_error e)///捕捉异常{CString errormessage;errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage()); AfxMessageBox(errormessage);///显示错误信息}CAddWorker dl;if(dl.DoModal()==IDOK){m_pSet->AddNew();m_pSet->m_name=dl.m_nm;m_pSet->m_id=dl.m_ids;m_pSet->m_sex=dl.m_sx;m_pSet->m_born=dl.m_bn;m_pSet->m_zhichen=dl.m_zhch;m_pSet->m_xueli=dl.m_xli;m_pSet->m_salary=dl.m_sala;m_pSet->m_marry=dl.m_marr;m_pSet->Update();m_pSet->MoveLast();UpdateData(false);}OnAddMoney();}void CWorkerMgr6View::OnDeleteWorker(){HRESULT hr;try{hr =m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象if(SUCCEEDED(hr)){hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=worker.mdb","","",adModeUnknown);///连接数据库///上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51;}}catch(_com_error e)///捕捉异常{CString errormessage;errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage()); AfxMessageBox(errormessage);///显示错误信息}CDelWorker dl;if(dl.DoModal()==IDOK)UpdateData(true);try{long id=dl.m_idid;CString str;str.Format("DELETE from worker where ID=%d",id);_variant_t RecordsAffected;m_pConnection->Execute((_bstr_t)str,&RecordsAffected,adCmdText); AfxMessageBox("删除成功!");}catch(_com_error*e){AfxMessageBox(e->ErrorMessage());}m_pSet->MoveNext();if(m_pSet->IsEOF())m_pSet->MoveLast();UpdateData(FALSE);}}void CWorkerMgr6View::OnChangWorker(){HRESULT hr;try{hr =m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象if(SUCCEEDED(hr)){hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=worker.mdb","","",adModeUnknown);///连接数据库///上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51;}}catch(_com_error e)///捕捉异常{CString errormessage;errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage()); AfxMessageBox(errormessage);///显示错误信息}CChangeWork dl2;if(dl2.DoModal()==IDOK){UpdateData(true);long id=dl2.m_wid;m_pSet->MoveFirst();while(m_pSet->m_id!=dl2.m_wid)m_pSet->MoveNext();CChangeOne dl1;dl1.m_name1=m_pSet->m_name;dl1.m_id1=m_pSet->m_id;dl1.m_sex1=m_pSet->m_sex;dl1.m_born1=m_pSet->m_born;dl1.m_zhichen1=m_pSet->m_zhichen;dl1.m_xueli=m_pSet->m_xueli;dl1.m_salary1=m_pSet->m_salary;dl1.m_marry1=m_pSet->m_marry;if(dl1.DoModal()==IDOK){m_pSet->Edit();m_pSet->m_name=dl1.m_name1;m_pSet->m_id=dl1.m_id1;m_pSet->m_sex=dl1.m_sex1;m_pSet->m_born=dl1.m_born1;m_pSet->m_zhichen=dl1.m_zhichen1;m_pSet->m_xueli=dl1.m_xueli;m_pSet->m_salary=dl1.m_salary1;m_pSet->m_marry=dl1.m_marry1;m_pSet->Update();// m_pSet->MoveNext();UpdateData(false);}}}void CWorkerMgr6View::OnMShowDetail() {CMShowDetail dl;long id=m_pSet->m_id;m_pSet->MoveFirst();while(m_pSet->m_id!=id)m_pSet->MoveNext();dl.m_month=m_pSet->m_month;dl.m_id=m_pSet->m_id;dl.m_name=m_pSet->m_name;dl.m_base=m_pSet->m_base;dl.m_jintie=m_pSet->m_jintie;dl.m_gangtie=m_pSet->m_gangtie;dl.m_butie=m_pSet->m_butie;dl.m_fangtie=m_pSet->m_fangtie;dl.m_jiaotong=m_pSet->m_jiaotong;dl.m_yingfa=dl.m_base+dl.m_jintie+dl.m_gangtie+dl.m_butie+dl.m_fangtie+ dl.m_jiaotong;dl.m_fangzu=m_pSet->m_fangzu;dl.m_chuxu=m_pSet->m_chuxu;dl.m_huifei=m_pSet->m_huifei;if(dl.m_yingfa<800){dl.m_gerentax=0;}else if(dl.m_yingfa>=800&&dl.m_yingfa<=1000){dl.m_gerentax=dl.m_yingfa*0.05f;}else if(dl.m_yingfa>1000&&dl.m_yingfa<=5000){dl.m_gerentax=dl.m_yingfa*0.1f;}else if(dl.m_yingfa>5000){dl.m_gerentax=dl.m_yingfa*0.2f;}dl.m_yingkou=dl.m_fangzu+dl.m_chuxu+dl.m_huifei+dl.m_gerentax;dl.m_shifa=dl.m_yingfa-dl.m_yingkou;dl.m_other=m_pSet->m_other;dl.DoModal();}void CWorkerMgr6View::OnAddMoney(){CAddMoney dl;dl.m_id=m_pSet->m_id;dl.m_name=m_pSet->m_name;if(dl.DoModal()==IDOK){m_pSet->Edit();m_pSet->m_base=dl.m_base;m_pSet->m_month=dl.m_month;m_pSet->m_jintie=dl.m_jintie;m_pSet->m_gangtie=dl.m_gangtie;m_pSet->m_butie=dl.m_butie;m_pSet->m_fangtie=dl.m_fangtie;m_pSet->m_jiaotong=dl.m_jiaotong;dl.m_yingfa=dl.m_base+dl.m_jintie+dl.m_gangtie+dl.m_butie+dl.m_fangtie+ dl.m_jiaotong;m_pSet->m_yingfa=dl.m_yingfa;m_pSet->m_fangzu=dl.m_fangzu;m_pSet->m_chuxu=dl.m_chuxu;m_pSet->m_huifei=dl.m_huifei;if(dl.m_yingfa<800){dl.m_gerentax=0;}else if(dl.m_yingfa>=800&&dl.m_yingfa<=1000){dl.m_gerentax=dl.m_yingfa*0.05f;}else if(dl.m_yingfa>1000&&dl.m_yingfa<=5000){dl.m_gerentax=dl.m_yingfa*0.1f;else if(dl.m_yingfa>5000){dl.m_gerentax=dl.m_yingfa*0.2f;}m_pSet->m_gerentax=dl.m_gerentax;dl.m_yingkou=dl.m_fangtie+dl.m_chuxu+dl.m_huifei+dl.m_gerentax;m_pSet->m_yingkou=dl.m_yingkou;dl.m_shifa=dl.m_yingfa-dl.m_yingkou;m_pSet->m_shifa=dl.m_shifa;m_pSet->m_other=dl.m_other;m_pSet->Update();//m_pSet->MoveLast();UpdateData(false);}}void CWorkerMgr6View::OnDeleteMoney(){HRESULT hr;try{hr =m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象if(SUCCEEDED(hr)){hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=worker.mdb","","",adModeUnknown);///连接数据库///上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51;}}catch(_com_error e)///捕捉异常{CString errormessage;errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage()); AfxMessageBox(errormessage);///显示错误信息}CDeleteMoney dl;if(dl.DoModal()==IDOK)UpdateData(true);try{long id=dl.m_id;CString str;str.Format("DELETE from worker where ID=%d",id);_variant_t RecordsAffected;m_pConnection->Execute((_bstr_t)str,&RecordsAffected,adCmdText); AfxMessageBox("删除成功!");}catch(_com_error*e){AfxMessageBox(e->ErrorMessage());}m_pSet->MoveNext();if(m_pSet->IsEOF())m_pSet->MoveLast();UpdateData(FALSE);}}void CWorkerMgr6View::OnChangeMoney(){HRESULT hr;try{hr =m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象if(SUCCEEDED(hr)){hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=worker.mdb","","",adModeUnknown);}}catch(_com_error e) //捕捉异常{CString errormessage;errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage()); AfxMessageBox(errormessage); //显示错误信息}CChangeWork dl2;if(dl2.DoModal()==IDOK){UpdateData(true);long id=dl2.m_wid;m_pSet->MoveFirst();while(m_pSet->m_id!=dl2.m_wid)m_pSet->MoveNext();CChangeMoney dl1;dl1.m_month=m_pSet->m_month;dl1.m_name=m_pSet->m_name;dl1.m_id=m_pSet->m_id;dl1.m_base=m_pSet->m_base;dl1.m_jintie=m_pSet->m_jintie;dl1.m_gangtie=m_pSet->m_gangtie;dl1.m_butie=m_pSet->m_butie;dl1.m_fangtie=m_pSet->m_fangtie;dl1.m_jiaotong=m_pSet->m_jiaotong;dl1.m_yingfa=dl1.m_base+dl1.m_jintie+dl1.m_gangtie+dl1.m_butie+dl1.m_fa ngtie+dl1.m_jiaotong;dl1.m_fangzu=m_pSet->m_fangzu;dl1.m_chuxu=m_pSet->m_chuxu;dl1.m_huifei=m_pSet->m_huifei;if(dl1.m_yingfa<800){dl1.m_gerentax=0;}else if(dl1.m_yingfa>=800&&dl1.m_yingfa<=1000){dl1.m_gerentax=dl1.m_yingfa*0.05f;}else if(dl1.m_yingfa>1000&&dl1.m_yingfa<=5000){dl1.m_gerentax=dl1.m_yingfa*0.1f;}else if(dl1.m_yingfa>5000){dl1.m_gerentax=dl1.m_yingfa*0.2f;}dl1.m_yingkou=dl1.m_gerentax+dl1.m_fangzu+dl1.m_chuxu+dl1.m_huifei;dl1.m_shifa=dl1.m_yingfa-dl1.m_yingkou;dl1.m_other=dl1.m_other;if(dl1.DoModal()==IDOK){m_pSet->Edit();m_pSet->m_name=dl1.m_name;m_pSet->m_id=dl1.m_id;m_pSet->m_month=dl1.m_month;m_pSet->m_base=dl1.m_base;m_pSet->m_jintie=dl1.m_jintie;m_pSet->m_gangtie=dl1.m_gangtie;m_pSet->m_butie=dl1.m_butie;m_pSet->m_fangtie=dl1.m_fangtie;m_pSet->m_jiaotong=dl1.m_jiaotong;m_pSet->m_yingfa=dl1.m_base+dl1.m_jintie+dl1.m_gangtie+dl1.m_butie+dl1. m_fangtie+dl1.m_jiaotong;m_pSet->m_fangzu=dl1.m_fangzu;m_pSet->m_chuxu=dl1.m_chuxu;m_pSet->m_huifei=dl1.m_huifei;if(m_pSet->m_yingfa<800){m_pSet->m_gerentax=0;}else if(m_pSet->m_yingfa>=800&&m_pSet->m_yingfa<=1000){m_pSet->m_gerentax=m_pSet->m_yingfa*0.05f;}else if(m_pSet->m_yingfa>1000&&m_pSet->m_yingfa<=5000){m_pSet->m_gerentax=m_pSet->m_yingfa*0.1f;}else if(m_pSet->m_yingfa>5000){m_pSet->m_gerentax=m_pSet->m_yingfa*0.2f;}m_pSet->m_yingkou=dl1.m_fangzu+dl1.m_chuxu+dl1.m_huifei+m_pSet->m_geren tax;m_pSet->m_shifa=m_pSet->m_yingfa-m_pSet->m_yingkou;m_pSet->m_other=dl1.m_other;m_pSet->Update();// m_pSet->MoveNext();UpdateData(false);}}}void CWorkerMgr6View::OnFindMoney(){HRESULT hr;try{hr =m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象if(SUCCEEDED(hr)){hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=worker.mdb","","",adModeUnknown);}}catch(_com_error e) //捕捉异常{CString errormessage;errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage()); AfxMessageBox(errormessage); //显示错误信息}CFindNo dl2;if(dl2.DoModal()==IDOK){UpdateData(true);long id=dl2.m_id;m_pSet->MoveFirst();while(m_pSet->m_id!=dl2.m_id)m_pSet->MoveNext();CMShowDetail dl1;dl1.m_month=m_pSet->m_month;dl1.m_name=m_pSet->m_name;dl1.m_id=m_pSet->m_id;dl1.m_base=m_pSet->m_base;dl1.m_jintie=m_pSet->m_jintie;dl1.m_gangtie=m_pSet->m_gangtie;dl1.m_butie=m_pSet->m_butie;dl1.m_fangtie=m_pSet->m_fangtie;dl1.m_jiaotong=m_pSet->m_jiaotong;dl1.m_yingfa=dl1.m_base+dl1.m_jintie+dl1.m_gangtie+dl1.m_butie+dl1.m_fa ngtie+dl1.m_jiaotong;dl1.m_fangzu=m_pSet->m_fangzu;dl1.m_chuxu=m_pSet->m_chuxu;dl1.m_huifei=m_pSet->m_huifei;if(dl1.m_yingfa<800){dl1.m_gerentax=0;}else if(dl1.m_yingfa>=800&&dl1.m_yingfa<=1000){dl1.m_gerentax=dl1.m_yingfa*0.05f;}else if(dl1.m_yingfa>1000&&dl1.m_yingfa<=5000){dl1.m_gerentax=dl1.m_yingfa*0.1f;}else if(dl1.m_yingfa>5000){dl1.m_gerentax=dl1.m_yingfa*0.2f;}dl1.m_yingkou=dl1.m_gerentax+dl1.m_fangzu+dl1.m_chuxu+dl1.m_huifei;dl1.m_shifa=dl1.m_yingfa-dl1.m_yingkou;dl1.m_other=dl1.m_other;dl1.DoModal();}}void CWorkerMgr6View::OnStaticsMoney(){HRESULT hr;try{hr =m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象if(SUCCEEDED(hr)){hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=worker.mdb","","",adModeUnknown);}}catch(_com_error e) //捕捉异常{CString errormessage;errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage()); AfxMessageBox(errormessage); //显示错误信息}m_pSet->MoveFirst();float sum=0;while(!m_pSet->IsEOF()){sum=sum+m_pSet->m_shifa;m_pSet->MoveNext();}CString string;string.Format("%f",sum);MessageBox(string,"统计当月支出",MB_OKCANCEL);}五、测试及结果分析(a)在此前端主界面下查看后台数据库中员工的基本信息。
课程设计报告企业工资管理系统姓名XXX班级XXXXX学号XXXXXX 课程名称数据库原理及应用指导教师201X年X月X日目录一.工资管理系统需求分析…………………………………1.1功能需求…………………………………………………1.1.1功能划分………………………………………1.1.2功能描述……………………………………………1.2性能需求…………………………………………………1.3数据流图………………………………………………二.总体设计…………………………………………………2.1数据库概念设计…………………………………………2.2功能模块…………………………………………………三.系统详细设计……………………………………………3.1数据库逻辑设计…………………………………………3.2各模块功能………………………………………………3.2.1职工信息管理系统…………………………………3.2.2职工工资管理系统…………………………………3.2.3职工津贴管理系统…………………………………四.系统实现…………………………………………………4.1界面截图…………………………………………………4.1.1主界面及工资基本信息界面……………………4.1.2登录界面…………………………………………4.1.3系统主界面………………………………………4.1.4信息录入,修改,删除,查询界面…………4.2设计代码…………………………………………………五.实验总结…………………………………………………1、需求分析1.1功能需求1.1.1功能划分(1)、员工信息表;及时反映员工的基本信息(2)、员工津贴表,反映员工津贴(3)、员工基本工资表1.1.2 功能描述(1)、基本工资的设定(2)、津贴的设定(3)、计算出月工资(4)、录入员工工资信息(5)、添加员工工资信息(6)、更改员工工资信息1.2性能需求此工资管理系统对工资数据精度的计算能在默认情况之下精确到小数点后3位小数,即是精确到分的计算。
一引言C语言是Combined Language(组合语言)的中英混合简称。
是一种计算机程序设计语言。
它既具有高级语言的特点,又具有汇编语言的特点。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
设计一个程序的过程就是解决一个实际问题的过程,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;在次我们必须捋清思路,逐一的解决问题的各个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数、结构体和文件等,然后确定处理过程。
本课题中主要应用了C语言中的数组、结构体、文件等关键技术。
在C语言中,数组属于构造数据类型。
一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型;结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构,在结构体中的变量,可以是相同、部分相同,或完全不同的数据类型,结构体只能描述一个对象的状态,不能描述一个对象的行为。
文件是一种组织外部存储介质上的数据的数据类型。
它具有两个特征:一是对一个数据集合可以用一个名字命名;二是保存在外部存储介质上,可以长期保存。
通过此次课设可以锻炼学生理论联系实际能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解,并达到如下目的:1.熟悉C语言程序的编辑、编译链接和运行的过程。
2.熟练运用if语句和switch语句以及嵌套应用。
3.学习并掌握C语言定义函数的基本方法、声明函数及调用函数的方法和过程。
4. 掌握文件的概念以及文件的定义方法,认识文件打开、关闭、读、写等文件基本操作函数。
5.掌握结构体类型变量、数组的定义和使用。
6. 掌握数组的定义、引用以及输入输出的方法、通过字符数组存储字符串,进一步使用字符串。
图2程序流程图主函数源代码:void main(){int choose=0;while(true){show();printf("\t\t====>请选择:"); scanf("%d",&choose); system("cls");switch(choose){case 0: exit(0);//退出break;case 1: add();back();//添加职工信息break;case 2: see();back();//查看职工信息break;case 3: search();back();// 查找职工信息break;case 4: del();back();//删除职工信息break;case 5: statistics();back();//统计职工工资break;case 6: modify();back();//修改职工信息break;case 7:reserve();back();//保存数据break;case 8:author();back();//作者信息break;default:break;}fflush(stdin);getchar();system("cls");}}三程序详细设计3.1添加职工信息函数的实现添加记录前如图3所示。
工资管理系统课程设计报告编写人:马存祥同组成员:程新华(课程设计负责人)马晓辉马存祥赵宽祖完成日期:2011年12月13日辅导教师:祁俊批阅日期:分数:一、功能描述此工资管理系统主要利用链表实现,由如下八个功能模块实现 1、输入模块。
主要完成输入工资信息的工作,并存入链表中。
2、输出模块。
主要完成对所有工人信息的输出。
3、修改模块。
主要完成对职工信息的修改工作。
4、插入模块。
主要完成对职工信息的插入工作。
5、查询模块。
主要完成对某个职工信息的查询工作。
6、删除模块。
主要完成对某退休或离职职工信息的删除。
7、排序模块。
主要完成对所有职工按实发工资进行的升序或降序排列。
8、保存模块。
主要完成对已经输入和修改或删除的保存文件。
9、退出。
退出系统一、 总体设计工 资 管 理 系 统输入模块输出模块查询模块修改模块插入模块保存模块删除模块排序模块修改编号修改姓名修改基本工资修改扣款编号 查 询姓名 查 询降序 排 序生序 排 序用户登录分类统计1、功能模块设计 (1)主函数程序流程图(2)main()用户登录 switch Case8 Case2 Case3 Case4 Case5 Case6 Case7 Case1 菜单制作工资表输出职工信息修改职工信息编号 姓名性别 基本工资 扣款插入职工信息查询职工信息按职工编号按职工姓名删除职工信息排序保存文件降序升序(2)输入模块Case0退出结束Case8分类统计 低于3500高于100008000~10000 3500~8000开始P->nextP->next!=NULL输入职工的信息While()是否继续输入结束跳出是否 否(4)修改模块是无有开 始输出职工信息P 是否为空结束输出P=P->next While()开 始P 是否NULL结束输入要修改的职工编号k查找有无该职工修改职工信息继续修改不修改是否修改不存在(6)查询模块开 始定义变量,申请内存查找插入之后的编号该编号之后的节点后移一位输入要插入的职工信息结束 开 始定义变量Case1选择语句Case2编号查询姓名查询 输出(7)删除模块没有找到(8)排序模块开 始输入要删除的编号查找该编号 将前一节点指针指向当前节点的下一节点 释放节点是否继续删除开 始 Case1 选择Case2升序 降序结束(9)计算税金{(基本工资)--(扣款)}*税率-速扣数=个人所得税。
绝对可以完美运行,下面有运行图片#include<stdio.h> //调用库函数#include<string.h> //字符串处理#include<conio.h> //控制台输入输出#include<stdlib.h> //定义杂项函数及内存分配函数#define N 2 //宏定义以3代替N/******************************************************************************函数声明*******************************************************************************/ void enter();int menu();void input();void output();void search();void search_employeeid();void search_name();void edit();void array();void array_basesalary();void array_postwage();void array_totalwage();void statistics();void save();void load();/******************************************************************************职工类型定义*******************************************************************************/ struct employee{char employeeid[10];char name[10];char sex[10];int age;float basesalary;float postwage;float totalwage;};/******************************************************************************职工变量定义******************************************************************************/ struct employee emp[N];struct employee replace;struct employee *p=emp;/*****************************************************************************系统主函数******************************************************************************/ void main(){int c;while(1){printf(" \n\n\n\n"); printf(" 欢迎进入职工工资管理系统 \n\n\n");printf(" 1 进入管理系统 \n\n");printf(" 0 退出 \n\n");printf(" \n\n\n\n");printf(" 请输入你选择: \n");scanf("%d",&c);switch(c){case 1:enter();break;case 0:printf(" 谢谢使用!\n");exit(0);}}}/*****************************************************************************功能:登陆函数,进行密码验证*****************************************************************************/ void enter(){char q;char key[10],password[10]="china";int k=1,i;printf(" 请输入密码: \n");for(i=0;i<5;i++){q=getch();key[i]=q;printf("*");}while(k<=3){if(strncmp(key,password,5)==0){while(1){int a;//system("cls");a=menu();switch(a){case 1:input();break;case 2:output();break;case 3:search();break;case 4:edit();break;case 5:array();break;case 6:load();statistics();break;case 0:printf("\n\n 谢谢使用!\n\n\n\n");save();exit(0);}}}else{k++;printf(" 输入密码错误!请再次输入:");for(i=0;i<5;i++){q=getch();key[i]=q;printf("*");}if(k>2){if(strncmp(password,key,5)==0)continue;else{printf(" 输入密码错误三次,系统将自动退出!\n");exit(0);}}}}}/************************************************************************功能: 主菜单函数参数:a类型:int说明: 变量返回值: a************************************************************************/int menu(){int a ;printf("\n\n");printf("|*****************欢迎进入职工工资管理系统************************|\n");printf("| |\n");printf("| |\n");printf("| 1 职工信息输入|\n");printf("| |\n");printf("| 2 职工信息输出|\n");printf("| |\n");printf("| 3 职工信息查询|\n");printf("| |\n");printf("| 4 职工信息修改|\n");printf("||\n");printf("| 5 工资排序|\n");printf("||\n");printf("| 6 工资统计|\n");printf("||\n");printf("| 0 退出|\n");printf("||\n");printf("||\n");printf("|*****************************************************************|\n");printf("\n\n");printf(" 请输入你所选择的选项:");scanf("%d",&a);while(a>6||a<0){printf(" error!\n");printf(" 请重新输入你所选择的选项:");scanf("%d",&a);}return a;}/********************************************************************************* ***功能:职工信息输入********************************************************************************** ***/void input(){int c;p=emp;printf(" 进入职工信息输入模块 \n\n\n");for(c=0;c<N;c++,p++){p[c].totalwage=p[c].basesalary+p[c].postwage;printf(" 请输入第%d个职工信息:\n\n",c+1);printf(" 请输入职工号:\n");scanf("%s",p->employeeid);if(strcmp(p->employeeid,"0")!=0){printf(" 请输入职工姓名:\n");scanf("%s",p->name);printf(" 请输入职工性别: \n");scanf("%s",&p->sex);printf(" 请输入职工年龄: \n");scanf("%d",&p->age);printf(" 请输入职工基本工资:\n");scanf("%f",&p->basesalary);printf(" 请输入职工岗位工资:\n");scanf("%f",&p->postwage);printf(" 职工信息输入完成! \n\n");}elsereturn;}save();}/*******************************************************************************功能:职工信息输出********************************************************************************/ void output(){int j;load();p=emp;printf(" 进入职工信息输出模块 \n\n\n");printf("-------------------------------------------------------------------------------\n");printf("| 职工号 |姓名 |性别 |年龄 |基本工资 |岗位工资|总工资 |\n");printf("-------------------------------------------------------------------------------\n");for(j=0;j<N;j++){p[j].totalwage=p[j].postwage+p[j].basesalary;printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid, p[j].name,p[j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);printf("-------------------------------------------------------------------------------\n");}printf("\n\n 职工信息输出完成! \n\n");getchar();}/******************************************************************************功能:职工信息查询******************************************************************************/ void search(){int j;while(1){printf("*********************职工信息查询*********************\n\n\n");printf(" 1 按职工号查询 \n");printf(" 2 按职工姓名查询 \n");printf(" 0 退出该项操作 \n");printf("\n\n");while(1){printf(" 请输入你的选择 \n");scanf("%d",&j);if(j>=0&&j<=2){switch(j){case 1:search_employeeid();break;case 2:search_name();break;case 0:return;}}else{printf(" 输入错误! \n\n");printf(" 请再次输入你的选择:\n\n");}}}}/*******************************************************************************功能:按职工号查询函数*******************************************************************************/ void search_employeeid(){char employeeid[10];int k,j;p=emp;printf("*********************按职工号查询职工信息*****************************\n\n\n\n");printf(" 请输入要查询职工的职工号:\n\n");scanf("%s",employeeid);for(k=0;k<N;k++){if(strcmp(employeeid,p->employeeid)==0){j=k;p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号 |姓名 |性别 |年龄 |基本工资 |岗位工资|总工资 |\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid, p[j].name,p[j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);printf("-------------------------------------------------------------------------------\n");break;}else{printf(" not found\n");return;}}}/*****************************************************************************功能:按职工姓名查询函数*****************************************************************************/ void search_name(){char name[10];int flog=0;int f,j;p=emp;printf("******************************按职工姓名查询职工信息***********************\n\n\n");printf(" 请输入要查询职工的姓名:\n\n");scanf("%s",name);for(f=0;f<N;f++,p++){if(strcmp(name,p->name)==0){j=f;p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号 |姓名 |性别 |年龄 |基本工资 |岗位工资|总工资 |\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid, p[j].name,p[j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);printf("-------------------------------------------------------------------------------\n");break;}else{printf(" not found \n\n");return;}}getchar();}/*******************************************************************************功能:职工信息修改函数*******************************************************************************/ void edit(){char e[10];int g=0,j;char flog;p=emp;printf(" 请输入你要修改职工的职工号: \n");scanf("%s",e);for(g=0;g<N;g++){// if(*e==p[g].employeeid)if(strcmp(e,p->employeeid)==0){j=g;p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号 |姓名 |性别 |年龄 |基本工资 |岗位工资 |总工资 |\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid,p[j]. name,p[j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);printf("-------------------------------------------------------------------------------\n");printf(" 是否要修改该职工信息?y(是)or n(否)?\n\n");getchar();scanf("%c",&flog);if(flog == 'y'){printf(" 请输入新姓名:\n");scanf("%s",p->name);printf(" 请输入性别: \n");scanf("%s",&p->sex);printf(" 请输入年龄: \n");scanf("%d",&p->age);printf(" 请输入基本工资:\n");scanf("%f",&p->basesalary);printf(" 请输入岗位工资:\n");scanf("%f",&p->postwage);printf(" 修改职工信息成功! \n\n");}if(flog == 'n'){printf(" 退出该项操作! \n\n");return;}save();}if(g==N){printf(" not found \n\n\n");return;}}}/************************************************************************功能:职工工资排列函数************************************************************************/void array(){int j;while(1){printf("*************************工资排序*********************\n\n"); printf(" 1 按基本工资排序 \n\n");printf(" 2 按岗位工资排序 \n\n");printf(" 3 按总工资排列 \n\n");printf(" 0 退出 \n\n");printf("\n\n\n");while(1){printf(" 请输入你的选择: \n\n");scanf("%d",&j);if(j>=0&&j<=3){switch(j){case 1:array_basesalary();break;case 2:array_postwage();break;case 3:array_totalwage();break;case 0:return;}}else{printf(" 输入错误!\n\n\n");printf(" 请再次输入你的选择:\n\n");}}}}/**************************************************************************功能:按基本工资排列(选择法)***************************************************************************/ void array_basesalary(){int i,j,k;p=emp;for(i=0;i<N-1;i++){k=i;for(j=i+1;j<N;j++){if(p[k].basesalary<p[j].basesalary)k=j;}if(k!=i){replace=emp[k];emp[k]=emp[i];emp[i]=replace;}}for(j=0;j<N;j++){p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号 |姓名 |性别 |年龄 |基本工资 |岗位工资|总工资 |\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid, p[j].name,p[j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);}printf("-------------------------------------------------------------------------------\n");}/************************************************************************功能:按岗位工资排列(冒泡法)*************************************************************************/void array_postwage(){int i,j;p=emp;for(i=0;i<N;i++){for(j=0;j<N-i;j++){if(p[j].postwage<p[j+1].postwage){replace=emp[j];emp[j]=emp[j+1];emp[j+1]=replace;}}}for(j=0;j<N;j++){p[j].totalwage=p[j].postwage+p[j].basesalary;printf("------------------------------------------------------------------------------\n");printf("| 职工号 |姓名 |性别 |年龄 |基本工资 |岗位工资|总工资 |\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid, p[j].name,p[j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);}printf("-------------------------------------------------------------------------------\n");}/************************************************************************功能:按总工资排列(插入法)************************************************************************/void array_totalwage(){int i,j;p=emp;for(i=1;i<N;i++){replace=emp[i];for(j=i-1;j>=0&&p[i].totalwage>p[i].totalwage;j--){emp[j+1]=emp[j];emp[j+1]=replace;}}for(j=N-1;j>=0;j--){p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号 |姓名 |性别 | 年龄 |基本工资 |岗位工资|总工资 |\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid, p[j].name,p[j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);}printf("-------------------------------------------------------------------------------\n");}/*************************************************************************功能:工资统计函数**************************************************************************/void statistics(){int z,a=0,b=0,c=0;p=emp;for(z=0;z<N;z++){if(p[z].totalwage>3000){a++;continue;}if(p[z].totalwage>=2000&&p[z].totalwage<=3000){b++;continue;}if(p[z].totalwage<=2000&&p[z].totalwage>0){c++;continue;}}printf(" 总工资在3000元以上的职工人数有: %d\n\n",a);printf(" 总工资在2000元至3000元的职工人数有:%d\n\n",b);printf(" 总工资在2000元以下的职工人数有: %d\n\n",c);getchar();}/***************************************************************************功能:导出函数***************************************************************************/ void save(){int k;FILE *fp;p=emp;if((fp=fopen("emp_list","wb"))==NULL){printf(" Create file error!\n");return;}for(k=0;k<N;k++,p++){if(fwrite(p,sizeof(struct employee),1,fp)!=1){printf(" file save error!\n\n");break;}elsecontinue;}getchar();fclose(fp);}/***********************************************************************功能:导入函数***********************************************************************/ void load(){int l;FILE *fp;p=emp;if((fp=fopen("emp_list","rb"))==NULL){printf(" Create file error!\n");exit(0);}for(l=0;l<N;l++,p++){if(fread(p,sizeof(struct employee),1,fp)!=1){printf(" file read error!\n\n");break;}elsecontinue;}getchar();fclose(fp);}下面是实验结果(注:素材和资料部分来自网络,供参考。
《C语言程序设计》课程设计实习报告实验题目职工工资管理1.问题描述:添加模块:添加职工或工资的信息删除模块:能通过姓名或者工号删除职工信息修改模块:修改职工信息查询模块:能通过姓名或者工号查询职工信息显示模块:显示全部职工信息文件管理模块:负责源数据文件的管理,包括新建、读取和保存源数据2.概要设计职工工资管理添加模块删除模块修改模块查询模块显示模块文件管理模块按姓名按工号按姓名按工号新建记录数据文件读取记录数据文件保存记录数据文件在各模块处用指针函数来使用后面的保存记录数据文件进行保存。
3.详细设计include <stdio.h># include <stdlib.h># include <string.h>/*宏定义*/# define N 100 /*假设工人个数是100*/# define HEADER1 "----------------------------------------------------------------------\n"# define HEADER2 " | Number | Name | Psex | Age | Time | Ywage | Ykou | Pwage |\n"# define HEADER3 " |--------|--------|--------|-------|------|-------|------|-------|\n"# define FORMAT " |%-8d|%-8s|%-8s|%-7d|%-6d|%-7d|%-6d|%-7d|\n"# define DATA p->num ,p->name,p->sex,p->age,p->time,p->ywage,p->ykou,p->pwage# define END "-----------------------------------------------------------------------\n"/**/typedef struct work{int num; /**/char name[10];char sex[10];int age; /**/int time; /**/int ywage; /**/int ykou; /**/int pwage; /**/}WORK;/**/typedef struct pointer_info{WORK*pHead; /**/int count; /**/char fname[10]; /**/int saveflag; /**/}PI;/**/void Menu();void Add(PI*);void Del(PI*);void Save(PI*pi);void Modify(PI*pi);void Qur(PI*pi);void Load(PI*pi);void New(PI*pi);void Disp(PI*);void Wrong();void printheader();void main(){int sel;WORK *pwork;PI pi;pwork = (WORK*)malloc(N * sizeof(WORK));pi.pHead = pwork;pi.count = 0;pi.fname[0] = '\0';pi.saveflag = 0;/*显示主函数*/Menu();printf("Please input your choice [0~5]:");do{scanf("%d",&sel);if (sel == 0){/*if (pi.saveflag ==1){if (strlen(pi.fname)){Save(&pi);}else{New(&pi);Save(&pi);}}*/break;}switch(sel){case 1:Add(&pi);break;case 2:Del(&pi);break;case 3:Modify(&pi);break;case 4:Qur(&pi);break;case 5:Disp(&pi);break;default:Wrong();break;}}while(1);pwork = pi.pHead;free(pwork);}void printheader(){printf(HEADER1);printf(HEADER2);printf(HEADER3);}void Menu(){system("cls");printf(" The Workers' Grade Wage System \n");printf("****************Menu*************************************\n");printf(" * 1 添加*\n");printf(" * 2 删除*\n");printf(" * 3 修改*\n");printf(" * 4 查询*\n");printf(" * 5 显示*\n");printf(" * 0 退出*\n");printf ("*********************************************************\n"); }void Wrong( ){printf("\n******Error :input has wrong ! press any key to continue******\n");}void Add(PI* pi ){int num;//char sex[10];int nSex;int i,flag=0;WORK * pwork,*p;do{pwork=pi->pHead+pi->count;p=pi->pHead;printf("please input the number:(press '0'return menu)");scanf("%d",&num);for(i=1;i< pi->count; i++){if(num==p->num){printf ("the number you input has exist,please input another one!\n");flag=1;break;}p++;}if(flag){flag=0;continue;}if (num != 0){pwork->num = num;}else{Menu();printf("please input your choice[0~5]:");break;}printf("please input the name:");scanf("%s",pwork->name);printf("please input the sex(0 is woman,1 is man):");scanf( "%d", &nSex );if( nSex == 0 )strcpy( pwork->sex,"woman");elsestrcpy( pwork->sex,"man");printf("please input the time:");scanf("%d", &pwork->time);printf("please input the age:");scanf("%d", &pwork->age);printf("please input the Ywage:");scanf("%d", &pwork->ywage);printf("please input the Ykou:");scanf("%d", &pwork->ykou);pwork->pwage = pwork->ywage-pwork->ykou;pi->count++;pi->saveflag=1;}while(1);}void Qur(PI * pi){int a,i,num;WORK *p;char name[10];p=pi->pHead;Menu();printf("1------search by number\n");printf("2------search by name\n");printf("3------return\n");printf("please input your choice:[1,2]?");scanf("%d",&a);if(a==3){return;}if(a==1){printf("please input the number for search:");scanf("%d",&num);for(i=1;i<= pi->count; i++){if(num==p->num){break;}p++;}if(i>pi->count){printf("no record found\n");return;}else{printheader();printf(FORMAT,DATA);printf(END);}}else if(a==2){printf("please input name to search:");scanf("%s",name);for(i=1;i<=pi->count;i++){if(strcmp(name,p->name) !=0){break;}p++;}if(i>pi->count){printf("no record found\n");return;}else{printheader();printf(FORMAT,DATA);printf(END);}}printf("Please input your choice[0~5]:");}void Modify(PI *pi){int num,i;WORK *p,*pwork;p = pi->pHead;Menu();Disp(pi);printf("please input the number of work to modify:");scanf("%d",&num);for (i = 1;i < pi->count;i++){if (num == p->num){break;}p++;}if (i > pi->count){printf("no record found\n");return;}else{printf("please input the number:(enter '0'return menu)");scanf("%d",&num);if (num!=0){p->num =num;}else{Menu();return;}printf("please input the name:");scanf("%s",p->name);printf("please input the sex:");scanf("%s",p->sex);printf("please input the age:");scanf("%d",&p->age);printf("please input the time:");scanf("%d",&p->time);printf("please input the ywage:");scanf("%d",&p->ywage);printf("please input the ykou:");scanf("%d",&p->ykou);pwork->pwage = pwork->ywage-pwork->ykou;pi->saveflag = 1;}}/*删除职工记录*/void Del(PI * pi){int sel,i,num;char name[10];WORK *p;/*指针函数*/p=pi->pHead;Menu();printf("1------delete by number\n");/*选择工号*/printf("2------delete by name\n");/*选择姓名*/printf("any key other------return\n");/*按别的键就返回*/ printf("please input your choice:[1,2]?\n");scanf("%d",&sel);if(sel!=1&&sel!=2)/*按别的键*/{return;}if( sel == 1 )/*选择工号*/{printf("Please input the number to delete:");scanf("%d",&num);for(i=1;i<=pi->count;i++)/*按学号搜索*/{if(num==p->num){break;}p++;}if(i>pi->count){printf("no record found\n");return;}else if(i==pi->count) /*删除中间某个记录,只需要将count减1*/ {pi->count--;pi->saveflag=1;printf("record delete successfully!\n");}else /*删除某个记录,只要将其后的数据前移覆盖即可*/{memcpy(p,p+1,(pi->pHead + pi->count - p)*sizeof(WORK));pi->count--;pi->saveflag = 1;printf("record delete successfully!\n");}}else if(sel == 2)/*选择姓名*/{printf("please input name to delete:");scanf("%s",name);for(i=1;i<=pi->count;i++){if(strcmp(name,p->name) != 0){break;}p++;}if(i>pi->count){printf("no record found\n");return;}else if(i==pi->count)/*删除中间某个记录,只需要将count减1*/ {pi->count--;pi->saveflag=1;printf("record delete successfully!\n");}else{ /*删除某个记录,只要将其后的数据前移覆盖即可*/ memcpy(p,p+1,(pi->pHead+pi->count-p)*sizeof(WORK) );pi->count--;pi->saveflag=1;printf("record delete successfully!\n");}}printf("please input your choice[0~5]:");}/*显示*/void Disp(PI * pi){int i;WORK *p = pi->pHead;if (pi->count==0){printf("no record found\n");printf("\nplease input your choice[0~5]:");return;}printheader();for(i=1;i<=pi->count;i++){printf(FORMAT,DATA);printf(END);p++;}}void New(PI *pi){FILE * fp;char name[10];char fname[10] =".\\";printf("please input the date file name foe create:");scanf("%s",fname);strcat(fname,name);strcat(fname,".dat");fp=fopen(fname,"wb");if(fp==NULL){printf("\n=====>open file error!\n");return;}strcpy(pi->fname,fname);fclose(fp);}void Load (PI *pi){FILE * fp;WORK * p=pi->pHead;char name [10];char fname [10]= ".\\";printf( "please input the data file name for load:");scanf( "%s",name);strcat(fname,name);fp=fopen(fname , "rb");if(fp==NULL){printf("\n====>open file error!\n");return;}pi->count = 0;pi->saveflag = 0;while(feof(fp)!=0){if(fread(p,sizeof(WORK),1,fp)){pi->count++;p++;}}strcpy(pi->fname,name);printf("load data file %s successfully!",name);fclose(fp);}void Save(PI * pi){FILE * fp;int numwriten;if (!strlen(pi->fname))New(pi);fp=fopen(pi->fname, "wb");if(fp==NULL){printf("\n====>open file error!\n");fclose(fp);return ;}if (pi->count){numwriten = fwrite(pi->pHead,1,pi->count * sizeof(WORK),fp);pi->saveflag = 0;printf("file save succesefully!");}elseprintf("no record for save !");fclose(fp);}4测试分析添加时Q1:性别通过输入0或1输出woman or man有if语句进行选择Q2:实得工资由应发工资减去应扣工资自动得到在程序中做减法添加后删除Q1:通过工号或姓名删除使用if语句进行选择,并用for语句对进行搜索Q2:删除中间摸个记录删除后修改查找Q1:要求通过工号或者姓名查找使用if语句Q2:如果找不到记录则要返回使用if –else语句找不到就输出源数据显示5.课程设计总结通过我们小组的共同努力终于完成任务,制作了职工工资管理系统。
目录一、问题描述……………………………………………………P3二、基本要求……………………………………………………P3三、算法说明……………………………………………………P3四、模块划分……………………………………………………P4五、各函数模块功能……………………………………………P4六、体会与建议…………………………………………………P5七、参考文献……………………………………………………P5八、流程图…………………………………………………………P6九、源代码…………………………………………………………P6一、【问题描述】职工工资管理程序设计二、【基本要求】1.设计简单的菜单,能够进行系统功能选择。
2.实现信息的录入功能。
3.在已有信息的基础上添加新的记录。
4.删除指定编号的记录。
5.修改指定编号的记录6.实现信息的浏览功能7.按编号查询功能8.按工资总额排序功能三、【算法说明】*delete()删除结点――设计了两个函数:一个是查找函数,实现按职工编号查询地功能:一个是删除查找到的记录。
Step1: 首先输入要删除记录的编号,输入后调用查找函数,根据编号顺序查找结点,利用字符串比较函数strcmp(no,p->no)进行比较:1)若两字符串相等,函数返回值为0非运算为真,说明找到返回指向该结点的指针2)若两字符串不相等,函数返回值为1或-1非运算为假,继续后移指针查找3)若找遍所有结点也没有找到结点,则输出没有找到信息,返回空指针Step2: 双链表只需要一个临时指针指向要删除的结点,指针的修改分两种情况:1)被删除结点是头结点,则修改头指针First=p->next。
若头指针不为空,将头结点的前趋设为空,First->prior=NULL若头指针为空,说明是链表中唯一的结点,则删除后链表为空,修改尾指针Last=NULL2)被删除结点不是头结点,将该记录的前趋指针的后继指向被删除结点的后继*save()保存记录到文件Step 1: 定义一个指向文件的指针输入要保存的磁盘文件名:1)若输入的是绝对路径,则文件保存到指定位置2)若只给文件名,则文件保存在TurboC默认的路径下Step 2: 确定文件的打开方式fopen(outfile,”wb”),为输出打开一个二进制文件,若没有此文件则建立:若文件打不开,则退出程序Step 3: 否则选择一种写文件方式fwrite(p,sizeof(SALARY),1,fp),写入一个结构体数据块,即一条记录,对整条记录进行处理四、【模块划分】本程序划分为11个函数,分别为:1: main() 2: menu_select() 3: init() 4: list()5: delete() 6: search() 7: insert() 8: save()9.load() 10:welcome() 11: inputs()五、.各函数模块功能<1> main()主函数――主函数是程序的入口,采用模块化设计。
课程设计报告课程名称:职工工资管理系统课程设计设计题目:带头结点单循环链表(职工工资管理系统)系别:计算机系专业:信息管理组别:学生姓名: 学号:起止日期:09年11月 7 日~ 09年 12月20日指导教师:目录第一章需求分析1.1 课程设计题目1.2 课程设计任务及要求1.3 课程设计思想1.4 软硬件运行环境及开发工具第二章概要设计2.1 设计流程图2.2 主要的数据结构2.3 方法及原理的简要说明第三章详细设计3.1 计算机程序框图3.2 自编程序第四章调试与操作说明4.1 系统调试4.2 操作使用说明第五章课程设计与总结体会5.1 对开发的过程归纳与总结5.2 在过程中遇到的技术难点与解决方法 5.3 程序尚存问题5.4 进一步开发的见解与建议5.5 收获与体会第六章致谢第七章参考文献第八章附录源码链接/%D7%CF%BB%EA%C7%E0%D0%C4/blog/item/04046e1d54500fcbf6039eee.html第一章需求分析1.课程设计题目带头结点的单循环链表(职工工资管理系统)2.课程设计任务及要求编写一个职工工资管理系统,可以实现对数据的基本处理,要求用带头结点的单循环链表实现3.课程设计思想首先完成对程序的密码的确认,其次完成数据录入模块,然后实现对已录入的数据的存储和读入,最后就可以在其基础建立链表完成其余各项操作4.软硬件运行环境及开发工具Turboc2.0,Windows XP,VC++6.0第二章概要设计2.1 设计流程图图1主函数流程图2.1.1录入读取建链流程图建链流程图如图2所示2.1.2操作流程图如图3所示2.2 2.2.1链表结构如图4所示图4链表结构图2.2.2链表的结点结构如表1所示表1链表的结点结构第三章 详细设计3.1 计算机程序框图3.1.1密码确认部分程序图如表5所示图5 密码确认部分程序图3.1.2确认编号是否存在部分程序图如图6所示图6确认编号是否存在部分程序图3.2 自编程序3.2.1录入模块void setlink(Link head){ /*建立单链表*/Link p,q,r;int i=0;int c;int a=1;int b;printf("\n");p=head;r=head->next;while(a==1){q=(LNode *)malloc(sizeof(struct node));b=1;while(b==1)/*编码确认部分*/{printf("输入编号:\n");scanf("%d",&q->num);r=head->next;while(r!=NULL&&r!=head&&r->num!=q->num){r=r->next;}if(r==NULL||r==head)b=0;else{printf("你输入的员工已录入,请重新输入。
设计题目职工工资管理系统设计xxx技术学院课程设计任务书二、对课程设计成果的要求(包括课程设计说明书、图纸、图表、实物等软硬件要求)(1)分析职工工资管理系统程序结构: 画出程序粗略的流程图和各个模块的详细流程图,每个功能模块用文字说明他们的功能(与对应流程图放在一起);(2)对你已经实现的功能(修改的、新编写的)做详细的说明, 并附上流程图及程序清单。
(3)自己对该职工工资管理系统的进一步设想;(4)对于有设想但最终未实现的功能的大致编程思路的阐述;(5)论述在设计过程中遇到的并且对你具有启发性的问题。
(6)严禁抄袭,发现雷同,双方扣分。
三、课程设计工作进度计划:周一、二:教师布置任务,讲解本课设模块。
画出主程序粗略的流程图和各个模块的详细流程图。
设计程序及调试程序。
周三、四:设计程序及调试程序。
同时着手写报告。
周五:完成设计,提交报告,接受教师考评。
四、主要参考资料(1)《面向对象程序设计》,郑莉,清华大学出版社,(2)《面向对象程序设计C++语言》,朱战立等编西安电子科技大学出版社(3)《面向对象程序设计----Visual C++》,刘斌等编, 清华大学出版社(4)《面向对象程序设计----C++语言描述》, Richard Johnsonbaugh(美)等著,蔡宇辉等译,机械工业出版社,2003目录1概述: ..................................................................................... 错误!未定义书签。
1.1基本功能............................................. 错误!未定义书签。
1.2拓展功能............................................. 错误!未定义书签。
2课题分析 ................................................................................. 错误!未定义书签。
2.1类的设计............................................. 错误!未定义书签。
2.2类的实现............................................ 错误!未定义书签。
3详细设计说明 ......................................................................... 错误!未定义书签。
3.1程序主界面........................................... 错误!未定义书签。
3.2方案................................................ 错误!未定义书签。
3.3程序描述(输入INPUT)................................. 错误!未定义书签。
4课程设计总结 ......................................................................... 错误!未定义书签。
5软件使用说明 ......................................................................... 错误!未定义书签。
6附录(参考文献,原代码:) ............................................... 错误!未定义书签。
6.1参考文献:........................................... 错误!未定义书签。
6.2原代码............................................... 错误!未定义书签。
1概述:1.1 基本功能实现一个简单的工资管理系统。
系统的主要用来计算职工当月工资并存档。
由于公司内有5种不同类型的职工:技术人员、销售人员、文秘、技术经理和销售经理,他们的工资计算方式各不相同。
所以,此系统的基本功能是:首先,由员工输入用户信息(包括编号、姓名和职务;然后,计算某职工的当月工资(系统先从已输入的职工信息文件中获取职工的工作类型;接着调用不同的处理程序进行计算);最后,可以选择将结果(所有员工的编号、姓名、职位、工资等信息)存档。
1.2 拓展功能1.设定好5种职位各不相同的工资计算方式:技术人员的工资根据他当月工作的小时数来定,时薪35元;销售人员的工资则是根据本人当月销售额来确定,工资为销售额的5%;文秘有4000元的基本工资,奖金视为当月工作情况而定;技术经理和销售经理都有6000元的固定工资,技术经理的工作业绩可分为3个等级,PS:每级可获得1000元奖金(¥1000、¥2000、¥3000);销售经理的奖金由他所管理的销售员的销售业绩而定,总销售额的2%。
2.添加某个职工信息的查询功能:只要输入一个已经存在数据库内的雇员名字,即可查到该雇员的编号、姓名、职位和工资的信息。
3.清屏功能:为了保护雇员个人信息不外露。
4.警报功能:在查询职员工资信息的时候,会发出警报音“滴——”的一声。
5.退出确定功能退出程序时,会让用户再次确定是否真的要退出的界面。
2课题分析2.1 类的设计从用户需求中,可以发现5种类型的职员都可以分别设计为一个类。
首先,他们都属于雇员,因此可以设计一个基类employee(雇员),然后从中派生出technician(技术人员)类,salesman(销售人员)类、secretary(文秘)类、techmanager(技术经理)类和manager(销售经理)类。
根据用户需要employee类应该拥有的属性有:编号、姓名、职务、月份和工资。
Employee 类的服务可以包括input(),print(),find(),save()。
其中,input()函数用于接收用户输入的职工信息;print()函数用于输出用户输入的职工信息;find()函数用来根据职工名查找职工信息;save()函数为将职工信息写入文本。
由于各类人员的工资计算方法不同,无法在基类中统一定义,必须在派生类中分别定义。
2.2类的实现class Technician:public Employee //技术员类(公有继承雇员类){public:void input() {cout<<"技术员的";Employee::input(); cout<<"工作时间:";cin>>worktime;}void print(){ pay=worktime*hourpay;Employee::print(); }void find(){pay=worktime*hourpay;Employee::find();}void save(){ pay=worktime*hourpay; 其他类,类似形成。
Employee::save(); }protected:double worktime; //工作时间(小时) };3 详细设计3.1 程序主界面3.2 方案接着,便是思考如何具体实现:问题1const int/*定义公司各类职工输入用户信息,包括编号、姓名和职务从已输入的职工信息文件中获取职工的信息调用不同的处理程序进行查询,职员信息将结果存档开始开始(n1:技术员人数;n2:经理人数;n3:销售员人数;n4:销售经理人数 )*/事先设定好可修改的全局变量。
然后确定好全局对象数组。
如此便可以按照所需存入员工信息问题2:如何程序要求,派生类 派生类 派生类 基类派生类问题3:怎样处理2个菜单关系?(输入职员信息菜单、目录菜单)让目录菜单作为主菜单,输入职员信息的菜单成为二级菜单。
并运用清屏的功能,及时清除输入的职员信息,作为一种安全保护。
3.3 input )* ”的数据输入菜单,进行数据输入(进入二子菜单(程序中的menu 3)* 根据需要选择输入要输入的职员信息。
(只需按照中文提示,依次输入英语或数字信息)图表 3子菜单中选择输入技术经理信息的一个状态* 一个职员的信息全部输入完成后,会自动清屏,回到“财务部门输入数据系统”主菜单图表 4 子菜单* 以此类推,随意输入你要输入的职员信息。
若输入全部完成,可以回到主菜单 * 然后,在主菜单中选择数据查询,可以根据你填入的职工姓名,查到他的所有信息图表 5 由主菜单选择查询一操作时,反馈信息的状态* 也可选择数据备份,会自动清屏。
并让所有已输入过的职工信息,全打印在所在磁盘的一个txt 文档里。
图表 6 由主菜单选择数据备份一操作后的状态* 如果想要退出系统,可以选择主菜单的退出系统,选择过后,会清屏,显示以下界面,警告用户,是否真的要推出。
图表7 选择主菜单退出系统一操作后的状态4课程设计总结通过此次面向对象程序设计的实践课程学习,本人受益匪浅。
经过一系列的编程,本人更加体会到纸上得来终觉浅,绝知此事要躬行。
实践是检验真理的唯一标准。
这两句话说的真切。
遇到的难关1.在编写销售经理的类的时候,由于思维混乱,继承乱用,以致真个程序一片混乱,运行不出,且外加几十个错误警告。
经过回顾自己先前写的流程图,本人得到了很大的顿悟。
关系捋清楚了,思路也豁然开朗了,下笔如有神。
遇到的难关2.五种职员在计算工资的时候,先前一直查询不到正确的工资数额。
在反复检查、测试的过程中,才发现那些计算公式,继承没有问题,问题出在查询的那个函数忘记将重新计算工资的公式写上。
所以一直显示的是employee的工资数,而不是各个职位员工的工资数。
遇到的难关3.在增加清屏这一功能时,本以为这很简单。
可在具体操作时,才发现,这也考验一个人思维逻辑的严谨。
曾设想,为了不泄密,将清屏这一函数放在查询函数后。
结果没想到,这导致测试时:工资信息一显示,立刻被擦掉,根本来不及看的窘境。
存在的不足1.本程序设计上还有明显的不妥,就是查询工资信息的时候,要求输入的仅仅为用户姓名。
由于还是英语输入,难免有同名同姓的状况出现,容易混乱与出错,还需改进。
存在的不足2.原本思路是将程序分为两个入口:管理员入口和职员入口。
管理员入口:需要输入通行账户和密码。
进入后,有两个功能——输入所有职工信息(编号、姓名、岗位、月份、业绩奖励等等基本信息)和数据备份。
职员入口:则面向所有员工。
进入后,只有一个功能——根据自己的名字和编号查询自己的工资等信息。