C语言课程设计实验报告Word文件下载.docx

上传人:b****1 文档编号:908179 上传时间:2023-04-29 格式:DOCX 页数:28 大小:70.34KB
下载 相关 举报
C语言课程设计实验报告Word文件下载.docx_第1页
第1页 / 共28页
C语言课程设计实验报告Word文件下载.docx_第2页
第2页 / 共28页
C语言课程设计实验报告Word文件下载.docx_第3页
第3页 / 共28页
C语言课程设计实验报告Word文件下载.docx_第4页
第4页 / 共28页
C语言课程设计实验报告Word文件下载.docx_第5页
第5页 / 共28页
C语言课程设计实验报告Word文件下载.docx_第6页
第6页 / 共28页
C语言课程设计实验报告Word文件下载.docx_第7页
第7页 / 共28页
C语言课程设计实验报告Word文件下载.docx_第8页
第8页 / 共28页
C语言课程设计实验报告Word文件下载.docx_第9页
第9页 / 共28页
C语言课程设计实验报告Word文件下载.docx_第10页
第10页 / 共28页
C语言课程设计实验报告Word文件下载.docx_第11页
第11页 / 共28页
C语言课程设计实验报告Word文件下载.docx_第12页
第12页 / 共28页
C语言课程设计实验报告Word文件下载.docx_第13页
第13页 / 共28页
C语言课程设计实验报告Word文件下载.docx_第14页
第14页 / 共28页
C语言课程设计实验报告Word文件下载.docx_第15页
第15页 / 共28页
C语言课程设计实验报告Word文件下载.docx_第16页
第16页 / 共28页
C语言课程设计实验报告Word文件下载.docx_第17页
第17页 / 共28页
C语言课程设计实验报告Word文件下载.docx_第18页
第18页 / 共28页
C语言课程设计实验报告Word文件下载.docx_第19页
第19页 / 共28页
C语言课程设计实验报告Word文件下载.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言课程设计实验报告Word文件下载.docx

《C语言课程设计实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言课程设计实验报告Word文件下载.docx(28页珍藏版)》请在冰点文库上搜索。

C语言课程设计实验报告Word文件下载.docx

(2)浏览模块

分屏显示职工工资信息,可以指定10个1屏,按任意键显示下一屏。

通过菜单选择按照工资卡号还是姓名浏览。

如果按照卡号浏览,则显示的记录按照卡号升序输出;

按照姓名浏览则按照字典序输出(调用排序模块的排序功能)。

(3)排序模块

排序模块提供菜单选择,实现按照工资卡号升序、实发工资降序以及姓名字典序排序。

排序方法可以选择冒泡排序、插入排序、选择排序等。

(4)查询模块

实现按照工资卡号和姓名的查询,采用基本的查找方法即可。

(5)统计模块

输入起止月份,按照职工卡号和月份查询记录,把起止月份之间的实发工资金额累加。

3.主要的程序段分析

职工工资信息的录入程序段

voidluru()

{

FILE*fp;

intk,,j,b,c,d;

if((fp=fopen("

D:

工资信息.txt"

"

w"

))==NULL)从D盘中打开文件夹

{

printf("

无法找到目标文件\n"

);

return;

}

label_1:

b=0;

while(!

(b>

=1&

&

b<

=12))

请您输入您要建立的月份\n"

//选择职工所在的月份

scanf("

%d"

&

b);

b=b-1;

d=0;

(d>

=10001&

d<

=32767))

{输入职工的卡号

请输入您要录入工资的卡号(五位数字),例如:

10001\n"

d);

for(i=0;

i<

ygsm&

a[i].kahao!

=d;

i++);

if(a[i].kahao!

=d)

c=0;

while(c!

c!

=2)

{

没有该卡号记录.\n1新建\n2返回上一级\n"

c);

if(c==2)

gotolabel_1;

if(c==1)

a[i].kahao=d;

请输入姓名:

\n"

%s"

a[i].xingming);

输入职工的工资、水费、电费

a[i].m[b].yuefen=b+1;

请输入此人该月的应发工资:

%f"

a[i].m[b].yfgz);

请输入此人该月所用水费:

a[i].m[b].sf);

请输入此人该月所用电费\n"

职工工资信息的查询

voidchaxun()

{

intb,i,j;

label_3:

b=0;

while(b!

b!

1,选择姓名查询.\n2,选择卡号查询.\n"

//选择姓名查询或卡号查询

if(b==1)

charc[20];

请输入您的姓名:

c);

i=0;

(strcmp(a[i].xingming,c)==0)&

ygsm)查询职工名字的程序段

i++;

if(i==ygsm)

Thenameyouarelookingfordoesnotexist,pleaseenteryournameorcardnumberfor\n"

//如果在数组中没有查找到职工的名字则输出此信息

%-10d%-20s\n"

a[i].kahao,a[i].xingming);

for(j=0;

a[i].m[j].yuefen!

=NULL;

j++)

月份:

%5d,应发工资:

%10.2f,水费:

%7.2f,电费:

%7.2f,税金:

%7.2f,实发工资:

%10.2f.\n"

