亲宝软件园·资讯

展开

C++信息管理系统

伊丽莎逼 人气:0

信息管理系统

因为学校布置了写一个信息管理系统的作业,所以写下了这个信息管理系统,这是用cpp写的一个简单程序。
基本思路是通过控制台程序,然后通过数字命令来进行操作。
该程序编译了多文件;
因为是学校的作业所以我把万能头换成了
#include"stdc++.h"
功能和万能头一致。

该系统使用了链表来链接各个数据。
程序的基本功能是打算写两个系统,输入1和账号密码进入学生管理系统
输入2和账号密码进入教师管理系统
但是我只写了教师管理系统,因为这是学校的作业,而且之前我有写过学生管理系统了,所以没打算再写一次,以后有时间再说。
进入教师管理系统以后 :
输入1:用户自己增加教师信息
输入2:用户可以通过教师工号更改教师的姓名或SFZ号或年龄或教师工号或者工资或者执教课程或课程学分。
输入3:通过教师工号来删除特定教师
输入4:显示所有的教师信息
输入5:从指定文件(D:\1808190126许达峰\Data.txt)读入信息。
输入6:显示符合某个特定信息的教师,可以用教师姓名、SFZ、工号、工资、年龄、执教课程进行检索
输入7:可以通过教师工号、工资、年龄进行排序(从小到大)
输入0:退出系统。

主程序代码如下:

#include"stdc++.h"
#include"interface.h"
#include"actions.h"
#include"teacherMessage.h"
#include<stdlib.h>
using namespace std;

int main(){
    system("color 0F");
    //信息管理系统选项
    tasks();
    return 0;
}

这里包括了万能头、界面样式、用户操作、教师类定义四个头文件。
万能头文件如下:

#ifndef _GLIBCXX_NO_ASSERT
#include <cassert>
#endif
#include <cctype>
#include <cerrno>
#include <cfloat>
#include <ciso646>
#include <climits>
#include <clocale>
#include <cmath>
#include <csetjmp>
#include <csignal>
#include <cstdarg>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>

#if __cplusplus >= 201103L
#include <ccomplex>
#include <cfenv>
#include <cinttypes>
#include <cstdalign>
#include <cstdbool>
#include <cstdint>
#include <ctgmath>
#include <cwchar>
#include <cwctype>
#endif

// C++
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>

#if __cplusplus >= 201103L
#include <array>
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <forward_list>
#include <future>
#include <initializer_list>
#include <mutex>
#include <random>
#include <ratio>
#include <regex>
#include <scoped_allocator>
#include <system_error>
#include <thread>
#include <tuple>
#include <typeindex>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
#endif

界面样式代码如下:

.h文件代码:

#ifndef INTERFACE
#define INTERFACE

#include"stdc++.h"
using namespace std;
//教师信息管理系统界面样式
void MainFace();
//信息管理系统界面样式
void outFace();


#endif INTERFACE

.cpp文件代码:

#include"interface.h"
//教师信息管理系统界面样式
void MainFace(){
    cout<<"                                  "<<"---------------------------------------------------------------"<<endl;
    cout<<"                                  "<<"-------------       欢迎进入教师信息管理系统      -------------"<<endl;
    cout<<"                                  "<<"---------------------------------------------------------------"<<endl;
    cout<<"                                  "<<"---- 1.添加教师信息       ---------- 2.更改一位教师信息 -------"<<endl;
    cout<<"                                  "<<"---- 3.删除教师信息       ---------- 4.显示所有教师信息 -------"<<endl;
    cout<<"                                  "<<"---- 5.从文件录入教师信息 ---------- 6.显示教师信息     -------"<<endl;
    cout<<"                                  "<<"---- 7.对教师信息进行排序 ---------- 0.退出当前界面     -------"<<endl;
    cout<<"                                  "<<"---------------------------------------------------------------"<<endl;
}
//信息管理系统界面样式
void outFace(){
    cout<<"                                  "<<"---------------------------------------------------------------"<<endl;
    cout<<"                                  "<<"------------          欢迎进入信息管理系统      ---------------"<<endl;
    cout<<"                                  "<<"---------------------------------------------------------------"<<endl;
    cout<<"                                  "<<"---- 1.学生登入          --------         2.教师登入 ----------"<<endl;
    cout<<"                                  "<<"---- 3.关于              --------         0.退出系统 ----------"<<endl;
    cout<<"                                  "<<"---------------------------------------------------------------"<<endl;
    cout<<"                                  "<<"测试使用的教师账号:teacher 密码:123456789                    "<<endl;
}

