ImageVerifierCode 换一换
格式:DOC , 页数:14 ,大小:522.04KB ,
资源ID:986860      下载积分:20 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 微信支付   
验证码:   换一换

加入VIP,免费下载资源
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.wodocx.com/d-986860.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(学生成绩分析及排名系统C语言程序设计课程设计实习报告.doc)为本站会员(风****)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(发送邮件至2622162128@qq.com或直接QQ联系客服),我们立即给予删除!

学生成绩分析及排名系统C语言程序设计课程设计实习报告.doc

1、 计算机上机实习报告 题 目: 学生成绩分析及排名系统 姓 名: 学 院: _专 业: 班 级: 学 号: 指导教师: 2012-02-22目 录一 设计目的1二 课程设计摘要 2三 课程设计的任务与数据3四 系统功能模块 4五 详细设计(各功能模块的具体实现算法流程图) 5六 调试分析(包含各模块的测试用例及测试结果) 6七 总结及学习感受 7一、设计目的1.进一步熟悉VC2008及VC2010的开发环境,掌握基本的编程方法,熟悉用C语言完成一个应用程序的设计过程、掌握有关编辑和调试程序的方法和技巧;2.主要掌握C语言中的三循环语句、函数、指针、结构体及文件操作等内容;3.了解开发简单应用程

2、序的全过程,包括:分析、设计、编程、调试和编写报告。二、课程设计摘要第一步 原始数据(建立两个数据文件)1. 文件1用来存放学生成绩2. 文件2用来存放课程学分第二步 程序设计思想1. 定义两个结构体数组用来存放文件1和文件2的内容。2. 编写各个函数对应各个应实现的功能。3. 编写第一个函数Readwt0107( )读取文件1(wt01071.txt)读取学生成绩4. 编写第二个函数Readwt0107XF( )读取文件2(wt0107XF.txt)读取课程学分5. 编写第三个函数Calcjqpj ( )计算各个同学的加权平均值和名次,同时创建txt文本文件wt0107MC.txt写入数据,

3、包括各个学生的学号、名次、姓名、各科成绩、加权平均值。6. 编写第四个函数 CalcAvg Calcbzcj( )统计全班每门课程的平均分和标准差,并计算各分数段(60分以下;6069;7079;8089;90分以上的学生人数)。课程设计的计算公式为:式中:y为课程标准差,xi 为第i个学生成绩, 为本门课程的算术平均成绩,N为学生数。创建txt文本文件wt0107.txt写入数据,包括课程编号、课程名称、标准差、分数段人数统计。7编写第五个函数TZD( )打印每名学生的成绩条,同时创建txt文本文件wt0107CJD.txt写入成绩条内容。8编写第六个函数BJG( )屏幕显示所有存在不及格课

4、程的学生名单(含学号、不及格课程名称、课程的学分及成绩)。9编写第七个函数YDS( )屏幕显示优等生名单(含学号、N门课程成绩、平均分、名次)。三、程序设计的任务与数据1.原始文件用记事本新建一文本文件,文件名为:“班名+序号”,将本班的M名学生在本学期的N门考试课的成绩(要求用真实的课程名、假想的分数,并要求将自己的学号假定为1,将自己的每门课的分数都定在90分以上,而将别人的每门课的分数都定在95分以下。)输入到这个文件中,建议按如下形式存放(注:20M50、5N8,下文以M=4,N=3为例): 学号 姓名 英语 C语言 数学 1 我自己 96 93 99 2 张某 76 89 89 3

5、李某 91 96 67 4 王某 75 58 56 Wt0107.txt 用记事本新建另一文本文件,文件名为:“班名+KC”,将本班本学期的N门真实的课程名及其学分输入到这个数据文件中,建议按如下列形式存放: 编号 课程名称 课程学分1 英语 6.02 C语言 4.53 数学 5.5wt0107XF.txt2课设任务在主函数中读入两个原始数据文件的内容,保存在对应的结构体数组中,并根据以上内容计算每个学生N门课的加权平均分(保留1位小数,4舍5入),并按平均分排列名次,平均分相同则名次并列。然后显示菜单,利用菜单调用各个函数,分别完成如下功能: 1) 用C语言创建一个数据文件,文件名为:“班号

6、+序号+MC”,如物探11001班的12号同学所建的文件名应为:“wt0107MC.txt”。用来存放班级排名后的成绩表,要求按以下形式存放。 名次 学号 姓名 英语 C语言 数学 平均成绩 1 1 我自己 96 93 99 95.5 3 2 张某 76 89 89 80.5 4 3 李某 91 96 67 78.2 2 4 王某 75 58 56 88.8 5 5 赵某 58 67 77 68.5 2) 分别统计全班每门课的平均分和标准差,并计算各分数段(60分以下;6069;7079;8089;90分以上)的学生人数。课程标准差的计算公式为:式中:y为课程标准差,xi 为第i个学生成绩,