a[i].m[j].yuefen,a[i].m[j].yfgz,a[i].m[j].sf,a[i].m[j].df,a[i].m[j].sj,a[i].m[j].sfgz);

}//当查询到职工的工资信息时,输出职工的工资信息

总实发工资:

%10f\n"

a[i].zsfgz);

//输出职工的总发工资

四、调试过程(1.测试数据设计2.测试结果分析)

主菜单函数

职工的工资信息录入

查询职工的工资信息(姓名查询)

查询职工的工资信息(卡号查询)

浏览职工的工资信息

退出函数的运行界面

五、总结

1.设计中遇到的问题及解决过程

2.设计中产生的错误及原因分析

3.设计体会和收获。

1.不知道从哪里开始编写程序。

解决方法:

先将题目的大概思路的先想清楚,然后在编写一个大概的程序段落。

2.有些知识没有完全熟悉,编写程序时容易出现格式错误。

再看一遍书上的例题,注意书写时的细节。

3.在编写时容易忘记自己编写到哪里了,还有什么功能没有实现。

将程序所需要实现的所有功能进行分段处理,一个功能用一个调用函数来实现,容易发现还有什么功能没有实现,运行出现错误时,也不需要从头开始找出错的地方。

二、

1.在编写时,经常出现死循环。

原因;

在每个职工的信息输完后,没有直接跳出输入的界面,而是还在不断的需要输入信息,程序中没有设置跳出输入界面的函数。

2.编写的程序时,程序段有时不能运行。

原因:

在调用函数时,没有使用这个函数。

三、

通过这次的程序编写,使我加深了对C语言的理解和使用,并总结了以下的经验。

1.所有的程序都应先将程序的大体结构先编写出来,然后在将程序进行细化,这样层次比较清楚。

2.添加一些注释、流程图、说明文档使程序的思路更加清晰。

3.合并相同和相似的代码,编写成一个函数,在主程序中调用此函数。

4.注意大程序的设计最好按照“自顶向下,逐步细化,模块化”的方法进行

设计。

5.编写编写各个小函数时,要学会对运行结果的分析,并进行测试与调试。

6、在编程时,应该多使用库函数。

因为那些函数都是进过严格调试的,有很强的可移植性,同时也能提高函数的性能。

7、使用文件时要注意文件的打开和关闭。

8、在使用结构数组时,要特别注意对其初始化,还要特别注意不能出现越界。

9、最终最重要的一点还是要有严谨的编程思维,还要足够细心。

六、附录

1、原代码

2、参考文献

#include<

stdio.h>

string.h>

#defineN100

structmygz

{

intyuefen;

floatyfgz;

floatsf;

floatdf;

floatsj;

floatsfgz;

};

structworker

intkahao;

charxingming[20];

structmygzm[12];

floatzsfgz;

intygsm;

structworkera[N];

floatshuijin(floatm)

floatshui1,shui2;

floattmp;

shui1=0;

shui2=0;

if(m>

=1400)

shui1=(m-1400)*0.1;

shui2=30;

}

else

if(m>

=800&

m<

1400)

shui2=(m-800)*0.05;

tmp=shui1+shui2;

return(tmp);

}floatshifagongzi(floata,floatb,floatc,floatd)

floate=a-b-c-d;

return(e);

voidduqu()

r"

))==NULL)

Unabletoreadfile"

;

return;

feof(fp))

fread(&

a[ygsm],sizeof(structworker),1,fp);

ygsm++;

intb;

inti;

intj;

label_3:

ygsm)

1,继续查询.\n2,返回主菜单.\n"

gotolabel_3;

else

}

intd=0;

Pleaseenteryourcardnumber(fivedigits),例如:

while(a[i].kahao!

=d&

d,a[i].xingming);

voidliulan()

structworkerx;

intc;

floatd;

intk;

ygsm;

i++)

c=a[i].kahao;

k=i;

for(j=i+1;

j<

if(c>

a[j].kahao)

c=a[j].kahao;

k=j;

x=a[i];

a[i]=a[k];

a[k]=x;

40;

d=a[i].zsfgz;

if(d<

a[j].zsfgz)

d=a[j].zsfgz;

%-20s%-10d\n"

a[i].xingming,a[i].kahao);

voidshanchu()

label_4:

请输入要删除信息的卡号:

if(a[i].kahao==b)

j=i;

for(i=j+1;

a[i-1]=a[i];

ygsm--;

fp=fopen("

i++)

fwrite(&

a[i],sizeof(structworker),1,fp);

fclose(fp);

1.继续删除\n2返回主菜单\n"

gotolabel_4;

voidluru()

intd;

a[i].m[b].df);

a[i].m[b].sj=shuijin(a[i].m[b].yfgz);

a[i].m[b].sfgz=shifagongzi(a[i].m[b].yfgz,a[i].m[b].sf,a[i].m[b].df,a[i].m[b].sj);

a[i].zsfgz=0;

for(k=0;

k<

12;

k++)

a[i].zsfgz+=a[i].m[k].sfgz;

=1&

c!

1继续\n2返回主菜单\n"

gotolabel_2;

else

if(a[i].m[b].yuefen==b+1)

已有该月记录\n1覆盖原有记录\n2返回上级\n"

if(a[i].m[b].yuefen==NULL)

=

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2