加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

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

08/22 13:28
1034
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
实物图
相关方案
  • 方案介绍
  • 相关文件
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

题    目: 职工工资管理

一.程序设计思路

1、设计思路

(1)根据题目要求,应该把职工工资信息用结构体形式输入,在定义一个全局变量和文件指针进行整个程序的运行,然后把职工工资信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;

(2)在程序中需实现职工工资浏览、查询、统计等功能的操作,所以需要建立相应的功能模块来实现;

(3)另外还需要提供键盘式选择菜单实现功能,在运行时达到所要的目的。

2、总体设计

整个系统可以分为信息输入、信息新增、信息浏览、信息排序和信息查询五个主要模块。

3、部分程序设计

1)信息输入

printf("请您输入姓名:");

scanf("%s",p->data.name);

getchar();

printf("请您输入性别(m/f):");

scanf("%s",p->data.sex);

getchar();

printf("请您输入上旬完成(百分比):");

scanf("%f",&p->data.spercent);

getchar();

printf("请您输入中旬完成(百分比):");

scanf("%f",&p->data.zpercent);

getchar();

printf("请您输入下旬完成(百分比):");

scanf("%f",&p->data.xpercent);

getchar();

p->data.totle=p->data.spercent+p->data.zpercent+p->data.xpercent;

p->data.ave=p->data.totle / 3;

if(p->data.totle<100)

{p->data.jiangjin=(p->data.totle-100)*10;}

else p->data.jiangjin=(p->data.totle-100)*10;

//信息输入已经完成

2)浏览模块

调用排序模块的排序功能,可以浏览排序后的所有职工信息。

3)排序模块

排序模块提供菜单选择,实现按照工资卡号升序、实发工资升序排序。排序方法可以选择冒泡排序、插入排序、选择排序等,本系统用的是冒泡排序。

4)查询模块

实现按照编号和姓名的查询,采用基本的查找方法即可。

二.功能模块图

.数据结构设计

系统用将职工各项信息以结构体类型char dir来定义,它包括num,name[15]等不同类型的数据项,同时定义了结构体数组,包括N个数组元素,对应N个职工,每一个元素用来存放一个职工的数据;每个职工的信息以结构体方式从内存和磁盘文件中进行存储和导出。以结构体方式来整合职工的不同信息,将不同的数据组合成一个有机整体,非常方便程序的调用。

四.算法设计

1、主函数

主函数一般设计比较简单,只提供输入、处理和输出部分的函数调用。各功能模块用菜单方式选择。

[流程图]

"

#include "stdlib.h"

#include "string.h"

int shoudsave=0;

char dir[15];

struct member

{

char num[5];//编号

char name[15];

char sex[1];

float spercent;

float zpercent;

float xpercent;

float jiangjin;

float totle;

float ave;

}; //一个结构体

typedef struct node

{

struct member data;//指向结构体的结构体

struct node *next;

}Node,*Link;

void explain()

{printf("=============================关于此程序的操作说明==============================n");

printf("===1>:员工每旬应该完成量为33.3个百分点,输入只输数字部分。n");

printf("===2>:员工每月应该完成量完成量为100个百分点。n");

printf("===3>:员工奖金按其超额总应该完成量(即百分之百)的多少计算。n");

printf("===4>:奖金=(总完成比-1)*1000。n");

printf("===5>:员工底金为1000元。n");

printf("===6>:逻辑删除资料必须在已经保存了先前记录的基础上方可进行。n");

printf("===7>:进行逻辑删除资料后如果保存即变为物理删除。n");

printf("===8>:本程序在c++环境中完成,程序文件扩展名为.c。n");

}

void menu() //菜单

{

printf("********************************************************************************");

printf("t1获取说明信息ttttt 2输入员工资料n");

printf("t3删除员工资料ttttt 4查询员工资料n");

printf("t5修改员工资料ttttt 6显示员工资料n");

printf("t7统计员工业绩ttttt 8排序员工实发工资n");

printf("t9保存员工资料ttttt10逻辑删除员工资料n");

printf("t0退出系统n");

printf("********************************************************************************n");

2各功能模块设计

1 输入模块

struct member

{

char num[5];//编号

char name[15];

char sex[1];

float spercent;

float zpercent;

float xpercent;

float jiangjin;

float totle;

float ave;

}; //一个结构体 [流程图]

}2 浏览模块

[需求分析]

该模块的功能是显示所有职工记录工资信息.

/***************浏览(全部)模块***************/

void browse()   /*浏览模块*/

{

void printf_one(int i);

void printf_face();

int load();

void menu();

int i,n;

n=load();   /*加载记录*/

printf_face();      /*调用显示数据结构项目函数*/

for(i=0;i<n;i++)

{

if((i!=0)&&(i%10==0))   /*目的是分屏显示*/

{printf("nnpress any key to contiune...");

getch();

puts("nn");}

printf_one(i);    /*调用显示一个记录的函数*/

printf("n");

}

printf("t there are %d record.n",n);

printf("n pass any key to back...");

getch();   /*按任意键*/

menu();

}

⑷ 查找模块

该模块的功能是根据输入的职工姓名和卡号查找对应的记录.

[程序]

/***************查找函数***************/

void search()    /*查找模块*/

