工资信息管理系统

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

工资信息管理系统

C语言课程设计

一、题目要求

设计工资信息管理系统,要求该系统能够实现工资信息管理。系统包

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

工在某时间段实发工资总金额。

二、需求分析

根据题目要求,由于工资信息是存放在文件中,所以应提供文件的输入输出等操作;在程序中需要浏览工资信息,应提供显示、查找、排序等操作;另外还应提供键盘式选择彩旦实现功能选择。

三、总体设计

四、详细设计

1.主函数

void main()

{

menu();/*主函数只用于调用菜单*/ };

2.菜单

#include"h.h"

int menu()

{

int n,w1;

do

{

system("cls");

puts(" 工资信息管理系统\n\t\t Wage Information Management System \n \t\t\t\t BY 李汉 192101班");

puts("*******************************MENU*************************** ********\n\n");

puts(" 1.输入数据enter data *** *** ***");

puts(" 2.添加数据addition data *** *** ***");

puts(" 3.浏览全部browse all *** *** ***");

puts(" 4.按姓名查找search by name *** ***********");

puts(" 5.按卡号查找searchh by card number *** ***********");

puts(" 6.按卡号排序order by card number *** *** ***");

puts(" 7.统计Count ************* *** ***");

puts(" 8.退出exit ************* *** ***");

puts("

***********************************************************************\ n");

printf("请输入你的选择(1-6):\nChoice your number(1-6):[]\b\b");

scanf("%d",&n);

if(n<1||n>8)

{

w1=1;

getchar();

}

else w1=0;

}

while(w1==1);

switch(n)

{

case 1:enter();break;

case 2:add();break;

case 3:browse();break;

case 4:search_by_name();break;

case 5:search_by_card();break;

case 6:order();break;

case 7:count();break;

case 8:exit(0);

}

return 1;

}3.各功能模块设计

1)录入模块

数据结构

struct employer

{

int month;

charnum[11];

char name[20];

floatyfgz;

floatsf;

floatdf;

floatsj;

floatsfgz;

}emp[N];

N为职工人数,在此宏定义为100,

#define N 100

那么此阶段的流程图如下

[程序]

#include "h.h"

int save(int n)

{FILE *fp;

int i;

if((fp=fopen("record.txt","wb"))==NULL)

{printf("\nCannot open file无法打开此文件\n"); return NULL;

}

for(i=0;i

if(emp[i].salary!=0)

if(fwrite(&emp[i],sizeof(struct employer),1,fp)!=1)

printf("file write error文件写入有误\n");

fclose(fp);

return 1;

}

2)追加模块

先确定要追加信息的条数,调用n=load()函数,再调用输入函数input(),最后保存追加的记录。

整个过的的流程图如下:

[程序]

#include"h.h"

#include

void add()

{ inti,n,m,k;

FILE *fp;

n=load();

printf("How many employers are you want to add(0-%d)?:\n(你想添加多少位员工的信息?)",N-1-n);

scanf("%d",&m);

k=m+n;

for (i=n;i

{ printf("\n Input %dth employer record.\n(请输入第%d名员工的信息)

\n",i-n+1,i-n+1);

record_input(i);

}

if((fp=fopen("record.txt","ab"))==NULL)

{ printf("cannot open file(打开文件失败!)\n");

}

for(i=n;i

if(fwrite(&emp[i],sizeof(struct employer),1,fp)!=1)

printf("file write error(文件写入错误!)\n");

fclose(fp);

printf_back();

}

3)查询模块

下面是流程图:

相关文档
最新文档