当前位置:文档之家› C语言设计:学生成绩统计

C语言设计:学生成绩统计

C语言设计:学生成绩统计
C语言设计:学生成绩统计

设计题目:学生成绩统计

设计条件:win7 系统、Visual C++ 6.0

设计内容:

【问题描述】

学期考试结束,统计有N个班某班每个人的平均成绩,每门课的平均成绩,并按个人平均成绩从高到低的顺序输出成绩,输出不及格人名单。输入、输出格式自定。

【实现提示】

假设某班有:30人(姓名自定)

考试课程有:高等数学、物理、外语、C语言、德育5门课程。

将所有同学的成绩保留在文件中,对文件中的数据处理,输出所要求的内容,程序的功能主要包括3方面:

①输入成绩到文件中

②输出成绩

③输出不及格学生名单

④成绩排序

⑤修改记录

⑥删除记录

⑦插入记录等

主函数中对3个功能选择(菜单),调用对应的函数完成。

【测试数据】

自定模拟数据

下达日期: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这个软件来编辑一些比较简单的算法,例如一些简单的界面设计,星型或者心型都有,还有一些教材需要的语法,算法,学号编辑一些简单的程序算一些繁琐的问题。平时凭个人兴趣还学习了其他的一些书本没有的。参加了国家二级C语言的考试,顺利通过了,但是这并没有停止我对C语言的学习。现在做C 语言课程设计是为了让自己学到的东西应用于真实的问题中,在做课程设计就是不断地学习。通过一系列的考虑,我还是选择了成绩管理系统这个题目,觉得这个比较使用,应用的比较多。

分析下这个题目。随着高校规模的不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长,庞大学生信息的管理工作成了高校教学管理工作中的一项重要任务,一方面,假如遵从以往旧式的工作方式,该工作的工作量大,管理繁琐,既耗人力,又耗物力;另一方面,由于计算机技术的飞速发展及应用的普及,学生信息管理这样烦琐的工作更需要由计算机来完成。因此开发一套对学生信息进行管理的软件是极其重要的,而且是必需的。通过这样的系统,可以做到对学生及学生成绩信息的规范管理、科学统计和快速的查询,从而减少管理方面的工作量。

总结:

课程设计目的:

?提高用程序设计解决实际问题的能力。

?通过提出算法、指定输入输出来设计一个解决方案。

?用C语言合理地开发两个简洁有效的程序代码来实现该设计。

?测试程序是否工作且满足设计指标并评价其效率。

二、设计思想

学生成绩统计是个比较负责的程序,功能比较多,规模比较大,所以把所有的程序代码都写在一个主函数(main函数)中,就会使得驻韩式变得庞杂、头绪不清,使阅读和维护程序变得困难。此外,有时程序中要多次实现某一功能(例如显示界面),就需要多次重复编写实现次功能的程序代码。这样使得程序冗长,不精炼。

因此,我们很自然会想到采用组装的办法来简化程序设计的过程。如同组装计算机一样,事先生产好各种部件,在最后组装计算机时,用到什么就到仓库里面拿什么,直接装上就可以了。这就是模块化程序设计的思路。

可以事先编好一批常用的函数来实现各种不同的功能。

在设计一个较大的程序时候,往往把它分成若干程序模块,每个模块包括一个或者多个函数,每个函数实现一个特定的功能。如下图所示

在设计学生成绩统计的时候可以用到此方法。

1、首先,因为要用到班级的人数,是个初始的人数,所以用到宏定义就好比较方便人数的使用。#define N 30//宏定义初始时班级

人数。

2、班上的每个人都有自己的信息,包括学号,姓名,五门成绩。所以要给这个班的每人定义结构体。

3、然后就是要用到主函数。int main()主函数里面包括了调用的很多函数,那些函数都是已经定义好了的。这次只是引用而已。

4、void Read(); //读函数

void Input(); //输入函数

void Objectaverage(); //每门课程的平均

void Eaverage(); //每人的平均成绩

void Rank(); //排名

void Unpass(); //输出不及格的名单

void Insert(); //插入

void Delete(); //删除

void Update(); //修改记录

void Save(); //保存

void Show(); //显示界面

void Exit(); //退出并保存

以上的就是要调用的函数。首先是对这些调用函数的声明,然后是在主函数中引用,然后就是在下面定义这些调用函数(既系这些函数里面到底包含了哪些内容)。

以上就是我对学生成绩统计课程设计的大致思路。

三、设计过程

1、首先是用以上的方法设计大概的一个框架,然后再在这个框架中填好程序需要的东西。

结构体类型的声明。声明学生的信息,student是结构体的名字,{}里面的是成员列表,包括学生的学号,姓名5门成绩,还有每人的平均成绩。

struct student///声明结构体

{

char name[10];///名字

long num; ///学号

float score[5];//5门成绩

double average;//每人的平均成绩

}stu[N];

2、列出要调用的函数:

void Read(); //读函数

void Input(); //输入函数

void Objectaverage(); //每门课程的平均

void Eaverage(); //每人的平均成绩

void Rank(); //排名

void Unpass(); //输出不及格的名单

void Insert(); //插入

void Delete(); //删除

void Update(); //修改记录

void Save(); //保存

void Show(); //显示界面

void Exit(); //退出并保存

3、main函数。主要包括了定义的三个函数。读取函数、输入函数、show函数。界面如下:

