C语言课程设计报告工资信息管理系统.docx

上传人:b****9 文档编号:25604425 上传时间:2023-06-10 格式:DOCX 页数:17 大小:95.04KB
下载 相关 举报
C语言课程设计报告工资信息管理系统.docx_第1页
第1页 / 共17页
C语言课程设计报告工资信息管理系统.docx_第2页
第2页 / 共17页
C语言课程设计报告工资信息管理系统.docx_第3页
第3页 / 共17页
C语言课程设计报告工资信息管理系统.docx_第4页
第4页 / 共17页
C语言课程设计报告工资信息管理系统.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

C语言课程设计报告工资信息管理系统.docx

《C语言课程设计报告工资信息管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告工资信息管理系统.docx(17页珍藏版)》请在冰豆网上搜索。

C语言课程设计报告工资信息管理系统.docx

C语言课程设计报告工资信息管理系统

 

C

 

学校:

中国地址大学

学院:

工程学院

班级序号:

05507101

学号:

20071000226

姓名:

王雷

指导老师:

刘文中

C语言程序设计

编程实践是学习C语言程序设计的一重要环节,为提高学生程序设计能力,通过课堂和上机实践练习使学生的程序设计能力上一台阶。

通过前四单元温顾而知新、庖丁解牛、举一反三、熟能生巧等过程的练习设计下面一个完整的程序。

1、题目要求

设计“工资信息管理系统”

要求:

该系统能够实现工资信息管理。

系统包括录入,浏览,查询,统计等功能。

录入功能要求:

能够添加新的工资信息到文件;

浏览功能要求:

能够按照工资卡号,姓名分类浏览,提供分屏显示;有排序功能,排序后按照工资卡号升序或实发工资降序输出;

查询功能要求:

能够按照工资卡号,姓名查询;

统计功能要求:

能够按照月份累计统计某职工在某时间段发工资总金额。

职工数据如下:

姓名银行卡号月份应发工资水费电费税金实发工资

wanglei0550710165000.0025.0035.00360.004580.00

wanglei0550710175100.0020.0040.00370.004670.00

 

2、分析:

根据题目要求,应当把职工工资信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把职工工资信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现职工工资浏览,查询,统计等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。

 

3、总体设计:

根据题目要求,可以将系统分为六个模块:

1)职工工资信息浏览模块;

2)添加工工资信息模块;

3)统计职工工资总合模块;

4)按名字查询职工工资信息模块;

5)按卡号查询职工工资信息模块;

6)功能选择

4、详细设计:

#include

#include

#include

#include//头函数名

/*********职员工资信息结构体*********/

/***包括职工的姓名、银行卡好、工作月份、应发工资、实发工资、水费、电费、税***/

structstaff//职员工资信息结构体

{

charName[10];

charCardNumber[10];

intMonth;

floatSPWages;

floatAPWages;

floatWater;

floatElectrical;

floatTax;

};

FILE*fp;//定义文件指针===全局变量

structstafftemp;

voidprintf_face()//输出函数

{

printf("\n姓名银行卡号月份应发工资水费电费税实发工资\n");

printf("%s%s%d%.2f%.2f%.2f%.2f%.2f\n",temp.Name,temp.CardNumber,temp.Month,

temp.SPWages,temp.Water,temp.Electrical,temp.Tax,temp.APWages);

}

 

一、

/**********浏览职工工资信息==模块*********/

voidPrintInformation()//浏览职工工资信息

