职工工资管理系统设计课程设计含源代码

合集下载

c语言课程设计职工工资管理系统源代码

c语言课程设计职工工资管理系统源代码

绝对可以完美运行,下面有运行图片#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);}下面是实验结果。

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

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

工资管理系统毕业设计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多年历史的老厂。

c语言课程设计+报告+源代码

c语言课程设计+报告+源代码

西安郵電大學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语言课程设计---职工工资管理系统

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

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程序功能介绍该系统能够实现工资信息管理。

系统包括录入,浏览,查询,统计等功能。

其中录入功能要求能够添加新的工资信息到文件;浏览功能要求能按照工资卡号,姓名分类浏览,提供分屏显示;有排序功能,排序后按照工资卡号升序或实发工资降序输出;查询功能要求能够按照工资卡号,姓名查询;统计功能要求能够按照月份累计统计某职工在某时间段实发工资总金额。

数据库课程设计—企业工资管理系统(java版+完整代码)经典.doc

数据库课程设计—企业工资管理系统(java版+完整代码)经典.doc

课程设计报告企业工资管理系统姓名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位小数,即是精确到分的计算。

java课程设计职工工资管理系统模板

java课程设计职工工资管理系统模板

java课程设计职工工资管理系统1苏州科技学院电子信息实验中心面向对象技术课程设计报告--职工工资管理系统专业年级计算机科学与技术班级计算机1422学号姓名宋正伟成绩指导教师张宗杰年 4月2一.引言1.1项目的名称职工工资信息管理系统1.2项目背景和目标职工工资信息管理系统主要能够对职工个人信息进行管理, 对职工用户提供个人信息查询, 工资查询等, 对管理用户提供增加, 修改, 删除员工信息等操作。

我们的目标就是为该系统提供后台连接数据库程序设计以及前台用户界面设计。

1.3项目的可行性研究设计此系统需要Java面向对象编程基础, 数据库应用知识以及功能分析。

根据当前所开设的课程, 学生已经具备了这样的知识, 有能力综合Java编程知识和数据库应用知识做出一个这样的职工工资信息管理系统。

二.需求分析2.1 系统概述此系统提供给公司职工和管理者使用, 职工登陆后能够对自己的信息进行查询, 管理者登陆后能够对职工的信息进行修改, 增加, 删除等操作。

2.2系统运行环境Java程序运行在eclipse软件上编译而且运行, 数据库用MYSQL数据库3三.系统设计3.1 开发与设计的总体思想职工方面: 职工能够经过自己的职工号和密码登陆后, 进入职工主界面, 在这个主界面里, 职工能够进行信息查询操作。

管理员方面: 管理员经过自己的密码登陆后能够选择: 查询功能, 修改功能。

在查询功能里, 能够选择查询职工个人信息或者工资情况。

在修改功能里, 能够选择对职工的信息进行增加, 删除和修改操作。

3.2 系统模块结构图3.3 数据库结构设计为了支持此职工档案管理系统, 创立数据库employeemanage,在这个数据库里包含三个表: worker表, manager表, employee表, 它们的截图如下:在worker表中, 有八个属性列, 分别为: id(职工号),wname(姓名),age(年龄),sex(性别),number(电话),salary(工资),dept(部门)。

javaMySql数据库课程设计(员工工资管理系统)

javaMySql数据库课程设计(员工工资管理系统)

Java MySql数据库课程设计 - 员工工资管理系统1. 引言在现代企业中,员工工资管理是一项非常重要的任务。

合理管理员工工资不仅可以激励员工的积极性,还可以提高企业的运营效率。

为了更好地管理员工工资,我们决定设计一个员工工资管理系统,使用Java编程语言与MySql数据库进行开发。

2. 功能需求该员工工资管理系统将包含以下功能模块: - 员工信息管理:包括添加员工、删除员工、查看员工信息、修改员工信息等功能。

- 工资管理:包括录入员工工资、计算员工工资、查询员工工资等功能。

- 统计分析:包括统计部门工资总和、统计员工工资平均值等功能。

3. 技术选型为了实现上述功能需求,我们选择使用Java编程语言与MySql数据库进行开发。

以下是我们选择这些技术的原因: - Java是一种面向对象的编程语言,具有良好的可读性和可维护性,适合开发大型项目。

- MySql是一种关系型数据库管理系统,具有高性能和可扩展性,适合处理大量的数据。

4. 数据库设计4.1 数据表设计我们将设计两个数据表来存储员工信息和工资信息。

4.1.1 员工信息表字段名称数据类型说明id int员工IDname varchar员工姓名age int员工年龄gender varchar员工性别department varchar员工部门4.1.2 工资信息表字段名称数据类型说明id int工资IDemployee_id int员工IDmonth varchar月份salary decimal工资金额4.2 数据库查询语句以下是一些常用的数据库查询语句,用于实现系统功能模块:4.2.1 添加员工INSERT INTO employee (id, name, age, gender, d epartment)VALUES (1001, '张三', 25, '男', '技术部');4.2.2 删除员工DELETE FROM employee WHERE id=1001;4.2.3 查看员工信息SELECT*FROM employee;4.2.4 修改员工信息UPDATE employee SET age =26WHERE id=1001;4.2.5 录入员工工资INSERT INTO salary (id, employee_id, month, sa lary)VALUES (1, 1001, '2021-01', 5000);4.2.6 计算员工工资SELECT SUM(salary) FROM salary WHERE employee_ id =1001;4.2.7 查询员工工资SELECT*FROM salary;4.2.8 统计部门工资总和SELECT department, SUM(salary) FROM employee JOIN salary ON employee.id= salary.employee_id GROUP BY department;4.2.9 统计员工工资平均值SELECT employee_id, AVG(salary) FROM salary GROUP BY employee_id;5. 系统架构为了提高系统的扩展性和灵活性,我们将采用三层架构来设计该员工工资管理系统。