用户操作代码如下:

.h文件

#ifndef ACTIONS
#define ACTIONS

#include"stdc++.h"
#include"teacherMessage.h"

using namespace std;

typedef struct teacherDate * List;
typedef struct teacherDate Data;

//链表的构成元素
struct teacherDate
{
    Teacher self;
    List next;
};

//教师信息管理系统选项
void acts();
//主界面选项
void tasks();

#endif

.cpp文件

#include"actions.h"
#include"interface.h"
#include"teacherSystem.h"
#include <windows.h>

//账号密码
const string R_Id="teacher";
const string R_password="123456789";

//主界面选项
void tasks(){
    int task;
    outFace();
    cout<<"请输入0-2:"; 
    while(cin>>task){
        if(task==0){
            cout<<"拜拜"<<endl;
            Sleep(1000);
            break;
        }else if (task==1){
            //学生信息管理系统
            cout<<"该功能暂未开放,敬请期待"<<endl;
        }else if(task==2){
            //教师信息管理系统
            string Id,passwrod;
            cout<<"请输入教师账号、密码:";
            cin>>Id>>passwrod;
            //检验账号密码是否正确
            if(Id==R_Id){
                if(passwrod==R_password){
                acts();
                }else{
                    cout<<"密码错误"<<endl;
                }
            }else{
                cout<<"账号错误"<<endl;
            }
        }else if(task==3){
            cout<<"-----------------------------------------------------"<<endl;
            cout<<"完整代码和使用方法请参观网址:                       "<<endl;
            cout<<"https://blog.csdn.net/TeqGin/article/details/92760558"<<endl;
            cout<<"-----------------------------------------------------"<<endl;
            cout<<"作者:1808190126 软件一班 许达峰                     "<<endl;
            cout<<"-----------------------------------------------------"<<endl;
        }else{
            cout<<"无效输入"<<endl;
        }
        //清屏
        system("pause");
        system("CLS");
        outFace();
        //选择
        cout<<"请输入0-2"<<endl;
    }
}
//教师信息管理系统选项
void acts(){
    int a;
    List head=NULL;

    //清屏
    system("pause");
    system("CLS");

    MainFace();
    cout<<"请输入0-7:";
    while(cin>>a){
        if(a==1){
            //增加教师信息
            head=add(head);
        }else if(a==2){
            //更改教师信息
            head=changeActs(head);
        }else if(a==3){
            //删除教师信息
            head=excludeActs(head);
        }else if(a==4){
            //显示所有教师信息
            head=dataFace(head);
        }else if(a==5){
            //从文件录入教师信息
            head=readin(head);
        }else if(a==6){
            //显示教师信息
            head=showTeacherActs(head);
        }else if(a==7){
            //对教师信息进行排序
            head=softData(head);
        }else if(a==0){
            cout<<"将返回主界面"<<endl;
            head=clearAll(head);
            Sleep(1000);
            break;
        }
        //清屏
        system("pause");
        system("CLS");

        MainFace();
        cout<<"请输入0-7:";
    }
}

用户操作定义还包括下属的数字命令文件
数字命令文件代码如下:

.h文件

#ifndef TEACHERSYSTEM
#define TEACHERSYSTEM

#include"stdc++.h"
#include"actions.h"
using namespace std;

