C++實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)的方法-創(chuàng)新互聯(lián)

了解C++實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)的方法?這個問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!

創(chuàng)新互聯(lián)公司于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、成都網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元磐安做網(wǎng)站,已為上家服務(wù),為磐安各地企業(yè)和個人服務(wù),聯(lián)系電話:028-86922220

該系統(tǒng)主要用到C++的繼承,虛函數(shù)。所有學(xué)生的信息保存在一個異質(zhì)鏈表中,并且鏈表也進(jìn)行了封裝

課設(shè)題目

設(shè)計(jì)一個學(xué)生管理系統(tǒng),要求如下:

1、學(xué)生來自英語系,數(shù)學(xué)系、計(jì)算機(jī)系:

a) 每個學(xué)生的公共信息部分包括:學(xué)號、姓名、年齡、系別,高數(shù)成績、英語成績、體育成績;
b) 英語系學(xué)生有綜合英語、口語等課程成績;
c) 數(shù)學(xué)系學(xué)生有實(shí)變函數(shù)、泛函分析、微分幾何等課程成績;
d) 計(jì)算機(jī)系學(xué)生有計(jì)算機(jī)組成原理、計(jì)算機(jī)體系結(jié)構(gòu)、匯編語言等課程成績。


每個學(xué)生可以查詢相應(yīng)信息(學(xué)號、姓名、年齡、系別及成績信息);可以查詢各門課程的平均成績。
用類及類的派生實(shí)現(xiàn)上述功能,要求使用類的繼承、虛函數(shù)、虛基類的C++語言特性;要求每個類采用不同的方式實(shí)現(xiàn)構(gòu)造函數(shù);


2、設(shè)計(jì)一個學(xué)生管理類,其中包含可變學(xué)生數(shù)目,要求實(shí)現(xiàn):

1)初始化,所有學(xué)生的信息組織以鏈表方式實(shí)現(xiàn);
2)實(shí)現(xiàn)指定學(xué)生的信息查詢(如利用學(xué)號、姓名等方式);
3)按照公共課平均成績排序;
4)按照學(xué)生所有課程的平均成績排序;
5)增加學(xué)生;
6)刪除指定學(xué)生。


3、注意構(gòu)造函數(shù)和析構(gòu)函數(shù)的實(shí)現(xiàn)方式。每個類的申明需放在單獨(dú)的頭文件中(即一個類的申明放在一個后綴名為h的文件中),每個類的實(shí)現(xiàn)放在一個單獨(dú)的cpp文件中。測試程序(即包含main函數(shù)的程序)單獨(dú)放在一個cpp文件中。

整體分析

根據(jù)題目要求該學(xué)生信息管理系統(tǒng)可分為五個功能模塊:

1、 信息讀取及輸出功能:從文件中讀取學(xué)生信息
將學(xué)生信息打印到屏幕上


2、 信息維護(hù)功能:增加學(xué)生信息
刪除學(xué)生信息


3、 信息查詢功能:根據(jù)學(xué)號查詢學(xué)生信息
根據(jù)姓名查詢學(xué)生信息


4、 成績統(tǒng)計(jì)功能:計(jì)算各學(xué)科的平均分

5、 排序功能:按照公共課平均成績進(jìn)行排序
按照全部課程的平均成績進(jìn)行排序
為實(shí)現(xiàn)以上功能,使用了類的繼承,虛函數(shù)的C++語言特性


共使用五個類:

1、 Student類:包含學(xué)生共同信息的類,共派生出三個類
2、 Csstudent類:計(jì)算機(jī)系學(xué)生類,由Student類派生而來
3、 Enstudent類:英語系學(xué)生類,由Student類派生而來
4、Mstudent類:數(shù)學(xué)系學(xué)生類,由Student類派生而來
4、 List類:鏈表類,包含對學(xué)生信息鏈表的各種操作


共使用到13個文件:<

1、 menu.cpp:內(nèi)含多個創(chuàng)建菜單函數(shù),用于實(shí)現(xiàn)不同模塊的功能顯示
2、 main.cpp:調(diào)用所有的函數(shù),并進(jìn)行適當(dāng)?shù)慕M合實(shí)現(xiàn)完整的學(xué)生成績管理系統(tǒng)
3、 student.h:包含用于保存學(xué)生公共信息及相關(guān)操作函數(shù)的Student類
4、 student.cpp:包含Student類的成員函數(shù)的實(shí)現(xiàn)
5、 csstudent.h:包含用于保存計(jì)算機(jī)系學(xué)生信息及相關(guān)操作的Csstudent類
6、 csstudent.cpp:包含Csstudent類的成員函數(shù)的實(shí)現(xiàn)
7、 enstudent.h:包含用于保存英語系學(xué)生信息及相關(guān)操作的Enstudent類
8、 enstudent.cpp:包含Enstudent類的成員函數(shù)的實(shí)現(xiàn)
9、 mstudent.h:包含用于保存數(shù)學(xué)系學(xué)生信息及相關(guān)操作的Mstudent類
10、 mstudent.cpp:包含Mstudent類的成員函數(shù)的實(shí)現(xiàn)
11、 list.h:包含用于操作學(xué)生信息的的List類
12、 list.cpp:包含List類的成員函數(shù)的實(shí)現(xiàn)
13、 student.txt:包含學(xué)生的全部信息


