学生管理系统(C语言简单实现)

简介: 这篇文章是关于使用C语言实现一个简单的学生管理系统,包括文件的基本应用、数据结构设计、函数实现以及用户界面交互。

仅供借鉴、仅供借鉴、仅供借鉴(整理了一下大一C语言每个章节的练习题、没得题目、只有程序了)

文章目录

  • 1 、实训名称
  • 2、实训目的及要求
  • 3、 源码
  • 4、实验小结

1 、实训名称

实训12:文件

2、实训目的及要求

1、文件的基本应用
2、综合运用已学的知识,包括循环结构、函数、数组、指针等来解决问题。结合程序调试功能和程序3、调试技巧解决程序中存在的逻辑问题。

实现效果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、 源码


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h> 
#define N 2

struct student{
    char num[10];//学号
    char name[10];//名字 
    float score_c;//语文 
    float score_m;//数学 
    float score_e;//英语 
    float score_sum; //总成绩 
};

void inputfile(struct student *stu,int n);//输入文件函数
int outputfile(struct student *stu);//输出文件函数
void input(struct student *stu);//输入函数,从键盘输入数据
void output(struct student *stu);//输出函数,将数据输出在屏幕上显示
void rank(struct student *stu);//排序函数,按总成绩排序后调用输出函数输出排序后的情况
void locating(struct student *stu);//查询函数,按姓名进行查询,并输出查询到的数据
void mainview();//界面函数

void inputfile(struct student *stu,int n){
    FILE *f;
     int i;
     if((f=fopen("student.txt","w"))!=NULL)
    {
         for(i=0;i<n;i++)
        {
             fprintf(f,"学号:%s\t姓名:%s\t语文:%.2lf\t数学:%.2lf\t英语%.2lf\t总分%.2lf\n",
                stu[i].num,stu[i].name,stu[i].score_c,stu[i].score_m,stu[i].score_e,stu[i].score_sum);                    
         }
         printf("文件写入成功");
         fclose(f); 
     }else{
          printf("文件打开失败!\n");
     }
}
int outputfile(struct student *stu){
    FILE *f;
    int i,n;
    if((f=fopen("stu.txt","r"))!=NULL)
    {
        for(i=0;feof(f)==0;i++)//feof(f)函数:指针f所指向的文件若文件结束,该函数返回值为非0值
            fscanf(f,"学号:%s\t姓名:%s\t语文:%.2lf\t数学:%.2lf\t英语%.2lf\t总分%.2lf\n",
            stu[i].num,stu[i].name,stu[i].score_c,stu[i].score_m,stu[i].score_e,stu[i].score_sum);                
        fclose(f);
    }else{
        printf("文件打开失败"); 
}
    n=i-1;
    return n;
}
void input(struct student *stu){
    int i;
    for(i=0;i<N;i++)
    {
        printf("\n\t请输入学生信息:\n\t\t学号:");
        scanf("%s",stu[i].num);
        printf("\t\t姓名:");
        scanf("%s",stu[i].name);
        printf("\t\t语文:");
        scanf("%f",&stu[i].score_c);
        printf("\t\t数学:");
        scanf("%f",&stu[i].score_m);
        printf("\t\t英语:");
        scanf("%f",&stu[i].score_e);
        stu[i].score_sum=stu[i].score_c+stu[i].score_m+stu[i].score_e;
    }
    inputfile(stu,N);
}
void output(struct student *stu){
    int i,n;
    printf("\t学号\t姓名\t语文\t数学\t英语\t总分\n");
    for(i=0;i<N;i++)
    {
        printf("\t%-8s%-8s%-8.lf%-8.lf%-8.lf%-8.lf\n",stu[i].num,stu[i].name,
               stu[i].score_c,stu[i].score_m,stu[i].score_e,stu[i].score_sum);
    }

}
void rank(struct student *stu){
    int i,k;
    struct student temp;
    for(k=1;k<N;k++)
        for(i=N-1;i>=k;i--)
            if(stu[i].score_sum>stu[i-1].score_sum)
            {
                temp=stu[i];
                stu[i]=stu[i-1];
                stu[i-1]=temp;
            }
    output(stu);
}
void locating(struct student *stu){
    int i;
    char ch[10];
    if(N==0)
    {
        printf("没有记录!\n");
        return;
    }
    printf("请输入你要查找的姓名:");
    scanf("%s",&ch);
    for(i=0;i<N;i++)
        if(strcmp(stu[i].name,ch)==0)
        {
            printf("\n\t\t查找到的学生,信息如下\n\n");
            printf("\t学号\t姓名\t语文\t数学\t英语\t总分\n");
            printf("\t%-8s%-8s%-8.lf%-8.lf%-8.lf%-8.lf\n",stu[i].num,stu[i].name,
                   stu[i].score_c,stu[i].score_m,stu[i].score_e,stu[i].score_sum);
            return;
        }
    if(i==N)printf("\t\t未找到要查找的学生的信息!\n");
}
void mainview(){
    int c,f;
    struct student stu[N];
    while(1)
    {
        system("CLS");
    printf("*********************************************************\n");
    printf("*\t\t\t\t\t\t\t*\n");
    printf("*\t\t  学生管理系统!         \t\t*\n");
    printf("*\t\t\t\t\t\t\t*\n");
    printf("*********************************************************\n");
    printf("*\t\t\t\t\t\t\t*\n");
    printf("*\t\t    1--输入信息            \t\t*\n");
    printf("*\t\t    2--查看信息            \t\t*\n");
    printf("*\t\t    3--按成绩排序            \t\t*\n");
    printf("*\t\t    4--按姓名查找            \t\t*\n");
    printf("*\t\t    0--退出系统          \t\t*\n");
    printf("*\t\t\t\t\t\t\t*\n");
    printf("*********************************************************\n");
    printf("请输入选项编号(0 ~ 4): (按回车键结束输入)\n");
    scanf("%d",&c);
    switch(c)
    {
        case 1:input(stu);break;    
        case 2:output(stu);break;
        case 3:rank(stu);break;    
        case 4:locating(stu);break;    
        case 0: return;
        default:printf("输入错误,请重新输入!\n");fflush(stdin);//fflush清空缓冲区残余信息    
        }                         
        printf("\n\n");
        system("pause");
    }
}
int main()
{
    mainview();
    system("pause");
    getchar();
    getchar();
    return 0;
}

