c++课设(很久以前做的了)

“高校人员信息管理系统设计”

1、问题描述

某高校有四类员工:教师、实验员、行政人员,教师兼行政人员;共有的信息包括:编号、姓名、性别、年龄等。其中,教师还包含的信息有:所在系部、专业、职称;实验员还包含的信息有:所在实验室、职务;行政人员还包含的信息有:政治面貌、职务等。

2、功能要求

(1)添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。

(2)查询功能:可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。

(3)显示功能:可显示当前系统中所有记录,每条记录占据一行。

(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。

(5)删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存。

(6)统计功能:能根据多种参数进行人员的统计。能统计四类人员数量以及总数,统计男、女员工的数量。

(7)保存功能:可将当前系统中各类人员记录存入文件中,存入方式任意。

(8)读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行使用。

 

 

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
class per
{
    public://教师、实验员、行政人员,教师兼行政人员;
    int num,old;
    char name[20],ge[20];
    void aa();
    void bb()
    {
        cout<<num<<" "<<old<<" "<<name<<" "<<ge;//输出基类特点
    }
};
void per::aa()
{
    cin>>per::num;
    cin>>per::old;
    cin>>per::name;
    cin>>per::ge;
}//输入基类成员
class Teacher:public per         //教师
{
public:
    char dep[50],pro[50],tit[50];
    void cc(){cin>>dep>>pro>>tit;}
    void dd(){cout<<dep<<" "<<pro<<" "<<tit<<endl;}//输入和输出;
};
class Exper:public per                //实验员
{
public:
    char lab[50],work[50];
    void ee(){cin>>lab>>work;}
    void ff(){cout<<lab<<" "<<work<<endl;}//输入和输出
};
class Ap:public per               //行政人员
{
public:
   char PL[20], pos[20];
   void gg(){cin>>PL>>pos;}
   void hh(){cout<<PL<<" "<<pos<<endl;}//输入和输出
};
class TA:public Teacher
{
public:
    char PL[20], pos[20];
   void gg(){cin>>PL>>pos;}
   void hh(){cout<<PL<<" "<<pos<<endl;}
};
int main()
{
    int i,in;
    Teacher tea[100];
    Exper exp[100];
    Ap ap[100];
    TA ta[100];
    int w1,w2,w3,w4;
    w1=w2=w3=w4=0;
    cout<<"----------------------------------\n";
    cout<<"~**欢迎进入高校人员信息管理系统**~\n";
    cout<<"~*********请输入指令*************~\n";
    cout<<"~指令1:  添加人员信息           ~\n";
    cout<<"~指令2:  输出所有人员信息       ~\n";
    cout<<"~指令3:  查询人员信息           ~\n";
    cout<<"~指令4:  修改人员信息           ~\n";
    cout<<"~指令5:  删除人员信息           ~\n";
    cout<<"~指令6:  输出人员总数和各类人数 ~\n";
    cout<<"~指令7:  保存信息至桌面-test1   ~\n";
    cout<<"~指令8:  结束程序               ~\n";
    cout<<"请输入操作指令:\n";
    while(cin>>in)
    {
         if(in<1||in>8){cout<<"指令错误,请重新输入指令";continue;}
        if(in==1)                        //添加信息
        {
            int op;
          cout<<"请进行下一步指令:   \n";
          cout<<"指令1:添加教师信息  \n";
          cout<<"指令2:添加实验员信息\n";
          cout<<"指令3:添加行政员信息\n";
          cout<<"指令4:添加教师兼行政员信息\n";
           cin>>op;
           if(op<1||op>4){cout<<"指令错误,请重新输入指令";continue;}
           if(op==1)
           {
               if(w1>=100){cout<<"人员达到上限\n";continue;}
               tea[w1].aa();
               tea[w1].cc();
               for(i=0;i<w1;i++)
               {
                   if(tea[w1].num==tea[i].num){
                    cout<<"数据重复添加!\n";
                   w1--;break;
               }
               }
               w1++;
           }
           if(op==2)
           {
                if(w2>=100){cout<<"人员达到上限\n";continue;}
               exp[w2].aa();
               exp[w2].ee();
               for(i=0;i<w2;i++)
               {
                   if(exp[w2].num==exp[i].num){
                    cout<<"数据重复添加!\n";
                   w2--;break;
               }
               }
               w2++;
           }
           if(op==3)
           {
                if(w3>=100){cout<<"人员达到上限\n";continue;}
               ap[w3].aa();
               ap[w3].gg();
               for(i=0;i<w3;i++)
               {
                   if(ap[w3].num==ap[i].num){
                    cout<<"数据重复添加!\n";
                   w3--;break;
               }
               }
               w3++;
           }
           if(op==4)
           {
                if(w4>=100){cout<<"人员达到上限\n";continue;}
               ta[w4].aa();
              ta[w4].gg();
               for(i=0;i<w4;i++)
               {
                   if(ta[w4].num==ta[i].num)
                    cout<<"数据重复添加!\n";
                   w4--;break;
               }
               w4++;
           }
        }
        if(in==2)              //输出信息
        {
            for(i=0;i<w1;i++)
            {
                tea[i].bb();
                tea[i].dd();
            }
            for(i=0;i<w2;i++)
            {
                exp[i].bb();
                exp[i].ff();
            }
            for(i=0;i<w3;i++)
            {
                ap[i].bb();
                ap[i].hh();
            }
             for(i=0;i<w4;i++)
            {
                ta[i].bb();
                ta[i].hh();
            }
        }
        if(in==3)       //查询信息
        {
            int sc;
            cout<<"继续输入指令:     \n";
            cout<<"指令1;根据编号查询\n";
            cout<<"指令2:根据名字查询\n";
            cout<<" 输入:";
            cin>>sc;
            if(sc==1)
            {
                int bh,cnt;
                cnt=0;
                cout<<"输入编号:";
                cin>>bh;
                for(i=0;i<w1;i++)
                {
                    if(tea[i].num==bh)
                    {
                        tea[i].bb();
                        tea[i].dd();
                        cnt=1;
                    }
                }
                    for(i=0;i<w2;i++)
                    {
                        if(exp[i].num==bh)
                        {
                            exp[i].bb();
                            exp[i].ff();
                            cnt=1;
                        }
                    }
                    for(i=0;i<w3;i++)
                    {
                        if(ap[i].num==bh)
                        {
                            ap[i].bb();
                            ap[i].hh();
                            cnt=1;
                        }
                    }
                    for(i=0;i<w4;i++)
                    {
                        if(ta[i].num==bh)
                        {
                            ta[i].bb();
                            ta[i].hh();
                            cnt=1;
                        }
                    }
                    if(cnt==0)cout<<"此编号不存在!\n";
                }
            if(sc==2)
            {
                getchar();
                cout<<"请输入名字\n";
                int cnt=0;
                char bt[20];
                gets(bt);
                for(i=0;i<w1;i++)
                {
                    if(strcmp(tea[i].name,bt)==0)
                    {
                        tea[i].bb();
                        tea[i].dd();
                       cnt=1;
                    }
                }
                for(i=0;i<w2;i++)
                {
                    if(strcmp(exp[i].name,bt)==0)
                    {
                        exp[i].bb();
                        exp[i].ff();
                       cnt=1;
                    }
                }
                 for(i=0;i<w3;i++)
                {
                    if(strcmp(ap[i].name,bt)==0)
                    {
                        ap[i].bb();
                        ap[i].hh();
                       cnt=1;
                    }
                }
                 for(i=0;i<w4;i++)
                {
                    if(strcmp(ta[i].name,bt)==0)
                    {
                        ta[i].bb();
                        ta[i].hh();
                       cnt=1;
                    }
                }
                if(cnt==0)cout<<"没有找到该名字匹配项!\n";
            }
        }
        if(in==4)                      //修改信息。
        {
            int cnt;
            int sb;
            cout<<"输入需要修改的编号;\n";
           cin>>sb;
            for(i=0;i<w1;i++){
                if(tea[i].num==sb)
                {
                    cout<<"重新输入修改后的信息";
                    tea[i].aa();
                    tea[i].cc();
                    cnt=1;
                }
            }
            for(i=0;i<w2;i++){
                if(exp[i].num==sb)
                {
                    cout<<"重新输入修改后的信息";
                    exp[i].aa();
                    exp[i].ee();
                    cnt=1;
                }
            }
                for(i=0;i<w3;i++)
                {
                    if(ap[i].num==sb)
                  {
                    cout<<"重新输入修改后的信息";
                    ap[i].aa();
                    ap[i].gg();
                    cnt=1;
                  }
                }
                for(i=0;i<w4;i++)
                {
                    if(ta[i].num==sb)
                  {
                    cout<<"重新输入修改后的信息";
                    ta[i].aa();
                    ta[i].gg();
                    cnt=1;
                  }
                }
                if(cnt==0)cout<<"修改的人员不存在!\n";
        }
        if(in==5)                //删除人员信息
        {
            int i;
            cout<<"请输入要删除的人员编号;\n";
            int dele;
            cin>>dele;
            for(i=0;i<w1;i++)
            {
                if(tea[i].num==dele)
                {
                   for(int j=i;j<w1-1;j++) tea[j]=tea[j+1];
                    w1--;
                }
                if(i==w1)cout<<"查无此人!\n";
            }
            for(i=0;i<w2;i++)
            {
                if(exp[i].num==dele)
                {
                    for(int j=i;j<w2-1;j++) exp[i]=exp[i+1];
                    w2--;
                }
                if(i==w2)cout<<"查无此人!\n";
            }
            for(i=0;i<w3;i++)
            {
                if(ap[i].num==dele)
                {
                    for(int j=i;j<w3-1;j++) ap[i]=ap[i+1];
                    w3--;
                }
                if(i==w3)cout<<"查无此人!\n";
            }
            for(i=0;i<w4;i++)
            {
                if(ta[i].num==dele)
                {
                    for(int j=i;j<w4-1;j++)ta[i]=ta[i+1];
                    w4--;
                }
                if(i==w4)cout<<"查无此人!\n";
            }
            cout<<"删除成功!\n";
        }

      if(in==6)
      {
           cout<<"人员总数:"<<w1+w2+w3+w4<<endl;
           cout<<"教师人员:"<<w1<<"\t"<<"实验员:"<<w2<<endl;
           cout<<"行政人员:"<<w3<<"\t"<<"教师兼行政人员:"<<endl;
      }
      if(in==7)
      {
          FILE *fl;
          fl=fopen("test.dat","w");
          for(i=0;i<w1;i++)
          {
              fprintf(fl,"%d %s %d %s %s %s %s\n",tea[i].num,tea[i].name,tea[i].old,tea[i].ge,tea[i].dep,tea[i].pro,tea[i].tit);
          }
          for(i=0;i<w2;i++)
          {
               fprintf(fl,"%d %s %d %s %s %s\n",exp[i].num,exp[i].name,exp[i].old,exp[i].lab,exp[i].work);
          }
          for(i=0;i<w3;i++)
          {
               fprintf(fl,"%d %s %d %s %s %s\n",ap[i].num,ap[i].name,ap[i].old,ap[i].PL,ap[i].pos);
          }
          for(i=0;i<w4;i++)
          {
               fprintf(fl,"%d %s %d %s %s %s\n",ta[i].num,ta[i].name,ta[i].old,ta[i].PL,ta[i].pos,ta[i].pro,ta[i].tit);
          }
        fclose(fl);
      }
     if(in==8)break;
     cout<<"请输入操作指令:\n";
    }
    cout<<"欢迎下次使用!\n";
}

 

posted @ 2019-03-21 21:01  姿态H  阅读(2988)  评论(1编辑  收藏  举报