去年未完成的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;

//有待测试版

posted @ 2023-04-24 21:10  mo寒流xing  阅读(65)  评论(0)    收藏  举报