C++학생 정보 관리 시스템 구현

C++의 수업 은 숙제 를 설정 하고 공유 하 며 초보 자 에 게 도움 을 주 고 싶 습 니 다.
이 시스템 은 주로 C++의 계승,가상 함 수 를 사용한다.모든 학생 의 정 보 는 이질 링크 에 저장 되 어 있 고 링크 도 봉인 되 어 있다.
제목
학생 관리 시스템 을 설계 하려 면 다음 과 같이 요구 합 니 다.
1.학생 들 은 영문 과,수학 과,컴퓨터 학과 에서 왔 습 니 다.
a)모든 학생 의 공공 정보 부분 은 학 번,성명,연령,계별,고수 성적,영어 성적,체육 성적 을 포함한다.
b)영어과 학생 들 은 종합 영어,구어 등 과정 성적 이 있다.
c)수학 과 학생 들 은 실제 변화 함수,팬 레 터 분석,미분 기하학 등 과정 성적 이 있다.
d)컴퓨터 학과 학생 들 은 컴퓨터 구성 원리,컴퓨터 체계 구조,어 셈 블 리 언어 등 과정 성적 이 있다.
모든 학생 은 해당 정보(학 번,성명,연령,계별 및 성적 정보)를 조회 할 수 있다.각 과목 의 평균 성적 을 조회 할 수 있다.
클래스 와 클래스 의 파생 으로 상기 기능 을 실현 하고 클래스 의 계승,가상 함수,가상 기류 의 C++언어 특성 을 사용 해 야 한다.각 클래스 가 서로 다른 방식 으로 구조 함 수 를 실현 하도록 요구한다.
2.학생 관리 유형 을 설계 하 는데 그 중에서 가 변 학생 수 를 포함 하고 실현 을 요구한다.
1)초기 화,모든 학생 의 정보 조직 은 링크 방식 으로 이 루어 집 니 다.
2)지 정 된 학생 의 정보 조회(예 를 들 어 학 번,성명 등 방식 을 이용)를 실현 한다.
3)공공 과목 의 평균 성적 에 따라 순 위 를 매 긴 다.
4)학생 의 모든 과정의 평균 성적 에 따라 순 위 를 매 긴 다.
5)학생 을 늘린다.
6)지 정 된 학생 을 삭제 합 니 다.
3.구조 함수 와 분석 함수 의 실현 방식 에 주의 하 세 요.각 클래스 의 설명 은 단독 헤더 파일 에 넣 어야 합 니 다.(즉,하나의 종류의 설명 은 하나의 접미사 이름 이 h 인 파일 에 넣 어야 합 니 다)각 클래스 의 실현 은 하나의 단독 cpp 파일 에 넣 어야 합 니 다.테스트 프로그램(즉 main 함 수 를 포함 하 는 프로그램)은 cpp 파일 에 따로 놓 여 있 습 니 다.
전체 분석
제목 에 따라 이 학생 의 정보 관리 시스템 은 다섯 가지 기능 모듈 로 나 눌 수 있다.
1.정보 읽 기 및 출력 기능:파일 에서 학생 정보 읽 기
학생 정 보 를 화면 에 인쇄 합 니 다.
2.정보 유지 기능:학생 정보 추가
학생 정보 삭제
3.정보 조회 기능:학 번 에 따라 학생 정보 조회
이름 에 따라 학생 정 보 를 조회 하 다.
4.성적 통계 기능:각 학과 의 평균 점 수 를 계산한다.
5.정렬 기능:공공 과목 의 평균 성적 에 따라 정렬
모든 과정의 평균 성적 에 따라 순 위 를 매 긴 다.
상기 기능 을 실현 하기 위해 클래스 의 계승,가상 함수 의 C+언어 특성 을 사용 하 였 습 니 다.
총 다섯 가지 종류 사용:
1.Student 류:학생 들 의 공 통 된 정 보 를 포함 하 는 유형 은 모두 세 가지 유형 으로 나 뉜 다.
2.Csstudent 류:컴퓨터 학과 학생 류,학생 류 에서 파생
3.Enstudent 류:영어과 학생 류,Student 류 에서 파생
4.Mstudent 류:수학 과 학생 류,Student 류 에서 파생
4.List 류:링크 류 는 학생 정보 링크 에 대한 각종 조작 을 포함한다.
총 13 개의 파일 에 사용:<
1.menu.cpp:여러 개의 생 성 메뉴 함 수 를 포함 하여 서로 다른 모듈 의 기능 표시 에 사용 합 니 다.
2.main.cpp:모든 함 수 를 호출 하고 적당 한 조합 을 통 해 완전한 학생 성적 관리 시스템 을 실현 합 니 다.
3.student.h:학생 들 의 공공 정보 및 관련 조작 함 수 를 저장 하 는 Student 클래스 를 포함 합 니 다.
4.student.cpp:Student 류 를 포함 한 구성원 함수 의 실현
5.csstudent.h:컴퓨터 학과 학생 정보 저장 및 관련 작업 을 위 한 Csstudent 클래스 포함
6.csstudent.cpp:Csstudent 류 를 포함 한 구성원 함수 의 실현
7.enstudent.h:영문 과 학생 정보 저장 및 관련 작업 을 위 한 Enstudent 클래스 포함
8.enstudent.cpp:Enstudent 류 를 포함 한 구성원 함수 의 실현
9.mstudent.h:수학 과 학생 정보 저장 및 관련 작업 을 위 한 Mstudent 클래스 포함
10.mstudent.cpp:Mstudent 류 를 포함 한 구성원 함수 의 실현
11.list.h:학생 정 보 를 조작 하 는 List 류 를 포함한다.
12.list.cpp:List 류 를 포함 한 구성원 함수 의 실현
13.student.txt:학생 의 모든 정보 포함
여러 종류의 계승 관계 도 는 다음 과 같다.

