学生成绩信息管理系统C语言实现

这是一个使用C语言编写的学生成绩信息管理系统,具备手动录入、查询、修改、删除、显示、统计、排序及文件操作等功能。系统采用链表作为数据结构,并实现了直接选择排序算法。该系统的代码来源于《C++基础案例开发详解》教材,部分核心排序算法为作者自创。
摘要由CSDN通过智能技术生成

学生成绩信息管理系统

一、该系统所要实现的功能

1.手动录入学生信息

void InputScore();  //录入学生信息

2.查询学生信息

void SearchByName();    //按名查询
void SearchByNumber();  //按学号查询

3.修改学生信息

void EditByName();  //按名字修改
void EditByNumber();    //按学号修改

4.删除学生信息

void Delete();  //删除学生信息

5.显示学生信息

void ShowStudentInfo(); //显示学生信息

6.统计学生信息

void Statistics();  //统计学生信息

7.按照平均分排序

void Sort_Average();  //按平均分排序

8.插入学生信息

void Insert();  //插入新的学生的成绩

9.文件导入学生成绩信息和将录入的信息保存到文件中

void FreadFile();   //从文件读取学生信息
void save();    //保存学生信息

二、存储结构和逻辑结构

struct score    //分数结构体
{
   
    float m_DataStructurescore;
    float m_Englishscore;
    float m_Mathscore;
    float m_PEscore;
    float m_Probabilityscore;
    struct score *next;
};

struct student  //学生信息结构体
{
   
    string number;
    string name;
    string sex;
    score chengji;
    float average;
    struct student *next;
};

int amount = 0;  //全局变量,记录学生的个数
int const Q =80;	//假定学生人数最大为80
float A[Q];	//后面的排序算法需要用到
student *head = (student*)malloc(sizeof(student));	 //head为学生信息组成链表的表头

三、具体各个功能实现的代码如下

1.录入学生信息

void InputScore()  //录入学生信息
{
   
 head->next = NULL;  //要录入学生信息,必须删除以前所有的信息
 amount = 0;
 char c;
 int j = 0;
 student *p = head;

 do
 {
   
     student *stu = new student;
     cout<<"请输入学号:(8位)"<<setw(4);
     cin>>(*stu).number;
     cout<<"请输入姓名:"<<setw(4);
     cin>>(*stu).name;
     cout<<"请输入性别:"<<setw(2);
     cin>>(*stu).sex;
     cout<<"请输入数据结构成绩:"<<setw(3);
     cin>>(*stu).chengji.m_DataStructurescore;
     cout<<"请输入英语成绩:"<<setw(3);
     cin>>(*stu).chengji.m_Englishscore;
     cout<<"请输入数学成绩:"<<setw(3);
     cin>>(*stu).chengji.m_Mathscore;
     cout<<"请输入体育成绩:"<<setw(3);
     cin>>(*stu).chengji.m_PEscore;
     cout<<"请输入概率成绩:"<<setw(3);
     cin>>(*stu).chengji.m_Probabilityscore;

     //求平均分
     (*stu).average = 0.2*((*stu).chengji.m_DataStructurescore+
                           (*stu).chengji.m_Englishscore+(*stu).chengji.m_Mathscore
                           +(*stu).chengji.m_PEscore+(*stu).chengji.m_Probabilityscore);
     stu->next = p->next;
     p->next = stu;
     amount++;
     cout<<"数据信息录入成功,是否继续录入?(y/n)";
     cin>>c;
     p = p->next;
     while(c!='y' && c!='n')
     {
   
         cout<<"指令错误<请输入y/n>!!!!"<<endl;
         cin>>c;
     }
 }while(c == 'y');
 j++;

 cout<<"输入了"<<amount<<"个学生的信息。"<<endl;
}

2.查询学生信息

void SearchByName()    //按名查询
{
   
    char c;
    string name;
    do
    {
   
        student *stu = head->next;
        bool flag = 0;
        cout<<"请输入你要查询的学生姓名:"<<endl;
        cin>>name;
        for(int i=1; i<=amount; i++)
        {
   
            if(name == stu->name)
            {
   
                flag = 1;
                cout<<"您要查询的学生是:"<<stu->name<<endl;
                cout<<"学号 姓名 性别 数据结构 英语 数学 体育 概率 平均分"<<endl;
                cout<<setw(8)<<(*stu).number;
                cout<<setw(8)<<(*stu).name;
                cout<<setw(5)<<(*stu).sex;
                cout<<setw(10)<<(*stu).chengji.m_DataStructurescore;
                cout<<setw(12)<<(*stu).chengji.m_Englishscore;
                cout<<setw(8)<<(*stu).chengji.m_Mathscore;
                cout<<setw(8)<<(*stu).chengji.m_PEscore;
                cout<<setw(8)<<(*stu).chengji.m_Probabilityscore;
                cout<<setw(8)<<(*stu).average<<endl;
                break;
            }
            else stu = stu->next;
        }
        if(flag == 1)
        {
   
            cout<<"您想继续查询吗?(y/n)"<<endl;
            cin>>c;
            while(c!='y' && c!='n')
            {
   
                cout<<"指令错误<请输入y/n>!!!!"<<endl;
                cin>>c;
            }
        }
        if(flag == 0)
        {
   
            cout<<"对不起!您要查找的学生不存在!!!!!!!"<<endl;
            cout<<"您想继续查询吗(y/n)"<<endl;
            cin>>c;
            while(c!='y' && c!='n')
            {
   
                cout<<"指令错误<请输入y/n>!!!!"<<endl;
                cin>>c;
            }
        }
    }while(c == 'y');
}

void SearchByNumber()  //按学号查询
{
   
    char c;
    string no;
    do
    {
   
        student *stu = head->next;
        bool flag = 0;
        cout<<"请输入您要查询的学生学号"<<endl;
        cin>>no;
        for(int i=1; i<=amount; i
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值