多個類的繼承關(guān)系圖如下:

C++實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)的方法

源代碼

main.cpp

#include<iostream>
using namespace std;
//主界面
void menu()
{
 cout<<"\n\n\t\t----------------學(xué)生成績管理系統(tǒng)------------------"<<endl<<endl;
 cout<<"\t\t1、信息維護(hù)功能"<<" "<<"\t2、信息查詢功能"<<endl<<endl;
 cout<<"\t\t3、成績統(tǒng)計(jì)功能"<<" "<<"\t4、排序功能"<<endl<<endl;
 cout<<"\t\t5、退出"<<endl<<endl;
 return;
}

 
//信息維護(hù)功能界面
void menu1()
{
 cout<<"\n\n\t\t信息維護(hù)功能"<<endl<<endl;
 cout<<"\t\t1、增加學(xué)生信息"<<endl<<endl;
 cout<<"\t\t2、刪除學(xué)生信息"<<endl<<endl;
 cout<<"\t\t3、返回"<<endl<<endl;
 return;
}

//信息查詢功能界面
void menu2()
{
 cout<<"\n\n\t\t信息查詢功能"<<endl<<endl;
 cout<<"\t\t1、按姓名查詢"<<endl<<endl;
 cout<<"\t\t2、按學(xué)號查詢"<<endl<<endl;
 cout<<"\t\t3、返回"<<endl<<endl;
 return;
}

//成績統(tǒng)計(jì)功能界面
void menu3()
{
 cout<<"\n\n\t\t成績統(tǒng)計(jì)功能"<<endl<<endl;
 cout<<"\t\t1、各科目的平均成績"<<endl<<endl;
 cout<<"\t\t2、返回"<<endl<<endl;
 return;
}


//排序功能界面
void menu4()
{
 cout<<"\n\n\t\t排序功能"<<endl<<endl;
 cout<<"\t\t1、根據(jù)公共課平均成績排序"<<endl<<endl;
 cout<<"\t\t2、根據(jù)全部科目平均成績排序"<<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<<"請選擇你要進(jìn)行的操作:";
 cin>>choice;
 switch(choice)
 {
 //信息維護(hù)功能
 case 1:
 while(1)
 {
  pHead.input_info();
  system("cls");
  menu1();
  cout<<"請選擇你要進(jìn)行的操作:";
  cin>>choice1;
  switch(choice1)
  {
  //增加學(xué)生信息
  case 1:
  pHead.output_info();//遍歷鏈表,并打印學(xué)生的信息
  pHead.add_info();//增加學(xué)生信息
  system("cls");
  cout<<"\n\n\n\t\t學(xué)生成績信息表(更新)"<<endl;
  pHead.output_info();//遍歷鏈表,并打印學(xué)生的信息
  pHead.save_list();//將改動保存到文件中
  cout<<"\n改動已保存到文件中"<<endl<<endl;
  system("pause");
  break;
  //刪除學(xué)生信息
  case 2:
  pHead.output_info();//遍歷鏈表,并打印學(xué)生的信息
  pHead.delete_info();//刪除學(xué)生信息
  system("cls");
  cout<<"\n\n\n\t\t學(xué)生成績信息表(更新)"<<endl;
  pHead.output_info();//遍歷鏈表,并打印學(xué)生的信息
  pHead.save_list();//將改動保存到文件中
  cout<<"\n改動已保存到文件中"<<endl<<endl;
  system("pause");
  break;
  default:
  system("cls");
  break;
  }
  if(choice1!=1&&choice1!=2)
  break;
 }
 break;

 //信息查詢功能
 case 2:
 while(1)
 {
  system("cls");
  menu2();
  cout<<"請選擇你要進(jìn)行的操作:";
  cin>>choice2;
  switch(choice2)
  {
  //按姓名進(jìn)行查詢
  case 1:
  pHead.search_by_name();
  system("pause");
  break;
  //按學(xué)號進(jìn)行查詢
  case 2:
  pHead.search_by_ID();
  system("pause");
  //system("cls");
  break;
  default:
  system("cls");
  break;
  }
  if(choice2!=1&&choice2!=2)
  break;
  //break;
 }
 break;

 //成績統(tǒng)計(jì)功能
 case 3:
 while(1)
 {
  system("cls");
  menu3();
  cout<<"請選擇你要進(jìn)行的操作:";
  cin>>choice3;
  switch(choice3)
  {
  //計(jì)算各科目的平均成績
  case 1:
  pHead.count_sub_avg();//計(jì)算各學(xué)科的平均成績
  system("pause");
  break;
  default:
  system("cls");
  break;
  }
  if(choice3!=1)
  break;
 }
 break;

 //排序功能
 case 4:
 while(1)
 {
  system("cls");
  menu4();
  cout<<"請選擇你要進(jìn)行的操作:";
  cin>>choice4;
  switch(choice4)
  {
  //根據(jù)公共課平均成績排序
  case 1:
  pHead.sort_by_public();
  pHead.output_info();
  cout<<endl;
  system("pause");
  break;
  case 2:
  //根據(jù)全部科目平均成績排序
  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;
}

(三)student.h

#ifndef _STUDENT_H
#define _STUDENT_H
#include<iostream>
#include<cstring>
#include<sstream>
#include<fstream>
using namespace std;
class Student
{
private:
 //共同的學(xué)生信息
 int num;//學(xué)生的編號
 string stuID;//學(xué)生的學(xué)號
 string name;//學(xué)生的姓名
 int age;//學(xué)生的年齡
 string department;//學(xué)生所屬學(xué)院
 //共有的科目成績
 double math;//高數(shù)成績
 double english;//英語成績
 double PE;//體育成績
 double sum_part;//總分
 double average_part;//公共成績的平均分
public:
 Student(){}//無參數(shù)的構(gòu)造函數(shù)
 Student(string _name,string _stuID,int _age,string _department,double _math,double _english,double _pe);//含參數(shù)的構(gòu)造函數(shù)
 Student(const Student& stu);//拷貝構(gòu)造函數(shù)
 virtual ~Student(){}//析構(gòu)函數(shù)
public:
 //設(shè)置學(xué)生信息相關(guān)函數(shù)
 void set_num(int n);//設(shè)置學(xué)生的編號
 void set_stuID(string ID);//設(shè)置學(xué)生的學(xué)號
 void set_name(string na);//設(shè)置學(xué)生的姓名
 void set_age(int a);//設(shè)置學(xué)生的年齡
 void set_department(string dept);//設(shè)置學(xué)生所屬的學(xué)院
 void set_scores_part(double m,double en,double pe);//設(shè)置學(xué)生的各科成績

 virtual void count_sum();//計(jì)算公共科目的總分
 virtual void count_average();//計(jì)算公共科目的平均分

 //獲取學(xué)生信息相關(guān)函數(shù)
 int get_num();//獲取學(xué)生的編號
 string get_stuID();//獲得學(xué)生的學(xué)號
 string get_name();//獲得學(xué)生的姓名
 int get_age();//獲得學(xué)生的年齡
 string get_department();//獲得學(xué)生的所屬學(xué)院
 virtual void get_scores(double *m,double *en,double *pe);//獲得學(xué)生的公共科目的各項(xiàng)成績
 virtual double get_sum();//獲得公共成績的總分
 virtual double get_average();//獲得公共成績的平均分

 virtual void display_info();//將學(xué)生信息打印到屏幕上
 virtual void save_node(ofstream& fout);//將學(xué)生信息保存到文件中

};
#endif // _STUDENT_H

student.cpp

#include<iostream>
#include<cstring>
#include<sstream>
#include"student.h"
#include<fstream>
using namespace std;
//含參數(shù)的構(gòu)造函數(shù)
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;
}
//拷貝構(gòu)造函數(shù)
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;
}
//設(shè)置學(xué)生的編號
void Student::set_num(int n)
{
 num=n;
}
//設(shè)置學(xué)生的學(xué)號
void Student::set_stuID(string ID)
{
 stuID=ID;
}
//設(shè)置學(xué)生的姓名
void Student::set_name(string na)
{
 name=na;
}
//設(shè)置學(xué)生的年齡
void Student::set_age(int a)
{
 age=a;
}
//設(shè)置學(xué)生所屬的學(xué)院
void Student::set_department(string dept)
{
 department=dept;
}
//設(shè)置學(xué)生的各科成績
void Student::set_scores_part(double m,double en,double pe=0)
{
 math=m;
 english=en;
 PE=pe;
}
//計(jì)算公共科目的總分
void Student::count_sum()
{
 sum_part=math+english+PE;
}
//計(jì)算公共科目的平均分
void Student::count_average()
{
 average_part=(math+english+PE)/3;
}

//獲取學(xué)生的編號
int Student::get_num()
{
 return num;
}
//獲得學(xué)生的學(xué)號
string Student::get_stuID()
{
 return stuID;
}
//獲得學(xué)生的姓名
string Student::get_name()
{
 return name;
}
//獲得學(xué)生的年齡
int Student::get_age()
{
 return age;
}
//獲得學(xué)生的所屬學(xué)院
string Student::get_department()
{
 return department;
}
//獲得學(xué)生的各項(xiàng)成績
void Student::get_scores(double *m,double *en,double *pe)
{
 *m=math;
 *en=english;
 *pe=PE;
}
//獲取學(xué)生的編號
double Student::get_sum()
{
 return sum_part;
}
//獲得公共成績的平均分
double Student::get_average()
{
 return average_part;
}
//將學(xué)生信息打印到屏幕上
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';
}
//將學(xué)生信息保存到文件中
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(){}//無參數(shù)的構(gòu)造函數(shù)
 //帶初始化列表的構(gòu)造函數(shù)
 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(){}//析構(gòu)函數(shù)
