您的位置:首页 > 编程语言 > C语言/C++

成绩管理系统的C++实现

2007-03-29 14:18 399 查看
//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 6
class 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();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: