工资信息管理系统
- 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"); } for(i=n;i if(fwrite(&emp[i],sizeof(struct employer),1,fp)!=1) printf("file write error(文件写入错误!)\n"); fclose(fp); printf_back(); } 3)查询模块 下面是流程图: