成绩管理系统的C++实现 发表于 2007-03-29 | 分类于 课程设计 帮同学做的课程设计:成绩管理系统,同时学习一下C++,编程实践一下。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955//list.h#pragma once////////////////////////////////////////////typedef struct { long SID; //学号 char Name[20]; //姓名 double DailyScore; //平时成绩 double FinalScore; //期末成绩 double TotalScore; //总评成绩} SCOREINFO;////////////////////////////////////////////struct NODE{ SCOREINFO ScoreInfo; struct NODE * next;};typedef struct NODE Node;typedef Node * Link;///////////////////////////////////////////class List{ Link Head;public: List(void); ~List(void); Link CreateList(void); //创建链表 int PrintList(void); //打印链表的内容 void FreeList(void); //释放链表的所有内容 Link InsertList(SCOREINFO & ScInfo); //插入一个节点并以学号的顺序排列 int DeleteList(long sid); //以学号删除一个节点 int InquireList(long sid,SCOREINFO & ScInfo); //以学号查询 Link ModifyList(SCOREINFO & ScInfo); //修改链表 Link GetHead(void); Link SaveList(char * FileName); Link LoadList(char * FileName); void SetHead(Link h);};//////////////////////////////////////////////#define SUBNUM 6class Score{private: int ClassID; //班级号 char * SUBNAME[SUBNUM]; //科目名称 char FILENAME[SUBNUM][30]; // 班级号+科目名称=磁盘文件 Link HEAD[SUBNUM]; //链表的头指针 List LIST[SUBNUM]; //链表对象 char Command[50]; //选择后所输入的命令 char SubCommand[3][20]; //分解后的命令子项 int Choice; //选择 List list1;public: Score(int CID); //默认为一班的成绩,可以声明时修改 int GetChoice(void); void InputScore(void); void InquireScore(void); void ModifyScore(void); void DeleteScore(void); void SaveChanges(void); int ScanCommand(void); void QuitSystem(void); int GetIndex(char * SubName);}; //list.cpp#include "./list.h"#include<iostream>#include<cstdlib>#include<fstream>#include<cstring>#include<cctype>using namespace std;List::List(void){ Head=NULL;}void List::SetHead(Link h){ Head=h;}List::~List(void){}//建立链表Link List::CreateList(void){ Link New,Pointer; Head=new Node; if(Head==NULL) std::cout<<"Memory Allocte Failed!/n"; else { //建立表头 std::cout<<"输入一位学生的成绩:/n"; std::cout<<"学号:"; std::cin>>Head->ScoreInfo.SID; std::cout<<"姓名:"; std::cin>>Head->ScoreInfo.Name; std::cout<<"平时成绩:"; std::cin>>Head->ScoreInfo.DailyScore; std::cout<<"期末成绩:"; std::cin>>Head->ScoreInfo.FinalScore; Head->ScoreInfo.TotalScore=Head->ScoreInfo.DailyScore*0.3+Head->ScoreInfo.FinalScore*0.7; Head->next=NULL; Pointer=Head; while(1) { //建立新结点 New= new Node; std::cout<<"输入一位学生的成绩:/n"; std::cout<<"学号(-1 to end):"; std::cin>>New->ScoreInfo.SID; if(New->ScoreInfo.SID==-1) break; std::cout<<"姓名:"; std::cin>>New->ScoreInfo.Name; std::cout<<"平时成绩:"; std::cin>>New->ScoreInfo.DailyScore; std::cout<<"期末成绩:"; std::cin>>New->ScoreInfo.FinalScore; New->ScoreInfo.TotalScore=New->ScoreInfo.DailyScore*0.3+New->ScoreInfo.FinalScore*0.7; New->next=NULL; //将新结点连接在头结点上 Pointer->next=New; Pointer=New; } } return Head;}//打印链表int List::PrintList(void){ int counter=0; //计数器 Link Pointer; //Pointer指向头结点 Pointer=Head; //显示数据信息 cout<<"/n学号/t姓名/t平时成绩/t期末成绩/t总评成绩"; cout<<"/n------------------------------------------------------------------"; while(Pointer!=NULL) { std::cout<<"/n"<<Pointer->ScoreInfo.SID; std::cout<<"/t"<<Pointer->ScoreInfo.Name; std::cout<<"/t"<<Pointer->ScoreInfo.DailyScore; std::cout<<"/t/t"<<Pointer->ScoreInfo.FinalScore; std::cout<<"/t/t"<<Pointer->ScoreInfo.TotalScore; cout<<"/n------------------------------------------------------------------"; counter++; //每一屏可以显示10条信息 if(counter%10==0) { std::cout<<"/nPress Enter to Continue........../n"; getchar(); getchar(); cout<<"/n学号/t姓名/t平时成绩/t期末成绩/t总评成绩"; cout<<"/n------------------------------------------------------------------"; } //指向下一个结点 Pointer=Pointer->next; } return 1;}//////////////////////////////////////////////void List::FreeList(void){ Link Pointer; while(Head!=NULL) { Pointer=Head; Head=Head->next; delete Pointer; }}//向链表中插数据信息(按学号由大到小顺序插入)Link List::InsertList(SCOREINFO & ScInfo){ Link Pointer,New,Back; //同时指向头结点,不论链表是否为空 Pointer=Head; Back=Head; //要插入的结点 New=new Node; New->ScoreInfo=ScInfo; New->next=NULL; //如果链表为空,或者要插入的学号小于已存在链表头结点的学号,则插入头结点 if(Pointer==NULL||(Pointer->ScoreInfo.SID>New->ScoreInfo.SID)) { New->next=Head; Head=New; } else { //插入到链表中或尾部 while(Pointer->ScoreInfo.SID<New->ScoreInfo.SID) { Back=Pointer; Pointer=Pointer->next; if(Pointer==NULL) { //插到链表尾部 Back->next=New; goto end; } } //插到链表中间 New->next=Pointer; Back->next=New; } end: return Head;}// 依学号删除链表中的结点// 返回为 0 时,表明没有找到(包括链表为空,没找到)// 返回为 1 时,表明找到并删除了找到的结点int List::DeleteList(long sid) { Link Pointer; Link Back; //指向同一结点 Pointer=Head; Back=Head; //如果链表为空 if(Pointer==NULL) return 0; //删除链表头结点 if(Head->ScoreInfo.SID==sid) { Head=Pointer->next; delete Pointer; return 1; } //删除链表尾和中间的结点 //跳过头结点 Back=Pointer; Pointer=Pointer->next; while(Pointer->ScoreInfo.SID!=sid) { Back=Pointer; Pointer=Pointer->next; //没有找到 if(Pointer==NULL) return 0; } //删除表中的结点或表尾的结点 Back->next=Pointer->next; delete Pointer; return 1;}//查询链表,如果找到的话就返回找的结点//返回值为0时: 表示链表为空,或者没有找到该结点//返回值为1时: 表示找到要找的结点int List::InquireList(long sid,SCOREINFO & ScInfo){ Link Pointer; Link Back; //指向同一结点 Pointer=Head; Back=Head; //如果链表为空 if(Pointer==NULL) return 0; //是头结点 if(Head->ScoreInfo.SID==sid) { ScInfo=Head->ScoreInfo; return 1; } //跳过头结点 Back=Pointer; Pointer=Pointer->next; while(Pointer->ScoreInfo.SID!=sid) { Back=Pointer; Pointer=Pointer->next; //没有找到 if(Pointer==NULL) return 0; } //找到,位于链表中间或链表尾 ScInfo=Pointer->ScoreInfo; return 1;}////////////////////////////////////Link List::ModifyList(SCOREINFO & ScInfo){ Link Pointer; Link Back; Pointer=Head; while(1) { if(Pointer->next==NULL) { std::cout<<"Not Found!/n"; break; }; if(Head->ScoreInfo.SID==ScInfo.SID) { Head=Pointer->next; Pointer->ScoreInfo=ScInfo; break; }; Back=Pointer; Pointer=Pointer->next; if(Pointer->ScoreInfo.SID==ScInfo.SID) { Back->next=Pointer->next; Pointer->ScoreInfo=ScInfo; break; }; } return Head;}Link List::GetHead(void){ return Head;}//保存链表中的数据到以 FileName指定的磁盘文件Link List::SaveList(char * FileName){ Link Pointer; Pointer=Head; //定义 输出流文件 std::ofstream fout; fout.open(FileName,ios_base::out|ios_base::trunc|ios_base::binary); //文件打开失败 if(!fout.is_open()) { std::cout<<"File Can't Open!/n"; exit(0); } //写入文件 while(Pointer!=NULL) { fout.write((char *)& Pointer->ScoreInfo,sizeof SCOREINFO); Pointer=Pointer->next; } fout.close(); return Head;}//将由FileName指定的文件中的数据读到链表中Link List::LoadList(char * FileName){ Link New,Pointer; //定义输入流文件 ifstream fin; fin.open(FileName,ios_base::in|ios_base::binary); //文件打开失败 if(!fin.is_open()) { std::cout<<"File Open Erros!/n"; exit(0); } //如果链表为空的话 if(Head==NULL) { fin.close(); return Head; } //不为空则: //建立新结点 Head=new Node; if(Head==NULL) std::cout<<"Memory Allocte Failed!/n"; else { //建立头结点 fin.read((char *) &Head->ScoreInfo,sizeof SCOREINFO); Head->next=NULL; Pointer=Head; //读入到链表 while(1) { New= new Node; New->next=NULL; if(!fin.read((char *) &New->ScoreInfo,sizeof SCOREINFO)) break; Pointer->next=New; Pointer=New; } } return Head;}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Score::Score(int CID){ ////////////////////////可以重新定义要用到的科目名称///////////////////////// SUBNAME[0]="Math"; SUBNAME[1]= "Physics" ; SUBNAME[2]="English"; SUBNAME[3]="Chemistry"; SUBNAME[4]= "Biology"; SUBNAME[5]="Chinese"; //组合文件名 ClassID=CID; for(int i=0;i<SUBNUM;i++) { char CIDstr[50]; itoa(ClassID,CIDstr,10); strcpy(FILENAME[i],CIDstr); strcat(FILENAME[i],SUBNAME[i]); strcat(FILENAME[i],".dat"); } /////////////////////////////////////////////////////////////////////////////// //加载文件里的数据; /* char cho[10]; while(1) { cout<<"是不时第一次操作"<<ClassID<<"班的成绩管理:(Y/N)?/n"; cin>>cho; //如果是第一次操作该班的成绩 if(stricmp(cho,"Y")==0) { for(int i=0;i<SUBNUM;i++) { //保存空文件,加载的也时空文件 LIST[i].SaveList(FILENAME[i]); LIST[i].LoadList(FILENAME[i]); } break; } //如果不是 if(stricmp(cho,"N")==0) { for(int i=0;i<SUBNUM;i++) { List TempList; TempList.LoadList(FILENAME[i]); TempList.PrintList(); LIST[i].LoadList(FILENAME[i]); //LIST[i].PrintList(); } break; } } */ list1.LoadList("1math.dat"); list1.PrintList(); ////////////////////////////////////////////////////////////////////////////// //主菜单选项 while(1) { GetChoice(); if(Choice==6) { QuitSystem(); break; } switch(Choice) { case 1: InputScore(); break; case 2: InquireScore(); break; case 3: ModifyScore(); break; case 4: DeleteScore(); break; case 5: SaveChanges(); break; default: cout<<"/nWrong Choice! Please Input Again/n"; } } /////////////////////////////////////////////////////////////////////////////}//打印主菜单,并作出选择int Score::GetChoice(void){ cout<<"/n 成绩管理系统 "; cout<<"/n-------------------------------------------------------------------------------"; cout<<"/n 选项 | 帮助 "; cout<<"/n 1. 录入成绩(全新录入或新增一条) | Command> *时 全新输入,+ 时新增 "; cout<<"/n 2. 查询成绩(可以查看全部和一条) | Command>*时 显示所有成绩"; cout<<"/n | Command>(学号)时显示该学生的成绩项"; cout<<"/n | Command>(学号 课程名):以某科的成绩"; cout<<"/n 3. 修改成绩(修改某个学生的成绩) | Command>(学号):修改该学生所有成绩"; cout<<"/n | Command>(学号 课程名):以某科的成绩"; cout<<"/n 4. 删除成绩(删除某个学生的成绩) | Command>(学号):删除该学生所有成绩"; cout<<"/n | Command>(学号 课程名):以某科的成绩"; cout<<"/n 5. 保存所作的修改 | Choice:5 写入磁盘文件"; cout<<"/n 6. 退出系统 | Choice:6 退出该系统"; cout<<"/n----Choice:"; cin>>Choice; return Choice;}/////////////////////////////////////////////////////////////////////////void Score::InputScore(void){ cout<<" Command>"; cin>>Command; //Command> *时,输入所有科目的成绩(全新输入) if(strcmp(Command,"*")==0) { for(int i=0;i<SUBNUM;i++) { cout<<"/n---------------------------------/n"; cout<<"-----输入"<<SUBNAME[i]<<"的成绩/n"; //建立相应的链表 LIST[i].CreateList(); } } //输入某个学生的成绩,(包括他的任何一科),新增一条; else if(strcmp(Command,"+")==0) { long StuID; char StuName[20]; SCOREINFO ScoInfo; cout<<"-----输入学号:"; cin>>StuID; cout<<"-----输入姓名:"; cin>>StuName; ScoInfo.SID=StuID; strcpy(ScoInfo.Name,StuName); for(int i=0;i<SUBNUM;i++) { cout<<"/n----输入"<<SUBNAME[i]<<"的成绩项/n"; cout<<"平时成绩:"; cin>>ScoInfo.DailyScore; cout<<"期末成绩:"; cin>>ScoInfo.FinalScore; ScoInfo.TotalScore=ScoInfo.DailyScore*0.3+ScoInfo.FinalScore*0.7; //插入相应的链表 LIST[i].InsertList(ScoInfo); } }}//查询选项void Score::InquireScore(void){ int num; long StuID; char SubName[20]; cout<<" Command>"; getchar(); gets(Command); num=ScanCommand(); if(num==2) { //输入学号和科目名称,查询该生该科的成绩 int index; SCOREINFO ScoInfo; StuID=atol(SubCommand[0]); index=GetIndex(SubCommand[1]); //如果输入的字符不与科目字符相符则返回 if(index==-1) { cout<<" 科目输入有误!/n"; return ; } int exist; //判断是否存在 exist=LIST[index].InquireList(StuID,ScoInfo); if(exist==0) { cout<<"/n不存在该学生的成绩/n"; return ; } //打印所查到的数据 cout<<"/n-----"<<StuID<<"号的"<<SUBNAME[index]<<"成绩为:----/n"; cout<<"/n学号/t姓名/t平时成绩/t期末成绩/t总评成绩"; cout<<"/n------------------------------------------------------------------"; std::cout<<"/n"<<ScoInfo.SID; std::cout<<"/t"<<ScoInfo.Name; std::cout<<"/t"<<ScoInfo.DailyScore; std::cout<<"/t/t"<<ScoInfo.FinalScore; std::cout<<"/t/t"<<ScoInfo.TotalScore; cout<<"/n------------------------------------------------------------------"; } if(num==1) { if(strcmp(SubCommand[0],"*")==0) { //打印所有数据 for(int i=0;i<SUBNUM;i++) LIST[i].PrintList(); } else { //输入学号后显示所有关于该生的成绩 StuID=atol(SubCommand[0]); cout<<"/n-----"<<StuID<<"号的成绩为:-----/n"; cout<<"/n学号/t科目/t姓名/t平时成绩/t期末成绩/t总评成绩"; cout<<"/n------------------------------------------------------------------"; for(int i=0;i<SUBNUM;i++) { SCOREINFO ScoInfo; //判断是否存在 int exist; exist=LIST[i].InquireList(StuID,ScoInfo); if(exist==0) return ; //显示成绩项 std::cout<<"/n"<<ScoInfo.SID; std::cout<<"/t"<<SUBNAME[i]; std::cout<<"/t"<<ScoInfo.Name; std::cout<<"/t"<<ScoInfo.DailyScore; std::cout<<"/t/t"<<ScoInfo.FinalScore; std::cout<<"/t/t"<<ScoInfo.TotalScore; cout<<"/n------------------------------------------------------------------"; } } } }//修改选项void Score::ModifyScore(void){ int num; long StuID; char SubName[20]; cout<<" Command>"; getchar(); gets(Command); num=ScanCommand(); ////输入学号来改变该学生的所有科目的成绩 if(num==1) { StuID=atol(SubCommand[0]); for(int i=0;i<SUBNUM;i++) { SCOREINFO ScoInfo,NewScoInfo; LIST[i].InquireList(StuID,ScoInfo); //显示原来存在的成绩 并输入新的成绩 NewScoInfo.SID=StuID; strcpy(NewScoInfo.Name,ScoInfo.Name); cout<<"/n---"<<StuID<<"的原"<<SUBNAME[i]<<"成绩为:/n"; cout<<"平时成绩:"<<ScoInfo.DailyScore; cout<<"修改为:"; cin>>NewScoInfo.DailyScore; cout<<"期末成绩:"<<ScoInfo.FinalScore; cout<<"修改为:"; cin>>NewScoInfo.FinalScore; cout<<"总评成绩:"<<ScoInfo.TotalScore; cout<<"修改为:"; NewScoInfo.TotalScore=NewScoInfo.DailyScore*0.3+NewScoInfo.FinalScore*0.7; cout<<NewScoInfo.TotalScore<<endl; //确认是否保存修改 while(1) { char cho[10]; cout<<"确认(不放弃所作的修改)(Y/N)?/n"; cin>>cho; if(stricmp(cho,"Y")==0) { LIST[i].DeleteList(StuID); LIST[i].InsertList(NewScoInfo); break; } if(stricmp(cho,"N")==0) break; } } } //输入学号和科目名称来修改 if(num==2) { int index; SCOREINFO ScoInfo,NewScoInfo; StuID=atol(SubCommand[0]); index=GetIndex(SubCommand[1]); //如果输入的字符不与科目字符相符则返回 if(index==-1) { cout<<" 科目输入有误!/n"; return ; } LIST[index].InquireList(StuID,ScoInfo); //显示原来存在的成绩 并输入新的成绩 NewScoInfo.SID=StuID; strcpy(NewScoInfo.Name,ScoInfo.Name); cout<<"/n---"<<StuID<<"的原"<<SUBNAME[index]<<"成绩为:/n"; cout<<"平时成绩:"<<ScoInfo.DailyScore; cout<<"修改为:"; cin>>NewScoInfo.DailyScore; cout<<"期末成绩:"<<ScoInfo.FinalScore; cout<<"修改为:"; cin>>NewScoInfo.FinalScore; cout<<"总评成绩:"<<ScoInfo.TotalScore; cout<<"修改为:"; NewScoInfo.TotalScore=NewScoInfo.DailyScore*0.3+NewScoInfo.FinalScore*0.7; cout<<NewScoInfo.TotalScore<<endl; //确认是否保存修改 while(1) { char cho[10]; cout<<"确认(不放弃所作的修改)(Y/N)?/n"; cin>>cho; if(stricmp(cho,"Y")==0) { LIST[index].DeleteList(StuID); LIST[index].InsertList(NewScoInfo); break; } if(stricmp(cho,"N")==0) break; } }}//删除选项void Score::DeleteScore(void){ int num; long StuID; char SubName[20]; cout<<" Command>"; getchar(); gets(Command); num=ScanCommand(); ////输入学号来删除该学生的所有科目的成绩 if(num==1) { StuID=atol(SubCommand[0]); cout<<"/n-----"<<StuID<<"号的成绩为:-----/n"; cout<<"/n学号/t科目/t姓名/t平时成绩/t期末成绩/t总评成绩"; cout<<"/n------------------------------------------------------------------"; for(int i=0;i<SUBNUM;i++) { SCOREINFO ScoInfo; //判断是否存在 int exist; exist=LIST[i].InquireList(StuID,ScoInfo); if(exist==0) return ; //显示成绩项 std::cout<<"/n"<<ScoInfo.SID; std::cout<<"/t"<<SUBNAME[i]; std::cout<<"/t"<<ScoInfo.Name; std::cout<<"/t"<<ScoInfo.DailyScore; std::cout<<"/t/t"<<ScoInfo.FinalScore; std::cout<<"/t/t"<<ScoInfo.TotalScore; cout<<"/n------------------------------------------------------------------"; //确认是否删除 while(1) { char cho[10]; cout<<"确认删除(Y/N)?/n"; cin>>cho; if(stricmp(cho,"Y")==0) { LIST[i].DeleteList(StuID); break; } if(stricmp(cho,"N")==0) break; } } } //输入学号和科目名称来删除 if(num==2) { int index; SCOREINFO ScoInfo; StuID=atol(SubCommand[0]); index=GetIndex(SubCommand[1]); //如果输入的字符不与科目字符相符则返回 if(index==-1) { cout<<" 科目输入有误!/n"; return ; } LIST[index].InquireList(StuID,ScoInfo); //打印所查到的数据 cout<<"/n-----"<<StuID<<"号的"<<SUBNAME[index]<<"成绩为:----/n"; cout<<"/n学号/t姓名/t平时成绩/t期末成绩/t总评成绩"; cout<<"/n------------------------------------------------------------------"; std::cout<<"/n"<<ScoInfo.SID; std::cout<<"/t"<<ScoInfo.Name; std::cout<<"/t"<<ScoInfo.DailyScore; std::cout<<"/t/t"<<ScoInfo.FinalScore; std::cout<<"/t/t"<<ScoInfo.TotalScore; cout<<"/n------------------------------------------------------------------"; //确认是否保存修改 while(1) { char cho[10]; cout<<"确认删除(Y/N)?/n"; cin>>cho; if(stricmp(cho,"Y")==0) { LIST[index].DeleteList(StuID); break; } if(stricmp(cho,"N")==0) break; } }}//////////////////////////////////////////////void Score::SaveChanges(void){ for(int i=0;i<SUBNUM;i++) { LIST[i].SaveList(FILENAME[i]); }}///////////////////////////////////////////int Score::ScanCommand(void) //扫描字符串,将其以空格分解为子字符串{ int word,num,i,j; word=num=i=0; //计数器 while(Command[i]!='/0') { if(isspace(Command[i])) //如果字符为空 word=0; //则word=0 else { if(word==0&&isgraph(Command[i])) //当word的状态发生变化时才执行 { word=1; num++; j=0; } SubCommand[num-1][j]=Command[i]; //为子字符串赋值 SubCommand[num-1][j+1]='/0'; //j的后一个字符为/0--结束字符 j++; } i++; } return num;}/////////////////////////////////////////////////void Score::QuitSystem(void){ char cho[10]; while(1) { cout<<"是否保存所做的修改(Y/N)?/n"; cin>>cho; if(stricmp(cho,"Y")==0) { SaveChanges(); break; } if(stricmp(cho,"N")==0) break; }}//////////////////////////////////根据字符来求其下标,若返回为-1则说明没有该字符int Score::GetIndex(char * SubName){ for(int i=0;i<SUBNUM;i++) { if(stricmp(SubName,SUBNAME[i])==0) return i; } return -1;} //main.cpp#include<iostream>#include<cstring>#include "List.h"using namespace std;main(){ List list1; Link head; //list1.CreateList(); SCOREINFO ScoInfo,ScoInfo1,ScoInfo2; ScoInfo.SID=20; strcpy(ScoInfo.Name,"王大伟"); ScoInfo.DailyScore=98; ScoInfo.FinalScore=90; ScoInfo.TotalScore=ScoInfo.DailyScore*0.3+ScoInfo.FinalScore*0.7; ScoInfo1.SID=10; strcpy(ScoInfo1.Name,"David"); ScoInfo1.DailyScore=98; ScoInfo1.FinalScore=89; ScoInfo1.TotalScore=ScoInfo1.DailyScore*0.3+ScoInfo1.FinalScore*0.7; ScoInfo2.SID=21; strcpy(ScoInfo2.Name,"Jams"); ScoInfo2.DailyScore=80; ScoInfo2.FinalScore=89; ScoInfo2.TotalScore=ScoInfo2.DailyScore*0.3+ScoInfo2.FinalScore*0.7; list1.InsertList(ScoInfo); list1.InsertList(ScoInfo1); list1.InsertList(ScoInfo2); //list1.DeleteList(10); //list1.DeleteList(20); //list1.CreateList(); // int re; //re=list1.DeleteList(21); //cout<<re; /* list1.PrintList(); SCOREINFO sc; re=list1.InquireList(21,sc); if(re==1) { cout<<re; cout<<"/nsid:"<<sc.SID; cout<<"/nname:"<<sc.Name; cout<<"/npinshi:"<<sc.DailyScore; cout<<"/nfinal:"<<sc.FinalScore; cout<<"/nTotal:"<<sc.TotalScore; } else cout<<"/nLink is NULL"; //list1.PrintList(); //list1.SaveList("ha.dat"); list1.LoadList("ha.dat"); list1.InsertList(ScoInfo); list1.PrintList(); */ //Score score(1); list1.LoadList("1math.dat"); list1.PrintList(); list1.InsertList(ScoInfo); List l[2]={List(),List()}; //list1.SaveList("1math.dat"); //l[0].LoadList("1math.dat"); l[0]=list1; l[0].PrintList(); getchar(); getchar();}