C语言学生成绩管理系统

制作学生成绩管理系统,可以实现以下功能:

  1. 每条记录包括:学号、姓名、专业和5门课程的成绩;
  2. 能够实现添加、删除、修改功能;
  3. 能够计算某学生的总分和平均分;
  4. 能按照总分排序输出;

利用C语言的基本语法、结构化程序设计、数组、函数、结构体、指针、链表、排序算法、文件存储等,制作一个具有添加、删除、修改等功能的学生成绩管理系统,包含学号、姓名、专业和5门课程的成绩这个四个大方面的内容,流程图如图1所示。

  1. 详细设计及实现

学生成绩管理系统有帮助,刷新,查询,增加,删除,显示,保存,退出,清屏这些功能,要实现这些功能,需要用到很多函数,结构体,文件操作,链表,指针等,在这里会详细介绍各类函数以及其他知识点所对应的用法,

一 头文件

#include <stdio.h>  

#include <malloc.h>

#include <string.h>

#include <stdlib.h>

做这个学生成绩管理系统需要用到这四个头文件:

①#include <stdlib.h>:

常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()...用清屏功能以及删除链表释放内存时要用到system("cls");free(p),如图2所示。

图2 free函数使用的代码图

②#include <malloc.h>

动态存储分配函数头文件,当对内存区进行操作时,调用相关函数.

在使用链表时,创建新的指针时用到malloc(sizeof(LinkList)函数

如图三所示。

图3 malloc函数使用的代码图

③#include <string.h>

用系统的添加,修改功能时将字符串数组赋值给另一个字符串数组,需要字符串链接函数;strcpy()字符串复制函数,就需要使用#include <string.h> 这个头文件。

typedef struct score

{

    int score_c;      //C语言成绩

    int score_math;      //高等数学

    int score_english; //大学英语成绩

    int score_zhengzhi;//政治成绩

    int score_tiyu;//体育成绩 

}Score;

学生个体的信息,包括姓名,学号,专业,成绩

typedef struct Student 

{ 

   char name[100];       //姓名 

   char num[100];        //学号 

   char zhuanye[100];       //专业

   Score score;          //成绩 

}stu; 

对链表的使用创立的个体包含两个对象,一个是data,还有个指针next

typedef struct LNode 

{ 

    stu data; 

    struct LNode *next; 

}LinkList;

三 链表的使用

创立一个链表,首先要对它初始化:指针L相当于是头指针

void InitList(LinkList *&L)//初始化链表 

{ 

    L=(LinkList *)malloc(sizeof(LinkList));  //指针L相当于是头指针head

    L->next=NULL; 

}


添加新的链表:

void ListInsert(LinkList *&L,LinkList *p)//插入新的节点 

{ 

    LinkList *q=NULL; 

    q=L; 

p->next=q->next;  //

q->next=p;  

创立的第一个节点的时候q->的next就为NULL,再创一个节点的话相当于把它插入到两节点之间, 重新指向p,连接上新的节点(p)

后面的添加学生,修改信息,删除,排序都是在上面的基础上进行的,待会函数的时候在分别介绍。

四 选择控制结构,函数调用

在一开始时,使用系统需要我们选择使用哪个功能,输入0~9之间的整数就可以使用不同的功能,这里需要用到选择控制结构:  

 while(1)  //无限循环,当用户使用完某一项功能后,界面就会弹出选择表

    { 

       printf("\n");

        menu();     //功能菜单

       printf("请输入您的选择:\n");

        scanf("%d",&choose); 

        switch(choose) 

        { 

        case 0://系统帮助及说明

           help();

           break;

        case 1://刷新信息(按学号排序)

           sort(L);

           break;

       case 2: //查询学生信息             

            findstu(L); 

            break;                          

        case 3://修改学生信息 

           changestu(L);

            break;

       case 4://增加学生信息 

            addstu(L);

            break;

       case 5://删除学生信息 

            deletestu(L); 

            break; 

        case 6://输出所有学生的信息 

            display(L); 

            break;

        case 7://保存学生信息到文件  

            saveStuDentFile(L); 

            break;

       case 8://退出 

             printf("谢谢使用!"); 

            exit(0);

       case 9: //清屏

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值