去年未完成的c(测试版)
#include<bits/stdc++.h>
using namespace std;
#define maxline 100
typedef struct {
	int c;
	int cpp;
	int math;
}Grade;
typedef struct {
	int id;
	string name;
	Grade  grade;
}Data;
typedef struct {
	Data listdata[maxline];
	int listlen;
}SLType;
int SLbegin(SLType *SL)
{
	SL->listlen=0;
	cout<<"初始化成功!"<<endl<<"请输入数据(学号、姓名、c、c++、math。)"<<endl;	 
}//初始化空表
void SLlength(SLType *SL)
{
	cout<<"目前节点数量:"<<SL->listlen<<"剩余空间:"<<maxline-SL->listlen;
} //当前已有的数据量;
int SLAdd(SLType *SL,Data data)
{if((data.id)!=0)
	{
	if(SL->listlen<maxline)
	 {
		SL->listdata[SL->listlen]=data;
		SL->listlen++;
		cout<<"追加成功!"<<endl; 
		return 1;
	 }
	else{
		cout<<"成绩表已满,无法插入!"<<endl;
		return 0; 
	 }
    }
	else
	return 0;    
} //在表的末尾添加新的数据; 
void SLout(SLType *SL)
{   cout<<"已存储数据:"<<SL->listlen<<endl; 
	int i=0;
	for(i;i<(SL->listlen);i++)
	{
		cout<<"NO."<<i+1<<":"<<SL->listdata[i].id<<" "<<SL->listdata[i].name<<" "<<SL->listdata[i].grade.c<<" "<<SL->listdata[i].grade.cpp<<" "<<
		SL->listdata[i].grade.math<<endl;
	}
}//输出已有的数据;
void SLDelete(SLType *SL,int n)
{
	int i=n;
	for(i;i<SL->listlen;i++)
	{
		SL->listdata[i]=SL->listdata[i+1];
	}
	SL->listlen--;
}//对指定位置数据进行删除;
void SLinsert(SLType *SL,int n,Data data)
{   SL->listlen++; 
	int i=SL->listlen;
	for(i;i>n-1;i--)
	{
		SL->listdata[i]=SL->listdata[i-1];
	}
	SL->listdata[n]=data;
}//对指定位置进行插入;
int SLreplace(SLType *SL,int n,Data data)
{
	if(n<=0||n>SL->listlen)
	{cout<<"替换位置有误!"<<endl;
	return 0;
    }
    else
    SL->listdata[n]=data;
    return 1;
}//替换指定位置数据;
void SLFindByname(SLType *SL,string Name)
{
	int i=0;
	for(i;i<=SL->listlen;i++)
	{
		if(SL->listdata[i].name==Name)
		cout<<Name<<"的信息如下:"<<endl<<"位次:"<<i+1<<" 学号:"<<SL->listdata[i].id<<" 成绩: C:"<<SL->listdata[i].grade.c<< "CPP: "<<SL->listdata[i].grade.cpp
		<<"MATH: "<<SL->listdata[i].grade.math<<endl; 
	}
 } 
int main()
{   SLType SL;
    Data data;
    Grade grade;
    SLbegin(&SL);
    while(1)
    { cin>>data.id>>data.name>>data.grade.c>>data.grade.cpp>>data.grade.math;
      if(data.id) 
	  SLAdd(&SL,data);
	  else
	  break;	
	}
	SLout(&SL);
	while(1)
	{   int flag; 
		cout<<"请选择进行的操作:追加数据(1),插入数据(2),删除数据(3),输出数据(4),查找指定数据(5),替换数据(6),剩余空间(7)结束操作(8)";
        cin>>flag;
		if(flag==1)	
	     { Data data; 
	       cout<<"请输入数据(学号、姓名、c、c++、math。):"<<endl;
	       cin>>data.id>>data.name>>data.grade.c>>data.grade.cpp>>data.grade.math;
		   	SLAdd(&SL,data);
		 }
		 if(flag==2)
		 {  int n;
		 	cout<<"请输入插入的位次:"<<endl;
			cin>>n;
			cout<<"请输入插入的数据:"<<endl;
			cin>>data.id>>data.name>>data.grade.c>>data.grade.cpp>>data.grade.math;
			SLinsert(&SL,n,data);
			cout<<"插入成功!"<<endl; 
		 }
		 if(flag==3)
		 {  int n;
		 	cout<<"请输入希望删除的位次:"<<endl;
			cin>>n;
			SLDelete(&SL,n);
			cout<<"删除成功!"<<endl; 
		 }
		if(flag==4)
		{
			SLout(&SL);
		}
		if(flag==5)
		{
		  cout<<"请选择查找方式:1按位次 ,2按姓名."<<endl;
		  int i;
		  cin>>i;
		  if(i==1)
		  { int w; 
		    cout<<"输入位次:"<<endl;
		    cin>>w;
		    if(w<0||w>SL.listlen)
		    cout<<"位次无效!"<<endl; 
		  	else
			  cout<<"NO."<<w<<SL.listdata[w-1].id<<" "<<SL.listdata[w-1].name<<" "<<SL.listdata[w-1].grade.c<<" "<<SL.listdata[w-1].grade.cpp<<" "
		      <<SL.listdata[w-1].grade.math<<endl;
		  }
		  if(i==2)
		  {string name; 
		  cout<<"输入查找的姓名:" <<endl;
		  cin>>name;	
		  SLFindByname(&SL,name);
	      }
		} 
		if(flag==6)
		{  int i;  
		   cout<<"请输入替换的位置:"<<endl;
		   cin>>i;
		   cout<<"请输入替换的数据内容:"<<endl;
		   Data data;
           cin>>data.id>>data.name>>data.grade.c>>data.grade.cpp>>data.grade.math;
		   SLreplace(&SL,i,data);
		   cout<<"替换成功!"<<endl;	
		}
		if(flag==7)
		{
			SLlength(&SL);
		}
		if(flag==8)
		{
		  cout<<"感谢使用!"<<endl;
		  return 0; 	
		} 
	}
	return 0;
//有待测试版
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号