Skip to content

BarryBooder/c-stugrade

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

任务要求

这是学校布置的一个 c 语言课题设计作业,任务要求如下:

用一个结构体数组存放5个学生3门课的成绩。要求建立5个子函数分别实现题目的5步。

  1. 输入5个学生3门课的成绩存入结构体数组中;
  2. 输出学生信息;
  3. 求每个学生的平均分;
  4. 按平均分从高到低排列;
  5. 按平均分求每个学生的名次。

要求:用结构体数组存放学生信息,每个功能都用函数实现。

报告书可能用得到的

前言

在考试后老师通常有记录学生成绩、计算学生平均分并按照平均分给学生排名次的需求,对于学生来说也需要查看自己的平均分排名综合估计自己在班上的水平,进而改善学习方法和态度,努力取得更好的成绩。我们组发现现在大多数老师还在采用笔纸手工统计学生成绩后使用计算器把学生成绩相加,继而得出平均分,然后还要手工排名,非常的麻烦,因此我们小组准备使用c语言编写一个基于结构体的学生成绩管理系统,方便老师和同学们。

分析和设计

该课题要求使用结构体来保存学生相关成绩,并没有要求操作文件,因此不考虑文件存储问题。

我组用一个结构体存储姓名、三科科目、三科成绩、平均。

全系统共采用13个函数(包含1个main()函数、2个修饰函数、5个辅助函数、5个功能函数组成)。

对于任务1,我组使用scanf() 函数和for循环将用户输入的信息存储在struct StuGrade结构体中。

对于任务2,我组自定义了一个PrintData() 函数用以减少重复代码,规范输出格式。

对于任务3,我组自定义了一个CalTheAveScore() 函数用以计算学生平均分,并使用NoSortTheAveScore() 函数输出未经排序的平均分。

对于任务4,我组自定义了一个SortTheAveScore() 函数用冒泡排序排序学生平均分,并用TheAveScore() 函数输出排序后的平均分。

对于任务5,我组调用上述CalTheAveScore() 函数和SortTheAveScore() 函数后,在输出语句中添加一个变量i,用以输出当前输出的次数(实际上等于学生平均分排名)。

课程设计体会

本课题涉及结构体相关知识,我在校学习时恰好对于这一节并没有完全掌握,因此选择此课题来挑战和提升自己。经过不断的翻阅资料和询问大佬,终于按时按质完成了课题设计的程序,在完成过程中不但加深了我对结构体的认识,也促进了同学间的交流和友谊,一举多得。当然,过程不是一帆风顺的,对于函数的返回值、函数的概念、结构体和多维数组的选用等多方面遇到了不少问题,好在一一解决。总的来说,本次课题设计对我来说有莫大的帮助和提升。 对于程序,存在以下优点和缺点:

优点:

  1. 本课题采用结构体数组存储学生成绩,可以降低编码复杂度,比使用二维数组更加理想。

  2. 在添加学生成绩之前加入一个操作确认函数,避免手滑误点进学生成绩录入模块。

  3. 学生成绩录入模块系统提示更改颜色,方便区分,提升视觉效果。

  4. 变量名、函数名均采用标准命名法,方便理解。

缺点:

  1. 没有实现文件存储,关闭程序即丢失数据。

  2. 程序过于冗长,还应该可以精简代码。

About

学校 c 课题设计作业

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages