学生成绩分析及排名系统C语言程序设计课程设计实习报告_第1页
学生成绩分析及排名系统C语言程序设计课程设计实习报告_第2页
学生成绩分析及排名系统C语言程序设计课程设计实习报告_第3页
学生成绩分析及排名系统C语言程序设计课程设计实习报告_第4页
学生成绩分析及排名系统C语言程序设计课程设计实习报告_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机上机实习报告题目:学生成绩分析及排名系统姓名:学院:__专业:班级:学号:指导教师:2012-02-22目录一设计目的…………1二课程设计摘要…………………2三课程设计的任务与数据…………3四系统功能模块…………………4五详细设计(各功能模块的具体实现算法——流程图)………5六调试分析(包含各模块的测试用例及测试结果)……………6七总结及学习感受………………7一、设计目的1.进一步熟悉VC2008及VC2010的开发环境,掌握基本的编程方法,熟悉用C语言完成一个应用程序的设计过程、掌握有关编辑和调试程序的方法和技巧;2.主要掌握C语言中的三循环语句、函数、指针、结构体及文件操作等内容;3.了解开发简单应用程序的全过程,包括:分析、设计、编程、调试和编写报告。二、课程设计摘要第一步原始数据(建立两个数据文件)文件1用来存放学生成绩文件2用来存放课程学分第二步程序设计思想定义两个结构体数组用来存放文件1和文件2的内容。编写各个函数对应各个应实现的功能。编写第一个函数Readwt0107()读取文件1(wt01071.txt)读取学生成绩编写第二个函数Readwt0107XF()读取文件2(wt0107XF.txt)读取课程学分编写第三个函数Calcjqpj()计算各个同学的加权平均值和名次,同时创建txt文本文件wt0107MC.txt写入数据,包括各个学生的学号、名次、姓名、各科成绩、加权平均值。编写第四个函数CalcAvgCalcbzcj()统计全班每门课程的平均分和标准差,并计算各分数段(60分以下;60~69;70~79;80~89;90分以上的学生人数)。课程设计的计算公式为:式中:y为课程标准差,xi为第i个学生成绩,为本门课程的算术平均成绩,N为学生数。创建txt文本文件wt0107.txt写入数据,包括课程编号、课程名称、标准差、分数段人数统计。7.编写第五个函数TZD()打印每名学生的成绩条,同时创建txt文本文件wt0107CJD.txt写入成绩条内容。8.编写第六个函数BJG()屏幕显示所有存在不及格课程的学生名单(含学号、不及格课程名称、课程的学分及成绩)。9.编写第七个函数YDS()屏幕显示优等生名单(含学号、N门课程成绩、平均分、名次)。三、程序设计的任务与数据1.原始文件①用记事本新建一文本文件,文件名为:“班名+序号”,将本班的M名学生在本学期的N门考试课的成绩(要求用真实的课程名、假想的分数,并要求将自己的学号假定为1,将自己的每门课的分数都定在90分以上,而将别人的每门课的分数都定在95分以下。)输入到这个文件中,建议按如下形式存放(注:20≤M≤50、5≤N≤8,下文以M=4,N=3为例):学号姓名英语C语言数学1我自己9693992张某7689893李某9196674王某755856…………Wt0107.txt②用记事本新建另一文本文件,文件名为:“班名+KC”,将本班本学期的N门真实的课程名及其学分输入到这个数据文件中,建议按如下列形式存放:编号课程名称课程学分1英语6.02C语言4.53数学5.5wt0107XF.txt2.课设任务在主函数中读入两个原始数据文件的内容,保存在对应的结构体数组中,并根据以上内容计算每个学生N门课的加权平均分(保留1位小数,4舍5入),并按平均分排列名次,平均分相同则名次并列。然后显示菜单,利用菜单调用各个函数,分别完成如下功能:用C语言创建一个数据文件,文件名为:“班号+序号+MC”,如物探11001班的12号同学所建的文件名应为:“wt0107MC.txt”。用来存放班级排名后的成绩表,要求按以下形式存放。名次学号姓名英语C语言数学……平均成绩11我自己969399……95.532张某768989……80.543李某919667……78.224王某755856……88.855赵某586777……68.5分别统计全班每门课的平均分和标准差,并计算各分数段(60分以下;60~69;70~79;80~89;90分以上)的学生人数。课程标准差的计算公式为:式中:y为课程标准差,xi为第i个学生成绩,为本门课程的算术平均成绩,N为学生数。用C语言创建一个数据文件,文件名为:“KC+班号+序号”,hx1090121.txt编号课程名称课程学分标准差优秀良好中等及格不及格1英语6.016.8310181532C语言4.511.715201383数学5.518.59121981打印每名学生成绩条,结果存放到用C语言创建的一个数据文件中,文件名为:“班号+序号+CJD”,wt0107CJD.txt。成绩条的格式自定。屏幕显示所有存在不及格课程的学生的名单(含学号、不及格课程名称、课程的学分及成绩)。屏幕显示优等生名单(含学号、N门课成绩、平均分、名次)优等生条件(只要满足三个条件中的任意一个条件即可):平均分92分名次在本班位于前五名平均分88分,并且至少有一门课的成绩99分模块三:打印每名学生成绩条,结果存放到用C语言创建的一个数据文件中,文件名wt0107CJD.txt四模块三:打印每名学生成绩条,结果存放到用C语言创建的一个数据文件中,文件名wt0107CJD.txt模块二:统计全班每门课的平均分和标准差,并计算各分数段(60分以下;60~69;70~79;80~89;90分以上)的学生人数。创建一个数据文件,文件名为:wt0107FX.txt模块一:计算加权平均值,并排序模块一:计算加权平均值,并排序主函数主函数模块五:屏幕显示优等生名单模块五:屏幕显示优等生名单模块四:屏幕显示所有存在不及格课程的学生的名单五、详细设计(各功能模块的具体实现算法——流程图)1.流程图2.源程序清单1.头文件:#include"stdafx.h"structXS//学生结构体{ intxh; charxm[10]; intcj[6]; floatpjcj; floatjqcj;};structKC//课程结构体{ intkh; charkm[20]; floatxf;};structtongji//统计优良差结构体{ floatKCave,bzcj; intY,L,Z,J,BJ;};voidReadCJ();//读成绩voidReadXF();//读学分voidCalcAvg();//求平均成绩voidCaljqcj();//求加权成绩voidCalbzcj();//读求标准成绩voidExportFileMC();//排名voidExportFileFX();//分析各科voidExportFileTZD();//成绩条voidPrintBJG(); //输出不及格学生 voidPrintYDS();//输出优等生2.源文件:#include"stdafx.h"#include"Grade.h"#include<iostream>#include"math.h"#defineM22#defineN6#defineA6XSxss[M];KCkcs[N];tongjiTJ[A];voidReadCJ(){ FILE*fin; fin=fopen("wt0107.txt","r"); if(fin==NULL) { printf("文件不存在!"); system("pause"); return; } charstr[81]; //读标题行 fgets(str,80,fin); intn=0; //读第行数据 fgets(str,80,fin); while(!feof(fin)) { char*ps=strtok(str,"\t,"); //更改各个字段的值,考虑了部分字段缺失 xss[n].xh=atoi(ps); ps=strtok(NULL,"\t,"); strcpy(xss[n].xm,ps); for(inti=0;i<6;i++) { ps=strtok(NULL,"\t,"); xss[n].cj[i]=atoi(ps); } n++; fgets(str,80,fin); } fclose(fin);}voidReadXF(){ FILE*fin; fin=fopen("wt0107XF.txt","r"); if(fin==NULL) { printf("文件不存在!"); system("pause"); return; } charstr[81]; //读标题行 fgets(str,80,fin); intn=0; //读第行数据 fgets(str,80,fin); while(!feof(fin)) { char*ps=strtok(str,"\t,"); //更改各个字段的值,考虑了部分字段缺失 kcs[n].kh=atoi(ps); ps=strtok(NULL,"\t,"); strcpy(kcs[n].km,ps); ps=strtok(NULL,"\t,"); kcs[n].xf=atof(ps); n++; fgets(str,80,fin); } fclose(fin);}voidCalcAvg(){ //求平均成绩 for(inti=0;i<M;i++) { floatsum=0.0; for(intj=0;j<N;j++) sum+=xss[i].cj[j]; xss[i].pjcj=sum/6; }}voidCaljqcj(){ //求加权平均 floatZXF=0.0; for(intj=0;j<N;j++) ZXF+=kcs[j].xf; for(inti=0;i<M;i++) { floatsum1=0.0; for(intj=0;j<N;j++) sum1+=xss[i].cj[j]*kcs[j].xf; xss[i].jqcj=sum1/ZXF; }}voidCalbzcj(){ //求各门课程的平均成绩及标准差 for(inti=0;i<N;i++) { floatsum2=0.0,sum3=0.0; for(intj=0;j<M;j++) sum2+=xss[j].cj[i]; TJ[i].KCave=sum2/M; for(intj=0;j<M;j++) sum3+=(xss[j].cj[i]-TJ[i].KCave)*(xss[j].cj[i]-TJ[i].KCave); TJ[i].bzcj=sqrt(sum3/N); }}voidExportFileMC(){ //调用函数 CalcAvg(); Caljqcj(); //创建文件并打开 FILE*fin1; fin1=fopen("wt0107MC.txt","w"); if(fin1==NULL) { printf("打开文件wt0107MC.txt失败!"); system("pause"); return; } //按平均成绩交换学生 for(inti=0;i<M-1;i++) for(intj=i;j<M;j++) if(xss[j].pjcj>xss[i].pjcj) { XSt=xss[j]; xss[j]=xss[i]; xss[i]=t; } //文件输出学生信息 fprintf(fin1,"名次\t学号\t姓名\t英语\tC语言\t高数\t大物\t地概\t线代\t平均成绩\t加权平均\n"); for(inti=0;i<M;i++) { fprintf(fin1,"%3d\t%3d\t%6s\t",i+1,xss[i].xh,xss[i].xm); for(intj=0;j<N;j++) fprintf(fin1,"%4d\t",xss[i].cj[j]); fprintf(fin1,"%8.1f\t%8.2f\n",xss[i].pjcj,xss[i].jqcj); } fclose(fin1);}voidExportFileFX(){ //调用函数 Calbzcj(); //创建文件 FILE*fin2; fin2=fopen("wt0107FX.txt","w"); if(fin2==NULL) { printf("打开文件wt0107FX.txt失败!"); system("pause"); return; } //统计学社优良差情况 for(inti=0;i<N;i++) { TJ[i].Y=0,TJ[i].L=0,TJ[i].Z=0,TJ[i].J=0,TJ[i].BJ=0; for(intj=0;j<M;j++) if(xss[j].cj[i]>=90) TJ[i].Y++; elseif(xss[j].cj[i]>=80) TJ[i].L++; elseif(xss[j].cj[i]>=70) TJ[i].Z++; elseif(xss[j].cj[i]>=60) TJ[i].J++; elseif(xss[j].cj[i]<60) TJ[i].BJ++; } //文件输出 fprintf(fin2,"编号\t课程名称\t课程学分\t平均分\t标准差\t优秀\t良好\t中等\t及格\t不及格\n"); for(inti=0;i<N;i++) fprintf(fin2,"%d\t%3s\t%.1f\t%.1f\t%.1f\t%d\t%d\t%d\t%d\t%d\t\n",i+1,kcs[i].km,kcs[i].xf,TJ[i].KCave,TJ[i].bzcj, TJ[i].Y,TJ[i].L,TJ[i].Z,TJ[i].J,TJ[i].BJ); fclose(fin2); printf("输出成绩分析表\n");}voidExportFileTZD()//打印通知单{ CalcAvg(); FILE*fin3; fin3=fopen("wt0107CJD.txt","w"); if(fin3==NULL) { printf("打开文件wt0107CJD.txt失败!"); system("pause"); return; } fprintf(fin3,"名次\t学号\t姓名\t英语\tC语言\t高数\t大物\t地概\t线代\t平均成绩\n"); for(inti=0;i<M;i++) { fprintf(fin3,"%3d\t%3d\t%6s\t",i+1,xss[i].xh,xss[i].xm); for(intj=0;j<N;j++) fprintf(fin3,"%4d\t",xss[i].cj[j]); fprintf(fin3,"%8.1f\n",xss[i].pjcj); } fclose(fin3); printf("输出成绩通知单\n");}voidPrintBJG()//统计不及格{ printf("屏显不及格名单\n"); printf("学号\t姓名\t课程名称\t成绩\n"); for(inti=0;i<N;i++) {

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论