学生信息管理系统

Posted martinlwx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学生信息管理系统相关的知识,希望对你有一定的参考价值。

问题描述

某班开设有英语、数学、程序设计三门课程,该班同学不多于50人。编写具有下列功能的菜单驱动的程序。

(1)添加学生信息

(2)显示所有学生信息

(3)删除学生信息 让操作者输入要删除学生的名字,将其删除

(4)查询学生信息 让操作者输入要查询学生的名字,显示其信息或提示无

(5)保存当前输入数据

(6)载入先前数据

(0)退出系统

程序代码
#include<bits/stdc++.h>
using namespace std;
#define max_len 51      //根据问题描述,最多50个学生
struct Student
{
    double english;
    double math;
    double program;
    double sum;
    char name[20];
    bool isexist;   //用该bool型变量来标记学生是否被删除
} list_student[max_len];    //学生列表

int pos = 0; //指向学生列表的位置
int show_Control()
{
    cout<<"请选择你要的功能:
";
    cout<<"   1---添加学生信息
";
    cout<<"   2---显示所有学生信息
"; 
    cout<<"   3---删除学生信息
";
    cout<<"   4---查询单个学生信息
";
    cout<<"   5---保存当前学生信息到文件中去
";
    cout<<"   6---载入先前保存进度
";
    cout<<"   0---退出系统
";
    int n;
    cin>>n;
    return n;
}   //展示操作菜单并返回用户选择的数字 

void add_student()
{
    cout<<"请输入学生的名字   ";
    cin>>list_student[pos].name;    
    cout<<"请输入学生的英语成绩   ";
    cin>>list_student[pos].english;
    cout<<"请输入学生的数学成绩   ";
    cin>>list_student[pos].math;
    cout<<"请输入学生的程序设计成绩   ";
    cin>>list_student[pos].program;
    list_student[pos].sum = list_student[pos].english + list_student[pos].math + list_student[pos].program;
    list_student[pos].isexist = true;
    pos++;      //指针加一
    cout<<endl; 
}   //添加学生信息

void sortbysum()
{
    for(int i=0;i<pos;i++)
        for(int j=0;j<pos-i;j++)
        {
            if(list_student[i].isexist && list_student[j].isexist && list_student[j].sum>list_student[j+1].sum)
            {
                struct Student tmp = list_student[i];
                list_student[i] = list_student[j];
                list_student[j] = tmp;
            }
        }
}//冒泡排序,根据学生的总成绩进行排序

void show_all__information()
{
    cout<<"你是否想对学生的总成绩进行排序后输出?(y/n)";
    char tmp[10];
    cin>>tmp;
    if(tmp[0]=='y') sortbysum();
    cout<<"学生姓名	英语成绩	数学成绩	程序设计成绩	总成绩
";
    for(int i=0;i<pos;i++)
    {
        if(list_student[i].isexist)
        {
            cout<<list_student[i].name << "		";
            cout<<list_student[i].english << "		";
            cout<<list_student[i].math << "		";
            cout<<list_student[i].program << "		";
            cout<<list_student[i].sum << "
";
        }
    }
    cout<<endl;
}//展示学生信息,提供选项是否要排序

void delete_student()
{
    cout<<"请输入你要删除的学生的名字
";
    char student_name[20];
    cin>>student_name;
    for(int i=0;i<pos;i++)
    {
        if(strcmp(student_name,list_student[i].name)==0 && list_student[i].isexist)     //如果找到指定的学生
        {
            list_student[i].isexist = false;    //置为false就是删除
            cout<<"删除成功!
";
            cout<<endl;
            return;
        }
    }
    cout<<"查无该学生信息
";
    cout<<endl;
}//删除某个学生

void get_student()
{
    cout<<"请输入你要查询的学生的名字
";
    char student_name[20];
    cin>>student_name;
    for(int i=0;i<pos;i++)
    {
        if(strcmp(student_name,list_student[i].name)==0)        //如果找到指定的学生
        {
            if(!list_student[i].isexist)
            {
                cout<<"查无该学生信息
";
                cout<<endl;
                return;
            }
            else
            {
                cout<<"这位学生的英语成绩是:  " << list_student[i].english << endl;
                cout<<"这位学生的数学成绩是:  " << list_student[i].math << endl;
                cout<<"这位学生的程序设计成绩是:  " << list_student[i].program << endl;
                cout<<"这位学生的总成绩是:  " << list_student[i].sum<< endl;
                cout<<endl;
                return;
            }
        }
    }
    cout<<"查无该学生信息
";
    cout<<endl;
}//查询单个学生信息

void savedate()
{
    FILE *fp;
    fp = fopen("data.txt","w");
    for(int i=0;i<pos;i++)
    {
        if(list_student[i].isexist)
        {
            fprintf(fp,"%s %.2lf %.2lf %.2lf %.2lf
",list_student[i].name,list_student[i].english,list_student[i].math,list_student[i].program,list_student[i].sum);
            printf("写入成功!
");
        }
    }
    fclose(fp);
}//保存当前输入数据

void loaddata()
{
    FILE *fp;
    if((fp=fopen("data.txt","r"))==NULL)//打开输入文件
    {
        cout<<"无法打开该文件
";
        return;
    }
    char tmp[100];
    int line_length = 0;
    
    while(fgets(tmp,100,fp)!=0) line_length++;  //统计行数,也是统计学生个数
    rewind(fp);     //将光标移回文件开头
    for(int i=0;i<line_length;i++)
    {
        fscanf(fp,"%s%lf%lf%lf%lf",&list_student[i].name,&list_student[i].english,&list_student[i].math,&list_student[i].program,&list_student[i].sum);
        list_student[i].isexist = true;
    }
    pos = line_length;
    fclose(fp);
}//载入先前数据

int main()
{
    int choice = show_Control();
    while(choice!=0)
    {
        switch(choice)
        {
            case(0): 
                {
                    cout<<"是否要保存并退出(y/n)";
                    char tmp[5];
                    cin>>tmp;
                    if(tmp[0]=='y')
                        savedate();
                    return 0;   
                }//退出
            case(1): add_student();break;       //添加学生信息
            case(2): show_all__information();break;     //展示所有学生信息
            case(3): delete_student();break;    //删除学生信息
            case(4): get_student();break;       //获取单个学生信息
            case(5): savedate();break;      //保存当前所有学生信息
            case(6): loaddata();break;      //载入先前数据
        }
        choice = show_Control(); //更新用户选项 
         if(choice == 0)
        {
            cout<<"是否要保存并退出(y/n)";
                    char tmp[5];
                    cin>>tmp;
                    if(tmp[0]=='y')
                        savedate();
                    return 0;
        }
    }
    return 0;
}
测试用例

张三 154.00 15.00 59.00 228.00
李四 489.00 15.00 49.00 553.00
老王 156.00 155.00 156.00 467.00
李子 156.00 114.00 236.00 506.00

结果展示

技术分享图片
技术分享图片

以上是关于学生信息管理系统的主要内容,如果未能解决你的问题,请参考以下文章

c语言学生成绩管理系统

Python之学生信息管理系统

学生信息管理系统(C语言版)

Java 项目 学生信息管理系统 超详细 超完整 保姆级讲解(主页面 + 添加学生信息 + 删除学生信息 + 修改学生信息 + 查询学生信息)

c语言 学生管理系统

Java实训:学生信息管理系统