资源描述
成 绩 评 定 表
学生姓名
班级学号
专 业
通信工程
课程设计题目
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
展开阅读全文