配色: 字号:
学生考勤管理系统
2012-06-24 | 阅:  转:  |  分享 
  
/

缺点:当输入多个人的缺课信息时,统计功能有问题

classtime

classxinxi:publictime

classqkechen:publicxinxi

classqstu:publicxinxi

/

#include

#include

usingnamespacestd;

/---1--时间------/

classtime

{

public:

time(inty=0,intm=0,intd=0)

{

year=y;month=m;day=d;

}

~time(){}

protected:

intyear,month,day;

};

/----1--时间------/

/---2--信息------/

classxinxi:publictime

{

public:

xinxi(){tiaoshu++;}

~xinxi(){tiaoshu--;}

voidsetname(charn)

{

strcpy(name,n);

}

voidsettime(inty,intm,intd)

{

year=y;

month=m;

day=d;

}

voidsetqklx(charqk)

{

strcpy(queke,qk);

}

voidsetjieci(charjc)

{

strcpy(jieci,jc);

}

voidsetkechen(charkc)

{

strcpy(kechen,kc);

}

chargetname()

{

charn;

n=name;

returnn;

}

chargetqklx()

{

charqk=queke;

returnqk;

}

chargetjieci()

{

charjc;

jc=jieci;

returnjc;

}

chargetkechen()

{

chargk;

gk=kechen;

returngk;

}

intgettime();//获得时间

private:

charname[20];//姓名

charjieci[3];//节次

charkechen[10];//课程名

charqueke[10];//缺课类型

inttm[3];//时间

staticinttiaoshu;/////////////////////////////////////////////////////

};

intxinxi::tiaoshu=0;

intxinxi::gettime()

{

intt;

t=tm;

tm[0]=year;

tm[1]=month;

tm[2]=day;

returnt;

}

/---2--信息------/

/----3-缺课课程--------/

classqkechen:publicxinxi

{

public:

qkechen(){kcshu++;}

~qkechen(){kcshu--;}

intgetrc(xinxist1[],intn,intj);

charqkn[20];

private:

intrenci;

staticintkcshu;

};

intqkechen::kcshu=0;

intqkechen::getrc(xinxist1[],intn,intj)

{

renci=0;

renci++;

for(inti=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++;

returnrenci;

}

/----3--缺课课程-----/

/----4-缺课学生------/

classqstu:publicxinxi

{

public:

qstu(){qst++;}

~qstu(){qst--;}

voidprint(xinxi&st1);

intgetjs(xinxist1[],intn,intj);

intsetjs(intjs=0){jieshu=js;}

charqstn[20];

private:

intjieshu;

staticintqst;

};

intqstu::qst=0;

voidqstu::print(xinxi&st1)

{

cout<<"|缺课日期|"<<"第几节课|"<<"课程名称|"<<"缺课类型|"<
cout<<"|"<
<
}

intqstu::getjs(xinxist1[],intn,intj)

{inti=0,js=0;

xinximin;

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;

returnjieshu;

}

/----4--缺课学生----/

//函数声明

intshuru(xinxist1[]);

voidxiugai(xinxist1[],intn);

voidxiansi(xinxi&st1);//显示

voidsetqkn(xinxist1[],qkechenqk[],intn);

voidsetqstn(xinxist1[],qstuqt1[],intn);

voidchaxun(xinxist1[],qstuqt[]);

voidcaidan();

voidtongji1(xinxist1[],qstuqt1[]);

voidtongji2(xinxist1[],qkechenqk1[]);

intg,k=1,b=1;

intq=-1;

charname[20],kechen[10],queke[10],jieci[3];

inty,m,d;

intmain()

{

xinxitl[15];

qstuqt[10];

qkechenqk[6];

intch;

while(1)

{

cout<<""<
cout<<"欢迎进入考勤管理系统!"<
caidan();//

cout<<"请选择菜单项:"<
cin>>ch;

switch(ch)

{

case1:g=shuru(tl);break;

case2:xiugai(tl,g);break;

case3:chaxun(tl,qt);break;

case4:tongji1(tl,qt);break;

case5:tongji2(tl,qk);break;

case6:exit(0);

}

}

return0;

}

intshuru(xinxist1[])//输入xinxist1[]定义了一个xinxi类的数组对象

{

system("cls");

chara;

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''||a==''Y'');

returnq+1;

}

