C语言课程实训设计报告(农民工资系统)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

C语言课程实训设计报告一、项目概述我这次实训的项目主要是农民工资收入统计系统,农民工资收入统计系统主要实现的是农民信息的输入、输出,按农民的门牌号排序,实现农民信息的插入、查找、删除等操作,以及可以计算全村总收入和人均收入,也能够找出小康家庭、中等家庭以及贫困家庭。这次实训的项目主要通过C语言来实现程序的运行,主要通过C语言中的函数调用和结构体来做程序,还要用到许多小的知识点,例如:用冒泡法实现排序;scanf、printf语句;strcpy复制语句;if……else语句实现选择……等等。二、项目分析和设计这个项目的程序可分为几个板块来做,每个板块有每个板块的作用,通过不同程序的不同作用相互调用即可实现整个程序的运行,这个项目程序主要可以分为以下几个板块:1、定义头文件:运用#includestdio.h,#includestdlib.h,主菜单输入信息输出信息升序排序插入并排序查找并删除总收入与人均收入找出小康家庭等写入文件#includectype.h,#includestring.h等头文件2、定义结构体数组:运用typedefstruct{农民列表信息……}变量名表列;这种类型是直接定义结构体类型变量。3、对调用函数进行声明:根据所写程序对有些函数进行声明,例如:Voidshow_menu();在程序中实现的是对菜单函数的调用。4、主函数:Voidmain()为主函数,在主函数中通过do……while语句和switch……case语句进行选择和函数调用。Voidmain(){do{switch()……}}while();5、菜单函数:定义函数为voidshow_menu()主要用printf语句输出菜单函数,并且还通过主函数调用菜单函数实现对农民信息的选择。6、输入农民的信息:定义函数为intcreate(peasantnu[],intn)nu[]为结构体数组,在此函数中,通过scanf语句实现农民信息的输入,并用while语句判断并实现多余信息的清除,以及判断是否继续进行输入信息,最后还有一个值返还给主函数main()。7、输出农民信息:定义函数为voidprint(peasantnu[],intn)主要运用printf语句输出农民的信息,并用for语句和if语句判断,如果输入的信息超过十个就停止输入,若没有就继续输。用system(“pause”)清除界面。8、对函数进行排序:定义函数为voidsort(peasantnu[],intn)在此函数中,利用两层循环按门牌号进行排序,如果变量在结构体中定义成数组形式,就用strcpy语句进行复制;如果定义成整形就要新定义一个变量作为中间函数进行替换来实现数的交换。9、插入信息并排序:定义函数为intinsert(peasantnu[],intn)在此函数中,利用scanf语句进行输入信息,再调用排序函数sort(nu,n)进行排序,最后还要返回一个值到主函数main().10、查找并删除记录:intdel(peasantnu[],intn)此程序需要按姓名查找,所以输入姓名,并用while实现循环次数,用strcmp比较输入姓名与原来姓名,若strcmp(a,b)==0,即表明找到该信息并且删除,删除是通过for以及strcpy对查找的信息进行删除,若strcmp(a,b)!=0,即表明没有找到该信息。11、计算全村总收入以及人均收入定义函数为voidave(peasantnu[],intn)在此函数中主要运用for语句进行控制,即可计算出总收入以及人均收入并输出。12、找出小康家庭、中等家庭、贫困家庭定义函数为voidfib(peasantnu[],intn)在此函数中主要运用if……else语句进行判断选择,判断哪家是小康家庭,哪家是中等家庭,哪家是贫困家庭并且输出.voidfib(peasantnu[],intn){for(i=0;in;i++){if()printf(\n);elseif()printf(\n);elseprintf(\n);}}13、把所有程序写入文件中定义函数为voidprintfile(peasantnu[],intn)首先先定义文件指针,用fopen(“filename”,“w”)打开文件并判断是否能打开文件,最后再用fclose(文件指针)关闭文件。这个程序大体的设计便是如此,它包含了我们学过的许多知识,运用了许多重要的内容,总体分析即是如此。三、项目关键代码(加注释)#includestdio.h#includestdlib.h#includectype.h#includestring.htypedefstruct/*定义结构体数组*/{charnum[20];charname[20];longintincome;}peasant;peasantnu1[10000];voidshow_menu();intcreate(peasantnu[],intn);voidprint(peasantnu[],intn);voidsort(peasantnu[],intn);intinsert(peasantnu[],intn);intdel(peasantnu[],intn);voidave(peasantnu[],intn);voidfib(peasantnu[],intn);voidprintfile(peasantnu[],intn);voidmain()/*主函数*/{intn=0;intno;do{show_menu();printf(pleaseinputyourchoice\n);scanf(“%d”,&no);switch(no){case1:printf(输入记录\n);n=create(nu1,n);break;case2:printf(输出信息\n);print(nu1,n);break;case3:printf(按门牌号排序并显示\n);sort(nu1,n);printf(排序成功!\n);print(nu1,n);printf(\t\t);break;case4:printf(插入信息并按门牌号排序及显示\n);n=insert(nu1,n);print(nu1,n);printf(\t\t);break;case5:printf(根据姓名查找并删除记录\n);n=del(nu1,n);printf(\t\t);system(pause);break;case6:printf(计算总收入和人均收入\n);ave(nu1,n);system(pause);break;case7:printf(找出小康家庭,中等家庭,贫困家\n);fib(nu1,n);system(pause);break;case8:printf(循环写入数据\n);printfile(nu1,n);printf(\t\t);system(pause);break;case0:printf(\t\t谢谢使用,祝你好运,再见!\n);printf(\t\t);system(pause);exit(0);}}while(no!=0);}voidshow_menu(){system(cls);/*运行前清屏*/printf(************************主菜单**********************\n);printf(*1.输入农民工的门牌号、姓名、收入*\n);printf(*2.输出所有农民工的信息*\n);printf(*3.实现按门牌号进行升序排序*\n);printf(*4.实现农民信息的插入,后按门牌号从小到大输出*\n);printf(*5.根据姓名查找,并删除该信息*\n);printf(*6.计算全村总收入和人均收入*\n);printf(*7.找出小康家庭,中等家庭,贫困家庭*\n);printf(*8.把所有农民工信息写入到文件中去*\n);printf(*0.退出*\n);printf(****************************************************\n);}intcreate(peasantnu[],intn)/*输入信息*/{inti=0;charsign,x[10];/*x[10]为清除多余的数据所用*/while(sign!='n'&&sign!='N')/*判断*/{printf(门牌号:);/*交互输入*/scanf(%s,nu[n+i].num);printf(姓名:);scanf(%s,nu[n+i].name);printf(收入:);scanf(%d,&nu[n+i].income);gets(x);/*清除多余的输入*/printf(是否继续输入?(Y/N));scanf(%c,&sign);/*输入判断*/i++;}return(n+i);}voidprint(peasantnu[],intn)/*输出结果*/{inti;printf(--------------------------------------------------\n);/*格式头*/printf(门牌号姓名收入\n);printf(--------------------------------------------------\n);for(i=1;in+1;i++)/*循环输入*/{printf(%-10s%-10s%-10d\n,nu[i-1].num,nu[i-1].name,nu[i-1].income);if(i1&&i%10==0)/*每十个暂停*/{printf(--------------------------------------------------\n);/*格式*/printf(\t\t);system(pause);printf(--------------------------------------------------\n);}}printf(\t\t);system(pause);}voidsort(peasantnu[],intn)/*按门牌号排序*/{inti,j;chart[10];ints;for(i=0;in-1;i++)/*冒泡法排序*/for(j=0;jn-1-i;j++)if(strcmp(nu[j].num,nu[j+1].num)0){strcpy(t,nu[j+1].num);strcpy(nu[j+1].num,nu[j].num);strcpy(nu[j].num,t);strcpy(t,nu[j+1].name);strcpy(nu[j+1].name,nu[j].name);strcpy(nu[j].name,t);s=nu[j].income;nu[j].income=nu[j+1].income;nu[j+1].income=s;}}intinsert(peasantnu[],intn)/*插入记录,并按门牌号升序排序*/{charx[100];/*清除多余输入所用*/printf(农民门牌号:);/*交互式输入*/scanf(%s,nu[n].num);printf(农民姓名:);scanf(%s,nu[n].name);printf(农民工资:);scanf(%d,&nu[n].income);gets(x);n++;sort(nu,n);/*调用排序函数*/printf(插入记录成功!\n);/*返回成功信息*/return(n);}intdel(peasantnu[],intn)/*按姓名查找并删除记录*/{chars[20];inti=0,j;printf(输入农民的姓名:);/*交互式问寻*/scanf(%s,s);while(strcmp(nu[i].name,s)!=0&&in)i++;/*查找判断*/if(i==n){printf(对不起没找到该农民!\n);/*返回失败信息*/return(n);}for(j=i

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功