C++实现简单信息管理系统

本文实例为大家分享了C++实现简单信息管理系统的具体代码,供大家参考,具体内容如下

信息管理系统

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

该系统使用了链表来链接各个数据。
程序的基本功能是打算写两个系统,输入1和账号密码进入学生管理系统
输入2和账号密码进入教师管理系统
但是我只写了教师管理系统,因为这是学校的作业,而且之前我有写过学生管理系统了,所以没打算再写一次,以后有时间再说。
进入教师管理系统以后 :
输入1:用户自己增加教师信息
输入2:用户可以通过教师工号更改教师的姓名或身份证号或年龄或教师工号或者工资或者执教课程或课程学分。
输入3:通过教师工号来删除特定教师
输入4:显示所有的教师信息
输入5:从指定文件(D:\1808190126许达峰\Data.txt)读入信息。
输入6:显示符合某个特定信息的教师,可以用教师姓名、身份证、工号、工资、年龄、执教课程进行检索
输入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<<"请依次输入教师的姓名、身份证号(后四位)、年龄、教师工号、工资、执教课程、课程学分:";
        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<<"请依次输入教师的姓名、身份证号(后四位)、年龄、教师工号、工资、执教课程、课程学分:";
        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更改身份证号      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<<" 姓名      身份证号     年龄    教师工号     工资    执教课程   课程学分   "<<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.根据身份证号检索"<<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);