//增加教师信息
List add(List head);
//更改教师信息
List changeActs(List head);
//删除教师信息
List excludeActs(List head);
//显示所有教师信息
List dataFace(List head);
//从文件录入教师信息
List readin(List head);
//显示教师信息
List showTeacherActs(List head);
//对教师信息进行排序
List softData(List head);
//清除所有数据,防止内存泄露
List clearAll(List head);
//根据教师工号搜索指定教师
List findTeacher(List head,string teacherId);

#endif TEACHERSYSTEM

.cpp文件

#include"teacherSystem.h"
#include"interface.h"
#include"teacherMessage.h"
#include"changeActions.h"

//增加教师信息
List add(List head){
    string Name,Age,teacherId,salary;
    string Identify;
    string LesName,Point;
    Lesson course;
    if(head==NULL){ 
        //为首结点动态分配空间
        head=new Data;                    
        cout<<"请依次输入教师的姓名、SFZ号(后四位)、年龄、教师工号、工资、执教课程、课程学分:";
        cin>>Name>>Identify>>Age>>teacherId>>salary>>LesName>>Point;
        //将数据传入Teacher类中
        course.getData(LesName,Point);
        head->self.getData(Name,Identify,Age,teacherId,salary,course);
        //令下一个结点为空            
        head->next=NULL;
    }else{
        List current,record;
        current=head;
        //通过遍历找到空结点,把数据分配到空结点中
        while(current->next){
            current=current->next;
            record=current->next;
        }
        if(current==head)
            record=current->next;
        cout<<"请依次输入教师的姓名、SFZ号(后四位)、年龄、教师工号、工资、执教课程、课程学分:";
        cin>>Name>>Identify>>Age>>teacherId>>salary>>LesName>>Point;
        course.getData(LesName,Point);
        //为新结点动态分配空间
        record= new Data;
        record->self.getData(Name,Identify,Age,teacherId,salary,course);
        //令下一个结点为空
        record->next=NULL;
        current->next=record;
    }
    return head;
}
//更改教师信息
List changeActs(List head){
    int choose;
    string teacherId;
    cout<<"---------------------------------------------------"<<endl;
    cout<<"--1更改姓名      2更改SFZ号      3更改年龄    --"<<endl;
    cout<<"---------------------------------------------------"<<endl;
    cout<<"--4更改教师工号  5更改工资          6.更改执教课程-"<<endl;
    cout<<"---------------------------------------------------"<<endl;
    cout<<"--7.更改课程学分                                  -"<<endl;
    cout<<"---------------------------------------------------"<<endl;
    cout<<"请输入1-7:";
    cin>>choose;
    cout<<endl;
    cout<<"请输入你希望更改的教师的工号"<<endl;
    cin>>teacherId;
    if(choose==1){
        changeName(head,teacherId);
    }else if(choose==2){
        changeIdentify(head,teacherId);
    }else if(choose==3){
        changeAge(head,teacherId);
    }else if(choose==4){
        changeTeacherId(head,teacherId);
    }else if(choose==5){
        changeSalary(head,teacherId);
    }else if(choose==6){
        changeLesName(head,teacherId);
    }else if(choose==7){
        changePoint(head,teacherId);
    }else{
        cout<<"无效输入"<<endl;
    }
    return head;
}
//显示所有教师信息
List dataFace(List head){
    List current=head;
    cout<<"---------------------------------------------------------------------------"<<endl;
    cout<<" 姓名      SFZ号     年龄    教师工号     工资    执教课程   课程学分   "<<endl;
    cout<<"---------------------------------------------------------------------------"<<endl;
    if(current==NULL){
        cout<<"表格为空!"<<endl;
    }else{
        while(current){
            current->self.showmessage();
            cout<<endl;
            cout<<"---------------------------------------------------------------------------"<<endl;
            current=current->next;
        }
    }
    return head;
}
//删除教师信息
List excludeActs(List head){
    string teacherId;
    cout<<"请输入你要删除的教师的教师工号:";
    cin>>teacherId;
    List current=head,before;
    
    if(current){
        while(current->next!=NULL&&current->self.getTeacherId()!=teacherId){
            before=current;
            current=current->next;
        }
        if(current->self.getTeacherId()==teacherId){
            if(current==head){
                List record=head;
                head=head->next;
                delete record;
                return head;
            }else{
                before->next=current->next;
                delete current;
            }
        }else{
            cout<<"该教师不存在!"<<endl;
        }
    }else{
        cout<<"该表为空!"<<endl;
    }
    return head;
}
//显示教师信息
List showTeacherActs(List head){
    int choose;
    cout<<"----------------------------------------------"<<endl;
    cout<<"1.根据姓名检索                 2.根据SFZ号检索"<<endl;
    cout<<"----------------------------------------------"<<endl;
    cout<<"3.根据教师工号检索             4.根据工资检索   "<<endl;
    cout<<"-----------------------------------------------"<<endl;
    cout<<"5.根据教师年龄检索             6.根据执教课程检索"<<endl;
    cout<<"-----------------------------------------------"<<endl;
    cin>>choose;
    if(choose==1){
        searchName(head);
    }else if(choose==2){
        searchIdentify(head);
    }else if(choose==3){
        searchTeacherId(head);
    }else if(choose==4){
        searchSalary(head);
    }else if(choose==5){
        searchAge(head);
    }else if(choose==6){
        searchCourseLesName(head);
    }else{
        cout<<"无效操作"<<endl;
    }
    return head;
}
//从文件录入教师信息
List readin(List head){
    ifstream fin;
    string Point,LesName;
    Lesson course;
    cout<<"如果要使用本功能,请确保1808190126许达峰文件夹位于D盘。"<<endl;
    char address[]="D:\\1808190126许达峰\\Data.txt";
    string Name,Identify,Age,teacherId,salary;
    List current,record,recall;
    fin.open(address);
    current=head;
    recall=head;
    if(head==NULL){
        recall=head;
    }else{
        //通过遍历找到空结点
        while(current->next){
            current=current->next;
            recall=current->next;
        }
        if(current==head)
            recall=current->next;
    }
    if(!fin.is_open()){
        cout<<"打开文件失败!"<<endl;
    }else{
        while(fin>>Name>>Identify>>Age>>teacherId>>salary>>LesName>>Point){
            recall=new Data;            
            if(head==NULL){
                head=recall;
            }else{
                current->next=recall;
            }
            course.getData(LesName,Point);
            recall->self.getData(Name,Identify,Age,teacherId,salary,course);
            recall->next=NULL;
            current=recall;
        }
        fin.clear();
    }
    return head;
}
//对教师信息进行排序
List softData(List head){
    int choose;
    cout<<"-----------------------------------------"<<endl;
    cout<<"1.根据教师年龄排序        2.根据教师工号排序"<<endl;
    cout<<"-----------------------------------------"<<endl;
    cout<<"3.根据教师工资排序                        "<<endl;
    cout<<"-----------------------------------------"<<endl;
    cin>>choose;
    if(choose==1){
        head=bubbleSofAge(head);
    }else if(choose==2){
        head=bubbleSoftTeacherId(head);
    }else if(choose==3){
        head=bubbleSoftSalary(head);
    }else{
        cout<<"a无效操作!"<<endl;
    }
    return head;
}

