ADD file via upload

main
pe9xjwfro 5 months ago
parent 9cd957f352
commit a76e3216f6

@ -0,0 +1,169 @@
#pragma once
#ifndef UNDERGRADUATE_MANAGER_H
#define UNDERGRADUATE_MANAGER_H
#include <iostream>
#include <string>
#include <fstream>
#include "undergraduate.h"
using namespace std;
class UnderGraduateManager {
private:
int top = 0;
UnderGraduate undergraduates[100];
public:
UnderGraduateManager();//读取文件
int queryByNo(string sno);
void clearStudent();
int addStudent(UnderGraduate s);
int modifyStudent(string sno);
int deleteStudent(string sno);
int queryStudent(string sno);
void displayAll();
void dataManage();
void dataSave();
void dataRead();
~UnderGraduateManager();//写入文件
};
UnderGraduateManager::UnderGraduateManager() {
dataRead();
}
int UnderGraduateManager::queryByNo(string sno) { // 查找i 无: -1
for (int i = 0; i <= top; i++)
if (undergraduates[i].getStudentNo() == sno)
return i;
return -1;
}
void UnderGraduateManager::clearStudent() {//停止检索最后一个元素,相当于删除元素
top = -1;
}
int UnderGraduateManager::addStudent(UnderGraduate s) {//若不存在该元素return -1则元素数+1保存至文件
int p = queryByNo(s.getStudentNo());
if (p == -1) {
top++;
undergraduates[top] = s;
dataSave();
return 1;
}
else {
cout << "existed!" << endl;
return 0;
}
}
int UnderGraduateManager::modifyStudent(string sno) {//若存在该元素return = -1则修改属性保存至文件
int p = queryByNo(sno);
if (p == -1) {
cout << "Not exist!" << endl;
return 0;
}
else {
cout << "please input new detials" << endl;
undergraduates[p].inputData();
dataSave();
return 1;
}
}
int UnderGraduateManager::deleteStudent(string sno) {//删除元素,其他元素前移
int p = queryByNo(sno);
if (p == -1) {
cout << "Not exist!" << endl;
return 0;
}
else {
for (int i = 0; i < top; i++)
undergraduates[i] = undergraduates[i + 1];
top--;
cout << "Deleted!" << endl;
dataSave();
return 1;
}
}
int UnderGraduateManager::queryStudent(string sno) {
int p = queryByNo(sno);
if (p == -1) {
cout << "Not exist!" << endl;
return 0;
}
else {
cout << "exist!" << endl;
undergraduates[p].displayDetails();
return 1;
}
}
void UnderGraduateManager::displayAll() {
for (int i = 0; i <= top; i++) {
cout << "The NO." << i << "student's info:" << endl;
undergraduates[i].displayDetails();
}
}
UnderGraduateManager::~UnderGraduateManager() {
dataSave();
}
void UnderGraduateManager::dataManage() {
int choice = 1;
string sstudentNo;
UnderGraduate s;
while (choice != 0) {
cout << "**********************************" << endl;
cout << "\t\t undergraduate maintainace\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 << "Please take your choice: ";
cin >> choice;
switch (choice) {
case 1:
s.inputData();
addStudent(s);
break;
case 2:
cout << " Please input student's number:";
cin >> sstudentNo;
modifyStudent(sstudentNo);
break;
case 3:
cout << " Please input student's number:";
cin >> sstudentNo;
deleteStudent(sstudentNo);
break;
case 4:
cout << " Please input student's number:";
cin >> sstudentNo;
queryStudent(sstudentNo);
break;
case 5:
displayAll();
break;
case 6:
clearStudent();
default:
break;
}
}
}
void UnderGraduateManager::dataSave() {
fstream file("D:\\ProgramData\\vs\\design\\UGM.docx", ios::out);// !
for (int i = 0; i <= top; i++) {
file.write((char*)&undergraduates[i], sizeof(undergraduates[i]));
}
file.close();
}
void UnderGraduateManager::dataRead() {
UnderGraduate s;
top--;
fstream file("D:\\ProgramData\\vs\\design\\UGM.docx", ios::in); // !
while (1) {
file.read((char*)&s, sizeof(s));
if (!file) break;
top++;
undergraduates[top] = s;
}
file.close();
}
#endif //UNDERGRADUATE_MANAGER_H
Loading…
Cancel
Save