我在前面的博客中分别使用C语言的动态数组和链表实现了学生成绩管理系统。近期正好在学习C++,于是我便使用C++实现了学生成绩管理系统。算法和前面的C语言的动态数组实现的学生成绩管理系统几乎相同,仅仅是在动态内存分配上使用了C++的New,而C语言中使用的是malloc,在排序中使用了插入排序

我的使用C语言实现的学生成绩管理系统:http://blog.csdn.net/u010105970/article/details/17752193

使用链表实现的学生成绩管理系统:http://blog.csdn.net/u010105970/article/details/25058379

插入排序:http://blog.csdn.net/u010105970/article/details/25464535

首先定义一个Student类

class Student//学生类
{
public:
~Student();//析构函数
void InputStudent(void);//输入学生信息
void OutputStudent(void);//输出学生信息
void DeleteStudent(void);//删除学生信息
void SearchStudent(void);//查找学生信息
void ChangeStudent(void);//改动学生信息
void ScortByChinese(void);//对学生的语文成绩排序
void ScortByMath(void); //对学生的数学成绩排序
void ScortByEnglish(void);//对学生的英语成绩排序
void ScortByTotal(void);//对学生的总分排序 private:
Student *St; //学生类指针
int Size; //学生的人数
string Name; //姓名
int Age; //年龄
int No; //学号
float Score[3];//三科的成绩
float Total; //总分
float Ave; //平均分
};

然后通过各个成员函数操作Student类,算法和C语言的几乎相同我就不多解释

程序的所有代码

