c语言添加成绩功能模块,学生成绩管理系统的设计与概述

摘 要:學生成绩管理系统是学校用于管理学生成绩的一个很重要的工具,设计学生管理系统是对C语言多方面知识的综合训练。本文将运用C语言的知识建立一个简易的学生管理系统,旨在提高C语言编程能力以及通过编程解决实际问题的能力。该系统主要采用了结构体来建立和存储学生的学号、成绩等个人信息,并用链表与指针的知识,结合冒泡排序的思想方法,设计函数,使其具有新建、排序、查询、插入与删除等多个功能。同时,该系统操作简便,只需用户输入学生的相关信息,并输入所选操作的序号即可进行相关操作。

关键词:学生成绩管理;C语言;程序设计;C-Free

一、设计目的

1.巩固和加深对c语言知识的理解和掌握

2.提高利用c语言进行编程和运行的能力

3.学会利用编程解决实际问题

二、功能模块介绍

本学生成绩管理系统主要包括以下几点功能:

1.新建数据2.添加数据3.删除数据4.排序5.查询6.退出

其中新建数据用于用户输入学生的个人信息(学号和名字)及成绩(数学和程序设计两科成绩);添加数据和删除数据便于用户对数据的增删;而排序(包括数学成绩、程序设计成绩以及总分成绩)可以通过不同的排序依据使用户更方便了解学生各科总体水平以及高分和低分;查询则包括按学号查询、姓名查询、成绩查询,其中成绩查询还有统计的功能,即输入指定分数,程序运行后显示该科目中考试成绩大于等于指定分数的学生并统计满足条件的人数。

三、数据结构描述

本系统采用结构体的形式和链表的数据结构建立学生的个人信息档案,主要内容如下:

struct student

{

char num[20];

char name[20];

int math_score;

int program_score;

int sum_score;

struct student *next;

}stu[N];

其中学号和姓名为字符串类型,方便输入;成绩为整形,数学成绩和程序设计成绩由用户输入,总分由系统根据用户所输计算;N为符号常量和全局变量,用户可随时改变学生人数。采用结构体的形式,适应了学生数据类型多样性的特点,链表类型的数据结构可以方便的插入或删除数据,较为灵活方便。

四、函数程序介绍

程序按照系统功能分为七大模块,分别是:主函数,新建数据函数,添加数据函数,删除数据函数,排序函数,查询函数以及输出函数。

主函数:在主函数中对各函数进行声明,显示系统主界面,根据用户的不同选择调用不同的函数。同时对主函数采用do while的循环,使系统执行完一次操作后自动跳出主菜单,方便用户使用。

新建函数:用malloc函数创建链表空间,提示用户输入学生数据,读入链表。

添加数据函数:提示用户输入添加的数据,根据学号从小到大排序的原则,用strcmp函数对添加的学号和已有的学号比较,定位后用链表指针插入。完成后提示添加数据成功。该函数有两个参数,head为已创建的链表的头指针,stud是用户要插入的数据的指针。

删除数据函数:与添加数据类似,让用户输入想要删除的数据的学号,用strcmp函数对想删除的学号和已有的学号比较,相等时通过改变指针方向同时用free函数释放所删除数据的空间实现删除功能。完成后提示删除数据成功。该函数有两个参数,head为已创建的链表的头指针,num是用户想要删除的数据的学号,用num与已有数据的学号进行比对、定位。

排序函数:结合了冒泡排序和链表,将学生的成绩降序排列,最后用输出函数输出。该函数的参数是已有链表的头指针,将链表排序后,仍返回头指针,用输出函数输出。

查询函数:按学号和姓名查询时,用strcmp函数对字符串进行比较,相等时输入该学号或姓名所对应的学生的全部信息;按成绩查询函数,在前两个的基础上,添加了统计功能。因此定义一个计算个数的变量,在循环结束后输出。该函数的参数是已有链表的头指针,根据用户的查询要求,找到符合要求的数据后,返回头指针,用输出函数输出。

输出函数:所有子函数的返回值都由输出函数输出。输出函数有两个,一个是用循环输出链表所有数据,用于新建数据和排序结果的输出;一个只输出链表中一个成员的数据,用于添加、删除数据以及查询函数的返回值的输出。其他函数通过返回头指针,传到该函数的参数head中,并输出链表中的信息。

五、系统调试的重点与难点

该系统主要运用了结构体、函数、动态链表与指针的知识,都属于C语言中较难的知识,也是运用C语言编程的必备知识,同时对于冒泡排序的思想与系统的整体设计也要有一个清晰的结构框架,这些都是这个系统的核心部分。

以下是在调试中遇到的具体问题(节选):

①输入函数中输出的结构体指针所指向的内容(非数组)没有加取地址符,导致程序停止运行;

②输出函数中输出的结构体指针所指向的内容(非数组)没有加取地址符,导致输出一串乱码;

③插入函数没有用循环而是选择进行数据定位,导致函数功能无法实现;

④忽略了学号和姓名是字符数组,直接用等于号进行赋值而不是strcpy或strcmp等字符串处理函数,编译过程出现错误;

六、系统设计的体会与总结

通过做这个学生成绩管理系统,我对结构体、链表、指针、函数等知识有了更深的领悟。

手指在键盘上飞快划过,看着一个个字符,一条条程序语句,一块块函数模块从屏幕中闪现;与此同时,一次次错误,一次次盯着代码找原因,一次次失败也让人接近崩溃,但当一个函数成功实现某种功能,或者某个很难发现的错误在经历了无数次的检查与校对终于被发现并被正确改正后,那种喜悦感与成就感是别人无法体会的。

当然,由于本人所学有限,做的成绩系统也只是初步的,功能不够齐全,界面也不够完善。以后会学到更难的知识,遇到更复杂的编程系统,希望以后也能不急不躁,耐心编码。

作者简介

唐叶尔(1999—),女,汉族,浙江温州人,学生,本科,浙江师范大学初阳学院,软件工程专业。

(作者单位:浙江师范大学初阳学院)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值