欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++實(shí)現(xiàn)教師管理系統(tǒng)

 更新時間:2022年03月17日 14:45:18   作者:菜鳥來嘍!  
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)教師管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C++實(shí)現(xiàn)教師管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

鏈表模板定義:就是用這種數(shù)據(jù)類型來進(jìn)行存儲

#include<iostream>
#ifndef NODELIST_S
#define NODELIST_S

template<typename T>
class Node
{
public:
?? ?T s_Data;
?? ?Node<T>* s_Next;

?? ?Node(const T&data) :s_Data(data), s_Next(nullptr){}
};

template<typename T>
class NodeList
{
private:
?? ?Node<T>* s_Head;
?? ?int s_Number;

public:
?? ?NodeList() : s_Head(nullptr), s_Number(0){}
?? ?~NodeList() { Clear(); }
?? ?Node<T>*GetHead() { return s_Head; }
?? ?int GetNum() { return s_Number; }
?? ?bool Clear()
?? ?{
?? ??? ?Node<T>*p = s_Head;
?? ??? ?for (int i = 0; i < s_Number; i++)
?? ??? ?{
?? ??? ??? ?if (!p)return false;
?? ??? ??? ?Node<T>*q = p;
?? ??? ??? ?p = p->s_Next;
?? ??? ??? ?delete q;
?? ??? ?}
?? ??? ?s_Head = nullptr;
?? ??? ?s_Number = 0;
?? ??? ?return true;
?? ?}
?? ?bool IsEmpty()
?? ?{
?? ??? ?return (s_Number == 0);
?? ?}
?? ?bool AddAt(const T&, int i);//添加元素到第i個位置,計(jì)數(shù)從0開始
?? ?bool RemoveAt(int i);//刪除第i個元素
};

template<typename T>
bool NodeList<T>::AddAt(const T& data, int i)
{
?? ?Node<T>* OneNode = new Node<T>(data);

?? ?Node<T>* p;
?? ?if (OneNode)
?? ?{
?? ??? ?if (s_Head)?? ?p = s_Head;
?? ??? ?else
?? ??? ?{
?? ??? ??? ?s_Head = OneNode;
?? ??? ??? ?s_Number++;
?? ??? ??? ?return true;
?? ??? ?}
?? ??? ?if (!i)
?? ??? ?{
?? ??? ??? ?OneNode->s_Next = s_Head;
?? ??? ??? ?s_Head = OneNode;
?? ??? ??? ?s_Number++;
?? ??? ??? ?return true;
?? ??? ?}
?? ??? ?for (int j = 1; j < i; j++)
?? ??? ?{
?? ??? ??? ?p = p->s_Next;
?? ??? ?}
?? ??? ?//此時p指向要插入的位置的前一個節(jié)點(diǎn)
?? ??? ?OneNode->s_Next = p->s_Next;
?? ??? ?p->s_Next = OneNode;
?? ??? ?s_Number++;
?? ??? ?return true;
?? ?}
?? ?return false;
}

template<typename T>
bool NodeList<T>::RemoveAt(int i)
{
?? ?Node<T>*p;
?? ?if (s_Head)?? ?p = s_Head;
?? ?else return false;
?? ?if (!i)
?? ?{
?? ??? ?s_Head = p->s_Next;
?? ??? ?delete p;
?? ??? ?s_Number--;
?? ??? ?return true;
?? ?}
?? ?for (int j = 1; j < i; j++)
?? ?{
?? ??? ?p = p->s_Next;
?? ?}
?? ?//此時p指向要刪除的位置的前一個節(jié)點(diǎn)
?? ?Node<T>*q = p->s_Next;
?? ?p->s_Next = p->s_Next->s_Next;
?? ?delete q;
?? ?s_Number--;
?? ?return true;
}


#endif // !NODELIST_S

教師類的聲明:對教師的一些信息的抽象,包含的數(shù)據(jù)及行為

#include<iostream>
#include<string>
#ifndef TEACHER_S
#define TEACHER_S
using namespace std;

