分享
分销 收藏 举报 申诉 / 15
播放页_导航下方通栏广告

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

  • 上传人:二***
  • 文档编号:4540868
  • 上传时间:2024-09-27
  • 格式:DOCX
  • 页数:15
  • 大小:217KB
  • 下载积分:5 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    语言 课程 设计 报告 农民 工资 系统
    资源描述:
    C语言课程实训设计报告 一、 工程概述 我这次实训的工程主要是农民工资收入统计系统,农民工资收入统计系统主要实现的是农民信息的输入、输出,按农民的门牌号排序,实现农民信息的插入、查找、删除等操作,以及可以计算全村总收入和人均收入,也能够找出小康家庭、中等家庭以及贫困家庭。 这次实训的工程主要通过C语言来实现程序的运行,主要通过C语言中的函数调用和结构体来做程序,还要用到许多小的知识点,例如:用冒泡法实现排序;scanf、printf语句;strcpy复制语句;if……else语句实现选择……等等。 二、 工程分析和设计 主菜单 写入文件 找出小康家庭等 输入信息 输出信息 升序排序 插入并排序 查找并删除 总收入与人均收入 这个工程的程序可分为几个板块来做,每个板块有每个板块的作用,通过不同程序的不同作用相互调用即可实现整个程序的运行,这个工程程序主要可以分为以下几个板块: 1、定义头文件: 运用#include<stdio.h>,#include<stdlib.h>, #include<ctype.h>,#include<string.h>等头文件 2、定义结构体数组: 运用typedef struct {农民列表信息……}变量名表列; 这种类型是直接定义结构体类型变量。 3、对调用函数进行声明: 根据所写程序对有些函数进行声明,例如: Void show_menu();在程序中实现的是对菜单函数的调用。 4、主函数: Void main()为主函数,在主函数中通过do……while语句和 switch……case语句进行选择和函数调用。 Void main() { do {switch() …… } }while(); 5、菜单函数: 定义函数为 void show_menu() 主要用printf语句输出菜单函数,并且还通过主函数调用菜单函数实现对农民信息的选择。 6、输入农民的信息: 定义函数为int create(peasant nu[],int n) nu[]为结构体数组,在此函数中,通过scanf语句实现农民信息的输入,并用while语句判断并实现多余信息的去除,以及判断是否继续进行输入信息,最后还有一个值返还给主函数main()。 7、输出农民信息: 定义函数为 void print(peasant nu[],int n) 主要运用printf语句输出农民的信息,并用for语句和if语句判断,如果输入的信息超过十个就停止输入,假设没有就继续输。 用system(“pause〞)去除界面。 8、对函数进行排序: 定义函数为 void sort(peasant nu[],int n) 在此函数中,利用两层循环按门牌号进行排序,如果变量在结构体中定义成数组形式,就用strcpy语句进行复制;如果定义成整形就要新定义一个变量作为中间函数进行替换来实现数的交换。 9、插入信息并排序: 定义函数为 int insert(peasant nu[],int n) 在此函数中,利用scanf语句进行输入信息,再调用排序函数 sort(nu,n)进行排序,最后还要返回一个值到主函数main(). 10、查找并删除记录: int del(peasant nu[],int n) 此程序需要按姓名查找,所以输入姓名,并用while实现循环次数,用strcmp比拟输入姓名与原来姓名,假设strcmp(a,b)==0,即说明找到该信息并且删除,删除是通过for以及strcpy对查找的信息进行删除,假设strcmp(a,b)!=0,即说明没有找到该信息。 11、计算全村总收入以及人均收入 定义函数为 void ave(peasant nu[],int n) 在此函数中主要运用for语句进行控制,即可计算出总收入以及人均收入并输出。 12、找出小康家庭、中等家庭、贫困家庭 定义函数为 void fib(peasant nu[],int n) 在此函数中主要运用if……else语句进行判断选择,判断哪家是小康家庭,哪家是中等家庭,哪家是贫困家庭并且输出. void fib(peasant nu[],int n) { for(i=0;i<n;i++) { if() printf("\n"); else if() printf("\n"); else printf("\n"); } } 13、把所有程序写入文件中 定义函数为 void printfile(peasant nu[],int n) 首先先定义文件指针,用fopen〔“filename〞,“w〞〕翻开文件并判断是否能翻开文件,最后再用fclose(文件指针)关闭文件。 这个程序大体的设计便是如此,它包含了我们学过的许多知识,运用了许多重要的内容,总体分析即是如此。 三、工程关键代码〔加注释〕 #include<stdio.h> #include<stdlib.h> #include<ctype.h> #include<string.h> typedef struct /*定义结构体数组*/ { char num[20]; char name[20]; long int income; }peasant; peasant nu1[10000]; void show_menu(); int create(peasant nu[],int n); void print(peasant nu[], int n); void sort(peasant nu[],int n); int insert(peasant nu[],int n); int del(peasant nu[],int n); void ave(peasant nu[],int n); void fib(peasant nu[],int n); void printfile(peasant nu[],int n); void main() /*主函数*/ { int n=0; int no; do { show_menu(); printf("please input your choice\n"); scanf(“%d〞,&no); switch(no) { case 1: printf("输入记录\n"); n=create(nu1,n);break; case 2: printf("输出信息\n"); print(nu1,n);break; case 3: printf("按门牌号排序并显示\n"); sort(nu1,n); printf("排序成功!\n"); print(nu1,n); printf("\t\t");break; case 4: printf("插入信息并按门牌号排序及显示\n"); n=insert(nu1,n); print(nu1,n); printf("\t\t");break; case 5: printf("根据姓名查找并删除记录\n"); n=del(nu1,n); printf("\t\t"); system("pause");break; case 6: printf("计算总收入和人均收入\n"); ave(nu1,n); system("pause");break; case 7: printf("找出小康家庭,中等家庭,贫困家\n"); fib(nu1,n); system("pause");break; case 8: printf("循环写入数据\n"); printfile(nu1,n); printf("\t\t"); system("pause");break; case 0: printf("\t\t谢谢使用,祝你好运,再见!\n"); printf("\t\t"); system("pause"); exit(0); } }while(no!=0); } void show_menu() { system("cls"); /*运行前清屏*/ printf("************************主菜单**********************\n"); printf("*1.输入农民工的门牌号、姓名、收入 *\n"); *\n"); *\n"); printf("*4.实现农民信息的插入,后按门牌号从小到大输出 *\n"); printf("*5.根据姓名查找,并删除该信息 *\n"); *\n"); printf("*7.找出小康家庭,中等家庭,贫困家庭 *\n"); *\n"); printf("*0.退出 *\n"); printf("****************************************************\n"); } int create(peasant nu[],int n) /*输入信息*/ { int i=0; char sign,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); } void print(peasant nu[], int n) /* 输出结果*/ { int i; printf("--------------------------------------------------\n"); /*格式头*/ printf("门牌号 姓名 收入 \n"); printf("--------------------------------------------------\n"); for(i=1;i<n+1;i++) /*循环输入*/ { printf("%-10s%-10s%-10d\n",nu[i-1].num,nu[i-1].name,nu[i-1].income); if(i>1&&i%10==0) /*每十个暂停*/ {printf("--------------------------------------------------\n"); /*格式*/ printf("\t\t"); system("pause"); printf("--------------------------------------------------\n"); } } printf("\t\t"); system("pause"); } void sort(peasant nu[],int n) /*按门牌号排序*/ { int i,j; char t[10]; int s; for(i=0;i<n-1;i++) /*冒泡法排序*/ for(j=0;j<n-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; } } int insert(peasant nu[],int n) /*插入记录,并按门牌号升序排序*/ { char x[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); } int del(peasant nu[],int n) /*按姓名查找并删除记录*/ { char s[20]; int i=0,j; printf("输入农民的姓名:"); /*交互式问寻*/ scanf("%s",s); while(strcmp(nu[i].name,s)!=0&&i<n) i++; /*查找判断*/ if(i==n) { printf("对不起没找到该农民!\n"); /*返回失败信息*/ return(n); } for(j=i;j<n-1;j++) /*删除操作*/ { strcpy(nu[j].num,nu[j+1].num); strcpy(nu[j].name,nu[j+1].name); nu[j].income=nu[j+1].income; } printf("删除记录成功!\n"); /*返回成功信息*/ return(n-1); } void ave(peasant nu[],int n) { int i; float average=0.0; long int sum=0; peasant *p; p=nu; for(i=0;i<n;i++,p++) sum+=p->income; average=sum/n; printf("全村总收入是:%ld\n",sum); printf("人均收入是:%f",average); } void fib(peasant nu[],int n) { int i; for(i=0;i<n;i++) { if(nu[i].income>20000) printf("是小康家庭\n"); else if(nu[i].income>10000) printf("是中等家庭\n"); else printf("是贫困家庭\n"); } } void printfile(peasant nu[],int n) { int i=0; FILE *fp; /*定义文件指针*/ char filename[100]; /*定义文件名*/ printf("循环写入数据\n"); /*输入文件名*/ printf("输入文件名:"); scanf("%s",filename); if((fp=fopen("filename","w"))==NULL) /*翻开文件*/ { printf("无法翻开该文件\n"); system("pause"); return; } fprintf(fp,"%d\n",n); /*循环写入数据*/ while(i<n) { fprintf(fp,"%-10s%-10s%-10s%-10d\n",nu[i].num,nu[i].name,nu[i].income); i++; } fclose(fp); /*关闭文件*/ printf("写入成功!\n"); /*返回成功信息*/ } 四、工程调试和运行〔界面〕 1、输入农民的信息并显示出界面 2、选择2,显示出输入的农民的信息 3、按任意键并选择3,可以对输入的信息进行升序排序 4、按任意键并选择4,可以插入一条记录并会按升序排序显示出来 5、按任意键并选择5,可以查找一条记录并会删除该条记录 6、按任意键并选择6,可以计算出全村总收入和人均收入 7、按任意键并选择7,可以找出小康家庭等 8、按任意键并选择8,可以写入文件 图见下面 五、实训设计的心得体会 在为期将近十天的C语言程序设计过程中,我从中学到很多,我受益匪浅,感受很深,让我从中了解到C语言程序编程的微妙,学会了许多关于编程的代码,我在这次编写程序中,虽然有点累,但是我从中也得到了乐趣,我觉得编写程序越来越有趣。 但是在编写程序的过程中并不是一帆风顺、顺顺利利的,一开始编写的时候并不知道该怎么着手去编写,很茫然,但是后来经过老师的提点以及提示,我能够去试着编写一个一个小片段,当我把这些小程序拼到一起变成大程序时,我很快乐,因为我毕竟做出来一些内容了。当我将这些程序利用VC进行编译、链接的时候,程序出现了许多错误,当时吓了一跳,但我并没有气馁,我试着去找这些错误并改正,其中程序中的错误有很多种,比方有语法错误,逻辑错误等。语法错误例如:(1)字符与字符串应该用单引号还是用双引号,在程序中我将单引号错用成双引号;(2)忘记定义变量。在该程序中我忘记了定义有些所用变量。(3)函数声明与函数定义不一致。在程序中我声明函数时,将参数顺序不匹配。(4)函数实参与形参的类型不一致,在此程序中,我将一个定义成整型,而定义另一个时却定义成单精度型,导致程序出错误。语法错误还有很多,我在程序中还改正了很多,这些错误让我印象深刻,在以后的编写程序中我要牢牢记住。除了许多语法错误外,还有很多逻辑错误以及警告,这些就要我们一步一步去检查程序。在这个程序中使我印象最深刻的错误是:程序运行出来,但是结果却一闪而过,有些界面不能显示出来,但是经过老师的指导,我将这个错误解决了。在实训过程中自己有时候也想过放弃,可是当自己看到这么一大段代码是放弃的心又被淹没了,因为看到这长长的代码自己的信心又被提升起来,编写程序的乐趣也有了。 在这次的实训中我知道了要做一个程序,首先要知道程序的算法,在了解算法的根底上要知道怎样运用算法,进一步说是怎样运用算法写程序,不管是大程序还是小程序都要用到算法。平时我们学习C语言只是为了考试以及做一些简单的题目,然而这次我们做实训给我们将所学知识运用于解决实际问题的时机,我们从中得到了很多,在运用所学知识的过程中,记住这些知识,让我们将这些知识应用到更广泛的领域。 这次的编写程序又让我感受到学习编写程序可以锻炼缜密的思维,在平时我们只编写一些小程序,句段比拟少,一些错误都很容易被检查出来,但是这次实训工程的程序语段比拟多,难以检查,那一刹那感到很着急,但是改正了一些之后,信心就被提了上来,在经过老师的指点,改正了许多错误。 实训不仅是检查一个人知识掌握了多少,其实更重要的实检测你的实践能力,以及看你是否细心、是否有缜密的思维,这次实训懂得了只要你具备以上几个条件,那么你的实践能力不会太差,所以,在这方面我们要加强锻炼,磨练自己,使自己有更高的提高。 六、参考文献 1、C程序设计(第三版) 清华大学出版社 谭浩强 编著 2、C语言程序设计实验指导 人民邮电出版社 张丽华 主编 3、C语言程序设计案例教程(习题解析与实验指导) 清华大学出版社 张基温 编著
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:C语言课程实训设计报告(农民工资系统).docx
    链接地址:https://www.zixin.com.cn/doc/4540868.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork