《C语言》课程设计——学生成绩统计

  • 一、课题功能描述
  • 二、基本原理
  • 三、主要技术问题的描述
  • 四、程序代码

一、课题功能描述

在计算机文化基础课中讲了用EXCEL处理数据表,可以对数据表进行填充数据、分类汇总等操作,要求对表1所示的数据表填充总成绩,并按班级求期末成绩、平时成绩和总成绩的平均分,各班期末成绩的最高分和最低分。
对表1所示的数据表进行填充和分类汇总,具体操作如下:
(1)填充总成绩,公式为:总成绩=期末成绩70%+平时成绩30%。
(2)分类汇总:

  • 1)按班级求期末成绩、平时成绩和总成绩的平均分
  • 2)各班期末成绩的最高分和最低分。

二、基本原理

本程序应采用模块化设计方法,设计多个功能模块(函数)。数据组织形式采用结构体数组存放成绩信息。

三、主要技术问题的描述

(1)采用结构体数组存储表1的数据表,结构体的成员中班级、学号、姓名字段为字符型(char),期末成绩、平时成绩和总成绩成员为数值型,类型为double型。
定义如下:

struct student
{char bj[10];;char xh[9];char xm[8];double qmchj;double pshchj;double zchj ;
} std_s[10];    //此处结构体数组元素可以先设为10个,调好后,再增加。

(2)调试时,提供数据的方法可以采用初始化或输入的方法。首先,以5-10条记录进行测试,具体记录可在表1中选择,程序调试正确后,再增加记录量。
该题涉及到数组可参考教材第4章,函数参考教材第5章,结构体参考第6章。分类实际就是排序算法,讲过冒泡排序和选择排序,自己任选一种,注意,对班级排序是字符串排序,字符串比较要用字符串比较函数。
(3)输出结果要求:

  • (1)输出填充结果的数据表,形式如表1。
  • (2)输出按班级汇总后的期末成绩、平时成绩和总成绩平均分,形式如下:

班级 期末成绩平均分 平时成绩平均分 总成绩平均分
传媒1
传媒2
传媒3

  • (3)输出各班期末成绩的最高分和最低分,形式如下:

班级 最高分 最低分
传媒1
传媒2
传媒3

表1 各班学生成绩信息表(共38人)
班级 学号 姓名 期末成绩 平时成绩 总成绩
传媒1 10641301 刘晓玮 65 80  
传媒2 10641302 夏海霞 74 85  
传媒1 10641303 陈威 81 90  
传媒2 10641304 周莉 87 90  
传媒3 10641305 贾君 75 90  
传媒1 10641306 韩晓萍 58 80  
传媒2 10641307 奚景泊 80 90  
传媒3 10641308 胡华 85 95  
传媒1 10641309 李栋 93 95  
传媒2 10641310 李建炎 70 80  
传媒3 10641311 包黎年 69 90  
传媒1 10641312 李娟 92 95  
传媒2 10641313 何小卫 84 90  
传媒3 10641314 王平平 67 85  
传媒1 10641315 陈治同 80 90  
传媒2 10641316 赵荣 84 90  
传媒3 10641317 徐清泉 85 95  
传媒1 10641318 邹伟斌 75 90  
传媒2 10641319 李文辉 78 95  
传媒3 10641320 魏楠 87 90  
传媒1 10641321 朱敏敏 91 95  
传媒2 10641322 丁志刚 60 90  
传媒3 10641323 周开俊 70 90  
传媒1 10641324 吴俊 80 80  
传媒2 10641325 管峰 89 95  
传媒3 10641326 蒋佳佳 83 90  
传媒1 10641327 王奇安 88 80  
传媒2 10641328 张赛男 88 90  
传媒3 10641329 周玲玲 84 90  
传媒1 10641330 毛佳禹 91 95  
传媒2 10641331 赵金金 88 90  
传媒3 10641332 周天炯 67 90  
传媒1 10641333 卜英杰 67 85  
传媒2 10641334 杜宁波 74 90  
传媒3 10641336 侯蕴慧 62 80  
传媒1 10641337 陆菊杰 85 90  
传媒2 10641338 王贞 79 85  
传媒3 10641339 颜执栋 95 95

四、程序代码

