C++基础知识复习之--顺序表学生成绩管理系统

来源:互联网 发布:投资域名后悔死了 编辑:程序博客网 时间:2024/06/06 04:47

顺序表学生成绩管理系统


/*有点粗糙,用的是结构体定义的学生信息,可以实现输入学生信息输出学生信息;插入学生信息;按成绩排序,按学号排序;按学号查询学生信息,按名字查学生信息;删除学生信息;修改学生信息;*///顺序表#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;}}}


0 0
原创粉丝点击