学生考勤管理系统课程设计Word下载.docx
《学生考勤管理系统课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《学生考勤管理系统课程设计Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
这两个类是所有函数进行操作的基础。
Records(派生类)
student*r
taticintn
voidrecords()
voidinput()
voidwt(int&
i)
voidrd()
voidpri1()
voidpri2()
voidsearch()
voidedt()
voidwdt(int&
n)
Student(基类)
charcname[100]
charsname[100]
intsnum
intcno
inttype
inttime
voidset()
voidrecords:
:
input()为学生考勤系统的录入模块,在录入学生缺课信息时根据系统提示逐一输入。
每输入完一条信息,系统会提示是否继续输入,用户可以选择继续或返回主菜单。
edt()为学生考勤系统的修改模块,在修改学生缺课信息时,用户首先输入要修改的学生姓名,系统会检索如果系统中有该学生的相关信息则系统首先会提示用户修改该学生的那一部分信息,用户可自行选择。
如果系统中没有该学生的相关信息,则系统会给相关提示,用户可以选择继续输入要修改的学生姓名或选择退出返回主菜单。
search()为学生考勤系统的学生查询模块,在查询学生缺课信息时,用户先输入要查询的学生学号,系统检索判断是否存在该学生,若存在则输出查询到的该学生的信息。
pri1()为学生考勤系统的统计旷课学生模块,统计某段时间内,旷课学生姓名及旷课次数
时,用户先输入要查询的时间间隔,系统自动检索在该时间段内的学生缺课信息并按旷课次数由多到少排序。
pri2()为学生考勤系统的统计旷课课程模块,统计某段时间内,有学生旷课的课程及旷课人次,用户先输入要查询的时间间隔,系统自动检索在该时间段内的有学生旷课的课程并按旷课人次由多到少排序。
2.2程序流程图
整个程序的流程如图2-1所示。
图2-1程序流程图
第3章程序实现
3.1程序中各函数分析
函数名
函数功能
input()
录用学生课程考勤信息
wt(int&
信息以文件的形式保存
wdt(int&
修改信息以文件的形式保存
pri1()
统计某段时间内旷课学生姓名及旷课节数
pri2()
统计某段时间内旷课的课程及旷课人次
search()
查询学生考勤信息
edt()
修改学生考勤信息
rd()
信息以文件的形式读出
表3-1程序中的函数列表
3.2类的实现
1、学生信息课程类
学生信息类包括学生的学号、姓名、课程、缺课节数、缺课类型、缺课时间。
classstudent
{
public:
voidset(intt,intb,char*s,char*c,intcno,inttype)
{
strcpy(cname,c);
strcpy(sname,s);
this->
snum=b;
cno=cno;
type=type;
time=t;
}
charcname[100],sname[100];
//定义缺课课程名称,学生名称
intsnum,cno,type,time;
//定义学生学号,缺课节次,缺课类型,时间
};
2、实现学生信息和考勤情况操作的类
classrecords:
publicstudent
records()
{r=newstudent[max];
}
voidinput();
voidwt(int&
i);
voidrd();
//信息以文件的形式读出
voidpri1();
voidpri2();
voidsearch();
voidedt();
voidwdt(int&
n);
student*r;
staticintn;
intrecords:
n=0;
3、学生考勤系统的录入模块
input()//
{
for(inti=0;
i<
100;
i++)
intt1,t2,t5,t6;
chart3[100],t4[100];
cout<
<
"
请输入学生的缺课时间:
"
;
cin>
>
t1;
请输入学生的学号:
t2;
请输入学生的姓名:
t3;
请输入学生的缺课课程:
t4;
请输入学生的缺课节次:
t5;
请输入学生的缺课类别(1.迟到2.早退3.请假4.旷课):
t6;
records:
n++;
cout<
endl;
r[i].set(t1,t2,t3,t4,t5,t6);
}
4、学生考勤系统修改模块
edt()//
{for(i=0;
n;
{if(r[i].snum==tnum)
{cout<
有您要查询的学生"
break;
}
if(!
flag)
{cout<
查无此学生!
return;
t1=r[i].time;
t2=r[i].snum;
strcpy(t3,r[i].sname);
strcpy(t4,r[i].cname);
t5=r[i].cno;
t6=r[i].type;
请输入要修改的项目:
\n(1.缺课时间2.学生学号3.学生姓名4.缺课科目5.缺课节次6.缺课类型)"
cin>
km;
switch(km)
{
case1:
cout<
请输入学生缺课时间:
break;
case2:
请输入修改的学生学号:
break;
case3:
请输入修改的学生姓名:
case4:
请输入修改的缺课课程:
t4;
case5:
输入修改的缺课课程节次:
case6:
请输入缺课类型(1.迟到2.早退3.请假4.旷课):
elsereturn;
5、学生查询模块
search()//学生查询模块
{cout<
请输入要查询的学生学号:
inttnum,flag=1;
tnum;
i++)//查找学号
{flag=0;
if(!
flag)
{
cout<
时间\t\t学号\t姓名\t缺课课程\t节次\t类别"
r[i].time<
\t"
cout<
r[i].snum<
r[i].sname<
r[i].cname<
\t\t"
r[i].cno<
switch(r[i].type)
{case1:
迟到"
break;
早退"
case3:
请假"
旷课"
}
}
if(flag)
没有查到该学生的缺课记录!
6、学生排序
pri1()
if(n==0)
------文件记录为空----"
-----请先输入数据保存在进行此次操作-----"
return;
else
{cout<
请输入要查询的时间段:
inttime1,time2;
char*str[20];
intnum=0;
time1>
time2;
for(inti=0;
i++)
{if(r[i].time>
time2)
{cout<
该段时间内没有旷课的学生!
return;
if(time1<
=r[i].time&
&
r[i].time<
=time2)
{if(r[i].type==4)
{str[num]=r[i].sname;
num++;
}
if(r[i-1].time<
time1)
{cout<
return;
intm=num;
intj;
char*s[20];
int*c=newint[m];
c[0]=1;
s[0]=str[0];
intflag;
intk=1;
for(i=1;
m;