广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言实现学生成绩管理系统项目
  • 318
分享到

C语言实现学生成绩管理系统项目

2024-04-02 19:04:59 318人浏览 薄情痞子
摘要

本文实例为大家分享了C语言实现学生成绩管理系统项目,供大家参考,具体内容如下 1、数据结构:学生信息:学号、姓名、年龄、性别、3课成绩 2、功能: (1)  增加学生记录(

本文实例为大家分享了C语言实现学生成绩管理系统项目,供大家参考,具体内容如下

1、数据结构:学生信息:学号、姓名、年龄、性别、3课成绩

2、功能

(1)  增加学生记录
(2)  删除学生记录
(3)  查找学生信息(学号、姓名)
(4)  修改学生信息
(5)  按照成绩排序、求平均值、最大值、最小值

3、用户界面

   主菜单
   子菜单

4、 批量生成测试数据

//
//  main.c
//  Student System
//
//  Created by ma c on 15/7/22.
//  Copyright (c) 2015年. All rights reserved.
//  要求:编写一个学生成绩管理系统。

#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 50
struct Student{
    char name[20];
    int sno;
    int age;
    char gender;
    float EnglishScore;
    float mathScore;
    float chineseScore;
}stu[N]={{"zhao",1000,20,'M',98,99,97},
         {"zhao",1001,21,'F',97,96,95},
         {"qian",1002,23,'M',95,96,92},
         {"hong",1003,22,'F',91,93,97},
         {"zhou",1004,25,'M',90,90,90},
         {"feng",1005,21,'F',96,93,96},
         {"wang",1006,23,'M',97,91,90},
         {"chen",1007,21,'F',94,92,91},
         {"geng",1008,20,'F',90,99,91},
         {"tang",1009,24,'M',99,99,99}};

//添加数据
void add(struct Student stu[],int pos,int nums);


//删除数据
void Delete_name(struct Student *stu,char Name[]);//(按姓名)
void Delete_sno(struct Student *stu,int Sno);//(按学号)


//修改数据
void update(struct Student stu[],int Sno,int len);


//查询子菜单
void menu(struct Student stu[],int m);
void search(struct Student stu[],int n,char Name[]);//按姓名查询
void search1(struct Student stu[],int n,int Num);//按学号查询
void sort(struct Student stu[],int n); //按总分高低排序
void print(struct Student stu[],int n);
void My_print_sum(struct Student stu[],int n);
void max_min(struct Student stu[],int n);


//主菜单
void PrintScreen()
{
    printf("------------------\n");
    printf("** 1.增加学生记录 **\n");
    printf("** 2.删除学生记录 **\n");
    printf("** 3.查找学生记录 **\n");
    printf("** 4.修改学生记录 **\n");
    printf("** 0.退出管理系统 **\n");
    printf("------------------\n");
}

//删除子菜单
void deleteScreen()
{
    printf("------------------\n");
    printf("** 0.按姓名删除数据**\n");
    printf("** 1.按学号删除数据**\n");
    printf("** 2.返回主菜单   **\n");
    printf("------------------\n");
    printf("please select 0-1:");
}

//查找子菜单
void seekScreen()
{
    printf("-------------------------\n");
    printf("****** 1.按姓名查找信息    *\n");
    printf("****** 2.按学号查找信息    *\n");
    printf("****** 3.查看所有学生成绩  *\n");
    printf("****** 4.成绩名次排序(总分)*\n");
    printf("****** 5.查看成绩最优最差  *\n");
    printf("****** 6.返回主菜单       *\n");
    printf("-------------------------\n");
    printf("please you select 1-6:");
}

//定义全局静态变量,统计目前结构体数组中的人数
static int count = 10;


//主函数
int main(int arGC, const char * argv[])
{
 int nums,temp;
 int snos;
 char names[20];
 while(1)
 {
    PrintScreen();
    printf("please press enter_key continue!\n");
    getchar();
    printf("please select 0-4:");
    char c = getchar();
    switch(c)
    {
        case '1':
              printf("please student'numbers you want to add:");
              scanf("%d",&nums);
              add(stu,count,nums);      //添加数据
              getchar();
              break;
        case '2':
              deleteScreen();
              scanf("%d",&temp);
              switch(temp)
              {
                  case 0:
                      printf("please input delete name:");
                      scanf("%s",names);;
                      Delete_name(stu,names);  //删除数据(按姓名删除)
                      break;
                  case 1:
                      printf("please input delete sno:");
                      scanf("%d",&snos);
                      Delete_sno(stu,snos); //删除数据(按学号删除)
                      break;
                  case 2:
                      break;
              }
              getchar();
              break;
        case '3':
              menu(stu,count);//查找数据
              getchar();
              break;
        case '4':
              printf("please input update sno:");
              scanf("%d",&snos);
              update(stu,snos,count);     //修改数据
              break;
        case '0':
              exit(0);                    //退出系统
        default:
              printf("data is illeagel!\n");
              getchar();
              break;                      //输入非法
    }
 }
 return 0;
}

//添加数据
void add(struct Student stu[],int pos,int nums)//开始位置、添加人数
{
    for(int i=pos;i<pos+nums;i++)
    {
        printf("please input name:");
        scanf("%s",stu[i].name);
        int flag = 1,sno;
        while(flag)
        {
          printf("please input sno:");
          scanf("%d",&sno);
            for(int j=0;j<pos;j++)
            {
                if(stu[j].sno==sno)
                {
                    printf("sno is exist!\n");
                    break;
                }
                else
                {
                    flag = 0;
                }
            }
            stu[i].sno = sno;
        }
        printf("please input age:");
        scanf("%d",&stu[i].age);
        printf("please input gender:(f/m or F/M)");
        getchar();
        scanf("%c",&stu[i].gender);
        printf("please input EnglishScore:");
        scanf("%f",&stu[i].EnglishScore);
        printf("please input mathScore:");
        scanf("%f",&stu[i].mathScore);
        printf("please input ChineseScore:");
        scanf("%f",&stu[i].chineseScore);
        printf("学生信息添加成功!\n");
    }
    count = count + nums;
}

//按学号删除
void Delete_sno(struct Student *stu,int Sno)
{
    if(count==0)
    {
        printf("成员已为空!\n");
        return;
    }
    int flag=0;
    for(int i=0;i<count;i++)
    {
        if((stu+i)->sno==Sno)
        {
            for(int j=i;j<count;j++)
            {
                *(stu+j)=*(stu+j+1);
            }
            printf("\n");
            printf("学号为%d的学生已被删除\n",Sno);
            printf("\n");
            flag=1;
            count = count-1;
            break;
        }
    }
    if(flag==0)
        printf("学号%d不存在.\n",Sno);
}

//按姓名删除
void Delete_name(struct Student *stu,char Name[])
{
    if(count==0)
    {
        printf("成员已为空!\n");
        return;
    }
    int flag=0;
    int n=count;
    for(int i=0;i<n;i++)
    {
        if(strcmp((stu+i-flag)->name,Name)==0)
        {
            for(int j=i-flag;j<count;j++)
            {
                *(stu+j)=*(stu+j+1);
            }
            printf("\n");
            printf("学生:%s 已被删除.\n",Name);
            printf("\n");
            flag=flag+1;
            count =count -1;
        }
    }
    if(flag==0)
        printf("学生:%s 不存在.\n",Name);
}

//修改数据
void update(struct Student stu[],int sno,int len)
{
    char cs,cs1,cs2,cs3;
    char p[20];
    int grade,i;
    for(i=0; i<len; i++)
    {
        if(sno==stu[i].sno)
        {
            printf("please ask update name?(y/n):");
            getchar();
            cs = getchar();
            if(cs == 'y')
            {
                printf("please input a new name:");
                scanf("%s",p);
                getchar();
                strcpy(stu[i].name,p);
                printf("update is succeed!\n");
            }

            printf("please ask update EnglishScore?(y/n):");
            cs1 = getchar();
            if(cs1 == 'y')
            {
                printf("please input a new grade:");
                scanf("%d",&grade);
                stu[i].EnglishScore = grade;
                printf("update is succeed!\n");
            }

            printf("please ask update mathScore?(y/n):");
            getchar();
            cs2 = getchar();
            if(cs2 == 'y')
            {
                printf("please input a new grade:");
                scanf("%d",&grade);
                stu[i].mathScore = grade;
                printf("update is succeed!\n");
            }

            printf("please ask update chineseScore?(y/n):");
            getchar();
            cs3 = getchar();
            if(cs3 == 'y')
            {
                printf("please input a new grade:");
                scanf("%d",&grade);
                stu[i].chineseScore = grade;
                printf("update is succeed!\n");
                break;
            }
            else
            {
                getchar();
                break;
            }
        }
        else if(i==len-1)
        {
            printf("error,don't have the sno!");
            break;
        }
        else
        {
            continue;
        }
    }
}

//查询数据
void menu(struct Student stu[],int m)
{
    int logel = 1;
    while(logel)
    {
        seekScreen();
        int n;
        scanf("%d",&n);
        char name[20];
        int num;
        switch(n)
        {
            case 1 :
                printf("请输入同学的姓名: ");
                scanf("%s",name);
                search(stu,count,name);
                break;
            case 2 :
                printf("\n请输入同学的学号: ");
                scanf("%d",&num);
                search1(stu,count,num);
                break;
            case 3:
                print(stu,count);
                break;
            case 4:
                sort(stu,count);
                print(stu,count);
                break;
            case 5:
                max_min(stu,count);
                break;
            case 6:
                logel = 0;
                break;
            default:
                logel = 0;
                printf("输入数字有误!\n");
                break;
        }
    }
}
void search(struct Student stu[],int n,char Name[])
{
    char* p= Name;
    int flag = 0;
    for(int i=0;i<n;i++)
    {
        if(strcmp(stu[i].name,p)==0)
        {
            flag = 1;
            My_print_sum(stu,i);
        }
    }
    if(flag==0)
    {
        printf("the name is not exist!\n");
    }
}
void search1(struct Student stu[],int n,int Num)
{
    int flag = 0;
    for(int i=0;i<n;i++)
    {
        if(Num==stu[i].sno)
        {
            flag = 1;
            My_print_sum(stu,i);
        }
    }
    if(flag==0)
    {
        printf("the sno is not exist!\n");
    }
}
void sort(struct Student stu[],int n)
{
    float sum[N];
    for(int i=0;i<n;i++)
    {
        sum[i]=stu[i].EnglishScore+stu[i].mathScore+stu[i].chineseScore;
    }
    for(int i=0;i<n-1;i++)
    {
        for(int j=0;j<n-1-i;j++)
        {
            if(sum[j]<sum[j+1])
            {
                float temp1 = sum[j];
                sum[j] = sum[j+1];
                sum[j+1] = temp1;

                struct Student temp;
                temp=stu[j];
                stu[j]=stu[j+1];
                stu[j+1]=temp;
            }
        }
    }
}
void max_min(struct Student stu[],int n)
{
    sort(stu,n);

    printf("成绩最优的同学:");
    My_print_sum(stu,0);

    printf("成绩最差的同学:");
    My_print_sum(stu,n-1);
}

void print(struct Student stu[],int n)
{
    for(int i=0;i<n;i++)
    {
        My_print_sum(stu,i);
    }
}

void My_print_sum(struct Student stu[],int n)
{
    printf("\n姓名:%s,学号:%d,年龄:%d,性别:%c,英语:%.2f,数学:%.2f,语文: %.2f,总分:%.2f\n",
           stu[n].name,stu[n].sno,stu[n].age,stu[n].gender,
           stu[n].EnglishScore,stu[n].mathScore,stu[n].chineseScore,(stu[n].EnglishScore+stu[n].mathScore+stu[n].chineseScore));
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C语言实现学生成绩管理系统项目

本文链接: https://www.lsjlt.com/news/138097.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言实现学生成绩管理系统项目
    本文实例为大家分享了C语言实现学生成绩管理系统项目,供大家参考,具体内容如下 1、数据结构:学生信息:学号、姓名、年龄、性别、3课成绩 2、功能: (1)  增加学生记录(...
    99+
    2022-11-13
  • C语言实现简单学生成绩管理系统项目
    本文实例为大家分享了C语言实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 系统界面及相关要求 1)系统运行,打开如下界面。列出系统帮助菜单(即命令菜单),提示输入命令。 ...
    99+
    2022-11-13
  • C语言代码实现学生成绩管理系统
    某班有最多不超过 30 人(具体人数由键盘输人)参加期未考试,考试科目 最多不超过 6 门(具体门数由键盘输入,但不少于 3 门),学生成绩管理系统是一 个非常实用的程序,如果能够把...
    99+
    2022-11-13
  • C语言链表实现学生成绩管理系统
    目录一、课程设计题目及内容二、主要设计思路三、程序源码及具体注释(1)预处理指令(2)类型定义(3)函数原型(4)main函数定义(5)其他函数定义 四、运行示例五、注意事...
    99+
    2022-11-13
  • 使用C语言实现学生成绩管理系统
    最近正在学习C语言,搞了一个学生成绩管理系统的小程序,代码粗陋,大佬勿喷。 先上图: 整个程序采用链表来管理学生成绩,保存学生成绩用的是 文件处理函数,使用 fopen(FileP...
    99+
    2022-11-12
  • C语言学生成绩管理系统源码
    本文实例为大家分享了C语言学生成绩管理系统的具体代码,供大家参考,具体内容如下 效果如下: 代码如下: #include <stdio.h> #include <...
    99+
    2022-11-13
  • 怎么用C语言实现学生成绩管理系统
    这篇“怎么用C语言实现学生成绩管理系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用C语言实现学生成绩管理系统”文章吧...
    99+
    2023-06-29
  • C#实现学生成绩管理系统
    本文实例为大家分享了C#实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 使用链表写学生成绩管理系统 链表可以灵活的展示增删改查 下面是结果演示 这是登录及部分添加 继续添...
    99+
    2022-11-13
    C#学生成绩管理系统 C#成绩管理系统 C#学生管理系统
  • 基于C语言实现简单学生成绩管理系统
    本文实例为大家分享了C语言实现简单学生成绩管理系统的具体代码,供大家参考,具体内容如下 一、系统主要功能 1、密码登录2、输入数据3、查询成绩4、修改成绩5、输出所有学生成绩6、退出...
    99+
    2022-11-13
  • C语言实现学生成绩管理系统课程设计
    目录设计要求完整代码运行结果本文实例为大家分享了C语言实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 设计要求 设计学生成绩管理系统 要求如下: 1.输入学生信息2.统计学...
    99+
    2022-11-13
  • C语言嵌套链表实现学生成绩管理系统
    C语言嵌套链表实现学生成绩管理系统,供大家参考,具体内容如下 链表A,每个节点存放一个新的链表B1,B2,B3,B4,B5的头结点。 场景: 一个年级,相当链表A 该年级5个班,每个...
    99+
    2022-11-13
  • C语言利用链表实现学生成绩管理系统
    链表是一种常见的基础数据结构,结构体指针在这里得到了充分的利用。 链表可以动态的进行存储分配,也就是说,链表是一个功能极为强大的数组,他可以在节点中定义多种数据类型,还可以根据需要随...
    99+
    2022-11-21
    C语言 链表 学生成绩管理系统 C语言 学生成绩管理系统 C语言 成绩管理系统
  • 怎么使用C语言代码实现学生成绩管理系统
    这篇文章主要介绍“怎么使用C语言代码实现学生成绩管理系统”,在日常操作中,相信很多人在怎么使用C语言代码实现学生成绩管理系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用C语言代码实现学生成绩管理系统...
    99+
    2023-06-30
  • C++实现简单学生成绩管理系统
    本文实例为大家分享了C++实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 一、问题描述 设计一个学生成绩管理程序,实现按班级完成对学生成绩信息的录入和修改,并用文件保存。实...
    99+
    2022-11-13
  • C#实现简单学生成绩管理系统
    本文实例为大家分享了C#实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 C#作业 用循环结构/数组实现 进入启动页面 管理员身份登入 用户名:师晓峰密码:88481234...
    99+
    2022-11-13
    C#学生成绩管理系统 C#学生管理系统 C#成绩管理系统
  • C++实现学生成绩管理系统最新版
    学生成绩管理系统,供大家参考,具体内容如下 一、问题描述及功能要求 (1)输入同学的学号,姓名,三门科成绩(应用数学、大学英语、计算机应用基础) (2)可以计算出每个学生三门课的...
    99+
    2022-11-12
  • C++实现简单的学生成绩管理系统
    本文实例为大家分享了C++实现简单学生成绩管理系统的具体代码,供大家参考,具体内容如下 manage.h #include <iostream> #include <...
    99+
    2022-11-13
  • Java实现学生成绩管理系统
    本文实例为大家分享了Java实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 新手练手小项目,主要练习面向对象、循环、数组、排序等等。 本人也是自学练手,代码有不正确的或不完...
    99+
    2022-11-12
  • python mysql实现学生成绩管理系统
    这学期在学python,感觉想写一个东西来巩固自己的基础,因为大二的时候我看过python,所以还是一共花了几个小时写了一个基于mysql的成绩管理系统,这个东西其实拿不出手,不过就...
    99+
    2022-11-12
  • C语言实现简单班级成绩管理系统
    前言: 有朋友最近在做c语言课设,要求写一个班级成绩管理系统,便写份简单的代码来玩。代码原创,未参考任何其他人的代码 程序要求 说明 本程序主要采用结构体数组本文件采用多文件编写,...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作