voidxiugai(xinxist1[],intn)//修改

{

intk=1,j=0,a[10];

intflgh;

inth;

while(k==1)//判断是否继续修改当

{

cout<<"请输入你要修改缺课记录的学生姓名"<
cin>>name;

flgh=0;

for(inti=0;i
if(strcmp(name,st1[i].getname())==0)//strcmp为比较函数

do{

a[j]=i;

cout<<"1.修改课程名称\n2.修改缺课日期\n3.修改缺课类型\n4.修改缺课节次\n";

cout<<"请输入你要修改的序号:"<
intb;

cin>>b;

if(b==1)

{

cout<<"请输入新的课程名称:"<
cin>>kechen;

st1[i].setkechen(kechen);

}

elseif(b==2)

{

cout<<"请输入新的缺课日期:"<
cin>>y>>m>>d;

st1[i].settime(y,m,d);

}

elseif(b==3)

{

cout<<"请输入新的缺课类型:"<
cin>>queke;

st1[i].setqklx(queke);

}

elseif(b==4)

{

cout<<"请输入新的缺课节次:"<
cin>>jieci;

st1[i].setjieci(jieci);

}

flgh=1;//注意此处确定是否找到已经存在学生姓名

j++;

}while(b<1||b>4);

if(flgh==0)

{

cout<<"没有你要找的学生姓名,请重试要退出请按0"<
cin>>k;

}

else//继续修改

{

cout<<"还要继续吗(1\0)退出请按0"<
cin>>k;

}

}

for(inti=0;i
{

h=a[i];

xiansi(st1[h]);

}

}

voidchaxun(xinxist1[],qstuqt[])//查询

{

charn=''y'';

intu[10];

while(n==''y'')

{

intj=0;

cout<<"输入你要查询的学生姓名:"<
cin>>name;

inti=0;

for(;i
if(strcmp(name,st1[i].getname())==0)//strcmp为比较函数用于判断是否是已存在的名字

{

u[j]=i;

j++;

}

if(j==0)

{

cout<<"没有你所要的学生名字!";

cout<<"是否退出退出请按n\n";

cin>>n;

}

for(inta=0;a
{

if(j<2)

{

i=u[a];

cout<<"|缺课日期|"<<"缺课节次|"<<"课程名称|"<<"缺课类型|"<
cout<<"|"<
"|"<
}

//排序(根据时间)

else

{

i=u[a];

if((st1[i].gettime()+1)<(st1[i+1].gettime()+1))

qt[i].print(st1[i]);//输出较早时间的信息

else

if((st1[i].gettime()+1)==(st1[i+1].gettime()+1)&&(st1[i].gettime()+2)<(st1[i+1].gettime()+2))

qt[i].print(st1[i]);

else

if((st1[i].gettime()+1)==(st1[i+1].gettime()+1)&&(st1[i].gettime()+2)==(st1[i+1].gettime()+2))

if(strcmp(st1[i].getjieci(),st1[i+1].getjieci())==-1)

qt[i].print(st1[i]);

}

cout<<"是否继续查询(y/n)继续请按y退出按n"<
cin>>n;

}

}

}

voidtongji1(xinxist1[],qstuqt1[])//统计1某段时间内旷课学生姓名及旷课节数

{

intd1=0,js=0;

xinximin;

if(g==0)

cout<<"没有你要统计的学生信息请返回菜单录入学生缺课信息"<
elseif(g==1)

{

cout<<"姓名:"<
if((st1[0].getjieci()+2)!=''\0'')

js=+2;

else

js++;

cout<<"节数:"<
}

else

//信息按时间排序

{

inti=0;

for(;i<(g-1);i++)

{

if((st1[i].gettime()+1)<(st1[i+1].gettime()+1))

{min=st1[i];st1[i]=st1[i+1];st1[i+1]=st1[i];}

else

if((st1[i].gettime()+1)==(st1[i+1].gettime()+1)&&(st1[i].gettime()+2)<(st1[i+1].gettime()+2))

{

min=st1[i];st1[i]=st1[i+1];st1[i+1]=st1[i];

}

else

if((st1[i].gettime()+1)==(st1[i+1].gettime()+1)&&(st1[i].gettime()+2)==(st1[i+1].gettime()+2))

d1++;

}

for(intj=0;j<(g-d1);j++)

{

cout<
for(i=0;i
{

setqstn(st1,qt1,g);

cout<<"姓名:"<
cout<<"节数:"<
}

}

}



}

voidtongji2(xinxist1[],qkechenqk1[])//统计2某段时间内旷课的课程及旷课人次

{

intd1=0,rc=0;

xinximin;

if(g==0)

cout<<"没有你要统计的学生信息请返回菜单录入学生缺课信息"<
elseif(g==1)

{cout<<"课程名:"<
rc++;

cout<<"人数:"<
}

else

{

inti=0;

for(;i
{

if((st1[i].gettime()+1)<(st1[i+1].gettime()+1))

{

min=st1[i];

st1[i]=st1[i+1];

st1[i+1]=st1[i];

}

else

if((st1[i].gettime()+1)==(st1[i+1].gettime()+1)&&(st1[i].gettime()+2)<(st1[i+1].gettime()+2))

{

min=st1[i];st1[i]=st1[i+1];st1[i+1]=st1[i];

}

else

if((st1[i].gettime()+1)==(st1[i+1].gettime()+1)&&(st1[i].gettime()+2)==(st1[i+1].gettime()+2))

d1++;

}

for(intj=0;j<(g-d1);j++)

{

cout<
for(i=0;i
{

setqkn(st1,qk1,g);

cout<<"课程名:"<
cout<<"人数:"<
}

}

}



}

voidxiansi(xinxi&st1)//显示

{

cout<<"|缺课日期|"<<"第几节课|"<<"课程名称|"<<"学生姓名|"<<"缺课类型|"<
cout<<"|"<<(st1.gettime())<<"|"<<(st1.gettime()+1)<<(st1.gettime()+2)

<<"|"<
}

voidsetqstn(xinxist1[],qstuqt1[],intn)//设置缺课学生名

{

inti=0;

for(;i
{

if(i==0)

strcpy(qt1[0].qstn,st1[i].getname());

elseif(strcmp(st1[i].getname(),st1[i+1].getname())!=0)

{

strcpy(qt1[i].qstn,st1[i].getname());

k++;

}

}

}

voidsetqkn(xinxist1[],qkechenqk[],intn)//设置有缺课学生的课程名

{

inti=0;

for(;i
{

if(i==0)

strcpy(qk[0].qkn,st1[i].getkechen());

elseif(strcmp(st1[i].getkechen(),st1[i+1].getkechen())!=0)

{

strcpy(qk[i].qkn,st1[i+1].getkechen());

b++;

}

}

}

voidcaidan()//菜单

{

system("colorA");

cout<<""<
cout<<"考勤管理系统"<
cout<<""<
cout<<"1.录入学生的缺课记录"<
cout<<"2.修改学生的缺课记录"<
cout<<"3.查询学生的缺课情况"<
cout<<"4.统计某段时间内旷课学生姓名及旷课节数"<
cout<<"5.统计某段时间内旷课的课程及旷课人次"<
cout<<"6.退出系统"<
cout<<""<
}



献花(0)
+1
(本文系Honey_Dog首藏)