收藏 分销(赏)

题目六-学生成绩管理实验报告.doc

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

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服