小草的Trouble学生信息管理系统
小草最近上课学C++,在图书馆纠结了好久,决定做这个小东西,没想到遇到了好多困难,好吧,功夫不负有心人,小草也在敲代码中提高了不少。
小草硬是学了好几天,才搞完这个东西,也算是了结了小草的一个心结。
小草的Trouble学生信息管理系统写得不咋样,就是一个学习C++的笔记吧。
1、类。
2、继承与派生。
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <algorithm>
#include <list> using namespace std; class tagScore
{
public:
tagScore();
tagScore(int ch,int ma,int en):chinese(ch),math(ma),english(en) {}
protected:
int chinese;
int math;
int english;
}; tagScore::tagScore()
{
chinese=-;
math=-;
english=-;
} class tagStudent:protected tagScore
{
public:
tagStudent(int ch,int ma,int en,string na,int i,char s):tagScore(ch,ma,en)
{
name=na;
id=i;
sex=s;
score=ch+ma+en;
}
void setdata();
void display()
{
//score=chinese+math+english;
printf("%d ",id);
cout<<name;
score=chinese+math+english;
printf(" %c %6d %6d %6d %6d\n",sex,score,chinese,math,english);
}
int getDataScore()
{
return score;
}
int getDataChinese()
{
return chinese;
}
int getDataMath()
{
return math;
}
int getDataEnglish()
{
return english;
}
int getDataId()
{
return id;
}
string getDataName()
{
return name;
}
private:
string name;
int id;
int score;
char sex;
}; void tagStudent::setdata()
{
cin>>id>>name>>sex>>chinese>>math>>english;
} typedef tagScore Score;
typedef tagStudent Student; Student a[]
{
tagStudent(,,,"xiaoming",,'M'),
tagStudent(,,,"liyang",,'W'),
tagStudent(,,,"kjdfi",,'M')
}; void print()///显示学生数据
{
cout << " 学生成绩信息 " << endl;
cout << "================================================================================" << endl;
cout <<"ID\tName\tSex Scores chinese math english"<<endl;
} /*HomePage A*/ void screenA()
{
cout << " 学生成绩管理系统 " << endl;
cout << "================================================================================" << endl;
cout << " 1----------按姓名查询 2----------按ID查询" << endl;
cout << " 3----------按学号排序并输出 4----------按成绩排序并输出" << endl;
cout << " 0----------退出程序"<<endl;
cout << "================================================================================" << endl;
} ///按姓名查询
void FindByName()
{
bool flag=false;
system("cls");
cout<<"请输入姓名"<<endl;
string n;
cin>>n;
int i;
for(i=; i<; i++)
{
if(a[i].getDataName()==n)
{
flag=true;
break;
}
}
if(flag==true)
{
print();
a[i].display();
}
else
printf("It is nonexistent!\n");
} ///按ID查询
void FindById()
{
bool flag=false;
system("cls");
printf("请输入学的ID\n");
int i;
int pos;
cin>>pos;
for(i=; i<; i++)
{
if(a[i].getDataId()==pos)
{
flag=true;
break;
}
}
if(flag==true)
{
print();
a[i].display();
}
else printf("It is nonexistent!\n");
} int CmpById(const void *a,const void *b)
{
Student p1=*((Student *)a);
Student p2=*((Student *)b);
if(p1.getDataId()!=p2.getDataId())
return p1.getDataId()-p2.getDataId();
}
///按学号排序输出
void SortById()
{
system("cls");
print();
qsort(a,,sizeof(a[]),CmpById);
int i;
for(i=; i<; i++)
{
a[i].display();
}
} int CmpByScore(const void *a,const void *b)
{
Student p1=*((Student *)a);
Student p2=*((Student *)b);
if(p1.getDataScore()!=p2.getDataScore())///成绩按降序排列
return p2.getDataScore()-p1.getDataScore();
else if(p1.getDataChinese()!=p2.getDataChinese())
return p2.getDataChinese()-p1.getDataChinese();
else if(p1.getDataMath()!=p2.getDataMath())
return p2.getDataMath()-p1.getDataMath();
else if(p1.getDataEnglish()!=p2.getDataEnglish())
return p2.getDataEnglish()-p1.getDataEnglish();
else return p1.getDataId()-p2.getDataId();
} ///按成绩排序并输出
void SortByScore()
{
system("cls");
print();
qsort(a,,sizeof(a[]),CmpByScore);
for(int i=; i<; i++)
{
a[i].display();
}
} /*void DelStudent()
{
system("cls");
printf("请输入要删除学生的ID\n");
int pos;
bool flag=false;
cin>>pos;
for(int i=0; i<3; i++)
{
if(pos==i)
{
flag=true;
for(int j=i; j<3; j++)
a[j]=a[j+1];
}
}
if(flag==false)
{
cout<<"It is nonexistent!\n";
}
}*/
int main()
{
screenA();
int order; scanf("%d",&order);
switch(order)
{
case :
FindByName();
system("pause");
break;
case :
FindById();
system("pause");
break;
case :
SortById();
break;
case :
SortByScore();
system("pause");
break;
case :
system("pause");
break;
default:
cout<<"错误命令\n"<<endl;
}
return ;
}
小草的Trouble学生信息管理系统的更多相关文章
- C语言小练习之学生信息管理系统
C语言小练习之学生信息管理系统 main.c文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 ...
- Node.js小项目——学生信息管理系统
这是迄今为止第一次接触后端的东西,是一个很小的项目,但是对于前端学习入门很好.我是先学了VUE框架再学的Node,学起来比较轻松,不过每个人都有自己的学习方法️ 一.项目描述 学生信息管理系统,可以实 ...
- Django 小实例S1 简易学生选课管理系统 7 修改个人信息
Django 小实例S1 简易学生选课管理系统 第7节--修改个人信息 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 用户模块除了注册登录之外,还 ...
- 基于数组或链表的学生信息管理系统(小学期C语言程序实训)
1.基于数组的学生信息管理系统 实验内容: 编写并调试程序,实现学校各专业班级学生信息的管理.定义学生信息的结构体类型,包括:学号.姓名.专业.班级.3门成绩. 实验要求: (1) main函数:以菜 ...
- C++ 简单的学生信息管理系统
// // main.cpp // 2013-7-17作业1 // // Created by 丁小未 on 13-7-17. // Copyright (c) 2013年 dingxiaowei. ...
- PHP实现简单的学生信息管理系统(web版)
(∩_∩) 1.概述 学了php的一些基础,包括HTML,php,pdo,mysql操作等,一直都没有将它们有机结合.最近写了一个简单的网页版学生信息管理系统,前台用HTML,脚本用到了JavaScr ...
- Django 小实例S1 简易学生选课管理系统 12 CSS样式完善
Django 小实例S1 简易学生选课管理系统 第12节--CSS样式完善 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块的逻辑代码到这里 ...
- Django 小实例S1 简易学生选课管理系统 11 学生课程业务实现
Django 小实例S1 简易学生选课管理系统 第11节--学生课程业务实现 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块中,学生需要拥 ...
- Django 小实例S1 简易学生选课管理系统 10 老师课程业务实现
Django 小实例S1 简易学生选课管理系统 第10节--老师课程业务实现 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块中,老师将要使 ...
随机推荐
- java中的线程(3):线程池类 ThreadPoolExecutor「线程池的类型、参数、扩展等」
官方文档: https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.html 1.简介 pu ...
- Win32窗口创建过程
编写窗口程序的步骤: 1 定义WinMain函数 2 定义窗口处理函数–自己定义处理消息 3 注册窗口类(往OS写入数据) 4 创建窗口 (在内存中创建窗口) 5 显示窗 ...
- shiro app
写在前面 我们知道,shiro框架在Java Web应用中使用时,本质上是通过filter方式集成的. 也就是说,它是遵循过滤器链规则的:filter的执行顺序与在web.xml中定义的顺序一致,如下 ...
- ClouderManger搭建大数据集群时ERROR 2003 (HY000): Can't connect to MySQL server on 'ubuntucmbigdata1' (111)的问题解决(图文详解)
问题详情 相关问题的场景,是在我下面的这篇博客里 Cloudera Manager安装之利用parcels方式(在线或离线)安装3或4节点集群(包含最新稳定版本或指定版本的安装)(添加服务)(Ubun ...
- 搭架Ubuntu的 apt-cacher服务
源服务器名称可能不太准确,意思是创建内网自己的私服,这样只要有Ubuntu通过该私服下载安装过软件,私服都会缓存,下一个Ubuntu的请求就直接从缓存中获取. 最近Ubuntu源服务器太慢了,北京的网 ...
- 解决eclipse中org.w3c.dom.Node类老报The method getTextContent() is undefined 问题
http://www.cnblogs.com/itspy007/articles/4431581.html
- Linux利器strace
strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式 ...
- ubuntu下安装MySQL8.0
为了一劳永逸不每次都到处找资料,花了一下午时间做了这些.其中大部分是根据官方手册来的,后面部分谢谢大佬的帮助,超开心. 一.首先,将MySQL APT存储库添加到系统的软件存储库列表中 1.转到htt ...
- 前端参数统一校验工具类ValidParamUtils
1,前端参数不可信,对于后端开发人员来说应该是一条铁律,所以对于前端参数的校验,必不可少,而统一的前端参数校验工具,对我们进行参数校验起到事半功倍的效果 2,统一参数校验工具ValidParamUti ...
- vue+rest-framework前后端分离整合
一.vue部分 二.django路由配置 (1)项目urls.py修改如下: from django.conf.urls import url, include urlpatterns = [ # p ...