class Teacher
{
private:
?? ?const int s_ID;
?? ?const string s_Name;
?? ?const string s_Sex;
?? ?int s_Age;
?? ?string s_Major;
?? ?string s_Number;
?? ?float s_Money;
?? ?int s_Pingfen;

public:
?? ?Teacher(int Id, string Name, string Sex, int Age, string Major,string Number,float Money,int Pingfen) :
?? ??? ?s_ID(Id), s_Name(Name), s_Sex(Sex), s_Age(Age), s_Major(Major),s_Number(Number),s_Money(Money),s_Pingfen(Pingfen){}
?? ?int GetID() { return s_ID; }
?? ?int GetAge(){ return s_Age; }
?? ?string GetMajor(){ return s_Major; }
?? ?int GetPingfen(){ return s_Pingfen; }
?? ?void AddAge() { s_Age++; }
?? ?void ChangeMajor(string m) { s_Major = m; }
?? ?void ChangeNumber(string n) { s_Number = n; }
?? ?void ChangeMoney(float m) { s_Money = m; }
?? ?void ChangePingfen(int p){ s_Pingfen = p; }
?? ?friend ostream& operator<<(ostream& out, const Teacher& one)
?? ?{
?? ??? ?out << one.s_ID << " " << one.s_Name << " " << one.s_Sex << " " << one.s_Age << " "
?? ??? ??? ?<< one.s_Major << " " << one.s_Number << " " << one.s_Money << " " << one.s_Pingfen << endl;
?? ??? ?return out;
?? ?}
};
#endif // !TEACHER_S

管理類:對教師這個管理系統(tǒng)進(jìn)行管理

#pragma once
#include<iostream>
#include"List.h"
#include"Teacher.h"
#include<fstream>

#ifndef MANAGE_S
#define MANAGE_S

class Management {
private:
?? ?NodeList<Teacher> s_TeacherList;
public:
?? ?Management();
?? ?~Management();
?? ?void ShowAll();
?? ?void AddTeacher();
?? ?void DeletTeacher();
?? ?void SearchById();
?? ?void ChangeTeacherXinxi();
?? ?void ShowByPaixu();
?? ?void ReadFile();
?? ?void WriteFile();
?? ?void AddAllAge();
?? ?void ClearAllDate();
};
#endif // !MANAGE_S

管理類的具體實(shí)現(xiàn):

#include "Management.h"


Management::Management()
{
}


Management::~Management()
{
}

void Management::ShowAll()
{
?? ?cout << "從左到右依次為教職工號、姓名、性別、年齡、教學(xué)科目、電話號碼、月薪、評分" << endl;
?? ?Node<Teacher>*p = s_TeacherList.GetHead();
?? ?while (p)
?? ?{
?? ??? ?cout << p->s_Data << endl;
?? ??? ?p = p->s_Next;
?? ?}
}
void Management::AddTeacher()
{
?? ?cout << "請輸入教師的教職工號、姓名、性別、年齡:" << endl;
?? ?int id, age;
?? ?string name, sex;
?? ?cin >> id >> name >> sex >> age;
?? ?Node<Teacher>*p = s_TeacherList.GetHead();
?? ?while (p)
?? ?{
?? ??? ?if (p->s_Data.GetID() == id)
?? ??? ?{
?? ??? ??? ?cout << "已有該老師的信息!添加失敗" << endl;
?? ??? ??? ?return;
?? ??? ?}
?? ??? ?p = p->s_Next;
?? ?}

?? ?cout << "請依次輸入老師的教學(xué)科目、電話號碼、月薪和評分:" << endl;
?? ?string km, hm;
?? ?float yx;
?? ?int pf;
?? ?cin >> km >> hm >> yx>>pf;
?? ?Teacher one(id, name, sex, age, km, hm, yx,pf);
?? ?if (s_TeacherList.AddAt(one, s_TeacherList.GetNum()))
?? ??? ?cout << "教師信息添加成功!" << endl;
?? ?else cout << "信息添加失敗!" << endl;
}

void Management::DeletTeacher()
{
?? ?cout << "輸入您想刪除的教師的教職工號:";
?? ?int id, i(0);
?? ?cin >> id;
?? ?Node<Teacher>*p = s_TeacherList.GetHead();
?? ?while (p)
?? ?{
?? ??? ?if (p->s_Data.GetID() == id)
?? ??? ?{
?? ??? ??? ?if (s_TeacherList.RemoveAt(i))
?? ??? ??? ??? ?cout << "刪除成功!" << endl;
?? ??? ??? ?else cout << "刪除失敗!" << endl;
?? ??? ??? ?return;
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?i++;
?? ??? ??? ?p = p->s_Next;
?? ??? ?}
?? ?}
?? ?cout << "系統(tǒng)中沒有該老師信息!" << endl;
?? ?return;
}