//根据教师工号搜索指定教师
List findTeacher(List head,string teacherId){
    List current=head;
    if(current==NULL) return current;
    while(current->next!=NULL&&current->self.getTeacherId()!=teacherId){
        current=current->next;
    }
    return current;
}
//清除所有数据,防止内存泄露
List clearAll(List head){
    List current=head,record;
    if(head!=NULL){
        while(current){
            record=current->next;
            delete current;
            current=record;
        }
    }
    return head=NULL;
}

教师系统操作还包括以下文件:
.h文件:

#ifndef CHANGEACTIONS
#define CHANGEACTIONS
#include"stdc++.h"
#include"actions.h"
using namespace std;

//更改姓名
void changeName(List head,string teacherId);
//更改SFZ号
void changeIdentify(List head,string teacherId);
//更改年龄
void changeAge(List head,string teacherId);
//更改教师工号
void changeTeacherId(List head,string teacherId);
//更改工资
void changeSalary(List head,string teacherId);
//更改课程名称
void changeLesName(List head,string teacherId);
//更改课程学分
void changePoint(List head,string teacherId);
//检索姓名
void searchName(List head);
//检索SFZ号
void searchIdentify(List head);
//检索教师工号
void searchTeacherId(List head);
//检索工资
void searchSalary(List head);
//检索年龄
void searchAge(List head);
//根据执教课程检索
void searchCourseLesName(List head);
//基于冒泡排序的根据教师年龄排序
List bubbleSofAge(List head);
//基于冒泡排序的根据教师工号排序
List bubbleSoftTeacherId(List head);
//基于冒泡排序的根据教师工资排序
List bubbleSoftSalary(List head);
#endif CHANGEACITIONS