4、实验小结

通过本次的作业,了解到文件的读写方式和存储的形式。通过不同函数的结合使用可以解决生活中的一些实际问题。指针的使用能够方便的定位,便于操作。但是指针使用不好会对程序造成危害。数组的使用可以存储大量的数据,在内存中按连续的顺序存储数据有利于数据的操作。

相关文章
|
2月前
|
存储 安全 数据管理
C语言之考勤模拟系统平台(千行代码)
C语言之考勤模拟系统平台(千行代码)
58 4
|
2月前
|
程序员 C语言 开发者
pymalloc 和系统的 malloc 有什么区别
pymalloc 和系统的 malloc 有什么区别
|
27天前
|
IDE 编译器 开发工具
【C语言】全面系统讲解 `#pragma` 指令:从基本用法到高级应用
在本文中,我们系统地讲解了常见的 `#pragma` 指令,包括其基本用法、编译器支持情况、示例代码以及与传统方法的对比。`#pragma` 指令是一个强大的工具,可以帮助开发者精细控制编译器的行为,优化代码性能,避免错误,并确保跨平台兼容性。然而,使用这些指令时需要特别注意编译器的支持情况,因为并非所有的 `#pragma` 指令都能在所有编译器中得到支持。
101 41
【C语言】全面系统讲解 `#pragma` 指令:从基本用法到高级应用
|
22天前
|
存储 编译器 C语言
【C语言】C语言的变量和声明系统性讲解
在C语言中,声明和定义是两个关键概念,分别用于告知编译器变量或函数的存在(声明)和实际创建及分配内存(定义)。声明可以多次出现,而定义只能有一次。声明通常位于头文件中,定义则在源文件中。通过合理组织头文件和源文件,可以提高代码的模块化和可维护性。示例包括全局变量、局部变量、函数、结构体、联合体、数组、字符串、枚举和指针的声明与定义。
46 12
|
2月前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
51 1
|
2月前
|
人工智能 安全 算法
基于C语言的嵌入式系统开发,涵盖嵌入式系统概述、C语言的优势、开发流程、关键技术、应用实例及面临的挑战与未来趋势。
本文深入探讨了基于C语言的嵌入式系统开发,涵盖嵌入式系统概述、C语言的优势、开发流程、关键技术、应用实例及面临的挑战与未来趋势。C语言因其高效、可移植、灵活及成熟度高等特点,在嵌入式系统开发中占据重要地位。文章还介绍了从系统需求分析到部署维护的完整开发流程,以及中断处理、内存管理等关键技术,并展望了嵌入式系统在物联网和人工智能领域的未来发展。
77 1
|
2月前
|
程序员 C语言 开发者
pymalloc 和系统的 malloc 有什么区别?
pymalloc 和系统的 malloc 有什么区别?
|
3月前
|
存储 编译器 C语言
【C语言】学生管理系统:完整模拟与实现(一)
【C语言】学生管理系统:完整模拟与实现
|
3月前
|
存储 C语言
手把手教你用C语言实现通讯录管理系统
手把手教你用C语言实现通讯录管理系统
|
3月前
|
测试技术 C语言
【C语言】学生管理系统:完整模拟与实现(三)
【C语言】学生管理系统:完整模拟与实现