学生成绩(顺序表)
来源:互联网 发布:微代言 源码 编辑:程序博客网 时间: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; } } }
阅读全文
0 0
- 学生成绩(顺序表)
- 创建学生成绩顺序表---
- 数据结构|创建学生成绩的顺序表(实验2.1)
- 数据结构|创建学生成绩的顺序表(实验2.1)
- 顺序表实现学生成绩操作
- 顺序表——学生成绩管理
- 实验二 顺序表实现学生成绩
- 实验二 创建学生成绩-顺序表
- 实验二:顺序表实现N个学生成绩操作
- 用顺序表插入删除查找学生成绩
- 学生成绩名次表
- 学生成绩(链表)
- 学生成绩(指针)
- 终于完成~《数据结构》实验二:线性表的实验(实现一个N个学生成绩的顺序表)
- 成绩统计(顺序线性表)
- 有n个学生的信息(包括学号,姓名,成绩),要求按照成绩的高低顺序输出学生的信息
- 有n个学生的信息(包括学号,姓名,成绩),要求按照成绩的高低顺序输出学生的信息
- 线性表实验2:学生成绩(单链表)
- CCF-CSP 游戏 JAVA 201604-4 100分
- shell极简教程
- 继承的相关知识
- 3d编辑器的gizmo的缩放计算
- django获取字段列表(values/values_list/flat)
- 学生成绩(顺序表)
- 文件权限
- 2.1.8同步不能被继承(子类方法要加同步关键字)
- 【LintCode】判断数独合法
- 学习数据链路层和网络层
- java集合
- centos6.5安装expect包步骤
- 腾讯初试(技术面)
- 2.2.1同步方法与同步代码块