From 447c2c0f06f6866156dee21cac40f986a849019d Mon Sep 17 00:00:00 2001 From: pe9xjwfro <2153257690@qq.com> Date: Mon, 17 Jun 2024 20:37:38 +0800 Subject: [PATCH] ADD file via upload --- graduateManager.h | 216 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 216 insertions(+) create mode 100644 graduateManager.h diff --git a/graduateManager.h b/graduateManager.h new file mode 100644 index 0000000..f2d79dc --- /dev/null +++ b/graduateManager.h @@ -0,0 +1,216 @@ +#pragma once +#pragma once +/************************************************* +Copyright (C), 2010, Tyut +File name: GradateManager.h +Author: gaobaolu Version: 1.0 Date: 2010.6.28 +Description: 研究生管理类 +*************************************************/ +//#ifndef UNDERGRADUATE_MANAGER_H +#define UNDERGRADUATE_MANAGER_H +#include +#include +#include +#include"graduate.h" +using namespace std; +/* Define a Class : GradateManager 研究生管理类*/ +class GradateManager +{ +private: + int top; //记录指针 + Graduate graduates[100]; //研究生记录 +public: + GradateManager();//构造函数,将Undergraduate.txt读到undergraduates[]中 + int queryByNo(string sno);//按研究生号查找 //找到:返回数组下标//没找到:返回-1 + void clearStudent(); //删除所有研究生信息 + int addStudent(Graduate s); //添加研究生,需要先查找是否存在 + int modifyStudent(string sno); //修改学生信息 ,需要先查找是否存在 + int deleteStudent(string sno);//删除研究生,删除前先查找其是否存在 + int queryStudent(string sno);//查找研究生,查到则显示,否则提示未查到 + void displayAll();//输出所有研究生信息 + void dataManage(); //研究生库维护 + void dataSave(); + void dataRead(); + ~GradateManager();//析构函数,将undergraduates[]写入Undergraduate.txt文件中 +}; +//构造函数,将Undergraduate.txt读到undergraduates[]中 +GradateManager::GradateManager() +{ + dataRead(); +} +//按研究生号查找 +//找到:返回数组下标 +//没找到:返回-1 +int GradateManager::queryByNo(string sno) +{ + for (int i = 0; i <= top; i++) + if (graduates[i].getStudentNo() == sno) + return i; + return -1; +} +//删除所有本科生信息 +void GradateManager::clearStudent() +{ + top = -1; +} +//添加研究生,需要先查找是否存在 +int GradateManager::addStudent(Graduate s) +{ + int p = queryByNo(s.getStudentNo()); + if (p == -1) + { + top++; + graduates[top] = s; + dataSave();//保存 + return 1; + } + else + { + cout << "--------->此学生已经存在 !<----------" << endl << endl; + return 0; + } +} +//修改研究生,删除前先查找其是否存在 +int GradateManager::modifyStudent(string sno) +{ + int p = queryByNo(sno); + if (p == -1) + { + cout << "--------->此学生不存在 !<----------" << endl << endl; + return 0; + } + else + { + cout << "请输入该生的新信息: " << endl << endl; + graduates[p].inputData(); + dataSave();//保存 + return 1; + } + +} +//删除研究生,删除前先查找其是否存在 +int GradateManager::deleteStudent(string sno) +{ + int p = queryByNo(sno); + if (p == -1) + { + cout << "--------->此学生不存在 !<----------" << endl << endl; + return 0; + } + else + { + for (int i = p; i < top; i++) + graduates[i] = graduates[i + 1]; + top--; + cout << "--------->删除完成!<----------" << endl << endl; + dataSave();//保存 + return 1; + } +} +//查找研究生 +int GradateManager::queryStudent(string sno) +{ + int p = queryByNo(sno); + if (p == -1) + { + cout << "--------->此学生不存在 !<----------" << endl << endl; + return 0; + } + else + { + cout << "--------->此学生存在:<----------" << endl << endl; + graduates[p].displayDetails(); + return 1; + } +} +//输出所有研究生信息 +void GradateManager::displayAll() +{ + for (int i = 0; i <= top; i++) + { + cout << "--------第" << i << "个学生情况----------" << endl << endl; + graduates[i].displayDetails(); + + } +} +//析构函数,将undergraduates[]写入Undergraduate.txt文件中 +GradateManager::~GradateManager() +{ + dataSave(); +} +void GradateManager::dataManage() +{ + int choice = 1; + string sstudentNo; + Graduate s; + + while (choice != 0) + { + cout << "********************************************" << endl; + cout << "\t\t研究生维护\n"; + cout << "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" << endl; + cout << "\n \t\t 1:新增 "; + cout << "\n \t\t 2:修改 "; + cout << "\n \t\t 3:删除 "; + cout << "\n \t\t 4:查找 "; + cout << "\n \t\t 5:显示 "; + cout << "\n \t\t 6:全部删除 "; + cout << "\n \t\t 0:退出 "; + cout << endl; + cout << "*********************************************" << endl; + cout << "请选择:" << endl; + cin >> choice; + switch (choice) + { + case 1: + s.inputData(); + addStudent(s); + break; + case 2: + cout << " 请输入学号:"; + cin >> sstudentNo; + modifyStudent(sstudentNo); + break; + case 3: + cout << " 请输入学号:"; + cin >> sstudentNo; + deleteStudent(sstudentNo); + break; + case 4: + cout << " 请输入学号:"; + cin >> sstudentNo; + queryStudent(sstudentNo); + break; + case 5: + displayAll(); + break; + case 6: + clearStudent(); + break; + default: + break; + } + } +} +void GradateManager::dataSave()//存储资料函数,将read[]写入Undergraduate.txt文件中 +{ + fstream file("C:\\Undergraduate.dat", ios::out); + for (int i = 0; i <= top; i++) + file.write((char*)&graduates[i], sizeof(graduates[i])); + file.close(); +} +void GradateManager::dataRead() //构造函数,将Undergraduate.txt读到read[]中 +{ + Graduate s; + top = -1; + fstream file("C:\\graduate.dat", ios::in); + while (1) + { + file.read((char*)&s, sizeof(s)); + if (!file) break; + top++; + graduates[top] = s; + } + file.close(); +} +//#endif //UNDERGRADUATE_MANAGER_H \ No newline at end of file