public:
 //設(shè)置學(xué)生信息相關(guān)函數(shù)
 virtual void count_sum();//計(jì)算總分
 virtual void count_average();//計(jì)算平均分

 //獲取學(xué)生信息相關(guān)函數(shù)
 virtual double get_sum();//獲得總分
 virtual double get_average();//獲得平均分
 virtual void get_scores(double* c_c,double*c_a,double *ass);//獲取學(xué)生的專業(yè)成績
public:
 virtual void display_info();//將學(xué)生信息打印到屏幕上
 virtual void save_node(ofstream& fout);//將學(xué)生信息保存到文件中
private:
 double sum;//全部科目的總分
 double average;//全部科目的平均分
 double c_composition;//計(jì)算機(jī)組成原理成績
 double c_architecture;//計(jì)算機(jī)體系結(jié)構(gòu)成績
 double assembly_lan;//匯編語言成績
};
#endif

csstudent.cpp

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

//計(jì)算所有科目的總分
void Csstudent::count_sum()
{
 double part=Student::get_sum();
 sum=part+c_composition+c_architecture+assembly_lan;
}
//計(jì)算全部科目的平均分
void Csstudent::count_average()
{
 average=sum/6;
}

//獲得學(xué)生全部科目的總分
double Csstudent::get_sum()
{
 return sum;
}
//獲得學(xué)生全部科目的平均分
double Csstudent::get_average()
{
 return average;
}
//獲取學(xué)生的專業(yè)成績
void Csstudent::get_scores(double* c_c,double*c_a,double *ass)
{
 *c_c=c_composition;
 *c_a=c_architecture;
 *ass=assembly_lan;
}
//將學(xué)生信息打印到屏幕上
void Csstudent::display_info()
{
 Student::display_info();
 cout<<c_composition<<'\t'<<c_architecture<<'\t'<<assembly_lan<<'\t'<<average<<endl;
}
//將學(xué)生信息保存到文件中
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(){}//不含參數(shù)的構(gòu)造函數(shù)
 //帶初始化列表的構(gòu)造函數(shù)
 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(){}//析構(gòu)函數(shù)
public:
 //設(shè)置學(xué)生信息相關(guān)函數(shù)
 virtual void count_sum();//計(jì)算總分
 virtual void count_average();//計(jì)算平均分

 //獲取學(xué)生信息相關(guān)函數(shù)
 virtual double get_sum();//獲得總分
 virtual double get_average();//獲得平均分
 virtual void get_scores(double* c_e,double* s_e,double* no);//獲得學(xué)生的專業(yè)成績
public:
 virtual void display_info();//將學(xué)生信息打印到屏幕上
 virtual void save_node(ofstream& fout);//將學(xué)生信息保存到文件中
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"

//計(jì)算所有科目的總分
void Enstudent::count_sum()
{
 double part=Student::get_sum();
 sum=part+comprehensive_en+spoken_en;
}
//計(jì)算全部科目的平均分
void Enstudent::count_average()
{
 average=sum/5;
}

//獲得學(xué)生全部科目的總分
double Enstudent::get_sum()
{
 return sum;
}
//獲得學(xué)生全部科目的平均分
double Enstudent::get_average()
{
 return average;
}
//獲得學(xué)生的專業(yè)成績
void Enstudent::get_scores(double* c_e,double* s_e,double* no)
{
 *c_e=comprehensive_en;
 *s_e=spoken_en;
}
//將學(xué)生信息打印到屏幕上
void Enstudent::display_info()
{
 Student::display_info();
 cout<<comprehensive_en<<'\t'<<spoken_en<<"\t\t"<<average<<endl;
}
//將學(xué)生信息保存到文件中
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(){}//不含參數(shù)的構(gòu)造函數(shù)
 //帶初始化列表的構(gòu)造函數(shù)
 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(){}//析構(gòu)函數(shù)
public:
 //設(shè)置學(xué)生信息相關(guān)函數(shù)
 virtual void count_sum();//計(jì)算總分
 virtual void count_average();//計(jì)算平均分

 //獲取學(xué)生信息相關(guān)函數(shù)
 virtual double get_sum();//獲得總分
 virtual double get_average();//獲得平均分
 virtual void get_scores(double* r_f,double* f_a,double* d_g);//獲得學(xué)生的專業(yè)成績
public:
 virtual void display_info();//將學(xué)生信息打印到屏幕上
 virtual void save_node(ofstream& fout);//將學(xué)生信息保存到文件中
private:
 double sum;//全部科目的總分
 double average;//全部科目的平均分
 double real_variable_f;//實(shí)變函數(shù)成績
 double f_analysis;//泛函分析成績
 double diff_geometry;//微分幾何成績
};
#endif

mstudent.cpp

#include<iostream>
#include<cstring>
#include<sstream>
#include<fstream>
#include"student.h"
#include"mstudent.h"
//設(shè)置所有科目的總分

//計(jì)算所有科目的總分
void Mstudent::count_sum()
{
 double part=Student::get_sum();
 sum=part+real_variable_f+f_analysis+diff_geometry;
}
//計(jì)算全部科目的平均分
void Mstudent::count_average()
{
 average=sum/6;
}

