顺序表实现学生成绩管理系统
发布日期:2021-09-01 18:44:16 浏览次数:2 分类:技术文章

本文共 7236 字,大约阅读时间需要 24 分钟。

  hot3.png

/*  Name: 顺序表实现学生成绩管理系统   Description: 完成对学生成绩的建立,查找,插入,修改,删除等功能 *///======================================顺序表-学生成绩管理系统=================================== #include
    
     #include
     
      using namespace std;//======================================Student类的成员变量和成员函数=============================class Student{
      
  public:
 void Creat(Student stu[]);
 void Insert(Student stu[]);
 void Delete(Student stu[]);
 void Lookup(Student stu[]);
 void Update(Student stu[]);
 void Stat(Student stu[]);
 int Length(Student stu[]);
 void Print(Student stu[]);
   Student();
   private:
  string name;//姓名
  long num;//学号
  float score;//成绩
  };//=====================================Student类的构造函数.舒适化元素数据===========================Student::Student(){
  name = '?';
  num = 0;
  score = 0;}//=====================================创建学生成绩信息的线性表(数组)================================void Student::Creat(Student stu[]){
 cout << "请输入学生人数:";
 int n;
 cin >> n;
 cout << "姓名" << '\t' << "学号" << '\t' << "成绩" << endl;
 for(int i = 1;i <= n;i++)
 {
 string newname;
 long newnum;
 float newscore;
  cin >> newname;
 stu[i].name = newname;
 cin >> newnum;
 stu[i].num = newnum;
 cin >> newscore;
 stu[i].score = newscore;
 }} //======================================输出线性表中所有的学生信息====================================void Student::Print(Student stu[]){
 cout<< "姓名" << '\t' << "学号" << '\t' << "成绩" << endl;
 int i = 1;
 while(stu[i].num)
 {
  cout << stu[i].name << '\t' < << '\t' < << endl;
  i++;
 }
 cout << '\n';}//======================================在线性表的某个位置上插入学生信息===============================void Student::Insert(Student stu[]){
 if(Student::Length(stu) == 100)
 {
 cout << "存储空间已满,不能进行插入操作!" << '\n';
 }
 else
 {
 cout << "请输入要插入的位置:";
 int m;
 cin >> m;
 int n = Student::Length(stu);
 if(m > n + 1)
 {
  cout << "插入位置不正确,请重新输入!" << '\n';
  Student::Insert(stu);
 }
 else
 {
 for(int i = n;i >= m;i --)
 {
 stu[i + 1].name = stu[i].name;
 stu[i + 1].num = stu[i].num;
 stu[i + 1].score = stu[i].score;
 }
 cout << "请依次输入姓名,学号,成绩" << '\n';
  string newname;
 long newnum;
 float newscore;
  cin >> newname;
 stu[m].name = newname;
 cin >> newnum;
 stu[m].num = newnum;
 cin >> newscore;
 stu[m].score = newscore;
 }
 }}//======================================根据学号删除线性表中对应的学生信息=============================== void Student::Delete(Student stu[]){
 cout << "请输入你要删除的学号:";
 long num;
 cin >> num;
 int i = 1;
 if(!stu[i].num)
 {
cout << "你要删除的学号不存在,请重新输入!"<< '\n';
Student::Delete(stu);//重新进行删除操作
  }
 while(stu[i].num)
 {
  if(stu[i].num == num)
  {
int n = Student::Length(stu);
for(int j = i;j < n;j++)//数组中数据依次前移
 {
stu[j].name = stu[j + 1].name;
stu[j].num = stu[i + 1].num;
stu[i].score = stu[i + 1].score;
}
stu[n].name = '?';
stu[n].num = 0;
stu[n].score = 0;
break;
  }
  i++;
 }}//======================================根据学号查询线性表中某个学生成绩信息=============================void Student::Lookup(Student stu[]){
 cout << "请输入你要查询的学号:";
 long num;
 cin >> num;
 int i = 1;
 while(stu[i].num)
 {
  if(stu[i].num == num)
  {
cout << "姓名" << '\t' << "学号" << '\t' << "成绩" << '\n';
cout << stu[i].name << '\t' < << '\t' < <<'\n';
break;
  }
  i++;
 }
 if(!stu[i].num)
 {
cout << "你要查询的学号不存在,请重新输入!" << '\n';
Student::Lookup(stu);
 }
 cout << '\n';}//======================================修改线性表中某个位置的学生信息====================================void Student::Update(Student stu[]){
 cout << "请输入你要修改的位置:";
 int m;
 cin >> m;
 if(m > Student::Length(stu))
 {
  cout << "你要修改的位置不存在,请重新输入!" << '\n';
  Student::Update(stu);
 }
 else
 {
 cout << "请依次输入更改后的姓名,学号,成绩" << '\n';
 string newname;
 long newnum;
 float newscore;
 cin >> newname;
 stu[m].name = newname;
 cin >> newnum;
 stu[m].num = newnum;
 cin >> newscore;
 stu[m].score = newscore;
 }}//=======================================查询线性表中有效数据的长度========================================int Student::Length(Student stu[]){