进入了界面之后就显示是否新建一些数据,还是要提取上次操作时候保存的数据。这要是这两方面的功能。

4、show函数。这个是我认为的第二个main函数,而又不是main 函数,因为我把大部分的调用函数都在这里用到,而show函数又是被main函数调用了两次,这是我为什么要定义show函数的原因,就

是为了省空间。Show函数里面调用了很多的函数。如下:void 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;

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;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);

其中system("CLS");为清屏的意思,就是让信息显示在界面的开头。

6、输入模块void Input()。。

若是在这模块那里输入1之后就进入输入数据模块,包括30个人的学号,姓名,5门成绩的信息。如下图所示:

由于三十个人就比较多了,再次也不一一列举。在输入的时候是有提醒第几个人的,要不都不知道大概自己输入了多少。在成绩那方面是有个判断的控制成绩在0-100之间,要是超过了这个范围就会提醒重新在输入一次。输入完成之后自动显示show()函数里面的东西。

7、每个人的信息模块void Eaverage()。是显示每个人的信息和

求出了平均值。求平均成绩:for(i=0;i

{

for(j=0;j<5;j++)

{

sum+=stu[i].score[j];

}

stu[i].average=sum/5.0;

sum=0;

如下图所示:

如图所示,在输入的时候是避免不了错误的,于是进入了下一个模版——修改模版。

8、修改模板void Update():就是输入需要修改的学号,然后

进行选择性地去修改。修改的意思就是直接用新的代替旧的信息,所以在替换了旧的信息之后也是按照原来的代码输出新的内容。

(修改成功就表示修改成功,没有显示修改成功就表示还没有输入正确的学号。)版面如下图:

修改过后为:

9、全班的排名void Rank()与每门课的平均成绩void Objectaverage(),方法就是在便利循环求出平均成绩,利用冒泡法进行排名。外引入一个数组,数组的大小跟课程数量相等就是5.

float a[5]={0,0,0,0,0}并且初始化。数组里面的每一个成员就是

每一门的平均成绩,然后按数组的形式输出。班级排名:新引入一个数组,double grade[LEN];数组的大小就是人数的多少。结果如下图:

由于空间和排版问题,所以这里是对分数进行3.1f的输入。精确到一位就可以了。

10、输出不及格的名单void Unpass():就是判断分数少于60

分(if(stu[i].score[j]<60))的时候就输出这位同学的名字,若分数都大于60分则不输出他的名单。

11、插入功能void Insert()。要是要插入某人的信息,就在这个结构体最后添加一个名额,最后利用已经定义的count++进行计数,增加班的人数。

再重新进行排名的时候就可以显示人数已经达到了31个人的排名情况(部分排名)。:

12、删除模块void Delete():

就是输入要删除的学号,然后就在修改的那一项起,用后一项替

代前一项。最后人数减一既系count--。scanf("%d",&number);

for(i=0;i

{

if(stu[i].num==number)////寻找要删除的学号

{

for(j=i;j

flag=0;

(count)--;

printf("哈哈:删除成功\n");

break;

}

}

如图删了刚输入的学号为131的信息并进行排名:

13、保存void Save()读取void Read()与退出void Exit()

保存用到fwrite把一系列的数据写进文件里面。生成.dat文件,。

读取就用fread把dat的数据读出来。

退出就用到了系统的exit()函数。在退出之前判断是否保存。

四、程序的流程图

五、心得体会

通过这次深刻印象的课程设计,从中我学会了很多C语言的知识,更深一步地去认识C语言和应用C语言,总结得出C语言学习是一个无尽界的学习。

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

在做课程设计时,问题比较多的就是一些算法的问题,例如求平均值,排名等待,要是使用break使用的不恰当就会使得结果不是你想要的结果。其中用到的是思维,是一种方法,只要方法对了,就可以用在该用的地方。例如修改记录、删除记录、增加记录的问题就是这样的,这要明白了删除记录是怎么搞的,其他的就是按照这个思维

去转变就可以了。删除记录,首先是要寻找要删除的记录,找到了就把原来的记录用新的记录替换,这里用到的是后面的一项记录替换前面一项的记录,然后把count计数减一,就可以实现了删除记录的问题。

求班级的排名也是用到一种寻找赋值的方法,建立新的一个组,在用score来排名的时候就最大值等于新建组里面的对应的元素。然后新建的组里面的分数都是排好名次的数值,用便利循环来查找哪个值相对应于第几名的大小,然后找到了就把整个组的信息都输出就可以了。

到后期的调试和排版是比较繁琐的一个过程,在调试的时候就会不断地发现有问题,然后就需要不断地去修改程序,直到达到需要的效果就可以了。有时候是改了一个小小的符号都会让整个程序有问题,这就要求在编程序的时候要细心。其实课程设计就是在锻炼着一个人的细心还有思维的谨慎,为以后的工作做铺垫。

最后在排版的时候松了口气,看见了自己的劳动成果,不禁地想修饰好程序的封面,好让程序和界面变得跟通俗易懂,一目了然。

这个程序就做完了,可是C语言的探索之路还没有结束,也不要因为小小成果停止了自己前进的步伐,戒骄戒躁,虚心向学。毕竟我的专业方向也是跟 C 语言有很大的关系的,例如正在学习的VC++。所以学习C语言程序有很大的前途。加油。

六、程序清单

#include////所需要的头文件

#include///system()函数

#define LEN sizeof(struct student)////宏定义结构体的总字节长度

#define N 30//宏定义初始时班级人数

struct student///声明结构体

{

char name[10];///名字

long num; ///学号

float score[5];//5门成绩

double average;//每人的平均成绩

}stu[N];

int w[2];///用于保存count的大小

int count;///全局变量,代表是班上人数的多少。

void Read(); //读函数

void Input(); //输入函数

void Objectaverage(); //每门课程的平均

void Eaverage(); //每人的平均成绩

void Rank(); //排名

void Unpass(); //输出不及格的名单

void Insert(); //插入

void Delete(); //删除

void Update(); //修改记录

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");

用C语言实现一个简单的学生成绩管理系统

目录 1 引言 (1) 2 系统需求分析 (1) 2.1项目背景分析 (1) 2.2 系统开发的目标与意义 (1) 2.3 项目需求分析 (1) 3 系统总体设计 (1) 3.1 功能模块分析 (1) 3.2 系统功能模块初始化准备 (3) 3.2.1 编译预处理 (3) 3.2.2 数据结构定义 (3) 3.3 具体模块处理函数的实现 (4) 3.3.1 菜单函数界面的设计 (4) 3.3.2 功能函数设计 (4) 4 系统测试与分析 (9) 4.1 运行工具介绍 (9) 4.2 系统操作 (9) 结束语 (10) 参考文献 (10)

用C语言实现一个简单的学生成绩管理系统 摘要:伴随着现代社会的发展,网络技术的不断进步,越来越多的管理工作都从传统的现实社会中发展到了网络上。高校是使用计算机技术最早的单位,学校的各项管理工作也从现实生活走上了网络空间。本文对学校的需求进行分析,通过使用C语言设计并实现学生成绩的管理,力求尽量简洁实用地解决学校对学生成绩的管理和学生对成绩的查询问题。 关键字:C语言成绩管理系统程序设计 1 引言 在信息时代,计算机以其极高的运算速度、巨大的数据存储容量,以及能准确地进行各种算术运算和逻辑运算的能力而成为现代化计算工具,并被广泛应用于社会各个领域。计算机技术的高速发展已被认为是人类进入信息时代的标志。成绩管理系统是计算机技术和信息时代的产物,是信息处理或数据处理的核心。该系统开发的总体任务是实现学生成绩管理的系统化、规范化、自动化,以达到提高学生成绩管理效率的目的。通过运用程序设计软件实现学生成绩管理中的多种功能,如学生成绩信息的添加、删除、查询、修改、显示、排序等。该系统的设计充分利用计算机作为辅助工具,来实现学生考试成绩从传统的手工管理到计算机管理,并对提高管理效率和节约大量的人力、物力有一定的推动作用。因此,开发这种管理软件很必要,本文将在分析系统的应用价值以及开发工具的基础上,用C语言来开发成绩管理系统。 2 系统需求分析 2.1项目背景分析 在我国,各大中小学校的各类信息管理系统并非一个新的课题,但也有的学校根本就没有任何信息管理系统,特别是在西部贫困地区,学校的各类管理依然由手工操作来完成,这十分落后,效率极低,成本很大,而且极异出错。随着社会的发展,信息化是社会进程的必然趋势,学校管理只有快,准,精才能发挥其价值。 2.2 系统开发的目标与意义 (1)系统开发目标:本系统是将现代化的计算机技术和传统的教学、教务工作相结合,按照学院的工作流程设计完成的。为了使系统在学院的管理中发挥充分发挥其作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标: ①系统应具有实用性、可靠性和适用性。 ②对系统中数据库的信息进行有效处理,防止数据错乱。 ②能够按照用户选择的不同的条件进行简单查询。 ③方便用户的操作,尽量减少用户的操作。 (2)系统开发的意义:在各大中小学校,用计算机管理学校的信息已经越来越普遍了。用计算机不但可以提高工作效率,而且还节省了许多人力物力财力。提高了学校的管理能力,为此,用计算机来管理学校的信息,是非常必要的。 2.3 项目需求分析 学校工作流程分析:学校工作总体规划由教务人员在学生成绩管理系统中输入学生的基本信息并对其进行维护管理,包括对信息的增加、修改及对信息的各项处理操作等。 新的学年,教务人员首先编排班级,再对在校学生进行基本的信息录入,新生入学后由教务人员在管理系统中完成新学生信息的维护。在每个学期开始,教务处根据班级的情况,以班为单位,为每个班级安排一个班主任,并对各科老师进行安排。每举行一次考试后由任课老师对成绩进行录入。班主任对本班的成绩汇总。并进行排名,并对本年级各科成绩及总成绩进行排名。教务处、班主任及任课老师跟据实际情况对录入的成绩进行维护管理,各位同学对以上录入的信息可以跟据自己的需要进行适当的查询。 3 系统总体设计 3.1 功能模块分析 学生成绩管理系统是对学生基本信息及成绩的管理。开发工具主要采用TurboC2.0,主要用于对学生的学

C语言课程设计-学生成绩管理系统-完整版

#include<> #include<> #include<> #include<> /* strcmp函数原型包含*/ #define N 100 /*定义最大学生人数为100*/ struct student /*学生结构体定义*/ { char no[11]; /*学号,10位*/ char name[10];/*姓名,3个汉字*/ char grade[10];/*班级*/ char pro[20];/*专业*/ float score[5];/*储存5门功课的成绩*/ float ave;/*储存平均分*/ int year;/*入学年*/ }stu[N]; int num; void panduani(int); /*通过i的值,判断信息要查找的信息是否存在*/ void output(); /*输出学生成绩函数(公共函数)*/ void init(); /*系统初始化函数*/ void newfile(); /*建立新的数据文件*/ void read1(); /*从数据文件中读取数据*/ void weihu(); /*维护界面函数*/ void new1(); /*新增一个学生成绩函数*/ void xiugai(); /*修改学生成绩*/ void xgcj(int); /*修改成绩*/

void delete1(); /*删除学生信息函数*/ void tongji(); /*统计界面函数*/ void tongji1(); /*计算每个学生平均分*/ void tongji2(); /*计算每门课程的平均分*/ void paixu1(); /*排序函数*/ void paino(); /*按学号排序*/ void paiave(); /*按平均分排序*/ void paidkcj(); /*按单科成绩排序*/ void change(int,int); /*交换结构体数组中的两个记录*/ void outputx(int); /*选择输出单科成绩*/ void find1(); /*查找界面函数*/ int find(char sno[]); /*按学号查找*/ int findname(char cname[]);/*按姓名查找*/ void findyear(int cyear); /*按入学年查找*/ void save(); /*保存文件*/ void stop(); /*停顿函数*/ void stop() /*停顿函数(公共函数)*/ { printf("Press Any Key To Continue...\n"); getchar(); } void output() /*输出学生成绩函数(公共函数)*/ { int i,j;

学生成绩统计c语言

课程设计 课程名称____C语言课程设计___ 题目名称____学生成绩统计_____ 学生学院______物理学院_______ 专业班级____电子科学与技术___ 学号_____3110008570______学生姓名______胡健___________ 指导教师_______刘力斌________ 2012 年10 月17 日

C语言课程设计报告 一、C语言课程设计的目的: 进一步消化和巩固已学过的C 语言程序设计基础理论,学习和实践程序设计的各种技能,利用C 语言来设计各种应用程序和管理系统,为社会提供各种现代化的管理工具。根据课堂讲授内容,做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。在许多常规学科的日常教学中,我们不难发现这样一个现象,不少学生的思维常常处于混乱的状态。写起作文来前言不搭后语,解起数学题来步骤混乱,这些都是缺乏思维训练的结果。程序设计是公认的、最能直接有效地训练学生的创新思维,培养分析问题、解决问题能力的学科之一。即使一个简单的程序,从任务分析、确定算法、界面布局、编写代码到调试运行,整个过程学生都需要有条理地构思,这中间有猜测设想、判断推理的抽象思维训练,也有分析问题、解决问题、预测目标等能力的培养。 二、课程设计报告正文 课程设计题目的原文: 学生成绩统计 【问题描述】 学期考试结束,统计有N个班某班每个人的平均成绩,每门课的平均成绩,并按个人平均成绩从高到低的顺序输出成绩,输出不及格人名单。输入、输出格式自定。 【实现提示】 假设某班有:30人(姓名自定) 考试课程有:高等数学、物理、外语、C语言、德育5门课程。 将所有同学的成绩保留在文件中,对文件中的数据处理,输出所要求的内容,程序的功能主要包括3方面: ①输入成绩到文件中 ②输出成绩 ③输出不及格学生名单 ④成绩排序 ⑤修改记录 ⑥删除记录 ⑦插入记录等 主函数中对3个功能选择(菜单),调用对应的函数完成。 【测试数据】 自定模拟数据 题目的分析(需求分析): 该题目主要是锻炼学生对于运用C语言结构体,指针以及文件修改的能力,C语言最难的部分就在于指针,所以,能用最简洁的语句写出一个合理的程序,老师的目的就达到了。通过该课程设计的锻炼,加深学生对这些知识的掌握以及理解。

c语言教务管理系统

c语言教务管理系统-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

#include"stdio.h" #include"stdlib.h" #include"conio.h" #include"string.h" #include"windows.h" //登陆界面函数 void load(); void background1(); void choice1(); void fanhui1(); void denglu(); void zhuce(); int chazhao(); //目录界面函数 void mulu(); void background(); void choice(); void add(); void xiugai(); void shanchu(); void del(); void chaxun(); void paixu(); void tongji(); void output(); void finish(); void fanhui2(); void shuchu(); int zongren(); int chr(); int enr(); int mar(); void back(); float chinese(); float english(); float math(); float zongmax(); //登陆界面结构体struct self { char a[10]; char b[10]; int flg; }s[100]={{"admin","admin",1},{"1","1",1}};

c语言学生成绩管理系统含源代码

C 语言程序设计作业 一设计项目:学生成绩管理系统 二总体设计: 2:模块功能说明: 1 输入功能:输入学生姓名学号及成绩。 2 查看功能:输出姓名学号及各科成绩。 3 查询功能:通过学号查询学生姓名及各科成绩。 4 统计功能:统计班级学生及格率,优秀率,各个学生成绩方差等。 5 修改功能:通过输入学号修改指定学生的错误信息。 6添加功能:添加学生信息。 7删除功能:通过输入学号输入指定学生信息。 8保存功能:将学生信息保存。 9 退出系统。 3:主要函数之间的调用关系及各自功能: 主要函数的函数原型 void inputscore(void); void savescore(void); void avergescore(void); void modifyscore(void); void lookscore(void); void searchscore(void); void statistic(void); void add(void); void modify(void);

void delscore(void); void menu(void); i.在菜单界面输入1,调用函数inputscore( )实现输入学生成绩信息功能。ii.在菜单界面2,调用函数lookscore( )实现学生成绩按平均分高低排序输。 出,同时lookscore()函数调用avergescore()函数实现各个学生平均分的计 算。 iii.在菜单界面输入3,调用searchscore()函数实现通过学号查找学生成绩信息功能。 iv.在菜单界面输入4,调用statistic()函数输出班级及格率,优秀率,学生成绩方差,不及格学生名单。 v.在菜单界面输入5,调用modify()函数实现通过学号修改学生成绩的功能vi.在菜单界面输入6,调用add()函数实现添加学生成绩。 vii.在菜单界面输入7,调用delscore()函数实现删除指定学生成绩。 viii.在菜单界面输入8,调用savescore()函数将学生成绩信息保存。 ix.在菜单界面输入9,退出成绩管理系统。

成绩统计系统c语言

成绩统计系统 一目的 通过课程设计,加深对《C语言程序设计》课程所学知识的理解,熟练掌握和巩固C 语言的基本知识和语法规范,包括:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);库函数应用(时间函数、绘图函数以及文件的读写操作函数等);复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等)。 学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备利用计算机编程分析解决综合性实际问题的初步能力。 二需求分析 1、本程序要求输入一批学生某门课程考试的各题的分数,计算每个人的总分,统计各分数段0~49, 50~59, 60~69,70~79, 80~89, 90~100的人数及占总人数的百分比。要求输入:课程名称,考试日期,学生班号,学生姓名,学号,课程考试得分。输出要求:课程名称,考试日期,学生班号;各分数段的人数及百分比。 2、本程序采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整体结构设计合理。学生也可根据自己对题目的理解增加新的功能模块(视情况可另外加分)。系统以菜单界面方式(至少采用文本菜单界面,如能采用图形菜单界面更好)工作,运行界面友好,演示程序以用户和计算机的对话方式进行。程序算法说明清晰,理论分析与计算正确,运行情况良好,实验测试数据无误,容错性强(能对错误输入进行判断控制)。编程风格良好(包括缩进、空行、适当注释、变量名和函数名见名知意,程序容易阅读等)。

三概要设计 1、本程序包含两个模块: (1)主程序模块: Main(){ 用switch语句控制菜单功能; Switch语句调用分支函数完成各个功能;} (2)主程序模块调用的个分支函数: menu() 控制菜单的格式输出; input() 输入考试的信息; statistics()输入学生成绩信息,并进行分数段统计;2、程序中抽象数据类型定义: int choice; 控制switch语句选择调用个分支函数,完成各个功能;Char date[] 存放日期,完成日期的输入输出; char course[20]; 存放课程名称; int classNO; 存放班级号码; char name[100]; 存放学生姓名,最大存储数量100; int number[100]; 存放学生学号; int score[100]; 存放学生考试分数,用于统计数据;

c语言教务管理系统

#include"stdio.h" #include"stdlib.h" #include"conio.h" #include"string.h" #include"windows.h" //登陆界面函数void load(); void background1(); void choice1(); void fanhui1(); void denglu(); void zhuce(); int chazhao(); //目录界面函数void mulu(); void background(); void choice(); void add(); void xiugai(); void shanchu(); void del(); void chaxun(); void paixu(); void tongji(); void output(); void finish(); void fanhui2(); void shuchu(); int zongren(); int chr(); int enr(); int mar(); void back(); float chinese(); float english(); float math(); float zongmax(); //登陆界面结构体struct self { char a[10]; char b[10]; int flg; }s[100]={{"admin","admin",1},{"1","1",1}};

//目录界面结构体 struct student { char num[10]; char name[10]; float chinese; float english; float math; float sum; int a; }stu[5]={{"1100","小明",12,18,20,50,1},{"1101","小样",20,80,60,160,1}}; //登陆界面 void main() { load(); } void load() { background1(); choice1(); } void background1() { puts(" "); puts(" "); printf(" ********************************************\n"); printf(" 欢迎登录学生管理系统"); puts(" "); printf(" ********************************************\n"); printf(" 1.登录 2.注册\n "); printf(" 请选择:"); } void choice1() { int a; scanf("%d",&a); fflush(stdin); switch(a) { case 1:denglu();break; case 2:zhuce();break; default:fanhui1();break; } }

学生成绩管理系统代码c语言编写

/* Note:Your choice is C IDE */ #include "stdio.h" #include "stdlib.h" #include "string.h" typedef struct student // 定义学生 { char name[10]; int number; char sex[2]; int math; int eglish; int clanguge; int average; } student; typedef struct unit // 定义接点 { student date; struct unit * next; } unit; unit * build() // 建立链表并返回指针 { unit *p; if ((p =(unit * )malloc( sizeof (unit))) ==NULL) { printf( "=>初始化失败!"); return 0; } else { p-> next =NULL; p-> date . number=0; // 头结点存放学生人数printf( " 初始化成功!\n" ); return p; } } void add(unit * head) // 增加学生 { unit *p,*q; int m,n =0; q=head-> next; p=(unit * )malloc( sizeof (unit)); printf( "=>请输入新生姓名!\n" ); gets(p ->date . name);fflush(stdin); printf( "=>请输入学号!\n" ); while (n ==0)

c语言成绩统计系统

C语言成绩统计系统 #include #include #include int shoudsave=0; /* 为后面判断是否改动资料做铺垫*/ struct student { char num[11];/*学号*/ char name[20]; int cgrade; int mgrade; int egrade; int totle; int ave; float ajd;//平均绩点 }; typedef struct node

{ struct student data; struct node *next; } Node,*Link; void menu() { printf("************************************************************************ ********"); printf("\t1输入学生资料\t\t\t\t\t2删除学生资料\n"); printf("\t3查询学生资料\t\t\t\t\t4修改学生资料\n"); printf("\t5显示学生资料\t\t\t\t\t6统计学生成绩\n"); printf("\t7排序学生成绩\t\t\t\t\t8保存学生资料\n"); printf("\t9获取帮助信息\t\t\t\t\t0退出系统\n"); printf("************************************************************************ ********\n"); } void printstart() { printf("--------------------------------------------------------------------------------\n"); } void Wrong() { printf("\n=====>提示:输入错误!\n"); } void Nofind() { printf("\n=====>提示:没有找到该学生!\n"); } void printc() /* 本函数用于输出中文标题*/ { printf(" 学号\t 姓名英语成绩数学成绩C语言成绩总分平均分平均绩点\n"); } void printe(Node *p)/*本函数用于输出中文标题下的具体内容*/ {

c语言成绩管理系统

C语言综合实验设计报 告 C语言成绩管理系统 班级:************ 任课教师:******** 实验老师:******** 小组成员:姓名:******** 姓名:******** 姓名:********

一、实验目的 开发一个c语言成绩管理系统来统计分析大家的c语言学习情况。本程序主要实现对大家的学号,姓名,c语言平时成绩、实验成绩、期末考试成绩,综合评价的成绩。以及通过求平均分,方差,标准差来对大家的学习情况进行分析总结。 二、设计分工说明 组长:********** 组员:****** 组员:******* 本程序开发过程,小组成员分工如下: 录入学生成绩的数据结构和名称由全体组员共同商讨确定; 学生成绩的录入和显示在屏幕上的模块由组员***完成; 学生成绩的方差的计算和排序模块由组员***完成; 学生成绩的保存函数设计和主调用函数的模块的设计由组员***完成。 三、问题概述 要实现这样一个学生成绩信息管理系统,程序的开发中应该涉及到以下的内容: 1、编写一个统一的函数来调用各功能函数; 2、处理新增学生信息的操作; 3、显示输出全部记录的信息; 4、计算学生成绩的平均值、方差和标准差的函数设计; 5、根据学生记录的某一属性对记录排序; 6、对所录入的信息的保存函数设计; 同时,还应有合适的数据变量和结构参与各功能的运算。 四、问题分析 由于信息管理系统中的数据通常是不确定的多条记录,并且我们小组成员的能力有限,所以只是选择了管理一个班级(数据有限)的程序设计。 程序设计中主要是采用了结构体的数据形式,主函数调用,文件的写入,以及子函数配合的组合设计。主要录入了本班学生的学号、姓名、平时成绩、实验成绩、期末成绩等。其中由于我们学校的学号比较长(由15位),因此用双精度实数类型(double)类型,但在输出的时候控制称“15.0lf”的形式输出;姓名为字符型(char);平时成绩、实验成绩、期末成绩等都是单精度实数类型(float)。 由于信息管理这类系统,数据通常是不确定多条记录,故本系统应采用链表的结构来维持整个数据集,同时,根据题目要求,学生成绩信息包含学号、姓名、班级、计算机、专业英语、总分等属性,各属性中,学号为整型,姓名和班级为字符串,计算机、专业英语和总分应为浮点型,对一个学生记录应设置一个结构体,同时学生记录链表应包含这样的结构体,以及指向下一条记录的指针。为了便于各功能模块对整个链表的操作,链表的头指针要定义为全局变量。 下面具体分析各功能模块操作: 新建录入函数实际上就是一个for循环和标准输入输出函数的组合,现要求输入人数,然后就是标准输入输出进行数据的输入。最后再综合算一下总评成绩。完成数据的输入。 显示信息函数实际就是for语句和标准输出函数的结合,完成对刚才录入数据的显示输出。

c语言课程设计--运动会分数统计系统讲课教案

课程设计报告 课程名称C语言课程设计 课题名称运动会分数统计系统 专业电气工程及其自动化 班级 学号 姓名 指导教师王颖 2012年 6 月25 日

湖南工程学院 课程设计任务书 课程名称C语言课程设计 课题运动会分数统计系统 专业班级电气工程及其自动化 学生姓名 学号 指导老师王颖 审批 任务书下达日期2012年6月16日 任务完成日期2012年6月25日

运动会分数统计系统 一、问题描述: 参加运动会的n 个学校编号为l ~n 。比赛分成m 个男子项目和w 个女子项目,项目编号分别为l ~m 和m +1~m +w 。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。设计一个统计程序按名次产生各种成绩单、得分报表。 二、基本要求: 1.产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次、成绩、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分;均按名次排序。 2.比赛项目既要有径赛,又要有田赛。 三、测试数据: 对于n=4,m=3,w=2,编号为奇数的项目取前五名,编号为偶数的项目取前三名,设计一组实例数据。 四、实现提示: 1.数据结构:线性表 2.数据库结构:下面四张表构成该系统的基本数据库,全部输出报表由系统根据基本表自动生成。 3. 可以假设n ≤20,m ≤30,w ≤20,姓名长度不超过20个字符。每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并输入运动员编号、学校编号和成绩等。 五、选作内容: 允许用户指定某项目采取其他名次取法。 姓名 运动员编号 校名 学校编号 项目名 项目编号 初始化时完成录入 float char char char char char 成绩 类型 性别 项目编号 学校编号 运动员编号

用c语言编写一个成绩管理系统

程序说明:有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:(1)主菜单学生成绩管理系统 1、成绩录入 2、成绩查询 3、成绩统计 4、退出(2)各菜单项功能① 成绩录入:输入学生的学号、姓名及三门课的成绩;② 成绩查询:(至少一种查询方式)。 v 按学号查询学生记录。 v 查询不及格学生的记录。③成绩统计: v 计算学生的平均分; v 根据学生的平均分高低,对学生的数据进行排序后输出; v 对学生单科成绩排序,输出学生姓名与该科成绩;④退出系统:退出整个系统(即主菜单)。(3)结构体数组: #define N 30 struct student {int num; /* 定义学号*/ char name[20]; /* 定义姓名*/ float score[3]; /* 定义存贮三门课成绩的数组*/ float average; /* 定义平均成绩*/ };struct student stu[N]; /* 定义结构体数组,存贮多个学生的记录*/ . #include #include #include struct student { int num; char name[20]; float score[4]; float average; } stu[10000]; long t,max; bool unpass[1000]; FILE *fstu=fopen("stud.dat","at+"); int init() { int no,i; float s[4],ave; char nam[20]; while (!feof(fstu)) { fscanf(fstu,"%d",&no); fscanf(fstu,"%s",nam); fscanf(fstu,"%f%f%f%f",&s[1],&s[2],&s[3],&ave);

C语言程序的设计运动会成绩统计系统方案

程序设计工程训 练 报告 运动会分数统计系统 课程名称 姓名 院(系) 专 业班级 学号 指导教师 教务处制 C 语言程序设计工程训练 信息科学与技术学院

1 需求分析. (1) 2 系统总框图和功能模块说明 (2) 2.1 系统总框图 (2) 2.2 功能模块说明 (2) 3 系统设计. (3) 3.1 主要结构体 (3) 3.2 主要功能函数 (3) 3.3 关键函数的流程图 (4) 4 系统调试. (4) 5 总结. (7) 6 源程序清单. (7)

1需求分析 1问题描述 运动会分数统计 参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1?m女子m+仁m+w不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些项目取前五名或前三名由使用者设定。(m<=20 ,n <=20 2. 基本要求: 1) 可以输入各个项目的前三名或前五名的成绩; 2) 能统计各学校总分; 3) 可以按学校编号、学校总分、男女团体总分排序输出; 4) 可以按学校编号查询学校某个项目的情况; 5) 可以按项目编号查询取得前三或前五名的学校。 3. 测试数据 1) 首先进入成绩录入界面,先输入参赛学校数,再输入男子组数和女子组数; 2) 然后进入总目录; 3) 输入:1输入成绩; 4) 输入:2统计各校总分; 5) 输入:3统计各校项目得分; 6) 输入:4按学校总分排序输出; 7) 输入:5按男团体总分排序输出; 8) 输入:6按女团体总分排序输出; 9) 输入:7按学校编号查询学校某个项目的成绩; 10) 输入:8按项目编号查询取得前三名或前五名的学校; 11) 输入:0退出;

