一.程序设计思路
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 "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获取说明信息\t\t\t\t\t 2输入员工资料\n");
printf("\t3删除员工资料\t\t\t\t\t 4查询员工资料\n");
printf("\t5修改员工资料\t\t\t\t\t 6显示员工资料\n");
printf("\t7统计员工业绩\t\t\t\t\t 8排序员工实发工资\n");
printf("\t9保存员工资料\t\t\t\t\t10逻辑删除员工资料\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;
}; //一个结构体 [流程图]
文章借鉴于此纷传