void Management::SearchById()
{
?? ?cout << "輸入您想查詢的教師的教職工號:";
?? ?int id;
?? ?cin >> id;
?? ?Node<Teacher>*p = s_TeacherList.GetHead();
?? ?while (p)
?? ?{
?? ??? ?if (p->s_Data.GetID() == id)
?? ??? ?{
?? ??? ??? ?cout << p->s_Data << endl;
?? ??? ??? ?return;
?? ??? ?}
?? ??? ?else p = p->s_Next;
?? ?}
?? ?cout << "系統(tǒng)中沒有該老師信息!" << endl;
?? ?return;

}

void Management::ChangeTeacherXinxi()
{
?? ?cout << "輸入您想更改的老師的教職工號:";
?? ?int id;
?? ?cin >> id;
?? ?Node<Teacher>*p = s_TeacherList.GetHead();
?? ?while (p)
?? ?{
?? ??? ?if (p->s_Data.GetID() == id)
?? ??? ?{
?? ??? ??? ?cout << p->s_Data << endl;
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?else p = p->s_Next;
?? ?}
?? ?if (!p)
?? ?{
?? ??? ?cout << "系統(tǒng)中沒有該老師的信息!" << endl;
?? ??? ?return;
?? ?}
?? ?cout << "您要修改哪一樣信息?(1.教學(xué)科目 2.電話號碼 3.月薪 4.評分 0.返回)" << endl;
?? ?int mark,pf;
?? ?string k, n;
?? ?float m;
?? ?cin >> mark;
?? ?if (!mark)return;
?? ?cout << "輸入修改信息:";
?? ?if (mark == 1)
?? ??? ?cin >> k;
?? ?else if (mark == 2)
?? ??? ?cin >> n;
?? ?else if (mark == 3)
?? ??? ?cin >> m;
?? ?else if (mark == 4)
?? ??? ?cin >> pf;
?? ?switch (mark)
?? ?{
?? ?case 1: p->s_Data.ChangeMajor(k); break;
?? ?case 2:p->s_Data.ChangeNumber(n); break;
?? ?case 3:p->s_Data.ChangeMoney(m); break;
?? ?case 4:p->s_Data.ChangePingfen(pf); break;
?? ?default:break;
?? ?}
?? ?cout << "修改成功!" << endl;
?? ?cout << p->s_Data << endl;
?? ?return;

}
//這里采用最簡單的桶排序
void Management::ShowByPaixu()
{
?? ?cout << "請問您想根據(jù)哪一項(xiàng)對教師信息進(jìn)行排序?" << endl
?? ??? ?<< "(1.年齡 2.評分 ?0.返回)" << endl;
?? ?int c;
?? ?cin >> c;
?? ?NodeList<Teacher> pucket[100];//100個桶
?? ?Node<Teacher>*p = s_TeacherList.GetHead();
?? ?switch (c)
?? ?{
?? ?case 1:
?? ?{
?? ??? ??? ? ?while (p)
?? ??? ??? ? ?{
?? ??? ??? ??? ? ?pucket[p->s_Data.GetAge() - 1].AddAt(p->s_Data, pucket[p->s_Data.GetAge() - 1].GetNum());
?? ??? ??? ??? ? ?p = p->s_Next;
?? ??? ??? ? ?}
?? ??? ??? ? ?break;
?? ?}
?? ?case 2:
?? ?{
?? ??? ??? ? ?while (p)
?? ??? ??? ? ?{
?? ??? ??? ??? ? ?pucket[p->s_Data.GetPingfen() - 1].AddAt(p->s_Data, pucket[p->s_Data.GetPingfen() - 1].GetNum());
?? ??? ??? ??? ? ?p = p->s_Next;
?? ??? ??? ? ?}
?? ??? ??? ? ?break;
?? ?}
?? ?case 0:break;
?? ?default:break;
?? ?}
?? ?for (int i = 99; i >= 0; i--)
?? ?{
?? ??? ?p = pucket[i].GetHead();
?? ??? ?while (p)
?? ??? ?{
?? ??? ??? ?cout << p->s_Data << endl;
?? ??? ??? ?p = p->s_Next;
?? ??? ?}
?? ?}
}

void Management::ReadFile()
{
?? ?ifstream in("data.txt");
?? ?if (in.fail())
?? ?{
?? ??? ?cout << "Data error!" << endl;
?? ??? ?return;
?? ?}
?? ?do{
?? ??? ?int id, age, pingfen;
?? ??? ?string name, sex, major, number;
?? ??? ?float money;
?? ??? ?in >> id >> name >> sex >> age >> major>> number >> money>>pingfen;
?? ??? ?Teacher one(id, name, sex, age, major, number, money,pingfen);
?? ??? ?s_TeacherList.AddAt(one, s_TeacherList.GetNum());

?? ?} while (!in.eof());
?? ?cout << "Read file successful!" << endl;
?? ?in.close();
}

void Management::WriteFile()
{
?? ?ofstream out("outdata.txt");
?? ?if (!out)
?? ?{
?? ??? ?cerr << " file error!" << endl;
?? ??? ?return;
?? ?}
?? ?Node<Teacher>*p = s_TeacherList.GetHead();
?? ?while (p)
?? ?{
?? ??? ?out << p->s_Data;
?? ??? ?cout << p->s_Data;
?? ??? ?p = p->s_Next;
?? ?}
?? ?cout << "Write file successful!" << endl;
?? ?out.close();
}

void Management::AddAllAge()
{
?? ?Node<Teacher>*p = s_TeacherList.GetHead();
?? ?while (p)
?? ?{
?? ??? ?p->s_Data.AddAge();
?? ??? ?p = p->s_Next;
?? ?}
?? ?cout << "教師年齡增加完成!" << endl;
?? ?return;
}

void Management::ClearAllDate()
{
?? ?if (s_TeacherList.IsEmpty())
?? ?{
?? ??? ?cout << "數(shù)據(jù)已經(jīng)為空!" << endl;
?? ??? ?return;
?? ?}
?? ?else if (s_TeacherList.Clear())
?? ??? ?cout << "刪除數(shù)據(jù)成功!" << endl;
?? ?else {?
?? ??? ??? ?cout << "刪除數(shù)據(jù)失敗,程序退出" << endl;
?? ??? ??? ?exit(0);
?? ? ? ?}
?? ?return;
}

主函數(shù):菜單選項(xiàng)

#include<iostream>
#include<fstream>
#include <string>
#include"Management.h"
using namespace std;

int main()
{
?? ?Management manager;
?? ?while (1)
?? ?{
?? ??? ?cout << "**********************************" << endl;
?? ??? ?cout << "****歡迎您使用教師信息系統(tǒng)********" << endl;
?? ??? ?cout << "* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*" << endl;
?? ??? ?cout << "* ?|輸入數(shù)字執(zhí)行您想使用的功能| ?*" << endl;
?? ??? ?cout << "* ? ? ? ?1.讀取文件 ? ? ? ? ? ? ?*" << endl;
?? ??? ?cout << "* ? ? ? ?2.寫入文件 ? ? ? ? ? ? ?*" << endl;
?? ??? ?cout << "* ? ? ? ?3.顯示教師信息 ? ? ? ? ?*" << endl;
?? ??? ?cout << "* ? ? ? ?4.添加教師信息 ? ? ? ? ?*" << endl;
?? ??? ?cout << "* ? ? ? ?5.刪除教師信息 ? ? ? ? ?*" << endl;
?? ??? ?cout << "* ? ? ? ?6.更改教師信息 ? ? ? ? ?*" << endl;
?? ??? ?cout << "* ? ? ? ?7.查詢教師信息 ? ? ? ? ?*" << endl;
?? ??? ?cout << "* ? ? ? ?8.按年齡或評分排序 ? ? ?*" << endl;
?? ??? ?cout << "* ? ? ? ?9.增加所有老師年齡 ? ? ?*" << endl;
?? ??? ?cout << "* ? ? ? ?10.清空所有數(shù)據(jù) ? ? ? ? *" << endl;
?? ??? ?cout << "* ? ? ? ?0.退出 ? ? ? ? ? ? ? ? ?*" << endl;
?? ??? ?cout << "**********************************" << endl;
?? ??? ?int input;
?? ??? ?cin >> input;
?? ??? ?switch (input)
?? ??? ?{
?? ??? ?case 1: {manager.ReadFile(); manager.ShowAll(); break; }
?? ??? ?case 2: {manager.WriteFile(); break; }
?? ??? ?case 3: {manager.ShowAll(); break; }
?? ??? ?case 4: {manager.AddTeacher(); break; }
?? ??? ?case 5: {manager.DeletTeacher(); break; }
?? ??? ?case 6: {manager.ChangeTeacherXinxi(); break; }
?? ??? ?case 7: {manager.SearchById(); break; }
?? ??? ?case 8: {manager.ShowByPaixu(); break; }
?? ??? ?case 9: {manager.AddAllAge(); break; }
?? ??? ?case 10: {manager.ClearAllDate(); break; }
?? ??? ?case 0: exit(0);
?? ??? ?default:return 0;
?? ??? ?}
?? ?}
?? ?return 0;
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論