欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    C语言设计学生成绩统计.docx

    • 资源ID:10685396       资源大小:824.39KB        全文页数:36页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言设计学生成绩统计.docx

    1、C语言设计学生成绩统计设计题目:学生成绩统计设计条件:win7 系统、Visual C+ 6.0设计内容:【问题描述】 学期考试结束,统计有N个班某班每个人的平均成绩,每门课的平均成绩,并按个人平均成绩从高到低的顺序输出成绩,输出不及格人名单。输入、输出格式自定。【实现提示】假设某班有:30人(姓名自定)考试课程有:高等数学、物理、外语、C语言、德育5门课程。将所有同学的成绩保留在文件中,对文件中的数据处理,输出所要求的内容,程序的功能主要包括3方面: 1输入成绩到文件中2输出成绩3输出不及格学生名单4成绩排序5修改记录6删除记录7插入记录等主函数中对3个功能选择(菜单),调用对应的函数完成。

    2、【测试数据】自定模拟数据下达日期:2012年5月25日完成日期:2012年6月1日1前言-第4页2设计思想-第5页3设计过程-第7页4程序流程图-第18页5心得体会-第19页6程序清单-第21页一、前言C语言是光信息科学与技术专业的重要专业基础课。在很多后续课程中,都要使用到C语言。学生通过对C语言的学习,已经具备了使用C语言编写简单的应用程序的能力。为了加强程序设计基础,开设课程设计课,使学生对C语言有更全面的理解,进一步提高运用C语言编程解决实际问题的能力,同时,为后续课程的学习夯实基础。通过了上学期的学习,对C语言有了一些了解,并且学会了如何应用Visual C+6.0这个软件来编辑一些

    3、比较简单的算法,例如一些简单的界面设计,星型或者心型都有,还有一些教材需要的语法,算法,学号编辑一些简单的程序算一些繁琐的问题。平时凭个人兴趣还学习了其他的一些书本没有的。参加了国家二级C语言的考试,顺利通过了,但是这并没有停止我对C语言的学习。现在做C语言课程设计是为了让自己学到的东西应用于真实的问题中,在做课程设计就是不断地学习。通过一系列的考虑,我还是选择了成绩管理系统这个题目,觉得这个比较使用,应用的比较多。分析下这个题目。随着高校规模的不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长,庞大学生信息的管理工作成了高校教学管理工作中的一项重要任务,一方面,假如遵从以往旧式的工作

    4、方式,该工作的工作量大,管理繁琐,既耗人力,又耗物力;另一方面,由于计算机技术的飞速发展及应用的普及,学生信息管理这样烦琐的工作更需要由计算机来完成。因此开发一套对学生信息进行管理的软件是极其重要的,而且是必需的。通过这样的系统,可以做到对学生及学生成绩信息的规范管理、科学统计和快速的查询,从而减少管理方面的工作量。总结:课程设计目的:提高用程序设计解决实际问题的能力。通过提出算法、指定输入输出来设计一个解决方案。用C语言合理地开发两个简洁有效的程序代码来实现该设计。测试程序是否工作且满足设计指标并评价其效率。二、设计思想学生成绩统计是个比较负责的程序,功能比较多,规模比较大,所以把所有的程序

    5、代码都写在一个主函数(main函数)中,就会使得驻韩式变得庞杂、头绪不清,使阅读和维护程序变得困难。此外,有时程序中要多次实现某一功能(例如显示界面),就需要多次重复编写实现次功能的程序代码。这样使得程序冗长,不精炼。因此,我们很自然会想到采用组装的办法来简化程序设计的过程。如同组装计算机一样,事先生产好各种部件,在最后组装计算机时,用到什么就到仓库里面拿什么,直接装上就可以了。这就是模块化程序设计的思路。可以事先编好一批常用的函数来实现各种不同的功能。在设计一个较大的程序时候,往往把它分成若干程序模块,每个模块包括一个或者多个函数,每个函数实现一个特定的功能。如下图所示在设计学生成绩统计的时

    6、候可以用到此方法。1、首先,因为要用到班级的人数,是个初始的人数,所以用到宏定义就好比较方便人数的使用。#define N 30/宏定义初始时班级人数。2、班上的每个人都有自己的信息,包括学号,姓名,五门成绩。所以要给这个班的每人定义结构体。3、然后就是要用到主函数。int main()主函数里面包括了调用的很多函数,那些函数都是已经定义好了的。这次只是引用而已。4、void Read(); /读函数void Input(); /输入函数void Objectaverage(); /每门课程的平均void Eaverage(); /每人的平均成绩void Rank(); /排名void Unp

    7、ass(); /输出不及格的名单void Insert(); /插入void Delete(); /删除void Update(); /修改记录void Save(); /保存void Show(); /显示界面void Exit(); /退出并保存以上的就是要调用的函数。首先是对这些调用函数的声明,然后是在主函数中引用,然后就是在下面定义这些调用函数(既系这些函数里面到底包含了哪些内容)。以上就是我对学生成绩统计课程设计的大致思路。三、设计过程1、首先是用以上的方法设计大概的一个框架,然后再在这个框架中填好程序需要的东西。结构体类型的声明。声明学生的信息,student是结构体的名字,里面的

    8、是成员列表,包括学生的学号,姓名5门成绩,还有每人的平均成绩。struct student/声明结构体 char name10;/名字 long num; /学号 float score5;/5门成绩 double average;/每人的平均成绩stuN;2、列出要调用的函数:void Read(); /读函数void Input(); /输入函数void Objectaverage(); /每门课程的平均void Eaverage(); /每人的平均成绩void Rank(); /排名void Unpass(); /输出不及格的名单void Insert(); /插入void Delete

    9、(); /删除void Update(); /修改记录void Save(); /保存void Show(); /显示界面void Exit(); /退出并保存3、main函数。主要包括了定义的三个函数。读取函数、输入函数、show函数。界面如下:进入了界面之后就显示是否新建一些数据,还是要提取上次操作时候保存的数据。这要是这两方面的功能。4、show函数。这个是我认为的第二个main函数,而又不是main函数,因为我把大部分的调用函数都在这里用到,而show函数又是被main函数调用了两次,这是我为什么要定义show函数的原因,就是为了省空间。Show函数里面调用了很多的函数。如下:void

    10、 Objectaverage();void Eaverage(); void Rank();void Unpass();void Insert();void Delete();void Update();void Save();void Show();void Exit();调用的界面如下。根据不同的数字实现不同的功能。5、实现用户输入数据就可以实现不同功能的是用到了do while函数循环结构和switch case判断结构。大致就是,用键盘输入,然后判断是哪个数字,要是跟case后面的数字一样就执行后面的函数。若没有就提醒重新输入。清单如下:void Show()/显示界面 int j,b

    11、; do b=1; printf(1-每个人的信息(Objectaverage)-);printf(5-插入(Insert)n); printf(2-每门平均成绩(Eaverage)-);printf(6-删除(Delete)n); printf(3-班上排名(Rank)-);printf(7-修改(Update)n); printf(4-不及格名单(Unpass)-);printf(8-保存(Save);printf( 0-退出(exit)n); printf(-); scanf(%d,&j); switch(j) case 1:system(CLS);Eaverage();b=0;brea

    12、k; case 2:system(CLS);Objectaverage();b=0;break; case 3:system(CLS);Rank();b=0;break; case 4:system(CLS);Unpass();b=0;break; case 5:system(CLS);Insert();b=0;break; case 6:system(CLS);Delete();b=0;break; case 7:system(CLS);Update();b=0;break; case 8:system(CLS);Save();b=0;break; case 0:system(CLS);Ex

    13、it(); default :printf(输入有错,请再输入!n);b=0;break; while(b=0);其中system(CLS);为清屏的意思,就是让信息显示在界面的开头。6、输入模块void Input()。若是在这模块那里输入1之后就进入输入数据模块,包括30个人的学号,姓名,5门成绩的信息。如下图所示:由于三十个人就比较多了,再次也不一一列举。在输入的时候是有提醒第几个人的,要不都不知道大概自己输入了多少。在成绩那方面是有个判断的控制成绩在0-100之间,要是超过了这个范围就会提醒重新在输入一次。输入完成之后自动显示show()函数里面的东西。7、每个人的信息模块void E

    14、average()。是显示每个人的信息和求出了平均值。求平均成绩:for(i=0;icount;i+) for(j=0;j5;j+) sum+=stui.scorej; stui.average=sum/5.0; sum=0;如下图所示:如图所示,在输入的时候是避免不了错误的,于是进入了下一个模版修改模版。8、修改模板void Update():就是输入需要修改的学号,然后进行选择性地去修改。修改的意思就是直接用新的代替旧的信息,所以在替换了旧的信息之后也是按照原来的代码输出新的内容。(修改成功就表示修改成功,没有显示修改成功就表示还没有输入正确的学号。)版面如下图:修改过后为:9、全班的排名

    15、void Rank()与每门课的平均成绩void Objectaverage(),方法就是在便利循环求出平均成绩,利用冒泡法进行排名。外引入一个数组,数组的大小跟课程数量相等就是5. float a5=0,0,0,0,0并且初始化。数组里面的每一个成员就是每一门的平均成绩,然后按数组的形式输出。班级排名:新引入一个数组,double gradeLEN;数组的大小就是人数的多少。结果如下图:由于空间和排版问题,所以这里是对分数进行3.1f的输入。精确到一位就可以了。10、输出不及格的名单void Unpass():就是判断分数少于60分(if(stui.scorej60))的时候就输出这位同学的

    16、名字,若分数都大于60分则不输出他的名单。11、插入功能void Insert()。要是要插入某人的信息,就在这个结构体最后添加一个名额,最后利用已经定义的count+进行计数,增加班的人数。再重新进行排名的时候就可以显示人数已经达到了31个人的排名情况(部分排名)。:12、删除模块void Delete():就是输入要删除的学号,然后就在修改的那一项起,用后一项替代前一项。最后人数减一既系count-。scanf(%d,&number); for(i=0;icount&flag;i+)/ if(stui.num=number)/寻找要删除的学号 for(j=i;jcount-1;j+)/从i

    17、开始用后一项替换前一项 stuj=stuj+1; flag=0; (count)-; printf(哈哈:删除成功n); break; 如图删了刚输入的学号为131的信息并进行排名:13、保存void Save()读取void Read()与退出void Exit()保存用到fwrite把一系列的数据写进文件里面。生成.dat文件,。读取就用fread把dat的数据读出来。退出就用到了系统的exit()函数。在退出之前判断是否保存。四、程序的流程图五、心得体会通过这次深刻印象的课程设计,从中我学会了很多C语言的知识,更深一步地去认识C语言和应用C语言,总结得出C语言学习是一个无尽界的学习。首先

    18、印象最深刻的是应用结构体,当时只知道结构体里面可以有很多成员,但是就不知道怎么去应用这些成员,不知道这些成员该怎么去调用,现在都基本掌握了结构体的应用。还有就是结构体数量的改变时,我应该怎么去改变结构体的数量,怎么让下面引用到这个结构体时候也是随着函数里面结构体的改变而改变的?经过了不断的调试和请教别人,我终于知道了其中是要引入不少的变量来置换人数来控制人数。在题中我用到了count这个变量来规划初始化的N的大小。到最后还是有个问题:当关闭了程序之后count的值就不存在了变为0了,我该怎么去保存count的值呢?后来才发现原来只要在保存函数save()里面再引入一个一维数组来保存那个coun

    19、t的大小,在打开程序时要是想读取就用read()函数先把一维数组的数读出来了再令count等于它,以后就引用count就可以了。通过这个事情我知道了学习C语言是个不断探索的过程。在做课程设计时,问题比较多的就是一些算法的问题,例如求平均值,排名等待,要是使用break使用的不恰当就会使得结果不是你想要的结果。其中用到的是思维,是一种方法,只要方法对了,就可以用在该用的地方。例如修改记录、删除记录、增加记录的问题就是这样的,这要明白了删除记录是怎么搞的,其他的就是按照这个思维去转变就可以了。删除记录,首先是要寻找要删除的记录,找到了就把原来的记录用新的记录替换,这里用到的是后面的一项记录替换前面

    20、一项的记录,然后把count计数减一,就可以实现了删除记录的问题。求班级的排名也是用到一种寻找赋值的方法,建立新的一个组,在用score来排名的时候就最大值等于新建组里面的对应的元素。然后新建的组里面的分数都是排好名次的数值,用便利循环来查找哪个值相对应于第几名的大小,然后找到了就把整个组的信息都输出就可以了。到后期的调试和排版是比较繁琐的一个过程,在调试的时候就会不断地发现有问题,然后就需要不断地去修改程序,直到达到需要的效果就可以了。有时候是改了一个小小的符号都会让整个程序有问题,这就要求在编程序的时候要细心。其实课程设计就是在锻炼着一个人的细心还有思维的谨慎,为以后的工作做铺垫。最后在排

    21、版的时候松了口气,看见了自己的劳动成果,不禁地想修饰好程序的封面,好让程序和界面变得跟通俗易懂,一目了然。这个程序就做完了,可是C语言的探索之路还没有结束,也不要因为小小成果停止了自己前进的步伐,戒骄戒躁,虚心向学。毕竟我的专业方向也是跟C 语言有很大的关系的,例如正在学习的VC+。所以学习C语言程序有很大的前途。加油。六、程序清单#include/所需要的头文件#include/system()函数#define LEN sizeof(struct student)/宏定义结构体的总字节长度#define N 30/宏定义初始时班级人数struct student/声明结构体 char na

    22、me10;/名字 long num; /学号 float score5;/5门成绩 double average;/每人的平均成绩stuN;int w2;/用于保存count的大小int count;/全局变量,代表是班上人数的多少。void Read(); /读函数void Input(); /输入函数void Objectaverage(); /每门课程的平均void Eaverage(); /每人的平均成绩void Rank(); /排名void Unpass(); /输出不及格的名单void Insert(); /插入void Delete(); /删除void Update(); /

    23、修改记录void Save(); /保存void Show(); /显示界面void Exit(); /退出并保存int main() /主函数 int i,c; count=0; /初始化 system(Color 0D); do c=1; /C为循环的条件,配合do。 printf(n); printf( _ n); printf( 刘 付 观 生 n); printf( - n); printf( 3110008884 n); printf( - n); printf( * n); printf( * * n); printf( * * n); printf( * * n); print

    24、f( * n); printf( _ n); printf( ?新建吗? n); printf( 1 新建数据 n); printf( - n); printf( 2提取旧数据 n); printf( - n); scanf(%d,&i); switch(i) case 2:system(CLS);Read();Show();c=0;break;/system(CLS)为清屏。 case 1:system(CLS);Input();Show();c=0;break;/意思为:先清开始的界面再进入输入提醒界面 default :printf(输入有错,请再输入!n);c=0;break;/要是输

    25、入的不是1或者2就提醒错误,并且重新输入 while(c=0);/当c=0的时候就循环,于是每当执行完之后就后令c=0,使得再次进入循环 return 0;void Show()/显示界面 int j,b; do b=1; /这些都是显示在屏幕的提醒语言 printf(1-每个人的信息(Objectaverage)-);printf(5-插入(Insert)n); printf(2-每门平均成绩(Eaverage)-);printf(6-删除(Delete)n); printf(3-班上排名(Rank)-);printf(7-修改(Update)n); printf(4-不及格名单(Unpas

    26、s)-);printf(8-保存(Save);printf( 0-退出(exit)n); printf(-); scanf(%d,&j); switch(j)/ case 1:system(CLS);Eaverage();b=0;break; case 2:system(CLS);Objectaverage();b=0;break; case 3:system(CLS);Rank();b=0;break; case 4:system(CLS);Unpass();b=0;break; case 5:system(CLS);Insert();b=0;break; case 6:system(CLS);Delete();b=0;break; case 7:system(CLS);Update();b=0;break; case 8:system(CLS);Save();b=0;break; case 0:system(CLS);Exit(); default :printf(输入有错,请再输入!n);b=0;break; while(b=0);/循环的条件void Input()/输入函数 int i; printf(-输入-n); printf(请输入%d个人的信息:n,N); for(i=0;iN;i+)/遍历循


    注意事项

    本文(C语言设计学生成绩统计.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开