使用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来 ...
随机推荐
- 微信小程序怎么获取当前页面的url
使用getCurrentPages可以获取当前加载中所有的页面对象的一个数组,数组最后一个就是当前页面. var pages = getCurrentPages() //获取加载的页面 var cur ...
- UI_UISlider控件
#pragma mark - 创建控件 UISlider - (void)createSlider { // 也是继承与 UIControl UISlider *slider = [[UISlider ...
- linux:共享内存
#include <sys/ipc.h> #include <sys/shm.h> #include <string.h> #include <stdio.h ...
- 2015.05.15,外语,学习笔记-《Word Power Made Easy》 02 “如何谈论医生”
包括Sessions 4-6: Prefix Person,nous,etc. Practice,etc. Adjective internus内部 internist [ɪn'tɝnɪst] n.内 ...
- [yueqian_scut]Android多点触控技术和应用框架
Android多点触控技术跟Linux输入子系统紧密相关.本文将从应用的角度说明Android多点触控技术的接口和应用. 一.多点触控场景分析 网络上有关Android多点触控技术的文章多见于两点拉伸 ...
- Python学习历程之模块浅识
# =============================操作系统模块=======================# import os# 待续# ======================= ...
- ROS-SLAM仿真-hector
前言:hector_slam可以很好的在空中机器人,手持构图设备及特种机器人中运行. hector_slam不需要订阅里程计信息/odmo消息,而是直接使用激光估算里程计信息,因此,当机器人速度较快时 ...
- Spring《五》集合的注入方式
List.Set.Map.Properties 1.List <property name="msg"> <list> <value>gf< ...
- Windows下Java JDK安装和环境变量配置
[Java攻城狮学习路线](http://www.cnblogs.com/apollospotatolikett/p/8665123.html 1.JDK下载 下载地址:http://www.orac ...
- listview添加的头部布局超过一屏头部内容显示不全
headView的实际高度超过一个屏幕,但是显示的结果只有一个屏幕,超过一个屏幕高度意外的部分显示不全. 只使用了listView.getRefreshable().addHeadView(headV ...