C语言课程设计-学生成绩统计软件

C语言课程设计实验报告 一问题描述:学生成绩统计软件 二基本要求: 1)每条记录由学号、姓名、若干门课程的成绩组成; 2)能计算每个学生的总分和平均分并显示; 3)能按平均分统计各分数段的人数,并以分布图显示,如图; 4)再此基础上能够进行文件操作。 三系统分析与设计: 由于程序要求对文件进行操作,所以需要建立一个文件存储学生信息并且能从文件中读取并输出。学生信息从键盘输入,根据提示并以ENTER结束每条信息的输入。 1总体设计: 程序通过main()函数调用两个模块函数来实现要求。两个模块分别是输入和计算的getdata函数和输出图表的putsgraph函数。 2 详细设计: 1)文件建立:因为要求对文件进行操作,所以首先建立一个文件存放学生的信息,用到FILE 文件指针,fp1=fopen(“file1”,”w+”); 2)学生的信息存放在结构体数组中,struct student_score s[N];并且通过for循环,调用子函数getdata,从键盘接受学生信息并且计算总分和平均分,用return返回主函数,并用fprintf 写入文件中,用rewind返回文件头,用fscanf读出信息并显示在屏幕上,统计各平均分段的人数,通过调用putsgraph输出图表。 四结构图: 主函数 五流程图

