课程设计

学生成绩管理系统功能的基本要求:

1具备对成绩的管理功能(添加、删除、排序)。

2具备对成绩的统计功能(及格率、优秀率等)。

3具备对成具备按学号、姓名、或课程名查询成绩的功能。

# include 
# include 
# include 
#include
#include //用getch();
using namespace std;
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class Student
{
public:
 char name[20];
 char Id[20];
 char grade[20];
 int Cnum;       //C课程得分
 int Mnum;       //数学课程得分
 int Enum;       //英语课程得分
 float sum;        //总分
 float average;
 Student * Next;
 void Input()
 {
  cout<<"\t\t请输入学生的姓名:";  cin>>name;
  cout<<"\t\t请输入学生的学号:";  cin>>Id;
  cout<<"\t\t请输入学生的班级:";  cin>>grade;
  cout<<"\t\t请输入C课程的成绩:";  cin>>Cnum;
  cout<<"\t\t请输入数学课程的成绩:";  cin>>Mnum;
  cout<<"\t\t请输入英语课程的成绩:";  cin>>Enum;
  sum=Cnum+Mnum+Enum;
  average=sum/3.0;
  }
 void ReadFile(istream & in)
 {
  in>>name>>grade>>Id>>Cnum>>Mnum>>Enum>>sum>>average;
 }
 void Show()
 {
  cout<<"姓名:"<Next;p!=End;p=p->Next)
   p->Show();
  cout<<"输入任意字符!继续……";
  getch();
 }
 void AddItem()
 {
  End->Input();
  End->Next=new Student;
  End=End->Next;
  cout<<"添加成功!"<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()
{
 Head=new Student;
 Head->Next=new Student;
 End=Head->Next;
 in.open("sort.txt");
 if(!in)
  cout<<"这是一个新系统,无学生信息。请先输入。"<ReadFile(in);
   if(End->name[0]=='\0')break;
   End->Next=new Student;
   End=End->Next;
  }
  in.close();
  cout<<"\t\t读取学生信息成功!"<>x;
 switch(x)
 {
 case 1:
{
cout<<"\t\t请输入要查找的学生的姓名:";
cin>>name;  
if(p=FindItem(name))  
{  
 p->Next->Show();  
 cout<<"输入任意字符!继续……";  
 getch();  
}
  else
  {
   cout<<"\t\t没有找到该姓名的学生!"<<'\n'<>Id;
   if(p=FindID(Id))
   {
    p->Next->Show();
    cout<<"输入任意字符!继续……";
    getch();
   }
   else
   {
    cout<<"\t\t没有找到该学号的学生!"<<'\n'<Next;
 cout<<"\t\t请选择你要查找的课程名称:";
 cout<<"\n\t\t*********************************\n";
 cout<<"\t\t※ 1.C++\n\t\t※ 2.数学\n\t\t※ 3.英语";
 cout<<"\n\t\t*********************************\n请选择:";
 cin>>z;
 switch(z)
 {
case 1:
 cout<<"C++成绩为:"<Cnum<Next;
 }

 cout<<"输入任意字符!继续……";
    getch();
    break;
case 2:
 cout<<"数学成绩为:"<Mnum<Next;
 }

 cout<<"输入任意字符!继续……";
    getch();
    break;
case 3:
 cout<<"英语成绩为:"<Enum<Next;
 }

 cout<<"输入任意字符!继续……";
    getch();
    break;
	}
	 }
 }
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌修改信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::ModifyItem()
{
char name[20];
 char Id[20];
int y;
Student *p=NULL;
  cout<<"\n\t\t*********************************\n";
 cout<<"\t\t※ 1.按学生的姓名修改\n\t\t※ 2.按学生学号修改";
 cout<<"\n\t\t*********************************\n请选择:";		
  cin>>y;		 
  switch(y)	
  {
case 1:	 
	{       
		cout<<"  请输入您要修改的学生的姓名:";     
		cin>>name;
if(p=FindItem(name))
{
cout <<"\t<<已找到学生的信息,请输入新的信息!"<Next->Input();
  cout<<"修改成功!"<>Id;
		if(p=FindID(Id))
{
cout <<"\t<<已找到学生的信息,请输入新的信息!"<Next->Input();
  cout<<"修改成功!"<>a;
  switch(a)
  {
  case 1:
 cout<<"\t\t请输入要删除的学生的姓名:"<>name;
 if(p=FindItem(name))
 {
  temp=p->Next;
  p->Next=p->Next->Next; 
  delete temp;
  cout<<"\t\t删除成功!"<>Id;
 if(p=FindID(Id))
 {
  temp=p->Next;
  p->Next=p->Next->Next; 
  delete temp;
  cout<<"\t\t删除成功!"<name,p1->name);
 strcpy(temp->Id,p1->Id);
 temp->Cnum=p1->Cnum;
 temp->Mnum=p1->Mnum;
 temp->Enum=p1->Enum;
 temp->sum=p1->sum;
 strcpy(p1->name,p2->name);
 strcpy(p1->Id,p2->Id);
 p1->Cnum=p2->Cnum;
 p1->Mnum=p2->Mnum;
 p1->Enum=p2->Enum;
 p1->sum=p2->sum;
 strcpy(p2->name,temp->name);
 strcpy(p2->Id,temp->Id);
 p2->Cnum=temp->Cnum;
 p2->Mnum=temp->Mnum;
 p2->Enum=temp->Enum;
 p2->sum=temp->sum;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int Studentmassage::ListCount()//统计当前链表的记录总数,返回一个整数
{
if(! Head)
return 0;
int n=0;
for(Student * p=Head->Next;p!=End;p=p->Next)
{
n++;
}
return n;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌统计成绩﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Sort()//对当前链表进行排序
{int Ca=0;int Ma=0; int Ea=0;double m1=0; double j1;
double m2=0; double j2;double m3=0; double j3;
double e1=0; double h1;
double e2=0; double h2;double e3=0; double h3;
 cout <<"Sorting..."<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 <<"排序完成!"<Next;
for(p=Head->Next;p!=End;p=p->Next)
{
Ca=Ca+p->Cnum;
Ma=Ma+p->Mnum;
Ea=Ea+p->Enum;
}
cout<<" C++平均分 "<<" 数学平均分 "<<" 英语平均分"<Next;p!=End;p=p->Next)
{if(p->Cnum>=60)
m1++;
if(p->Mnum>=60)
m2++;
if(p->Enum>=60)
m3++;
}
j1=m1/n;
j2=m2/n;
j3=m3/n;
cout<<" C++及格率为: "<Next;p!=End;p=p->Next)
{if(p->Cnum>=90)
e1++;
if(p->Mnum>=90)
e2++;
if(p->Enum>=90)
e3++;
}
h1=e1/n;
h2=e2/n;
h3=e3/n;
cout<<" C++优秀率为: "<>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;
  case 5:Grade.RemoveItem();break;
  case 6:Grade.ModifyItem();break;
  }
 }
 return 0;
}

你可能感兴趣的:(课程设计)