




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言课程实训设计报告一、 项目概述 我这次实训的项目主要是农民工资收入统计系统,农民工资收入统计系统主要实现的是农民信息的输入、输出,按农民的门牌号排序,实现农民信息的插入、查找、删除等操作,以及可以计算全村总收入和人均收入,也能够找出小康家庭、中等家庭以及贫困家庭。这次实训的项目主要通过C语言来实现程序的运行,主要通过C语言中的函数调用和结构体来做程序,还要用到许多小的知识点,例如:用冒泡法实现排序;scanf、printf语句;strcpy复制语句;ifelse语句实现选择等等。二、 项目分析和设计主菜单写入文件找出小康家庭等输入信息输出信息升序排序插入并排序查找并删除总收入与人均收入 这个项目的程序可分为几个板块来做,每个板块有每个板块的作用,通过不同程序的不同作用相互调用即可实现整个程序的运行,这个项目程序主要可以分为以下几个板块:1、定义头文件: 运用#include,#include, #include,#include等头文件2、定义结构体数组: 运用typedef struct 农民列表信息变量名表列; 这种类型是直接定义结构体类型变量。3、对调用函数进行声明: 根据所写程序对有些函数进行声明,例如: Void show_menu();在程序中实现的是对菜单函数的调用。4、主函数: Void main()为主函数,在主函数中通过dowhile语句和 switchcase语句进行选择和函数调用。 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) 在此函数中主要运用ifelse语句进行判断选择,判断哪家是小康家庭,哪家是中等家庭,哪家是贫困家庭并且输出. void fib(peasant nu,int n) for(i=0;in;i+) if() printf(n); else if() printf(n); else printf(n); 13、把所有程序写入文件中 定义函数为 void printfile(peasant nu,int n) 首先先定义文件指针,用fopen(“filename”,“w”)打开文件并判断是否能打开文件,最后再用fclose(文件指针)关闭文件。这个程序大体的设计便是如此,它包含了我们学过的许多知识,运用了许多重要的内容,总体分析即是如此。三、项目关键代码(加注释)#include#include#include#includetypedef struct /*定义结构体数组*/ char num20; char name20; long int income; peasant;peasant nu110000;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 choicen);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(tt);break; case 4: printf(插入信息并按门牌号排序及显示n); n=insert(nu1,n); print(nu1,n); printf(tt);break; case 5: printf(根据姓名查找并删除记录n); n=del(nu1,n); printf(tt); 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(tt); system(pause);break; case 0: printf(tt谢谢使用,祝你好运,再见!n); printf(tt); system(pause); exit(0); while(no!=0);void show_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);int create(peasant nu,int n) /*输入信息*/ int i=0; char sign,x10; /*x10为清除多余的数据所用*/ while(sign!=n&sign!=N) /*判断*/ printf(门牌号:); /*交互输入*/ scanf(%s,nun+i.num); printf(姓名:); scanf(%s,nun+); printf(收入:); scanf(%d,&nun+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;i1&i%10=0) /*每十个暂停*/ printf(-n); /*格式*/ printf(tt); system(pause); printf(-n); printf(tt);system(pause);void sort(peasant nu,int n) /*按门牌号排序*/ int i,j; char t10; int s; for(i=0;in-1;i+) /*冒泡法排序*/ for(j=0;j0) strcpy(t,nuj+1.num); strcpy(nuj+1.num,nuj.num); strcpy(nuj.num,t); strcpy(t,nuj+1.name); strcpy(nuj+1.name,); strcpy(,t); s=nuj.income;nuj.income=nuj+1.income;nuj+1.income=s; int insert(peasant nu,int n) /*插入记录,并按门牌号升序排序*/ char x100; /*清除多余输入所用*/ printf(农民门牌号:); /*交互式输入*/ scanf(%s,nun.num); printf(农民姓名:); scanf(%s,); printf(农民工资:); scanf(%d,&nun.income); gets(x); n+; sort(nu,n); /*调用排序函数*/ printf(插入记录成功!n); /*返回成功信息*/ return(n);int del(peasant nu,int n) /*按姓名查找并删除记录*/char s20; int i=0,j; printf(输入农民的姓名:); /*交互式问寻*/ scanf(%s,s); while(strcmp(,s)!=0&in) i+; /*查找判断*/ if(i=n) printf(对不起没找到该农民!n); /*返回失败信息*/ return(n); for(j=i;jn-1;j+) /*删除操作*/ strcpy(nuj.num,nuj+1.num); strcpy(,nuj+1.name); nuj.income=nuj+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;iincome;average=sum/n;printf(全村总收入是:%ldn,sum);printf(人均收入是:%f,average);void fib(peasant nu,int n) int i; for(i=0;i20000) printf(是小康家庭n); else if(nui.income10000) printf(是中等家庭n); else printf(是贫困家庭n); void printfile(peasant nu,int n) int i=0; FILE *fp; /*定义文件指针*/ char filename100; /*定义文件名*/ printf(循环写入数据n); /*输入文件名*/ printf(输入文件名:); scanf(%s,filename); if(fp=fopen(filename,w)=NULL) /*打开文件*/ printf(无法打开该文件n); system(pause); return; fprintf(fp,%dn,n); /*循环写入数据*/ while(in) fprintf(fp,%-10s%-10s%-10s%-10dn,nui.num,,nui.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)函数实参与形参的类型不一致,在此程序中,我将一个定义成整型,而定义另一个时却定义成单精度型,导致程序出错误。语法错误还有很多,我在程序中还改正了很多,这些错误让我印象深刻,在以后的编写程序中我要牢牢记住。除了许多语法错误外,还有很多逻辑错误以及警告,这些就要我们一步一步去
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 遗传性肾癌VHL综合征型护理查房
- 特发性肺纤维化合并呼吸衰竭护理查房
- 阿尔山市2025-2026学年八年级下学期语文月考测试试卷
- 安徽省淮北市相山区2024-2025学年高一上学期第二次月考物理试题及答案
- 2025 年小升初忻州市初一新生分班考试英语试卷(带答案解析)-(外研版)
- 2025 年小升初衡水市初一新生分班考试数学试卷(带答案解析)-(冀教版)
- 工程热力学及内燃机原理2012年7月自考试题
- 甘肃省白银十中2024-2025学年八年级下学期期末物理试卷(含答案)
- 进口药品销售合同范本
- 别墅改造租房合同范本
- 有创血压测量操作评分标准
- 架桥机事故案例警示-课件
- 茶文化与茶疗课件
- 班组长执行力管理培训
- 家谱图和家庭治疗课件
- 建筑工程施工转包违法分包等违法行为监督检查工作方案
- 外研版六年级上册英语 Module 2 单元测试卷(含听力音频)
- 《建筑材料与检测》教学课件(全)
- 2022年北京市中考地理试题及参考答案
- 干燥塔安装施工工艺标准
- 地震勘探原理及方法实验指导书
评论
0/150
提交评论