使用C++实现学生管理系统
我在前面的博客中分别使用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++实现学生管理系统的更多相关文章
- 【IOS开发笔记02】学生管理系统
端到端的机会 虽然现在身处大公司,但是因为是内部创业团队,产品.native.前端.服务器端全部坐在一起开发,大家很容易做零距离交流,也因为最近内部有一个前端要转岗过来,于是手里的前端任务好像可以抛一 ...
- C程序范例(2)——学生管理系统”链表“实现
1.对于学生管理系统,能够实现的方法有许多,但是今天我们用链表的方法来实现.虽然初学者很可能看不懂,但是不要紧,这是要在整体的系统的学习完C语言之后,我才编写出的程序.所以大家不必要担心.在这里与大家 ...
- jsp学习之基于mvc学生管理系统的编写
mvc开发模式:分别是 model层 view层 Control层 在学生管理系统中,model层有学生实体类,数据访问的dao层,view层主要是用于显示信息的界面,Control层主要是servl ...
- java版本的学生管理系统
import java.awt.BorderLayout; import java.awt.Color; import java.awt.Frame; import java.awt.event.Ac ...
- 学生管理系统-火车订票系统 c语言课程设计
概要: C 语言课程设计一---学生管理系统 使使用 C 语言实现学生管理系统.系统实现对学生的基本信息和考试成绩的 管理.采用终端命令界面,作为系统的输入输出界面.采用文件作为信息存储介质. 功能描 ...
- Java学生管理系统项目案例
这是一个不错的Java学生管理系统项目案例,希望能够帮到大家的学习吧. 分代码如下 package com.student.util; import java.sql.Connection; impo ...
- Java+Mysql+学生管理系统
最近正在学java和数据库,想起以前写的学生管理系统,都是从网上下载,敷衍了事.闲来无事,也就自己写了一个,不过功能实现的不是很多. 开发语言:java: 开发环境:Mysql, java: 开发工具 ...
- JDBC学生管理系统--处理分页显示
分页的思想: 假设一共有104条数据,每页显示10条数据: select * from student limit 0,10; 页数是index,第index页,对应的sql语句是: select * ...
- JDBC-简单的学生管理系统-增删改查
结构:三层架构--mvc 三层是为了解决整个应用程序中各个业务操作过程中不同阶段的代码封装的问题,为了使程序员更加专注的处理某阶段的业务逻辑. 比如将数据库操作代码封装到一层中,提供一些方法根据参数直 ...
- Java写一个简单学生管理系统
其实作为一名Java的程序猿,无论你是初学也好,大神也罢,学生管理系统一直都是一个非常好的例子,初学者主要是用数组.List等等来写出一个简易的学生管理系统,二.牛逼一点的大神则用数据库+swing来 ...
随机推荐
- 关于 xftp 上传文件时,仅仅是上传了0字节的问题
有两次,上传的时候出现了问题.能上传.可是上传过去的文件都是0字节.查看了各种配置,都是正常的:百思不得解: 后来想起近期在linuxserver运行apt-get update时,中间曾失败过,于是 ...
- IOS之UITableView——怎样刷新父页面的Cell
问题:评论数同步 在社交相关的项目中常常有这种主页面,主列表的Cell中有赞数.评论数,详情页顶部也是相同的一个Cell,下部有评论列表,评论添加或降低.详情页的评论数随之改变,返回主列表,主列表的相 ...
- h5-注册
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWYAAAIpCAIAAAAeogVlAAAgAElEQVR4nOy9W1gb6Z3/OTd7s9d7t8 ...
- dns tunnel C&C
通过DNS控制主机以及执行命令 我的ubuntu 安装过程 1854 mkdir dns_tunnel_tool 1855 cd dns_tunnel_tool/ 1856 ls 1857 git c ...
- Java IO 基础
早上复习了IO.NIO.AIO相关的概念,将其中一些要点记录一下. 从编程语言层面 BIO | NIO | AIO 以Java的角度,理解,linux c里也有AIO的概念(库),这些概念不知道什么原 ...
- 29.QT主窗口加widget
运行效果 widget布局showwidget.h #ifndef SHOWWIDGET_H #define SHOWWIDGET_H #include <QWidget> #includ ...
- 洛谷P4016 负载平衡问题(最小费用最大流)
题目描述 GG 公司有 nn 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 nn 个仓库的库存数量相同.搬运货物时,只能在相邻的仓库之间搬运. 输入输出格式 输入格 ...
- 页面定制CSS代码初探(一):页面变宽 文本自动换行 图片按比缩放
初识博客 初写博客,先在设置里选了个喜欢的模板 第一眼就爱上了呢!那极简的风格,我喜欢!!但是,应用后,却发现... 纳尼!模板上右侧那张漂亮的图片呢?!我的怎么什么都没有.没有图片好难看啊,瞬间无爱 ...
- jq——DOM文档处理
内部插入:父子级关系 1 $(a).append($(b))把b插入到a里面(a里面的面后) $("div").append($("<p>段落</p&g ...
- vue安装以及配置
今天又重新做了一遍vue的安装步骤: 1.条件,vue需要安装在node环境里面,确保安装了node. 2.安装脚手架. 找一个文件夹,放你的项目.待会儿安装的时候,项目会在你找的这个文件下新增一个你 ...