收藏 分销(赏)

语言专业课程设计.doc

上传人:精*** 文档编号:2798378 上传时间:2024-06-06 格式:DOC 页数:32 大小:293.04KB 下载积分:12 金币
下载 相关 举报
语言专业课程设计.doc_第1页
第1页 / 共32页
语言专业课程设计.doc_第2页
第2页 / 共32页


点击查看更多>>
资源描述
成 绩 评 定 表 学生姓名 班级学号 专 业 通信工程 课程设计题目 C语言课程设计 评 语 组长签字: 成绩 日期 年 月 日 课程设计任务书 学 院 信息科学与工程学院 专 业 通信工程 学生姓名 班级学号 课程设计题目 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周.程序验收及答辩 指引教师: 月 日 专业负责人: 月 日 学院教学副院长: 年 月 日 目 录 一、题目规定 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、编程,先从键盘输入一组学生成绩到数组中,然后输入某一种分数段,查找输出该分数段内所有成绩。 开始 定义一种数组a[N],变量i 输入N个数据给数组a i=0 i<N-1? 否 是 输入1个数据给数组a 输出“请按由小到大顺序输入分数段” 定义变量 m n 输入成绩给m 1 1 输入成绩给n k=0 k<N-1? n≤a[N]≤m? 定义变量k 否 是 否 k++ 是 输出a[k] 结束 注: 此函数功能是,输入一构成绩,然后在程序中输入所要查询成绩分数段,输出该分数段所有成绩。 2、编写函数fun(int xx[ ],int n ,int y),其中n代表数组元素个数,y中内容是要删除元素值。函数功能是数组xx中所有值为y元素。数组中值和y值由主函数通过键盘输入。 开始 定义一种数组xx[N],变量i,j,y 输入N个数据给数组xx i<N? i=0 否 是 输出“请输入要删除元素值” 输入一种数据 给数组x[] 输入一种 要删除值 i++ 调用函数fun(xx,N,y),j= fun(xx,N,y) 输出“删除后数组为:” 1 1 i<N-j? i=0 i++ 输入一种数据 给数组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 输入一种数据给a a==1? 调用函数 shuru(); 调用函数 shuchu(); 调用函数 caidan(); a==2? 1 2 flag==0? 输出“录入职工信息请按1,新增职工信息请按2” 结 束 (3) 输入某部门值,显示该部门职工数据、工资总额、平均工资。设计菜单,通过选取菜单调用以上各函数;系统启动时数据可由文献导入,录入新数据或修改数据后,可将数据重新写入文献。 是 否 否 是 否 是 调用函数 shuru(); 调用函数 shuchu(); 调用函数 caidan(); 2 调用函数 load ( ); 调用函数 zengjia ( ); 1 输出“没有这个选项” flag=1 输出请输入增长职工个数 输入一种数值给number zengjia(number) 注: 函数阐明: void shuru(); //用来输入增长职工信息 void shuchu(); //用来输出文献中所有职工信息 void save(int n); //将职工信息保存到文献中,实现导入 void zengjia(int n); //增长职工信息 void xiugai(); //修改职工信息 void chaxun(); //按照部门查询职工信息 void caidan(); //基本菜单,按提示操作 load(); //将职工信息从文献中导出 三、编程实现 程序详细C语言代码如下: 第1题: /* 编程人:楚天辞 完毕时间 7月5日 联系方式:*/ #include<stdio.h> main() { float m,n,a[6]; int i,k; printf(" 请输入一种数组:\n"); for (i=0 ;i<6;i++) scanf("%f",&a[i]); printf(" 请按由小到大顺序输入分数段\n"); scanf("%f",&n); scanf("%f",&m); printf(" 如下成绩属于该分数段\n"); for (k=0 ;k<6;k++) if(n<=a[k]&&a[k]<=m) printf("% 9.2f\n",a[k]); printf("\n"); } 第2题: #include<stdio.h> #define N 10 int fun(int xx[],int n,int y) { int i,j=0,k; for(i=0;i<n-j;i++) // j表达要删除数值个数,而n-j表达数组有效数值个数 if(xx[i]==y) { for(k=i;k<n-1;k++) //从删除位置背面第一种元素值开始向前移动 xx[k]=xx[k+1]; j++; } return j; } main() { int i,j,y,xx[N]; printf("请输入%d个数组元素值\n",N); for(i=0;i<N;i++) scanf("%d",&xx[i]); printf("请输入要删除元素值\n"); scanf("%d",&y); j=fun(xx,N,y); printf("删除后数组为:\n"); for(i=0;i<N-j;i++) printf("%5d",xx[i]); printf("\n"); } 第3题: #include<stdio.h> #include<string.h> struct zijin { int bianhao; char xingming[20]; char bumen[100]; float yfgz; float baoxian; float shuijin; float sfgz; } zhigong[100]; //定义构造体数组zhigong void 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; do { printf("录入职工信息请按1,新增职工信息请按2\n"); scanf("%d",&a); if(a==1) { shuru(); // 输入数据 shuchu(); caidan(); } else if(a==2) { sumNum=load(); //将文献中原有职工信息个数传给sumNum printf("请输入增长职工个数\n"); scanf("%d",&number); zengjia(number); } else { printf("没有这个选项\n"); flag=1; } }while(flag); } void caidan() { int a,flag=0,number=0; do { printf("增长职工信息请按1,修改职工信息请按2,查询职工信息请按3,退出请按4\n"); 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; } else { printf("没有这个选项\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",&zhigong[i].bianhao); printf("请输入第%d个职工姓名\n",i+1); scanf("%s",zhigong[i].xingming); printf("请输入第%d个职工部门\n",i+1); scanf("%s",zhigong[i].bumen); printf("请输入第%d个职工应付工资\n",i+1); scanf("%f",&zhigong[i].yfgz); printf("请输入第%d个职工保险\n",i+1); scanf("%f",&zhigong[i].baoxian); printf("请输入第%d个职工税金\n",i+1); scanf("%f",&zhigong[i].shuijin); zhigong[i].sfgz = zhigong[i].yfgz - zhigong[i].baoxian - zhigong[i].shuijin; } sumNum=n; save(sumNum); } void shuchu() { int i; printf(" 编号 姓名 部门 应付工资 保险 税金 实付工资 \n"); for(i=0;i<sumNum;i++) printf(" %4d %8s %4s %.2f %.2f %.2f %.2f\n",zhigong[i].bianhao,zhigong[i].xingming,zhigong[i].bumen,zhigong[i].yfgz,zhigong[i].baoxian,zhigong[i].shuijin,zhigong[i].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",&zhigong[i].bianhao); //将相应职工编号按照%d格式输入到fp所指向文献中 fscanf(fp,"%s",zhigong[i].xingming); fscanf(fp,"%s",zhigong[i].bumen); fscanf(fp,"%f",&zhigong[i].yfgz); fscanf(fp,"%f",&zhigong[i].baoxian); fscanf(fp,"%f",&zhigong[i].shuijin); fscanf(fp,"%f",&zhigong[i].sfgz); } for(i=0;i<sumNum;i++) fprintf(fp," %4d %8s %4s %.2f %.2f %.2f %.2f\n",zhigong[i].bianhao,zhigong[i].xingming,zhigong[i].bumen,zhigong[i].yfgz,zhigong[i].baoxian,zhigong[i].shuijin,zhigong[i].sfgz); fclose(fp); //文献关闭,防止数据流失 } load() { int i=0; FILE *fp; fp=fopen("C:\\chutianci.txt","rt+"); do { fscanf(fp,"%d",&zhigong[i].bianhao); fscanf(fp,"%s",zhigong[i].xingming); fscanf(fp,"%s",zhigong[i].bumen); fscanf(fp,"%f",&zhigong[i].yfgz); fscanf(fp,"%f",&zhigong[i].baoxian); fscanf(fp,"%f",&zhigong[i].shuijin); fscanf(fp,"%f",&zhigong[i].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; zhigong[sumNum++]=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(zhigong[i].bianhao==a) break; else j++; if(j==sumNum) { printf("没有该编号职工\n"); shuchu(); xiugai(); } printf("修改本职工哪一项?\n"); printf("编号请按1,姓名请按2,部门请按3,应付工资请按4,保险请按5,税金请按6,取消请按7\n"); scanf("%d",&b); if(b==1) { printf("本职工原编号为%d请输入本职工新编号\n",zhigong[i].bianhao); scanf("%d",&zhigong[i].bianhao); save(sumNum); shuchu(); caidan(); } else if(b==2) { printf("本职工原姓名为%s请输入本职工新姓名\n",zhigong[i].xingming); scanf("%s",zhigong[i].xingming); save(sumNum); shuchu(); caidan(); } else if(b==3) { printf("本职工原部门为%s请输入本职工新部门\n",zhigong[i].bumen); scanf("%s",zhigong[i].bumen); save(sumNum); shuchu(); caidan(); } else if(b==4) { printf("本职工原售价为%f请输入本职工新应付工资\n",zhigong[i].yfgz); scanf("%f",&zhigong[i].yfgz); zhigong[i].sfgz = zhigong[i].yfgz - zhigong[i].baoxian - zhigong[i].shuijin; save(sumNum); shuchu(); caidan(); } else if(b==5) { printf("本职工原保险为%d请输入本职工新保险\n",zhigong[i].baoxian); scanf("%d",&zhigong[i].baoxian); zhigong[i].sfgz = zhigong[i].yfgz - zhigong[i].baoxian - zhigong[i].shuijin; save(sumNum); shuchu(); caidan(); } else if(b==6) { printf("本职工原税金为%d请输入本职工新税金\n",zhigong[i].shuijin); scanf("%d",&zhigong[i].shuijin); zhigong[i].sfgz = zhigong[i].yfgz - zhigong[i].baoxian - zhigong[i].shuijin; save(sumNum); shuchu(); caidan(); } else if(b==7) { shuchu(); caidan(); } else { printf("没有这个选项\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(zhigong[i].bumen,temp.bumen)==0) printf(" %4d %8s %4s %.2f %.2f %.2f %.2f\n",zhigong[i].bianhao,zhigong[i].xingming,zhigong[i].bumen,zhigong[i].yfgz,zhigong[i].baoxian,zhigong[i].shuijin,zhigong[i].sfgz); else j++; if(j==sumNum) { printf("没有这个名称部门\n"); chaxun(); } } caidan(); save(sumNum); } \ 四、成果分析 第1题: 程序运营成果如图1: 图1 程序运营成果1 第2题: 程序运营成果如图2 : 图2 程序运营成果2 第3题: 程序运营成果如图3: 图3 程序运营成果3 五、参照文献 [1]马秀丽,刘志妩,李筠.C语言程序设计.北京:清华大学出版社, [2]谭浩强.C程序设计(第2版).北京:清华大学出版社, [3]李大友.C语言程序设计.北京:清华大学出版社,1999 [4]高福成.C语言程序设计教程.天津:天津大学出版社,1998
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

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

客服