C++학생 출근 정보 관리 시스템 실현

학생 출근 정보 관리 시스템 은 학생 들 의 결석 상황 을 기록 했다.이 는 다음 과 같다.
결석 날짜,몇 교시 수업,수업 명칭,학생 이름,학생 번호,결석 유형(지각,휴가 신청 및 무단결석).시스템 은 다음 과 같은 기능 을 가지 고 있다.
1)학생 의 결석 기록 을 입력 한다.
2)어떤 학생 의 결석 기록 을 수정한다.
3)어떤 학생 의 결석 상황 을 조회 합 니 다.
4)무단결석 학생 의 성명 과 무단결석 횟수 를 통계 하고 무단결석 횟수 에 따라 많 을 때 부터 적 을 때 까지 순 위 를 매 긴 다.
5)학생 들 이 무단결석 한 과정 과 무단결석 한 횟수(매번 수업 시간 에 누적)를 통계 하고 무단결석 한 횟수 에 따라 많 음 에서 적 음 으로 순 위 를 매 긴 다. 
다시 수정 해 보 니 이전의 4,5 기능 이 실현 되 지 않 았 다.

#include<iostream>
#include<fstream>
#include<cstring>
#include<cstdlib>
#include<string>
#include<map>
#include<algorithm>
using namespace std;
#define N 999
int n;
class STU
{
public:
 STU() {}
 void input(char d[],int X,string n,string sn,int sd,int cl)
 {
  strcpy(date,d);
  ClassX=X;
  ClassN=n;
  stuN=sn;
  stuID=sd;
  ClassL=cl;
 }
 void print()
 {
  cout<<"                           \t"<<endl;
  cout<<date<<"\t"<<ClassX<<"\t"<<ClassN<<"\t"<<stuN<<"\t"<<stuID<<"\t"<<ClassL<<endl;
 }
 friend void Change(STU stu[]);
 friend void Find(STU stu[]);
 friend void chaxun1(STU stu[]);
 friend void chaxun2(STU stu[]);
private:
 string stuN;
 int stuID;
 char date[15];
 int ClassX;
 string ClassN;
 int ClassL;
};
 
//   
void meau()
{
 cout<<endl;
 cout<<endl;
 cout<<"        "<<endl;
 cout<<"1-         "<<endl;
 cout<<"2-           "<<endl;
 cout<<"3-           "<<endl;
 cout<<"4-      "<<endl;
 cout<<"5-    "<<endl;
 cout<<endl;
 cout<<endl;
 
}
//         
void Input(STU stu[])
{
 char date[15];
 string stuN, ClassN;
 int stuID,ClassX,ClassL;
 while(1)
 {
  cout<<"         "<<endl;
  cin>>n;
  for(int i=0; i<n; i++)
  {
   cout<<"    "<<i+1<<"   "<<endl;
   cout<<"       
"; cin>>date; cout<<"
"; cin>>ClassX; cout<<"
"; cin>>ClassN; cout<<"
"; cin>>stuN; cout<<"
"; cin>>stuID; cout<<" ,1 ,2 , 3
"; cin>>ClassL; stu[i].input(date,ClassX,ClassN,stuN,stuID,ClassL); } cout<<" ! ?y ,n :"<<endl; char cc; getchar(); cin>>cc; if(cc=='n') return ; } } // void Change(STU stu[]) { cout<<" ,1 ,2 :"<<endl; int x; cin>>x; if(x==1) { cout<<" :"<<endl; string name; cin>>name; for(int i=0; i<n; i++) { if(stu[i].stuN==name) { stu[i].print(); cout<<" ,y ,n :"<<endl; getchar(); char cc; cin>>cc; if(cc=='n') continue; else if(cc='y') { cout<<" :"<<endl; cout<<" 1:
2:
3:
4:
"; cin>>x; switch(x) { case 1: { char date[20]; cout<<" "<<endl; cin>>date; strcpy(stu[i].date,date); } break; case 2: { cout<<" "<<endl; cin>>x; stu[i].ClassX=x; } break; case 3: { cout<<" "<<endl; cin>>name; stu[i].ClassN=name; } break; case 4: { cout<<" "<<endl; cin>>x; stu[i].ClassL=x; } break; default : cout<<" , 。"<<endl; } break; cout<<" :"<<endl; stu[i].print(); } else cout<<" , 。"<<endl; } } } else if(x==2) { cout<<" :"<<endl; cin>>x; for(int i=0; i<n; i++) { if(stu[i].stuID==x) { cout<<" ,y ,n :"<<endl; stu[i].print(); getchar(); char cc; cin>>cc; if(cc=='n') continue; else if(cc='y') { cout<<" :"<<endl; cout<<" 1:
2:
3:
4:
"; cin>>x; switch(x) { case 1: { cout<<" "<<endl; char name[20]; cin>>name; strcpy(stu[i].date,name); } break; case 2: { cout<<" "<<endl; cin>>x; stu[i].ClassX=x; } break; case 3: { cout<<" "<<endl; string name; cin>>name; stu[i].ClassN=name; } break; case 4: { cout<<" "<<endl; cin>>x; stu[i].ClassL=x; } break; default : cout<<" , 。"<<endl; } break; cout<<" :"<<endl; stu[i].print(); } else cout<<" , 。"<<endl; } } } else cout<<" , 。"<<endl; } // void Find(STU stu[]) { cout<<" (1) (2)"<<endl; int x; cin>>x; if(x==1) { cout<<" "<<endl; string name; cin>>name; for(int i=0; i<n; i++) { if(stu[i].stuN==name) stu[i].print(); } } else if(x==2) { cout<<" "<<endl; cin>>x; for(int i=0; i<n; i++) { if(stu[i].stuID==x) stu[i].print(); } } else cout<<" , 。"<<endl; } // void chaxun1(STU stu[]) { map<string,int> A; A.clear(); for(int s=0; s<n; s++) { if(stu[s].ClassL==2) { A[stu[s].stuN]++; } } map<string,int>::iterator it; int k=0,ant[N]; string sn[N]; for(it=A.begin(); it!=A.end(); it++) { sn[k]=(*it).first; ant[k]=(*it).second; k++; } for(int i=0; i<k-1; i++) for(int j=i+1; j<k; j++) { if(ant[i]<ant[j]) { int temp; string ss; temp=ant[i]; ant[i]=ant[j]; ant[j]=temp; ss=sn[i]; sn[i]=sn[j]; sn[j]=ss; } } for(int m=0; m<k; m++) { cout<<" "<<endl; cout<<sn[m]<<"\t"<<ant[m]<<endl; } } // void chaxun2(STU stu[]) { map<string,int> A; A.clear(); for(int i=0; i<n; i++) { if(stu[i].ClassL==2) { A[stu[i].ClassN]++; } } map<string,int>::iterator it; for(it=A.begin(); it!=A.end(); it++) { cout<<" "<<endl; cout<<(*it).first<<"\t"<<(*it).second<<endl; } } int main() { STU stu[N]; while(1) { meau(); cout<<" "<<endl; int x; cin>>x; switch(x) { case 1: Input(stu); break; case 2: { if(n==0) cout<<" , !
"; else Change(stu); } break; case 3: { if(n==0) cout<<" , !
"; else Find(stu); } break; case 4: { if(n==0) cout<<" , !
"; else { cout<<"
1:
"; cout<<"
2:
"; cin>>x; if(x==1) chaxun1(stu); else if(x==2) chaxun2(stu); else cout<<" , 。"<<endl; } } break; case 5: { cout<<" 。"<<endl; return 0; break; } default: cout<<" , ."<<endl; } } return 0; }
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기