//獲得學(xué)生全部科目的總分
double Mstudent::get_sum()
{
 return sum;
}
//獲得學(xué)生全部科目的平均分
double Mstudent::get_average()
{
 return average;
}
//獲得學(xué)生的專業(yè)成績
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;
}
//將學(xué)生信息打印到屏幕上
void Mstudent::display_info()
{
 Student::display_info();
 cout<<real_variable_f<<'\t'<<f_analysis<<'\t'<<diff_geometry<<'\t'<<average<<endl;
}
 
//將學(xué)生信息保存到文件中
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(){}//無參數(shù)構(gòu)造函數(shù)
public:
 void input_info();//從文件導(dǎo)入學(xué)生信息,保存到鏈表中
 void output_info();//將鏈表中的數(shù)據(jù)打印到屏幕上
 void count_sub_avg();//計(jì)算各個科目的平均分
public:
 void search_by_ID();//根據(jù)學(xué)號查找學(xué)生信息
 void search_by_name();//根據(jù)姓名查找學(xué)生信息
public:
 void sort_by_public();//根據(jù)專業(yè)課成績平均分進(jìn)行排序
 void sort_by_all();//根據(jù)學(xué)生所有科目的平均分進(jìn)行排序
public:
 void add_info();//增加學(xué)生信息
 void delete_info();//刪除指定學(xué)生的信息
 //void modify_info();//修改學(xué)生信息
public:
 void save_list();//將鏈表保存到文件中
 void delete_list();//銷毀鏈表

private:
 List *pHead;//鏈表的頭指針
 Student *data;//指向?qū)W生信息的指針
 List *pNext;//指向下一個結(jié)點(diǎn)的指針
};
 
#endif // _LIST_H

(十二)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;

