当前位置:文档之家› 用C语言实现一个简单的学生成绩管理系统

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

目录1 引言 (1)2 系统需求分析 (1)2.1项目背景分析 (1)2.2 系统开发的目标与意义 (1)2.3 项目需求分析 (1)3 系统总体设计 (2)3.1 功能模块分析 (2)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)参考文献 (11)用C语言实现一个简单的学生成绩管理系统摘要:伴随着现代社会的发展,网络技术的不断进步,越来越多的管理工作都从传统的现实社会中发展到了网络上。

高校是使用计算机技术最早的单位,学校的各项管理工作也从现实生活走上了网络空间。

本文对学校的需求进行分析,通过使用C语言设计并实现学生成绩的管理,力求尽量简洁实用地解决学校对学生成绩的管理和学生对成绩的查询问题。

关键字:C语言成绩管理系统程序设计1 引言在信息时代,计算机以其极高的运算速度、巨大的数据存储容量,以及能准确地进行各种算术运算和逻辑运算的能力而成为现代化计算工具,并被广泛应用于社会各个领域。

计算机技术的高速发展已被认为是人类进入信息时代的标志。

成绩管理系统是计算机技术和信息时代的产物,是信息处理或数据处理的核心。

该系统开发的总体任务是实现学生成绩管理的系统化、规范化、自动化,以达到提高学生成绩管理效率的目的。

通过运用程序设计软件实现学生成绩管理中的多种功能,如学生成绩信息的添加、删除、查询、修改、显示、排序等。

该系统的设计充分利用计算机作为辅助工具,来实现学生考试成绩从传统的手工管理到计算机管理,并对提高管理效率和节约大量的人力、物力有一定的推动作用。

因此,开发这种管理软件很必要,本文将在分析系统的应用价值以及开发工具的基础上,用C语言来开发成绩管理系统。

2 系统需求分析2.1项目背景分析在我国,各大中小学校的各类信息管理系统并非一个新的课题,但也有的学校根本就没有任何信息管理系统,特别是在西部贫困地区,学校的各类管理依然由手工操作来完成,这十分落后,效率极低,成本很大,而且极异出错。

随着社会的发展,信息化是社会进程的必然趋势,学校管理只有快,准,精才能发挥其价值。

2.2 系统开发的目标与意义(1)系统开发目标:本系统是将现代化的计算机技术和传统的教学、教务工作相结合,按照学院的工作流程设计完成的。

为了使系统在学院的管理中发挥充分发挥其作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标:①系统应具有实用性、可靠性和适用性。

②对系统中数据库的信息进行有效处理,防止数据错乱。

②能够按照用户选择的不同的条件进行简单查询。

③方便用户的操作,尽量减少用户的操作。

(2)系统开发的意义:在各大中小学校,用计算机管理学校的信息已经越来越普遍了。

用计算机不但可以提高工作效率,而且还节省了许多人力物力财力。

提高了学校的管理能力,为此,用计算机来管理学校的信息,是非常必要的。

2.3 项目需求分析学校工作流程分析:学校工作总体规划由教务人员在学生成绩管理系统中输入学生的基本信息并对其进行维护管理,包括对信息的增加、修改及对信息的各项处理操作等。

新的学年,教务人员首先编排班级,再对在校学生进行基本的信息录入,新生入学后由教务人员在管理系统中完成新学生信息的维护。

在每个学期开始,教务处根据班级的情况,以班为单位,为每个班级安排一个班主任,并对各科老师进行安排。

每举行一次考试后由任课老师对成绩进行录入。

班主任对本班的成绩汇总。

并进行排名,并对本年级各科成绩及总成绩进行排名。

教务处、班主任及任课老师跟据实际情况对录入的成绩进行维护管理,各位同学对以上录入的信息可以跟据自己的需要进行适当的查询。

3 系统总体设计3.1 功能模块分析学生成绩管理系统是对学生基本信息及成绩的管理。

开发工具主要采用TurboC2.0,主要用于对学生的学号、姓名等自然信息以及各项学科成绩进行增加、删除、修改、查询及保存到文件等操作。

系统给用户提供了一个简单的人机界面,使用户可以根据提示输入操作项,调用系统提供的管理功能。

学生成绩管理系统处理流程如图1。

图1 系统处理流程图主要功能设计描述如下:(1)系统主控平台允许用户选择想要的操作,包括输入学生信息、显示学生信息、查询学生信息、修改学生信息、删除学生信息、计算成绩以及成绩的排序等。

通过输入相应的序号选择相应的操作。

(2)学生成绩信息用户根据提示输入学生的学号、姓名、以及三门课的成绩,如语文成绩、英语成绩、数学成绩等。

输入完成一条学生记录,可根据提示信息继续输入下一条学生记录或者继续其他的操作。

允许输入多条学生的成绩信息记录。

输入完的学生记录暂时保持在单链表中,等待下一步的操作。

(3)查询学生信息可以根据学号,姓名,总分从单链表中对学生所有的信息进行查询,如果没有查询到任何信息,系统会给出提示信息。

(4)修改学生信息首先提示用户输入要进行修改的操作的学号,如果单链表中有该学生的信息存在,则提示用户输入要修改的学生的基本信息、各科成绩等,并将修改结果重新存储在单链表中。