.cpp文件:

#include"changeActions.h"
#include"teacherMessage.h"
#include"teacherSystem.h"

//更改姓名
void changeName(List head,string teacherId){
    List current=findTeacher(head,teacherId);
    if(current){
        if(current->self.getTeacherId()==teacherId){
            string Name;
            cout<<"请输入新名字"<<endl;
            cin>>Name;
            current->self.changeName(Name);
        }else{
            cout<<"该教师不存在"<<endl;
        }
    }else{
        cout<<"该表为空!"<<endl;
    }
}
//更改SFZ号
void changeIdentify(List head,string teacherId){
    List current=findTeacher(head,teacherId);
    if(current){
        if(current->self.getTeacherId()==teacherId){
            string Identify;
            cout<<"请输入新SFZ号"<<endl;
            cin>>Identify;
            current->self.changeIdentify(Identify);
        }else{
            cout<<"该教师不存在"<<endl;
        }
    }else{
        cout<<"该表为空!"<<endl;
    }
}
//更改年龄
void changeAge(List head,string teacherId){
    List current=findTeacher(head,teacherId);
    if(current){
        if(current->self.getTeacherId()==teacherId){
            string Age;
            cout<<"请输入新年龄"<<endl;
            cin>>Age;
            current->self.changeAge(Age);
        }else{
            cout<<"该教师不存在"<<endl;
        }
    }else{
        cout<<"该表为空!"<<endl;
    }
}
//更改教师工号
void changeTeacherId(List head,string teacherId){
    List current=findTeacher(head,teacherId);
    if(current){
        if(current->self.getTeacherId()==teacherId){
            string TeacgerId;
            cout<<"请输入新教师工号"<<endl;
            cin>>TeacgerId;
            current->self.changeTeacherId(TeacgerId);
        }else{
            cout<<"该教师不存在"<<endl;
        }
    }else{
        cout<<"该表为空!"<<endl;
    }
}
//更改工资
void changeSalary(List head,string teacherId){
    List current=findTeacher(head,teacherId);
    if(current){
        if(current->self.getTeacherId()==teacherId){
            string Salary;
            cout<<"请输入新工资"<<endl;
            cin>>Salary;
            current->self.changeSalary(Salary);
        }else{
            cout<<"该教师不存在"<<endl;
        }
    }else{
        cout<<"该表为空!"<<endl;
    }
}
//更改课程名称
void changeLesName(List head,string teacherId){
    List current=findTeacher(head,teacherId);
    if(current){
        if(current->self.getTeacherId()==teacherId){
            string LesName;
            cout<<"请输入新课程名称"<<endl;
            cin>>LesName;
            current->self.changeCoureseLesName(LesName);
        }else{
            cout<<"该教师不存在"<<endl;
        }
    }else{
        cout<<"该表为空!"<<endl;
    }
}
//更改课程学分
void changePoint(List head,string teacherId){
    List current=findTeacher(head,teacherId);
    if(current){
        if(current->self.getTeacherId()==teacherId){
            string Point;
            cout<<"请输入新课程学分"<<endl;
            cin>>Point;
            current->self.changeCouresePoint(Point);
        }else{
            cout<<"该教师不存在"<<endl;
        }
    }else{
        cout<<"该表为空!"<<endl;
    }
}