7、为本门课程的算术平均成绩,N为学生数。3) 用C语言创建一个数据文件,文件名为:“KC+班号+序号”, hx1090121.txt 编号 课程名称 课程学分 标准差 优秀 良好 中等 及格 不及格1 英语 6.0 16.8 3 10 18 15 3 2 C语言 4.5 11.7 1 5 20 13 83 数学 5.5 18.5 9 12 19 8 14) 打印每名学生成绩条,结果存放到用C语言创建的一个数据文件中,文件名为:“班号+序号+CJD”, wt0107CJD.txt。成绩条的格式自定。5) 屏幕显示所有存在不及格课程的学生的名单(含学号、不及格课程名称、课程的学分及成绩)。6) 屏幕

8、显示优等生名单(含学号、门课成绩、平均分、名次) 优等生条件(只要满足三个条件中的任意一个条件即可):a) 平均分 92分b) 名次在本班位于前五名c) 平均分 88分,并且至少有一门课的成绩 99分模块三:打印每名学生成绩条,结果存放到用C语言创建的一个数据文件中,文件名wt0107CJD.txt四、系统功能模块模块二:统计全班每门课的平均分和标准差,并计算各分数段(60分以下;6069;7079;8089;90分以上)的学生人数。创建一个数据文件,文件名为:wt0107FX.txt模块一:计算加权平均值,并排序主函数模块五:屏幕显示优等生名单模块四:屏幕显示所有存在不及格课程的学生的名单五

9、、详细设计(各功能模块的具体实现算法流程图)1.流程图2.源程序清单 1. 头文件: #include stdafx.hstruct XS /学生结构体int xh;char xm10;int cj6;float pjcj;float jqcj;struct KC /课程结构体int kh;char km20;float xf;struct tongji /统计优良差结构体float KCave, bzcj;int Y, L, Z, J, BJ;void ReadCJ(); /读成绩void ReadXF(); /读学分void CalcAvg(); /求平均成绩void Caljqcj();

10、 /求加权成绩void Calbzcj(); /读求标准成绩void ExportFileMC(); /排名void ExportFileFX(); /分析各科 void ExportFileTZD(); /成绩条void PrintBJG(); /输出不及格学生void PrintYDS(); /输出优等生2.源文件:#include stdafx.h#include Grade.h#include #include math.h#define M 22#define N 6#define A 6XS xssM;KC kcsN;tongji TJA;void ReadCJ()FILE *fi

