您的位置:首页 > 编程语言 > C语言/C++

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;
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息