c++学生管理系统(STL)

来源:互联网 发布:金山软件框架 编辑:程序博客网 时间:2024/06/09 19:04
      哥小白刚刚涉及一些STL想巩固之前学的C++和STL,
     c++第一次用类,复制构造函数和操作符重载,STL写学生管理系统,,可惜没用继承多态(不知道哪里可以用 - _-)
      写这么长代码,想了很久没思路,看了看别人代码思路,自己也写了这个简单的管理系统
      自己用到了C++11新语法,vs2010以下编译器不会通过
     STL的sort和(Greate<T>())均不会用,于是百度其用法,感谢百度,感谢度娘
    *******************************************************************
                time:2015 1月13日 0:15分
                代码:343行
                                                       by:隐无影

     *******************************************************************


#include<iostream>#include<fstream>//文件输入输出流头文件#include<list>//链表#include<string>#include<functional>//适配器#include <algorithm>//算法#include<windows.h>using namespace std;class Student//定义student类{public: string name; string ID; int grade; Student() //无参构造函数  //无初始化 {    grade = 0; } Student(string &pname, string &pid, int &pgrade)//有参构造函数 {  this->name = pname;  this->ID = pid;  this->grade = pgrade; } Student(const Student &st1)//拷贝构造函数 {  this->name = st1.name;  this->ID = st1.ID;  this->grade = st1.grade; } Student &operator=(const Student &st1)//重载= {    this->name = st1.name;  this->ID = st1.ID;  this->grade = st1.grade; } bool operator==(const Student &st1)const//重载== {  return (grade == st1.grade) ? 1 : 0; } bool operator<(const Student &st1)const {  return (grade <st1.grade) ? 1 : 0; } bool operator>(const Student &st1)const {  return (grade>st1.grade) ? 1 : 0; }public: void print() {  cout << "name  :" << name << endl;  cout << "ID    :" << ID << endl;  cout << "grade :" << grade << endl;  cout << "-----------" << endl;  }};list<Student> mylist;//学生链表void print(list<Student> &zlist){ auto it = zlist.begin();//c++11先语法 for (it; it != zlist.end(); ++it) {  it->print();   }}void show()//主菜单{ cout << "+++++++++++++++++++++++++++++++++++++++++"<<endl; cout << "+++++++++++1.无影搜索+++++++++++" << endl; cout << "+++++++++++2.小曾排序+++++++++++" << endl; cout << "+++++++++++3.新童鞋加入+++++++++++" << endl; cout << "+++++++++++4.删除坏蛋+++++++++++" << endl; cout << "+++++++++++5.360显示+++++++++++" << endl; cout << "+++++++++++6.超级保存+++++++++++" << endl; cout << "+++++++++++7.无影清屏+++++++++++" << endl; cout << "+++++++++++8.退出曾BB系统+++++++++++" << endl; cout << "++++++++++++++++++++++++++++++++++++++++" << endl; }void xianshi(){ system("cls"); cout << "****************************************" << endl; cout << "   1----------按学号查询----------" << endl; cout << "   2----------按姓名查询----------" << endl; cout << "   3----------按成绩查询----------" << endl; cout << "   4----------返回" << endl; cout << "****************************************" << endl;}//查找学号void findxuehao(){ int flag = 0; cout << "曾BB提示输入学号" << std::endl; string str1; cin >> str1; auto it = mylist.begin(); for (; it != mylist.end(); ++it) {  if (str1 == it->ID)  {   cout << "找到该童鞋" << std::endl;   it->print();   flag = 1;   break;  }   } if (flag == 0) {  std::cout << "没找到,请百度哦" << std::endl; }}//查找名字void findmingzi(){ int flag = 0; cout << "曾BB提示输入名字" << std::endl; string str1; cin >> str1; auto it = mylist.begin(); for (; it != mylist.end(); ++it) {  if (str1 == it->name)  {   cout << "找到该童鞋" << std::endl;   it->print();   flag = 1;   break;  } } if (flag == 0) {  std::cout << "没找到,请百度哦" << std::endl; }}//分数查找void findfenshu(){ int flag = 0; cout << "曾BB提示输入分数" << std::endl; int num; cin >> num; auto it = mylist.begin(); for (; it != mylist.end(); ++it) {  if (num == it->grade)  {   cout << "找到该童鞋" << std::endl;   it->print();   flag = 1;   break;  } } if (flag == 0) {  std::cout << "没找到,请百度哦" << std::endl; }}//排序void sortpaixu()  //这里还有些不明白{ system("cls"); cout << "分数排序完毕" << std::endl; mylist.sort(greater<Student>()); auto it = mylist.begin(); for (; it != mylist.end(); ++it) {  it->print(); }}//插入一个学生void insert(){ system("cls"); cout << "学号多少" << endl; string str1; cin >> str1; cout << "姓名多少" << endl; string str2; cin >> str2; cout << "分数呵呵,你懂得" << endl; int num; cin >> num; Student one(str2, str1, num); mylist.push_back(one); //std::cout << mylist.size() << endl; std::cout << "要不要再显示呢 y or n" << endl; char ch; cin >> ch; if (ch == 'y') {    for (auto it= mylist.begin(); it != mylist.end(); ++it)  {   (it)->print();  } } else {  std::cout << "那就算了吧,下次哇" << endl;  Sleep(2000);  system("cls"); }}//删除学生void deletest(){ system("cls"); cout << "请输入要删除的学生" << endl; string str1; cin >> str1; int flag = 0; for (auto it = mylist.begin(); it != mylist.end(); it++) {  if (str1 == it->ID)  {   std::cout << "找到该学生" << std::endl;   it->print();   mylist.erase(it);   cout << "删除OK" << endl;   flag = 1;  }  break; } if (flag == 0) {  std::cout << "没有找到" << std::endl; }}//存储文件void savefile(){ system("cls"); ofstream ofile("student.dat", ios::out); if (!ofile) {  std::cout << "文件打开失败" << std::endl;  return ; } for (auto it = mylist.begin(); it != mylist.end(); ++it) {  ofile << it->name << ' ' << it->ID << ' ' << it->grade << endl; } std::cout << "ok" << endl;}//读出文件void duchu(){ ifstream ifle("student.dat"); if (!ifle) {  std::cout << "文件打开失败" << endl; } for (auto it = mylist.begin(); it != mylist.end(); ++it) {       string str1, str2;   int num;  ifle >> str1 >> str2 >> num;  std::cout << "名字 " << str1 << endl;  std::cout << "学号" << str2 << endl;  std::cout << "成绩" << num << endl;  } }int main(){ cout << "----------------欢迎进入曾BB学生管理系统------------------" << endl; MessageBoxA(NULL, "欢迎欢迎,热烈欢迎", "曾哥欢迎", 1); char ch; show(); while (cin >> ch) {  switch (ch)  {  case'1'://搜索   xianshi();      while (cin >> ch)   {    int flag = 0;    switch (ch)    {    case'1':     findxuehao(); break;    case'2':     findmingzi(); break;    case '3':     findfenshu(); break;    case'4':     flag = 1;     break;    default:     flag = 1;     break;    }    if (flag == 1)    {     break;    }   }   break;  case'2':   sortpaixu(); break;//排序  case'3':   insert(); break;//增加  case'4':   deletest(); break;//删除  case'5':   print(mylist); break;//输出  case'6':   savefile(); break;//存储  case'7':   system("cls"); break;//清除  case'8':   return 0;  default:   return 0;  }  show(); }     cout << "=======曾BB系统要和你说byebye喽" << endl; system("pause"); return 0;} 


0 0
原创粉丝点击