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

1、简易教学管理系统的设计与实现【摘要】:本系统可以实现简易的学生成绩管理,功能有限,主要功能包括读取文件中存放的学生成绩单,并对其求每个人的平均分,然后按照平均分对其排名;另外还可以计算每门课程的平均分和标准差,并按照成绩对学生划分区段,将处理后的结果可以保存在新建的一个文件中,方便查看;通过此系统还可以将每个同学的成绩单单独的输出到文件中,保存在一个指定的文件夹中;值得一提的是次系统还可以按照特定的要求进行数据筛选,比如屏幕显示有不及格科目的同学的信息,屏幕显示符合设定的优等生的条件的学生;最后本系统还实现了显示每门课程的成绩分布图(横向的)。一、设计思路程序设计一般有两个部分组成,算法和数据。

2、结构,合理的选择和实现一个数据结构和车里这些数据结构具有同样的重要性。在这个学生成绩管理系统中,算法都很简单,基本上没有什么很复杂的算法,难点主要在数据结构上面,因为这个系统涉及到得数据比较多,很多数据很容易混淆,所以,我设计了三个数据结构,分别如下:/定义常数#define MAX 100#define KCS 5/实际课程数int k;struct Stu_Data_1char Elem15;struct Stu_Data_2char cou10;double ave;double bzc;int best;int better;int good;int pass;int fail;str。

3、uct Stu_Creditchar NO10;char course10;char cerdit10;首先是定义常量,这些常量的目的主要是为了程序的通用性和易修改性设计,#define KCS 5; 的目的是预先估计课程数目,在次设计成常量,方便扩展和修改,使其实用性更强,#define MAX 100; 的目的是预先估计学生的人数。第一个数据结构是:Stu_Data_1,这个数据结构式本系统的核心,主要负责从文件中逐行读取数据放入其Elem中,用这个数据结构定义一个二维的数组,就可以很方便的对文件中的数据进行管理了,使整个函数的设计容易了很多。第二个数据结构是:Stu_Data_2,这个数。

4、据结构的主要作用是用于存放对学生的成绩处理后的结果的。char cou10;存放课程名称,double ave;存放每科的平均分,double bzc;存放每科得标准差,下面的用于存放不同等级人数。第三个数据结构是:Stu_Credit,这个数据结构主要负责将存放在文件中的各门课程所对应的学分读取出来,方便在程序执行中使用,用,NO来存放 课程编号,用 char course10来存放课程名称,用 char cerdit10; 在存放最重要的课程学分,此数据结构主要用于在主函数中计算每个学生的加权平均分,在其他函数中基本上很好调用。流程图开始读取成绩文件是否成功读取学分文件是否成功进入DOWH。

5、ILE循环MENU126534按平均分排名对学生成绩进行综合分析保存每位同学成绩显示不及格学生显示优等生名单打印成绩分布图退出程序q结束否否二、主要函数及其功能1、void Rank_List(int num,struct Stu_Data_1 stuMAXKCS+2,double average ,int n),按平均分给每个同学进行排序,然后保存到另一个文件中;2、void Ave_Sta_dev(struct Stu_Data_1 stuMAXKCS+2,int n),求各科的总体均分和标准差,结果存放在新建的一个文件中;3、void Score_List(struct Stu_Data。

6、_1 stuMAXKCS+2, int n,double average, int num),保存所有学生的成绩单,将所有的成绩单存放在一个指定的文件夹中;4、void Unpass_List(struct Stu_Data_1 stuMAXKCS+2,struct Stu_Credit xuefen,int n),屏幕显示所有不及格的人的不及格科目;5、void Excellence_List(struct Stu_Data_1 stuMAXKCS+2,int num,double average,int n),找出优等生,并将他们保存到新建的文件中;6、void Distribution(。

7、struct Stu_Data_1 stuMAXKCS+2,int n),绘制学生成绩柱状分布图7、void Menu(),主菜单函数,主要用于调出主菜单;三、系统详细设计及实现过程程序采用模块化设计,主函数是程序的入口,个模块独立,可分块调试。While()循环保证程序的循环运行;通过函数switch()使得到得返回值调用相应的各功能函数,程序的主菜单如下:总体来说,这个系统可以分为七个功能模块,其分别是:计算每个学生的加权平均分并进行排名,计算每门课程的总体均分,标准差以及分组情况,打印出每个学生的成绩单,显示有不及格科目的学生,显示符合优等生条件的学生和绘制每门课程的分布图。1、主函数功。

