程序设计基础实践教学课题报告.docx
《程序设计基础实践教学课题报告.docx》由会员分享,可在线阅读,更多相关《程序设计基础实践教学课题报告.docx(15页珍藏版)》请在冰豆网上搜索。
![程序设计基础实践教学课题报告.docx](https://file1.bdocx.com/fileroot1/2023-1/26/c4a8ffc4-adea-431b-861a-7e0681ee1b3f/c4a8ffc4-adea-431b-861a-7e0681ee1b3f1.gif)
程序设计基础实践教学课题报告
昆明理工大学
《程序设计基础》课程
综合设计实践教学课题报告
课程名称:
C语言程序设计
课题名称:
学生成绩管理设计
组长:
学号XXXXXXXXX姓名XXX
学院:
XXXX专业班级:
XXXX指导教师:
方娇莉
昆明理工大学计算中心2010年7月15日
昆明理工大学计算中心
《程序设计基础》课程综合设计实践教学课题考核表
课题名称:
学院:
专业班级
学号
姓名
小组
编号
题号
承担及完成的内容
成绩
备注
小组
自评
教师
评定
1、编写了主函数Voidmain()和主要用于实现一些相关的功
能的函数Voidmixed(intm,intn)并写了实验报告
2、编写了函数IntIntput(intn)和Voidsort(intn)
3、编写了函数Voidstati(intn)
4、编写了Voidskim(intn)和Voidsearch(intn,charm[])
设计说明与功能描述(基本思路及关键语句说明)
该函数的功能是:
(1)选项菜单集成各功能函数模块
(2)录入学生成绩(姓名、学号、语文、数学成绩,总分自动计算)
(3)按总分排名次
(4)按姓名查找某学生成绩
(5)统计各课程的平均分、及格率、最高分、最低分
(6)打印成绩表
基本思路
主要通过主函数main()调用子函数input(),skim(),search(),sort(),stati(),mixed()来分别实现题目要的功能
关键语句说明见程序旁注解
组长签名2010年7月15日
教师评语
教师签名:
2010年月日
《程序设计基础》课程综合设计实践教学课题报告要求
1、系统概述
主要解决问题
(1)选项菜单集成各功能函数模块
(2)录入学生成绩(姓名、学号、语文、数学成绩,总分自动计算)
(3)按总分排名次
(4)按姓名查找某学生成绩
(5)统计各课程的平均分、及格率、最高分、最低分
(6)打印成绩表
基本思路:
主要通过主函数main()调用子函数input(),skim(),search(),sort(),stati(),mixed()来分别实现题目要的功能
关键语句说明见程序旁注解。
2、数据结构设计
要说明本程序或数据表定义、连联中用到的所有数据类型的定义,给出变量名及类型(如结构体、数组)的设计,并明确说明:
(1)数据输入的形式和输入值的范围;
(2)数据输出的形式。
定义结构体
Typedefstructmark
{
Doubleyuwen;
Doubleshuxue;
}
Typedefsttruct
{
Longnumber;
Charname[20];
Doublesum;
Doubleaver;
}student;
Studentstu[N];
定义全局变量
Doubleymin,ymax,smin,smax,yper,sper,yaver=0,saver=0;
主要函数
IntIntput(intn);
Voidskim(intn);
Voidsearch(intn,charm[]);
Voidsort(intn);
Voidstati(intn);
Voidmixed(intm,intn);
Voidmain();
3、模块设计
IntIntput(intn);主要用于实现索要输入的学生人数;
Voidskim(intn);1主要来实现打印学生信息;
Voidsearch(intn,charm[]);2主要用于实现查找相关学生信息;
Voidsort(intn);3主要是对学生信息排序;
Voidstati(intn);4主要用于对相关课程统计平均分,及格率,最高分,最低分
Voidmixed(intm,intn);主要用于实现一些相关的功能。
Voidmain()主函数
4.调试运行及操作说明
(1)显示欢迎界面和并且提示要输入学生的数目
(2)输入学生数后就可以输入相应的信息了。
(3)输入学生的成绩
(4)确定要实现的功能选项
(5)选功能1后
(6)选功能2后
(7)选择功能3后,程序会提示你输入要查的学生的姓名
(8)选择功能4后
5、总结和体会
完成了这次C语言设计,我收获很多,体会也很多,要学好一门学科,没有刻苦钻研的精神是不行的,只有在不断的尝试中,不断尽力失败,然后又不断的尝试才能成功。
要完成一个优秀的程序,必须熟练掌握各种语言的特点和用法,要学会举一反三,充分实现c语言的灵活性,在平时的学习实践中,要不断的动脑筋,学活学用,要善于反问,善于思考。
要学好C语言光知识是不够的,还得有经验,上机操作的经验,只有大脑中有经验,在碰到问题是才有许多解决问题的办法,然后才能去尝试。
我们也清楚的知道21世纪是挑战和机遇并存,没有足够的知识储备将会被历史淘汰,C语言也是在国外广泛用用的一门计算机语言,语言功能丰富,表达能力强,使用灵活方便,具有较高的语言有点,同时我觉得C语言是理论和实践相结合的课程,在不断的编写中去思考。
我觉得在编写一个较大的c语言程序时应该把他分成几个小程序来看,这样就容易了。
程序设计过程犹如解决一个实际问题,从实际的角度去出发,我们可以这样来看,首先了解这个问题的基本要求;其次,要从这个问题的要害出发,从前到后一个一个的解决每个问题的要求。
即:
丛输入开始,这种考虑如何输入如何输出,在这过程中,可以确定所要的变量,数据,函数,然后确定处理过程-算法,可得最后结论。
总之,要学好C语言,一定要认真,踏实,细心。
没有一丝不苟的精神是不行的,没有刻苦钻研的恒心必将不会有一丝的成功的。
最后感谢老师对我的教导。
(1)组长:
组员:
(2)6、程序代码
#include
#include
#include
#defineN175
typedefstructmark//定义成绩结构体
{
doubleyuwen;
doubleshuxue;
}mark;
typedefstruct//定义学生信息结构体
{
longnumber;
charname[20];
doublesum;
doubleaver;
structmarkachie;
}student;
studentstu[N];//定义结构体数组
doubleymin,ymax,smax,smin,yper,sper,yaver=0,saver=0;//定义全局变量
intinput()//学生信息输入函数
{
inti,n;
printf("请输入你要输入的学生数:
\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("请输入第%d个学生的信息(包括学号、姓名、语文、数学的成绩)\n",i);
scanf(
"%ld%s%lf%lf",
&stu[i].number,
stu[i].name,
&stu[i].achie.yuwen,
&stu[i].achie.shuxue
);
}
return(n);
}
voidskim(intn)//学生信息浏览函数
{
inti;
printf("列出的学生信息依次为学号、姓名、语文、数学的成绩、总分、平均分\n");
for(i=1;i<=n;i++)
{
stu[i].sum=stu[i].achie.yuwen+stu[i].achie.shuxue;
stu[i].aver=stu[i].sum/2.0;
printf("第%d个学生的信息为:
\n",i);
printf(
"%d\t%s\t%lf\t%lf\t",
stu[i].number,
stu[i].name,
stu[i].achie.yuwen,
stu[i].achie.shuxue
);
printf("%lf\t%lf\n",stu[i].sum,stu[i].aver);
}
}
voidsearch(intn,charm[])//相关学生信息查找函数
{
inti;
for(i=1;i<=n;i++)
if(strcmp(stu[i].name,m)==0)
break;
if(i>n)
printf("系统查找不到相应学生的信息,请重新输入\n");
else
{
stu[i].sum=stu[i].achie.yuwen+stu[i].achie.shuxue;
stu[i].aver=stu[i].sum/2.0;
printf("你要查询的学生的信息是:
");
printf("%d\t%s\t%lf\t%lf\t",stu[i].number,stu[i].name,stu[i].achie.yuwen,stu[i].achie.shuxue);
printf("%lf\t%lf\n",stu[i].sum,stu[i].aver);
}
}
voidsort(intn)//学生信息排序函数
{
inti,j;
studenttemp;
for(i=1;i<=n;i++)
{
stu[i].sum=stu[i].achie.yuwen+stu[i].achie.shuxue;
stu[i].aver=stu[i].sum/2.0;
}
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
if(stu[i].sum>stu[j].sum)
{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
printf("按学生的总分升序排序后的结果是:
");
for(i=1;i<=n;i++)
{
printf("%d\t%s\t%lf\t%lf\t",stu[i].number,stu[i].name,stu[i].achie.yuwen,stu[i].achie.shuxue);
printf("%lf\t%lf\n",stu[i].sum,stu[i].aver);
}
}
voidstati(intn)//学生相关信息的统计函数
{
inti,a=0,b=0;
ymin=stu[1].achie.yuwen;smin=stu[1].achie.shuxue;
ymax=stu[1].achie.yuwen;smax=stu[1].achie.shuxue;
for(i=1;i<=n;i++)
{
if(stu[i].achie.yuwenymin=stu[i].achie.yuwen;
if(stu[i].achie.yuwen>ymax)
ymax=stu[i].achie.yuwen;
if(stu[i].achie.shuxuesmin=stu[i].achie.shuxue;
if(stu[i].achie.shuxue>smax)
ymin=stu[i].achie.shuxue;
if(stu[i].achie.yuwen>=60)a++;
if(stu[i].achie.shuxue>=60)b++;
saver+=stu[i].achie.shuxue/2.0;
yaver+=stu[i].achie.yuwen/2.0;
}
yper=(double)a/n;sper=(double)b/n;
printf("语文的平均分、及格率、最高分、最低分分别为:
%lf\t%lf\t%lf\t%lf\n",yaver,yper,ymax,ymin);
printf("数学的平均分、及格率、最高分、最低分分别为:
%lf\t%lf\t%lf\t%lf\n",saver,sper,smax,smin);
}
voidmixed(intm,intn)//实现相应功能选择的函数
{
chark[N];
switch(m)
{
case1:
skim(n);
break;
case2:
stati(n);
break;
case3:
printf("请输入你要查询的学生的姓名:
");
scanf("%s",k);
search(n,k);
break;
case4:
sort(n);
break;
case5:
exit(0);
}
}
voidmain()//主函数,打印菜单……
{
intn,m;
printf("欢迎进入学生成绩管理系统\n");
printf("==================================\n");
printf("\n\t为使系统正常工作请先按提示输入学生信息\n\n");
n=input();
printf("%d",n);
do
{
printf("请选择你要本系统实现的功能\n");
printf("1:
学生信息浏览功能\n");
printf("2:
统计各课程的平均分、及格率、最高分、最低分\n");
printf("3:
单用户信息查询功能\n");
printf("4:
排序功能(按学生总分绩进行排序)\n");
printf("5:
安全退出\n");
printf("\t\t\t\t\t\t请输入你要实现的功能选项:
");
scanf("%d",&m);
if(m<0||m>4)
break;
else
mixed(m,n);
}while
(1);
}