如果用户没有找到要修改的学生信息,系统将给出提示。

(5)插入学生信息对已经建立好的信息若还需增加,则对信息进行插入。

首先提示用户输入要进行插入的学号,然后在根据提示对用户信息进行完整输入。

输入完成后系统将对其进行保存。

(6)删除学生信息首先提示用户输入要删除学生的学号,系统根据用户输入的信息在单链表中查找,如果找到,直接删除该学生全部信息,如果没有找到,系统给出提示信息。

(7)计算各科成绩平均分该模块主要进行学生成绩的平均分计算,进入计算界面,系统自动对各科进行平均分计算。

(8)显示学生信息在选择了显示学生信息后,将刚输入的学生信息从单链表中调出来显示,如果没有数据,则提示无学生记录。

(9)学生成绩排序成绩信息输入完整后,根据学生的总分对学生从小到大进行排序,在显示学生信息的时候可以看到学生在班级或校的排列名次。

(10)操作完成后对操作结果进行保存。

运行完毕,退出系统。

3.2 系统功能模块初始化准备3.2.1 编译预处理“编译预处理”是C编译系统的一个组成部分。

在C编译系统对程序进行通常的编译(包括词法和语法分析、代码生成、优化等)之前,先对程序中这些特殊命令进行“预处理”,然后将预处理的结果和源程序一起再进行通常的编译处理,以得到目标代码。

C语言提供的预处理功能主要有:(1)宏定义;(2)文件包含;(3)条件编译。

而本程序使用文件包含的预处理方式进行编译预处理:#include<stdlib.h>/*标准库函数*/#include<stdio.h>/*标准输入、输出函数库*/#include<conio.h>/*屏幕操作函数*/#include<string.h>/*字符串函数*/3.2.2 数据结构定义学生成绩管理系统中的变量有学号,姓名,成绩等,这些数据类型各不相同,无法用简单数据类型来描述,显然要定义结构体类型。

由于学生人数很多,还需要定义数组或者链表。

数组的特点是数据在内存中顺序存放,长度必须事先指定,而学生的人数很难估计。

如果数组长度定的过大,会找出存储空间浪费,如果过小,又无法满足需求。

特别是进行插入,删除等操作时,代价较大而又容易出错。

用链表来管理学生成绩就显得比较妥当,它无需估计学生人数,进行插入删除等操作时代价较小。

C语言中,说明和使用“结构体”之前必须先定义,在编写程序之前应该对学生基本信息进行定义,在这个程序中,使用struct来定义结构体的类型为struct list,然后用它来定义变量,在定义结构体类型的时候定义一个next成员,该成员可以把学生结点进行链接。

并且通过类型定义typedef将已有的各种类型名定义成为新的类型标识符link,经类型定义后,link即可当做原类型名使用。

具体定义如下:struct list{int ID; /*学号*/charname[256]; /*姓名*/int china; /*语文成绩*/int english; /*英语成绩*/int math; /*数学成绩*/float sum; /*总分*/int order; /*排序*/struct list *next; /*指向下一个学生的指针*/};typedef struct list node; /*自定义一个数据结构的结点*/typedef node *link; /*定义结点为link结构*/3.3 具体模块处理函数的实现3.3.1 菜单函数界面的设计系统与用户交换的界面是通过菜单实现的,菜单按预定义格式显示主菜单界面,等待用户输入0-8中的任一数据,系统会根据用户的输入调用相应的功能模块,实现用户所要求的操作。

(1)本程序的菜单界面主要使用屏幕操作函数编写,欢迎界面设置为白底红字,菜单界面设置为绿底蓝字,在欢迎界面中单击任意键进入菜单操作界面。

整个系统都以光标定位函数gotoxy(x,y)固定光标的位置,在对其进行输出,从而可以使显示的文字都出现在设定的窗口内,窗口的界面设置使用画图工具制作周围的边框,边框的设置具体如下:gotoxy(8,2); putch(0xc9); /*输入左上角边框*/for(i=1;i<46;i++) putch(0xcd); /*输出上边框水平线*/putch(0xbb); /*输出右上角边框*/for(i=3;i<23;i++){ gotoxy(8,i); putch(0xba); /*输出左垂直线*/gotoxy(56,i); putch(0xba); } /*输出右垂直线*/gotoxy(8,23); putch(0xc8); /*输出左下角边框*/for(i=1;i<46;i++) putch(0xcd); /*输出下边框水平线*/putch(0xbc); /*输出右下角边框*/window(9,3,55,22);/*制作显示菜单的窗口*/(2)菜单是由menu函数实现,主要通过printf函数显示一些文本选项如:printf("<0>exit the program.\n");构建一个简单的字符界面,系统设置11个模块,用户通过输入关键字key从0-10之间选择相应的操作,函数通过switch调用各功能模块:switch(key){ case0:exit(0);case1:head=init();break;case2:head=creat_list()break;case3:search_chengji(head);break;case4:head=modify_chengji(head,key);break;case5:head=delete_chengji(head,key);break;case6:head=insert_chengji(head,key);break;case7:average(head);break;case8:sort(head);break;}case9:printf_list(head);break;case10:save(head);break;3.3.2 功能函数设计(1)初始化链表学生成绩管理系统使用前要先将系统进行初始化操作,初始化函数init()就是将函数置空。

相关主题