8、能实现主函数首先是要求输入存放学生成绩的文件,然后在读取每门课程所对应的学分,其界面如下:如果输入的文件名不正确,则会提示重新输入文件名,知道输入正确的文件名,即读取文件中的数据成功,读取到数据后在主函数中会对其进行处理,分别计算出其平均分和排名。2、计算加权平均分模块此模块的功能主要是通过函数void Rank_List(int num,struct Stu_Data_1 stuMAXKCS+2,double average ,int n),来实现的,其基本实现思路是: 直接将在主函数中计算好的排名,在加上一些信息保存到新建的一个文件中,其执行完后如下:如果在这个界面选择y,则会通过系统调用。

9、打开对应的文件。关闭文件后可以进行下一步操作。3、计算各科均分及标准差和分组情况模块这个模块要实现的功能很多,主要是通过void Ave_Sta_dev(struct Stu_Data_1 stuMAXKCS+2,int n),函数来实现的。其处理完后保存到文件中,其格式如下:4、打印出每个学生的成绩单这个模块相对比较难一点,主要是要建立一个文件夹,在本系统中通过:system(md score),来建立一个文件夹,建立好文件夹后然后按照一定得规则保存到这个新建的文件夹中,文件的前面的名字是自己输入的,其界面如下:5、显示不及格学生的信息这个功能很简单,主要是通过函数int check(int。

10、 k ,struct Stu_Data_1 stuMAXKCS+2)函数判断给定的数据是否存在不及格科目;然后通过void Unpass_List(struct Stu_Data_1 stuMAXKCS+2,struct Stu_Credit xuefen,int n)函数显示在屏幕上面;方便查看,这个部分不保存到文件中,显示界面如下:6、显示优等生学生的信息这个模块和上面的基本上一样,首先通过:int yds(int k ,struct Stu_Data_1 stuMAXKCS+2,int num,double average)来判断给定的学生是否满足优等生的条件。然后通过 void Exc。

11、ellence_List(struct Stu_Data_1 stuMAXKCS+2,int num,double average,int n)来显示在屏幕上,其见面如下:7、绘制各科成绩的分布图这个模块主要是通过一个简单的算法实现的,具体算法可以查看源代码,其基本实现思想是:先确定不同分数段的人数,然后按照人数的多少来打印特定的一个符号,其符号是:printf();其分布图如下:四、数据测试数据测试基本上在上面的实现中都已经说明的很清楚了,下面附上处理后的各个数据文件的截图:按照加权平均分排名的结果:各科目的总体分布情况:各个学生的成绩单如下:Stu_Date.h#define MAX 10。

12、0#define KCS 5/实际课程数int k;struct Stu_Data_1char Elem15;struct Stu_Creditchar NO10;char course10;char cerdit10;struct Stu_Data_2char cou10;double ave;double bzc;int best;int better;int good;int pass;int fail;void Rank_List(int num,struct Stu_Data_1 stuMAXKCS+2,double average ,int n)/按平均分排名FILE *fp;in。

13、t j;if(fp=fopen(Data1.txt,wb)=NULL) printf(此文件不可以打开,保存失败n);exit(1); fprintf(fp,名次 );for(j=0;j=90) daa-1.best+;/优秀if(atoi(stuka.Elem)=80) daa-1.better+;/良好if(atoi(stuka.Elem)=70) daa-1.good+;/中等if(atoi(stuka.Elem)=60) daa-1.pass+;/及格if(atoi(stuka.Elem)92) return 1;if(numk88)for(a=2;a=99) return 1;ret。