#include <iostream>
#include <cstdlib>
#include <string> using namespace std; class Student//学生类
{
public:
~Student();//析构函数
void InputStudent(void);//输入学生信息
void OutputStudent(void);//输出学生信息
void DeleteStudent(void);//删除学生信息
void SearchStudent(void);//查找学生信息
void ChangeStudent(void);//改动学生信息
void ScortByChinese(void);//对学生的语文成绩排序
void ScortByMath(void); //对学生的数学成绩排序
void ScortByEnglish(void);//对学生的英语成绩排序
void ScortByTotal(void);//对学生的总分排序 private:
Student *St; //学生类指针
int Size; //学生的人数
string Name; //姓名
int Age; //年龄
int No; //学号
float Score[3];//三科的成绩
float Total; //总分
float Ave; //平均分
}; //析构函数
Student::~Student()
{
delete(St);
} //输入学生的信息
void Student::InputStudent(void)
{
int len;//学生的人数
cout<<"请输入学生的人数:";
cin>>len; system("cls"); Size = len; St = new Student[Size]; for(int i=0; i<len; i++)
{
cout<<"请输入第"<<i+1<<"个学生的姓名:";
cin>>St[i].Name; cout<<"请输入第"<<i+1<<"个学生的年龄:";
cin>>St[i].Age; cout<<"请输入第"<<i+1<<"个学生的学号:";
cin>>St[i].No; cout<<"请输入第"<<i+1<<"个学生的语文成绩:";
cin>>St[i].Score[0]; cout<<"请输入第"<<i+1<<"个学生的数学成绩:";
cin>>St[i].Score[1]; cout<<"请输入第"<<i+1<<"个学生的英语成绩:";
cin>>St[i].Score[2]; St[i].Total = St[i].Score[0] + St[i].Score[1] + St[i].Score[2]; St[i].Ave = St[i].Total / 3.0f; system("cls");
}
} //输出学生的信息
void Student::OutputStudent(void)
{
cout<<"姓名 年龄 学号 语文 数学 英语 总分 平均分"<<endl; for(int i=0; i<Size; i++)
{
cout<<St[i].Name<<" "<<St[i].Age<<" "<<St[i].No<<" "<<St[i].Score[0]<<" "<<St[i].Score[1]<<" "<<St[i].Score[2]<<" "
<<St[i].Score[2]<<" "<<St[i].Total<<" "<<St[i].Ave<<endl;
}
} void Student::DeleteStudent(void)//删除学生信息
{
string str;
cout<<"请输入你须要删除的学生的姓名:";
cin>>str; int num;//标记姓名相等时的下标 //寻找姓名相等时的下标
for(int i=0; i<Size; i++)
{
//当姓名相等时
if(str == St[i].Name)
{
num = i;
}
} //将后面的学生向前移
for(int j=num+1; j<Size; j++)
{
St[j-1] = St[j];
} Size -= 1;//学生人数降低一个
} void Student::SearchStudent(void)//查找学生信息
{
string name;
cout<<"请输入你须要查找的学生的姓名:";
cin>>name; int i; for(i=0; i<Size; i++)
{
if(name == St[i].Name)
{
break;
}
} cout<<St[i].Name<<" "<<St[i].Age<<" "<<St[i].No<<" "<<St[i].Score[0]<<" "<<St[i].Score[1]<<" "
<<St[i].Score[2]<<" "<<St[i].Total<<" "<<St[i].Ave<<endl;
} void Student::ChangeStudent(void)//改动学生信息
{
string name;
cout<<"请输入你须要改动的学生的姓名:";
cin>>name; int i; for(i=0; i<Size; i++)
{
if(name == St[i].Name)
{
break;
}
} cout<<"改动前学生的信息:"<<endl;
cout<<St[i].Name<<" "<<St[i].Age<<" "<<St[i].No<<" "<<St[i].Score[0]<<" "<<St[i].Score[1]<<" "
<<St[i].Score[2]<<" "<<St[i].Total<<" "<<St[i].Ave<<endl<<endl; cout<<"请输入学生的姓名:";
cin>>St[i].Name; cout<<"请输入学生的年龄:";
cin>>St[i].Age; cout<<"请输入第个学生的学号:";
cin>>St[i].No; cout<<"请输入学生的语文成绩:";
cin>>St[i].Score[0]; cout<<"请输入学生的数学成绩:";
cin>>St[i].Score[1]; cout<<"请输入第学生的英语成绩:";
cin>>St[i].Score[2]; St[i].Total = St[i].Score[0] + St[i].Score[1] + St[i].Score[2]; St[i].Ave = St[i].Total / 3.0f;
} void Student::ScortByChinese(void)//对学生的语文成绩排序
{
//提供插入数组中的数据
for(int i=1; i<Size; i++)
{
int j = i-1; //插入数组中的数据
Student temp = St[i]; while(temp.Score[0] > St[j].Score[0] && j>=0)
{
St[j+1] = St[j]; j--;
} St[++j] = temp;
}
} void Student::ScortByMath(void)//对学生的数学成绩排序
{
//提供插入数组中的数据
for(int i=1; i<Size; i++)
{
int j = i-1; //插入数组中的数据
Student temp = St[i]; while(temp.Score[1] > St[j].Score[1] && j>=0)
{
St[j+1] = St[j]; j--;
} St[++j] = temp;
}
} void Student::ScortByEnglish(void)//对学生的英语成绩排序
{
//提供插入数组中的数据
for(int i=1; i<Size; i++)
{
int j = i-1; //插入数组中的数据
Student temp = St[i]; while(temp.Score[2] > St[j].Score[2] && j>=0)
{
St[j+1] = St[j]; j--;
} St[++j] = temp;
}
} void Student::ScortByTotal(void)//对学生的总分排序
{
//提供插入数组中的数据
for(int i=1; i<Size; i++)
{
int j = i-1; //插入数组中的数据
Student temp = St[i]; while(temp.Total > St[j].Total && j>=0)
{
St[j+1] = St[j]; j--;
} St[++j] = temp;
}
} void main()
{
cout<<"================================================================================\n"<<endl;
cout<<"================================================================================\n"<<endl;
cout<<"*************************欢迎使用学生成绩管理系统*******************************\n"<<endl;
cout<<"-----------------------------------------------------------------制作人:梅沙小子\n"<<endl;
cout<<"********************************************************************************\n"<<endl;
cout<<"================================================================================\n"<<endl; cout<<"请按随意将进入学生管理系统:"<<endl;
getchar();
system("cls"); cout<<"================================================================================\n\n";
cout<<"------------------------ 请选择要操作的命令:-----------------------------------\n\n";
cout<<"-------------------------- 1 输入学生信息--------------------------------------\n\n";
cout<<"-------------------------- 2 输出学生信息--------------------------------------\n\n";
cout<<"-------------------------- 3 删除学生信息--------------------------------------\n\n";
cout<<"-------------------------- 4 查找学生信息--------------------------------------\n\n";
cout<<"-------------------------- 5 改动学生信息--------------------------------------\n\n";
cout<<"-------------------------- 6 将学生的语文成绩按从大到小排----------------------\n\n";
cout<<"-------------------------- 7 将学生的数学成绩按从大到小排----------------------\n\n";
cout<<"-------------------------- 8 将学生的英语成绩按从大到小排----------------------\n\n";
cout<<"-------------------------- 9 将学生的总成绩按从大到小排------------------------\n\n";
cout<<"================================================================================\n\n"; int Item;//操作命令 Student st;//学生对象 while(1)
{
cout<<"请选择操作命令:";
cin>>Item;
system("cls");//清屏 switch(Item)
{
case 1://输入学生信息
{
st.InputStudent();
}
break; case 2://输出学生信息
{
st.OutputStudent();
}
break; case 3://删除学生信息
{
st.DeleteStudent();
}
break; case 4://查找学生信息
{
st.SearchStudent();
}
break; case 5://改动学生信息
{
st.ChangeStudent();
}
break; case 6://对学生的语文成绩排序
{
st.ScortByChinese();
st.OutputStudent();
}
break; case 7://对学生的数学成绩排序
{
st.ScortByMath();
st.OutputStudent();
}
break; case 8://对学生的英语成绩排序
{
st.ScortByEnglish();
st.OutputStudent();
}
break; case 9://对学生的总分排序
{
st.ScortByTotal();
st.OutputStudent();
}
break;
default:
break;
}
} system("pause");
}