//检索姓名
void searchName(List head){
    List current=head;
    string Name;
    cout<<"请输入教师姓名:";
    cin>>Name;
    
    cout<<"---------------------------------------------------------------------------"<<endl;
    cout<<" 姓名      SFZ号     年龄    教师工号     工资    执教课程   课程学分   "<<endl;
    cout<<"---------------------------------------------------------------------------"<<endl;
    //遍历
    if(current){
        while(current){
            if(current->self.getName()==Name){
                current->self.showmessage();
                cout<<endl;
                cout<<"---------------------------------------------------------------------------"<<endl;
                
            }
            current=current->next;
        }
    }else{
        cout<<"该表格为空!"<<endl;
    }
}
//检索SFZ号
void searchIdentify(List head){
    List current=head;
    string Identify;
    cout<<"请输入教师SFZ:";
    cin>>Identify;
    
    cout<<"---------------------------------------------------------------------------"<<endl;
    cout<<" 姓名      SFZ号     年龄    教师工号     工资    执教课程   课程学分   "<<endl;
    cout<<"---------------------------------------------------------------------------"<<endl;
    //遍历
    if(current){
        while(current){
            if(current->self.getIdentify()==Identify){
                current->self.showmessage();
                cout<<endl;
                cout<<"---------------------------------------------------------------------------"<<endl;
                
            }
            current=current->next;
        }
    }else{
        cout<<"该表格为空!"<<endl;
    }
}
//检索教师工号
void searchTeacherId(List head){
    List current=head;
    string teacherId;
    cout<<"请输入教师工号:";
    cin>>teacherId;
    
    cout<<"---------------------------------------------------------------------------"<<endl;
    cout<<" 姓名      SFZ号     年龄    教师工号     工资    执教课程   课程学分   "<<endl;
    cout<<"---------------------------------------------------------------------------"<<endl;
    //遍历
    if(current){
        while(current){
            if(current->self.getTeacherId()==teacherId){
                current->self.showmessage();
                cout<<endl;
                cout<<"---------------------------------------------------------------------------"<<endl;
                
            }
            current=current->next;
        }
    }else{
        cout<<"该表格为空!"<<endl;
    }
}
//检索工资
void searchSalary(List head){
    List current=head;
    string salary;
    cout<<"请输入教师工资:";
    cin>>salary;
    
    cout<<"---------------------------------------------------------------------------"<<endl;
    cout<<" 姓名      SFZ号     年龄    教师工号     工资    执教课程   课程学分   "<<endl;
    cout<<"---------------------------------------------------------------------------"<<endl;
    //遍历
    if(current){
        while(current){
            if(current->self.getSalary()==salary){
                current->self.showmessage();
                cout<<endl;
                cout<<"---------------------------------------------------------------------------"<<endl;
                
            }
            current=current->next;
        }
    }else{
        cout<<"该表格为空!"<<endl;
    }
}
//检索年龄
void searchAge(List head){
    List current=head;
    string age;
    cout<<"请输入教师工资:";
    cin>>age;
    //输出样式
    cout<<"---------------------------------------------------------------------------"<<endl;
    cout<<" 姓名      SFZ号     年龄    教师工号     工资    执教课程   课程学分   "<<endl;
    cout<<"---------------------------------------------------------------------------"<<endl;
    //遍历
    if(current){
        while(current){
            if(current->self.getAge()==age){
                current->self.showmessage();
                cout<<endl;
                cout<<"---------------------------------------------------------------------------"<<endl;
                
            }
            current=current->next;
        }
    }else{
        cout<<"该表格为空!"<<endl;
    }
}
//根据执教课程检索
void searchCourseLesName(List head){
    List current=head;
    string LesName;
    cout<<"请输入执教课程:";
    cin>>LesName;
    //输出样式
    cout<<"---------------------------------------------------------------------------"<<endl;
    cout<<" 姓名      SFZ号     年龄    教师工号     工资    执教课程   课程学分   "<<endl;
    cout<<"---------------------------------------------------------------------------"<<endl;
    //遍历
    if(current){
        while(current){
            if(current->self.getCourseLesName()==LesName){
                current->self.showmessage();
                cout<<endl;
                cout<<"---------------------------------------------------------------------------"<<endl;
                
            }
            current=current->next;
        }
    }else{
        cout<<"该表格为空!"<<endl;
    }
}
//基于冒泡排序的根据教师年龄排序
List bubbleSofAge(List head){
    Teacher T;
    int n=0;
    List current=head,record;
    //统计一共有多少人数
    while(current){
        n++;
        current=current->next;
    }
    current=head; 
    //排序
    for(int i=0;i<n;i++){
        while(current->next){
            record=current->next;
            if(record->self.getAge()<current->self.getAge()){
                T=record->self;
                record->self=current->self;
                current->self=T;
            }
            current=current->next;
        }
        current=head;    
    }
    return head;
}
//基于冒泡排序的根据教师工号排序
List bubbleSoftTeacherId(List head){
    Teacher T;
    int n=0;
    List current=head,record;
    //统计一共有多少人数
    while(current){
        n++;
        current=current->next;
    }
    current=head; 
    //排序
    for(int i=0;i<n;i++){
        while(current->next){
            record=current->next;
            if(record->self.getTeacherId()<current->self.getTeacherId()){
                T=record->self;
                record->self=current->self;
                current->self=T;
            } 
            current=current->next;
        }
        current=head; 
    }
    return head;
}
//基于冒泡排序的根据教师工资排序
List bubbleSoftSalary(List head){
    Teacher T;
    int n=0;
    List current=head,record;
    //统计一共有多少人数
    while(current){
        n++;
        current=current->next;
    }
    current=head; 
    //排序//排序
    for(int i=0;i<n;i++){
        while(current->next){
            record=current->next;
            if(record->self.getSalary()<current->self.getSalary()){
                T=record->self;
                record->self=current->self;
                current->self=T;
            } 
            current=current->next;
        }
        current=head; 
    }
    return head;
}