六程序清单 #define N 5 #include #include struct student_score { long num; char name[20]; float score[4]; float total; float aver; }s[N]; struct name { char a[10]; }n[8]; void main() { FILE *fp1; struct student_score getdata(struct student_score st,int x); struct name n[8]={"NUMBER","NAME","SCORE1","SCORE2","SCORE3","SCORE4","TOTAL","AVERA GE"}; int putsgraph(int sa, int sb,int sc,int sd,int se); int i,s1=0,s2=0,s3=0,s4=0,s5=0; if((fp1=fopen("file1","w+"))==NULL) {printf("cannot open file %s\n",fp1); exit(0);} for(i=0;i

学生成绩管理系统(数据结构C语言版源代码)54843943

天天都是一个出发点,每天都有一点提高,每天都有一点收成! #include #include #include struct students{ char Sex[3]; /*字符型学生性别*/ double English; /*双精度实型英语成绩*/ double Java; /*双精度实型Java成绩*/ double Sjjg; /*双精度实数据结构*/ double Szdl; /*双精度实型数字电路*/ double Jsj; /*计算机组成原理*/ struct students *next; /*用与构建连表指向下一结点*/ }; FILE *fp; /*定义全局变量fp*/ void Revisemenu();/*修改菜单*/ void Sortmenu();/*排序菜单*/ void menu();/*主菜单*/ void secret();/*安全验证*/ struct students * Input();/*新建学生信息*/ void fprint(struct students *head);/*将信息导入文件可追加*/ void fprint_(struct students *head);/*将信息导入文件并覆盖*/ void Browse(struct students *head);/*浏览全部学生信息*/ struct students * create(struct students *head int *n);/*从tushu_list中读取数据构建链表*/ void SortEnglish(struct students * head);/*按英语成绩排序*/ void SortJava(struct students * head);/*按Java成绩排序*/ void SortSjjg(struct students * head);/*按数据结构成绩排序*/ void SortSzdl(struct students * head);/*按数字逻辑电路成绩排序*/ void SortJsj(struct students * head);/*按计算机组成原理成绩排序*/ struct students * Delete(struct students * head struct students * Revise();/*修改学生信息(按编号修改)*/ /*主菜单*/ void menu() { printf("\n\n"); printf("***************************************************\n"); printf(" 学生成绩管理系统 \n"); printf(" 1-添加新同学 2-浏览学生信息 \n"); printf(" 5-按成绩排序 6-修改学生信息 \n"); printf(" 7-删除学生信息 0-退出系统 \n"); printf("___________________________________________________\n");

