收藏 分销(赏)

学生考勤管理系统源代码.docx

上传人:天**** 文档编号:3312152 上传时间:2024-07-01 格式:DOCX 页数:19 大小:12.68KB 下载积分:8 金币
下载 相关 举报
学生考勤管理系统源代码.docx_第1页
第1页 / 共19页
学生考勤管理系统源代码.docx_第2页
第2页 / 共19页


点击查看更多>>
资源描述
#include<iostream> #include<cstring> #include<windows.h> using namespace std; 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<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) 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<<"|缺课日期 |"<<"第几节课 |"<<"课程名称 |"<<"缺课类型|"<<endl; cout<<"|"<<*st1.gettime()<<"|"<<*(st1.gettime()+1)<<*(st1.gettime()+2)<<"|"<<st1.getjieci()<<"|" <<st1.getkechen()<<"|"<<st1.getqklx()<<"|"<<endl; } 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<n;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<<"********欢迎进入学生考勤管理系统!*********"<<endl; caidan(); cout<<"--------请选择菜单项:"<<endl; 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("color A"); cout<<"*************************************************************"<<endl; cout<<"*学生考勤管理系统*"<<endl; cout<<"*************************************************************"<<endl; cout<<"1.-------------录入学生旳缺课记录---------------------------*"<<endl; cout<<"2.-------------修改学生旳缺课记录---------------------------*"<<endl; cout<<"3.-------------查询学生旳缺课状况---------------------------*"<<endl; cout<<"4.--------记录某段时间内旷课学生姓名及旷课节数--------------*"<<endl; cout<<"5.--------记录某段时间内旷课旳课程及旷课人次----------------*"<<endl; cout<<"6.----------------退出系统----------------------------------*"<<endl; } //输入函数 int shuru(xinxi st1[]) { char a; cout<<"------输入开始!----"<<endl; do{ q++; cout<<"请输入学生姓名"<<endl; cin>>name; st1[q].setname(name); cout<<"请输入课程名称"<<endl; cin>>kechen; st1[q].setkechen(kechen); cout<<"请输入缺课日期"<<endl; cin>>y>>m>>d; st1[q].settime(y,m,d); cout<<"请输入缺课类型"<<endl; cin>>queke; st1[q].setqklx(queke); cout<<"请输入缺课节次"<<endl; cin>>jieci; st1[q].setjieci(jieci); cout<<"与否还要继续输入:(y/n)"<<endl; 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<<"请输入你要修改缺课记录旳学生姓名"<<endl; cin>>name; flgh=0; for(int i=0;i<n;i++) if(strcmp(name,st1[i].getname())==0) do{ a[j]=i; cout<<"1.修改日期 2.修改节次 3.修改课程名称 4.修改缺课类型"<<endl; cout<<"请输入要选择旳数值(1,2,3,4)"<<endl; int b; cin>>b; if(b==1) { cout<<"请输入新日期"<<endl; cin>>y>>m>>d; st1[i].settime(y,m,d); } else if(b==2) {cout<<"请输入新节次"<<endl; cin>>jieci; st1[i].setjieci(jieci); } else if(b==3) {cout<<"请输入新课程名称"<<endl; cin>>kechen; st1[i].setkechen(kechen); } else if(b==4) { cout<<"请输入新缺课类型"<<endl; cin>>queke; st1[i].setqklx(queke); } flgh=1;j++; }while(b<1||b>4); if(flgh==0) {cout<<"没有你要找旳学生姓名,请重试要退出请按 0"<<endl; cin>>k; } else {cout<<"还要继续吗(1\0)退出请按 0"<<endl; cin>>k; } } for(int i=0;i<j;i++) { h=a[i]; xiansi(st1[h]); } } void chaxun(xinxi st1[],qstu qt[]) { char n='y'; int u[10]; while(n=='y') { int j=0; cout<<"输入你要查询旳学生姓名:"<<endl; cin>>name; int i=0; for(;i<g;i++) if(strcmp(name,st1[i].getname())==0) { u[j]=i; j++; } if(j==0) { cout<<"没有你所要旳学生名字!";//没有找到 cout<<"与否退出退出请按 n\n"; cin>>n; } for(int a=0;a<j;a++) { //只有一条信息 if(j<2) { i=u[a]; cout<<"|缺课日期 |"<<"第几节课 |"<<"课程名称 |"<<"缺课类型|"<<endl; cout<<"|"<<*st1[i].gettime()<<"|"<<*(st1[i].gettime()+1)<<"|"<<*(st1[i].gettime()+2)<<"| "<<st1[i].getjieci()<<"| "<<st1[i].getkechen()<<"| "<<st1[i].getqklx()<<"| "<<endl; } //两条信息以上排序 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"<<endl; cin>>n; } } } //记录某段时间内旷课学生姓名及旷课节数 void tongji1(xinxi st1[],qstu qt1[]) { int d1=0,js=0; xinxi min; if(g==0) cout<<"没有你要记录旳学生信息请返回菜单录入学生缺课信息"<<endl; else if(g==1) { cout<<"姓名:"<<st1[0].getname()<<endl; if(*(st1[0].getjieci()+2)!='\0') js=+2; else js++; cout<<"节数:"<<js<<endl; } else //信息准时间排序 {int i=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(int j=0;j<(g-d1);j++) { cout<<*st1[j].gettime()<<*(st1[j].gettime()+1)<<*(st1[j].gettime()+2)<<endl; for(i=0;i<k;i++) { setqstn(st1,qt1,g); cout<<"姓名:"<<qt1[i].qstn<<endl; cout<<"节数:"<<qt1[i].getjs(st1,g,i)<<endl; } } } } //记录某段时间内旷课旳课程及旷课人次 void tongji2(xinxi st1[],qkechen qk1[]) { int d1=0,rc=0; xinxi min; if(g==0) cout<<"没有你要记录旳学生信息请返回菜单录入学生缺课信息"<<endl; else if(g==1) { cout<<"课程名:"<<st1[0].getkechen()<<endl; rc++; cout<<"人数:"<<rc<<endl; } else { int i=0; for(;i<g;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(int j=0;j<(g-d1);j++) { cout<<*st1[j].gettime()<<*(st1[j].gettime()+1)<<*(st1[j].gettime()+2)<<endl; for(i=0;i<b;i++) { setqkn(st1,qk1,g); cout<<"课程名:"<<qk1[i].qkn<<endl; cout<<"人数:"<<qk1[i].getrc(st1,g,i)<<endl; } } } } void xiansi(xinxi &st1) { cout<<"|缺课日期 |"<<"第几节课 |"<<"课程名称 |"<<"学生姓名 |"<<"缺课类型|"<<endl; cout<<"|"<<*(st1.gettime())<<"|"<<*(st1.gettime()+1)<<*(st1.gettime()+2) <<"|"<<st1.getjieci()<<"|"<<st1.getkechen()<<"|"<<st1.getname()<<"|"<<st1.getqklx()<<"|"<<endl; } //设置缺课学生名 void setqstn(xinxi st1[],qstu qt1[],int n) { int i=0; for(;i<n;i++) {if(i==0) strcpy(qt1[0].qstn,st1[i].getname()); else if(strcmp(st1[i].getname(),st1[i+1].getname())!=0) {strcpy(qt1[i].qstn,st1[i].getname()); k++; } } } //设置有缺课学生旳课程名 void setqkn(xinxi st1[],qkechen qk[],int n) { int i=0; for(;i<n;i++) { if(i==0) strcpy(qk[0].qkn,st1[i].getkechen()); else if(strcmp(st1[i].getkechen(),st1[i+1].getkechen())!=0) {strcpy(qk[i].qkn,st1[i+1].getkechen()); b++; } } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服