/*****************************************************************//** * \file geovindu.h * \brief 业务操作方法 * * \author geovindu,Geovin Du * \date 2023-04-05 ***********************************************************************/ /* * 注释插件 https://www.doxygen.nl/download.html https://computingonplains.wordpress.com/doxygen-and-visual-studio/ https://marketplace.visualstudio.com/items?itemName=sergeb.GhostDoc https://marketplace.visualstudio.com/items?itemName=FinnGegenmantel.doxygenComments https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/comments/ */ #ifndef GEOVINDU_H #define GEOVINDU_H #include <vector> // #include directive #include <string> #include <iostream> #include <string.h> #include <list> #include<iostream> #include<fstream> #include<stdio.h> #include<cstdlib> #include<cstring> #include<iomanip> #include <vector> #include <memory> //#include <sqlite3.h> #include "PigInfo.h" #include "PigNameInfo.h" #include "CinemaScore.h" #include "OpenDoor.h" #include "LeapYear.h" #include "RandomlySampled.h" #include "NumberLottery.h" #include "InputNumberMax.h" #include "DeskKnock.h" #include "NarcissisticNumber.h" #include "NarcissisticInfo.h" #include "NarcissisticList.h" #include "MultiplicationTables.h" #include "CardinalDirection.h" #include "CSVfilemanagement.h" #include "ATMdemo.h" #include "csvstream.h" //#include "csvparser.h" #include "StudentArry.h" #include "student.h" #include "StudentMenu.h" #include "StudentList.h" //#include "GeovinStudent.h" using namespace std; /** * @brief 类库空间名 * geovindu edit * */ namespace geovindu { /** * @brief 简要说明文字 */ enum class colors : short { red, blue, purple, azure }; /** * @brief 简要说明文字 */ struct RGB { short r{ 0 }; // member initialization short g{ 0 }; short b{ 0 }; }; /// <summary> /// 信息 /// </summary> struct GeovinStudent { /// <summary> /// 姓名 /// </summary> std::string studentName; /// <summary> /// 语文 /// </summary> int chineseScore; /// <summary> /// 英语 /// </summary> int englishScore; /// <summary> /// 数学 /// </summary> int mathScore; /// <summary> /// /// </summary> int computerScore; /// <summary> /// 个人总分 /// </summary> int studentTotalScore = chineseScore + englishScore + mathScore + computerScore; //计算 无效 /// <summary> /// 平均 /// </summary> int subjectAverage; /// <summary> /// 名次 /// </summary> int rankingScore; }; /// <summary> /// 语文成绩排序,降 从大到小 /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> bool cmpChineseAsc(const GeovinStudent* a, const GeovinStudent* b) { return a->chineseScore > b->chineseScore; } /// <summary> /// 语文成绩排序,升 从小到大 /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> bool cmpChineseDesc(GeovinStudent* a, GeovinStudent* b) { return a->chineseScore < b->chineseScore; } /// <summary> /// 英语成绩排序,降 /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> bool cmpEnglishDesc(GeovinStudent* a, GeovinStudent* b) { return a->englishScore > b->englishScore; } /// <summary> /// 英语成绩排序,升 /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> bool cmpEnglishAsc(GeovinStudent* a, GeovinStudent* b) { return a->englishScore < b->englishScore; } /// <summary> /// 数学成绩排序,降 /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> bool cmpMathDesc(GeovinStudent* a, GeovinStudent* b) { return a->mathScore > b->mathScore; } /// <summary> /// 数学成绩排序,升 /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> bool cmpMathAsc(GeovinStudent* a, GeovinStudent* b) { return a->mathScore < b->mathScore; } /// <summary> /// 计算机成绩排序,降 /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> bool cmpComputerDesc(GeovinStudent* a, GeovinStudent* b) { return a->computerScore > b->computerScore; } /// <summary> /// 计算机成绩排序,升 /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> bool cmpComputerAsc(GeovinStudent* a, GeovinStudent* b) { return a->computerScore < b->computerScore; } /// <summary> /// 个人总分成绩排序,降 /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> bool cmpTotalScoreDesc(GeovinStudent* a, GeovinStudent* b) { return a->studentTotalScore > b->studentTotalScore; } /// <summary> /// 个人总分成绩排序,升 /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> bool cmpTotalScoreAsc(GeovinStudent* a, GeovinStudent* b) { return a->studentTotalScore < b->studentTotalScore; } /** *@brief if 比较小猪等作业 实现方法业务 * edit: geovindu */ class Geovin { private: public: /** *@brief *三只小猪重量比较方法(函数) * eidt: geovindu */ void getPig(); /// <summary> /// /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> bool compareTwoStudents(const GeovinStudent* a,const GeovinStudent* b); /// <summary> /// /// </summary> /// <param name="a"></param> /// <param name="n"></param> void computeRanks(const GeovinStudent (*a)[], int n); /// <summary> /// /// </summary> void DisplayVectorStudent(); }; // Function for comparing two students according // to given rules bool Geovin::compareTwoStudents(const GeovinStudent *a,const GeovinStudent *b) { // If total marks are not same then // returns true for higher total if (a->studentTotalScore != b->studentTotalScore) return a->studentTotalScore > b->studentTotalScore; // If marks in Maths are same then // returns true for higher marks if (a->chineseScore != b->chineseScore) return a->chineseScore > b->chineseScore; if (a->computerScore != b->computerScore) return a->computerScore > b->computerScore; if (a->englishScore != b->englishScore) return a->englishScore > b->englishScore; return (a->mathScore > b->mathScore); } // Fills total marks and ranks of all Students void Geovin::computeRanks(const GeovinStudent (*a)[], int n) { // To calculate total marks for all Students //for (int i = 0; i < n; i++) //a[i]->studentTotalScore = a[i]->chineseScore + a[i]->computerScore + a[i]->englishScore+a[i]->mathScore; // Sort structure array using user defined // function compareTwoStudents() //sort((*a), (*a) + n, compareTwoStudents); //sort(bgein(a), end(a), compareTwoStudents); // Assigning ranks after sorting for (int i = 0; i < n; i++) { //a[i]->rankingScore = i + 1; } } /// <summary> /// /// </summary> void Geovin::DisplayVectorStudent() { //const GeovinStudent (*slist) [3]; //slist = { }; GeovinStudent* student = new GeovinStudent; student->studentName = "geovin"; student->chineseScore = 25; student->computerScore = 45; student->englishScore = 95; student->mathScore = 75; vector<GeovinStudent *> stu; stu.push_back(student); GeovinStudent* student2 = new GeovinStudent; student2->studentName = "张三"; student2->chineseScore = 55; student2->computerScore = 89; student2->englishScore = 94; student2->mathScore = 62; stu.push_back(student2); GeovinStudent* student3 = new GeovinStudent; student3->studentName = "涂聚文"; student3->chineseScore = 35; student3->computerScore = 85; student3->englishScore = 45; student3->mathScore = 95; stu.push_back(student3); //GeovinStudent* stu1 = new GeovinStudent; // // sort(begin(stu),end(stu), cmpChineseAsc); //vector<GeovinStudent> slist; //vector<GeovinStudent*> slist; // GeovinStudent student; //student.studentName = "geovin"; //student.chineseScore = 25; //student.computerScore = 45; //student.englishScore = 95; //student.mathScore = 75; //slist.push_back(student); //student.studentName = "张三"; //student.chineseScore = 55; //student.computerScore = 65; //student.englishScore = 45; //student.mathScore = 55; //slist.push_back(student); //student.studentName = "涂聚文"; //student.chineseScore = 25; //student.computerScore = 85; //student.englishScore = 85; //student.mathScore = 75; //slist.push_back(student); //cout << "姓名" << "语文" << "英语" << "数学"<<"总分" << endl; //for (auto du : slist) //{ // cout << du.studentName << du.chineseScore << du.computerScore << du.englishScore << du.mathScore << du.studentTotalScore << endl; //} cout << "姓名\t" << "语文\t" << "计算机\t" << "英语\t" << "数学\t"<<"总分\t" << endl; for (auto du : stu) { du->studentTotalScore = du->chineseScore + du->englishScore + du->mathScore + du->computerScore; cout << du->studentName<<"\t" << du->chineseScore << "\t" << du->computerScore << "\t" << du->englishScore << "\t" << du->mathScore << "\t" << du->studentTotalScore << endl; } sort(begin(stu), end(stu), cmpMathDesc); //sort(slist,slist.size(), cmpMathAsc) //sort(stu, stu.size(), cmpMathAsc) // computeRanks(stu, 3); for (auto du : stu) { du->studentTotalScore = du->chineseScore + du->englishScore + du->mathScore + du->computerScore; cout << du->studentName << "\t" << du->chineseScore << "\t" << du->computerScore << "\t" << du->englishScore << "\t" << du->mathScore << "\t" << du->studentTotalScore << endl; } }