14、urn 0;/-void Score_List(struct Stu_Data_1 stuMAXKCS+2, int n,double average, int num)int a;char no5;char clas10=;printf(请输入班级名:);scanf(%s,clas);system(md score);for(k=1;k3)printf(n );printf(%-9s(%s):%-5s,stu0a.Elem,xuefena-1.cerdit,stuka.Elem);p=p%3;printf(%-9s(%s):%-5s,stu0a.Elem,xuefena-1.cerdit,s。

15、tuka.Elem);printf(n);/显示不及格的同学/-void Excellence_List(struct Stu_Data_1 stuMAXKCS+2,int num,double average,int n)int a;int yds(int k ,struct Stu_Data_1 stuMAXKCS+2,int num,double average) ;/-if(KCS5)FILE *fp;if(fp=fopen(Data3.txt,wb)=NULL) printf(此文件不可以打开,保存失败n);exit(1); fprintf(fp,名次 );for(int j=0;j。

16、-1;a-) if(a = 10)printf(100 :);elseprintf(%d-%d :,a*10,(a*10)+9);for(int b=0;bfigurea;b+)printf();printf(nn);printf(按任意键打印下一科的分布图.n);getch();MAIN.CPP#include stdio.h#include stdlib.h#include string.h#include conio.h#include math.h#include Stu_Data.h main()char x,z;int i,j,k,numMAX;/num-存放名次double m,。

17、averageMAX,qKCS+2;/average- 存放每位学生平均分 q-用于计算平均分struct Stu_Data_1 stuMAXKCS+2;/stu-存放学生各科成绩struct Stu_Credit CreKCS+2;/Cre-存放个科学分char File_130,File_230;/-FILE *fp;printf(请输入存放学生成绩的文件的完整路径.nn例如C盘下TC文件夹的xx0702.txt,格式为:c:tcxx0702.txtnn);printf(若文件与程序在同一文件夹下可直接输入文件名。nn);LP:printf(文件路径:);scanf(%s,File_1);。