//更改身份证号
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);
//检索身份证号
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;
    }
}
//更改身份证号
void changeIdentify(List head,string teacherId){
    List current=findTeacher(head,teacherId);
    if(current){
        if(current->self.getTeacherId()==teacherId){
            string Identify;
            cout<<"请输入新身份证号"<<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<<" 姓名      身份证号     年龄    教师工号     工资    执教课程   课程学分   "<<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;
    }
}
//检索身份证号
void searchIdentify(List head){
    List current=head;
    string Identify;
    cout<<"请输入教师身份证:";
    cin>>Identify;
    
    cout<<"---------------------------------------------------------------------------"<<endl;
    cout<<" 姓名      身份证号     年龄    教师工号     工资    执教课程   课程学分   "<<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<<" 姓名      身份证号     年龄    教师工号     工资    执教课程   课程学分   "<<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<<" 姓名      身份证号     年龄    教师工号     工资    执教课程   课程学分   "<<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<<" 姓名      身份证号     年龄    教师工号     工资    执教课程   课程学分   "<<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<<" 姓名      身份证号     年龄    教师工号     工资    执教课程   课程学分   "<<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);
        //更改身份证
        void changeIdentify(string Identify);
        //更改年龄
        void changeAge(string Age);
        //更改课程名称
        void changeCoureseLesName(string LesName);
        void changeCouresePoint(string Point);
        //获取姓名
        string getName();
        //获取身份证号
        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;
}
//更改身份证
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;
}
//获取身份证号
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来写图形界面程序。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C++学生信息管理系统

    本文实例为大家分享了C++学生信息管理系统源码,供大家参考,具体内容如下 1. tea_list.c #include<stdio.h> #include<stdlib.h> #include<string.h> #include"teacher.h" int sq_tea ; PTEA head = NULL ; FILE *fp ; int tea_llopen(const char* path)//打开文件 { fp=fopen(path,&q

  • C++实现学生考勤信息管理系统

    学生考勤信息管理系统记录了学生的缺课情况,它包括: 缺课日期.第几节课.课程名称.学生姓名.学生学号.缺课类型(迟到.请假及旷课).系统具有以下功能: 1).录入学生的缺课记录: 2).修改某个学生的缺课记录: 3).查询某个学生的缺课情况: 4).统计 旷课学生姓名及旷课次数,按旷课次数由多到少排序: 5).统计 有学生旷课的课程及旷课人次(每次课时累加),按旷课人次由多到少排序: 重新修改了下,之前的4,5功能未实现. #include<iostream> #include<fstr

  • C++利用链表实现图书信息管理系统

    C++利用链表实现一个简单的图书信息管理系统,供大家参考,具体内容如下 (1)图书信息包括ISBN号.书名.作者名.价格和数量等: (2)系统的主要功能包括:图书信息的创建.输出图书信息.查询图书信息.增加图书信息.删除图书信息. #include <stdio.h> #include <stdlib.h> #include <string.h> //创建结构体及其成员 typedef struct Node { int num;//编号 char name[20];/

  • C++实现高校人员信息管理系统

    高校人员信息管理系统设计,供大家参考,具体内容如下 一.问题描述及功能要求 1.问题描述 某高校有四类员工:教师.实验员.行政人员,教师兼行政人员:共有的信息包括:编号.姓名.性别.年龄等.其中,教师还包含的信息有:所在系部.专业.职称:实验员还包含的信息由:所在实验室.职务:行政人员还包含的信息有:政治面貌.职称等. 2.功能要求 (1)添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复

  • C++使用文件实现学生信息管理系统

    C++实现文件实现学生信息管理系统,供大家参考,具体内容如下 功能如下: 添加学生信息(学生添加完成将直接保存进文件) 成绩信息(c语言,大学英语,高等数学) 个人信息(姓名.性别.学号.年龄) 显示学生信息 查询学生信息 按学号查询 按名字查询 按学号删除学生信息 修改学生信息 按学号对学生进行排序 类的设计: 表示成绩的Score类: class Score{ public: float cLauage;//c语言成绩 float math;//高数成绩 float english;//英语

  • C++实现简单的职工信息管理系统

    功能主模块描述 模块一:增加人员函数Add():增加职工基本信息. 模块二:删除人员函数Delete():删除指定的职工的基本信息以及薪酬. 模块三:修改人员函数Modify():修改指定的职工基本信息. 模块四:查询职工信息函数Search():查询指定的职工信息以及薪酬. 模块五:排序职工信息函数Sort():职工信息排序功能实现 模块六:基础数据设置函数Set():设置五类职位的基本薪酬. 模块七:数据存盘,载入函数Save()以及Load():储存职工基本信息,薪酬以及五类职位的基本薪酬

  • C++实现景区信息管理系统

    本文实例为大家分享了C++实现景区信息管理系统的具体代码,供大家参考,具体内容如下  1.1 建立主程序应用菜单选项 主程序应用菜单选项包含所实现的所有功能,并且对选项采用数字标识进行选择,对其他错误输入可以进行判别,提示输入错误. 1.2 导游线路图的创建级景区分布图的输出 用邻接链表存储景点分布图的信息,(带权无向)图的邻接链表.输出景区景点分布图(邻接矩阵).图中边的权值∞用32767表示. 1.3  输出导游线路图 景区旅游信息管理系统中制订旅游景点导游线路策略,首先通过遍历景点,给出一

  • linux下C/C++学生信息管理系统

    一.简介 大学期间用vc++开发的简单的学生信息管理系统,主要有添加学生信息.删除学生信息.修改学生信息.查询学生信息.显示学生信息.综合统计(各课程平均成绩和合格率).总分排序和退出系统.设计: 二.详解 1.代码 (1)main.cpp #include<iostream> #include<fstream> #include<iomanip> //使用setw()函数 #include<windows.h> //使用system()函数 #includ

  • C++实现简单的信息管理系统

    本文为大家分享C++实现简单的信息管理系统,小编之前在学习的时候也要做一些管理系统,在网上查了许多资料,现在我把资料分享给大家,希望能够帮助到大家. #include <stdio.h> #include <stdlib.h> #include "file.h" void savaList(Node *head)/**把用户录入的数据存储到文件里面去方便下次读取*/ { FILE *fp=fopen("data\\data.txt" ,&qu

  • C++实现学生信息管理系统

    C++的课设作业,分享出来,希望给初学者一些帮助. 该系统主要用到C++的继承,虚函数.所有学生的信息保存在一个异质链表中,并且链表也进行了封装 课设题目 设计一个学生管理系统,要求如下: 1.学生来自英语系,数学系.计算机系: a) 每个学生的公共信息部分包括:学号.姓名.年龄.系别,高数成绩.英语成绩.体育成绩: b) 英语系学生有综合英语.口语等课程成绩: c) 数学系学生有实变函数.泛函分析.微分几何等课程成绩: d) 计算机系学生有计算机组成原理.计算机体系结构.汇编语言等课程成绩.

随机推荐