员工工资管理系统源代码

员工工资管理系统源代码

#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(”职工信息。

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语言课程设计报告 职工工资管理系统

一.设计需求说明一、职工工资管理系统功能设计要求1. 输入记录:将每一个职工的姓名、ID 号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。

•该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。

2. 显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。

3. 修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。

4.查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。

5. 删除记录:可删除数据文件中的任一记录。

6.恢复记录:能恢复被删除的任一记录。

7. 统计: (A) 计算各项工资平均工资及总工资, (B)•统计符合指定条件(如职工工资前三项之和在2000 元以上、2000~1500 元、1500~1000 元) 以内的工资职工人数及占总职工人数的百分比。

(C)按字符表格形式打印全部职工工资信息表及平均工资(•包括各项总的平均工资)。

8.保存数据文件功能。

9.打开数据文件功能。

经过逐层逐块、不断细化、求精过程,编写程序并进行测试、验证,可以逐个模块地分开调试,并通过文件包含或用工程文件的形式进行逐步联合调试。

程序运行结果如下表所示(记录个数至少8 个)。

二.模块设计分析系统功能模块图:工作程序分析①输入:输入职工工资资料通过结构体的数组来进行操作,先头定义数组em[],先输入需要输入的职工人数m,然后进入循环,每次循环将各项输入结构体数组对应项的对应成员中,当循环次数等于人数时,完成全部员工的资料输入,退出循环。

同时将数据储存在ckerk_list文件中并自动保存至磁盘。

注:如首次使用,尚未输入数据,请先输入数据。

输入的数据将自动保存。

再次选择输入功能时原数据将被覆盖。

②保存:将输入的资料存入磁盘读取文件clerk_list,若文件不存在,打印“打开失败并退出。

若存在,则通过循环语句将输入到结构体数组的数据逐个输入磁盘。

程序设计基础课程设计报告(c语言实现附源码)(员工工资管理系统)

程序设计基础课程设计报告(c语言实现附源码)(员工工资管理系统)

《程序设计基础》课程设计报告题目: 员工工资管理系统院(系): 信息科学与工程学院专业班级:学生姓名:学号:指导教师:20 16 年 12 月 12 日至20 16 年 12 月 23 日武昌首义学院制程序设计基础课程设计任务书目录1需求与总体设计 (1)2详细设计 (1)3编码实现 (4)4运行结果 (21)总结 (24)1需求与总体设计1.1需求描述设计一个利用文件处理方式实现对员工工资(包括员工编号、员工姓名、年月、岗位工资、奖金、扣款和实发)进行管理,具有增加数据、更新数据、查询数据、删除数据、列表显示数据以及重组文件的功能。

1。

2总体设计先以登陆函数登陆,再进入主菜单,菜单中显示各个要实现的操作,以菜单将各个函数联系起来,对菜单操作以实现系统的目的.1。

3数据结构struct user //登陆者信息{char un[10];char up[10];}us[3] = { "aaa","111",”bbb”,”222",”ccc",”333" };struct yg //员工结构体{short zt; //数据状态long bh; //编号char name[20]; //名字char time[11]; //时间long money; //基本工资long jj; //奖金long kk; //扣款long sf; //实发工资};整个程序只运用了结构体的数据结构,结构体运用于登陆者信息和员工信息,将员工信息封装在一个结构体里,再创建结构体数组,将多个员工信息储存在结构体数组中。

2详细设计2.1 系统功能设计主函数和子函数:系统包含一个主函数,和子函数,分别有登陆子函数,菜单子函数,增加数据子函数,更新数据子函数,查询数据子函数,删除数据子函数,统计数据子函数,重组文件子函数,排序数据子函数,最后两个分别是读取文件和写入文件子函数。

vb课程设计职工工资管理系统代码

vb课程设计职工工资管理系统代码

