C++实现教务管理系统
本文实例为大家分享了C++实现教务管理系统的具体代码,供大家参考,具体内容如下
gradeInfo.cpp
#include#include #include //stringstream字符串流需要引用的库 #include #include "gradeInfo.h"using namespace std; //构造函数初始化数据 gradeInfo::gradeInfo() {studentNumber = new string[200]; grade = new double[200]; courseNumber = ""; studentNum = 0; }//录入学生信息 void gradeInfo::setGradeInfo(string courseNumber,int studentNum){for (int i = 0; i < studentNum; i++)grade[i] = 0; this->courseNumber = courseNumber; this->studentNum = studentNum; }//录入学生成绩 void gradeInfo::setGrade(){cout << "请开始输入学生成绩:" << endl << endl; for (int i = 0; i < studentNum; i++){cout << studentNumber[i] << ":"; cin >> grade[i]; }}//根据学号查询某同学的成绩及分数 void gradeInfo::searchSingleGrade(string new_studentNumber) const{for (int i = 0; i < studentNum; i++){if (new_studentNumber == studentNumber[i])cout << "学号:" << studentNumber[i] << "课程成绩:" << grade[i] << endl << endl; }}//查询所有成绩分数 void gradeInfo::searchAllGrade(student * s, int totalSNum) const{for (int i = 0; i < studentNum; i++){for (int k = 0; k < totalSNum; k++){if (studentNumber[i] == s[k].getStudentNumber())cout << "学号: " << studentNumber[i] << "姓名: " << s[k].getName() << "成绩: " << grade[i] << ""<< endl; }}cout << endl; }//返回课程数目 string gradeInfo::getCourseNumber() const {return courseNumber; } //返回学生数目 int gradeInfo::getStudentNum(){return studentNum; } //将成绩及数据写入文件 void gradeInfo::writeToTxtFileG(int num) const{string fileName ( "grade"); stringstream ss; //stringstream文件流的输入输出操作ss << num; fileName.append(ss.str()); //ss.str()转换成末尾为/0的字符串数组 fileName.append(".txt"); ofstream txtOut(fileName.c_str()); //c_str():生成一个const char*指针,指向以空字符终止的数组。txtOut << courseNumber << "" << studentNum << endl; for (int i = 0; i < studentNum; i++){txtOut << studentNumber[i] << "" << grade[i] << endl; }txtOut.close(); }//从文件中读取学号及成绩 void gradeInfo::readFromTxtFileG(int num){string fileName ( "grade"); stringstream ss; ss << num; fileName.append(ss.str()); //.str()返回一个以‘/0'结尾的字符数组fileName.append(".txt"); fstream txtIn(fileName.c_str(), ios::in); txtIn >> courseNumber >> studentNum; for (int i = 0; i < studentNum; i++) txtIn >> studentNumber[i] >> grade[i]; txtIn.close(); }//根据学生数据判断是否存在学生 bool gradeInfo::isStudentHere(string new_studentNumber){bool temp = false; for (int i = 0; i < studentNum; i++){if (new_studentNumber == studentNumber[i])temp = true; }return temp; }//析构函数 gradeInfo::~gradeInfo(){delete [] studentNumber; delete [] grade; }
gradeInfo.h
#include #include "student.h"using namespace std; classgradeInfo{public:string * studentNumber; //学号string courseNumber; //课程编号double * grade; //成绩int studentNum; //课程学生数 friend class teacher; gradeInfo(); //默认构造函数void setGradeInfo(string courseNumber, int studentNum); //设置初始化成绩信息对象 void setGrade(); //录入成绩 void searchSingleGrade(string studentNumber) const; //利用学号查询成绩 void searchAllGrade(student * s, int totalSNum) const; //输出全体学生成绩 string getCourseNumber() const; //获取课程编号 int getStudentNum(); //获取学生数 void writeToTxtFileG(int) const; void readFromTxtFileG(int); bool isStudentHere(string new_studentNumber); //判断学生是否有相应课程编码的课 ~gradeInfo(); //删除学号和成绩指针 };
classInfo.cpp
#include#include #include #include "classInfo.h"using namespace std; //构造函数初始化课程数据 classInfo::classInfo(){courseNumber = ""; courseName = ""; credit = 0 ; jobNumberOfTeacher = ""; }//录入课程数据 void classInfo::setClassInfo(string courseNumber, string courseName, double credit, string jobNumberOfTeacher){this->courseNumber = courseNumber; this->courseName = courseName; this->credit= credit; this->jobNumberOfTeacher = jobNumberOfTeacher; }//展示课程数据 void classInfo::searchBasicInfo() const{cout <<"课程编号:" << courseNumber << "" << "课程名称:" << courseName << "学分: " << credit << endl; }//返回教师工号 string classInfo::getJobNumberOfTeacher() const{return jobNumberOfTeacher; }//返回课程代码 string classInfo::getCourseNumber() const{return courseNumber; }//返回课程学分 double classInfo::getCredit() const{return credit; } //返回课程名 string classInfo::getCourseName() const{return courseName; }//将课程信息录入文件 void classInfo::writeToTxtFileC() const{ofstream txtOut("classBasicInfo.txt", ios::app); txtOut << courseNumber << "" << courseName << "" << credit << "" << jobNumberOfTeacher << endl; txtOut.close(); }//从文件中读取课程信息 void classInfo::readFromTxtFileC(int num){fstream txtIn("classBasicInfo.txt", ios::in); string temp; int line = 1; if(num == 1)txtIn >> courseNumber >> courseName >> credit >> jobNumberOfTeacher ; else{while(getline(txtIn, temp, '\n')){line++; if(line == num)txtIn >> courseNumber >> courseName >> credit >> jobNumberOfTeacher ; }}txtIn.close(); }
classInfo.h
#ifndef CLASSINFO_H#define CLASSINFO_H#include using namespace std; classclassInfo{protected:string courseNumber; //课程编号string courseName; //课程名称double credit; //学分string jobNumberOfTeacher; //任课老师工号public:friend class systemAdmin; classInfo(); //默认构造函数void setClassInfo(string courseNumber, string courseName, double credit, string jobNumberOfTeacher); //设置课程信息 void searchBasicInfo() const; //输出课程信息string getJobNumberOfTeacher() const; //获取任课教师工号string getCourseNumber() const; //获取课程编号string getCourseName() const; //获取课程名称double getCredit() const; //获取学分 void writeToTxtFileC() const; //向文件中写入数据 void readFromTxtFileC(int); //从文件中读取数据 }; #endif // !CLASSINFO_H
user.cpp
#include "user.h"#include #includeusing namespace std; //构造函数初始化数据 user::user() {password = "zal222"; //初始密码为zal222name = ""; sex = ""; birth = ""; politicStatus = ""; address = ""; }//修改初始密码 void user::changePassword(){string new_password, original_password, new_password1; cout < > original_password; while (password != original_password){cout << "原密码输入错误,请重新输入: "; cin >> original_password; }while (password == original_password){cout << "请输入新密码: "; cin >> new_password; cout << "请再次输入新密码: "; cin >> new_password1; if (new_password == new_password1){password = new_password; break; }elsecout << "两次次新密码不一致,请重新输入!" << endl; }cout << "\t\t\t\t\t你的密码修改成功,请重新登录!" << endl; }//返回密码string user::getPassword() const//函数不可以修改class的成员 {return password; }//返回用户名(管理员) string user::getUserName() const//函数不可以修改class的成员{return userName; }
user.h
#ifndef USER_H#define USER_H#include using namespace std; class user{public:string password; //密码最长为15位 string userName; //用于管理员的用户名 string name; //姓名 string sex; //性别 string birth; //生日 string politicStatus; //政治面貌 string address; //地址 user(); void changePassword(); //修改初始密码 string getPassword() const; //返回密码string getUserName() const; //返回用户名(管理员) //由于教务系统的特殊性,不用自己注册账号 }; #endif
student.cpp
#include #include#include #include "student.h"using namespace std; //构造函数 student::student() {studentNumber = ""; majorAndClass = ""; }//设置学生基础信息void student::setStudentBasicInfo(string new_studentNumber, string new_name, string new_sex, string new_majorAndClass, string new_birth, string new_politicStatus, string new_address){studentNumber = new_studentNumber; name = new_name; sex = new_sex; majorAndClass = new_majorAndClass; birth = new_birth; politicStatus = new_politicStatus; address = new_address; }//查询基础信息void student::searchBasicInfo() const{cout << endl << "\t学号:" << studentNumber << "" << "姓名:" << name << "" << "性别:" << sex << "" << "专业班级:" << majorAndClass << "" << "生日:" << birth << "" << "政治面貌:" << politicStatus << "" << "家庭地址:" << address << endl; }//返回学号string student::getStudentNumber() const{return studentNumber; }//返回姓名 string student::getName(){return name; }//向文件中写入数据 void student:: writeToTxtFileS() const{ofstream txtOut("studentBasicInfo.txt", ios::app); txtOut << studentNumber << "" << password << "" << name << "" << sex << "" << majorAndClass << "" << birth << "" << politicStatus << "" << address << endl; txtOut.close(); }//从文件中读取数据 void student::readFromTxtFileS(int num){fstream txtIn("studentBasicInfo.txt", ios::in); string temp; int line = 1; if(num == 1)txtIn >> studentNumber >> password >> name >> sex >> majorAndClass >> birth >> politicStatus >> address; else{while(getline(txtIn, temp, '\n')){line++; if(line == num)txtIn >> studentNumber >> password >> name >> sex >> majorAndClass >> birth >> politicStatus >> address; }}txtIn.close(); }
student.h
#ifndef STUDENT_H#define STUDENT_H#include "user.h"#include using namespace std; class student : public user{public:string studentNumber; //学号,学生用户名 string majorAndClass; //专业班级student(); //默认构造函数void setStudentBasicInfo(string studentNumber, string name, string sex, string majorAndClass, string birth, string politicStatus, string address); //设置学生基础信息void searchBasicInfo() const; //查询基础信息string getStudentNumber() const; //返回学号string getName(); void writeToTxtFileS() const; //向文件中写入数据 void readFromTxtFileS(int); //从文件中读取数据 }; #endif
teacher.cpp
#include "teacher.h"#include#include using namespace std; //构造函数 teacher::teacher(){user(); //调用构造函数 jobNumber = ""; college = ""; }//录入学生基本信息 void teacher::setTeacherBasicInfo(string jobNumber, string name, string sex, string college, string birth, string politicStatus, string scale){this->name = name; this->sex = sex; this->birth = birth; this->politicStatus = politicStatus; this->scale = scale; this->jobNumber = jobNumber; this->college = college; }//返回教师工号 string teacher::getJobNumber() const{return jobNumber; }//查找教师基本信息 void teacher::searchBasicInfo(){cout << endl; cout << "\t工号:" << jobNumber << "姓名:" << name << "性别:" << sex << "学院:" << college << "生日:" << birth << "政治面貌:" << politicStatus << "职称:" << scale << endl; cout << endl; }//向文件中写入数据 void teacher::writeToTxtFileT() const{ofstream txtOut("teacherBasicInfo.txt", ios::app); txtOut << jobNumber << "" << password << "" << name << "" << sex << "" << college << "" << birth << "" << politicStatus << "" << scale << endl; txtOut.close(); }//从文件中读取数据 void teacher::readFromTxtFileT(int num){fstream txtIn("teacherBasicInfo.txt", ios::in); string temp; int line = 1; if(num == 1)txtIn >> jobNumber >> password >> name >> sex >> college >> birth >> politicStatus >> scale; else{while(getline(txtIn, temp, '\n')){line++; if(line == num)txtIn >> jobNumber >> password >> name >> sex >> college >> birth >> politicStatus >> scale; }}txtIn.close(); }
teacher.h
#include"user.h"#include using namespace std; class teacher :publicuser//C++继承 {protected:string jobNumber; //工号string college; //学院string scale; //职称 public:teacher(); string getJobNumber() const; void writeToTxtFileT() const; //向文件中写入数据 void readFromTxtFileT(int); //从文件中读取数据 void setTeacherBasicInfo(string jobNumber, string name, string sex, string college, string birth, string politicStatus, string scale); //设置教师基础信息void searchBasicInfo(); //查询基本信息};
main.cpp
#include#include //C++文件流 #include #include "user.h"#include "student.h"#include "teacher.h"#include "gradeInfo.h"#include "classInfo.h"#include "systemAdmin.h" using namespace std; string userName,password,tempCourseNumber,//用于输入课程编号的地方 tempStudentNumber,//用于输入学号的地方 tempJobNumber; //用于输入工号的地方 //读写删学生文件数据 void writeDataS(student * s, int studentNum); void readDataS(student * s, int studentNum); void deleteStudentTxtInfo(); // 读写删老师文件数据 void writeDataT(teacher * t, int teachertNum); void readDataT(teacher * t, int teacherNum); void deleteTeacherTxtInfo(); //写入文件 void writeDataG(gradeInfo * g, int courseNum); void readDataG(gradeInfo * g, int courserNum); void writeDataA(systemAdmin * a, int systemAdminNum); void readDataA(systemAdmin * a, int systemAdminNum); void deleteSystemAdminTxtInfo(); void writeDataC(classInfo * c, int courseNum); void readDataC(classInfo * c, int courseNum); void deleteCourseTxtInfo(); //文件写入汇总信息 //在文件中写入学生数目,课程数目,老师数目,系统管理原数目 void writeAllNumToFile(int studentNum, int courseNum, int teacherNum, int systemAdminNum); //从文件读取学生数目,课程数目,老师数目,系统管理原数目 void readAllNumFromFile(int& studentNum, int& courseNum, int& teacherNum, int& systemAdminNum); //展示各登录 界面 void displayLoginForm(); //登录界面展示 void studentLoginForm(); //学生功能界面展示 void teacherLoginForm(); //教师功能界面展示 void systemAdminLoginForm(); //管理员功能界面展示 void studentBasicInfoManageForm(); //学生信息管理界面展示 void teacherBasicInfoManageForm(); //老师信息管理界面展示 void classBasicInfoManageForm(); //信息管理界面展示 void studentGradeSearchForm(); //学生成绩界面 void studentBasicInfoSearchForm(); //学生成绩查询界面 void teacherBasicInfoSearchForm(); //教师信息查询界面 void classBasicInfoSearchForm(); //课程信息查询界面//返回界面 void enter0ToBack(int& num); //按照课程信息查找成绩 void studentSearchGrade(classInfo * c, gradeInfo * g, int courseNum, int& flag3); //按照课程编号和学生学号查询学生信息 void teacherSearchSingleGrade(classInfo * c, gradeInfo * g, int courseNum, int& flag3, int& flag5); //查询所有课程 void teacherSearchAllGrade(classInfo * c, gradeInfo * g, student * s, int courseNum, int studentNum, int& flag3); void teacherIuputGrade(classInfo * c, gradeInfo * g, int courseNum, int& flag3); void systemAdminInputSBasicInfo(student * s, systemAdmin * a, int& studentNum, int& courseNum, int& teacherNum, int& systemAdminNum, int i); void systemAdminSearchSingleSBasicInfo(student * s, int studentNum, int& flag7); void systemAdminSearchAllSBasicInfo(student * s, int studentNum); void systemAdminDeleteSBasicInfo(systemAdmin * a, student * s, int& studentNum, int& courseNum, int& teacherNum, int& systemAdminNum, int& flag7, int i); void systemAdminInputTBasicInfo(teacher * t, systemAdmin * a, int& studentNum, int& courseNum, int& teacherNum, int& systemAdminNum, int i); void systemAdminSearchSingleTBasicInfo(teacher * t, int teacherNum, int& flag7); void systemAdminSearchAllTBasicInfo(teacher * t, int teacherNum); void systemAdminDeleteTBasicInfo(systemAdmin * a, teacher * t, int& studentNum, int& courseNum, int& teacherNum, int& systemAdminNum, int& flag7, int i); //录入学生信息 void systemAdminInputCBasicInfo(classInfo * c, systemAdmin * a, int& studentNum, int& courseNum, int& teacherNum, int& systemAdminNum, int i); //查询学生信息 void systemAdminSearchSingleCBasicInfo(classInfo * c, int courseNum, int& flag7); //展示录入的学生信息 void systemAdminSearchAllCBasicInfo(classInfo * c, int courseNum); //删除管理基本信息 void systemAdminDeleteCBasicInfo(systemAdmin * a, classInfo * c, int& studentNum, int& courseNum, int& teacherNum, int& systemAdminNum, int& flag7, int i); //学生选课信息 void generateSSelectionInfo(classInfo * c, gradeInfo * f, student * s, int courseNum, int studentNum); //判断老师是否带这门课 bool isTeacherClass(classInfo * c, string courseNumber, string userName, int courseNum); //判断学生是否在这门课中 bool isInThisCourse(gradeInfo * g, string courseNumber, string studentNumber, int courseNum); int main(){int flag[10]= {0},studentNum = 5,courseNum = 3,teacherNum = 2,systemAdminNum = 1; //writeAllNumToFile(studentNum, courseNum, teacherNum, systemAdminNum); readAllNumFromFile(studentNum, courseNum, teacherNum, systemAdminNum); student * s = new student[studentNum + 200]; teacher * t = new teacher[teacherNum + 200]; gradeInfo * g = new gradeInfo[courseNum + 200]; systemAdmin * a = new systemAdmin[systemAdminNum + 200]; classInfo * c = new classInfo[courseNum + 200]; while (flag[0] == 0)//flag[0]用于返回登陆界面 {readDataG(g, courseNum); readDataT(t, teacherNum); readDataS(s, studentNum); readDataA(a, systemAdminNum); readDataC(c, courseNum); displayLoginForm(); for (int i = 0; i < 10; i++)flag[i] = 0; //重新开始登陆,标记值需要返0,否则会产生错误 for (int i = 0; i < studentNum; i++){if (userName == s[i].getStudentNumber() && password == s[i].getPassword()){while(flag[1] == 0)//flag[1]用于返回功能管理界面 {flag[3] = 0; //判定学生输入的课程编码是否是他的上课编码 studentLoginForm(); cin >> flag[0]; switch (flag[0]){case 1:s[i].searchBasicInfo(); enter0ToBack(flag[1]); break; case 2:studentSearchGrade(c, g, courseNum, flag[3]); enter0ToBack(flag[1]); break; case 3:s[i].changePassword(); deleteStudentTxtInfo(); writeDataS(s, studentNum); flag[0] = 0; flag[1] = 1; break; case 4:flag[0] = 0; flag[1] = 1; break; case 5:flag[0] = 1; flag[1] = 1; break; default:cout << "数据错误,请重新输入数字!!!" << endl; }} }elsecontinue; flag[2]++; //flag[2]用于检测密码正误 ,若一直为0,则说明未进入 功能界面,也就是无任何匹配的账号 }for (int i = 0; i < teacherNum; i++){if (userName == t[i].getJobNumber() && password == t[i].getPassword()){while(flag[1] == 0)//flag[1]用于返回功能管理界面 {flag[3] = 0; //判定教师输入的课程编码是否是他的教学课程 flag[5] = 0; //判定学生输入的课程编码是否是他的上课编码 flag[4] = 0; teacherLoginForm(); cin >> flag[0]; switch (flag[0]){case 1:t[i].searchBasicInfo(); enter0ToBack(flag[1]); break; case 2:while(flag[4] == 0)//用于第三层小循环 {studentGradeSearchForm(); cin >> flag[4]; switch(flag[4]){ case 1:teacherSearchSingleGrade(c, g, courseNum, flag[3], flag[5]); enter0ToBack(flag[4]); break; case 2: //输出全体学生成绩teacherSearchAllGrade(c, g, s, courseNum, studentNum, flag[3]); enter0ToBack(flag[4]); break; case 3://返回教师功能界面flag[4] = 1; flag[1] = 0; break; case 4:flag[4] = 1; flag[1] = 1; flag[0] = 0; break; case 5://退出程序 flag[4] = 1; flag[1] = 1; flag[0] = 1; break; default:cout << "数据错误,请重新输入数字!!!" << endl; }}break; case 3:teacherIuputGrade(c, g, courseNum, flag[3]); enter0ToBack(flag[1]); break; case 4:t[i].changePassword(); deleteTeacherTxtInfo(); writeDataT(t, teacherNum); flag[0] = 0; flag[1] = 1; break; case 5:flag[0] = 0; flag[1] = 1; break; case 6:flag[0] = 1; flag[1] = 1; break; default:cout << "数据错误,请重新输入数字!!" << endl; }} }elsecontinue; flag[2]++; //flag[2]用于检测密码正误 ,若一直为0,则说明未进入 功能界面,也就是无任何匹配的账号 }for (int i = 0; i < systemAdminNum; i++){if (userName == a[i].getUserName() && password == a[i].getPassword()){while(flag[1] == 0)//flag[1]用于返回功能管理界面 {flag[4] = 0; flag[7] = 0; systemAdminLoginForm(); cin >> flag[0]; switch (flag[0]){case 1:while(flag[4] == 0)//用于第三层小循环 {flag[7] = 0; flag[6] = 0; studentBasicInfoManageForm(); cin >> flag[0]; switch(flag[0]){ case 1:systemAdminInputSBasicInfo(s, a, studentNum, courseNum, teacherNum, systemAdminNum, i); enter0ToBack(flag[4]); break; case 2:while(flag[6] == 0){flag[7] = 0; studentBasicInfoSearchForm(); cin >> flag[0]; switch(flag[0]){case 1:systemAdminSearchSingleSBasicInfo(s, studentNum, flag[7]); enter0ToBack(flag[6]); break; case 2:systemAdminSearchAllSBasicInfo(s, studentNum); enter0ToBack(flag[6]); break; case 3:flag[6] = 1; flag[4] = 0; break; case 4:flag[6] = 1; flag[4] = 1; flag[1] = 1; flag[0] = 0; break; case 5:flag[6] = 1; flag[4] = 1; flag[1] = 1; flag[0] = 1; break; default:cout << "数据错误,请重新输入数字!!!" << endl; }}break; case 3: systemAdminDeleteSBasicInfo(a, s, studentNum, courseNum, teacherNum, systemAdminNum, flag[7], i); enter0ToBack(flag[4]); break; case 4:flag[4] = 1; flag[1] = 0; break; case 5:flag[4] = 1; flag[1] = 1; flag[0] = 1; break; default:cout << "数据错误,请重新输入!!!" << endl; }}break; case 2:while(flag[4] == 0)//用于第三层小循环 {flag[7] = 0; flag[6] = 0; teacherBasicInfoManageForm(); cin >> flag[0]; switch(flag[0]){ case 1:systemAdminInputTBasicInfo(t, a, studentNum, courseNum, teacherNum, systemAdminNum, i); enter0ToBack(flag[4]); break; case 2:while(flag[6] == 0){flag[7] = 0; teacherBasicInfoSearchForm(); cin >> flag[0]; switch(flag[0]){case 1:systemAdminSearchSingleTBasicInfo(t, teacherNum, flag[7]); enter0ToBack(flag[6]); break; case 2:systemAdminSearchAllTBasicInfo(t, teacherNum); enter0ToBack(flag[6]); break; case 3:flag[6] = 1; flag[4] = 0; break; case 4:flag[6] = 1; flag[4] = 1; flag[1] = 1; flag[0] = 0; break; case 5:flag[6] = 1; flag[4] = 1; flag[1] = 1; flag[0] = 1; break; default:cout << "数据错误,请重新输入数字!!!" << endl; }}break; case 3: systemAdminDeleteTBasicInfo(a, t, studentNum, courseNum, teacherNum, systemAdminNum, flag[7], i); enter0ToBack(flag[4]); break; case 4:flag[4] = 1; flag[1] = 0; break; case 5:flag[4] = 1; flag[1] = 1; flag[0] = 1; break; default:cout << "数据错误,请重新输入!!!" << endl; }}break; case 3:while(flag[4] == 0)//用于第三层小循环 {flag[7] = 0; flag[6] = 0; classBasicInfoManageForm(); cin >> flag[0]; switch(flag[0]){ case 1:systemAdminInputCBasicInfo(c, a, studentNum, courseNum, teacherNum, systemAdminNum, i); enter0ToBack(flag[4]); break; case 2:while(flag[6] == 0){flag[7] = 0; classBasicInfoSearchForm(); cin >> flag[0]; switch(flag[0]){case 1:systemAdminSearchSingleCBasicInfo(c, courseNum, flag[7]); enter0ToBack(flag[6]); break; case 2:systemAdminSearchAllCBasicInfo(c, courseNum); enter0ToBack(flag[6]); break; case 3:flag[6] = 1; flag[4] = 0; break; case 4:flag[6] = 1; flag[4] = 1; flag[1] = 1; flag[0] = 0; break; case 5:flag[6] = 1; flag[4] = 1; flag[1] = 1; flag[0] = 1; break; default:cout << "数据错误,请重新输入数字!!!" << endl; }}break; case 3: systemAdminDeleteCBasicInfo(a, c, studentNum, courseNum, teacherNum, systemAdminNum, flag[7], i); enter0ToBack(flag[4]); break; case 4:flag[4] = 1; flag[1] = 0; break; case 5:flag[4] = 1; flag[1] = 1; flag[0] = 1; break; default:cout << "数据错误,请重新输入!!!" << endl; }}break; case 4:generateSSelectionInfo(c, g, s, courseNum, studentNum); enter0ToBack(flag[1]); break; case 5:a[i].changePassword(); deleteSystemAdminTxtInfo(); writeDataA(a, systemAdminNum); flag[0] = 0; flag[1] = 1; break; case 6:flag[0] = 0; flag[1] = 1; break; case 7:flag[0] = 1; flag[1] = 1; break; default:cout << "数据错误,请重新输入!!!" << endl; }} }elsecontinue; flag[2]++; //flag[2]用于检测密码正误 ,若一直为0,则说明未进入 功能界面,也就是无任何匹配的账号 }if (flag[2] == 0)//flag[2]用于检测密码正误 cout << "用户名和密码输入错误,请重新登录!" << endl; }system("pause"); return 0; }//登录界面展示 void displayLoginForm(){cout << endl; system("color 2f"); cout << "************************************************************************************************************************" << endl; cout << "*\t\t\t\t\t教务管理系统登陆界面\t\t\t\t\t\t*" << endl; cout << "************************************************************************************************************************" << endl; cout << "\t\t\t\t\t\t用户名:"; cin >> userName; cout << "\t\t\t\t\t\t密码:"; cin >> password; }//教师功能界面展示 void teacherLoginForm(){cout << endl; cout << "************************************************************************************************************************" << endl; cout << "*\t\t\t\t\t欢迎来到教师功能界面\t\t\t\t\t\t*" << endl; cout << "************************************************************************************************************************" << endl; cout << "\t\t\t\t\t\t1.查询基本信息" << endl; cout << "\t\t\t\t\t\t2.查询成绩信息" << endl; cout << "\t\t\t\t\t\t3.录入学生成绩" << endl; cout << "\t\t\t\t\t\t4.修改密码" << endl; cout << "\t\t\t\t\t\t5.返回登陆界面" << endl; cout << "\t\t\t\t\t\t6.退出" << endl; cout << "输入对应的数字进行相关操作: " ; }//管理员功能界面展示 void systemAdminLoginForm(){cout << endl; cout << "************************************************************************************************************************" << endl; cout << "*\t\t\t\t\t欢迎来到管理员功能界面\t\t\t\t\t\t*" << endl; cout << "************************************************************************************************************************" << endl; cout << "\t\t\t\t\t\t1.管理学生基本信息" << endl; cout << "\t\t\t\t\t\t2.管理教师基本信息" << endl; cout << "\t\t\t\t\t\t3.管理课程信息" << endl; cout << "\t\t\t\t\t\t4.生成学生选课信息" << endl; cout << "\t\t\t\t\t\t5.修改密码" << endl; cout << "\t\t\t\t\t\t6.返回登陆界面" << endl; cout << "\t\t\t\t\t\t7.退出" << endl; cout << "输入对应的数字进行相关操作: "; }//学生功能界面展示 void studentLoginForm(){cout << endl; cout << "************************************************************************************************************************" << endl; cout << "*\t\t\t\t\t欢迎来到学生功能界面\t\t\t\t\t\t*" << endl; cout << "************************************************************************************************************************" << endl; cout << "\t\t\t\t\t\t1.查询基本信息" << endl; cout << "\t\t\t\t\t\t2.查询成绩信息" << endl; cout << "\t\t\t\t\t\t3.修改密码" << endl; cout << "\t\t\t\t\t\t4.返回登陆界面" << endl; cout << "\t\t\t\t\t\t5.退出" << endl; cout << "输入对应的数字进行相关操作: " ; }//学生信息管理界面展示 void studentBasicInfoManageForm(){cout << endl; cout << "************************************************************************************************************************" << endl; cout << "*\t\t\t\t\t欢迎来到学生信息管理界面\t\t\t\t\t*" << endl; cout << "************************************************************************************************************************" << endl; cout << "\t\t\t\t\t\t1.录入学生信息" << endl; cout << "\t\t\t\t\t\t2.查询学生信息" << endl; cout << "\t\t\t\t\t\t3.删除学生信息" << endl; cout << "\t\t\t\t\t\t4.返回管理员功能界面" << endl; cout << "\t\t\t\t\t\t5.退出" << endl; cout << "输入对应的数字进行相关操作: " ; }// 教师信息管理界面 void teacherBasicInfoManageForm(){cout << endl; cout << "************************************************************************************************************************" << endl; cout << "*\t\t\t\t\t欢迎来到教师信息管理界面\t\t\t\t\t*" << endl; cout << "************************************************************************************************************************" << endl; cout << "\t\t\t\t\t\t1.录入教师信息" << endl; cout << "\t\t\t\t\t\t2.查询师信息查询" << endl; cout << "\t\t\t\t\t\t3.教师信息删除" << endl; cout << "\t\t\t\t\t\t4.返回管理员功能界面" << endl; cout << "\t\t\t\t\t\t5.退出" << endl; cout << "输入对应的数字进行相关操作: " ; }//程信息管理界面 void classBasicInfoManageForm(){cout << endl; cout << "************************************************************************************************************************" << endl; cout << "*\t\t\t\t\t欢迎来到课程信息管理界面\t\t\t\t\t*" << endl; cout << "************************************************************************************************************************" << endl; cout << "\t\t\t\t\t\t1.录入课程信息" << endl; cout << "\t\t\t\t\t\t2.查询课程信息" << endl; cout << "\t\t\t\t\t\t3.删除课程信息" << endl; cout << "\t\t\t\t\t\t4.返回管理员功能界面" << endl; cout << "\t\t\t\t\t\t5.退出" << endl; cout << "输入对应的数字进行相关操作: "; }//学生成绩查询界面 void studentGradeSearchForm(){cout << endl; cout << "************************************************************************************************************************" << endl; cout << "*\t\t\t\t\t学生成绩查询界面\t\t\t\t\t\t*" << endl; cout << "************************************************************************************************************************" << endl; cout << "\t\t\t\t\t\t1.查询单个学生成绩" << endl; cout << "\t\t\t\t\t\t2.查询全体学生成绩" << endl; cout << "\t\t\t\t\t\t3.返回教师功能界面" << endl; cout << "\t\t\t\t\t\t4.返回登陆界面" << endl; cout << "\t\t\t\t\t\t5.退出" << endl; cout << "输入对应的数字进行相关操作: "; }//学生成绩查询界面 void studentBasicInfoSearchForm(){cout << endl; cout << "************************************************************************************************************************" << endl; cout << "*\t\t\t\t\t欢迎来到学生信息查询界面\t\t\t\t\t*" << endl; cout << "************************************************************************************************************************" << endl; cout << "\t\t\t\t\t\t1.查询单个学生信息" << endl; cout << "\t\t\t\t\t\t2.生成全体学生信息" << endl; cout << "\t\t\t\t\t\t3.返回学生信息管理界面" << endl; cout << "\t\t\t\t\t\t4.返回登陆界面" << endl; cout << "\t\t\t\t\t\t5.退出" << endl; cout << "输入对应的数字进行相关操作: "; }//教师信息查询界面 void teacherBasicInfoSearchForm(){cout << endl; cout << "************************************************************************************************************************" << endl; cout << "*\t\t\t\t\t欢迎来到教师信息查询界面\t\t\t\t\t*" << endl; cout << "************************************************************************************************************************" << endl; cout << "\t\t\t\t\t\t1.查询单个教师信息" << endl; cout << "\t\t\t\t\t\t2.生成全体教师信息" << endl; cout << "\t\t\t\t\t\t3.返回教师信息管理界面" << endl; cout << "\t\t\t\t\t\t4.返回登陆界面" << endl; cout << "\t\t\t\t\t\t5.退出" << endl; cout << "输入对应的数字进行相关操作: "; }//课程信息查询界面 void classBasicInfoSearchForm(){cout << endl; cout << "************************************************************************************************************************" << endl; cout << "*\t\t\t\t\t欢迎来到课程信息查询界面\t\t\t\t\t*" << endl; cout << "************************************************************************************************************************" << endl; cout << "\t\t\t\t\t\t1.查询单个课程信息" << endl; cout << "\t\t\t\t\t\t2.生成全体课程信息" << endl; cout << "\t\t\t\t\t\t3.返回课程信息管理界面" << endl; cout << "\t\t\t\t\t\t4.返回登陆界面" << endl; cout << "\t\t\t\t\t\t5.退出" << endl; cout << "输入对应的数字进行相关操作: "; }//学生信息保存到文件中 void writeDataS(student * s, int studentNum){for (int i = 0; i < studentNum; i++){s[i].writeToTxtFileS(); }}//读取学生信息 voidreadDataS(student * s, int studentNum){for (int i = 0; i < studentNum; i++){s[i].readFromTxtFileS(i + 1); }}//删除学生信息 void deleteStudentTxtInfo(){ofstream output("studentBasicInfo.txt"); output.close(); }//输入老师信息 void writeDataT(teacher * t, int teacherNum){for (int i = 0; i < teacherNum; i++){t[i].writeToTxtFileT(); }}//读取老师信息 voidreadDataT(teacher * t, int teacherNum){for (int i = 0; i < teacherNum; i++){t[i].readFromTxtFileT(i + 1); }}//删除老师信息 void deleteTeacherTxtInfo(){ofstream output("teacherBasicInfo.txt"); output.close(); }//写入管理信息 void writeDataG(gradeInfo * g, int courseNum){for (int i = 0; i < courseNum; i++){g[i].writeToTxtFileG(i); }}//读取管理信息 voidreadDataG(gradeInfo * g, int courseNum){for (int i = 0; i < courseNum; i++){g[i].readFromTxtFileG(i); }}//文件写入管理密码 void writeDataA(systemAdmin * a, int systemAdminNum){for (int i = 0; i < systemAdminNum; i++){a[i].writeToTxtFileA(); }}//读取管理密码信息 void readDataA(systemAdmin * a, int systemAdminNum){for (int i = 0; i < systemAdminNum; i++){a[i].readFromTxtFileA(i + 1); }}//管理员密码文件 void deleteSystemAdminTxtInfo(){ofstream output("systemAdminBasicInfo.txt"); output.close(); }//写入课程信息 void writeDataC(classInfo * c, int courseNum){for (int i = 0; i < courseNum; i++){c[i].writeToTxtFileC(); }}//读取课程信息 void readDataC(classInfo * c, int courseNum){for (int i = 0; i < courseNum; i++){c[i].readFromTxtFileC(i + 1); }}//删除课程信息 void deleteCourseTxtInfo(){ofstream output("classBasicInfo.txt"); output.close(); }//在文件中写入学生数目,课程数目,老师数目,系统管理原数目 void writeAllNumToFile(int studentNum, int courseNum, int teacherNum, int systemAdminNum){ofstream output("allNum.txt"); output << studentNum << "" << courseNum << "" << teacherNum << "" << systemAdminNum << endl; output.close(); }//从文件读取学生数目,课程数目,老师数目,系统管理原数目 void readAllNumFromFile(int& studentNum, int& courseNum, int& teacherNum, int& systemAdminNum){ifstream input("allNum.txt"); input >> studentNum >> courseNum >> teacherNum >> systemAdminNum; input.close(); }//返回上虞界面; void enter0ToBack(int& num) {cout << "按0键返回上一层: "; cin >> num; while(num != 0){cout << "指令无效,请输入0返回上一层: "; cin >> num; }}//按照课程信息查找成绩 void studentSearchGrade(classInfo * c, gradeInfo * g, int courseNum, int& flag3){cout << endl << "请输入课程编号来查询相应课程成绩: "; cin >> tempCourseNumber ; for (int j = 0; j < courseNum; j++)//多层循环不可通用一个变量 {if (tempCourseNumber == g[j].getCourseNumber() && isInThisCourse(g, tempCourseNumber, userName, courseNum)){cout << endl << "\t\t课程编号:" << tempCourseNumber << "课程名称:" << c[j].getCourseName() << "课程学分:" << c[j].getCredit(); g[j].searchSingleGrade(userName); flag3++; }}if (flag3 == 0)cout << "课程编号输入错误,您无此课程!!!" << endl; }//按照课程编号和学生学号查询学生信息 void teacherSearchSingleGrade(classInfo * c, gradeInfo * g, int courseNum, int& flag3, int& flag5){cout << endl; cout << "请输入您要查询的课程的课程编号: "; cin >> tempCourseNumber; for (int j = 0; j < courseNum; j++){if (tempCourseNumber == c[j].getCourseNumber() && userName == c[j].getJobNumberOfTeacher()){cout << "请输入您要查询学生的学号: "; cin >> tempStudentNumber; if (isInThisCourse(g, tempCourseNumber, tempStudentNumber, courseNum)) {cout << endl; cout << "\t\t课程编号:" << tempCourseNumber << "课程名称:" << c[j].getCourseName() << "课程学分:" << c[j].getCredit(); g[j].searchSingleGrade(tempStudentNumber); flag5++; }flag3++; }}if (flag3 == 0)cout << "输入课程编码错误,您没有这堂课,请重新进行操作!"<< endl; if (flag3 != 0 && flag5 == 0)cout << "您没有学生是这个学号,请重新操作!!!" << endl; }//查询所有课程 void teacherSearchAllGrade(classInfo * c, gradeInfo * g, student * s, int courseNum, int studentNum, int& flag3) {cout << endl; cout << "请输入您要查询的课程的课程编码: "; cin >> tempCourseNumber; cout << endl; for (int j = 0; j < courseNum; j++){if (tempCourseNumber == c[j].getCourseNumber() && userName == c[j].getJobNumberOfTeacher()){cout << "课程编号: " << tempCourseNumber << "课程名称: " << c[j].getCourseName() << "课程学分: " << c[j].getCredit() << endl; g[j].searchAllGrade(s, studentNum); flag3++; }}if (flag3 == 0)cout << "输入课程编码错误,您没有这堂课,请重新进行操作!"<< endl; }//输入课程 void teacherIuputGrade(classInfo * c, gradeInfo * g, int courseNum, int& flag3){cout << endl; cout << "请输入课程编号: "; cin >> tempCourseNumber; cout << endl; for (int j = 0; j < courseNum; j++){if (tempCourseNumber == c[j].getCourseNumber() && userName == c[j].getJobNumberOfTeacher()){g[j].setGrade(); writeDataG(g, courseNum); flag3++; }}if (flag3 == 0)cout << "输入课程编码错误,您没有这堂课,请重新进行操作!"<< endl; }//录入学生信息 void systemAdminInputSBasicInfo(student * s, systemAdmin * a, int& studentNum, int& courseNum, int& teacherNum, int& systemAdminNum, int i){cout << "请开始录入学生信息: " << endl; a[i].inputStudentBasicInfo(s, studentNum); deleteStudentTxtInfo(); writeDataS(s, studentNum); writeAllNumToFile(studentNum, courseNum, teacherNum, systemAdminNum); }//查询学生信息 void systemAdminSearchSingleSBasicInfo(student * s, int studentNum, int& flag7){cout << "请输入您要查询基本信息的学生的学号: "; cin >> tempStudentNumber; for (int j = 0; j < studentNum; j++) if (tempStudentNumber == s[j].getStudentNumber()){s[j].searchBasicInfo(); flag7 ++; }if (flag7 == 0)cout << "抱歉,您输入的学号不存在,请仔细校对后再重新查询!" << endl; } void systemAdminSearchAllSBasicInfo(student * s, int studentNum){cout << "如下是所有学生的基本信息: " << endl; for (int i = 0; i < studentNum; i++){s[i].searchBasicInfo(); }cout << endl; }//删除学生的信息 void systemAdminDeleteSBasicInfo(systemAdmin * a, student * s, int& studentNum, int& courseNum, int& teacherNum, int& systemAdminNum, int& flag7, int i){cout << "请输入要删除信息的学生的学号: "; cin >> tempStudentNumber; for (int j = 0; j < studentNum; j++){if (tempStudentNumber == s[j].getStudentNumber()){a[i].deleteStudentBasicInfo(s, tempStudentNumber, studentNum); deleteStudentTxtInfo(); writeDataS(s, studentNum); writeAllNumToFile(studentNum, courseNum, teacherNum, systemAdminNum); cout << "学生信息删除成功!!!" << endl; flag7++; }}if (flag7 == 0)cout << "您输入的学号不存在,请重新操作!!!" << endl; }//录入教师信息 void systemAdminInputTBasicInfo(teacher * t, systemAdmin * a, int& studentNum, int& courseNum, int& teacherNum, int& systemAdminNum, int i){cout << "请开始录入教师信息: " << endl; a[i].inputTeacherBasicInfo(t, teacherNum); deleteTeacherTxtInfo(); writeDataT(t, teacherNum); writeAllNumToFile(studentNum, courseNum, teacherNum, systemAdminNum); }// 查询教师基本信息 void systemAdminSearchSingleTBasicInfo(teacher * t, int teacherNum, int& flag7){cout << "请输入您要查询基本信息的教师工号: "; cin >> tempJobNumber; for (int j = 0; j < teacherNum; j++) if (tempJobNumber == t[j].getJobNumber()){t[j].searchBasicInfo(); flag7 ++; }if (flag7 == 0)cout << "抱歉,您输入的工号不存在,请仔细校对后再重新查询!" << endl; }//展示所有教师的基本信息 void systemAdminSearchAllTBasicInfo(teacher * t, int teacherNum){cout << "如下是所有教师的基本信息: " << endl; for (int i = 0; i < teacherNum; i++){t[i].searchBasicInfo(); }}//删除某教师的基本信息 void systemAdminDeleteTBasicInfo(systemAdmin * a, teacher * t, int& studentNum, int& courseNum, int& teacherNum, int& systemAdminNum, int& flag7, int i){cout << "请输入要删除信息的教师的工号: "; cin >> tempJobNumber; for (int j = 0; j < teacherNum; j++){if (tempJobNumber == t[j].getJobNumber()){a[i].deleteTeacherBasicInfo(t, tempJobNumber, teacherNum); deleteTeacherTxtInfo(); writeDataT(t, teacherNum); writeAllNumToFile(studentNum, courseNum, teacherNum, systemAdminNum); cout << "删除成功!!!" << endl; flag7++; }}if (flag7 == 0)cout << "您输入的教师工号不存在,请重新操作!!!" << endl; }//录入课程信息 void systemAdminInputCBasicInfo(classInfo * c, systemAdmin * a, int& studentNum, int& courseNum, int& teacherNum, int& systemAdminNum, int i){cout << "请开始录入课程信息: " << endl; a[i].inputClassBasicInfo(c, courseNum); deleteCourseTxtInfo(); writeDataC(c, courseNum); writeAllNumToFile(studentNum, courseNum, teacherNum, systemAdminNum); }//查询课程基本信息 void systemAdminSearchSingleCBasicInfo(classInfo * c, int courseNum, int& flag7){cout << "请输入您要查询基本信息的课程的课程编号: "; cin >> tempCourseNumber; for (int j = 0; j < courseNum; j++) if (tempCourseNumber == c[j].getCourseNumber()){c[j].searchBasicInfo(); flag7 ++; }if (flag7 == 0)cout << "抱歉,您输入的课程编号不存在,请仔细校对后再重新查询!" << endl; }//展示所有课程的基本信息 void systemAdminSearchAllCBasicInfo(classInfo * c, int courseNum){cout << "如下是所有课程的基本信息: " << endl; for (int i = 0; i < courseNum; i++){c[i].searchBasicInfo(); }cout << endl; }//删除某课程信息 void systemAdminDeleteCBasicInfo(systemAdmin * a, classInfo * c, int& studentNum, int& courseNum, int& teacherNum, int& systemAdminNum, int& flag7, int i){cout << "请输入要删除信息的课程的课程编号: "; cin >> tempCourseNumber; for (int j = 0; j < courseNum; j++){if (tempCourseNumber == c[j].getCourseNumber()){a[i].deleteClassBasicInfo(c, tempCourseNumber, courseNum); deleteCourseTxtInfo(); writeDataC(c, courseNum); writeAllNumToFile(studentNum, courseNum, teacherNum, systemAdminNum); cout << "课程信息删除成功!!!" << endl; flag7++; }}if (flag7 == 0)cout << "您输入的课程编号不存在,请重新操作!!!" << endl; }//展示学生选课信息 void generateSSelectionInfo(classInfo * c, gradeInfo * g, student * s, int courseNum, int studentNum){cout << "学生选课信息如下: " << endl << endl; for (int j = 0; j < studentNum; j++){cout << "学号:" << s[j].getStudentNumber() << " 姓名:" << s[j].getName() << endl; for (int k = 0; k < courseNum; k++){if (isInThisCourse(g, c[k].getCourseNumber(), s[j].getStudentNumber(), courseNum))c[k].searchBasicInfo(); }cout << endl; }}//判断老师是否带这门课 bool isTeacherClass(classInfo * c, string courseNumber, string userName, int courseNum){for (int i = 0; i < courseNum; i++)if(c[i].getJobNumberOfTeacher() == userName && courseNumber == c[i].getCourseNumber()){return true; break; }}//判断学生是否有这门课 bool isInThisCourse(gradeInfo * g, string courseNumber, string studentNumber, int courseNum){bool temp = false; for (int i = 0; i < courseNum; i++){if(g[i].isStudentHere(studentNumber) && courseNumber== g[i].getCourseNumber())temp = true; }return temp; }
文章图片
【C++实现教务管理系统】以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- Java实现简单学生管理系统
- Springboot实例讲解实现专业材料认证管理系统流程
- 使用C语言实现三子棋小游戏
- 使用C语言实现五子棋游戏
- 使用C语言实现扫雷游戏
- 纯numpy数值微分法实现手写数字识别
- 图文详解梯度下降算法的原理及Python实现
- java实现计算器模板及源码
- C++|C++ 继承的范例讲解
- C++虚继承的实现原理由内存布局开始讲起