#include<stdio.h>
#include<string.h>struct student{char bj[10];    //学生班级char xh[9];     //学号char xm[8];     //姓名double qmchj;   //期末成绩double pshchj;  //平时成绩double zchj;    //总成绩
} std_s[100];struct banji{       //由于班级有多个,所以定义一个结构体方便信息的记录和使用double qmchj;   //班级平均期末成绩double pshchj;  //班级平均平时成绩double zchj;    //班级平均总成绩double low;     //班级最低成绩double high;    //班级最高成绩int renshu;     //班级人数
}ban[10];int stunum;         //导入的成绩条数void main(){printf("请输入要导入成绩的人数:");scanf("%d",&stunum);printf("班级\t学号\t姓名\t期末\t平时\n");for(int i=0;i<stunum;i++){              //输入学生信息scanf("%s%s%s%lf%lf",&std_s[i].bj,&std_s[i].xh,&std_s[i].xm,&std_s[i].qmchj,&std_s[i].pshchj);std_s[i].zchj=std_s[i].pshchj*0.3+std_s[i].qmchj*0.7;       //计算个人总成绩}printf("\n班级\t学号\t姓名\t期末\t平时\t总成绩\n");     //循环输出成绩for(int i=0;i<stunum;i++){printf("%s\t%s\t%s\t%.1f\t%.1f\t%.1f\n",std_s[i].bj,std_s[i].xh,std_s[i].xm,std_s[i].qmchj,std_s[i].pshchj,std_s[i].zchj);}ban[0].renshu=0;    //将各班班级人数初始化为0,每插入一条+1ban[1].renshu=0;ban[2].renshu=0;printf("\n按班级汇总");for(int i=0;i<stunum;i++){               //将各班各项成绩进行累加if(strcmp(std_s[i].bj,"传媒1")==0){ban[0].pshchj+=std_s[i].pshchj;      ban[0].qmchj+=std_s[i].qmchj;ban[0].zchj+=std_s[i].zchj;ban[0].renshu++;                 //每识别到一条 传媒1班的信息,人数+1}else if(strcmp(std_s[i].bj,"传媒2")==0){ban[1].pshchj+=std_s[i].pshchj;ban[1].qmchj+=std_s[i].qmchj;ban[1].zchj+=std_s[i].zchj;ban[1].renshu++;                //每识别到一条 传媒2班的信息,人数+1}else{ban[2].pshchj+=std_s[i].pshchj;ban[2].qmchj+=std_s[i].qmchj;ban[2].zchj+=std_s[i].zchj;ban[2].renshu++;                //每识别到一条 传媒3班的信息,人数+1}}printf("\n班级\t期末\t平时\t总成绩\n");for(int i=0;i<3;i++){                   //输出各班平均的期末成绩、平时成绩、总成绩printf("传媒%d\t%.1f\t%.1f\t%.1f\n",i+1,ban[i].qmchj/ban[i].renshu,ban[i].pshchj/ban[i].renshu,ban[i].zchj/ban[i].renshu);}ban[0].high=0;          //将各个班最高成绩初始化为0,最低成绩初始化为100ban[0].low=100;ban[1].high=0;ban[1].low=100;ban[2].high=0;ban[2].low=100;printf("\n各班最高最低分:\n");for(int i=0;i<stunum;i++){                      //通过strcmp函数,判断学生在哪个班if(strcmp(std_s[i].bj,"传媒1")==0){if(std_s[i].zchj<=ban[0].low)           //当发现学生成绩<=班级现在的最低成绩时,则将班级最低成绩改写为该同学成绩。ban[0].low=std_s[i].zchj;if(std_s[i].zchj>=ban[0].high) ban[0].high=std_s[i].zchj;          //当发现学生成绩>=班级现在的最高成绩时,则将班级最高成绩改写为该同学成绩。}else if(strcmp(std_s[i].bj,"传媒2")==0){if(std_s[i].zchj<=ban[1].low)           //当发现学生成绩<=班级现在的最低成绩时,则将班级最低成绩改写为该同学成绩。ban[1].low=std_s[i].zchj;if(std_s[i].zchj>=ban[1].high)ban[1].high=std_s[i].zchj;          //当发现学生成绩>=班级现在的最高成绩时,则将班级最高成绩改写为该同学成绩。}else{if(std_s[i].zchj<=ban[2].low)ban[2].low=std_s[i].zchj;           //当发现学生成绩<=班级现在的最低成绩时,则将班级最低成绩改写为该同学成绩。if(std_s[i].zchj>=ban[2].high)ban[2].high=std_s[i].zchj;          //当发现学生成绩>=班级现在的最高成绩时,则将班级最高成绩改写为该同学成绩。}}printf("班级\t最高\t最低\n");         for(int i=0;i<3;i++){                           //输出各班最高最低信息printf("传媒%d\t%.1f\t%.1f\n",i+1,ban[i].high,ban[i].low);}
}

