学生成绩统计C语言

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

课程设计课程名称____C语言课程设计___题目名称____学生成绩统计_____学生学院______物理学院_______专业班级____电子科学与技术___学号_____3110008570______学生姓名______胡健___________指导教师_______刘力斌________2012年10月17日C语言课程设计报告一、C语言课程设计的目的:进一步消化和巩固已学过的C语言程序设计基础理论,学习和实践程序设计的各种技能,利用C语言来设计各种应用程序和管理系统,为社会提供各种现代化的管理工具。根据课堂讲授内容,做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。在许多常规学科的日常教学中,我们不难发现这样一个现象,不少学生的思维常常处于混乱的状态。写起作文来前言不搭后语,解起数学题来步骤混乱,这些都是缺乏思维训练的结果。程序设计是公认的、最能直接有效地训练学生的创新思维,培养分析问题、解决问题能力的学科之一。即使一个简单的程序,从任务分析、确定算法、界面布局、编写代码到调试运行,整个过程学生都需要有条理地构思,这中间有猜测设想、判断推理的抽象思维训练,也有分析问题、解决问题、预测目标等能力的培养。二、课程设计报告正文课程设计题目的原文:学生成绩统计【问题描述】学期考试结束,统计有N个班某班每个人的平均成绩,每门课的平均成绩,并按个人平均成绩从高到低的顺序输出成绩,输出不及格人名单。输入、输出格式自定。【实现提示】假设某班有:30人(姓名自定)考试课程有:高等数学、物理、外语、C语言、德育5门课程。将所有同学的成绩保留在文件中,对文件中的数据处理,输出所要求的内容,程序的功能主要包括3方面:1输入成绩到文件中2输出成绩3输出不及格学生名单4成绩排序5修改记录6删除记录7插入记录等主函数中对3个功能选择(菜单),调用对应的函数完成。【测试数据】自定模拟数据题目的分析(需求分析):该题目主要是锻炼学生对于运用C语言结构体,指针以及文件修改的能力,C语言最难的部分就在于指针,所以,能用最简洁的语句写出一个合理的程序,老师的目的就达到了。通过该课程设计的锻炼,加深学生对这些知识的掌握以及理解。在该程序中,我将会运用结构体来分别创建学生成绩表,不及格学生成绩表以及中间值成绩表,通过结构体的运用,我能更加快速以及有规律地调用,分配各个变量,达到简洁的目的。在循环语句中,我将利用指针来达到好的定位效果,定位准确才能够有的放矢地进行各个环节,而不用通过繁杂的排序以及重复语句。该程序我还运用了文件修改,程序运行过后将会保存于stu.dat中,同时也能读取该文件。该程序有5个模式,所以必须运用文件管理。当然,当你并没有创建文件时,你却读取文件,系统找不到自然就报错。通过本次课程设计,我更加理解C语言的灵活多变,结构体的便捷,指针的灵活,文件应用的严谨。使我对C语言有更全面的理解,进一步提高运用C语言编程解决实际问题的能力,同时,为后续课程的学习夯实基础。【提示】模式(mode)1:新建一个工程;模式(mode)2:修改;模式(mode)3:删除;模式(mode)4:插入;模式(mode)5:查看。Stu.num:学生学号;Stu.name:学生名字(注:拼音);Stu.math:学生数学成绩;Stu.physics:学生物理成绩;Stu.english:学生英语成绩;Stu.clanguage:学生C语言成绩;Stu.moral:学生德育成绩;Stu.ave:学生平均成绩;模式1:将会弹出对话“Stu.num:”,输入学号,回车,以此类推。模式2:将会询问你需要修改哪一位的数据,按照弹窗提示操作。模式3:将会询问你需要删除哪一位的数据,按照弹窗提示操作。模式4:按照弹窗提示操作。模式5:直接弹出所有学生的成绩,按排名高低输出。输出文件名:“stu.dat”【分析】该程序能够存储学生成绩数据,排序,算出平均值以及删除,修改,插入等功能,具有较强的实用性。全程序主要模块包括“排序模块”,“不及格学生输出模块”,“文件保存以及输出模块”以及“成绩排名模块”。“排序模块”模块的难点在于结构体数组的赋值是否合法以及字符函数的运用,“成绩排名”的难点在于判断各模式之间的联系。“文件保存以及输出模块”的难点在于文件操作函数的繁杂以及情况的判断,“不及格学生输出模块”的难点在于成绩的判断以及输入输出的排序。/***************************************************************************技术文档/帮助清单***************************************************************************/这是一个学生成绩统计程序。该程序仅以10人为例,可通过修改宏定义N来指定人数新建程序。在VC++6.0运行。/************************************************************模式(mode)1:新建一个工程;模式(mode)2:修改;模式(mode)3:删除;模式(mode)4:插入;模式(mode)5:查看。Stu.num:学生学号;Stu.name:学生名字(注:拼音);Stu.math:学生数学成绩;Stu.physics:学生物理成绩;Stu.english:学生英语成绩;Stu.clanguage:学生C语言成绩;Stu.moral:学生德育成绩;Stu.ave:学生平均成绩;************************************************************/模式1:将会弹出对话“Stu.num:”,输入学号,回车,以此类推。模式2:将会询问你需要修改哪一位的数据,按照弹窗提示操作。模式3:将会询问你需要删除哪一位的数据,按照弹窗提示操作。模式4:按照弹窗提示操作。模式5:直接弹出所有学生的成绩,按排名高低输出。输出文件名:“stu.dat”1.总体流程图模式选择2.修改文件1.新建工4.插入数据3.删除数据5.总览文件程序清单:/*****************************************************************************程序清单****************************************************************************/#includestdio.h#includestring.h#defineN11structstudent//学生结构体{charnum[6];charname[8];intmath;intenglish;intphysical;intclanguage;intmoral;floatavr;}stu[N];structfailstudent//不及格学生结构体{charnum[6];charname[8];intmath;intenglish;intphysical;intclanguage;intmoral;}failstu[N];structexchange//中间值结构体{charnum[6];charname[8];intmath;intenglish;intphysical;intclanguage;intmoral;floatavr;}exchange;inti,n=0;intmain(void){voidsave(void);//保存文件函数声明voidsorting(void);//排序函数声明voidpress(void);//输入函数声明voidfailstudent(void);//不及格学生筛选函数声明voidStuprintf(void);//学生输出函数声明voidfailstuprintf(void);//不及格学生输出函数声明intmode;//模式变量while(1){printf(Pleaseselectthemodeyouwant!\n);printf(1:Thisisanewproject\t2:Modify\t3:Delete\t4.Insert\t5.Watch\n);printf(Yourchoice:);scanf(%d,&mode);if(mode==1)//新建程序模式{intsum=0;for(i=1;iN;i++){press();//输入failstudent();//不及格学生筛选sum=stu[i-1].math+stu[i-1].english+stu[i-1].physical+stu[i-1].clanguage+stu[i-1].moral;//总分stu[i-1].avr=(float)(sum/5.0);//平均值}sorting();//排序printf(\n);printf(\n);printf(\n);printf(Thisisascoreranking:\n);Stuprintf();//学生输出printf(\n);printf(\n);printf(\n);failstuprintf();//不及格学生输出save();}elseif(mode==2)//修改模式{FILE*fp;//文件声明staticintm,sum;//声明定义变量externi;//调取外部变量if((fp=fopen(stud.dat,rb))==NULL)//读出数据{printf(cannotopenfile\n);return0;}for(m=0;mN-1;m++)//读出文件{fread(&stu[m],sizeof(structstudent),1,fp);printf(No.%d\n,m+1);printf(stuNo:%s\tname:%s\tmath.score:%d\tphysical.score%d\tenglish.score:%d\t\clanguage.score:%d\tmoral.score:%d\tavr:%f\n,stu[m].num,stu[m].name,stu[m].math,\stu[m].physical,stu[m].english,stu[m].clanguage,stu[m].moral,stu[m].avr);}printf(whoserecorddoyouwanttomodify?\nPleasepress1~30!);scanf(%d,&i);press();sum=stu[i-1].math+stu[i-1].english+stu[i-1].physical+stu[i-1].clanguage+stu[i-1].moral;stu[i-1].avr=(float)(sum/5.0);if((fp=fopen(stud.dat,rb+))==NULL)//写入数据{printf(cannotopenfile\n);return0;}fseek(fp,(i-1)*sizeof(structstudent),0);fwrite(&stu[i-1],sizeof(structstudent),1,fp);fclose(fp);}elseif(mode==3)//删除模式{FILE*fp;staticintm,sum;externi;if((fp=fopen(stud.dat,rb))==NULL)//读出数据{printf(cannotopenfile\n);return0;}for(m=0;mN-1;m++){fread(&stu[m],sizeof(structstudent),1,fp);printf(No.%d\n,m+1);printf(stuNo:%s\tname:%s\tmath.score:%d\tphysical.score%

1 / 13
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功