C语言工资管理系统

上传人:jiups****uk12 文档编号:40144125 上传时间:2018-05-24 格式:DOC 页数:26 大小:154.01KB
返回 下载 相关 举报
C语言工资管理系统_第1页
第1页 / 共26页
C语言工资管理系统_第2页
第2页 / 共26页
C语言工资管理系统_第3页
第3页 / 共26页
C语言工资管理系统_第4页
第4页 / 共26页
C语言工资管理系统_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《C语言工资管理系统》由会员分享,可在线阅读,更多相关《C语言工资管理系统(26页珍藏版)》请在金锄头文库上搜索。

1、工资管理系统工资管理系统工资管理系统是一个企业不可缺少的部分,它利用计算机对员工工资进行统一 管理,实现工资管理工作的系统化、规范化和自动化,为企业提高工作效率。所以, 在信息化的今天,工资管理系统在企业或单位中起着举足轻重的作用。在本章,我们 将重点介绍如何利用数组实现此工资管理系统。1 设设 计计 目目 的的本程序旨在训练读者的基本编程能力,了解管理信息系统的开发流程,熟悉 C 语言的文件和结构数组的各种基本操作。本程序中设计结构体、数组、文件等方面的 知识。通过本程序的训练,使读者能对 C 语言的文件操作有一个深刻的了解,掌握利 用数组存储结构实现工资管理的原理,为进一步开发出高质量的信

2、息管理系统打下坚 实的基础。2 功功 能能 描描 述述如图 1 所示,与利用单链表实现的学生成绩管理系统不同的是,此工资管理系 统主要利用数组来实现,其数组元素是结构体类型。整个系统由如下几大功能模块组 成。 (1) 输入记录模块。输入记录模块主要完成将数据存入数组中的工作。在此工 资管理系统中,记录可以从以二进制形式存储的数据文件中读入,也可以从键盘逐个 输入记录。记录由职工的信息和工资信息字段构成。当从数据文件中读入记录时,它 就是以记录为单位存储的数据文件中,将记录逐条复制到数组元素中。 (2) 查询记录模块。 查询模块记录主要完成在数组中查找满足相关条件的记录。 在此工资管理系统中,用

3、户可以按照职工编号或姓名在数组中进行查找。若找到该记 录,则以表格形式打印出此记录的信息;否则,返回一个-1 的值,并打印出未找到该 记录的提示信息。 (3) 更新记录模块。 更新记录模块主要完成对记录的维护。在此工资管理系统 中,实现对记录的修改、删除、插入和排序操作。一般而言,系统进行了这些操作之 后,需要将修改的数据存入源数据文件。 (4) 统计记录模块。 统计记录模块主要完成对公司员工的工资在各等级的人数 统计。 (5) 输出记录模块。 输出记录模块主要完成两个任务。第一,它实现对记录的 存盘操作,即将数组中各元素中存储的记录信息写入数据文件中。第二,它实现将数 组中存储的记录信息以表

4、格的形式在屏幕上打印出来。3. 总体设计总体设计(1) 主控主控 main()函数执行流程()函数执行流程工资管理系统执行主流程如图 2 所示。它先以可读写的方式打开数据文件,此文件默认为“c:、:、zggz” ,若该文件不存在,则新建此文件。当打开文件操作成功后,则从文件中一次读出一条记录,添加到新建的数组中,然后执行显示主菜单和进入主循环操作,进行按键判断。在判断键值时,有效的输入为 09 之间的任意数值,其他输入都被视为错误按键。若输入为 0(即变量 select=0) ,则会继续判断是否在对记录进行了更新操作之后进行了存盘操作,若未存盘,则全局变量 saveflag=1,系统会提示用户

5、是否需要进行数据存盘操作,用户输入 Y 或 y,系统会进行存盘操作。最后,系统执行推出工资管理系统的操作。若选择 1,则调用 Add()函数,执行增加记录操作;若选择2,则调用 Del()函数,执行删除记录操作;若选择 3,则调用Qur()函数,执行查询记录操作;若选择 4,则调用 Modify()函数,执行修改记录操作;若选择 5,则调用 Insert()函数,执行插入记录操作;若选择 6,则调用 Tongji()函数,执行统计记录操作;若选择 7,则调用 Sort()函数,执行按降序排序记录的操作;若选择 8,则调用 Save()函数,执行将记录存入磁盘中的数据文件按的操作;若选择 9,则