{

structstafftemp;

if((fp=fopen("wages","rb"))==NULL)

{

printf("cannotopenthefile!

");

exit(0);

}

while(fread(&temp,sizeof(structstaff),1,fp)==1)printf_face();

fclose(fp);

}

 

二、

/**********添加职工工资信息==模块*********/

voidIncrease()//添加职工工资信息

{

if((fp=fopen("wages","ab+"))==NULL)

{

printf("cannotopenthefile!

");

exit(0);

}

 

printf("\n请输入要==添加的工资信息:

\n");

printf("\n姓名银行卡号月份应发工资水费电费\n");

scanf("%s%s%d%f%f%f",temp.Name,temp.CardNumber,

&temp.Month,&temp.SPWages,&temp.Water,

&temp.Electrical);

if(temp.SPWages<=800)temp.Tax=0;

if((temp.SPWages>800.0)&&(temp.SPWages<1400.0))

temp.Tax=(temp.SPWages-800)*0.05;

if(temp.SPWages>1400){temp.Tax=(temp.SPWages-1400)*0.1;}

temp.APWages=temp.SPWages-temp.Water-temp.Electrical-temp.Tax;

fwrite(&temp,sizeof(structstaff),1,fp);

fclose(fp);

}/***计算税金并添加到文件相应结构体中***/

三、

/*********统计某职工工资总合==模块*********/

 

voidStatistics()//统计某职工工资总合

{

structstafftemp;

chartempname[10];

floatsum=0;

intmonthstart=0,monthover=0;

printf("\n输入姓名起始月份终止月份\n:

");

scanf("%s%d%d",tempname,&monthstart,&monthover);

if((fp=fopen("wages","rb"))==NULL)

{

printf("cannotopenthefile!

")

exit(0);

}

while(fread(&temp,sizeof(structstaff),1,fp)==1)

{

if(strcmp(temp.Name,tempname)==0)/******判断是否是该职工******/

{

if(temp.Month>=monthstart&&temp.Month<=monthover)

{

sum+=temp.APWages;

}

}

}

printf("%d月到%d月的工资总和%f",monthstart,monthover,sum);

fclose(fp);

}

四、

/*********按名字查询某职工工资信息==模块********/

voidNameSearch()//按名字查询某职工工资信息

{

chartempname[10];

structstafftemp;

printf("\n输入姓名:

");

scanf("%s",tempname);

if((fp=fopen("wages","rb"))==NULL)

{

printf("cannotopenthefile!

");

exit(0);

}

while(fread(&temp,sizeof(structstaff),1,fp)==1)/***读文件中资料**/

{

if(strcmp(temp.Name,tempname)==0)/**判断是否是该姓名**/

{

printf_face();

}

}

fclose(fp);

}

五、

/********按卡号查询某职工工资信息==模块*******/

voidCardNumberSearch()//按卡号查询某职工工资信息

{

chartempCardNumber[10];

structstafftemp;

printf("\n输入卡号:

");

scanf("%s",tempCardNumber);

if((fp=fopen("wages","rb"))==NULL)

{

printf("cannotopenthefile!

");

exit(0);

}

while(fread(&temp,sizeof(structstaff),1,fp)==1)/***读文件中资料**/

{

if(strcmp(temp.CardNumber,tempCardNumber)==0)/**判断是否是该卡号**/

{

printf_face();

}

}

fclose(fp);

}

六、

/**********职工工资信息查询==模块********/

intSearch()

{

intn;

while

(1)

{

printf("\n1.按照卡号查询:

\n");

printf("\n2.按照姓名查询:

\n");

printf("\n0.返回上级目录:

\n");

scanf("%d",&n);

switch(n)

{

case1:

CardNumberSearch();break;

case2:

NameSearch();break;

case0:

return0;break;

}

}

}

七、

/***************功能选择==模块***********/

voidShowMenu()

{

intn;

while

(1)

{

printf("1.添加工资信息:

\n");

printf("2.浏览工资信息:

\n");

printf("3.统计工资信息:

\n");

printf("4.查询工资信息:

\n");

printf("0.退出系统:

");

scanf("%d",&n);

switch(n)

{

case1:

Increase();break;

case2:

PrintInformation();break;

case3:

Statistics();break;

case4:

Search();break;

case0:

exit(0);break;

}

}

}

/***************主函数*************/

voidmain()

{

ShowMenu();

}

运行结果可以达到要求的目的。

运行结果:

1.添加工资信息:

2.浏览工资信息:

3.统计工资信息:

4.查询工资信息:

0.退出系统:

1

请输入要==添加的工资信息:

姓名银行卡号月份应发工资水费电费

wanglei05507101650002535

1.添加工资信息:

2.浏览工资信息:

3.统计工资信息:

4.查询工资信息:

0.退出系统:

1

请输入要==添加的工资信息:

姓名银行卡号月份应发工资水费电费

wanglei05507101751002040

1.添加工资信息:

2.浏览工资信息:

3.统计工资信息:

4.查询工资信息:

0.退出系统:

2

姓名银行卡号月份应发工资水费电费税实发工资

wanglei0550710165000.0025.0035.00360.004580.00

姓名银行卡号月份应发工资水费电费税实发工资

wanglei0550710175100.0020.0040.00370.004670.00

1.添加工资信息:

2.浏览工资信息:

3.统计工资信息:

4.查询工资信息:

0.退出系统:

3

输入姓名起始月份终止月份

:

wanglei67

6月到7月的工资总和9250.0000001.添加工资信息:

2.浏览工资信息:

3.统计工资信息:

4.查询工资信息:

0.退出系统:

4

1.按照卡号查询:

2.按照姓名查询:

0.返回上级目录:

1

输入卡号:

05507101

姓名银行卡号月份应发工资水费电费税实发工资

wanglei0550710165000.0025.0035.00360.004580.00

姓名银行卡号月份应发工资水费电费税实发工资

wanglei0550710175100.0020.0040.00370.004670.00

1.按照卡号查询:

2.按照姓名查询:

0.返回上级目录:

2

输入姓名:

wanglei

姓名银行卡号月份应发工资水费电费税实发工资

wanglei0550710165000.0025.0035.00360.004580.00

姓名银行卡号月份应发工资水费电费税实发工资

wanglei0550710175100.0020.0040.00370.004670.00

1.按照卡号查询:

2.按照姓名查询:

0.返回上级目录:

0

1.添加工资信息:

2.浏览工资信息:

3.统计工资信息:

4.查询工资信息:

0.退出系统:

0

Pressanykeytocontinue

刚开始运行时出现的错误:

由于浏览和查询模块中多定义了局部变量,且与全局变量同名将全局变量屏蔽,以至于这些模块不能达到预期效果,总是只输出最近一次的数据,经过修改后将其删除,达到了所要的效果。

使程序得以执行。

到目前程序中还有一小毛病,就是计算税金是实数双精度与单精度转换存在不足。

做此C程序设计的体会:

通过学习和练习C程序的设计基础,了解了一些关于C的知识。

在设计过程中,好多处困惑、疑问,有是会很烦,甚至不想再做,但必须做好,所以耐着性子做好了。

此时感觉有一点点成就感,也学到了一些知识。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 设计艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1