使用C++实现学生管理系统的更多相关文章

  1. 【IOS开发笔记02】学生管理系统

    端到端的机会 虽然现在身处大公司,但是因为是内部创业团队,产品.native.前端.服务器端全部坐在一起开发,大家很容易做零距离交流,也因为最近内部有一个前端要转岗过来,于是手里的前端任务好像可以抛一 ...

  2. C程序范例(2)——学生管理系统”链表“实现

    1.对于学生管理系统,能够实现的方法有许多,但是今天我们用链表的方法来实现.虽然初学者很可能看不懂,但是不要紧,这是要在整体的系统的学习完C语言之后,我才编写出的程序.所以大家不必要担心.在这里与大家 ...

  3. jsp学习之基于mvc学生管理系统的编写

    mvc开发模式:分别是 model层 view层 Control层 在学生管理系统中,model层有学生实体类,数据访问的dao层,view层主要是用于显示信息的界面,Control层主要是servl ...

  4. java版本的学生管理系统

    import java.awt.BorderLayout; import java.awt.Color; import java.awt.Frame; import java.awt.event.Ac ...

  5. 学生管理系统-火车订票系统 c语言课程设计

    概要: C 语言课程设计一---学生管理系统 使使用 C 语言实现学生管理系统.系统实现对学生的基本信息和考试成绩的 管理.采用终端命令界面,作为系统的输入输出界面.采用文件作为信息存储介质. 功能描 ...

  6. Java学生管理系统项目案例

    这是一个不错的Java学生管理系统项目案例,希望能够帮到大家的学习吧. 分代码如下 package com.student.util; import java.sql.Connection; impo ...

  7. Java+Mysql+学生管理系统

    最近正在学java和数据库,想起以前写的学生管理系统,都是从网上下载,敷衍了事.闲来无事,也就自己写了一个,不过功能实现的不是很多. 开发语言:java: 开发环境:Mysql, java: 开发工具 ...

  8. JDBC学生管理系统--处理分页显示

    分页的思想: 假设一共有104条数据,每页显示10条数据: select * from student limit 0,10; 页数是index,第index页,对应的sql语句是: select * ...

  9. JDBC-简单的学生管理系统-增删改查

    结构:三层架构--mvc 三层是为了解决整个应用程序中各个业务操作过程中不同阶段的代码封装的问题,为了使程序员更加专注的处理某阶段的业务逻辑. 比如将数据库操作代码封装到一层中,提供一些方法根据参数直 ...

  10. Java写一个简单学生管理系统

    其实作为一名Java的程序猿,无论你是初学也好,大神也罢,学生管理系统一直都是一个非常好的例子,初学者主要是用数组.List等等来写出一个简易的学生管理系统,二.牛逼一点的大神则用数据库+swing来 ...

随机推荐

  1. [ACM] POJ 2154 Color (Polya计数优化,欧拉函数)

    Color Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7630   Accepted: 2507 Description ...

  2. 串口之CreateFile 函数具体解释

    HANDLE CreateFile( LPCTSTR lpFileName, //指向文件名称的指针 DWORD dwDesiredAccess, //訪问模式(写/读) DWORD dwShareM ...

  3. DPI深度报文检测架构及关键技术实现

    DPI深度报文检测架构及关键技术实现 当前DPI(Deep Packet Inspect深度报文识别)技术是安全领域的关键技术点之一,围绕DPI技术衍生出的安全产品类型也非常的多样.在分析DPI的进一 ...

  4. SPOJ COT2 Count on a tree II (树上莫队)

    题目链接:http://www.spoj.com/problems/COT2/ 参考博客:http://www.cnblogs.com/xcw0754/p/4763804.html上面这个人推导部分写 ...

  5. python面向对象与结构成员之间的关系

    1面向对象结构分析:----面向对象整体大致分为两块区域:-------第一部分:静态字段(静态变量)部分-------第二部分:方法部分--每个区块可以分为多个小部分 class A: countr ...

  6. Linux学习日记——字符处理

    (菜鸡学习日记 各种使用命令只列举了常用几种,发现错误望指正) 一.管道 在Linux 中,管道就是一个固定大小的缓冲区,大小为一页4K.它是一种通信的机制,可以使用管道符“ | ” 来连接进程,连接 ...

  7. MFC+OpenGL可编程管线

    [github链接] 网上的代码大都是固定管线渲染的,今天下午整理了下,把setPixelFormat.初始化glew.创建GL 4,2 context等操作封装到一个MFC类OpenGLWidget ...

  8. Unity5.0 状态机新增的entry/exit

    相关官方日志 https://blogs.unity3d.com/cn/2014/06/26/shiny-new-animation-features-in-unity-5-0/

  9. 使用短信猫发送短信java代码

    短信猫简单配置:https://www.cnblogs.com/Big-Boss/p/9699880.html 发送短信: package utils; import org.smslib.AGate ...

  10. CF1012B Chemical table 构造_思维_并查集

    我们可以将横坐标和纵坐标看成是点.发现这些点之间是有传递性的. 题中说明,如果有矩阵中三个顶点被选,则底角的点也会被覆盖,发现这些点之间是有传递性的.那么我们最终达到的目的就是使整个图中只有 111 ...