Form1:Dim errorCount As IntegerPrivate Sub Command1_Click()If Text1.Text = "system" And Text2.Text = "1234" ThenLoad Form2Form2.ShowMe.HideMsgBox "登陆成功,欢迎您进入职工工资管理系统", vbInformation, "登陆成功"ElseerrorCount = errorCount + 1If errorCount < 3 ThenMsgBox "用户名或密码错误(第" & errorCount & "次)!", vbOKOnly + vbExclamation, "登陆失败"Text1.SetFocusEnd IfIf errorCount >= 3 ThenText1.Enabled = FalseText2.Enabled = FalseCommand1.Enabled = FalseMsgBox "三次输入用户名或密码错误,程序将自动退出!", vbOKOnly + vbExclamation, "登陆失败"EndEnd IfEnd IfEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()errorCount = 0End SubPrivate Sub Form_Unload(Cancel As Integer)If MsgBox("是否要退出程序?", vbYesNo, "退出提示") = vbNo ThenCancel = 1End IfEnd Sub- 1 -Form2:Dim filedir As StringPrivate Sub Command1_Click()CommonDialog1.ShowOpenjlNum = 0If Len(Trim(CommonDialog1.FileName)) > 0 Then filedir = CommonDialog1.FileNameOpen CommonDialog1.FileName For Input As #1 Do While Not EOF(1)Line Input #1, aIf Len(Trim(a)) > 0 ThenjlNum = jlNum + 1End IfLoopClose #1ReDim Preserve ygList(jlNum) As YuanGongjlNum = 0Open CommonDialog1.FileName For Input As #1Do While Not EOF(1)jlNum = jlNum + 1Input #1, ygList(jlNum).ygnamgInput #1, ygList(jlNum).jibengzInput #1, ygList(jlNum).jingtieInput #1, ygList(jlNum).gerensuiInput #1, ygList(jlNum).suidianfeiLoopClose #1Text1.Text = "姓名" & vbTab & "工资" & vbTab & "津贴" & vbTab & "所得税" & vbTab & "水电费" & vbCrLfFor i = 1 To jlNumText1.Text = Text1.Text & ygList(i).ygnamg & vbTab & ygList(i).jibengz & vbTab & ygList(i).jingtie & vbTab & ygList(i).gerensui & vbTab & ygList(i).suidianfei & vbCrLfNextCommand2.Enabled = TrueCommand3.Enabled = FalseCommand4.Enabled = FalseCommand5.Enabled = TrueCommand6.Enabled = TrueEnd SubPrivate Sub Command2_Click()For i = 1 To jlNumygList(i).shifagongzi = (CSng(ygList(i).jibengz) + CSng(ygList(i).jingtie) - ygList(i).gerensui -CSng(ygList(i).suidianfei))NextloadDataCommand3.Enabled = TrueCommand4.Enabled = TrueEnd SubPrivate Sub Command3_Click()Dim zuiDa As IntegerDim linShi As YuanGongzuiDa = 1Dim shifoujiaohuan As BooleanFor y = 1 To UBound(ygList)shifoujiaohuan = FalsezuiDa = yFor x = y To UBound(ygList)If ygList(x).shifagongzi < ygList(zuiDa).shifagongzi Then zuiDa = xshifoujiaohuan = TrueEnd IfNextIf shifoujiaohuan ThenlinShi.ygnamg = ygList(y).ygnamgygList(y).ygnamg = ygList(zuiDa).ygnamgygList(zuiDa).ygnamg = linShi.ygnamglinShi.jibengz = ygList(y).jibengzygList(y).jibengz = ygList(zuiDa).jibengzygList(zuiDa).jibengz = linShi.jibengzlinShi.jingtie = ygList(y).jingtieygList(y).jingtie = ygList(zuiDa).jingtieygList(zuiDa).jingtie = linShi.jingtielinShi.gerensui = ygList(y).gerensuiygList(y).gerensui = ygList(zuiDa).gerensuiygList(zuiDa).gerensui = linShi.gerensuilinShi.suidianfei = ygList(y).suidianfeiygList(y).suidianfei = ygList(zuiDa).suidianfei ygList(zuiDa).suidianfei = linShi.suidianfei linShi.shifagongzi = ygList(y).shifagongziygList(y).shifagongzi = ygList(zuiDa).shifagongzi ygList(zuiDa).shifagongzi = linShi.shifagongziEnd IfNextloadDataEnd SubPrivate Sub Command4_Click()Dim zuishao As IntegerDim linShi As YuanGongzuishao = 1Dim shifoujiaohuan As BooleanFor y = 1 To UBound(ygList)shifoujiaohuan = Falsezuishao = yFor x = y To UBound(ygList)If ygList(x).shifagongzi > ygList(zuishao).shifagongzi Then zuishao = xshifoujiaohuan = TrueEnd IfNextIf shifoujiaohuan ThenlinShi.ygnamg = ygList(y).ygnamgygList(y).ygnamg = ygList(zuishao).ygnamgygList(zuishao).ygnamg = linShi.ygnamglinShi.jibengz = ygList(y).jibengzygList(y).jibengz = ygList(zuishao).jibengzygList(zuishao).jibengz = linShi.jibengzlinShi.jingtie = ygList(y).jingtieygList(y).jingtie = ygList(zuishao).jingtieygList(zuishao).jingtie = linShi.jingtielinShi.gerensui = ygList(y).gerensuiygList(y).gerensui = ygList(zuishao).gerensui ygList(zuishao).gerensui = linShi.gerensui linShi.suidianfei = ygList(y).suidianfeiygList(y).suidianfei = ygList(zuishao).suidianfei ygList(zuishao).suidianfei = linShi.suidianfeilinShi.shifagongzi = ygList(y).shifagongziygList(y).shifagongzi = ygList(zuishao).shifagongziygList(zuishao).shifagongzi = linShi.shifagongziEnd IfNextloadDataEnd SubPrivate Sub Command5_Click()Dim linShi As YuanGonglinShi.ygnamg = InputBox("请输入要添加的姓名", "添加员工-姓名录入")If Len(Trim(linShi.ygnamg)) > 0 ThenlinShi.jibengz = InputBox("请输入添加员工的基本工资", "添加员工-基本工资录入")If Len(Trim(linShi.jibengz)) > 0 ThenlinShi.jingtie = InputBox("请输入添加员工的津贴", "添加员工-津贴录入")If Len(Trim(linShi.jingtie)) > 0 ThenlinShi.gerensui = InputBox("请输入添加员工的个人所得税", "添加员工-个税录入")If Len(Trim(linShi.gerensui)) > 0 ThenlinShi.suidianfei = InputBox("请输入添加员工的水电费", "添加员工-水电费录入")If Len(Trim(linShi.suidianfei)) > 0 ThenOpen filedir For Append As #1Write #1, linShi.ygnamg; linShi.jibengz; linShi.jingtie;linShi.gerensui; linShi.suidianfeiClose #1MsgBox "添加员工成功!", vbOKOnly + vbInformation, "成功"jlNum = 0If Len(Trim(filedir)) > 0 ThenOpen filedir For Input As #1Do While Not EOF(1)Line Input #1, aIf Len(Trim(a)) > 0 ThenjlNum = jlNum + 1End IfLoopClose #1ReDim Preserve ygList(jlNum) As YuanGong jlNum = 0Open filedir For Input As #1Do While Not EOF(1)jlNum = jlNum + 1Input #1, ygList(jlNum).ygnamgInput #1, ygList(jlNum).jibengzInput #1, ygList(jlNum).jingtieInput #1, ygList(jlNum).gerensuiInput #1, ygList(jlNum).suidianfeiLoopClose #1Command2.Enabled = TrueCommand3.Enabled = FalseCommand4.Enabled = FalseCommand5.Enabled = TrueCommand6.Enabled = TrueEnd IfText1.Text = "姓名" & vbTab & "工资" & vbTab & "津贴" & vbTab & "所得税" & vbTab & "水电费" & vbCrLfFor i = 1 To jlNumText1.Text = Text1.Text & ygList(i).ygnamg & vbTab &ygList(i).jibengz & vbTab & ygList(i).jingtie & vbTab &ygList(i).gerensui & vbTab & ygList(i).suidianfei & vbCrLf NextElseMsgBox "添加员工失败!", vbOKOnly + vbExclamation, "失败"End IfElseMsgBox "添加员工失败!", vbOKOnly + vbExclamation, "失败"End IfElseMsgBox "添加员工失败!", vbOKOnly + vbExclamation, "失败"End IfElseMsgBox "添加员工失败!", vbOKOnly + vbExclamation, "失败"End IfElseMsgBox "添加员工失败!", vbOKOnly + vbExclamation, "失败"End IfEnd SubPrivate Sub Command6_Click()Dim str As Stringstr = InputBox("请输入要删除的员工名字", "删除员工信息")If Len(Trim(str)) > 0 ThenOpen filedir For Output As #1For i = 1 To jlNumIf str <> ygList(i).ygnamg ThenWrite #1, ygList(i).ygnamg; ygList(i).jibengz; ygList(i).jingtie; ygList(i).gerensui; ygList(i).suidianfeiEnd IfNextClose #1MsgBox "删除员工成功!", vbOKOnly + vbInformation, "成功" jlNum = 0If Len(Trim(filedir)) > 0 ThenOpen filedir For Input As #1Do While Not EOF(1)Line Input #1, aIf Len(Trim(a)) > 0 ThenjlNum = jlNum + 1End IfLoopClose #1ReDim ygList(jlNum) As YuanGongjlNum = 0Open filedir For Input As #1Do While Not EOF(1)jlNum = jlNum + 1Input #1, ygList(jlNum).ygnamg Input #1, ygList(jlNum).jibengz Input #1, ygList(jlNum).jingtie Input #1, ygList(jlNum).gerensui Input #1, ygList(jlNum).suidianfei LoopClose #1loadDataCommand2.Enabled = TrueCommand3.Enabled = False Command4.Enabled = False Command5.Enabled = TrueCommand6.Enabled = TrueEnd IfText1.Text = "姓名" & vbTab & "工资" & vbTab & "津贴" & vbTab & "所得税" & vbTab & "水电费" & vbCrLfFor i = 1 To jlNumText1.Text = Text1.Text & ygList(i).ygnamg & vbTab &ygList(i).jibengz & vbTab & ygList(i).jingtie & vbTab &ygList(i).gerensui & vbTab & ygList(i).suidianfei & vbCrLf NextElseMsgBox "删除员工失败!", vbOKOnly + vbExclamation, "失败"End IfEnd SubPrivate Sub Command7_Click()Unload MeEnd SubPrivate Sub Form_Load()Command2.Enabled = FalseCommand3.Enabled = FalseCommand4.Enabled = FalseCommand5.Enabled = FalseCommand6.Enabled = FalseEnd SubPrivate Sub Form_Unload(Cancel As Integer)If MsgBox("是否要退出程序?", vbYesNo, "退出提示") = vbNo ThenCancel = 1ElseMsgBox "感谢您使用职工工资管理系统", vbInformationEndEnd IfEnd SubPrivate Sub loadData()Text1.Text = "姓名" & vbTab & "工资" & vbTab & "津贴" & vbTab & "所得税" & vbTab & "水电费" & vbTab & "实发工资" & vbCrLfFor i = 1 To jlNumText1.Text = Text1.Text & ygList(i).ygnamg & vbTab &ygList(i).jibengz & vbTab & ygList(i).jingtie & vbTab &ygList(i).gerensui & vbTab & ygList(i).suidianfei & vbTab &ygList(i).shifagongzi & vbCrLfNextEnd SubModule 1:Public Type YuanGong ygnamg As Stringjibengz As Integerjingtie As Integergerensui As Single suidianfei As Integer shifagongzi As SingleEnd TypePublic jlNum As Integer Public ygList() As YuanGong。