教师类定义代码如下
.h文件

#ifndef TEACHERMESSAGE
#define TEACHERMESSAGE
#include"stdc++.h"
using namespace std;

//课程类
class Lesson{
    private:
    string LesName;
    string Point;
    public:
    Lesson(){}
    ~Lesson(){}

    public:
    //传输数据
    void getData(string LesName,string Point);
    //输出样式
    void LesInterFace();
    //更改课程名称
    void changeLesName(string LesName);
    //更改学分
    void changePoint(string Point);
    //获取课程名称
    string getLesName();
    //获取学分
    string getPoint();
};
//人员类
class Person{
        protected:
        string Name;
        string Identify;
        string Age;
        Lesson course;
        public:
        
        Person(){}
        ~Person(){}

        public:
        //传输数据
        void getData(string Name,string Identity,string Age,Lesson course);
        //输出数据
        void showmessage();
        //更改姓名
        void changeName(string name);
        //更改SFZ
        void changeIdentify(string Identify);
        //更改年龄
        void changeAge(string Age);
        //更改课程名称
        void changeCoureseLesName(string LesName);
        void changeCouresePoint(string Point);
        //获取姓名
        string getName();
        //获取SFZ号
        string getIdentify();
        //获取年龄
        string getAge();
        //获取课程名称
        string getCourseLesName();
    };

