学生考勤管理系统源代码教程文件Word文件下载.docx
《学生考勤管理系统源代码教程文件Word文件下载.docx》由会员分享,可在线阅读,更多相关《学生考勤管理系统源代码教程文件Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
![学生考勤管理系统源代码教程文件Word文件下载.docx](https://file1.bdocx.com/fileroot1/2023-1/26/a430584d-28b0-4261-a8e5-09c81c17b818/a430584d-28b0-4261-a8e5-09c81c17b8181.gif)
returnjc;
char*getkechen(){char*gk;
gk=kechen;
returngk;
int*gettime();
private:
charname[20];
//姓名
charjieci[3],kechen[10],queke[10];
inttm[3];
staticinttiaoshu;
intxinxi:
:
tiaoshu=0;
int*xinxi:
gettime()
{
int*t;
t=tm;
tm[0]=year;
tm[1]=month;
tm[2]=day;
returnt;
classqkechen:
publicxinxi
qkechen(){kcshu++;
~qkechen(){kcshu--;
intgetrc(xinxist1[],intn,intj);
charqkn[20];
//公有数据成员
intrenci;
staticintkcshu;
//静态数据成员
intqkechen:
kcshu=0;
getrc(xinxist1[],intn,intj)
renci=0;
renci++;
for(inti=0;
i<
n;
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)
returnrenci;
classqstu:
qstu(){qst++;
~qstu(){qst--;
voidprint(xinxi&
st1);
intgetjs(xinxist1[],intn,intj);
intsetjs(intjs=0)
{jieshu=js;
charqstn[20];
intjieshu;
staticintqst;
//静态数据成员
intqstu:
qst=0;
voidqstu:
print(xinxi&
st1)
cout<
<
"
|缺课日期|"
第几节课|"
课程名称|"
缺课类型|"
endl;
|"
*st1.gettime()<
*(st1.gettime()+1)<
*(st1.gettime()+2)<
st1.getjieci()<
st1.getkechen()<
st1.getqklx()<
getjs(xinxist1[],intn,intj)
inti=0,js=0;
xinximin;
if(*(st1[j].getjieci()+2)!
='
\0'
)
js=+2;
else
js++;
for(i=0;
*(st1[i+1].gettime()+2)==*(st1[j].gettime()+2))
if(strcmp(st1[i+1].getname(),qstn)==0)
if(*(st1[i].getjieci()+2)!
jieshu=js;
returnjieshu;
//函数声明
intshuru(xinxist1[]);
voidchaxun(xinxist1[],qstuqt[]);
voidxiugai(xinxist1[],intn);
voidtongji1(xinxist1[],qstuqt1[]);
voidtongji2(xinxist1[],qkechenqk1[]);
voidcaidan();
voidxiansi(xinxi&
voidsetqstn(xinxist1[],qstuqt1[],intn);
voidsetqkn(xinxist1[],qkechenqk[],intn);
//全局变量
intg,k=1,b=1;
intq=-1;
charname[20],kechen[10],queke[10],jieci[3];
inty,m,d;
//主函数
intmain()
xinxitl[15];
//定义15条信息类对象
qstuqt[10];
qkechenqk[6];
intch;
while
(1)
{cout<
********欢迎进入学生考勤管理系统!
*********"
caidan();
--------请选择菜单项:
cin>
>
ch;
switch(ch)
{case1:
g=shuru(tl);
break;
case2:
xiugai(tl,g);
case3:
chaxun(tl,qt);
case4:
tongji1(tl,qt);
case5:
tongji2(tl,qk);
case6:
exit(0);
return0;
voidcaidan()
{system("
colorA"
);
*************************************************************"
*学生考勤管理系统*"
1.-------------录入学生的缺课记录---------------------------*"
cout<
2.-------------修改学生的缺课记录---------------------------*"
3.-------------查询学生的缺课情况---------------------------*"
4.--------统计某段时间内旷课学生姓名及旷课节数--------------*"
5.--------统计某段时间内旷课的课程及旷课人次----------------*"
6.----------------退出系统----------------------------------*"
//输入函数
intshuru(xinxist1[])
{chara;
------输入开始!
----"
do{q++;
请输入学生姓名"
name;
st1[q].setname(name);
请输入课程名称"
kechen;
st1[q].setkechen(kechen);
请输入缺课日期"
y>
m>
d;
st1[q].settime(y,m,d);
请输入缺课类型"
queke;
st1[q].setqklx(queke);
请输入缺课节次"
jieci;
st1[q].setjieci(jieci);
是否还要继续输入:
(y/n)"
a;
}while(a=='
y'
returnq+1;
voidxiugai(xinxist1[],intn)
intk=1,j=0,a[10];
intflgh;
inth;
while(k==1)
{cout<
请输入你要修改缺课记录的学生姓名"
flgh=0;
if(strcmp(name,st1[i].getname())==0)
do{a[j]=i;
1.修改日期2.修改节次3.修改课程名称4.修改缺课类型"
请输入要选择的数值(1,2,3,4)"
intb;
b;
if(b==1)
请输入新日期"
st1[i].settime(y,m,d);
elseif(b==2)
请输入新节次"
st1[i].setjieci(jieci);
elseif(b==3)
请输入新课程名称"
st1[i].setkechen(kechen);
elseif(b==4)
请输入新缺课类型"
st1[i].setqklx(queke);
flgh=1;
j++;
}while(b<
1||b>
4);
if(flgh==0)
没有你要找的学生姓名,请重试要退出请按0"
k;
还要继续吗(1\0)退出请按0"
j;
h=a[i];
xiansi(st1[h]);
voidchaxun(xinxist1[],qstuqt[])
charn='
;
intu[10];
while(n=='
intj=0;
输入你要查询的学生姓名:
inti=0;
for(;
g;
u[j]=i;
if(j==0)
没有你所要的学生名字!
//没有找到
是否退出退出请按n\n"
for(inta=0;
a<
a++)
//只有一条信息
if(j<
2)
{i=u[a];
*st1[i].gettime()<
*(st1[i].gettime()+1)<
*(st1[i].gettime()+2)<
|"
st1[i].getjieci()<
st1[i].getkechen()<
st1[i].getqklx()<
//两条信息以上排序
i=u[a];
if(*(st1[i].gettime()+1)<
*(st1[i+1].gettime()+1))
qt[i].print(st1[i]);
if(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&
*(st1[i+1].gettime()+2))
*(st1[i].gettime()+2)==*(st1[i+1].gettime()+2))
if(strcmp(st1[i].getjieci(),st1[i+1].getjieci())==-1)
是否继续查询(y/n)继续请按y退出按n"
//统计某段时间内旷课学生姓名及旷课节数
voidtongji1(xinxist1[],qstuqt1[])
intd1=0,js=0;
if(g==0)
没有你要统计的学生信息请返回菜单录入学生缺课信息"
elseif(g==1)
姓名:
st1[0].getname()<
if(*(st1[0].getjieci()+2)!
节数:
js<
//信息按时间排序
{inti=0;
(g-1);
{min=st1[i];
st1[i]=st1[i+1];
st1[i+1]=st1[i];
d1++;
for(intj=0;
j<
(g-d1);
j++)
*st1[j].gettime()<
*(st1[j].gettime()+1)<
*(st1[j].gettime()+2)<
{setqstn(st1,qt1,g);
qt1[i].qstn<
qt1[i].getjs(st1,g,i)<
//统计某段时间内旷课的课程及旷课人次
voidtongji2(xinxist1[],qkechenqk1[])
{intd1=0,rc=0;
课程名:
st1[0].getkechen()<
rc++;
人数:
rc<
{setqkn(st1,qk1,g);
qk1[i].qkn<
qk1[i].getrc(st1,g,i)<
学生姓名|"
*(st1.gettime())<
*(st1.gettime()+2)
st1.getname()<
//设置缺课学生名
voidsetqstn(xinxist1[],qstuqt1[],intn)
{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)
if(i==0)
strcpy(qk[0].qkn,st1[i].getkechen());
elseif(strcmp(st1[i].getkechen(),st1[i+1].getkechen())!
{strcpy(qk[i].qkn,st1[i+1].getkechen());
b++;