c语言课程设计职工工资管理系统源代码word文档

c语言课程设计职工工资管理系统源代码word文档

绝对可以完美运行,下面有运行图片#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语言职工工资管理系统代码

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("未找到对应的员工信息。

职工工资管理系统设计与源代码

职工工资管理系统设计与源代码

职工工资管理系统一、设计目标:按照软件工程的规范,以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是针对ACCESS200环境的,对于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是针对ACCESS200环境的,对于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;Data Source=worker.mdb","","",adModeUnknown);/// 连接数据库///上面一句中连接字串中的Provider是针对ACCESS200环境的,对于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是针对ACCESS200环境的,对于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;Data Source=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_fangtie+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;Data Source=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_fangtie+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{创建Connection 对hr =m_pConnection.CreateInstance("ADODB.Connection");// 象if(SUCCEEDED(hr)){hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=worker.mdb","","",adModeU nkn ow n);}}catch(_com_error e) // 捕捉异常{ _CStri ng errormessage;errormessage.Format(” 连接数据库失败!\r\n 错误信息:%s",e.ErrorMessage()); AfxMessageBox(errormessage); // 显示错误信息}m_pSet->MoveFirst();float sum=0;while(!m_pSet->lsEOF()){ _sum=sum+m_pSet->m_shifa; m_pSet->MoveNext();}CStri ng stri ng;stri ng.Format("%f",sum);MessageBox(string,"统计当月支出",MB_OKCANCEL); }五、测试及结果分析(a)在此前端主界面下查看后台数据库中员工的基本信息。

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

