C程序训练报告Word格式文档下载.docx
《C程序训练报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C程序训练报告Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
1.5测试数据-6-
1.6小结-8-
工程安徽理工大学程序训练任务书
计算机学院计算机科学与技术系
学号
201130825
学生姓名
吴问全
专业(班级)
电子信息技术与仪器11-2班
设计题目
学生信息统计系统
设
计
技
术
参
数
(1)用C语言实现设计任务;
(2)所设计的程序可读性好,执行效率高;
(3)有良好的操作界面;
(4)设计说明书能很好地反映设计内容
要
求
(1).学生基本信息及成绩所选科目成绩的录入。
(2).按学生姓名或学号对学生基本信息的查询。
(3.)打印学生信息成绩表;
(4.)按总分对学生考试成绩进行排名
(5.)能按科目查询学生成绩及找出不及格的学生,将信息打印。
(6).以上所有功能通过菜单界面选择实现。
工
作
量
要求设计说明书的字数在3000字以上。
划
2011.11.10-11.20根据课程设计大纲的要求,查找相关资料,完成需求分析;
2011.11.21-12.30进行系统的概要设计;
2011.12.01-12.10进行系统的详细设计和源代码的书写;
2011.12.11-12.25对系统进行调试分析,写出程序训练报告。
考
资
料
[1]何钦铭.C语言程序设计.北京:
高等教育出版社,2008
[2]颜晖.C语言程序设计实验指导.北京:
[3]谭浩强编著.C程序设计(第二版).北京:
清华大学出版社,1999
指导教师签字
教研室主任签字
2011年11月30日
1学生信息统计
1.1设计内容
●问题描述
建立一个简单的学生成绩管理系统,学生的信息包括学生学号、姓名和每个学生考试三门功课(数学、英语、计算机基础)的成绩,编程计算出每个学生的总分和平均分,并按学生成绩优劣排序,最后打印一张按高分到低分名次排序的成绩单。
●输入数据
输入学生的姓名,学号,数学,英语,计算机各科成绩,并按要求得出平均分,
●输出要求
输出学生的基本信息,各科成绩,总分,平均分,按姓名查询学生的基本信息,最终进行总分排名!
●输入样例
●
●输出样例
1.2解题思路
假设有N个学生,各科成绩以知,要求算出平均分,总分,并排序,采用函数调用的方法!
把大问题做成小问题!
每人做其中的一部分!
!
最后总和到一起,一个函数一个函数进行调试
1.3调试过程
(1)因对问题分析不清楚,给出了错误的计算公式;
(2)用枚举方法求解该问题,造成超时;
(3)在每行末尾缺少分号;
(4)对输入输出语法不熟悉导致死循环。
1.4程序清单
#include<
stdio.h>
string.h>
structstudents_list{
intM;
intE;
intC;
charstu_id[20];
charname[20];
};
intCount=0;
voidnew_student(structstudents_liststudents[]);
voidsearch_student(structstudents_liststudents[],char*name);
voidMath_student(structstudents_liststudents[]);
voidEnglish_student(structstudents_liststudents[]);
voidComputer_student(structstudents_liststudents[]);
voidpaixu_student(structstudents_liststudents[]);
intmain(void)
{
intchoice;
charname[20];
structstudents_liststudents[20];
do{
printf("
学生信息表功能选项:
\n1:
新建2:
查询学生各科分数和总分,平均分\n3:
找出数学不及格学生4:
找出英语不及格学生\n5:
找出计算机不及格学生6:
总分从高到低排序\n0:
退出\n"
);
请选择功能:
"
scanf("
%d"
&
choice);
switch(choice){
case1:
new_student(students);
break;
case2:
printf("
请输入要查询学生姓名:
%s"
name);
search_student(students,name);
break;
case3:
Math_student(students);
case4:
English_student(students);
case5:
Computer_student(students);
break;
case6:
paixu_student(students);
case0:
}
}while(choice!
=0);
谢谢使用信息表功能!
\n"
return0;
}
voidnew_student(structstudents_liststudents[])
structstudents_listf;
if(Count==20)
信息表已满!
!
return;
printf("
请输入学生姓名:
scanf("
f.name);
请输入学生学号:
f.stu_id);
请依次输入数学成绩:
f.M);
if(f.M>
100||f.M<
0)
数据非法!
清退出再新建!
请依次输入英语成绩:
f.E);
if(f.E>
100||f.E<
数据非法清退出再新建!
请依次输入计算机成绩:
f.C);
if(f.C>
100||f.C<
students[Count]=f;
Count++;
voidsearch_student(structstudents_liststudents[],char*name)
inti,flag=0;
if(Count==0){
请先新建学生信息!
return;
for(i=0;
i<
Count;
i++)
if(strcmp(name,students[i].name)==0){
flag=1;
break;
}
if(flag){
姓名 数学 英语 计算机 平均分总分\n"
%2s%8d%8d%8d%8d%8d"
students[i].name,students[i].M,students[i].E,students[i].C,
(students[i].M+students[i].E+students[i].C)/3,students[i].M+students[i].E+students[i].C);
else
printf("
无此人!
voidMath_student(structstudents_liststudents[])
inti;
数学成绩不及格人有:
if(students[i].M<
60)
%8s"
students[i].name);
voidEnglish_student(structstudents_liststudents[])
{inti;
英语成绩不及格人有:
if(students[i].E<
voidComputer_student(structstudents_liststudents[])
计算机成绩不及格人有\n"
if(students[i].C<
}
voidpaixu_student(structstudents_liststudents[])
inti,j,index;
structstudents_listtemp;
for(i=0;
++i)
index=i;
for(j=i+1;
j<
j++)
if((students[j].M+students[j].E+students[j].C)<
(students[index].M+students[index].E+students[index].C))
index=j;
temp=students[index];
students[index]=students[i];
students[i]=temp;
名次 姓名 数学 英语 计算机 平均分总分\n"
for(i=Count-1;
i>
=0;
i--)
第%d名:
%5s%8d%8d%8d%8d%8d\n"
Count-i,students[i].name,students[i].M,students[i].E,students[i].C,
1.5测试数据
1.6小结
通过该计算类的程序设计,使我掌握了C语言的基本语法,能从自然语言描述中抽象出一个计算问题,继而能通过程序实现,并将计算结果还原成对原问题的解答。
在本实验中我学会了团结合作!
一个大程序一个人很难搞定,只有大家合伙努力才能更好的完成任务!
对学生的总分及平均分本来想单独定义变量,但因为种种原因,最后选择用各科成绩相加得总分!
用总分除以3得到平均分!
本次以寝室为单位!
分工合作!
C语言课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在是生活中可以说得是无处不在。
所以作为计算机学院的我们更应该学好它!
我们组是对学生成绩管理系统的设计,在设计过程中我们也遇到很多问题,比如函数的调用,怎么样才能更加优化,也查了很多资料,问了写高手!
在这充满神奇代码的高级语言中,让我们感受到现代科技的发达。
通过该计算类的程序设计,让我了解到了C语言的基本语法,能从自然语言中描述中抽象出一个计算问题,继而能通过程序实现,让我们感到很神奇。
并能讲计算结果还原成对原问题的回答。
从从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要!
同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!
通过该类计算类的较大的程序设计,不仅是我掌握了C语言的基本语法,还让我感受到了C语言利用子程序——函数的方便与简洁。
将较大的程序设计分解成若干个较小的程序,较小的程序所要实现的功能可以调用相应的函数并给予相应参数来进行,这样做使得主函数变得简洁易读。
使用较小的程序完成相应功能非常方便,只要进行参数变化就可以实现变化,进行不同值的运算。
各个函数相互配合,共同协作,主函数完成任务,问题得以解决。
类似的,几个组员相互合作,团结互助,共同完成本次大作业。
通过C语言的学习,我们也认识到了团队协作的好处,感受到了团队合作的力量。
几个人进行协作,就像主函数,其余几个人分别负责一个子程序,完成对应的小任务。
第一个人进行全体协调,完成程序的编译。
全体队员分别上机调试,出现错误,共同思考,共同改错,利用电脑和相关软件完成编译,最终完成程序设计。