C语言成绩管理系统.doc_第1页
C语言成绩管理系统.doc_第2页
C语言成绩管理系统.doc_第3页
C语言成绩管理系统.doc_第4页
C语言成绩管理系统.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

目 录1前言22需求分析321要求322任务323运行环境324开发工具43概要设计53. 1系统流程图如 查找流程图如3.2.54详细设计541分析和设计64. 2 具体代码实现.84. 3程序运行结果.135课程设计的总结与体会15参考文献16致 谢171前言随着科学技术的不断书展,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。使用计算机对学校学生成绩统计,具有对于手工统计所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生成绩统计的效率。 为此,我们编写了学生成绩统计系统。本系统共实现四大功能,包括:1、 随机产生学生的学号、三门成绩、姓名;2、 输出学生的数据;3、计算三门科目的平均成绩和每个学生的总成绩;4、用平均数找出最高成绩和最低成绩输出他们的信息。本程序应用了rand、函数,结构体,共用体,函数,数组,for循环,switch语句等相关内容。由于自己能力有限,难免有不足的地方,恳请老师耐心指导,提出建议。2需求分析21要求(1)用c语言实现程序设计;(2)利用共用体、结构体,函数进行相关信息处理;(3)画出成绩统计的系统流程图;(4)系统的各个功能模块要求用函数的形式实现;(5)界面友好(良好的人机互交),程序要有注释。22任务(1)随机产生学生(包括姓名、三门课程的成绩);(2)输出学生的信息;(3)统计每门课程的平均成绩;(4)统计每个学生三门成绩的总成绩和平均成绩;(5)找出最高成绩的学生和最低成绩的学生;(6)画出系统流程图和查找流程图;(7)编写代码;(8)程序分析与调试。23运行环境(1)WINDOWS2000/XP系统(2)Turboc2.0编译环境24开发工具图3.1 系统流程图开始使用函数GetDate()自定义函数随机产生成绩使用函数PrintData()输出学生的信息使用AverageScore()计算并输出每门成绩的平均分找出成绩最高和成绩最低的学生输出,并计算出这两个学生的平均成绩输出结束C语言3概要设计3. 1系统流程图如 查找流程图如3.2.结束初始化I从0 到n-1循环,sum=studatai.score0+studatai.score1+studatai.score2summaxmax=sumsumminmin=sumyesnoyes查找流程图3.2No 4详细设计41分析和设计在程序的开头部分用宏定义,因为学生人数为10名,所以N的宏定义为10。#define N 10再定义结构体类型和全局的结构体数组,用来存放学生的信息。struct studentint number;char nameN;int score3; /*三门成绩*/; struct student studataN;用随机函数Random()来随机产生学生信息放在name字符数组和score数组中。void GetName(char name)int len, i=0;len=Random(3,10); /*用随机函数产生学生姓名字母的长度3-10*/namei=Random(65,90); /*随机产生学生姓名的首个大写字母*/for (i=1; ilen; i+)namei=Random(97,122); /*随机产生学生姓名的小写字母*/namei=0; GetName();studatai.score0=Random(60,100);studatai.score1=Random(60,100);studatai.score2=Random(60,100); /*随机产生每个学生3门成绩的分数*/自定义函数PrintData(),里面包括printf()输出函数,用来输出10名学生随机产生的姓名和三门成绩。void PrintData()int i;for (i=0; iN; i+)printf(Student %d:n, studatai.number);printf(Name: %sn, );printf(Scores of three subjects: %d, %d, %dn, studatai.score0, studatai.score1, studatai.score2);查找函数FindPeak(),用来查找总分最高的学生和总份最低的学生,并且输出他们的信息,包括姓名,学号,三门成绩,总分和平均分,具体分析如图3.2。void FindPeak()int maxbound=0, minbound=0;int max=0, min=300; /*将最高分赋值为0,因为每个同学的总分总会大于0,所以一定不会出现找不到的情况;将最低分赋值为300,因为总分最高不会超过300,所以不会出现找不到的情况*/int sum=0, i;for (i=0; imax)maxbound=i;max=sum;/*以上是找出最大总分的学生,用识标符maxbound来记录最高分学生的学号,max来记录最高分学生的总分*/else if (summin)minbound=i;min=sum; /*以上是找出最小总分的学生,用识标符minbound来记录最低分学生的学号,min来记录最低分学生的总分*/printf(nThe highest score:n);printf( Student %dn, studatamaxbound.number);printf( Name: %sn, );printf( Scores of three subjects: %d, %d, %dn, studatamaxbound.score0, studatamaxbound.score1, studatamaxbound.score2);printf( Total score: %dn, max);printf( Average score: %.2fn, max/3.0);/*输出最高分同学的信息,依次为编号、姓名、三门成绩、总分和平均分*/printf(nThe lowest score:n);printf( Student %dn, studataminbound.number);printf( Name: %sn, );printf( Scores of three subjects: %d, %d, %dn, studataminbound.score0, studataminbound.score1, studataminbound.score2);printf( Total score: %dn, min);printf( Average score: %.2fn, min/3.0);/*输出最低分同学的信息,依次为编号、姓名、三门成绩、总分和平均分*/4. 2 具体代码实现.#define N 10struct employeeint number;char nameN;int salary;int currency;struct employee empdataN;int Random(int Low, int High)double result=-1.0;/* function rand() return a integer between -90 and 32767 */while(result=0)result = rand()/32767.0;result=result*(double)(High-Low+1)+(double)Low;return result;void GetName(char name)int len, i=0;len=Random(3,10);namei=Random(65,90);for (i=1; ilen; i+)namei=Random(97,122);namei=0;void GetData()int i;int flag;for (i=0; i30, USD, currency=0 else RMB, currency=1*/flag=Random(0,100);if (flag30)empdatai.currency=0;elseempdatai.currency=1;void CountSalary()int i,j;long sum2=0, 0;long num2=0, 0;for (i=0; iN; i+)numempdatai.currency+;sumempdatai.currency+=empdatai.salary;printf(n);printf(%ld employee of total USD salary %ldn, num0, sum0);printf(%ld employee of total RMB salary %ldn, num1, sum1);void FindPeak()double rate, realsalary;int maxbound=0, minbound=0;double max=1000.0, min=10000.0;int i;printf(nPlease enter the currency rate: );scanf(%lf, &rate);for (i=0; imax)maxbound=i;max=realsalary;else if (realsalarymin)minbound=i;min=realsalary;printf(nThe highest salary:n);printf( Employee %dn, empdatamaxbound.number);printf( Name: %sn, );printf( Salary: %d , empdatamaxbound.salary);if (empdatamaxbound.currency = 0)printf(USD n);elseprintf(RMB n);printf(nThe lowest salary:n);printf( Employee %dn, empdataminbound.number);printf( Name: %sn, );printf( Salary: %d , empdataminbound.salary);if (empdataminbound.currency = 0)printf(USD n);elseprintf(RMB n);void PrintData()int i;for (i=0; iN; i+)printf(Employee %d:n, empdatai.number);printf(Name: %sn, );printf(Salary: %d , empdatai.salary);if (empdatai.currency = 0)printf(USD n);elseprintf(RMB n);void main()GetData();PrintData();CountSalary();FindPeak();4. 3程序运行结果.(1)输出自动产生10名学生的信息,包括,学好,姓名和三门成绩。 (2)输出3门成绩的平均分。(3)输出最高分和最低分学生的信息,包括编号,姓名,三门成绩,总分,和平均分。5课程设计的总结与体会通过本次C 语言的课程设计,我感受很多,也领悟了很多。此次C语言程序设计,我感觉自己从中学到了许多许多。我的程序是用随机函数产生10名学生的信息,包括姓名,学号和三门成绩,首先将产生的信息存入结构体数组和字符数组中输出,然后在求出三门成绩的平均分输出,在找出最高分和最低分的学生输出他们的信息。通过这次课程设计,我进一步掌握了,机构体,数组字符数组的应用.熟悉了成绩查找和统计的基本技巧。我很高兴最终成功的完成了老师给我分配的任务,真的很欣慰.因为这是我经过尽三个星期的不懈奋斗,经过尽十次的对程序的输入(因为自己没有电脑,只能在机房,网吧搞),错误有时难以发现,我就告诉自己,没事,要耐心,积极想尽一切办法(如查资料,问同学,问老师等)去解决,每次自己都是最完下机,很疲惫,有埋怨有厌倦,但每次我的内心总是有一种渴望很想完成任务,告诉自己要始终积极向上,要有一股韧劲儿,不要怕,要挺住,失败挫折很正常,无所谓,什么也不去过多想,总会出结果的,苦涩无助的时候要心胸宽阔,坦然,相信阳光总在风雨后,告诉自己要始终积极向上,乐观健康的看待不顺.这是我的感受,也是我最大的收获。同时我在编程、写论文的过程中增加了很多知识,熟练了很多C语言的知识和技巧,我很感谢我的老师梁娟,是她在我最需要帮助的时候给我耐心的指导,我很幸运有这样一位耐心和蔼的老师,我还要感谢帮助过我的同学们,没有他们的帮助,不知我能否完成任务。通过这次实践,我深深体会到自己的知识的浅薄,体会到这门课程的博大,要想学好,需要我们刻苦,花很大努力才行,需要有韧劲,认真,严谨、细致的态度,耐心,

温馨提示

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

评论

0/150

提交评论