c学生考勤信息管理系统Word下载.docx

上传人:b****6 文档编号:20868953 上传时间:2023-01-26 格式:DOCX 页数:14 大小:18.69KB
下载 相关 举报
c学生考勤信息管理系统Word下载.docx_第1页
第1页 / 共14页
c学生考勤信息管理系统Word下载.docx_第2页
第2页 / 共14页
c学生考勤信息管理系统Word下载.docx_第3页
第3页 / 共14页
c学生考勤信息管理系统Word下载.docx_第4页
第4页 / 共14页
c学生考勤信息管理系统Word下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

c学生考勤信息管理系统Word下载.docx

《c学生考勤信息管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《c学生考勤信息管理系统Word下载.docx(14页珍藏版)》请在冰豆网上搜索。

c学生考勤信息管理系统Word下载.docx

std:

:

stringcourse,name,type;

istream&

read(std:

);

};

Student_info:

read(istream&

in)

{

in>

>

year>

month>

day>

lesson1>

lesson2>

course>

name>

type;

returnin;

}

read_record(istream&

in,vector<

Student_info>

&

s)//第一个模块--------------输入学生的缺课记录

Student_inforecord;

s.clear();

//调用s.clear()来清空s的记录

while(record.read(in))

{

s.push_back(record);

}

in.clear();

//将记录的错误状态恢复正确,以继续读取记录

boolis_empty(vector<

s)//判断输入学生的记录是否为空,为空则返回真

returns.empty();

boolcompare(Student_info&

x,Student_info&

y)//按照时间排序,若日期相等则看课程时间

