学生成绩(顺序表)

来源:互联网 发布:微代言 源码 编辑:程序博客网 时间:2024/05/17 03:18
#include<iostream>  #include<string>  #include<iomanip>  #include<windows.h>  using namespace std;  const int MAXSIZE = 25;  typedef struct A {  string Name;  string Num;  string sex;  float EnglishScore;  }StudentList;  //重载输入运算符以输入struct类型数据  istream & operator >>(istream & in, StudentList &A)  {  cout << "请输入姓名:";  in >> A.Name;  cout << endl;  cout << "请输入学号:";  in >> A.Num;  cout << endl;  cout << "请输入性别:";  in >> A.sex;  cout << endl;  cout << "请输入英语成绩:";  cin >> A.EnglishScore;  return in;  }  //重载输出运算符以输出struct类型数据  ostream & operator<<(ostream &out, StudentList &B)  {  out << B.Name << B.Num << B.sex << B.EnglishScore << endl;  return out;  }  //数据表的定义  typedef struct B {  StudentList elem[MAXSIZE];//内存空间大小  int Last;//表长  }SeqList;  int main()  {  int Length;  int Option = 0;  SeqList L;  L.Last = 0;  cout << "请输入线性表长度: ";  cin >> Length;  system("CLS");  //各种函数定义  void CreateList(SeqList* L, int Length);  void PrintList(SeqList* L, int Length);  void SequenceList(SeqList* L, int Length);  void DeleteList(SeqList* L, int Length);  void InsertList(SeqList*L, int Length);  void ChangeList(SeqList* L,  int Length);  void SearchList(SeqList* L, int Length);  while (1)  {  cout << endl << "-----------1. 创建顺序表." << endl;  cout << " -----------2. 输出顺序表元素." << endl;  cout << " -----------3. 顺序表元素排序. " << endl;  cout << " -----------4. 向顺序表中插入元素." << endl;  cout << " -----------5. 删除顺序表单个元素. " << endl;  cout << " ---------- 6. 修改顺序表单个元素. " << endl;  cout << " ---------- 7. 查询顺序表单个元素. " << endl;  cout << endl << "请输入你的选择: ";  cin >> Option;  switch (Option)  {  case 0: break;  case 1: CreateList(&L, Length); break;  case 2: PrintList(&L, Length); break;  case 3: SequenceList(&L, Length); break;  case 4: InsertList(&L, Length); break;  case 5: DeleteList(&L, Length); break;  case 6: ChangeList(&L, Length); break;  case 7: SearchList(&L, Length); break;  default: cout << "输入错误!"; break;  }  cout << endl;  }  return 0;  }  //创建顺序表  void CreateList(SeqList* L, int Length)  {  int i;  cout << "请输入顺序表元素:";  for (i = 1; i < Length + 1; i++)  {  cout << "请输入第" << i << "个学生的信息:";  cin >> L->elem[i - 1];  L->Last = Length;  if (Length >= MAXSIZE)  {  cout << endl << "表满!" << endl;  }  }  for (i = 0; i < Length; i++)  {  cout << L->elem[i] << " ";  }  }  //输出表  void PrintList(SeqList* L, int Length)  {  int i;  cout << "姓名 " << "---------" << "学号 " << "---------" << "性别 " << "---------" << "英语成绩 " << endl;  for (i = 0; i < L->Last; i++)  {  cout << L->elem[i].Name << "--------- " << L->elem[i].Num << "--------" << L->elem[i].sex << "-------- " << L->elem[i].EnglishScore << endl;  }  cout << endl;  }  //对数据按学号元素排序  void SequenceList(SeqList* L, int Length)  {  StudentList Temp;  for (int i = 0; i <Length - 1; i++)  {  for (int j = 0; j <Length - 1 - i; j++)  {  if (L->elem[j].Num > L->elem[j + 1].Num)  {  Temp = L->elem[j];  (L->elem[j]) = (L->elem[j + 1]);  L->elem[j + 1] = Temp;  }  }  }  cout << endl;  }  //删除表的某个元素  void DeleteList(SeqList* L, int Length)  {  int DeData = 0;  cout << "要删除第几个元素:";  cin >> DeData;  for (int i = DeData; i < L->Last; i++)  {  L->elem[i - 1] = L->elem[i];  }  L->Last--;  for (int k = 0; k < L->Last; k++)  {  cout << L->elem[k] << " ";  }  cout << endl;  }  //往表中插入元素  void InsertList(SeqList* L, int Length)  {  StudentList InsertData;  int i = 0;  int InDataLocation = 0;  cout << "请输入要插入的元素: ";  cin >> InsertData;  cout << endl;  cout << "请输入要插入的位置: ";  cin >> InDataLocation;  cout << endl;  if (InDataLocation > L->Last + 1)  {  cout << "插入位置超过表的最大长度,请重新输入!" << endl << endl;  InsertList(L, Length);  }  else  {  for (int i = L->Last; i >= InDataLocation - 1; i--)  
{  L->elem[i + 1] = L->elem[i];  }  L->elem[InDataLocation - 1] = InsertData;  L->Last++;  cout << "插入后的表为:";  PrintList(L, Length);  }  cout << endl;  }  //修改顺序表某个元素  void ChangeList(SeqList* L, int Length)  {  string ChangeNum;  cout << "请输入要修改成绩的学生的学号: ";  cin >> ChangeNum;  for (int i = 0; i < L->Last; i++)  {  if (L->elem[i].Num == ChangeNum)  {  cout << "你将把英语成绩改为: ";  cin >> L->elem[i].EnglishScore;  cout << endl << "修改成功!" << endl;  }  }  }  //查询学生信息  void SearchList(SeqList* L, int Length)  {  string SearchName;  cout << "请输入要查询学生的姓名: ";  cin >> SearchName;  for (int i = 0; i < L->Last; i++)  {  if (L->elem[i].Name == SearchName)  {  cout << "姓名 " << "---------" << "学号 " << "---------" << "性别 " << "---------" << "英语成绩 " << endl;  cout << L->elem[i].Name << "--------- " << L->elem[i].Num << "--------" << L->elem[i].sex << "-------- " << L->elem[i].EnglishScore << endl;  }  }  } 
 







原创粉丝点击