6、调用 Disp()函数,执行将记录以表格形式打印输出至屏幕的操作;若输入 09 之外的值,则调用Wrong()函数,给出按键错误的提示;(2)输入记录模块)输入记录模块输入记录模块主要实现将数据存入数组中。当从数据文件中读出记录时,它调用 fread( 保存职工编号 Char name15; 保存职工姓名 float jbgz; 保存职工基本工资 float jj; 保存职工奖金 float kk; 保存职工扣款 float yfgz; 保存职工应发工资 float sk; 保存职工税款 float sfgz; 保存职工实发工资 ZGGZ; 7.3.3 函数功能描述 1)pritheader(

7、) 打印、输出表头信息 2) printdata() (ZGGZ pp) 打印单个数组元素 PP 信息 3) Disp() (ZGGZ tp,int 数组中存储的条记录,内容为结构中定义的内容 4) numberinput() float numberinput(char*notice)numberinput()函数用于输入数值型数据,notice 用于保存 printf()中输出的提 示信息。该函数返回用户输入的浮点类型数据值。gz0gz1gz2gzn-2gzn-15) stringinput() void Stringinput(char*t, lens,char*notice)Strin

8、ginput() 函数用于输入字符串,并进行字符串长度验证(长度lens , t 用于保存输入的字符串,因为是以指针形式传递的,所以 t 相当于该函数的返回值。 notice 用于保存 printf()中输出的提示信息。 中输出的提示信息。 6) Locate() int Locate(ZGGZ tp,int n ,chat ;findmess,char nameornumLocate()函数用于定位数组中符合要求的元素,并返回该数组元素的下标 值。参数保存要查找的其体内容,nameornum保存按什么字段在数组 tp 中查找。 7) Add() int Add(ZGGZ tp,int n)函

9、数用于在数组 tp 中增加工资记录元素,并返回数组中的当前记录数。 8)Qur() void Qur(ZGGZ tp,int n)函数用于在数组 tp 中按职工编号或姓名查找满足条件的记录,并显示出来 9)Del() int Del(ZGGZ tp ,int n)函数用于现在数组中 tp 找到满足条件的记录,然后删除该记录。 10) Modify() void Modify(ZGGZ tp,int n)函数用于在数组 tp 中修改记录元素。 11).Insert() int Insert(ZGGZ tp,int n) 函数用于在数组 tp 中插入记录,并返回数组中的当前记录数 12) tong

10、ji() void Tongji(ZGGZ tp,int n)函数用于在数组 tp 中完成记录的统计工作,统计该公司职工工资的整体分布情况。13) Sort() void Sort (ZGGZ tp,int n)函数用于将保存在数组 tp 中完成利用冒泡排序算法实现数组的按实 发工资字段的降序排序。 14) Save() void Save(ZGGZ tp,int n) 函数用于将保存职工工资的数组 tp 中的 n 个元素写入磁盘的数据 文件中。 15) main()4 程程 序序 实实 现现4.1 源码分析源码分析1.程序预处理包括加载头文件,定义结构体、常量和变量,并对它们进行初始化工作。

11、# include “stdio.h”/*标准输入输出函数库*/ # include “stdlib.h”/*标准函数库*/ # include “string.h”/*字符串函数库*/ # include “conio.h”/*屏幕操作函数库*/ # define HEADER1 “-ZGGZ- -n”#define HEADER2 “| number | name | jbgz | jj | kk | yfgez | sk | sfgz | n” #define HEADR3“|-|-|-|-|-|- -|-|-| n” # define FORMAT “|%-8s|%-10s |%8.2

12、f|%8.2f|%8.2f|% 8.2f|%8.2f|%8.2f|n #define DATA p-num,p-name,p-jbgz,p-jj,p-kk,p-yfgz,p-sk,p- sfgz #define END “- - n” #define N 60 Int saveflag=0; /*是否要存盘的标志变量*/ /*定义与职工有关的数据结构*/ Typedef struct employee /*标记为 employee*/ char num10; /*职工编号*/ char name15; / *职工姓名*/ float jbgz; /*基本工资*/ float jj; /*奖金*

13、/ float kk; /*扣款*/ float yfgz; /*应发工资*/ float sk; /*税款*/ float sfgz; /*实发工资*/ ZGGZ;2.主函数 main()main()函数主要实现了对整个程序的运行控制,以及相关功能模块的调用 析可参考图 7.2。void mainz() ZGGZ gzN; /*定义 ZGGZ 结构体*/ FILE *fp; /*文件指针*/ int select; /*保存选择结果*/ char ch; /*保存(y,Y,n,N)*/ int count=0; /*保存文件中的记录条数(或元素个数)*/fp=fopen(“C:zggz”,”ab+”); /*以追加方式打开二进制文件 c:zggz,可读可写,若此文件不存在,会创 建此文件*/ if (fp=NULL) printf(“n=can not open file!n”);exit (0); while (!fefo(fp) if (fread( fclosed (fp);/*关闭文件*/ printf (“n=open file sucess,the total records number is : %d.n”,count); getchar(); menu(); while

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号