c语言学生成绩管理系统代码

#include #include #include #define MAXN 100 //一个班最多的人数 #define MAXM 2 //成绩的课程门数 int R; void input(); //1.学生成绩新建 void sort(); //2.学生成绩插入 void load(); //3.学生成绩修改 void print(); //4.学生成绩删除 void total(); //5.学生成绩统计 void search(); //6.学生成绩查询 void save(); //7.学生成绩保存 void end(); //8.结束 struct student { char name[20]; //保存全班姓名 char num[12]; //保存全班学号 float score[MAXM]; //保存全班所有课程成绩 float sum; //保存全班每个人的总成绩 float avg; //保存每个人的平均成绩 }; struct student s[MAXN]; struct http { char subject[20]; //保存全班所有课程 }; struct http c[MAXM]; void main() //欢迎首界面 { int select,l; system("color fC"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf(" ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥\n"); printf(" * *\n"); printf(" * *\n"); printf(" * 欢迎进入终极一班学生管理系统 *\n"); printf(" * *\n"); printf(" * ︻┳═一 cf ... *\n"); printf(" * ┈━═☆甘总管的多塔生活∝╬══→ *\n");

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

目录 ——学生成绩管理程序题目要求 (2) 设计目的 (2) 总体设计 (3) 详细设计 (3) 调试与测试 (12) 源程序 (14) 总结 (30)