{

int n,w1;

do

{

puts("ttt1.search by name");

puts("ttt2.search by num");

scanf("%d",&n);

if(n<1||n>2)    /*对选择数字作判断*/

{

w1=1;

getchar();

}

else w1=0;

}

while(w1==1);

switch(n)

{

void search_1();

void search_2();

case 1:search_1();break;

case 2:search_2();break;

}

}

void  search_1()   /*按姓名查找*/

{

int load();

void printf_face();

void menu();

void printf_one(int i);

int i,n,k,w1=1,w2,w3,w4;

struct list s;

n=load();

do

{

do

{

k=-1;

printf("nnenter name that you want to search!    name:");

scanf("%s",s.name);

printf_face();    /*调用显示数据结构项目函数*/

for(i=0;i<n;i++)     /*查找所需数据*/

if(strcmp(s.name,list[i].name)==0)

{

k=i;      /*找到数据*/

printf_one(k);break;    /*调用显示一个记录的函数*/

}

if(k==-1)

{

printf("nn NO.exit!please");

printf("nnare you again?nt1).again   2).NO and back  [ ]bb");

scanf("%d",&w1);

if(w1==2)break;

}

}

while(k==-1&&w1==1);     /*如果w1不等于1这直接返回*/

w4=0;w3=0;

if(k!=-1)    /*k不等于-1表示已找到,如果找到则选择操作*/

{

printf("successful");

printf("nn what do you want to do?nt1).search another  2).back  [ ]bb");

scanf("%d",&w2);

}

}

while(w2==1);

menu();

}

五、部分程序代码

每个函数都要有功能说明)

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

int shoudsave=0;

char dir[15];

struct member

{

char num[5];//编号

char name[15];

char sex[1];

float spercent;

float zpercent;

float xpercent;

float jiangjin;

float totle;

float ave;

}; //一个结构体

typedef struct node

{

struct member data;//指向结构体的结构体

struct node *next;

}Node,*Link;

void explain()

{printf("=============================关于此程序的操作说明==============================n");

printf("===1>:员工每旬应该完成量为33.3个百分点,输入只输数字部分。n");

printf("===2>:员工每月应该完成量完成量为100个百分点。n");

printf("===3>:员工奖金按其超额总应该完成量(即百分之百)的多少计算。n");

printf("===4>:奖金=(总完成比-1)*1000。n");

printf("===5>:员工底金为1000元。n");

printf("===6>:逻辑删除资料必须在已经保存了先前记录的基础上方可进行。n");

printf("===7>:进行逻辑删除资料后如果保存即变为物理删除。n");

printf("===8>:本程序在c++环境中完成,程序文件扩展名为.c。n");

}

void menu() //菜单

{

printf("********************************************************************************");

printf("t1获取说明信息ttttt 2输入员工资料n");

printf("t3删除员工资料ttttt 4查询员工资料n");

printf("t5修改员工资料ttttt 6显示员工资料n");

printf("t7统计员工业绩ttttt 8排序员工实发工资n");

printf("t9保存员工资料ttttt10逻辑删除员工资料n");

printf("t0退出系统n");

printf("********************************************************************************n");

}

void printc() // 本函数用于输出中文

{

printf("编号 姓名    性别 总完成比 旬平均 基本工资 奖金 工资总额 n");

}

void printe(Node *p)//本函数用于输出英文

{

printf("%-5s%-10s%-4s%6.1f %6.1f  %6.1f %6.1f %6.1fn",p->data.num,p->data.name,p->data.sex,p->data.totle,p->data.ave,1000.0,p->data.jiangjin,1000+p->data.jiangjin);

}

void printstart()

{

printf("-----------------------------------------------------------------------n");

}

void Wrong() //如果错误

{

printf("n=====>提示:输入错误!n");

}

void Nofind() //如果没找到

{

printf("n=====>提示:没有找到该员工!n");

}

Node* Locate(Link l,char findmess[],char nameornum[]) //该函数用于定位连表中符合要求的接点,并返回该指针

{

Node *r;

if(strcmp(nameornum,"num")==0) //按编号查询

{

r=l->next;

while(r!=NULL)

{

if(strcmp(r->data.num,findmess)==0)

return r;

r=r->next;

}

}

else if(strcmp(nameornum,"name")==0) //按姓名查询

{

r=l->next;

while(r!=NULL)

{

if(strcmp(r->data.name,findmess)==0)

return r;

r=r->next;

}

}

return 0;

}

.程序运行结果

1、主函数运行,显示主菜单函数menu()

2、输入数字2,添入两组数据

3、如果再输入数字2,新增一组数据并浏览

4、输入数字6,浏览所有职工信息

5、输入4,进行查询程序,再输入2 ,按姓名查询,输入1 ,按编号查询

6、输入数字5,按实发工资排序。

  • 有需要资料的可了解一下.docx

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
PE4312C-Z 1 Peregrine Semiconductor Corp SPECIALTY TELECOM CIRCUIT, QCC20, QFN-20

ECAD模型

下载ECAD模型
$9.21 查看
CSTCC8M00G53A-R0 1 Murata Manufacturing Co Ltd Ceramic Resonator, 8MHz Nom, CERAMIC PACKAGE-3
$0.89 查看
DSC1001CI1-020.0000T 1 Microchip Technology Inc OSC MEMS 20.000MHZ CMOS SMD
暂无数据 查看

相关推荐

电子产业图谱