我在前面的博客中分别使用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. HDOJ 4944 FSF’s game

    http://blog.csdn.net/keshuai19940722/article/details/38519681 不明真相的补一发... FSF's game Time Limit: 900 ...

  2. android AppWidget的使用以及利用TimerTask实现widget的定时更新

    第一步:首先是Widget的定义声明: 在资源文件下的xml目录中建立文件example_appwidget_info.xml: <?xml version="1.0" en ...

  3. php之将用户信息写入数据库

    session高级应用将用户信息写入到数据库中 首先建立数据库表 在实验数据库sqldb中建立session表,用于存储数据 在根文件夹下建立须要用到的文件(重点是session,class.php这 ...

  4. Spring In Action读书笔记

    第一章 1.Spring採用4种策略减少Java开发复杂度 基于POJO的轻量级和最小侵入性编程 依赖注入和面向接口实现松耦合 基于切面和惯例进行声明式编程 通过切面和模板降低样板式代码 PS:POJ ...

  5. android帧动画,移动位置,缩放,改变透明度等动画解说

    1.苦逼的需求又来了,须要实现一些动画效果,第一个想到的是播放gif图片,可是这样会占包的资源,而且清晰度不高,于是想着程序实现,自己用帧动画+缩放+移动+透明度 实现了一些想要的效果,这里跟大家分享 ...

  6. unity3D游戏开发实战原创视频讲座系列9之塔防类游戏开发第一季

    解说文件夹 塔防游戏0基础篇... 第一讲  游戏演示和资源介绍... 第二讲  游戏场景的完毕... 第三讲  预制体的制作... 第四讲  敌人的随机产生和按路径行走... 第五讲  塔防工具的产 ...

  7. Vmware 安装samba

    samba是什么samba是什么?能干什么? samba 是基于SMB协议(ServerMessage Block,信息服务块)的开源软件,samba也可以是SMB协议的商标.SMB是一种Linux. ...

  8. BZOJ 1989 概率相关

    思路: 一条边免费的概率为 (经过它的路/总路径条数)^2 DFS即可 有个地方没有用 long long炸了好久- //By SiriusRen #include <cstdio> us ...

  9. 体系化认识RPC--转

    原文地址:http://www.infoq.com/cn/articles/get-to-know-rpc?utm_source=infoq&utm_medium=popular_widget ...

  10. Hua Wei 机试题目三---2014

    一.根据对应规则进行翻译输出 描述:已知有如下的对应规则: ,则输入任意个正整数,输出经过规则翻译以后对应的结果. 例如:输入:1234:输出bcde. 题目很简单,我觉得需要注意的问题就是对于大整数 ...