18、if(fp=fopen(File_1,rb)=NULL)printf(打开文件失败!nn);printf(请重新输入nn);goto LP;i=0;while(!feof(fp)for(j=0;jKCS+2;j+)fscanf(fp,%sn,stuij.Elem );i+;fclose(fp);printf(n读取成功!nn);printf(按任意键继续.nn);getch();/-printf(请输入存放学科学分的文件的完整路径.nn例如C盘下TC文件夹的xx0702.txt,格式为:c:tcxx0702.txtnn);printf(若文件与程序在同一文件夹下可直接输入文件名。nn);Lp:。

19、printf(文件路径:);scanf(%s,File_2);if(fp=fopen(File_2,rb)=NULL)printf(打开文件失败!nn);printf(请重新输入nn);goto Lp;k=0;while(!feof(fp)fscanf(fp,%s%s%sn,&Crek.NO,&Crek.course,&Crek.cerdit);k+;fclose(fp);printf(n读取成功!n);printf(n按任意键进入主菜单.);getch();/-for(q0=0,k=1;kKCS+2;k+) q0+=atof(Crek.cerdit);/将学分总和存入q0for(k=1;kK。

20、CS+2;k+) qk=atof(Crek.cerdit)/q0;/求出权值for(k=1;ki;k+)averagek=0;for(j=2;jKCS+2;j+) averagek+=atof(stukj.Elem) *qj-1;/求出加权平均分/-int a;for(k=1;ki;k+)numk=1;for(a=1;ai;a+) if(averagekaveragea) numk+;/求出名次/-doMenu();fflush(stdin);x=getch();switch(x)case 1 :Rank_List(num,stu,average,i);printf(n数据已经保存到程序根目录。

21、下Data1.txt文件中,是否现在打开文件?(y/n):);scanf(%c,&z);if(z=y) printf(n请关闭文件,使程序继续执行。n);system(Data1.txt);printf(n按任意键返回主菜单.);getch();break;case2:Ave_Sta_dev(stu,i);printf(n数据已经保存到程序根目录下Data2.txt文件中,是否现在打开文件?(y/n):);scanf(%c,&z);if(z=y) printf(n请关闭文件,使程序继续执行。n);system(Data2.txt);printf(n按任意键返回主菜单.);getch();bre。

22、ak;case3:Score_List(stu,i,average,num);printf(n按任意键返回主菜单.);getch();break;case4:system(cls);printf(.含不及格科目学生名单.n);Unpass_List(stu,Cre,i);printf(n按任意键返回主菜单.);getch();break;case5:system(cls);printf(.优等生学生名单.n);Excellence_List(stu,num,average,i);printf(n按任意键返回主菜单.);getch();break;case6:Distribution(stu,i);while(x!=q。

C语言成绩统计源代码,C语言课程设计学生成绩管理系统+源码相关推荐

  1. C语言课程设计——家庭财务管理系统源码

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> ...

  2. c语言课设学生管理程序,c语言程序课程设计学生成绩管理程序.doc

    c语言程序课程设计学生成绩管理程序 武汉科技大学 二〇一〇~二〇一一学年第一学期 信息科学与工程学院 课程设计报告书 课程名称: C语言课程设计 班 级: 自动化2009级2班 学 号: 姓 名: 指 ...

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

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

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

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

  5. 课程设计——学生成绩管理系统 C语言

    课程设计--学生成绩管理系统 基本要求: 1.程序功能 编程实现一个基础的成绩管理系统. 2.设计目的 通过本程序综合掌握结构体类型.指针.函数.文件等知识的综合使用. 3.功能要求(可扩充功能) ( ...

  6. c语言学生档案管理课设作业,2019-2020年c语言课程设计学生档案管理系统实验报告.doc...

    2019-2020年c语言课程设计学生档案管理系统实验报告.doc 还剩 10页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: *********C 语 ...

  7. 班级学籍管理系统c语言论文,c语言课程设计学生学籍管理系统论文.doc

    c语言课程设计学生学籍管理系统论文 PAGE PAGE 2 1. 课题的主要功能 1.1 需求分析. 程序的功能: 对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入.显示.修改.删 ...

  8. C语言课程设计——学生考勤管理系统

    C语言课程设计--学生考勤管理系统 题目要求: 学生考勤管理系统设计 (1)问题描述 考勤信息记录了学生的缺课情况,它包括:缺课日期.第几节课.课程名称.学生姓名.缺课类型(迟到.早退.请假及旷课). ...

  9. C语言课程信息管理系统课程设计,c语言课程设计学生信息管理系统.doc

    c语言课程设计学生信息管理系统 课程设计报告 课程名称: 高级语言程序设计课程设计 姓 名: 汤璞君 班级学号: BX1209 121003410937 指导教师: 吉顺如 完成日期: 2013.6. ...

最新文章

  1. 焦虑的 BAT、不安的编程语言,揭秘程序员技术圈生存现状!
  2. 企业级监控软件Zabbix搭建部署之使用mutt+msmtp配置Zabbix邮件报警
  3. 前端交易型系统设计原则
  4. linux 静态编译 yara
  5. 使用wireshark以及filddler配合抓去手机端的TCP以及HTTP请求
  6. C# Socket服务端与客户端通信(包含大文件的断点传输)
  7. linux多线程九宫格,项目实战:Qt九宫格图片资源浏览器(支持window、linux、兼容各国产系统,支持子文件夹,多选,全选,图片预览,行数与列数设置等)...
  8. 不信不能雷倒你!超牛高考作文
  9. html延迟首页,jquery怎么实现延迟执行?
  10. 【BZOJ1934】【codevs2341】善意的投票,二分图最小割
  11. 软件架构——设计原则
  12. 计算机爱好者协会义务维修的目的,计算机协会义务维修活动总结范文
  13. 数据结构c语言版严蔚敏第二版课后答案
  14. OpenCL: OpenCL快速入门教程
  15. 地图比例尺与空间分辨率之间的关系_卫星遥感制图最佳影像空间分辨率与地图比例尺关系探讨...
  16. spring-jpa中mappedby的作用
  17. 信号发生器和任意波形发生器的区别
  18. getch(),getche(),getchar()的区别 (综合转)
  19. OA性能调优方案(二)
  20. hht时频图三维_HHT方法的原理

热门文章

  1. 【刷题日记】网易——瞌睡
  2. 畅言插件,http换成https失效了
  3. PS轻松制作GIF动态图
  4. 向腾讯企业邮箱发送邮件失败,报错: 559
  5. LeetCode矩阵题——用辐射来理解
  6. 转:Redis监控技巧
  7. 汉字字库存储芯片扩展实验
  8. 冲刺阶段第八天,4月26,27,28日。
  9. Python编程输出三角形的边长及面积
  10. 四种软件架构,看看你属于哪个层次