小草最近上课学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. 2.5 Go错误处理

    defer import "fmt" func testDefer(){ defer fmt.Println() defer fmt.Println() fmt.Println() ...

  2. vi和vim的基本介绍

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

  3. Ba Gua Zhen

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5544 学习链接:https://www.cnblogs.com/qscqesze/p/4902518. ...

  4. java多态的具体表现实例和理解

    Java的多态性 面向对象编程有三个特征,即封装.继承和多态. 封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据. 继承是为了重用父类代码,同时为实现多态性作 ...

  5. BNU27935——我爱背单词——————【数组模拟】

    我爱背单词 Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      Java class name:  ...

  6. js 中标签的增删 方法

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. SQL中CASE 的用法 转载

    sql语言中有没有类似C语言中的switch case的语句?? 没有,用case   when   来代替就行了.              例如,下面的语句显示中文年月 select getdat ...

  8. 使用mermain用Markdown的语法画流程图和UML图

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:使用mermain用Markdown的语法画流程图和UML图.

  9. MongoDB集群怎样去访问?

    上一章节简单介绍了MONGODB的集群搭建.相信大家都已经很熟悉了.集群搭建完接下来应该考虑我们的程序应该怎样去访问他. 怎么读写数据等操作.下面把我在工作中的一些用法列出来供大家作为参考. 官网的链 ...

  10. (五)html部分标签元素补充

    html标签元素十分的多,一次性掌握全部,那是不可能的,在后续的学习中,会不断补充标签元素... 1.行元素和块元素 行标签元素即是标签元素根据内容大小进行自适应,而不是占据一整行. 如<spa ...