设计题目职工工资管理系统设计xxx技术学院课程设计任务书二、对课程设计成果的要求(包括课程设计说明书、图纸、图表、实物等软硬件要求)(1)分析职工工资管理系统程序结构: 画出程序粗略的流程图和各个模块的详细流程图,每个功能模块用文字说明他们的功能(与对应流程图放在一起);(2)对你已经实现的功能(修改的、新编写的)做详细的说明, 并附上流程图及程序清单。

(3)自己对该职工工资管理系统的进一步设想;(4)对于有设想但最终未实现的功能的大致编程思路的阐述;(5)论述在设计过程中遇到的并且对你具有启发性的问题。

(6)严禁抄袭,发现雷同,双方扣分。

三、课程设计工作进度计划:周一、二:教师布置任务,讲解本课设模块。

画出主程序粗略的流程图和各个模块的详细流程图。

设计程序及调试程序。

周三、四:设计程序及调试程序。

同时着手写报告。

周五:完成设计,提交报告,接受教师考评。

四、主要参考资料(1)《面向对象程序设计》,郑莉,清华大学出版社,(2)《面向对象程序设计C++语言》,朱战立等编西安电子科技大学出版社(3)《面向对象程序设计----Visual C++》,刘斌等编, 清华大学出版社(4)《面向对象程序设计----C++语言描述》, Richard Johnsonbaugh(美)等著,蔡宇辉等译,机械工业出版社,2003目录1 概述: (5)1.1 基本功能 (5)1.2 拓展功能 (5)2 课题分析 (6)2.1 类的设计 (6)2.2类的实现 (6)3 详细设计说明 (7)3.1 程序主界面 (7)3.2 方案 (7)3.3 程序描述(输入INPUT) (9)4 课程设计总结 (12)5 软件使用说明 (12)6 附录(参考文献,原代码:) (13)6.1 参考文献: (13)6.2 原代码 (13)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(){ Array 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 程序主界面图表 1主菜单目录3.2 方案在明确了整个程序基本的功能目的后,接着,便是思考如何具体实现:输入用户信息,包括编号、姓名和职务 从已输入的职工信息文件中获取职工的信息调用不同的处理程序进行查询,职员信息将结果存档开始开始问题1:存入的数据放在哪里?const int n1=1,n2=1,n3=1,n4=1,n5=1; /*定义公司各类职工人数(可修改)(n1:技术员人数;n2:经理人数;n3:销售员人数;n4:销售经理人数 )*/事先设定好可修改的全局变量。

然后确定好全局对象数组。

如此便可以按照所需存入员工信息问题派生类派生类派生类派生类基类派生类问题个菜单关系?(输入职员信息菜单、目录菜单)让目录菜单作为主菜单,输入职员信息的菜单成为二级菜单。

并运用清屏的功能,及时清除输入的职员信息,作为一种安全保护。

3.3 程序描述(输入input)* 由主菜单选择进入“1”的数据输入菜单,进行数据输入(进入二级菜单后会自动清屏)。

图表2子菜单(程序中的menu 3)* 根据需要选择输入要输入的职员信息。

(只需按照中文提示,依次输入英语或数字信息)图表3子菜单中选择输入技术经理信息的一个状态* 一个职员的信息全部输入完成后,会自动清屏,回到“财务部门输入数据系统”主菜单图表 4 子菜单* 以此类推,随意输入你要输入的职员信息。

若输入全部完成,可以回到主菜单* 然后,在主菜单中选择数据查询,可以根据你填入的职工姓名,查到他的所有信息图表 5 由主菜单选择查询一操作时,反馈信息的状态* 也可选择数据备份,会自动清屏。

并让所有已输入过的职工信息,全打印在所在磁盘的一个txt文档里。

图表 6 由主菜单选择数据备份一操作后的状态* 如果想要退出系统,可以选择主菜单的退出系统,选择过后,会清屏,显示以下界面,警告用户,是否真的要推出。

图表7 选择主菜单退出系统一操作后的状态4课程设计总结通过此次面向对象程序设计的实践课程学习,本人受益匪浅。

经过一系列的编程,本人更加体会到纸上得来终觉浅,绝知此事要躬行。

实践是检验真理的唯一标准。

这两句话说的真切。

遇到的难关1.在编写销售经理的类的时候,由于思维混乱,继承乱用,以致真个程序一片混乱,运行不出,且外加几十个错误警告。

经过回顾自己先前写的流程图,本人得到了很大的顿悟。

关系捋清楚了,思路也豁然开朗了,下笔如有神。

遇到的难关2.五种职员在计算工资的时候,先前一直查询不到正确的工资数额。

在反复检查、测试的过程中,才发现那些计算公式,继承没有问题,问题出在查询的那个函数忘记将重新计算工资的公式写上。

所以一直显示的是employee的工资数,而不是各个职位员工的工资数。

遇到的难关3.在增加清屏这一功能时,本以为这很简单。

可在具体操作时,才发现,这也考验一个人思维逻辑的严谨。

曾设想,为了不泄密,将清屏这一函数放在查询函数后。

结果没想到,这导致测试时:工资信息一显示,立刻被擦掉,根本来不及看的窘境。

存在的不足1.本程序设计上还有明显的不妥,就是查询工资信息的时候,要求输入的仅仅为用户姓名。

由于还是英语输入,难免有同名同姓的状况出现,容易混乱与出错,还需改进。

存在的不足2.原本思路是将程序分为两个入口:管理员入口和职员入口。

管理员入口:需要输入通行账户和密码。

进入后,有两个功能——输入所有职工信息(编号、姓名、岗位、月份、业绩奖励等等基本信息)和数据备份。

职员入口:则面向所有员工。

进入后,只有一个功能——根据自己的名字和编号查询自己的工资等信息。

可是由于实际精力有限,时间的不足。

只能不分入口,直接将所有功能放在一个界面内——主菜单内。

这样不能很好的起到原先设想的保护功能。

实乃缺失。

总之,这不到一周的实践课,让本人的对于知识的应用能力有了显著的提升。

本人也明白了,想要真正会编程,就要课后下功夫,多“实战”。

这样的进步才更大。

5软件使用说明1.主菜单中,先输入1,按回车。

进入输入数据职员的菜单界面。

2.按文字提示信息,依次输入5种职员的各个信息。

EG:编号姓名职位101 zhao techmanager202 qian technician303 sun salesman404 li manager505 zhou secretary3.输入完毕后,输入0,按回车。

再次回到主菜单。

4.输入2,按回车。

可以输入你想查看的职工姓名,按回车,查看其信息。

5.输入3,按回车。

可以将所有职工的信息,做成文本。

6.输入0,按回车。

可以通过输入y或n选择,是否退出程序。

友情提示:1.由于语言局限,输入的信息仅限26个字母和阿拉伯数字。

2.自动清屏是出于对雇员信息的保护和界面整洁。

并非出错,请勿恐慌。

3.备份资料时,电脑发出的“滴”的警报声,只是提示用户,备份已完成。

6附录(参考文献,原代码:)6.1 参考文献:(1)《面向对象程序设计》,郑莉,清华大学出版社,(2)《面向对象程序设计C++语言》,朱战立等编西安电子科技大学出版社(3)《面向对象程序设计----Visual C++》,刘斌等编, 清华大学出版社(4)《面向对象程序设计----C++语言描述》, Richard Johnsonbaugh(美)等著,蔡宇辉等译,机械工业出版社,20036.2原代码#INCLUDE<FSTREAM>#INCLUDE<IOSTREAM>#INCLUDE<STRING>#INCLUDE<IOMANIP>#INCLUDE<STDLIB.H>USING NAMESPACE STD;//常变量(供修改用):CONST INT N1=1,N2=1,N3=1,N4=1,N5=1;/*定义公司各类职工人数(可修改)(N1:技术员人数;N2:经理人数;N3:销售员人数;N4:销售经理人数)*/CONST DOUBLE M_SALARY=6000;//经理固定月工资CONST DOUBLE HOURPAY=35;//技术员小时工资CONST DOUBLE BASICPAY=6000;//销售经理的底薪CONST DOUBLE SECRETARYPAY =4000;//文秘的底薪CONST DOUBLE S_PROPORTION=5.0/100;//销售员的工资提成比例CONST DOUBLE SM_PROPORTION=2.0/100;//销售经理的提成比例DOUBLE SOLD_AMOUNT;//声明部分:VOID MENU();//主菜单(1/2/3/0)VOID MENU3();//数据打印二级菜单(1/2/3/4/5/0)VOID DATA_INPUT();//数据输入函数DOUBLE SM_SALARY();//销售经理工资计算VOID DATA_FIND();//数据查询VOID DATA_SAVE();//数据备份(做到TXT中)VOID CLEAR();OFSTREAM OUTFILE;//打开磁盘文件流对象STRING F_NAME;//全局变量(查询用)//定义类:CLASS E MPLOYEE //雇员类(基类){PUBLIC:VOID INPUT()//数据输入函数{COUT<<"编号:";CIN>>NUM;COUT<<"其姓名:";CIN>>NAME;COUT<<"职位:";CIN>>STATUS;COUT<<"月份:";CIN>>MONTH;}VOID PRINT()//打印数据函数{COUT<<"编号\T姓名\T职位\T\T月份\T工资"<<ENDL;COUT<<NUM<<"\T"<<NAME<<"\T"<<STATUS<<"\T"<<MONTH<<"\T"<<PAY<<ENDL; }VOID FIND()//查询函数{IF(F_NAME==NAME ){PRINT();COUT<<ENDL;}}VOID SAVE()//备份数据函数{OUTFILE<<NUM<<"\T"<<NAME<<"\T"<<STATUS<<"\T"<<MONTH<<"\T"<<PAY<<ENDL; }PROTECTED:INT NUM;//职工号STRING NAME;//职工姓名STRING STATUS;//职工职位INT MONTH;//工资月份DOUBLE PAY;//职工工资};CLASS T ECHNICIAN:PUBLIC E MPLOYEE //技术员类(公有继承){PUBLIC:VOID INPUT(){COUT<<"技术员的";E MPLOYEE::INPUT();COUT<<"工作时间:";CIN>>WORKTIME;}VOID PRINT(){ PAY=WORKTIME*HOURPAY;E MPLOYEE::PRINT();}VOID FIND(){PAY=WORKTIME*HOURPAY;E MPLOYEE::FIND();}VOID SAVE(){ PAY=WORKTIME*HOURPAY;E MPLOYEE::SAVE();}PROTECTED:DOUBLE WORKTIME;//工作时间(小时)};CLASS M ANAGER:PUBLIC E MPLOYEE //技术经理类{PUBLIC:VOID INPUT(){COUT<<"技术经理的";E MPLOYEE::INPUT();COUT<<"业绩奖励(输入金额数:1000、2000或3000):"; CIN>>M_EXPAY;}VOID PRINT(){ PAY=M_SALARY+M_EXPAY;E MPLOYEE::PRINT();}VOID FIND(){ PAY=M_SALARY+M_EXPAY;E MPLOYEE::FIND();}VOID SAVE(){ PAY=M_SALARY+M_EXPAY;E MPLOYEE::SAVE();}PROTECTED:INT M_EXPAY;};CLASS S ELL_M ANAGER:PUBLIC E MPLOYEE //销售经理类{PUBLIC:VOID INPUT(){ COUT<<"销售经理的";E MPLOYEE::INPUT();}INT SM_NUMBER()//调用销售经理职工号{RETURN NUM;}STRING SM_NAME()//调用销售经理姓名{RETURN NAME;}VOID PRINT(){ PAY=BASICPAY+SOLD_AMOUNT*SM_PROPORTION;COUT<<"编号\T姓名\T职位\T\T月份\T工资"<<ENDL;COUT<<NUM<<"\T"<<NAME<<"\T"<<STATUS<<"\T\T"<<MONTH;}VOID SAVE(){PAY=BASICPAY+SOLD_AMOUNT*SM_PROPORTION;OUTFILE<<NUM<<"\T"<<NAME<<"\T"<<STATUS<<"\T\T"<<MONTH; }VOID FIND(){IF(F_NAME==NAME ){PRINT();COUT<<ENDL;}}};CLASS S ELLER:PUBLIC E MPLOYEE //销售员类{PUBLIC:S ELLER(){ SOLD_AMOUNT=0;}//构造函数,销售额初始化为0VOID INPUT(){COUT<<"销售员的";E MPLOYEE::INPUT();COUT<<"销售额:";CIN>>SOLD_AMOUNT;COUT<<"所属销售经理的编号:";CIN>>NU;}VOID PRINT(){ PAY=SOLD_AMOUNT*S_PROPORTION;COUT<<NUM<<"\T"<<NAME<<"\T"<<STATUS<<"\T"<<MONTH<<"\T"<<PAY<<"\T"<<NU<<ENDL;}INT S_NUMBER()//调用销售员所属销售经理职工号{RETURN NU;}DOUBLE AMOUNT()//调用销售员销售额{RETURN SOLD_AMOUNT;}VOID FIND(){ IF(F_NAME==NAME){COUT<<"编号\T姓名\T职位\T\T月份\T工资\T所属部门经理编号"<<ENDL; PRINT();}}VOID SAVE(){ PAY=SOLD_AMOUNT*S_PROPORTION;OUTFILE<<NUM<<"\T"<<NAME<<"\T"<<STATUS<<"\T"<<MONTH<<"\T"<<PAY<<"\T\T"<<NU<<ENDL;}PROTECTED:DOUBLE SOLD_AMOUNT;//销售额INT NU;//所属销售经理职工号};CLASS S ECRETARY:PUBLIC E MPLOYEE //文秘类{PUBLIC:VOID INPUT(){COUT<<"文秘的";E MPLOYEE::INPUT();COUT<<"附加奖励(输入本月奖金数额):";CIN>>SY_EXPAY;}VOID PRINT(){ PAY=SECRETARYPAY+SY_EXPAY;E MPLOYEE::PRINT();}VOID FIND(){PAY=SECRETARYPAY+SY_EXPAY;E MPLOYEE::FIND();}VOID SAVE(){ PAY=SECRETARYPAY+SY_EXPAY;E MPLOYEE::SAVE();}PROTECTED:INT SY_EXPAY;};//定义全局对象数组T ECHNICIAN T[N1];//技术员M ANAGER M[N2];//经理S ELLER S[N3];//销售员S ELL_M ANAGER SM[N4];//销售经理(下属若干销售员)S ECRETARY SY[N5];//文秘//主函数部分:INT MAIN(){CHAR N;MENU();FOR(INT I=0;I<1000;I++)//设定循环次数(便于各项操作的切换及方便查询){CIN>>N;SWITCH(N){CASE'1'://数据输入CLEAR();COUT<<ENDL<<"您所选操作为数据输入,请继续--"<<ENDL<<ENDL;DATA_INPUT();COUT<<ENDL;MENU();BREAK;CASE'2'://数据查询CLEAR();COUT<<ENDL<<"您所选操作为数据查询,请继续--"<<ENDL<<ENDL;COUT<<"请输入您要查询的职工姓名:";CIN>>F_NAME;COUT<<ENDL<<"--正在查询,请等待--"<<ENDL<<ENDL;COUT<<"您查询的信息如下:"<<ENDL<<ENDL;DATA_FIND();COUT<<ENDL<<ENDL;MENU();BREAK;CASE'3'://数据备份CLEAR();OUTFILE.OPEN("C++程序设计实习.TXT",IOS::OUT);//打开磁盘文件流对象COUT<<ENDL<<"您所选操作为数据备份,请继续--"<<ENDL<<ENDL;OUTFILE<<"职工基本情况一览表如下:"<<'\N'<<ENDL;DATA_SAVE();OUTFILE.CLOSE();COUT<<ENDL<<ENDL;COUT<<'\A'<<"--数据备份完成,请继续--"<<ENDL<<ENDL;MENU();BREAK;CASE'0'://退出系统CLEAR();COUT<<ENDL<<"是否真的要退出系统?"<<ENDL<<ENDL;COUT<<"是( Y )"<<""<<"否( N )";CIN>>N;IF(N=='Y'){ COUT<<'\N'<<"--请按任意键退出系统--"<<ENDL; EXIT(0); COUT<<ENDL;} ELSE MENU();BREAK;DEFAULT:COUT<<ENDL<<"--出错!请重新选择操作!"<<'\N'<<ENDL;MENU();BREAK;}}RETURN 0;}//自定义函数部分:VOID MENU()//菜单函数{COUT<<"★小型公司工资管理系统★"<<ENDL;COUT<<"┌───────────────┐"<<ENDL;COUT<<"│数据输入:1,并按回车键;│"<<ENDL;COUT<<"└───────────────┘"<<ENDL; COUT<<"│数据查询:2,并按回车键;│"<<ENDL; COUT<<"└───────────────┘"<<ENDL; COUT<<"│数据备份:3,并按回车键;│"<<ENDL; COUT<<"└───────────────┘"<<ENDL; COUT<<"│|退出系统:0,并按回车键;|│"<<ENDL; COUT<<"└───────────────┘"<<ENDL; COUT<<"请输入操作序号:";}VOID MENU2()//数据输入二级菜单函数{COUT<<"★★财务部门输入数据系统★★"<<ENDL;COUT<<"┌──────────────────┐"<<ENDL; COUT<<"│技术经理数据输入:1,并按回车键;│"<<ENDL;COUT<<"│技术员数据输入:2,并按回车键;│"<<ENDL;COUT<<"│销售员数据输入:3,并按回车键;│"<<ENDL;COUT<<"│销售经理数据输入:4,并按回车键;│"<<ENDL;COUT<<"│文秘数据输入:5,并按回车键;│"<<ENDL;COUT<<"│返回上一级:0,并按回车键;│"<<ENDL;COUT<<"└──────────────────┘"<<ENDL; COUT<<"请输入操作序号:";}VOID DATA_INPUT()//数据输入函数{CHAR P;INT I;MENU2();FOR(INT J=0;J<100;J++){CIN >> P;IF(P=='0'){CLEAR(); BREAK;}ELSE{SWITCH(P){CASE'1':CLEAR();FOR(I=0;I<N2;I++)M[I].INPUT();//经理COUT<<ENDL<<"-------------------------------------------------------"<<ENDL;CLEA R();MENU2();BREAK;CASE'2':CLEAR();FOR(I=0;I<N1;I++)T[I].INPUT();//技术人员COUT<<ENDL<<"-------------------------------------------------------"<<ENDL;CLEA R();MENU2();BREAK;CASE'3':CLEAR();FOR(I=0;I<N3;I++)S[I].INPUT();//销售员COUT<<ENDL<<"--------------------------------------------------------"<<ENDL;CL EAR();MENU2();BREAK;CASE'4':CLEAR();FOR(I=0;I<N4;I++)SM[I].INPUT();//销售经理COUT<<ENDL<<"---------------------------------------------------------"<<ENDL;C LEAR();MENU2();BREAK;CASE'5':CLEAR();FOR(I=0;I<N5;I++)SY[I].INPUT();//文秘COUT<<ENDL<<"---------------------------------------------------------"<<ENDL;C LEAR();MENU2();BREAK;}}}}DOUBLE SALARY[N4];DOUBLE SM_SALARY()//销售经理工资计算{INT I,J;DOUBLE A ;S ELL_M ANAGER B;FOR(INT K=0;K<N4;K++)SALARY[K]=0;FOR(I=0;I<N4;I++){ DOUBLE SUM=0;FOR(J=0;J<N3;J++)IF(S[J].S_NUMBER()==SM[I].SM_NUMBER()){ SUM=SUM+S[J].AMOUNT();SALARY[I]=SUM*SM_PROPORTION+BASICPAY;}}RETURN 0;}VOID DATA_FIND()//数据查询函数{FOR(INT I=0;I<N1;I++)//查询技术员数据{ T[I].FIND();}FOR(INT I=0;I<N2;I++)//查询技术经理数据{M[I].FIND();}FOR(INT I=0;I<N3;I++)//查询销售员数据S[I].FIND();FOR(INT I=0;I<N4;I++)//查询销售经理的数据IF(F_NAME==SM[I].SM_NAME()){SM[I].PRINT();SM_SALARY();COUT<<SETW(12)<<SALARY[I]<<ENDL;COUT<<ENDL;BREAK;}FOR(INT I=0;I<N5;I++)//查询文秘数据SY[I].FIND();}VOID DATA_SAVE()//数据备份函数{OUTFILE<<ENDL<<"技术员"<<ENDL<<ENDL;//技术员信息OUTFILE<<"编号\T姓名\T职位\T\T月份\T工资"<<ENDL;FOR(INT I=0;I<N1;I++)T[I].SAVE();OUTFILE<<ENDL<<ENDL<<"---------------------------------------------------------------------------"<<ENDL;OUTFILE<<ENDL<<"技术经理"<<ENDL<<ENDL;//经理信息OUTFILE<<"编号\T姓名\T职位\T\T月份\T工资"<<ENDL;FOR(INT I=0;I<N2;I++)M[I].SAVE();OUTFILE<<ENDL<<ENDL<<"----------------------------------------------------------------------------"<<ENDL;OUTFILE<<ENDL<<"销售经理"<<ENDL<<ENDL;//销售经理信息OUTFILE<<"编号\T姓名\T职位\T\T月份\T工资"<<ENDL; FOR(INT I=0;I<N4;I++){ SM[I].SAVE();OUTFILE<<SETW(12)<<SALARY[I]<<ENDL;}OUTFILE<<ENDL<<ENDL<<"----------------------------------------------------------------------------"<<ENDL<<ENDL;OUTFILE<<ENDL<<"销售员"<<ENDL<<ENDL;//销售员信息OUTFILE<<"编号\T姓名\T职位\T\T月份\T工资\T\T所属部门经理编号"<<ENDL;FOR(INT I=0;I<N3;I++)S[I].SAVE();OUTFILE<<ENDL<<ENDL<<"-----------------------------------------------------------------------------"<<'\N'<<ENDL;OUTFILE<<ENDL<<"文秘"<<ENDL<<ENDL;//文秘信息OUTFILE<<"编号\T姓名\T职位\T\T月份\T工资"<<ENDL;FOR(INT I=0;I<N5;I++)SY[I].SAVE();OUTFILE<<ENDL<<ENDL<<"----------------------------------------------------------------------------"<<ENDL;}VOID CLEAR(){ SYSTEM("CLS");}补充:小型公司职员档案(秘!)编号姓名职位101 zhao techmanager202 qian technician303 sun salesman404 li manager505 zhou secretary(注:文档可能无法思考全面,请浏览后下载,供参考。

相关文档
最新文档