//教师类
class Teacher:public Person{
    protected:
    string teacherId;
    string salary;

    public:
    Teacher(){}
    ~Teacher(){}

    public:
    //传输数据
    void getData(string Name,string Identity,string Age,string teacherId,string salary,Lesson course);
    //输出
    void showmessage();
    //更改教师工号
    void changeTeacherId(string teacherId);
    //更改工资
    void changeSalary(string salary);
    //获取教师工号
    string getTeacherId();
    //获取工资
    string getSalary();
};

#endif

.cpp文件

#include"teacherMessage.h"
//传输数据
void Person::getData(string Name,string Identity,string Age,Lesson course){
    this->Name=Name;
    this->Identify=Identity;
    this->Age=Age;
    this->course=course;
}
//输出数据
void Person::showmessage(){
    cout<<" "<<this->Name<<"      "<<this->Identify<<"             "<<this->Age;
}
//更改姓名
void Person::changeName(string Name){
    this->Name=Name;
}
//更改SFZ
void Person::changeIdentify(string Identify){
    this->Identify=Identify;
}
//更改年龄
void Person::changeAge(string Age){
    this->Age=Age;
}
//更改课程名称
void Person::changeCoureseLesName(string LesName){
    this->course.changeLesName(LesName);
}
void Person::changeCouresePoint(string Point){
    this->course.changePoint(Point);
}
//获取年龄
string Person::getAge(){
    return this->Age;
}
//获取姓名
string Person::getName(){
    return this->Name;
}
//获取SFZ号
string Person::getIdentify(){
    return this->Identify;
}
//获取课程名称
string Person::getCourseLesName(){
    return this->course.getLesName();
}
//传输数据
void Teacher::getData(string Name,string Identity,string Age,string teacherId,string salary,Lesson course){
    Person::getData(Name,Identity,Age,course);
    this->teacherId=teacherId;
    this->salary=salary;
}
//输出
void Teacher::showmessage(){
    Person::showmessage();
    cout<<"     "<<teacherId<<"           "<<salary<<"      ";
    this->course.LesInterFace();
}
//更改工资
void Teacher::changeSalary(string salary){
    this->salary=salary;
}
//更改教师工号
void Teacher::changeTeacherId(string teacherId){
    this->teacherId=teacherId;
}
//获取教师工号
string Teacher::getTeacherId(){
    return this->teacherId;
}
//获取工资
string Teacher::getSalary(){
    return this->salary;
}

void Lesson::getData(string LesName,string Point){
    this->LesName=LesName;
    this->Point=Point;
}

void Lesson::changeLesName(string LesName){
    this->LesName=LesName;
}

void Lesson::changePoint(string Point){
    this->Point=Point;
}
string Lesson::getLesName(){
    return this->LesName;
}

string Lesson::getPoint(){
    return this->Point;
}
void Lesson::LesInterFace(){
    cout<<this->LesName<<"      "<<this->Point;
}

程序已经基本完成,但是不知道为什么在文件读入那边读取第二次时程序会崩溃,这个问题亟待解决。

这个问题已经解决,是之前的代码在读取第二次的时候还是从head开始,导致一个空间被分配了两次,这样是不行,修改代码以后程序能正常运行了。现在的代码都是正确代码。

这个程序写了两天,算不上很长,但是也不短了,这其实是一个很简单的程序,主要是使用vs code来写,然后用VC6.0进行编译,很多问题没办法一下子找到,要慢慢的去一个地方一个地方的测试,花费了很多时间,几个比较复杂的功能完成以后,后面就驾轻就熟了,这个程序算是第二次写,之前有说要用更好的方法完成,确实也做到了,虽然不是很完善,不过下一次就打算使用QT来写图形界面程序。

加载全部内容

相关教程
猜你喜欢
用户评论