C语言编程实训报告_c语言编程实训报告
C语言编程实训报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言编程实训报告”。
设计题目及要求设计题目及要求设计题目及要求设计题目及要求
1.综合应用实例——学生成绩管理 编写一个菜单驱动的学生成绩管理程序。实现如下管理功能:
(1)能输入并显示 n 个学生的 m 门考试科目的成绩、总分和平均分。
(2)按总分进行排序。
(3)按学号进行排序。
(4)任意输入一个学号,能显示该学生的姓名、各门功课的成绩
(5)将输入的学生成绩数据保存到文件中。
(6)从文件中读出学生成绩数据。
具体要求如下:)先用静态的数据结构(结构体数组)来存储和管理 n 个学生的学号、姓名、成绩等信息,进行编程。)排序函数是一个具有多种排序方式的、通用的、排序程序,即不仅可以实现成绩的升序排序,还可以实现成绩的降序排序。)程序能够进行异常处理,检查用户输入数据的有效性,在用户输入数据有错误(如类型错误)或无效时,不会中断程序的执行,程序具有一定的健壮性。)输出菜单形式如下:
1.输入学生记录
2.浏览学生记录
3.修改学生记录
4.排序 0.退出 请选择(0-4):
5)排序菜单形式如下: 排序方式:1.按总分升序排序 2.按总分降序排序3.按学号排序 0.返回主菜单 请选择:
二二二二、、、、算法分析及实现步骤算法分析及实现步骤算法分析及实现步骤算法分析及实现步骤
总体算法分析的思路就是用调用函数来实现每个小程序的作用,首先是确定头文件,定义学生成绩结构体类型,用结构体函数实现。然后在函数执行过程中调用主菜单函数,紧接着被调用函数返回一个值给主函数,由返回来的值确定主函数应该执行下面的哪个步骤,再用一个while语句控制下面的几个步骤的循环,里面再嵌套switch语句来控制对每个小菜单程序的执行。例如:当调用函数返回“1”时,经过switch语句的判断之后就会执行相应的程序,最后,又会返回到主菜单程序中。其它的都一样。当调用函数返回的值是“4”时,此时因为排序里面还有一个排序的子菜单,所以此时这里我又用了一个switch语句来实现对排序程序的控制,也就是说在switch语句里面再嵌套switch语句。对排序程序进行的控制。等到跳出排序程序的时候,其它的都和之前的选择那样。其中,浏览每个学生信息的函数先计算出每个学生的平均成绩然后用for语句来实现每个学生信息的循环输入。修改学生信息的函数里面也用到了for语句,先找到相同的学号,然后在修改后循环执行。后来的排序程序都选用冒泡法来执行。当然一切程序都是从主函数开始执行。
三三三三、、、、源程序代码源程序代码源程序代码源程序代码
#include
struct student//定义学生成绩结构体类型定义学生成绩结构体类型定义学生成绩结构体类型定义学生成绩结构体类型
{
intno;charname[8];
floateng,phy,math,sum,ave;};
int menu(student s[],int n)//主菜单函数主菜单函数主菜单函数主菜单函数
{
int k;
cout
cout
cout
cout
cout
cout
cout
cout
cout
cin>>k;
returnk;} void Input(student s[],int n)//输输输输入入入入函数函数函数函数
{
int i;
cout
for(i=0;i
{
cout>s[i].no>>s[i].name>>s[i].eng>>s[i].phy>>s[i].math;s[i].ave=(s[i].eng+s[i].phy+s[i].math)/3;s[i].sum=s[i].eng+s[i].phy+s[i].math;}}
void Ave(student s[],int n)//浏览每个学生浏览每个学生浏览每个学生浏览每个学生信息的信息的信息的信息的函数函数函数函数
{
int i;for(i=0;i
{ s[i].ave=(s[i].eng+s[i].phy+s[i].math)/3;s[i].sum=s[i].eng+s[i].phy+s[i].math;
}
cout
for(i=0;i
cout
}
int Sort(student s[],int n)//排序的子菜单排序的子菜单排序的子菜单排序的子菜单函数函数函数函数
{
int y;
cout
cout
cout
cout
cin>>y;
returny;
}
void change(student s[],int n)//修改学生信息的函数修改学生信息的函数修改学生信息的函数修改学生信息的函数
{
int i,j;
cout
cin>>j;
for(i=0;i
{
cout
cout
cout>s[i].no>>s[i].name>>s[i].eng>>s[i].phy>>s[i].math;s[i].ave=(s[i].eng+s[i].phy+s[i].math)/3;s[i].sum=s[i].eng+s[i].phy+s[i].math;
}}
voidzpxs(student s[],int n)// 按总分升序按总分升序按总分升序按总分升序排序排序排序排序的函数的函数的函数的函数
{
int i,j;studenttemp;for(i=0;i
{
s[i].ave=(s[i].eng+s[i].phy+s[i].math)/3;s[i].sum=s[i].eng+s[i].phy+s[i].math;}
for(i=0;i
{ for(j=0;js[j+1].sum)
{ temp=s[j];s[j]=s[j+1];s[j+1]=temp;
}}
cout
for(i=0;i
cout
}
voidzpxj(student s[],int n)//按总分降序排序按总分降序排序按总分降序排序按总分降序排序的函数的函数的函数的函数
{
int i,j;studenttemp;for(i=0;i
{s[i].ave=(s[i].eng+s[i].phy+s[i].math)/3;s[i].sum=s[i].eng+s[i].phy+s[i].math;}
for(i=0;i
{ for(j=0;j
for(i=0;i
cout
voidxhpxs(student s[],int n)//按学号升序排序按学号升序排序按学号升序排序按学号升序排序的函数的函数的函数的函数
{int i,j;studenttemp;for(i=0;i
for(i=0;i
{for(j=0;js[j+1].no){temp=s[j];s[j]=s[j+1];s[j+1]=temp;}}cout
for(i=0;i
cout
void main()//主函数主函数主函数主函数
{ int i,g;studentstu[3];while(i){i=menu(stu,3);switch(i){case 1:Input(stu,3);cout
cout
cout
cout
四、、、、实训总结实训总结实训总结实训总结通过这两个礼拜的实训练习,让我收获很多,在实训的第一节课上,老师给我们一个关于学生成绩管理程序的执行文件,然后告诉我们它有什么功能,一一演示给我们看。最后对我们说我们这两个礼拜的实训作业就是运用我们之前所学过的知识来写出这个程序的源程序代码。在此之前我们都惊呆了,都说不会做。可是在老师悉心的教导下,我们先开始写好自己对这个题目的思路,然后一步一步往下做,一个一个程序的写。在做完题后我自己觉得其实正如老师所说的那样,那些知识我们都学过的,只是我们欠缺对知识的整合能力。虽然在完成作业的过程中遇到了很多不懂的地方,但是在老师的殷切指导下以及与同学的交流中,我最后还是完成了实训作业。让我的知识又得到了很大一步的提升,真希望以后多让我们做这种作业。这样的话我觉得学到的知识会更多,动手能力也提升的很快。
实习报 告实习地点:201机房实习时间:2014.12.1——2014.12.6 实习项目:单片机C语言编程实训 指导老师:骆乐 姓名:班级:电信3121 一、实习内容 1.计算字符的ASCII码 编写一个程......
一、实训目的本实训重点培养学生数控加工的工艺分析与设计、数控加工程序的编写与调试、数控设备的操作与零件加工的能力。同时培养学生工作岗位的适应能力,团队协作能力和分......
刀豆文库小编为你整合推荐8篇编程实训心得体会,也许这些就是您需要的文章,但愿刀豆文库能带给您一些学习、工作上的帮助。......
编程实训心得体会计算机的程序设计主要是关于什么内容?应该怎么学好这一门知识?可以参考一下学习过的人的经验分享。下面是由小编整理的编程实训心得体会,希望对您有用。编程......
计算机硬件编程实训报告框架实习名称: 用汇编语言实现音乐程序设计专业: 计算机科学与技术专业班级: 200 级计算机科学与技术专业 班学号:姓名:指导教师:成绩:200 年 月 日目录1实......
