1、 HUNAN UNIVERSITY 程序设计训练 报 告 学生姓名 张杨阳 学生学号 201307020213 专业班级 电子1302 指导老师 贺再红 2014 年 9月 13日 北京 湖南大学程序设计训练报告 第 Ⅰ 页 目 录 一 目的 二 内容和要求 三 设计分析 四
2、 程序调试与结论 五 程序设计心得与体会 六 附录: 参考文献 程序清单 湖南大学程序设计训练报告 题 目 一 目的 1.问题分析及解决方案框架确定 l 充分地分析和理解问题本身,弄清要求做什么(What to do?)。 l 在确定解决方案框架过程中(How to do?),考虑怎样使程序结构清晰、合理、简单和易于调试,并确定每个函数的简单功能,以及函数之间的调用关
3、系。 2.详细设计和编码 确定算法的主要流程,再此基础上进行代码设计(Coding),每个明确的功能模块程序一般不超过60行,否则要进一步划分。 3.上机前编写程序与检查 上机前程序检查可有效提高调试效率,减少上机调试程序时的无谓错误。 程序检查主要有两种途径:用一组测试数据手工执行程序;通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑,把程序中的明显错误事先排除。 4.上机调试程序 5.完成程序设计训练报告 ① 问题描述:题目要解决的问题是什么。 ② 设计 l 设计算法:主要算法思想,用流程图表
4、示。 l 实现注释:各项功能的实现程度。 l 调试报告:调试过程中遇到的主要问题,是如何解决的;对设计和编码的回顾讨论和分析;改进设想;经验和体会等。 ③附录:源程序清单和结果。如果题目规定了测试数据,则结果要包含这些测试数据和运行输出,当然还可以含其他测试数据和运行输出。 二 内容和要求(本人所完成的任务) 学生信息包括:学号、姓名、年龄、性别、出生年月。主要功能: (1)能按学期、按班级完成对学生成绩的录入、修改。 (2能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序。 (3)能查询学生成绩。 (4)能按班级输出学生的成绩单。
5、 三 输入要求 录入 修改 统计 查询 打印 退出 输入相关信息 输入相关信息 核对 输入修改信息 计算总成绩,平均成绩 排序 输入相关信息 核对 输出成绩 输出一个班的所有学生的成绩,总分,平均分 四 程序调试与结论 1、在整个程序设计中,由于以前的C和C++学的并不好,所以在初期的设计中出了很多的错误: Ø 关于文件包含的操作,开始把所有的类的定义都放在头文件中,把所有函数都定义在一个源文件中,然后将主程序写在main源文件中,但是在编译的时候出错,提示所有的函数都未定义。找出问题后,原来我只是将这几个文件都新建在同一个工
6、程中,但是在编译的时候并没有将函数源文件增加到工程中去,所以编译的时候没法找到相应的函数定义。 Ø 用switch结构时,每次进入主菜单都只能选择一次功能,然后就会直接退出程序,不能进行下一次功能选择。 解决办法:在switch结构之前定义一个整型变量flag=0;用一个while循环语句实现每一次功能选择完毕后退回主菜单。之后的选择分支中退回主菜单的方法也是一样的。 Ø 关于查找的时候实现输入的name_find字符数组于定义的name字符数组的匹配的时候出错。我开始直接定义的一个字符串类型变量string name_find,然后使用strcnp(name name_find),但是
7、编译时报错,我以为是因为头文件中没有包含string.h,在头文件中增加#include 8、g.h>
#include 9、平均分
};
struct student x[N];
long xueqi; //学期
char banji[20]; //班级
int n; //一个班的实际人数
void a1(); //录入
void a2(); //修改
void a3(); //统计
void a4(); //查询
void a5(); //打印成绩单
main()
{ int op;char ch;
do
{
10、system("cls");
printf("\n欢迎使用学生成绩管理系统系统\n");
printf("1. 录入 \n");
printf("2. 修改 \n");
printf("3. 统计 \n");
printf("4. 查询 \n");
printf("5. 打印 \n");
printf("6. 退出 \n");
scanf("%d",&op);
switch(op)
{ case 1:a1();ch='Y';break;
case 2:a2();ch='Y';break;
case 3:a3();c 11、h='Y';break;
case 4:a4();ch='Y';break;
case 5:a5();ch='Y';break;
default:ch='N';break;
}
}while(ch=='Y');
}
void a1()//录入
{ char xuehao[20]; //一个学生的学号后两位
int i,j;
printf("输入学期 班级 人数\n");
scanf("%ld%s%d",&xueqi,banji,&n);
for(i=0;i 12、cpy(x[i].bj,banji);strcpy(x[i].xh,"2013080102");
system("cls");//清屏
printf("输入第%d个学生的学号(后两位)、姓名、性别、出生年月\n",i+1);
scanf("%s%s%s%ld",xuehao,x[i].xm,x[i].xb,&x[i].csny);
strcat(x[i].xh,xuehao);
printf("输入第%d个学生的6门成绩\n",i+1);
for(j=0;j<6;j++)
scanf("%f",&x[i].cj[j]);
}
13、 getch();}
void a5()//打印
{ int i,j;
system("cls");
for(i=0;i 14、5.1f %5.1f\n\n",x[i].total,x[i].aver);//输出总成绩,平均成绩
}
getch();}
void a2()// 修改
{ long xq;
char bj[20],xh[20],xm[20],yn;
int i,j;
do{
system("cls");
printf("输入要修改的学生的学期号和班级、学号、姓名\n");
scanf("%ld%s%s%s",&xq,bj,xh,xm);
for(i=0;i 15、)==0)//核对班级
if(strcmp(x[i].xh,xh)==0)//核对学号
if(strcmp(x[i].xm,xm)==0)//核对姓名
{ for(j=0;j<6;j++)
scanf("%f",&x[i].cj[j]);
break;
}
}
printf("继续修改学生成绩吗(Y/N)\n");
scanf("%s",&yn);}
while(yn=='y');
getch();}
void a3()//统计
{ int i,j;
float s=0;
stru 16、ct student t;
system("cls");
for(i=0;i 17、har xh[20],xm[20],yn;int i,j;
do{
system("cls");//清屏
printf("输入要查询学生的学号和姓名\n");
scanf("%s%s",xh,xm);
for(i=0;i 18、[i].bj,x[i].xh,x[i].xm,x[i].xb,x[i].csny);
for(j=0;j<6;j++)
printf("%.0f ",x[i].cj[j]);
printf("%5.1f %5.1f\n\n",x[i].total,x[i].aver);
break;}}
if(i>=n) printf("查无此人\n");
printf("继续查找吗(y/n)?\n");
scanf("%s",&yn);}while(yn=='y');
getch();}
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818