《C语言》课程设计——学生成绩统计相关推荐

  1. C语言成绩统计源代码,C语言课程设计学生成绩管理系统+源码

    <C语言课程设计学生成绩管理系统+源码>由会员分享,可在线阅读,更多相关<C语言课程设计学生成绩管理系统+源码(25页珍藏版)>请在人人文库网上搜索. 1.简易教学管理系统的设 ...

  2. c语言课程设计查找分数与删除元素,c语言课程设计学生成绩管理系统

    <c语言课程设计学生成绩管理系统>由会员分享,可在线阅读,更多相关<c语言课程设计学生成绩管理系统(31页珍藏版)>请在人人文库网上搜索. 1.河南理工大学计算机科学与技术学院 ...

  3. C语言学生成绩管理设计总结,C语言课程设计学生成绩管理系统个人总结

    C语言课程设计学生成绩管理系统个人总结 C语言课程设计--学生成绩管理系统 个人心得体会 (徐州工程学院 14计嵌1班 07组 张凯) 这一周以来的课程设计,不仅让我明白了C语言的确是一门很有用的,但 ...

  4. 学生成绩统计c语言课程设计,学生成绩管理系统-C语言课程设计

    记一次课程设计作业 学生成绩管理系统#include #include #include #include /* 学生成绩管理系统介绍 2017C语言课程设计  202160936 1.支持将数据保存 ...

  5. 简单的c语言课程设计管理类,C语言课程设计-学生成绩简单管理程序.doc

    C语言课程设计报告 --学生成绩简单管理程序 一.程序的主要功能 用单向链表结构实现简单的学生成绩管理功能,要求具有链表建立.链表输出.结点有序插入.节电删除.数据查询等功能. 各项菜单功能: (1) ...

  6. c语言学生成绩管理系统课设作业,C语言课程设计——学生成绩管理系统

    摘 要 学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段.但一直以来人们使用传统人工的方式 ...

  7. C语言课程设计——学生成绩管理系统(详细报告)

    欢迎来到<IT_WEH_coder>的博客.我是小魏,一名普通的在校大学生.希望大家多多关照,我们一起成长一起进步,也希望大家多多支持我鸭,喜欢我就给我一个关注吧! 本课程设计的编程部分所 ...

  8. 按课程查询学生成绩C语言,C语言课程设计学生成绩管理系统

    1. 设计目标 设计一个简单的学生成绩管理系统,系统要解决成绩录入.计算学分和平均分成绩排名和成绩查询等几个方面. 主要功能分为四部分: ① 提供成绩录入界面. ② 统计每个学生的总分和平均分. ③ ...

  9. c语言课程设计 学生成绩管理系统

    学生成绩管理系统要求: 1.系统功能以菜单方式工作: 2.数据的输入: 3.数据的插入: 4.数据的输出: 5.数据的删除: 6.数据的查找,通常以两种方式进行查找,如姓名.学号: 目录 1.结构体和 ...

  10. c语言课程设计学生成绩簿,c语言课程设计—学生成绩管理系统

    0; } else printf("没有该条件的选项!\n"); return 0; } void incharge(int a,int b) //交换函数. { struct s ...

最新文章

  1. 在android上移植ios
  2. 011_logback中的SMTPAppender
  3. 模板—扩展GCD*2
  4. [每天一个知识点]1-程序员的三大美德(1)
  5. POJ 1852 Ants O(n)
  6. 数据可视化【十】绘制地图
  7. java bufferedrandomaccessfile_java 读写操作大文件 BufferedReader和RandomAccessFile
  8. vsCode配置通过Github同步(Settings Sync)
  9. Python进行特征提取
  10. 代理app请求地址访问本机服务(同一局域网的本地起的服务器)方便测试app
  11. 大数据Hadoop原理:大数据Hadoop技术原理简介
  12. fmincon函数求极值
  13. android 简书饿了么,对接饿了么平台总结
  14. 【雅思大作文考官范文】——第五篇: 'literature and history' essay
  15. 干货!交换机常用的光模块及光接口
  16. 从外观来看微型计算机由哪几个部分组成,福师11春学期《计算机应用基础》在线作业一...
  17. vue开发之图片加载不出来问题解决
  18. PHP Imagick 去背景 (抠图专用)
  19. 《一本书读懂大数据营销 玩透大数据营销 创造网络营销奇迹》pdf下载 百度云
  20. 2018年10大最佳SDN解决方案(迄今为止)

热门文章

  1. Vue-cli配置代理服务器,解决跨域请求问题
  2. eact native生成APP报错:You have not accepted the license agreements of the following SDK components:...
  3. 触摸屏与usb鼠标同时支持
  4. DOCTYPE声明——标准模式与怪异模式的区别
  5. wireshark打开cap抓包文件不能显示中文
  6. Notepad++ 替代品开源了,好用 !!!
  7. 天巡:2018十一黄金周出境自由行大数据报告(附下载)
  8. mysql怎么初始化自增值_MySql中重新设置AUTO_INCREMENT自增值方法
  9. unbuntu 安装nginx
  10. pg_stat_statements