顺序表实现学生成绩管理系统
发布日期:2021-09-01 18:44:16 浏览次数:12 分类:技术文章

本文共 7091 字,大约阅读时间需要 23 分钟。

  hot3.png

/*  Name: 顺序表实现学生成绩管理系统   Description: 完成对学生成绩的建立,查找,插入,修改,删除等功能 *///======================================顺序表-学生成绩管理系统=================================== #include
#include
using namespace std;//======================================Student类的成员变量和成员函数=============================class Student{ public: void Creat(Student stu[]); void Insert(Student stu[]); void Delete(Student stu[]); void Lookup(Student stu[]); void Update(Student stu[]); void Stat(Student stu[]); int Length(Student stu[]); void Print(Student stu[]); Student(); private: string name;//姓名 long num;//学号 float score;//成绩 };//=====================================Student类的构造函数.舒适化元素数据===========================Student::Student(){ name = '?'; num = 0; score = 0;}//=====================================创建学生成绩信息的线性表(数组)================================void Student::Creat(Student stu[]){ cout << "请输入学生人数:"; int n; cin >> n; cout << "姓名" << '\t' << "学号" << '\t' << "成绩" << endl; for(int i = 1;i <= n;i++) { string newname; long newnum; float newscore; cin >> newname; stu[i].name = newname; cin >> newnum; stu[i].num = newnum; cin >> newscore; stu[i].score = newscore; }} //======================================输出线性表中所有的学生信息====================================void Student::Print(Student stu[]){ cout<< "姓名" << '\t' << "学号" << '\t' << "成绩" << endl; int i = 1; while(stu[i].num) { cout << stu[i].name << '\t' <
<< '\t' <
<< endl; i++; } cout << '\n';}//======================================在线性表的某个位置上插入学生信息===============================void Student::Insert(Student stu[]){ if(Student::Length(stu) == 100) { cout << "存储空间已满,不能进行插入操作!" << '\n'; } else { cout << "请输入要插入的位置:"; int m; cin >> m; int n = Student::Length(stu); if(m > n + 1) { cout << "插入位置不正确,请重新输入!" << '\n'; Student::Insert(stu); } else { for(int i = n;i >= m;i --) { stu[i + 1].name = stu[i].name; stu[i + 1].num = stu[i].num; stu[i + 1].score = stu[i].score; } cout << "请依次输入姓名,学号,成绩" << '\n'; string newname; long newnum; float newscore; cin >> newname; stu[m].name = newname; cin >> newnum; stu[m].num = newnum; cin >> newscore; stu[m].score = newscore; } }}//======================================根据学号删除线性表中对应的学生信息=============================== void Student::Delete(Student stu[]){ cout << "请输入你要删除的学号:"; long num; cin >> num; int i = 1; if(!stu[i].num) { cout << "你要删除的学号不存在,请重新输入!"<< '\n'; Student::Delete(stu);//重新进行删除操作 } while(stu[i].num) { if(stu[i].num == num) { int n = Student::Length(stu); for(int j = i;j < n;j++)//数组中数据依次前移 { stu[j].name = stu[j + 1].name; stu[j].num = stu[i + 1].num; stu[i].score = stu[i + 1].score; } stu[n].name = '?'; stu[n].num = 0; stu[n].score = 0; break; } i++; }}//======================================根据学号查询线性表中某个学生成绩信息=============================void Student::Lookup(Student stu[]){ cout << "请输入你要查询的学号:"; long num; cin >> num; int i = 1; while(stu[i].num) { if(stu[i].num == num) { cout << "姓名" << '\t' << "学号" << '\t' << "成绩" << '\n'; cout << stu[i].name << '\t' <
<< '\t' <
<<'\n'; break; } i++; } if(!stu[i].num) { cout << "你要查询的学号不存在,请重新输入!" << '\n'; Student::Lookup(stu); } cout << '\n';}//======================================修改线性表中某个位置的学生信息====================================void Student::Update(Student stu[]){ cout << "请输入你要修改的位置:"; int m; cin >> m; if(m > Student::Length(stu)) { cout << "你要修改的位置不存在,请重新输入!" << '\n'; Student::Update(stu); } else { cout << "请依次输入更改后的姓名,学号,成绩" << '\n'; string newname; long newnum; float newscore; cin >> newname; stu[m].name = newname; cin >> newnum; stu[m].num = newnum; cin >> newscore; stu[m].score = newscore; }}//=======================================查询线性表中有效数据的长度========================================int Student::Length(Student stu[]){ int i = 1; while(stu[i].num) { i++; } return (i - 1);}//=======================================统计各成绩段的学生信息=============================================void Student::Stat(Student stu[]){ cout << "不及格的学生是:" << '\n'; cout << "姓名" << '\t' << "学号" << '\t' << "成绩" <<'\n'; int i = 1; while(stu[i].num) { if(stu[i].score < 60) { cout << stu[i].name << '\t' <
<< '\t' << stu[i].score << '\n'; } i++; } cout << '\n'; cout << "成绩为\"中\"的学生是:" << '\n'; cout << "姓名" << '\t' << "学号" << '\t' << "成绩" <<'\n'; i = 1; while(stu[i].num) { if(stu[i].score >= 60 && stu[i].score < 75) { cout << stu[i].name << '\t' <
<< '\t' << stu[i].score << '\n'; } i++; } cout << '\n'; cout << "成绩为\"良\"的学生是:" << '\n'; cout << "姓名" << '\t' << "学号" << '\t' << "成绩" <<'\n'; i = 1; while(stu[i].num) { if(stu[i].score >= 75 && stu[i].score < 90) { cout << stu[i].name << '\t' <
<< '\t' << stu[i].score << '\n'; } i++; } cout << '\n'; cout << "成绩为\"优\"的学生是:" << '\n'; cout << "姓名" << '\t' << "学号" << '\t' << "成绩" <<'\n'; i = 1; while(stu[i].num) { if(stu[i].score >= 90) { cout << stu[i].name << '\t' <
<< '\t' << stu[i].score << '\n'; } i++; } cout << '\n';}//====================================================界面====================================================== void Menu(){ cout << "=============================请选择相应的功能============================" <
<
> j; switch(j) { case 1: { stu[0].Insert(stu); stu[0].Print(stu); break; } case 2: { stu[0].Delete(stu); stu[0].Print(stu); break; } case 3: { stu[0].Lookup(stu); break; } case 4: { stu[0].Update(stu); stu[0].Print(stu); break; } case 5: { stu[0].Stat(stu); break; } default: break; } } cout << "线性表中共有:" << stu[0].Length(stu) << " 个学生"; system("pause"); return 0;}

转载于:https://my.oschina.net/clear/blog/53820

转载地址:https://blog.csdn.net/weixin_34124651/article/details/91650188 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:@media print打印把页眉和页脚全设置为空
下一篇:ZooKeeper典型应用场景一览

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月08日 07时52分56秒