资源描述
#include <iostream>
#include <fstream>
#include <string.h>
#include <conio.h>
using namespace std;
class Student
{
public:
char name[30];
char Id[30];
float Cnum; //语文得分
float Mnum; //数学课程得分
float Enum; //英语课程得分
float sum; //总分
float average;//平均分
Student * Next;
void Input()
{
cout<<"\t\t请输入学生旳姓名:"; cin>>name;
cout<<"\t\t请输入学生旳学号:"; cin>>Id;
cout<<"\t\t请输入语文旳成绩:"; cin>>Cnum;
cout<<"\t\t请输入数学课程旳成绩:"; cin>>Mnum;
cout<<"\t\t请输入英语课程旳成绩:"; cin>>Enum;
}
void ReadFile(istream & in)
void Show()
{
cout<<"姓名:"<<name<<endl<<"学号:"<<Id<<endl<<"语文:"<<Cnum<<endl
<<"数学:"<<Mnum<<endl<<"外语:"<<Enum<<endl<<"总成绩:"<<sum<<endl<<"平均分:"<<average<<endl<<endl;
}
};
class Studentmassage
{
public:
Studentmassage();
~Studentmassage();
void ShowMenu();
void Find();
void Save();
void Swap(Student *,Student *);
void Sort();
//void Unpass();
int ListCount();
//void Average();
void Display()
{
for(Student * p=Head->Next;p!=End;p=p->Next)
p->Show();
cout<<"输入任意字符!继续……";
getch();
}
void AddItem()
{
cout<<"添加成功!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
private:
Student * Head,* End;
ifstream in;
ofstream out;
Student *FindItem(char * name)
{
for(Student * p=Head;p->Next!=End;p=p->Next)
if(!strcmp(p->Next->name,name))return p;
return NULL;
}
Student *FindID(char * Id)
{
for(Student * p=Head;p->Next!=End;p=p->Next)
if(!strcmp(p->Next->Id,Id))return p;
return NULL;
}
};
Studentmassage::Studentmassage()
{
in.open("sort.txt");
if(!in)
cout<<"这是一种新系统,无学生信息。请先输入。"<<endl;
else
{
while(!in.eof())
{
if(End->name[0]=='\0')break;
}
in.close();
cout<<"\t\t读取学生信息成功!"<<endl;
}
}
Studentmassage::~Studentmassage()
{
Save();
for(Student * temp;Head->Next!=End;)
delete Head,End;
}
void Studentmassage::ShowMenu()
{
cout<<"〓〓〓〓〓〓〓〓〓〓 ☆ 学 生 成 绩 管 理 系 统 ☆ 〓〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓★★★★★ ★★★★★★★ ★★★★★〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 1.增长学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 2.显示学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 3.排序记录成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 4.查找学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 0.安全退出系统 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"\n\t\t\n\t\t请选择:";
}
void Studentmassage::Find()
{
char name[20] ,Id[10];
int x;
Student * p=NULL;
cout<<"\n\t\t*********************************\n";
cout<<"t\t※ 按学生学号查找";
cout<<"\n\t\t*********************************\n请选择:";
cin>>x;
switch(x)
{
case 1:
{
cout<<"\t\t请输入要查找旳学生旳学号:";cin>>Id;
if(p=FindID(Id))
{
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到该学好旳学生!"<<'\n'<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}break;
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Swap(Student *p1, Student *p2)
{
Student *temp=new Student;
strcpy(temp->name,p1->name);
strcpy(temp->Id,p1->Id);
strcpy(p1->name,p2->name);
strcpy(p1->Id,p2->Id);
strcpy(p2->name,temp->name);
strcpy(p2->Id,temp->Id);
}
int Studentmassage::ListCount()
{
if(! Head)
return 0;
int n=0;
for(Student * p=Head->Next;p!=End;p=p->Next)
return n;
}
void Studentmassage::Sort()
{
cout <<"Sorting..."<<endl;
int n=Studentmassage::ListCount();
if(n<2)
return;
for(p=Head->Next;p!=End;p=p->Next)
for(k=p->Next;k!=End;k=k->Next)
{
if(p->sum>k->sum)
{
Studentmassage::Swap(p,k);
}
}
cout <<"排序完毕!"<<endl;
getch();
return;
}
void Studentmassage::Save()
{
out.open("sort.txt");
for(Student *p=Head->Next;p!=End;p=p->Next)
out<<p->name<<"\t"<<p->Id<<"\t"<<p->Cnum<<"\t"
<<p->Mnum<<"\t"<<p->Enum<<"\t"<<p->sum<<'\n';
out.close();
}
int main()
{
int x,i=0;
bool quit=false;
cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§"<<endl;
for(i=0;i<3;i++)
cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl;
cout<<"\t\t◎★★★★【 欢迎进入学生成绩管理系统 】★★★★◎"<<endl;
for(i=0;i<3;i++)
cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl;
cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§\n"<<endl;;
Studentmassage Grade;
cout<<"按任意键开始……";
getch();
while(!quit)
{
system("cls");
Grade.ShowMenu();
cin>>x;
switch(x)
{
case 0:quit=true;break;
case 1:Grade.AddItem();break;
case 2:Grade.Display();break;
case 3:Grade.Sort();break;
case 4:Grade.Find();break;
}
}
return 0;
}
展开阅读全文