C++基础知识复习之--顺序表学生成绩管理系统
2017-03-10 22:56
591 查看
顺序表学生成绩管理系统
/*有点粗糙,用的是结构体定义的学生信息,可以实现 输入学生信息 输出学生信息; 插入学生信息; 按成绩排序,按学号排序; 按学号查询学生信息,按名字查学生信息; 删除学生信息; 修改学生信息; */ //顺序表 #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; } } }
相关文章推荐
- 学生成绩信息管理系统(c++)
- 简易版学生成绩管理系统(c++)
- c++实现简单的学生成绩管理系统
- c++链表实现学生成绩管理系统(简易版)
- 用C++写的学生成绩管理系统(比较简单的没有使用链表,只是用到了类和对象)
- 使用C++结合文件操作和链表实现学生成绩管理系统
- c++学生成绩管理系统 文件操作
- C++--学生成绩管理系统
- C++基础学生管理系统
- 学生成绩管理系统c++
- C++课程设计:学生成绩管理系统
- 安卓复习基础--学生管理系统
- c和c++的一些训练题(9)(学生成绩管理系统)
- 学生成绩管理系统顺序表实现
- C++课程设计:学生成绩管理系统
- C++学生成绩管理系统
- C++ 课程设计学生成绩管理系统源代码
- Java基础编程小练习---(数组)学生成绩管理系统
- 简易学生成绩管理系统(c++)
- 班级学生成绩管理系统C++