if(x.year==y.year&

x.month==y.month&

x.day==y.day){

returnx.lesson1<

y.lesson1;

elseif(x.year==y.year&

x.day!

=y.day){

returnx.day<

y.day;

x.month!

=y.month){

returnx.month<

y.month;

else{

returnx.year<

y.year;

booltime(constStudent_info&

stud,inty1,intm1,intd1,inty2,intm2,intd2)//筛选符合输入时间段的数据

if((y1==stud.year&

stud.month==m1&

stud.day<

d1)||(y2==stud.year&

stud.month==m2&

stud.day>

d2))

return0;

elseif((y1==stud.year&

stud.month<

m1)||(y2==stud.year&

stud.month>

m2))

elseif(y1>

stud.year||y2<

stud.year)

else

return1;

voidrewrite(vector<

s)//第二个模块--------------修改某个学生的缺课情况

if(!

is_empty(s))

intn,m,j,k;

map<

string,vector<

>

s_name;

iteratorix2;

vector<

iteratorix,iter,itera;

stringname;

//-------------------定义这些参数和迭代器必须在SWITHC外,不然它可能被忽略跳过

while(true)

{

cout<

<

"

*********************************************************"

endl;

*1.请输入你要修改缺课记录的学生姓名*"

**"

*2.返回上一级菜单*"

请选择菜单选项:

"

;

cin>

n;

if(n==1)

{

s_name.clear();

//------------------------------清空MAP容器

for(ix=s.begin();

ix!

=s.end();

++ix)

{

s_name[(*ix).name].push_back(*ix);

}

s.clear();

cout<

请输入该学生的姓名:

cin>

name;

if(s_name.find(name)!

=s_name.end())

ix2=s_name.find(name);

//----------找到符合名字要求的数据,并显示出

for(iter=(*ix2).second.begin();

iter!

=(*ix2).second.end();

++iter)

{

cout<

(*iter).year<

-"

(*iter).month<

(*iter).day<

\t"

(*iter).lesson1<

(*iter).lesson2;

(*iter).course<

(*iter).name<

(*iter).type<

}

itera=(*ix2).second.begin();

cout<

请输入要更改记录的序号:

cin>

j;

for(k=0;

k!

=j-1;

++k)

++itera;

**************************************************************************"

*需要更改的项目*"

*1日期2节次3课程名称4姓名5缺课类型6返回上一级*"

请选择要更改的项目号:

m;

switch(m)

case1:

请输入更改的日期(年月日):

cin>

(*itera).year>

(*itera).month>

(*itera).day;

break;

case2:

请输入更改的节次(L1、L2):

(*itera).lesson1>

(*itera).lesson2;

case3:

请输入要更改的课程名称:

(*itera).course;

case4:

请输入要更改的学生姓名:

(*itera).name;

case5:

请输入缺课类型:

(*itera).type;

case6:

default:

你的选择错了,请看清楚!

for(ix2=s_name.begin();

ix2!

=s_name.end();

ix2++)//将改写后的数据放入vector容器中

for(iter=ix2->

second.begin();

=ix2->

second.end();

iter++)

{

s.push_back(*iter);

}

else

没有这个学生的缺课记录"

break;

}

elseif(n==2)

return;

else

}

cout<

记录为空,没有学生的缺课记录!

voidSearch_record(vector<

s)//第三个模块-------------查找某学生的缺课情况

inti;

iteratoriter;

iteratorit1;

string,vector<

iteratoritera;

iteratorit;

**********************************************************"

*1输入你要查询的学生姓名2返回上一级*"

请选择菜单:

i;

if(i==1){

for(it=s.begin();

it!

++it)

s_name[(*it).name].push_back(*it);

for(itera=s_name.begin();

itera!

++itera)

sort(itera->

second.begin(),itera->

second.end(),compare);

请输入名字:

it1=s_name.find(name);

for(iter=(*it1).second.begin();

=(*it1).second.end();

没有这个学生."

elseif(i==2)

对不起,没有这个选项!

structSearch_struct{

stringname,course;

inttimes;

//定义另一个结构模块

boolcompare2(Search_struct&

x,Search_struct&

y)//按照次数排序,次数相等的则按照名字排序

if(x.times==y.times)

returnx.name<

y.name;

returnx.times>

y.times;

voidSearch_s_t(vector<

std)//第四个模块----------------查找某段时间内旷课学生姓名及旷课节数

is_empty(std))

Search_struct>

string,int>

vec;

inty1,m1,d1,y2,m2,d2;

ret;

请输入你要查找的一个时间段(y1m1d1y2m2d2):

cin>

y1>

m1>

d1>

y2>

m2>

d2;

for(it=std.begin();

=std.end();

if(time(*it,y1,m1,d1,y2,m2,d2))

ret[it->

name]+=(it->

lesson2-it->

lesson1+1);

for(iter=ret.begin();

=ret.end();

Search_structtmp;

tmp.name=iter->

first;

tmp.times=iter->

second;

vec.push_back(tmp);

sort(vec.begin(),vec.end(),compare2);

for(itera=vec.begin();

=vec.end();

itera++)

itera->

name<

times<

对不起,没有你要查找的记录!

voidSearch_c_t(vector<

std)//第五个模块---------------查找某段时间内旷课的课程及旷课人次

请输入你想要查找的时间段(y1m1d1y2m2d2):

++it)//建立map容器

course]+=1;

tmp.course=iter->

course<

这段时间内没有学生的缺课纪录!

intmain()

vector<

stu;

intchoice;

while(true)

*************************************************************"

*学生考勤管理系统*"

************************************************************"

*1.录入学生的缺课记录*"

*2.修改某个学生的缺课记录*"

*3.查找某学生的缺课情况*"

*4.查找某段时间内旷课学生姓名及旷课节数*"

*5.查找某段时间内旷课的课程及旷课人次*"

*6.退出系统*"

choice;

if(choice==1){

请输入数据:

endl<

年月日节次姓名课程名称缺课类型"

read_record(cin,stu);

elseif(choice==2){

rewrite(stu);

elseif(choice==3){

Search_record(stu);

elseif(choice==4){

Search_s_t(stu);

elseif(choice==5){

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1