C语言课程设计共18页.doc
如有侵权,请联系网站删除,仅供学习与交流C语言课程设计【精品文档】第 16 页成 绩 评 定 表学生姓名班级学号专 业通信工程课程设计题目C语言课程设计评语组长签字:成绩日期2013 年 月 日课程设计任务书学 院信息科学与工程学院专 业通信工程学生姓名班级学号课程设计题目C语言课程设计实践教学要求与任务:利用C语言编写下题的代码。题目名称:查找分数与删除元素、工资统计程序的设计内容及要求:1. 编程,先从键盘输入一组学生成绩到数组中,然后输入某一个分数段,查找输出该分数段内的所有成绩。2. 编写函数fun(int xx ,int n , int y),其中n代表数组元素的个数,y中内容是要删除的元素值。函数的功能是数组xx中所有值为y的元素。数组中的值和y的值由主函数通过键盘输入。3. 工资统计程序设计 设计结构体数组,结构中包含职工数据为:编号、姓名、部门、应付工资、保险、税金、实付工资。其中实付工资由公式计算得到:实付工资=应付工资-保险-税金设计各个函数,分别实现以下功能: (1) 输入职工数据,其中“实付工资”通过计算得到。(2) 显示全体职工数据。(3) 输入某部门值,显示该部门职工的数据、工资总额、平均工资。设计菜单,通过选择菜单调用以上各函数;系统启动时数据可由文件导入,录入新的数据或修改数据后,可将数据重新写入文件。工作计划与进度安排:第18-19周:第18周C语言基础编程练习第18周算法设计及编写程序代码第19周编写程序代码及程序调试第19周程序验收及答辩指导教师: 2013年 月 日专业负责人:2013年 月 日学院教学副院长:2013 年 月 日目 录一、题目要求3二、算法设计4三、编程实现10四、结果分析25五、参考文献28一、题目要求题目名称:查找分数与删除元素、工资统计程序的设计内容:1、编程,先从键盘输入一组学生成绩到数组中,然后输入某一个分数段,查找输出该分数段内的所有成绩。2、编写函数fun(int xx ,int n , int y),其中n代表数组元素的个数,y中内容是要删除的元素值。函数的功能是数组xx中所有值为y的元素。数组中的值和y的值由主函数通过键盘输入3、工资统计程序设计 设计结构体数组,结构中包含职工数据为:编号、姓名、部门、应付工资、保险、税金、实付工资。其中实付工资由公式计算得到:实付工资=应付工资-保险-税金。设计各个函数,分别实现以下功能: (1) 输入职工数据,其中“实付工资”通过计算得到。(2) 显示全体职工数据。(3) 输入某部门值,显示该部门职工的数据、工资总额、平均工资。设计菜单,通过选择菜单调用以上各函数;系统启动时数据可由文件导入,录入新的数据或修改数据后,可将数据重新写入文件。要求:利用C语言编写上述程序,开发环境可采用Turbo C 2.0 或Visual C+ 6.0等。二、算法设计1、编程,先从键盘输入一组学生成绩到数组中,然后输入某一个分数段,查找输出该分数段内的所有成绩。开始定义一个数组aN,变量i输入N个数据给数组ai=0i<N-1? 否 是输入1个数据给数组a输出“请按由小到大的顺序输入分数段”定义变量 m n输入成绩给m11输入成绩给nk=0k<N-1?naNm?定义变量k 否 是 否k+ 是 输出ak 结束注: 此函数功能是,输入一组成绩,然后在程序中输入所要查询的成绩分数段,输出该分数段的所有成绩。2、编写函数fun(int xx ,int n , int y),其中n代表数组元素的个数,y中内容是要删除的元素值。函数的功能是数组xx中所有值为y的元素。数组中的值和y的值由主函数通过键盘输入。开始定义一个数组xxN,变量i,j,y输入N个数据给数组xxi<N?i=0 否 是输出“请输入要删除的元素值”输入一个数据给数组x输入一个 要删除的值i+调用函数fun(xx,N,y),j= fun(xx,N,y)输出“删除后的数组为:”11i<N-j?i=0i+输入一个数据给数组x 是输出“n”,换行结束注: fun(xx ,int n, int y)函数 功能是对数组中含有y的元素删除。其中含有xx ,int n, int y 3个变量,xx 是指定的数组,n表示数组中的元素个数,y表示要删除的数组中的元素值。3、 工资统计程序设计 设计结构体数组,结构中包含职工数据为:编号、姓名、部门、应付工资、保险、税金、实付工资。其中实付工资由公式计算得到:实付工资=应付工资-保险-税金设计各个函数,分别实现以下功能: (1) 输入职工数据,其中“实付工资”通过计算得到。(2) 显示全体职工数据。开始定义变量a,flag=0,number=0输入一个数据给aa=1?调用函数 shuru(); 调用函数 shuchu();调用函数 caidan();a=2?12flag=0?输出“录入职工信息请按1,新增职工信息请按2”结 束(3) 输入某部门值,显示该部门职工的数据、工资总额、平均工资。设计菜单,通过选择菜单调用以上各函数;系统启动时数据可由文件导入,录入新的数据或修改数据后,可将数据重新写入文件。 是 否 否是 否 是调用函数 shuru(); 调用函数 shuchu();调用函数 caidan();2调用函数 load ( ); 调用函数 zengjia ( );1输出“没有这个选项”flag=1输出请输入增加职工的个数输入一个数值给numberzengjia(number)注: 函数说明:void shuru(); /用来输入增加职工的信息void shuchu(); /用来输出文件中所有职工的信息void save(int n); /将职工信息保存到文件中,实现导入void zengjia(int n); /增加职工的信息void xiugai(); /修改职工的信息void chaxun(); /按照部门查询职工信息void caidan(); /基本的菜单,按提示操作load(); /将职工信息从文件中导出三、编程实现程序的具体C语言代码如下:第1题:/* 编程人:楚天辞 完成时间 2012年7月5日 联系方式:15840248422*/#include<stdio.h>main()float m,n, a6; int i, k;printf(" 请输入一个数组:n");for (i=0 ;i<6; i+)scanf("%f",&ai);printf(" 请按由小到大的顺序输入分数段n");scanf("%f",&n);scanf("%f",&m);printf(" 以下成绩属于该分数段n");for (k=0 ;k<6; k+)if(n<=ak&&ak<=m)printf("% 9.2fn",ak);printf("n");第2题:#include<stdio.h>#define N 10int fun(int xx,int n,int y)int i,j=0,k;for(i=0;i<n-j;i+) / j表示要删除的数值个数,而n-j表示数组有效的数值个数if(xxi=y) for(k=i;k<n-1;k+) /从删除位置后面的第一个元素值开始向前移动 xxk=xxk+1; j+; return j; main()int i,j,y,xxN;printf("请输入%d个数组的元素值n",N);for(i=0;i<N;i+)scanf("%d",&xxi);printf("请输入要删除的元素值n");scanf("%d",&y);j=fun(xx,N,y);printf("删除后的数组为:n");for(i=0;i<N-j;i+)printf("%5d",xxi);printf("n");第3题:#include<stdio.h>#include<string.h>struct zijinint bianhao;char xingming20;char bumen100;float yfgz;float baoxian;float shuijin;float sfgz; zhigong100; /定义结构体数组zhigongvoid shuru(); /用来输入增加职工的信息void shuchu(); /用来输出文件中所有职工的信息void save(int n); /将职工信息保存到文件中,实现导入void zengjia(int n); /增加职工的信息void xiugai(); /修改职工的信息void chaxun(); /按照部门查询职工信息void caidan(); /基本的菜单,按提示操作load(); /将职工信息从文件中导出int sumNum; /商品总个数main()int a,flag=0,number=0;doprintf("录入职工信息请按1,新增职工信息请按2n");scanf("%d",&a);if(a=1)shuru(); / 输入数据shuchu();caidan();else if(a=2)sumNum=load(); /将文件中原有的职工信息个数传给sumNumprintf("请输入增加职工的个数n");scanf("%d",&number);zengjia(number);elseprintf("没有这个选项n");flag=1;while(flag);void caidan()int a,flag=0,number=0;doprintf("增加职工信息请按1,修改职工信息请按2,查询职工信息请按3,退出请按4n");scanf("%d",&a);if(a=1)printf("请输入增加职工的个数n");scanf("%d",&number);zengjia(number);continue;else if(a=2)xiugai();else if(a=3)chaxun();else if(a=4)save(sumNum);break;elseprintf("没有这个选项n");flag=1;while(flag);void shuru()int i,n;printf("输入多少个职工信息n");scanf("%d",&n);for(i=0;i<n;i+)printf("请输入第%d个职工编号n",i+1);scanf("%d",&zhigongi.bianhao);printf("请输入第%d个职工姓名n",i+1);scanf("%s",zhigongi.xingming);printf("请输入第%d个职工部门n",i+1);scanf("%s",zhigongi.bumen);printf("请输入第%d个职工应付工资n",i+1);scanf("%f",&zhigongi.yfgz);printf("请输入第%d个职工保险n",i+1);scanf("%f",&zhigongi.baoxian);printf("请输入第%d个职工税金n",i+1);scanf("%f",&zhigongi.shuijin);zhigongi.sfgz = zhigongi.yfgz - zhigongi.baoxian - zhigongi.shuijin;sumNum=n;save(sumNum);void shuchu()int i;printf(" 编号 姓名 部门 应付工资 保险 税金 实付工资 n");for(i=0;i<sumNum;i+)printf(" %4d %8s %4s %.2f %.2f %.2f %.2fn",zhigongi.bianhao,zhigongi.xingming,zhigongi.bumen,zhigongi.yfgz,zhigongi.baoxian,zhigongi.shuijin,zhigongi.sfgz);void save(int n)int i;FILE *fp;if(fp=fopen("C:chutianci.txt","wt+")=NULL)printf("you are wrong!n");for(i=0;i<n;i+)fscanf(fp,"%d",&zhigongi.bianhao); /将对应的职工的编号按照%d的格式输入到fp所指向的文件中fscanf(fp,"%s",zhigongi.xingming);fscanf(fp,"%s",zhigongi.bumen);fscanf(fp,"%f",&zhigongi.yfgz);fscanf(fp,"%f",&zhigongi.baoxian);fscanf(fp,"%f",&zhigongi.shuijin);fscanf(fp,"%f",&zhigongi.sfgz);for(i=0;i<sumNum;i+)fprintf(fp," %4d %8s %4s %.2f %.2f %.2f %.2fn",zhigongi.bianhao,zhigongi.xingming,zhigongi.bumen,zhigongi.yfgz,zhigongi.baoxian,zhigongi.shuijin,zhigongi.sfgz);fclose(fp); /文件关闭,防止数据的流失load()int i=0;FILE *fp;fp=fopen("C:chutianci.txt","rt+");dofscanf(fp,"%d",&zhigongi.bianhao);fscanf(fp,"%s",zhigongi.xingming);fscanf(fp,"%s",zhigongi.bumen);fscanf(fp,"%f",&zhigongi.yfgz);fscanf(fp,"%f",&zhigongi.baoxian);fscanf(fp,"%f",&zhigongi.shuijin);fscanf(fp,"%f",&zhigongi.sfgz);i+;while(feof(fp)=0); /feof函数,检测文件的数据流是否结束return (i-1);void zengjia(int n)int i;struct zijin temp;for(i=0;i<n;i+)printf("请输入增加的第%d个职工的编号n",i+1);scanf("%d",&temp.bianhao);printf("请输入增加的第%d个职工的姓名n",i+1);scanf("%s",temp.xingming);printf("请输入增加的第%d个职工的部门n",i+1);scanf("%s",temp.bumen);printf("请输入增加的第%d个职工的应付工资n",i+1);scanf("%f",&temp.yfgz);printf("请输入增加的第%d个职工的保险n",i+1);scanf("%f",&temp.baoxian);printf("请输入增加的第%d个职工的税金n",i+1);scanf("%f",&temp.shuijin);temp.sfgz = temp.yfgz - temp.baoxian - temp.shuijin;zhigongsumNum+=temp;save(sumNum);shuchu();caidan();void xiugai()int a,i,b,j=0;printf("请输入您要修改的职工的编号n");scanf("%d",&a);for(i=0;i<sumNum;i+)if(zhigongi.bianhao=a)break;elsej+;if(j=sumNum)printf("没有该编号的职工n");shuchu();xiugai();printf("修改本职工的哪一项?n");printf("编号请按1,姓名请按2,部门请按3,应付工资请按4,保险请按5,税金请按6,取消请按7n");scanf("%d",&b);if(b=1)printf("本职工原编号为%d请输入本职工的新编号n",zhigongi.bianhao);scanf("%d",&zhigongi.bianhao);save(sumNum);shuchu();caidan();else if(b=2)printf("本职工原姓名为%s请输入本职工的新姓名n",zhigongi.xingming);scanf("%s",zhigongi.xingming);save(sumNum);shuchu();caidan();else if(b=3)printf("本职工原部门为%s请输入本职工的新部门n",zhigongi.bumen);scanf("%s",zhigongi.bumen);save(sumNum);shuchu();caidan();else if(b=4)printf("本职工原售价为%f请输入本职工的新应付工资n",zhigongi.yfgz);scanf("%f",&zhigongi.yfgz);zhigongi.sfgz = zhigongi.yfgz - zhigongi.baoxian - zhigongi.shuijin;save(sumNum);shuchu();caidan();else if(b=5)printf("本职工原保险为%d请输入本职工的新保险n",zhigongi.baoxian);scanf("%d",&zhigongi.baoxian);zhigongi.sfgz = zhigongi.yfgz - zhigongi.baoxian - zhigongi.shuijin;save(sumNum);shuchu();caidan();else if(b=6)printf("本职工原税金为%d请输入本职工的新税金n",zhigongi.shuijin);scanf("%d",&zhigongi.shuijin);zhigongi.sfgz = zhigongi.yfgz - zhigongi.baoxian - zhigongi.shuijin;save(sumNum);shuchu();caidan();else if(b=7)shuchu();caidan();elseprintf("没有这个选项n");shuchu();xiugai();void chaxun()int i,a;struct zijin temp; printf("请输入查询的部门n");scanf("%s",temp.bumen);printf(" 编号 姓名 部门 应付工资 保险 税金 实付工资 n");for(i=0;i<sumNum;i+)int j=0;if(strcmp(zhigongi.bumen,temp.bumen)=0)printf(" %4d %8s %4s %.2f %.2f %.2f %.2fn",zhigongi.bianhao,zhigongi.xingming,zhigongi.bumen,zhigongi.yfgz,zhigongi.baoxian,zhigongi.shuijin,zhigongi.sfgz);elsej+;if(j=sumNum)printf("没有这个名称的部门n");chaxun();caidan();save(sumNum);四、结果分析第1题:程序运行结果如图1: 图1 程序运行结果1 第2题:程序运行结果如图2图2 程序运行结果2第3题:程序运行结果如图3:图3 程序运行结果3五、参考文献1马秀丽,刘志妩,李筠.C语言程序设计.北京:清华大学出版社,20082谭浩强.C程序设计(第2版).北京:清华大学出版社,20043李大友.C语言程序设计.北京:清华大学出版社,19994高福成.C语言程序设计教程.天津:天津大学出版社,1998