C语言课程设计实验报告.docx

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

C语言课程设计实验报告.docx

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

C语言课程设计实验报告.docx

C语言课程设计实验报告

C语言课程设计实验报告

班级

姓名

学号

实验课程

实验名称

工资管理系统

实验成绩

实验日期

任课教师

一、目的(本次课程设计所涉及并要求掌握的知识点。

1.复习巩固C语言的基础知识,进一步加深对C语言编程的理解和掌握;

2.利用所学知识,理论和实际结合,利用资源,采用模块化的结构,使用模仿修改自主设计相结合的方法,锻炼自己综合分析解决实际问题的编程能力

3.在这次编程中,使用了文件的打开和关闭,对结构数组的初始化,对库函数的使用,对goto语句的使用,对调用函数的调用。

对信息的输入与输出等进行了一次全面使用。

二、使用环境(本次上机实践所使用的平台和相关软件。

本次程序是在Microsoftvisualc++6.0的环境下运行的

 

三、内容与设计思想

(1.设计思路2.主要数据结构3.主要代码结构4.主要代码段分析。

一、

1.需求分析

工资信息存放在文件中,提供文件的输入、输出等操作;要实现浏览功能,提供显示、排序操作;而查询功能要求实现查找操作;另外还应该提供键盘式选择菜单以实现功能选择。

2.总体设计

整个系统可以分为信息输入、信息添加、信息浏览、信息排序、信息查询和信息统计模块。

(1)添加模块

增加新的职工工资信息,从键盘输入并逐条写到原来的输入文件中,采用追加而不是覆盖的方式。

(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))

{

printf("请您输入您要建立的月份\n");//选择职工所在的月份

scanf("%d",&b);

}

b=b-1;

d=0;

while(!

(d>=10001&&d<=32767))

{输入职工的卡号

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

10001\n");

scanf("%d",&d);

}

for(i=0;i

=d;i++);

if(a[i].kahao!

=d)

{

c=0;

while(c!

=1&&c!

=2)

{

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

scanf("%d",&c);

}

if(c==2)

{

gotolabel_1;

}

if(c==1)

{

a[i].kahao=d;

printf("请输入姓名:

\n");

scanf("%s",a[i].xingming);输入职工的工资、水费、电费

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

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

\n");

scanf("%f",&a[i].m[b].yfgz);

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

\n");

scanf("%f",&a[i].m[b].sf);

printf("请输入此人该月所用电费\n");

职工工资信息的查询

voidchaxun()

{

intb,i,j;

label_3:

b=0;

while(b!

=1&&b!

=2)

{

printf("1,选择姓名查询.\n2,选择卡号查询.\n");//选择姓名查询或卡号查询

scanf("%d",&b);

}

if(b==1)

{

charc[20];

printf("请输入您的姓名:

\n");

scanf("%s",c);

i=0;

while(!

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

{

i++;

}

if(i==ygsm)

{

printf("Thenameyouarelookingfordoesnotexist,pleaseenteryournameorcardnumberfor\n");//如果在数组中没有查找到职工的名字则输出此信息

return;

}

printf("%-10d%-20s\n",a[i].kahao,a[i].xingming);

for(j=0;a[i].m[j].yuefen!

=NULL;j++)

{

printf("月份:

%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);

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

printf("总实发工资:

%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

#include

#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()

{

FILE*fp;

if((fp=fopen("D:

工资信息.txt","r"))==NULL)

{

printf("Unabletoreadfile");

;return;

}

while(!

feof(fp))

{

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

ygsm++;

}

}

voidchaxun()

{

intb;

inti;

intj;

label_3:

b=0;

while(b!

=1&&b!

=2)

{

printf("1,选择姓名查询.\n2,选择卡号查询.\n");

scanf("%d",&b);

}

if(b==1)

{

charc[20];

printf("请输入您的姓名:

\n");

scanf("%s",c);

i=0;

while(!

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

{

i++;

}

if(i==ygsm)

{

printf("Thenameyouarelookingfordoesnotexist,pleaseenteryournameorcardnumberfor\n");

return;

}

printf("%-10d%-20s\n",a[i].kahao,a[i].xingming);

for(j=0;a[i].m[j].yuefen!

=NULL;j++)

{

printf("月份:

%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);

}

printf("总实发工资:

%10f\n",a[i].zsfgz);

b=0;

while(b!

=1&&b!

=2)

{

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

scanf("%d",&b);

}

if(b==1)

{

gotolabel_3;

}

else

{

;return;

}

}

else

{

intd=0;

while(!

(d>=10001&&d<=32767))

{

printf("Pleaseenteryourcardnumber(fivedigits),例如:

10001\n");

scanf("%d",&d);

}

i=0;

while(a[i].kahao!

=d&&i

{

i++;

}

if(i==ygsm)

{

printf("Thenameyouarelookingfordoesnotexist,pleaseenteryournameorcardnumberfor\n");

return;

}

printf("%-10d%-20s\n",d,a[i].xingming);

for(j=0;a[i].m[j].yuefen!

=NULL;j++)

{

printf("月份:

%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);

}

printf("总实发工资:

%10f\n",a[i].zsfgz);

b=0;

while(b!

=1&&b!

=2)

{

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

scanf("%d",&b);

}

if(b==1)

{

gotolabel_3;

}

else

{

;return;

}

}

}

voidliulan()

{

structworkerx;

intc;

floatd;

inti;

intj;

intk;

for(i=0;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;

}

for(i=0;i

{

printf("%-10d%-20s\n",a[i].kahao,a[i].xingming);

for(j=0;a[i].m[j].yuefen!

=NULL;j++)

{

printf("月份:

%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);

}

printf("总实发工资:

%10f\n",a[i].zsfgz);

}

for(i=0;i<40;i++)

{

printf("\n");

}

for(i=0;i

{

d=a[i].zsfgz;

k=i;

for(j=i+1;j

{

if(d

{

d=a[j].zsfgz;

k=j;

}

}

x=a[i];

a[i]=a[k];

a[k]=x;

}

for(i=0;i

{

printf("%-20s%-10d\n",a[i].xingming,a[i].kahao);

for(j=0;a[i].m[j].yuefen!

=NULL;j++)

{

printf("月份:

%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);

}

printf("总实发工资:

%10f\n",a[i].zsfgz);

}

}

voidshanchu()

{

FILE*fp;

intb;

intc;

inti;

intj;

label_4:

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

\n");

scanf("%d",&b);

for(i=0;i

{

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

{

j=i;

}

}

for(i=j+1;i

{

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

}

ygsm--;

fp=fopen("D:

工资信息.txt","w");

for(i=0;i

{

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

}

fclose(fp);

c=0;

while(c!

=1&&c!

=2)

{

printf("1.继续删除\n2返回主菜单\n");

scanf("%d",&c);

}

if(c==1)

{

gotolabel_4;

}

else

{

return;

}

}

voidluru()

{

FILE*fp;

intk;

inti;

intj;

intb;

intc;

intd;

if((fp=fopen("D:

工资信息.txt","w"))==NULL)

{

printf("无法找到目标文件\n");

return;

}

label_1:

b=0;

while(!

(b>=1&&b<=12))

{

printf("请您输入您要建立的月份\n");

scanf("%d",&b);

}

b=b-1;

d=0;

while(!

(d>=10001&&d<=32767))

{

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

10001\n");

scanf("%d",&d);

}

for(i=0;i

=d;i++);

if(a[i].kahao!

=d)

{

c=0;

while(c!

=1&&c!

=2)

{

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

scanf("%d",&c);

}

if(c==2)

{

gotolabel_1;

}

if(c==1)

{

a[i].kahao=d;

printf("请输入姓名:

\n");

scanf("%s",a[i].xingming);

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

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

\n");

scanf("%f",&a[i].m[b].yfgz);

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

\n");

scanf("%f",&a[i].m[b].sf);

printf("请输入此人该月所用电费\n");

scanf("%f",&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;

}

ygsm++;

c=0;

while(c!

=1&&c!

=2)

{

printf("1继续\n2返回主菜单\n");

scanf("%d",&c);

}

if(c==1)

{

gotolabel_1;

}

if(c==2)

{

gotolabel_2;

}

}

}

else

{

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

{

c=0;

while(c!

=1&&c!

=2)

{

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

scanf("%d",&c);

}

if(c==1)

{

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

\n");

scanf("%d",&a[i].m[b].yfgz);

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

\n");

scanf("%d",&a[i].m[b].sf);

printf("请输入此人该月所用电费\n");

scanf("%d",&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;

}

while(c!

=1&&c!

=2)

{

printf("1继续\n2返回主菜单\n");

scanf("%d",&c);

}

if(c==1)

{

gotolabel_1;

}

if(c==2)

{

gotolabel_2;

}

}

else

{

gotolabel_1;

}

}

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

{

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

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

\n");

scanf("%f",&a[i].m[b].yfgz);

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

\n");

scanf("%f",&a[i].m[b].sf);

printf("请输入此人该月所用电费\n");

scanf("%f",&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;

}

c=0;

while(c!

=

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

当前位置:首页 > 初中教育 > 数学

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

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