学生成绩管理程序 一.题目要求 1.问题描述: 对在校学生几门课程的考试成绩进行统一管理.每个学生记录包括学号,姓名,年龄,数学,英语,物理成绩,默认以学号为序存放. 2.要求: (1)一个文件按以班为单位存储学生记录. (2)将允许的操作分为四种,以A,B ,C,D,E,F为标志: A:插入一个学生记录; B:修改学生记录; C:删除一个学生记录; D:查找一个学生记录; E:浏览学生成绩: F:退出 3.计算学生的总成绩. 4.按学号排序输出全班学生成绩表 . 二.设计目的 根据题目要求,由于学生信息是存放在文件中,所以应提供文件的输入,输出等操作;在程序中需要浏览学生的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择.

三.总体设计 根据上面的需求分析,可以将这个系统分为以下模块:输入模块,修改模块,删除模块,查找模块,显示模块. 四.详细设计 1.主函数: 主函数一般设计得比较简单,只提供输入,处理和输出部分的函数调用,其中各功能模块用菜单方式选择. 流程图:

[程序]: //#include "head.h" int menu_select() { char c; printf("\n\n"); printf(" | 1. 增加学生记录 5.统计信息|\n"); printf(" | 2. 查询学生记录 6.打开文件|\n"); printf(" | 3. 修改学生记录7.保存文件|\n"); printf(" | 4. 学生纪录排序8.显示记录|\n"); printf(" | 0. 退出系统|\n"); printf("\n\n"); printf("请选择(0-8):"); c=getchar(); getchar(); return (c-'0'); } 2.输入模块: [分析]: 单独看各数据信息,学号,姓名是字符型,可以采用字符型数组;分数为整数,采用整数;数据信息存放在文件中,一条记录对应一个学生,既符合习惯又方便信息管理. 如果要存放若干学生信息就用结构体数组: void addrecord(student stud[]) { int i=0,j,num; char str[5]; if(numstus!=0) {

相关主题
文本预览
相关文档 最新文档