#include
//时间类
class time {public:
time(int y=0,int m=0,int d=0) {year=y;month=m;day=d;} ~time(){} protected:
int year,month,day; };
//信息类
class xinxi:public time { public:
xinxi(){ tiaoshu++;} ~xinxi(){tiaoshu--;}
void setname(char *n){strcpy(name,n);}
void settime(int y,int m,int d){year=y;month=m;day=d;} void setqklx(char *qk){strcpy(queke,qk);} void setjieci(char *jc){strcpy(jieci,jc);}
void setkechen(char *kc){strcpy(kechen,kc);} char *getname(){char *n;n=name;return n;} char *getqklx(){char *qk=queke;return qk;} char *getjieci(){char *jc;jc=jieci;return jc;}
char *getkechen(){char *gk;gk=kechen;return gk;} int *gettime(); private:
char name[20];//姓名
char jieci[3],kechen[10],queke[10]; int tm[3];
static int tiaoshu; };
int xinxi::tiaoshu=0;
int *xinxi::gettime() { int *t; t=tm;
tm[0]=year; tm[1]=month; tm[2]=day; return t; }
//缺课课程类
class qkechen:public xinxi {public:
qkechen(){kcshu++;} ~qkechen(){kcshu--;}
int getrc(xinxi st1[],int n,int j); char qkn[20];//公有数据成员
private: int renci;
static int kcshu;//静态数据成员 };
int qkechen::kcshu=0;
int qkechen::getrc(xinxi st1[],int n,int j) { renci=0; renci++;
    for(int i=0;i     if(*(st1[i+1].gettime()+1)==*(st1[j].gettime()+1)&&*(st1[i+1].gettime()+2)==   *(st1[j].gettime()+2))   if(strcmp(qkn,st1[i].getkechen())==0)     renci++;    return renci;  }    //缺课学生类    class qstu:public xinxi  {public:    qstu(){qst++;}   ~qstu(){qst--;}    void print(xinxi &st1);    int getjs(xinxi st1[],int n,int j);   int setjs(int js=0)   {jieshu=js;}   char qstn[20];   private:      int jieshu;       static int qst; //静态数据成员 };     int qstu::qst=0;        //类的实现    void qstu::print(xinxi &st1)   {    cout<<\缺课日期 |\第几节课 |\课程名称 |\缺课类型|\     cout<<\)<<\    <   int qstu::getjs(xinxi st1[],int n,int j)   {  int i=0,js=0;       xinxi min;        if(*(st1[j].getjieci()+2)!='\\0')     js=+2;    else     js++;                  for(i=0;i if(*(st1[i+1].gettime()+1)==*(st1[j].gettime()+1)&&*(st1[i+1].gettime()+2)==*(st1[j].gettime()+2))           if(strcmp(st1[i+1].getname(),qstn)==0)    {      if(*(st1[i].getjieci()+2)!='\\0')     js=+2;    else     js++;    }      jieshu=js;   return jieshu;   }        // 函数声明  int shuru(xinxi st1[]);  void chaxun(xinxi st1[],qstu qt[]); void xiugai(xinxi st1[],int n);  void tongji1(xinxi st1[],qstu qt1[]); void tongji2(xinxi st1[],qkechen qk1[]); void caidan();  void xiansi(xinxi &st1);  void setqstn(xinxi st1[],qstu qt1[],int n); void setqkn(xinxi st1[],qkechen qk[],int n);    //全局变量  int g,k=1,b=1; int q=-1;  char name[20],kechen[10],queke[10],jieci[3]; int y,m,d;        //主函数 int main()    {   xinxi tl[15];//定义15条信息类对象    qstu qt[10];    qkechen qk[6];       int ch;   while(1)   {cout<<\欢迎进入学生考勤管理系统!*********\   caidan();        cout<<\请选择菜单项:\      cin>>ch;   switch(ch)    {case 1: g=shuru(tl); break;   case 2: xiugai(tl,g); break;   case 3: chaxun(tl,qt); break;   case 4: tongji1(tl,qt); break;   case 5: tongji2(tl,qk); break;   case 6: exit(0);   }  }    return 0; }              //菜单函数       void caidan() { system(\     cout<<\cout<<\              学生考勤管理系统                            *\cout<<\cout<<\录入学生的缺课记录---------------------------*\cout<<\修改学生的缺课记录---------------------------*\cout<<\查询学生的缺课情况---------------------------*\ cout<<\统计某段时间内旷课学生姓名及旷课节数--------------*\ cout<<\统计某段时间内旷课的课程及旷课人次----------------*\cout<<\退出系统----------------------------------*\ }         //输入函数    int shuru(xinxi st1[]) { char a;    cout<<\输入开始!----\  do{ q++;    cout<<\请输入学生姓名\     cin>>name;    st1[q].setname(name);     cout<<\请输入课程名称\  cin>>kechen;    st1[q].setkechen(kechen);    cout<<\请输入缺课日期\  cin>>y>>m>>d;   st1[q].settime(y,m,d);    cout<<\请输入缺课类型\     cin>>queke;    st1[q].setqklx(queke);    cout<<\请输入缺课节次\  cin>>jieci;    st1[q].setjieci(jieci);    cout<<\是否还要继续输入:(y/n)\  cin>>a;   }while(a=='y');   return q+1; }       //修改函数    void xiugai(xinxi st1[],int n)   {           int k=1,j=0,a[10];    int flgh;          int h;          while(k==1)      { cout<<\请输入你要修改缺课记录的学生姓名\          cin>>name;     flgh=0;     for(int i=0;i