int i = 1;
while(stu[i].num)
{
 i++;
}
return (i - 1);}//=======================================统计各成绩段的学生信息=============================================void Student::Stat(Student stu[]){
 cout << "不及格的学生是:" << '\n';
 cout << "姓名" << '\t' << "学号" << '\t' << "成绩" <<'\n';
 int i = 1;
 while(stu[i].num)
 {
  if(stu[i].score < 60)
  {
  cout << stu[i].name << '\t' < << '\t' << stu[i].score << '\n';
  }
  i++;
 }
 cout << '\n';
  cout << "成绩为\"中\"的学生是:" << '\n';
 cout << "姓名" << '\t' << "学号" << '\t' << "成绩" <<'\n';
 i = 1;
 while(stu[i].num)
 {
 if(stu[i].score >= 60 && stu[i].score < 75)
  {
  cout << stu[i].name << '\t' < << '\t' << stu[i].score << '\n';
  }
  i++;
 }
 cout << '\n';
 cout << "成绩为\"良\"的学生是:" << '\n';
 cout << "姓名" << '\t' << "学号" << '\t' << "成绩" <<'\n';
 i = 1;
 while(stu[i].num)
 {
 if(stu[i].score >= 75 && stu[i].score < 90)
  {
  cout << stu[i].name << '\t' < << '\t' << stu[i].score << '\n';
  }
  i++;
 }
 cout << '\n';
 cout << "成绩为\"优\"的学生是:" << '\n';
 cout << "姓名" << '\t' << "学号" << '\t' << "成绩" <<'\n';
 i = 1;
 while(stu[i].num)
 {
  if(stu[i].score >= 90)
  {
  cout << stu[i].name << '\t' < << '\t' << stu[i].score << '\n';
  }
  i++;
 }
 cout << '\n';}//====================================================界面====================================================== void Menu(){
 cout << "=============================请选择相应的功能============================" <
 cout << '\n';
 cout << "-----------------------------1.插入--------------------------------------" <
  cout << "-----------------------------2.删除--------------------------------------" <
  cout << "-----------------------------3.查找--------------------------------------" <
  cout << "-----------------------------4.修改--------------------------------------" <
  cout << "-----------------------------5.统计--------------------------------------" <
  cout << "-----------------------------0.取消操作----------------------------------" <
  cout << '\n';
 cout << "=========================================================================" <  cout << "首先建立学生管理系统!" <
  Student stu[101];
 stu[0].Creat(stu);
 stu[0].Print(stu);
  int j = 100;
 Menu();
 while(j)
 {
 cout << "请选择您要进行的操作:" <
 cin >> j;
 switch(j)
 {
  case 1:
   {
stu[0].Insert(stu);
stu[0].Print(stu);
break;
   }
  case 2:
   {
stu[0].Delete(stu);
stu[0].Print(stu);
break;
   }
  case 3:
   {
stu[0].Lookup(stu);
break;
   }
  case 4:
   {
stu[0].Update(stu);
stu[0].Print(stu);
break;
   }
  case 5:
   {
stu[0].Stat(stu);
break;
   }
  default:
  break;
 }
 }
 cout << "线性表中共有:" << stu[0].Length(stu) << " 个学生";
 system("pause");
 return 0;}


转载于:https://my.oschina.net/clear/blog/53820

转载地址:https://blog.csdn.net/weixin_34124651/article/details/91650188 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:@media print打印把页眉和页脚全设置为空
下一篇:ZooKeeper典型应用场景一览

发表评论

最新留言

很好
[***.36.148.65]2022年07月31日 12时41分06秒