工资信息管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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"); }