《C语言课程设计共18页.doc》由会员分享,可在线阅读,更多相关《C语言课程设计共18页.doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流C语言课程设计【精品文档】第 16 页成 绩 评 定 表学生姓名班级学号专 业通信工程课程设计题目C语言课程设计评语组长签字:成绩日期2013 年 月 日课程设计任务书学 院信息科学与工程学院专 业通信工程学生姓名班级学号课程设计题目C语言课程设计实践教学要求与任务:利用C语言编写下题的代码。题目名称:查找分数与删除元素、工资统计程序的设计内容及要求:1. 编程,先从键盘输入一组学生成绩到数组中,然后输入某一个分数段,查找输出该分数段内的所有成绩。2. 编写函数fun(int xx ,int n , int y),其中n代表数组元素的个数,y中内容是要删
2、除的元素值。函数的功能是数组xx中所有值为y的元素。数组中的值和y的值由主函数通过键盘输入。3. 工资统计程序设计 设计结构体数组,结构中包含职工数据为:编号、姓名、部门、应付工资、保险、税金、实付工资。其中实付工资由公式计算得到:实付工资=应付工资-保险-税金设计各个函数,分别实现以下功能: (1) 输入职工数据,其中“实付工资”通过计算得到。(2) 显示全体职工数据。(3) 输入某部门值,显示该部门职工的数据、工资总额、平均工资。设计菜单,通过选择菜单调用以上各函数;系统启动时数据可由文件导入,录入新的数据或修改数据后,可将数据重新写入文件。工作计划与进度安排:第18-19周:第18周C语
3、言基础编程练习第18周算法设计及编写程序代码第19周编写程序代码及程序调试第19周程序验收及答辩指导教师: 2013年 月 日专业负责人:2013年 月 日学院教学副院长:2013 年 月 日目 录一、题目要求3二、算法设计4三、编程实现10四、结果分析25五、参考文献28一、题目要求题目名称:查找分数与删除元素、工资统计程序的设计内容:1、编程,先从键盘输入一组学生成绩到数组中,然后输入某一个分数段,查找输出该分数段内的所有成绩。2、编写函数fun(int xx ,int n , int y),其中n代表数组元素的个数,y中内容是要删除的元素值。函数的功能是数组xx中所有值为y的元素。数组中
4、的值和y的值由主函数通过键盘输入3、工资统计程序设计 设计结构体数组,结构中包含职工数据为:编号、姓名、部门、应付工资、保险、税金、实付工资。其中实付工资由公式计算得到:实付工资=应付工资-保险-税金。设计各个函数,分别实现以下功能: (1) 输入职工数据,其中“实付工资”通过计算得到。(2) 显示全体职工数据。(3) 输入某部门值,显示该部门职工的数据、工资总额、平均工资。设计菜单,通过选择菜单调用以上各函数;系统启动时数据可由文件导入,录入新的数据或修改数据后,可将数据重新写入文件。要求:利用C语言编写上述程序,开发环境可采用Turbo C 2.0 或Visual C+ 6.0等。二、算法
5、设计1、编程,先从键盘输入一组学生成绩到数组中,然后输入某一个分数段,查找输出该分数段内的所有成绩。开始定义一个数组aN,变量i输入N个数据给数组ai=0iN-1? 否 是输入1个数据给数组a输出“请按由小到大的顺序输入分数段”定义变量 m n输入成绩给m11输入成绩给nk=0kN-1?naNm?定义变量k 否 是 否k+ 是 输出ak 结束注: 此函数功能是,输入一组成绩,然后在程序中输入所要查询的成绩分数段,输出该分数段的所有成绩。2、编写函数fun(int xx ,int n , int y),其中n代表数组元素的个数,y中内容是要删除的元素值。函数的功能是数组xx中所有值为y的元素。数
6、组中的值和y的值由主函数通过键盘输入。开始定义一个数组xxN,变量i,j,y输入N个数据给数组xxiN?i=0 否 是输出“请输入要删除的元素值”输入一个数据给数组x输入一个 要删除的值i+调用函数fun(xx,N,y),j= fun(xx,N,y)输出“删除后的数组为:”11iN-j?i=0i+输入一个数据给数组x 是输出“n”,换行结束注: fun(xx ,int n, int y)函数 功能是对数组中含有y的元素删除。其中含有xx ,int n, int y 3个变量,xx 是指定的数组,n表示数组中的元素个数,y表示要删除的数组中的元素值。3、 工资统计程序设计 设计结构体数组,结构中
7、包含职工数据为:编号、姓名、部门、应付工资、保险、税金、实付工资。其中实付工资由公式计算得到:实付工资=应付工资-保险-税金设计各个函数,分别实现以下功能: (1) 输入职工数据,其中“实付工资”通过计算得到。(2) 显示全体职工数据。开始定义变量a,flag=0,number=0输入一个数据给aa=1?调用函数 shuru(); 调用函数 shuchu();调用函数 caidan();a=2?12flag=0?输出“录入职工信息请按1,新增职工信息请按2”结 束(3) 输入某部门值,显示该部门职工的数据、工资总额、平均工资。设计菜单,通过选择菜单调用以上各函数;系统启动时数据可由文件导入,录
8、入新的数据或修改数据后,可将数据重新写入文件。 是 否 否是 否 是调用函数 shuru(); 调用函数 shuchu();调用函数 caidan();2调用函数 load ( ); 调用函数 zengjia ( );1输出“没有这个选项”flag=1输出请输入增加职工的个数输入一个数值给numberzengjia(number)注: 函数说明:void shuru(); /用来输入增加职工的信息void shuchu(); /用来输出文件中所有职工的信息void save(int n); /将职工信息保存到文件中,实现导入void zengjia(int n); /增加职工的信息void x
9、iugai(); /修改职工的信息void chaxun(); /按照部门查询职工信息void caidan(); /基本的菜单,按提示操作load(); /将职工信息从文件中导出三、编程实现程序的具体C语言代码如下:第1题:/* 编程人:楚天辞 完成时间 2012年7月5日 联系方式:15840248422*/#includemain()float m,n, a6; int i, k;printf( 请输入一个数组:n);for (i=0 ;i6; i+)scanf(%f,&ai);printf( 请按由小到大的顺序输入分数段n);scanf(%f,&n);scanf(%f,&m);prin
10、tf( 以下成绩属于该分数段n);for (k=0 ;k6; k+)if(n=ak&ak=m)printf(% 9.2fn,ak);printf(n);第2题:#include#define N 10int fun(int xx,int n,int y)int i,j=0,k;for(i=0;in-j;i+) / j表示要删除的数值个数,而n-j表示数组有效的数值个数if(xxi=y) for(k=i;kn-1;k+) /从删除位置后面的第一个元素值开始向前移动 xxk=xxk+1; j+; return j; main()int i,j,y,xxN;printf(请输入%d个数组的元素值n,
11、N);for(i=0;iN;i+)scanf(%d,&xxi);printf(请输入要删除的元素值n);scanf(%d,&y);j=fun(xx,N,y);printf(删除后的数组为:n);for(i=0;iN-j;i+)printf(%5d,xxi);printf(n);第3题:#include#includestruct zijinint bianhao;char xingming20;char bumen100;float yfgz;float baoxian;float shuijin;float sfgz; zhigong100; /定义结构体数组zhigongvoid shur
12、u(); /用来输入增加职工的信息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(
13、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)
14、;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;in;i+)printf(请输入第%d个职工编号n,i+1);scanf(%d,&zhigongi.bianhao);printf(请输入第%d个职工姓名n,i+1);
15、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.shui
16、jin;sumNum=n;save(sumNum);void shuchu()int i;printf( 编号 姓名 部门 应付工资 保险 税金 实付工资 n);for(i=0;isumNum;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:c
17、hutianci.txt,wt+)=NULL)printf(you are wrong!n);for(i=0;in;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.
18、sfgz);for(i=0;isumNum;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);fscan
19、f(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;in;i+)printf(请输入
20、增加的第%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.shuij
21、in);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;isumNum;i+)if(zhigongi.bianhao=a)break;elsej+;if(j=sumNum)printf(没有该编号的职工n);shuchu();xiugai();printf(修改本职工的哪一项?n);printf(编
22、号请按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)
23、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(
24、本职工原保险为%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
25、 - 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;isumNum;i+)int j=0;if(strcmp(zhigongi.bumen,temp.bumen)=0)
26、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