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++기초 학생 관리 시스템
관리 시스템 에 대한 더 많은 내용 은《관리 시스템 주 제》.을 클릭 하여 학습 하 세 요.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio에서 파일 폴더 구분 (포함 경로 설정)Visual Studio에서 c, cpp, h, hpp 파일을 폴더로 나누고 싶었습니까? 어쩌면 대부분의 사람들이 있다고 생각합니다. 처음에 파일이 만들어지는 장소는 프로젝트 파일 등과 같은 장소에 있기 때문에 파일...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.