11、n;fin = fopen(wt0107.txt, r);if (fin = NULL)printf(文件不存在!);system(pause);return;char str81;/ 读标题行fgets(str, 80, fin);int n = 0;/ 读第行数据fgets(str, 80, fin);while (!feof(fin)char *ps = strtok(str, t,);/ 更改各个字段的值,考虑了部分字段缺失xssn.xh = atoi(ps);ps = strtok(NULL, t,);strcpy(xssn.xm, ps);for (int i = 0; i 6;

12、i+)ps = strtok(NULL, t,);xssn.cji = atoi(ps);n+;fgets(str, 80, fin);fclose(fin);void ReadXF()FILE *fin;fin = fopen(wt0107XF.txt, r);if (fin = NULL)printf(文件不存在!);system(pause);return;char str81;/ 读标题行fgets(str, 80, fin);int n = 0;/ 读第行数据fgets(str, 80, fin);while (!feof(fin)char *ps = strtok(str, t,)

13、;/ 更改各个字段的值,考虑了部分字段缺失kcsn.kh = atoi(ps);ps = strtok(NULL, t,);strcpy(kcsn.km, ps);ps = strtok(NULL, t,);kcsn.xf = atof(ps);n+;fgets(str, 80, fin);fclose(fin);void CalcAvg()/求平均成绩for (int i = 0; i M; i+)float sum = 0.0;for(int j = 0; j N; j+)sum += xssi.cjj;xssi.pjcj = sum / 6;void Caljqcj()/求加权平均flo

14、at ZXF = 0.0;for (int j = 0; j N; j+)ZXF += kcsj.xf;for (int i = 0; i M; i+)float sum1 = 0.0;for(int j = 0; j N; j+)sum1 += xssi.cjj * kcsj.xf;xssi.jqcj = sum1 / ZXF;void Calbzcj()/求各门课程的平均成绩及标准差for (int i = 0; i N; i+)float sum2 = 0.0, sum3 = 0.0;for (int j = 0; j M; j+)sum2 += xssj.cji;TJi.KCave =

15、 sum2 / M;for (int j = 0; j M; j+)sum3 += (xssj.cji - TJi.KCave) * (xssj.cji - TJi.KCave);TJi.bzcj = sqrt(sum3 / N);void ExportFileMC()/调用函数CalcAvg();Caljqcj();/创建文件并打开FILE *fin1;fin1 = fopen(wt0107MC.txt, w);if (fin1 = NULL)printf(打开文件wt0107MC.txt失败!);system(pause);return;/按平均成绩交换学生for (int i = 0;

16、i M - 1; i+)for (int j = i; j xssi.pjcj)XS t = xssj;xssj = xssi;xssi = t;/文件输出学生信息fprintf(fin1, 名次t学号t姓名t英语tC语言t高数t大物t地概t线代t平均成绩t加权平均n);for (int i = 0; i M; i+)fprintf(fin1, %3dt%3dt%6st, i+1, xssi.xh, xssi.xm);for(int j = 0; j N; j+)fprintf(fin1, %4dt, xssi.cjj);fprintf(fin1, %8.1ft%8.2fn, xssi.pjc

17、j, xssi.jqcj); fclose(fin1); void ExportFileFX()/调用函数Calbzcj();/创建文件FILE *fin2;fin2 = fopen(wt0107FX.txt, w);if (fin2 = NULL)printf(打开文件wt0107FX.txt失败!);system(pause);return;/统计学社优良差情况for (int i = 0; i N; i+)TJi.Y = 0, TJi.L = 0, TJi.Z = 0, TJi.J = 0, TJi.BJ = 0;for (int j = 0; j = 90) TJi.Y+;else i

18、f (xssj.cji = 80) TJi.L+;else if (xssj.cji = 70)TJi.Z+;else if (xssj.cji = 60) TJi.J+;else if (xssj.cji 60)TJi.BJ+;/文件输出fprintf(fin2, 编号t课程名称t课程学分t平均分t标准差t优秀t良好t中等t及格t不及格n);for(int i = 0; i N; i+) fprintf(fin2,%dt%3st%.1ft%.1ft%.1ft%dt%dt%dt%dt%dtn, i+1, kcsi.km, kcsi.xf, TJi.KCave, TJi.bzcj,TJi.Y,

19、TJi.L, TJi.Z, TJi.J, TJi.BJ);fclose(fin2);printf(输出成绩分析表n);void ExportFileTZD() /打印通知单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 (int i = 0; i M; i+)fprintf(fin3, %3dt%3dt%

20、6st, i+1, xssi.xh, xssi.xm);for(int j = 0; j N; j+)fprintf(fin3, %4dt, xssi.cjj);fprintf(fin3, %8.1fn, xssi.pjcj);fclose(fin3);printf(输出成绩通知单n);void PrintBJG() /统计不及格printf(屏显不及格名单n);printf(学号t姓名t课程名称t成绩n);for(int i = 0; i N; i+) for(int j = 0; j M; j+) if(xssj.cji 60)printf(%dt%st%st%10dn, xssj.xh,

21、 xssj.xm, kcsi.km, xssj.cji);void PrintYDS() /统计优生CalcAvg();printf(屏显优等生名单n);printf(学号t姓名t英语tC语言t高数t大物t地概t线代t平均成绩n);int i, j, k;for(i = 0; i M; i+)for(j = 0; j = 86 | (xssi.pjcj = 88 & xssi.cjj = 99)printf(%dt%st, xssi.xh, xssi.xm);for(k = 0; k N; k+)printf(%dt, xssi.cjk);printf(%.1fn, xssi.pjcj );b

22、reak;六、调试结果 1 学生成绩排名 2.成绩分析3.成绩通知单4.不及格学生5.优等生七、总结编程题目要求简单易懂,但实际操作却很难,知识贯通整个课本,三种循环语句.函数.结构体以及指针文件,通过课设全面的综合让我感觉到C语言功能的强大,经过这一阶段的初级学习,我们对C语言的一些概念认识还是比较模糊或者说很多东西太抽象,不过我们都有了一个明确的学习方法就是编程,亲自动手实机操作,让机器指导我们学习,让机器告诉我们对错。这为我们的第二阶段的实例化学习做了很好的准备,然后亲自动手做一些程序,并学会调试程序.检验.分析逐步学习。常看一些程序,并能在别人的基础上创新 改进。学习精髓,逐步积累。这对以后学习C语言会有很大的帮助。

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922