小草最近上课学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学生信息管理系统的更多相关文章

  1. 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 ...

  2. Node.js小项目——学生信息管理系统

    这是迄今为止第一次接触后端的东西,是一个很小的项目,但是对于前端学习入门很好.我是先学了VUE框架再学的Node,学起来比较轻松,不过每个人都有自己的学习方法️ 一.项目描述 学生信息管理系统,可以实 ...

  3. Django 小实例S1 简易学生选课管理系统 7 修改个人信息

    Django 小实例S1 简易学生选课管理系统 第7节--修改个人信息 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 用户模块除了注册登录之外,还 ...

  4. 基于数组或链表的学生信息管理系统(小学期C语言程序实训)

    1.基于数组的学生信息管理系统 实验内容: 编写并调试程序,实现学校各专业班级学生信息的管理.定义学生信息的结构体类型,包括:学号.姓名.专业.班级.3门成绩. 实验要求: (1) main函数:以菜 ...

  5. C++ 简单的学生信息管理系统

    // // main.cpp // 2013-7-17作业1 // // Created by 丁小未 on 13-7-17. // Copyright (c) 2013年 dingxiaowei. ...

  6. PHP实现简单的学生信息管理系统(web版)

    (∩_∩) 1.概述 学了php的一些基础,包括HTML,php,pdo,mysql操作等,一直都没有将它们有机结合.最近写了一个简单的网页版学生信息管理系统,前台用HTML,脚本用到了JavaScr ...

  7. Django 小实例S1 简易学生选课管理系统 12 CSS样式完善

    Django 小实例S1 简易学生选课管理系统 第12节--CSS样式完善 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块的逻辑代码到这里 ...

  8. Django 小实例S1 简易学生选课管理系统 11 学生课程业务实现

    Django 小实例S1 简易学生选课管理系统 第11节--学生课程业务实现 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块中,学生需要拥 ...

  9. Django 小实例S1 简易学生选课管理系统 10 老师课程业务实现

    Django 小实例S1 简易学生选课管理系统 第10节--老师课程业务实现 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块中,老师将要使 ...

随机推荐

  1. jdk8涉及到的接口、类及方法

    bi是binary的简写,二元的,表示两个参数 unary,一元的,表示一个参数 1.函数式接口Supplier T get(),不接收参数,有返回值 IntSupplier,int getAsInt ...

  2. MongoChef

    简介 开源且免费,有商业版 可自动化生成查询语句 使用 最下面的 _id 是自动生成的,手动指定 {      .0,      "_id" : ObjectId("58 ...

  3. vi命令——修改文件内容

    以下内容转载自http://blog.csdn.net/bruce0532/article/details/7842384 vi编辑器是所有Unix及Linux系统下标准的编辑器,介绍一下它的用法和一 ...

  4. vi和vim的基本介绍

    所有的 Linux 系统都会内建 vi 文本编辑器.   Vim 具有程序编辑的能力,可以看做是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计.代码补完.编译及错误跳转等方便编程的 ...

  5. (转)IPC相关的命令

    IPC相关的命令 原文:http://www.cnblogs.com/jjzd/p/6773090.html 进程间通信概述 进程间通信有如下的目的: 1.数据传输,一个进程需要将它的数据发送给另一个 ...

  6. BFC --- Block Formatting Context --- 块级格式化上下文

    虽然知道块级格式化上下文是什么东西,但要我把这个东西给说清楚,还真的不是一件容易的事儿,所以这篇文章我就要说说清楚到底什么使传说中的BFC,即块级格式化上下文. 一.BFC的通俗理解 通俗的理解 -- ...

  7. storm中几个概念的大小关系

    从图可以看出来:topology>supervisor>worker>excutor>task; 也就是说一个topology可以运行在多个supervisor上,一个supe ...

  8. [转]ASP.NET MVC 5 List Editor with Bootstrap Modals

    本文转自:https://www.codeproject.com/articles/786085/asp-net-mvc-list-editor-with-bootstrap-modals With ...

  9. scss-@extend

    @extend指令用于共享规则和选择器之间的关系.它可以扩展所有其他类的样式在一个类中,也可应用于自己特定的样式. 查看如下scss@extend示例: .style{ font-size: 30px ...

  10. Linux - centos 7 mysql安装

    安装 CentOS Linux release 7.1.1503 (Core)下载地址链接:https://pan.baidu.com/s/1c2rWsbm 密码:5nrt #yum -y insta ...