//從文件導(dǎo)入學(xué)生信息,保存到鏈表中
void List::input_info()
{
 int num=0;//學(xué)生的編號
 string stuID;//學(xué)生的學(xué)號
 string name;//學(xué)生的姓名
 int age;//學(xué)生的年齡
 string department;//學(xué)生所屬學(xué)院

 double math;//高數(shù)成績
 double english;//英語成績
 double pe;//體育成績

 double c_c;//計(jì)算機(jī)組成原理成績
 double c_a;//計(jì)算機(jī)體系結(jié)構(gòu)成績
 double ass;//匯編語言成績

 double c_e;//綜合英語成績
 double s_e;//口語成績

 double r_f;//實(shí)變函數(shù)成績
 double f_a;//泛函分析成績
 double d_g;//微分幾何成績

 List *current=NULL;//指向當(dāng)前結(jié)點(diǎn)的指針
 List *previous=NULL;//指向前一個結(jié)點(diǎn)的指針
 ifstream fin;
 fin.open("student.txt",ios::in);
 if(!fin)
 {
 cout<<"Fail to open the file!"<<endl;
 exit(0);
 }
 //創(chuàng)建鏈表
 while(1)
 {
 //判斷是否讀完文件
 if(!(fin>>name>>stuID>>age>>department>>math>>english>>pe))
 break;
 else
 {
 ++num;
 //根據(jù)不同專業(yè)的學(xué)生 new 不同的對象,根據(jù)不同院系設(shè)置各科分?jǐn)?shù)
 if(department=="計(jì)算機(jī)")
 {
 current=new List;//創(chuàng)建新結(jié)點(diǎn)
 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;//創(chuàng)建新結(jié)點(diǎn)
 fin>>c_e>>s_e;
 current->data=new Enstudent(name,stuID,age,department,math,english,pe,c_e,s_e);
 }
 else if(department=="數(shù)學(xué)系")
 {
 current=new List;//創(chuàng)建新結(jié)點(diǎn)
 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;//保存頭結(jié)點(diǎn)
 if(previous!=NULL)
 previous->pNext=current;//保存前一個結(jié)點(diǎn)的地址

 current->data->set_num(num);
 current->data->Student::count_sum();//計(jì)算公共科目的總分
 current->data->Student::count_average();//計(jì)算公共科目的平均分
 current->data->count_sum();//計(jì)算全部科目的總分
 current->data->count_average();//計(jì)算全部科目的平均分

 current->pNext=NULL;
 previous=current;
 }
 fin.close();//關(guān)閉文件
}
//將鏈表中的數(shù)據(jù)打印到屏幕上
void List::output_info()
{
 List *p=pHead;//保存頭節(jié)點(diǎn)
 int num=0;//設(shè)置編號
 cout<<"編號\t"<<"姓名\t"<<"學(xué)號\t"<<"年齡\t"<<"系別\t\t"<<"數(shù)學(xué)\t"<<"英語\t"<<"體育\t"<<"平均分\t"<<"專業(yè)課1\t"<<"專業(yè)課2\t"<<"專業(yè)課3\t"<<"平均分\t"<<endl;
 while(p!=NULL)
 {
 ++num;
 p->data->set_num(num);
 p->data->display_info();
 p=p->pNext;
 }
}
//計(jì)算各個科目的平均分
void List::count_sub_avg()
{
 string stuID;//學(xué)生的學(xué)號
 string department;//學(xué)生所屬學(xué)院

 double math,english,pe;//高數(shù)成績,英語成績,體育成績
 double math_sum=0,english_sum=0,pe_sum=0;//高數(shù)、英語、體育總分
 double math_avg,english_avg,pe_avg;//高數(shù)、英語、體育平均分

 double c_c,c_a,ass;//計(jì)算機(jī)組成原理成績,計(jì)算機(jī)體系結(jié)構(gòu)成績,匯編語言成績
 double c_c_sum=0,c_a_sum=0,ass_sum=0;//計(jì)算機(jī)組成原理成績,計(jì)算機(jī)體系結(jié)構(gòu)成績,匯編語言總分
 double c_c_avg,c_a_avg,ass_avg;//計(jì)算機(jī)組成原理成績,計(jì)算機(jī)體系結(jié)構(gòu)成績,匯編語言平均分

 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;//實(shí)變函數(shù)成績,泛函分析成績,微分幾何成績
 double r_f_sum=0,f_a_sum=0,d_g_sum=0;//實(shí)變函數(shù)成績,泛函分析成績,微分幾何成績總分
 double r_f_avg,f_a_avg,d_g_avg;//實(shí)變函數(shù)成績,泛函分析成績,微分幾何成績平均分

 int n=0;//記錄所有學(xué)生的數(shù)量
 int cn=0;//記錄計(jì)算機(jī)系的學(xué)生數(shù)量
 int en=0;//記錄英語系的學(xué)生數(shù)量
 int mn=0;//記錄數(shù)學(xué)系的學(xué)生數(shù)量

 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=="計(jì)算機(jī)")
 {
 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=="數(shù)學(xué)系")
 {
 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;//數(shù)學(xué)平均成績
 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<<"數(shù)學(xué)\t"<<"英語\t"<<"體育"<<endl;
 cout<<math_avg<<'\t'<<english_avg<<'\t'<<pe_avg<<endl<<endl;

 cout<<"計(jì)算機(jī)系專業(yè)課平均成績:"<<endl;
 cout<<"計(jì)算機(jī)組成原理:"<<c_c_avg<<endl;
 cout<<"計(jì)算機(jī)體系結(jié)構(gòu):"<<c_a_avg<<endl;
 cout<<"匯編語言:"<<ass_avg<<endl<<endl;

 cout<<"數(shù)學(xué)系專業(yè)課平均成績:"<<endl;
 cout<<"實(shí)變函數(shù):"<<r_f_avg<<endl;
 cout<<"泛函分析:"<<f_a_avg<<endl;
 cout<<"微分幾何:"<<d_g_avg<<endl<<endl;

 cout<<"英語系專業(yè)課平均成績:"<<endl;
 cout<<"綜合英語:"<<c_e_avg<<endl;
 cout<<"英語口語:"<<s_e_avg<<endl;
}
//根據(jù)學(xué)號查找學(xué)生信息
void List::search_by_ID()
{
 List *p=pHead;//保存頭節(jié)點(diǎn)
 int flag=0;//用來標(biāo)記是否找到對應(yīng)的學(xué)生
 string ID;//保存學(xué)生的學(xué)號
 cout<<"請輸入你要查詢的學(xué)生的學(xué)號:";
 cin>>ID;
 cout<<"編號\t"<<"姓名\t"<<"學(xué)號\t"<<"年齡\t"<<"系別\t\t"<<"數(shù)學(xué)\t"<<"英語\t"<<"體育\t"<<"平均分\t"<<"專業(yè)課1\t"<<"專業(yè)課2\t"<<"專業(yè)課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;
}
//根據(jù)姓名查找學(xué)生信息
void List::search_by_name()
{
 List *p=pHead;//保存頭節(jié)點(diǎn)
 int flag=0;//用來標(biāo)記是否找到對應(yīng)的學(xué)生
 string name;//保存學(xué)生的學(xué)號
 cout<<"請輸入你要查詢的學(xué)生的姓名:";
 cin>>name;
 cout<<"編號\t"<<"姓名\t"<<"學(xué)號\t"<<"年齡\t"<<"系別\t\t"<<"數(shù)學(xué)\t"<<"英語\t"<<"體育\t"<<"平均分\t"<<"專業(yè)課1\t"<<"專業(yè)課2\t"<<"專業(yè)課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;
}

//根據(jù)公共課成績平均分進(jìn)行降序排序
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();//調(diào)用基類的函數(shù)得到學(xué)生公共課的平均成績
 avg2=q->data->Student::get_average();
 if(avg1<avg2)
 {
 List temp;//臨時結(jié)點(diǎn)對象
 temp.data=p->data;
 p->data=q->data;
 q->data=temp.data;
 }
 }
}
//根據(jù)學(xué)生所有科目的平均分進(jìn)行排序
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();//調(diào)用派生類的函數(shù),得到學(xué)生所有科目的平均分
 avg2=q->data->get_average();
 if(avg1<avg2)
 {
 List temp;//臨時結(jié)點(diǎn)對象
 temp.data=p->data;
 p->data=q->data;
 q->data=temp.data;
 }
 }
}
//增加學(xué)生信息
void List::add_info()
{
 int num=0;//學(xué)生的編號
 string stuID;//學(xué)生的學(xué)號
 string name;//學(xué)生的姓名
 int age;//學(xué)生的年齡
 string department;//學(xué)生所屬學(xué)院

 double math;//高數(shù)成績
 double english;//英語成績
 double pe;//體育成績

 double c_c;//計(jì)算機(jī)組成原理成績
 double c_a;//計(jì)算機(jī)體系結(jié)構(gòu)成績
 double ass;//匯編語言成績

 double c_e;//綜合英語成績
 double s_e;//口語成績

 double r_f;//實(shí)變函數(shù)成績
 double f_a;//泛函分析成績
 double d_g;//微分幾何成績

 int location=0;//位置編號
 int flag=0;//標(biāo)記是否有對應(yīng)的編號

 List *p=pHead;//指向當(dāng)前結(jié)點(diǎn)的指針
 List *pf=NULL;//指向前一個結(jié)點(diǎn)的指針
 List *new_node;//指向新增結(jié)點(diǎn)的指針
 cout<<"請輸入你想增加的信息的位置(位置編號,大于0):";
 cin>>location;

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

 cout<<"請輸入新增學(xué)生所屬系別(計(jì)算機(jī)/英語系/數(shù)學(xué)系):";
 cin>>department;
 cout<<"請輸入學(xué)生的信息"<<endl;
 if(department=="計(jì)算機(jī)")
 {
 new_node=new List;//創(chuàng)建一個新的結(jié)點(diǎn)
 cout<<"姓名\t"<<"學(xué)號\t"<<"年齡\t"<<"數(shù)學(xué)\t"<<"英語\t"<<"體育\t"<<"計(jì)算機(jī)組成原理\t"<<"計(jì)算機(jī)體系結(jié)構(gòu)\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;//創(chuàng)建一個新的結(jié)點(diǎn)
 cout<<"姓名\t"<<"學(xué)號\t"<<"年齡\t"<<"數(shù)學(xué)\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=="數(shù)學(xué)系")
 {
 new_node=new List;//創(chuàng)建一個新的結(jié)點(diǎn)
 cout<<"姓名\t"<<"學(xué)號\t"<<"年齡\t"<<"數(shù)學(xué)\t"<<"英語\t"<<"體育\t"<<"實(shí)變函數(shù)\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();//計(jì)算公共科目的總分
 new_node->data->Student::count_average();//計(jì)算公共科目的平均分
 new_node->data->count_sum();//計(jì)算全部科目的總分
 new_node->data->count_average();//計(jì)算全部科目的平均分

 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)//沒有找到輸入的位置編號,則默認(rèn)將學(xué)生信息加在最后
 {
 cout<<"請輸入新增學(xué)生所屬系別(計(jì)算機(jī)/英語系/數(shù)學(xué)系):";
 cin>>department;
 cout<<"請輸入學(xué)生的信息"<<endl;
 if(department=="計(jì)算機(jī)")
 {
 new_node=new List;//創(chuàng)建一個新的結(jié)點(diǎn)
 cout<<"姓名\t"<<"學(xué)號\t"<<"年齡\t"<<"數(shù)學(xué)\t"<<"英語\t"<<"體育\t"<<"計(jì)算機(jī)組成原理\t"<<"計(jì)算機(jī)體系結(jié)構(gòu)\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;//創(chuàng)建一個新的結(jié)點(diǎn)
 cout<<"姓名\t"<<"學(xué)號\t"<<"年齡\t"<<"數(shù)學(xué)\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=="數(shù)學(xué)系")
 {
 new_node=new List;//創(chuàng)建一個新的結(jié)點(diǎn)
 cout<<"姓名\t"<<"學(xué)號\t"<<"年齡\t"<<"數(shù)學(xué)\t"<<"英語\t"<<"體育\t"<<"實(shí)變函數(shù)\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();//計(jì)算公共科目的總分
 new_node->data->Student::count_average();//計(jì)算公共科目的平均分
 new_node->data->count_sum();//計(jì)算全部科目的總分
 new_node->data->count_average();//計(jì)算全部科目的平均分

 pf->pNext=new_node;
 new_node->pNext=NULL;
 }
}
//刪除指定學(xué)生的信息
void List::delete_info()
{
 string name;//姓名
 string stuID;//學(xué)號

 List *p=pHead;//指向當(dāng)前結(jié)點(diǎn)的指針
 List *pf=NULL;//指向前一個結(jié)點(diǎn)的指針

 char content[20];
 cout<<"請輸入信息待刪除學(xué)生的姓名或?qū)W號:";
 cin>>content;

 //根據(jù)輸入來進(jìn)行查找并刪除
 if(content[0]>='0'&&content[0]<='9')
 {
 int flag=0;//標(biāo)記是否找到對應(yīng)學(xué)生;
 string ID=content;
 char answer;//記錄回答的內(nèi)容

 while(p!=NULL)
 {
 stuID=p->data->get_stuID();
 if(stuID==ID)
 {
 flag++;
 cout<<"編號\t"<<"姓名\t"<<"學(xué)號\t"<<"年齡\t"<<"系別\t\t"<<"數(shù)學(xué)\t"<<"英語\t"<<"體育\t"<<"平均分\t"<<"專業(yè)課1\t"<<"專業(yè)課2\t"<<"專業(yè)課3\t"<<"平均分\t"<<endl;
 p->data->display_info();

 cout<<"你確定要刪除這組信息嗎?(Y/N)";
 cin>>answer;
 if(tolower(answer)=='y')
 {
  if(pf==NULL)
  {
  delete p->data;//刪除學(xué)生信息所占內(nèi)存
  List *temp=p;//暫時保存指向該結(jié)點(diǎn)的指針
  pHead=p->pNext;//跳過當(dāng)前結(jié)點(diǎn),實(shí)現(xiàn)信息的刪除
  delete temp;//將其所占內(nèi)存刪除
  }
  else
  {
  delete p->data;//刪除學(xué)生信息所占內(nèi)存
  List *temp=p;//暫時保存指向該結(jié)點(diǎn)的指針
  pf->pNext=p->pNext;//跳過當(dāng)前結(jié)點(diǎn),實(shí)現(xiàn)信息的刪除
  delete temp;//將其所占內(nèi)存刪除
  }
  cout<<"\t該組信息已刪除!"<<endl;
  break;
 }
 else
 {
  break;
 }
 }
 pf=p;//保存當(dāng)前指針
 p=p->pNext;//設(shè)置指針指向下一個結(jié)點(diǎn)
 }
 if(flag==0)
 cout<<"沒有找到該學(xué)生!"<<endl;
 }
 else
 {
 int flag=0;//標(biāo)記是否找到對應(yīng)學(xué)生;
 string na=content;//將字符串?dāng)?shù)組轉(zhuǎn)化成string類型
 char answer;//記錄回答的內(nèi)容

 while(p!=NULL)
 {
 //++n;
 name=p->data->get_name();
 if(name==na)
 {
 flag++;
 cout<<"編號\t"<<"姓名\t"<<"學(xué)號\t"<<"年齡\t"<<"系別\t\t"<<"數(shù)學(xué)\t"<<"英語\t"<<"體育\t"<<"平均分\t"<<"專業(yè)課1\t"<<"專業(yè)課2\t"<<"專業(yè)課3\t"<<"平均分\t"<<endl;
 p->data->display_info();

 cout<<"你確定要刪除這組信息嗎?(Y/N)";
 cin>>answer;
 if(tolower(answer)=='y')
 {
  if(pf==NULL)
  {
  delete p->data;//刪除學(xué)生信息所占內(nèi)存
  List *temp=p;//暫時保存指向該結(jié)點(diǎn)的指針
  pHead=p->pNext;//跳過當(dāng)前結(jié)點(diǎn),實(shí)現(xiàn)信息的刪除
  delete temp;//將其所占內(nèi)存刪除
  }
  else
  {
  delete p->data;//刪除學(xué)生信息所占內(nèi)存
  List *temp=p;//暫時保存指向該結(jié)點(diǎn)的指針
  pf->pNext=p->pNext;//跳過當(dāng)前結(jié)點(diǎn),實(shí)現(xiàn)信息的刪除
  delete temp;//將其所占內(nèi)存刪除
  }

  cout<<"\t該組信息已刪除!"<<endl;
  break;
 }
 else
 {
  break;
 }
 }
 pf=p;//保存當(dāng)前指針
 p=p->pNext;//設(shè)置指針指向下一個結(jié)點(diǎn)
 }
 if(flag==0)
 cout<<"沒有找到該學(xué)生!"<<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();//關(guān)閉文件
}
//銷毀鏈表
void List::delete_list()
{
 List *p=pHead;
 List *pt;
 while(p!=NULL)
 {
 pt=p;
 p=p->pNext;
 delete pt->data;//刪除學(xué)生信息所占內(nèi)存
 delete pt;//刪除鏈表結(jié)點(diǎn)所占內(nèi)存
 }
 pt=NULL;
 pHead=NULL;
 p=NULL;
}

student.txt


小王 02 18 英語系 78 79 80 68 89
小趙 01 19 計(jì)算機(jī) 90 90 90 89 89 89
小張 03 19 數(shù)學(xué)系 78 89 69 89 90 60
小劉 04 20 英語系 89 79 79 80 89
小李 05 19 計(jì)算機(jī) 69 60 67 89 90 90
小田 06 21 數(shù)學(xué)系 89 90 90 78 89 90

感謝各位的閱讀!看完上述內(nèi)容,你們對C++實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)的方法大概了解了嗎?希望文章內(nèi)容對大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

新聞標(biāo)題:C++實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)的方法-創(chuàng)新互聯(lián)
文章分享:http://muchs.cn/article0/hssoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作微信公眾號網(wǎng)站設(shè)計(jì)公司、移動網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司