소스 코드
main.cpp

#include<iostream>
using namespace std;
//   
void menu()
{
 cout<<"

\t\t---------------- ------------------"<<endl<<endl; cout<<"\t\t1、 "<<" "<<"\t2、 "<<endl<<endl; cout<<"\t\t3、 "<<" "<<"\t4、 "<<endl<<endl; cout<<"\t\t5、 "<<endl<<endl; return; } // void menu1() { cout<<"

\t\t "<<endl<<endl; cout<<"\t\t1、 "<<endl<<endl; cout<<"\t\t2、 "<<endl<<endl; cout<<"\t\t3、 "<<endl<<endl; return; } // void menu2() { cout<<"

\t\t "<<endl<<endl; cout<<"\t\t1、 "<<endl<<endl; cout<<"\t\t2、 "<<endl<<endl; cout<<"\t\t3、 "<<endl<<endl; return; } // void menu3() { cout<<"

\t\t "<<endl<<endl; cout<<"\t\t1、 "<<endl<<endl; cout<<"\t\t2、 "<<endl<<endl; return; } // void menu4() { cout<<"

\t\t "<<endl<<endl; cout<<"\t\t1、 "<<endl<<endl; cout<<"\t\t2、 "<<endl<<endl; cout<<"\t\t3、 "<<endl<<endl; return; }
main.cpp

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include"student.h"
#include"csstudent.h"
#include"list.h"
using namespace std;

void menu();
void menu1();
void menu2();
void menu3();
void menu4();

int main(void)
{

 int choice,choice1,choice2,choice3,choice4;
 List pHead;
 string subj;
 pHead.input_info();

 while(1)
 {
 menu();
 cout<<"          :";
 cin>>choice;
 switch(choice)
 {
 //      
 case 1:
 while(1)
 {
  pHead.input_info();
  system("cls");
  menu1();
  cout<<"          :";
  cin>>choice1;
  switch(choice1)
  {
  //      
  case 1:
  pHead.output_info();//    ,        
  pHead.add_info();//      
  system("cls");
  cout<<"


\t\t ( )"<<endl; pHead.output_info();// , pHead.save_list();// cout<<"
"<<endl<<endl; system("pause"); break; // case 2: pHead.output_info();// , pHead.delete_info();// system("cls"); cout<<"


\t\t ( )"<<endl; pHead.output_info();// , pHead.save_list();// cout<<"
"<<endl<<endl; system("pause"); break; default: system("cls"); break; } if(choice1!=1&&choice1!=2) break; } break; // case 2: while(1) { system("cls"); menu2(); cout<<" :"; cin>>choice2; switch(choice2) { // case 1: pHead.search_by_name(); system("pause"); break; // case 2: pHead.search_by_ID(); system("pause"); //system("cls"); break; default: system("cls"); break; } if(choice2!=1&&choice2!=2) break; //break; } break; // case 3: while(1) { system("cls"); menu3(); cout<<" :"; cin>>choice3; switch(choice3) { // case 1: pHead.count_sub_avg();// system("pause"); break; default: system("cls"); break; } if(choice3!=1) break; } break; // case 4: while(1) { system("cls"); menu4(); cout<<" :"; cin>>choice4; switch(choice4) { // case 1: pHead.sort_by_public(); pHead.output_info(); cout<<endl; system("pause"); break; case 2: // pHead.sort_by_all(); pHead.output_info(); cout<<endl; system("pause"); break; default: system("cls"); break; } if(choice4!=1&&choice4!=2) break; } break; default: return 0; } } pHead.delete_list(); return 0; }
(3)student.h

#ifndef _STUDENT_H
#define _STUDENT_H
#include<iostream>
#include<cstring>
#include<sstream>
#include<fstream>
using namespace std;
class Student
{
private:
 //       
 int num;//     
 string stuID;//     
 string name;//     
 int age;//     
 string department;//      
 //       
 double math;//    
 double english;//    
 double PE;//    
 double sum_part;//  
 double average_part;//        
public:
 Student(){}//        
 Student(string _name,string _stuID,int _age,string _department,double _math,double _english,double _pe);//        
 Student(const Student& stu);//      
 virtual ~Student(){}//    
public:
 //          
 void set_num(int n);//       
 void set_stuID(string ID);//       
 void set_name(string na);//       
 void set_age(int a);//       
 void set_department(string dept);//         
 void set_scores_part(double m,double en,double pe);//         

 virtual void count_sum();//         
 virtual void count_average();//          

 //          
 int get_num();//       
 string get_stuID();//       
 string get_name();//       
 int get_age();//       
 string get_department();//         
 virtual void get_scores(double *m,double *en,double *pe);//              
 virtual double get_sum();//         
 virtual double get_average();//          

 virtual void display_info();//           
 virtual void save_node(ofstream& fout);//           

};
#endif // _STUDENT_H
student.cpp

#include<iostream>
#include<cstring>
#include<sstream>
#include"student.h"
#include<fstream>
using namespace std;
//        
Student::Student(string _name,string _stuID,int _age,string _department,double _math,double _english,double _pe)
{
 stuID=_stuID;
 name=_name;
 age=_age;
 department=_department;
 math=_math;
 english=_english;
 PE=_pe;
}
//      
Student::Student(const Student& stu)
{
 stuID=stu.stuID;
 name=stu.name;
 age=stu.age;
 department=stu.department;
 math=stu.math;
 english=stu.english;
 PE=stu.PE;
}
//       
void Student::set_num(int n)
{
 num=n;
}
//       
void Student::set_stuID(string ID)
{
 stuID=ID;
}
//       
void Student::set_name(string na)
{
 name=na;
}
//       
void Student::set_age(int a)
{
 age=a;
}
//         
void Student::set_department(string dept)
{
 department=dept;
}
//         
void Student::set_scores_part(double m,double en,double pe=0)
{
 math=m;
 english=en;
 PE=pe;
}
//         
void Student::count_sum()
{
 sum_part=math+english+PE;
}
//          
void Student::count_average()
{
 average_part=(math+english+PE)/3;
}

//       
int Student::get_num()
{
 return num;
}
//       
string Student::get_stuID()
{
 return stuID;
}
//       
string Student::get_name()
{
 return name;
}
//       
int Student::get_age()
{
 return age;
}
//         
string Student::get_department()
{
 return department;
}
//         
void Student::get_scores(double *m,double *en,double *pe)
{
 *m=math;
 *en=english;
 *pe=PE;
}
//       
double Student::get_sum()
{
 return sum_part;
}
//          
double Student::get_average()
{
 return average_part;
}
//           
void Student::display_info()
{
 cout<<num<<'\t'<<name<<'\t'<<stuID<<'\t'<<age<<'\t'<<department<<"\t\t"<<math<<'\t'<<english<<'\t'<<PE<<'\t'<<average_part<<'\t';
}
//           
void Student::save_node(ofstream& fout)
{
 fout<<name<<' '<<stuID<<' '<<age<<' '<<department<<' '<<math<<' '<<english<<' '<<PE<<' ';
}
csstudent.h

#ifndef _CSSTUDENT_H
#define _CSSTUDENT_H
#include<iostream>
#include<cstring>
#include<sstream>
#include<fstream>
#include"student.h"
using namespace std;
class Csstudent:public Student
{
public:
 Csstudent(){}//        
 //           
 Csstudent(string _name,string _stuID,int _age,string _department,double _math,double _english,double _pe,double c_c,double c_a,double ass):
 Student(_name,_stuID,_age,_department,_math,_english,_pe)
 {
 c_composition=c_c;
 c_architecture=c_a;
 assembly_lan=ass;
 }

 virtual ~Csstudent(){}//    
public:
 //          
 virtual void count_sum();//    
 virtual void count_average();//     

 //          
 virtual double get_sum();//    
 virtual double get_average();//     
 virtual void get_scores(double* c_c,double*c_a,double *ass);//         
public:
 virtual void display_info();//           
 virtual void save_node(ofstream& fout);//           
private:
 double sum;//       
 double average;//        
 double c_composition;//         
 double c_architecture;//         
 double assembly_lan;//      
};
#endif
csstudent.cpp

#include<iostream>
#include<cstring>
#include<sstream>
#include<fstream>
#include"student.h"
#include"csstudent.h"

//         
void Csstudent::count_sum()
{
 double part=Student::get_sum();
 sum=part+c_composition+c_architecture+assembly_lan;
}
//          
void Csstudent::count_average()
{
 average=sum/6;
}

//           
double Csstudent::get_sum()
{
 return sum;
}
//            
double Csstudent::get_average()
{
 return average;
}
//         
void Csstudent::get_scores(double* c_c,double*c_a,double *ass)
{
 *c_c=c_composition;
 *c_a=c_architecture;
 *ass=assembly_lan;
}
//           
void Csstudent::display_info()
{
 Student::display_info();
 cout<<c_composition<<'\t'<<c_architecture<<'\t'<<assembly_lan<<'\t'<<average<<endl;
}
//           
void Csstudent::save_node(ofstream& fout)
{
 Student::save_node(fout);
 fout<<c_composition<<' '<<c_architecture<<' '<<assembly_lan<<endl;
}
enstudent.h

#ifndef _ENSTUDENT_H
#define _ENSTUDENT_H
#include<iostream>
#include<cstring>
#include<sstream>
#include<fstream>
#include"student.h"
using namespace std;
class Enstudent:public Student
{
public:
 Enstudent(){}//         
 //           
 Enstudent(string _name,string _stuID,int _age,string _department,double _math,double _english,double _pe,double c_e,double s_e):
 Student(_name,_stuID,_age,_department,_math,_english,_pe)
 {
 comprehensive_en=c_e;
 spoken_en=s_e;
 }

 virtual ~Enstudent(){}//    
public:
 //          
 virtual void count_sum();//    
 virtual void count_average();//     

 //          
 virtual double get_sum();//    
 virtual double get_average();//     
 virtual void get_scores(double* c_e,double* s_e,double* no);//         
public:
 virtual void display_info();//           
 virtual void save_node(ofstream& fout);//           
private:
 double sum;//       
 double average;//        
 double comprehensive_en;//      
 double spoken_en;//    
};
#endif
( )enstudent.cpp
#include<iostream>
#include<cstring>
#include<sstream>
#include<fstream>
#include"student.h"
#include"enstudent.h"

//         
void Enstudent::count_sum()
{
 double part=Student::get_sum();
 sum=part+comprehensive_en+spoken_en;
}
//          
void Enstudent::count_average()
{
 average=sum/5;
}

//           
double Enstudent::get_sum()
{
 return sum;
}
//            
double Enstudent::get_average()
{
 return average;
}
//         
void Enstudent::get_scores(double* c_e,double* s_e,double* no)
{
 *c_e=comprehensive_en;
 *s_e=spoken_en;
}
//           
void Enstudent::display_info()
{
 Student::display_info();
 cout<<comprehensive_en<<'\t'<<spoken_en<<"\t\t"<<average<<endl;
}
//           
void Enstudent::save_node(ofstream& fout)
{
 Student::save_node(fout);
 fout<<comprehensive_en<<' '<<spoken_en<<endl;
}
mstudent.h

#ifndef _MSTUDENT_H
#define _MSTUDENT_H
#include<iostream>
#include<cstring>
#include<sstream>
#include<fstream>
#include"student.h"
using namespace std;
class Mstudent:public Student
{
public:
 Mstudent(){}//         
 //           
 Mstudent(string _name,string _stuID,int _age,string _department,double _math,double _english,double _pe,double r_f,double f_a,double d_g):
 Student(_name,_stuID,_age,_department,_math,_english,_pe)
 {
 real_variable_f=r_f;
 f_analysis=f_a;
 diff_geometry=d_g;
 }

 virtual ~Mstudent(){}//    
public:
 //          
 virtual void count_sum();//    
 virtual void count_average();//     

 //          
 virtual double get_sum();//    
 virtual double get_average();//     
 virtual void get_scores(double* r_f,double* f_a,double* d_g);//         
public:
 virtual void display_info();//           
 virtual void save_node(ofstream& fout);//           
private:
 double sum;//       
 double average;//        
 double real_variable_f;//      
 double f_analysis;//      
 double diff_geometry;//      
};
#endif
mstudent.cpp

#include<iostream>
#include<cstring>
#include<sstream>
#include<fstream>
#include"student.h"
#include"mstudent.h"
//         

//         
void Mstudent::count_sum()
{
 double part=Student::get_sum();
 sum=part+real_variable_f+f_analysis+diff_geometry;
}
//          
void Mstudent::count_average()
{
 average=sum/6;
}

//           
double Mstudent::get_sum()
{
 return sum;
}
//            
double Mstudent::get_average()
{
 return average;
}
//         
void Mstudent::get_scores(double* r_f,double* f_a,double* d_g)
{
 *r_f=real_variable_f;
 *f_a=f_analysis;
 *d_g=diff_geometry;
}
//           
void Mstudent::display_info()
{
 Student::display_info();
 cout<<real_variable_f<<'\t'<<f_analysis<<'\t'<<diff_geometry<<'\t'<<average<<endl;
}
 
//           
void Mstudent::save_node(ofstream& fout)
{
 Student::save_node(fout);
 fout<<real_variable_f<<' '<<f_analysis<<' '<<diff_geometry<<endl;
}
list.h

#ifndef _LIST_H
#define _LIST_H
#include<iostream>
#include"student.h"
#include"csstudent.h"
#include"enstudent.h"
#include"mstudent.h"
using namespace std;
class List
{
public:
 List(){}//       
public:
 void input_info();//         ,      
 void output_info();//             
 void count_sub_avg();//          
public:
 void search_by_ID();//          
 void search_by_name();//          
public:
 void sort_by_public();//              
 void sort_by_all();//                
public:
 void add_info();//      
 void delete_info();//         
 //void modify_info();//      
public:
 void save_list();//         
 void delete_list();//    

private:
 List *pHead;//      
 Student *data;//         
 List *pNext;//          
};
 
#endif // _LIST_H
(12)list.cpp

#include<iostream>
#include<fstream>
#include<stdlib.h>
#include<stdio.h>
#include<sstream>
#include"list.h"
#include"student.h"
#include"csstudent.h"
#include"enstudent.h"
#include"mstudent.h"
using namespace std;

//         ,      
void List::input_info()
{
 int num=0;//     
 string stuID;//     
 string name;//     
 int age;//     
 string department;//      

 double math;//    
 double english;//    
 double pe;//    

 double c_c;//         
 double c_a;//         
 double ass;//      

 double c_e;//      
 double s_e;//    

 double r_f;//      
 double f_a;//      
 double d_g;//      

 List *current=NULL;//         
 List *previous=NULL;//          
 ifstream fin;
 fin.open("student.txt",ios::in);
 if(!fin)
 {
 cout<<"Fail to open the file!"<<endl;
 exit(0);
 }
 //    
 while(1)
 {
 //        
 if(!(fin>>name>>stuID>>age>>department>>math>>english>>pe))
 break;
 else
 {
 ++num;
 //          new      ,            
 if(department=="   ")
 {
 current=new List;//     
 fin>>c_c>>c_a>>ass;
 current->data=new Csstudent(name,stuID,age,department,math,english,pe,c_c,c_a,ass);
 }
 else if(department=="   ")
 {
 current=new List;//     
 fin>>c_e>>s_e;
 current->data=new Enstudent(name,stuID,age,department,math,english,pe,c_e,s_e);
 }
 else if(department=="   ")
 {
 current=new List;//     
 fin>>r_f>>f_a>>d_g;
 current->data=new Mstudent(name,stuID,age,department,math,english,pe,r_f,f_a,d_g);
 }
 else
 {
 cout<<"Don't have this department"<<endl;
 exit(0);
 }
 }

 if(previous==NULL)
 pHead=current;//     
 if(previous!=NULL)
 previous->pNext=current;//          

 current->data->set_num(num);
 current->data->Student::count_sum();//         
 current->data->Student::count_average();//          
 current->data->count_sum();//         
 current->data->count_average();//          

 current->pNext=NULL;
 previous=current;
 }
 fin.close();//    
}
//             
void List::output_info()
{
 List *p=pHead;//     
 int num=0;//    
 cout<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"  \t\t"<<"  \t"<<"  \t"<<"  \t"<<"   \t"<<"   1\t"<<"   2\t"<<"   3\t"<<"   \t"<<endl;
 while(p!=NULL)
 {
 ++num;
 p->data->set_num(num);
 p->data->display_info();
 p=p->pNext;
 }
}
//          
void List::count_sub_avg()
{
 string stuID;//     
 string department;//      

 double math,english,pe;//    ,    ,    
 double math_sum=0,english_sum=0,pe_sum=0;//  、  、    
 double math_avg,english_avg,pe_avg;//  、  、     

 double c_c,c_a,ass;//         ,         ,      
 double c_c_sum=0,c_a_sum=0,ass_sum=0;//         ,         ,      
 double c_c_avg,c_a_avg,ass_avg;//         ,         ,       

 double c_e,s_e;//      ,    
 double c_e_sum=0,s_e_sum=0;//      ,    
 double c_e_avg,s_e_avg;//      ,     

 double r_f,f_a,d_g;//      ,      ,      
 double r_f_sum=0,f_a_sum=0,d_g_sum=0;//      ,      ,        
 double r_f_avg,f_a_avg,d_g_avg;//      ,      ,         

 int n=0;//         
 int cn=0;//           
 int en=0;//          
 int mn=0;//          

 List* p=pHead;
 while(p!=NULL)
 {
 ++n;
 department=p->data->get_department();
 p->data->Student::get_scores(&math,&english,&pe);
 math_sum+=math;
 english_sum+=english;
 pe_sum+=pe;
 if(department=="   ")
 {
 p->data->get_scores(&c_c,&c_a,&ass);
 c_c_sum+=c_c;
 c_a_sum+=c_a;
 ass_sum+=ass;
 ++cn;
 }
 else if(department=="   ")
 {
 p->data->get_scores(&c_e,&s_e,NULL);
 c_e_sum+=c_e;
 s_e_sum+=s_e;
 ++en;
 }
 else if(department=="   ")
 {
 p->data->get_scores(&r_f,&f_a,&d_g);
 r_f_sum+=r_f;
 f_a_sum+=f_a;
 d_g_sum+=d_g;
 ++mn;
 }
 else
 {
 cout<<"Don't have this department!"<<endl;
 exit(0);
 }
 p=p->pNext;
 }
 math_avg=math_sum/n;//      
 english_avg=english_sum/n;
 pe_avg=pe_sum/n;

 c_c_avg=c_c_sum/cn;
 c_a_avg=c_a_sum/cn;
 ass_avg=ass_sum/cn;

 c_e_avg=c_e_sum/en;
 s_e_avg=s_e_sum/en;

 r_f_avg=r_f_sum/mn;
 f_a_avg=f_a_sum/mn;
 d_g_avg=d_g_sum/mn;
 cout<<"       :"<<endl;
 cout<<"  \t"<<"  \t"<<"  "<<endl;
 cout<<math_avg<<'\t'<<english_avg<<'\t'<<pe_avg<<endl<<endl;

 cout<<"           :"<<endl;
 cout<<"       :"<<c_c_avg<<endl;
 cout<<"       :"<<c_a_avg<<endl;
 cout<<"    :"<<ass_avg<<endl<<endl;

 cout<<"          :"<<endl;
 cout<<"    :"<<r_f_avg<<endl;
 cout<<"    :"<<f_a_avg<<endl;
 cout<<"    :"<<d_g_avg<<endl<<endl;

 cout<<"          :"<<endl;
 cout<<"    :"<<c_e_avg<<endl;
 cout<<"    :"<<s_e_avg<<endl;
}
//          
void List::search_by_ID()
{
 List *p=pHead;//     
 int flag=0;//             
 string ID;//       
 cout<<"             :";
 cin>>ID;
 cout<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"  \t\t"<<"  \t"<<"  \t"<<"  \t"<<"   \t"<<"   1\t"<<"   2\t"<<"   3\t"<<"   \t"<<endl;
 while(p!=NULL)
 {
 if(ID==p->data->get_stuID())
 {
 ++flag;
 p->data->display_info();
 break;
 }
 p=p->pNext;
 }
 if(flag==0)
 cout<<"Can't find this student!"<<endl;
}
//          
void List::search_by_name()
{
 List *p=pHead;//     
 int flag=0;//             
 string name;//       
 cout<<"             :";
 cin>>name;
 cout<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"  \t\t"<<"  \t"<<"  \t"<<"  \t"<<"   \t"<<"   1\t"<<"   2\t"<<"   3\t"<<"   \t"<<endl;
 while(p!=NULL)
 {
 if(name==p->data->get_name())
 {
 ++flag;
 p->data->display_info();
 break;
 }
 p=p->pNext;
 }
 if(flag==0)
 cout<<"Can't find this student!"<<endl;
}

//                
void List::sort_by_public()
{
 List *p=NULL;
 List *q=NULL;
 double avg1,avg2;
 for(p=pHead;p->pNext!=NULL;p=p->pNext)
 for(q=p->pNext;q!=NULL;q=q->pNext)
 {
 avg1=p->data->Student::get_average();//                   
 avg2=q->data->Student::get_average();
 if(avg1<avg2)
 {
 List temp;//      
 temp.data=p->data;
 p->data=q->data;
 q->data=temp.data;
 }
 }
}
//                
void List::sort_by_all()
{
 List *p=NULL;
 List *q=NULL;
 double avg1,avg2;
 for(p=pHead;p->pNext!=NULL;p=p->pNext)
 for(q=p->pNext;q!=NULL;q=q->pNext)
 {
 avg1=p->data->get_average();//        ,            
 avg2=q->data->get_average();
 if(avg1<avg2)
 {
 List temp;//      
 temp.data=p->data;
 p->data=q->data;
 q->data=temp.data;
 }
 }
}
//      
void List::add_info()
{
 int num=0;//     
 string stuID;//     
 string name;//     
 int age;//     
 string department;//      

 double math;//    
 double english;//    
 double pe;//    

 double c_c;//         
 double c_a;//         
 double ass;//      

 double c_e;//      
 double s_e;//    

 double r_f;//      
 double f_a;//      
 double d_g;//      

 int location=0;//    
 int flag=0;//          

 List *p=pHead;//         
 List *pf=NULL;//          
 List *new_node;//         
 cout<<"             (    ,  0):";
 cin>>location;

 while(p!=NULL)//    
 {
 num=p->data->get_num();
 if(num==location)
 {
 ++flag;

 cout<<"           (   /   /   ):";
 cin>>department;
 cout<<"        "<<endl;
 if(department=="   ")
 {
 new_node=new List;//        
 cout<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"       \t"<<"       \t"<<"    \t"<<endl;
 cin>>name>>stuID>>age>>math>>english>>pe>>c_c>>c_a>>ass;
 new_node->data=new Csstudent(name,stuID,age,department,math,english,pe,c_c,c_a,ass);
 }
 else if(department=="   ")
 {
 new_node=new List;//        
 cout<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"    \t"<<"  \t"<<endl;
 cin>>name>>stuID>>age>>math>>english>>pe>>c_e>>s_e;
 new_node->data=new Enstudent(name,stuID,age,department,math,english,pe,c_e,s_e);
 }
 else if(department=="   ")
 {
 new_node=new List;//        
 cout<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"    \t"<<"    \t"<<"    \t"<<endl;
 cin>>name>>stuID>>age>>math>>english>>pe>>r_f>>f_a>>d_g;
 new_node->data=new Mstudent(name,stuID,age,department,math,english,pe,r_f,f_a,d_g);
 }
 else
 {
 cout<<"Don't have this department!"<<endl;
 exit(0);
 }
 new_node->data->Student::count_sum();//         
 new_node->data->Student::count_average();//          
 new_node->data->count_sum();//         
 new_node->data->count_average();//          

 if(pf==NULL)
 {
 new_node->pNext=p;
 pHead=new_node;
 break;
 }
 else
 {
 new_node->pNext=p;
 pf->pNext=new_node;
 break;
 }
 }
 pf=p;
 p=p->pNext;
 }
 if(flag==0)//           ,            
 {
 cout<<"           (   /   /   ):";
 cin>>department;
 cout<<"        "<<endl;
 if(department=="   ")
 {
 new_node=new List;//        
 cout<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"       \t"<<"       \t"<<"    \t"<<endl;
 cin>>name>>stuID>>age>>math>>english>>pe>>c_c>>c_a>>ass;
 new_node->data=new Csstudent(name,stuID,age,department,math,english,pe,c_c,c_a,ass);
 }
 else if(department=="   ")
 {
 new_node=new List;//        
 cout<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"    \t"<<"  \t"<<endl;
 cin>>name>>stuID>>age>>math>>english>>pe>>c_e>>s_e;
 new_node->data=new Enstudent(name,stuID,age,department,math,english,pe,c_e,s_e);
 }
 else if(department=="   ")
 {
 new_node=new List;//        
 cout<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"    \t"<<"    \t"<<"    \t"<<endl;
 cin>>name>>stuID>>age>>math>>english>>pe>>r_f>>f_a>>d_g;
 new_node->data=new Mstudent(name,stuID,age,department,math,english,pe,r_f,f_a,d_g);
 }
 else
 {
 cout<<"Don't have this department!"<<endl;
 exit(0);
 }
 new_node->data->Student::count_sum();//         
 new_node->data->Student::count_average();//          
 new_node->data->count_sum();//         
 new_node->data->count_average();//          

 pf->pNext=new_node;
 new_node->pNext=NULL;
 }
}
//         
void List::delete_info()
{
 string name;//  
 string stuID;//  

 List *p=pHead;//         
 List *pf=NULL;//          

 char content[20];
 cout<<"                :";
 cin>>content;

 //            
 if(content[0]>='0'&&content[0]<='9')
 {
 int flag=0;//          ;
 string ID=content;
 char answer;//       

 while(p!=NULL)
 {
 stuID=p->data->get_stuID();
 if(stuID==ID)
 {
 flag++;
 cout<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"  \t\t"<<"  \t"<<"  \t"<<"  \t"<<"   \t"<<"   1\t"<<"   2\t"<<"   3\t"<<"   \t"<<endl;
 p->data->display_info();

 cout<<"           ?(Y/N)";
 cin>>answer;
 if(tolower(answer)=='y')
 {
  if(pf==NULL)
  {
  delete p->data;//          
  List *temp=p;//            
  pHead=p->pNext;//      ,       
  delete temp;//        
  }
  else
  {
  delete p->data;//          
  List *temp=p;//            
  pf->pNext=p->pNext;//      ,       
  delete temp;//        
  }
  cout<<"\t       !"<<endl;
  break;
 }
 else
 {
  break;
 }
 }
 pf=p;//      
 p=p->pNext;//           
 }
 if(flag==0)
 cout<<"       !"<<endl;
 }
 else
 {
 int flag=0;//          ;
 string na=content;//         string  
 char answer;//       

 while(p!=NULL)
 {
 //++n;
 name=p->data->get_name();
 if(name==na)
 {
 flag++;
 cout<<"  \t"<<"  \t"<<"  \t"<<"  \t"<<"  \t\t"<<"  \t"<<"  \t"<<"  \t"<<"   \t"<<"   1\t"<<"   2\t"<<"   3\t"<<"   \t"<<endl;
 p->data->display_info();

 cout<<"           ?(Y/N)";
 cin>>answer;
 if(tolower(answer)=='y')
 {
  if(pf==NULL)
  {
  delete p->data;//          
  List *temp=p;//            
  pHead=p->pNext;//      ,       
  delete temp;//        
  }
  else
  {
  delete p->data;//          
  List *temp=p;//            
  pf->pNext=p->pNext;//      ,       
  delete temp;//        
  }

  cout<<"\t       !"<<endl;
  break;
 }
 else
 {
  break;
 }
 }
 pf=p;//      
 p=p->pNext;//           
 }
 if(flag==0)
 cout<<"       !"<<endl;
 }
}
//         
void List::save_list()
{
 List *p=pHead;//         
 ofstream fout;
 fout.open("student.txt",ios::out);
 while(p!=NULL)
 {
 p->data->save_node(fout);
 p=p->pNext;
 }
 fout.close();//    
}
//    
void List::delete_list()
{
 List *p=pHead;
 List *pt;
 while(p!=NULL)
 {
 pt=p;
 p=p->pNext;
 delete pt->data;//          
 delete pt;//          
 }
 pt=NULL;
 pHead=NULL;
 p=NULL;
}
student.txt
왕 군 02 18 영어과 78 79 80 68 89
소조 01 19 컴퓨터 90 90 90 89 89 89
수학 과
유 군 04 20 영어과 89 79 80 89
이 군 05 19 컴퓨터 69 60 67 89 90
소전 06 21 수학 과 89 90 78 89 90
프로그램 이 실행 되 지 않 거나 문제 가 있 으 면 댓 글 에 메 시 지 를 남 겨 주세요.
몇 편의 글 을 추천 합 니 다.
C++간단 한 도서 관리 시스템 실현
C++간단 한 직원 정보 관리 시스템 실현
C++기초 학생 관리 시스템
관리 시스템 에 대한 더 많은 내용 은《관리 시스템 주 제》.을 클릭 하여 학습 하 세 요.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기