1.建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。
# include <iostream>
# include <fstream>
# include <string.h>
#define MAX 100
int i,n;
using namespace std;
struct Student{ //声明一个结构体类型Student
char id[20];
char name[20];
int Lnum; //离散课程得分
int Gnum; //管理学课程得分
int Enum; //英语课程得分
float sum; //总分
void Menu();
void Find();
void RemoveItem();
void Display();
void show();
void AddItem();
void Input();
}Stu[MAX+1];
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Menu(){
cout<<" "<<endl;
cout<<"\t 学 生 成 绩 管 理 系 统\t\t"<<endl;
cout<<" "<<endl;
cout<<"\t\t1.录入\t\t"<<endl;
cout<<"\t\t2.显示\t\t"<<endl;
cout<<"\t\t3.查找\t\t"<<endl;
cout<<"\t\t4.插入\t\t"<<endl;
cout<<"\t\t5.删除\t\t"<<endl;
cout<<"\t\t0.退出\t\t "<<endl;
cout<<"\n\t\t\n\t\t请选择:"<<endl;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌录入信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Input()
{
cout<<"\t\t你要录入几位学生:";
cin>>n;
for(i=1;i<=n;i++)
{
cout<<"第"<<i<<"位";
cout<<"\t\t请输入学生姓名:"<<endl; cin>> Stu[i].name;
cout<<"\t\t请输入学生学号:"<<endl; cin>>Stu[i].id;
cout<<"\t\t请输入离散成绩:"<<endl; cin>>Stu[i].Lnum;
cout<<"\t\t请输入管理成绩:"<<endl; cin>>Stu[i].Gnum;
cout<<"\t\t请输入英语成绩:"<<endl; cin>>Stu[i].Enum;
Stu[i].sum=Stu[i].Lnum+Stu[i].Gnum+Stu[i].Enum;
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌显示所有信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Display()
{
cout<<"序号"<<"\t"<<"姓名"<<"\t\t"<<"学号"<<"\t"<<"离散"<<"\t"<<"管理"<<"\t"<<"英语"<<"\t"<<"总分"<<endl;
for(i=1;i<=n;i++)
{
cout<<i<<"\t"<<Stu[i].name<<"\t"<<Stu[i].id<<"\t"<<Stu[i].Lnum<<"\t"<<Stu[i].Gnum<<"\t"<<Stu[i].Enum<<"\t"<<Stu[i].sum<<"\t"<<"\n";
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌选择信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Student::show()
{
cout<<"序号"<<"\t"<<"姓名"<<"\t\t"<<"学号"<<"\t"<<"离散"<<"\t"<<"管理"<<"\t"<<"英语"<<"\t"<<"总分"<<endl;
cout<<i<<"\t"<<Stu[i].name<<"\t"<<Stu[i].id<<"\t"<<Stu[i].Lnum<<"\t"<<Stu[i].Gnum<<"\t"<<Stu[i].Enum<<"\t"<<Stu[i].sum<<"\t"<<"\n";
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Find()
{
char na[20] ,I[10];
int x,a,z;
cout<<"\n\t\t*********************************\n";
cout<<"\t \t 1.按姓名 2.按学号3.按序号";
cout<<"\n\t\t*********************************\n请选择:";
cin>>x;
switch(x)
{
case 1:{
cout<<"\t\t请输入要查找的姓名:";cin>>na;
bool flag=false;
for(i=1;i<=n;i++)
{
if(strcmp(Stu[i].name, na) == 0)
{
Stu[i].show();
flag=true;
}
}
if(!flag){
cout<<"无此人";
}
}break;
case 2:{
cout<<"\t\t请输入要查找的学号:";cin>>I;
bool flag=false;
for(i=1;i<=n;i++)
{
if(strcmp(Stu[i].id, I) == 0)
{
Stu[i].show();
flag=true;}
}
if(!flag){
cout<<"无此人";}
}break;
case 3:{
cout<<"\t\t请输入要查找的序号:";cin>>i;
if(i<1||i>n) throw "position error";
else Stu[i].show();
}break;
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌插入信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void AddItem()
{
int i,j;
n++;
if(n>MAX) throw "overflow";
cout<<"which position do you want to insert?";
cin>>i;
if(i<1||i>n) throw "position";
for(j=n;j>=i;j--)
{
Stu[j]=Stu[j-1];
}
cout<<"第"<<i<<"位";
cout<<"\t\t请输入学生姓名:"<<endl; cin>> Stu[i].name;
cout<<"\t\t请输入学生学号:"<<endl; cin>>Stu[i].id;
cout<<"\t\t请输入离散成绩:"<<endl; cin>>Stu[i].Lnum;
cout<<"\t\t请输入管理成绩:"<<endl; cin>>Stu[i].Gnum;
cout<<"\t\t请输入英语成绩:"<<endl; cin>>Stu[i].Enum;
Stu[i].sum=Stu[i].Lnum+Stu[i].Gnum+Stu[i].Enum;
cout<<"The new list is:";
Display();
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌删除信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void RemoveItem()
{
int j;
if(n==0) throw "underflow";
cout<<"which sequence number do you want to delete?";
cin>>i;
if(i<1||i>n) throw "position";
for(j=i+1;j<=n;j++)
{
Stu[j-1]=Stu[j];
}
cout<<"The new list is: ";
n--;
Display();
}
int main()
{
int x,i=0;
bool quit=false;
while(!quit)
{
system("cls");
Menu();
cin>>x;
switch(x)
{
case 0:quit=true;break;
case 1:Input();system("pause");break;
case 2:Display();system("pause");break;
case 3:Find();system("pause");break;
case 4:AddItem();system("pause");break;
case 5:RemoveItem();system("pause");break;
}
}
return 0;
}
实验结果如图所示
菜单界面
自定义要录入多少个学生
录完之后的显示界面
查询功能。包括按姓名,按学号和按序号
若查无此人则返回“无此人”
插入功能。如现在我在第二位插入“陈某某”,出现的新表如图
删除功能。如将陈某某删除后,新的表如图所示。