学生成绩管理详细设计

1)用户输入模块

在此模块中,用户将根据菜单提示结合自己的需求输入一个0~11的值,来实现一定的功能。

void Mgr::Rmenu() {

cout << "***" << "学生成绩管理系统" << "***" << endl;

cout << "1、添加学生信息" << endl;

cout << "2、查看学生信息" << endl;

cout << "3、按学号查找学生" << endl;

cout << "4、按班级查找学生" << endl;

cout << "5、按姓名查找学生" << endl;

cout << "6、修改学生信息" << endl;

cout << "7、删除学生信息" << endl;

cout << "8、按总分排序输出" << endl;

cout << "9、按语文成绩排序输出" << endl;

cout << "10、按数学成绩排序输出" << endl;

cout << "11、按英语成绩排序输出" << endl;

cout << "0、退出系统" << endl;

cout << "选择你想执行功能的序号(0~11)" << endl;

int n;

cin >> n;

switch (n) {

case 1:add(); Rmenu(); break;

case 2:read(); Rmenu(); break;

case 3:findI(); Rmenu(); break;

case 4:findC(); Rmenu(); break;

case 5:findN(); Rmenu(); break;

case 6:modify(); Rmenu(); break;

case 7:del(); Rmenu(); break;

case 8:sortT(); Rmenu(); break;

case 9:sortC(); Rmenu(); break;

case 10:sortM(); Rmenu(); break;

case 11:sortE(); Rmenu(); break;

case 0:exit(0);

default:cout << "输入错误,返回主菜单" << endl; Rmenu();

}

}

2)学生信息添加模块

     此模块可以让用户从键盘输入每个学生的信息:学号、姓名、班级数学、英语、语文成绩。用户可插入一个或多个学生信息到当前编辑的班级数据中。 

void Mgr::add() {

 

long ID;

string name;

int Cn;

double Chinese;

double Math;

double English;

int n = 0;

cout << "请输入要添加学生的个数" << endl;

cin >> n;

for (int i = 1; i <= n; i++) {

cout << "请输入第" << i << "个学生信息" << endl;

cout << "学号:" << ends;

cin >> ID;

cout << "姓名:" << ends;

cin >> name;

cout << "班号:" << ends;

cin >> Cn;

cout << "语文:" << ends;

cin >> Chinese;

cout << "数学:" << ends;

cin >> Math;

cout << "英语:" << ends;

cin >> English;

Student stu(ID, name, Cn, Chinese, Math, English);

ofstream ot("record.txt", ofstream::app);

if (!ot) {

cout << "open fail!" << endl;

exit(0);

}

ot << "学号: " << left << setw(13) << stu.getID() << "姓名: " << setw(8) << stu.getName() << "班号: " << setw(3) << stu.getCn() << "语文: " << setw(3) << stu.getChinese() << "数学: " << setw(3) << stu.getMath() << "英语: " << setw(3) << stu.getEnglish() << endl;

 

ot.close();

}

}

3文件保存功能模块
     用户在确定以录入的成绩无误之后,可以将学生信息存为一个数据文件用户输入学生信息可随时保存数据文件。

Student stu(ID, name, Cn, Chinese, Math, English);

ofstream ot("record.txt", ofstream::app);

if (!ot) {

cout << "open fail!" << endl;

exit(0);

}

ot << "学号: " << left << setw(13) << stu.getID() << "姓名: " << setw(8) << stu.getName() << "班号: " << setw(3) << stu.getCn() << "语文: " << setw(3) << stu.getChinese() << "数学: " << setw(3) << stu.getMath() << "英语: " << setw(3) << stu.getEnglish() << endl;

 

ot.close();

}

4)资料读取功能模块

用户可以用此模块读取指定的文件record.txt)。

void Mgr::read() {

ifstream it("record.txt");

if (!it) {

cout << "open fail!" << endl;

return;

}

string rs;

while (getline(it, rs)) {

cout << rs << endl;

}

it.close();

5)查询功能模块

在此模块里,用户可实现以下操作:1.浏览所有学生信息;2.按学号查询学生信息3.按姓名查询学生信息;4.按班级查询学生信息。

//按学号查找

bool Mgr::findI() {

cout << "输入想要查找的学号" << endl;

long ID;

cin >> ID;

bool i = 0;

vector<Student> vstu = FtoV();

for (auto s : vstu) {

 

if (s.getID() == ID) {

i = 1;

cout << "学号: " << left << setw(13) << s.getID() << "姓名: " << setw(8) << s.getName() << "班号: " << setw(3) << s.getCn() << "语文: " << setw(3) << s.getChinese() << "数学: " << setw(3) << s.getMath() << "英语: " << setw(3) << s.getEnglish() << endl;

}

}

if (!i) {

cout << "不存在该学号学生" << endl;

}

return i;

}

//按姓名查找

bool Mgr::findN() {

cout << "输入想要查找的姓名" << endl;

string name;

cin >> name;

bool i = 0;

vector<Student> vstu = FtoV();

for (auto s : vstu) {

 

if (s.getName() == name) {

i = 1;

cout << "学号: " << left << setw(13) << s.getID() << "姓名: " << setw(8) << s.getName() << "班号: " << setw(3) << s.getCn() << "语文: " << setw(3) << s.getChinese() << "数学: " << setw(3) << s.getMath() << "英语: " << setw(3) << s.getEnglish() << endl;

}

}

if (!i) {

cout << "不存在该姓名学生" << endl;

}

return i;

}

//按班级查找

bool Mgr::findC() {

cout << "输入想要查找的班级号" << endl;

int Cn;

cin >> Cn;

bool i = 0;

vector<Student> vstu = FtoV();

for (auto s : vstu) {

 

if (s.getCn() == Cn) {

i = 1;

cout << "学号: " << left << setw(13) << s.getID() << "姓名: " << setw(8) << s.getName() << "班号: " << setw(3) << s.getCn() << "语文: " << setw(3) << s.getChinese() << "数学: " << setw(3) << s.getMath() << "英语: " << setw(3) << s.getEnglish() << endl;

}

}

if (!i) {

cout << "不存在该班级学生" << endl;

}

return i;

}

(6)排序模块

    在此模块中用户可以按分数高低排序数学、英语、语文、总分成绩,并输出到屏幕。

 

  //总分排序

void Mgr::sortT() {

vector<Student> vstu = FtoV();

sort(vstu.begin(), vstu.end(), [](Student a, Student b) {return a.getChinese() + a.getMath() + a.getEnglish() > b.getChinese() + b.getMath() + b.getEnglish(); });

for (auto s : vstu) {

cout << "学号: " << left << setw(13) << s.getID() << "姓名: " << setw(8) << s.getName() << "班号: " << setw(3) << s.getCn() << "语文: " << setw(3) << s.getChinese() << "数学: " << setw(3) << s.getMath() << "英语: " << setw(3) << s.getEnglish() << endl;

}

 

}

 

(7)修改、删除模块

 在此模块中用户可以实现修改、删除指定学生的信息的操作

void Mgr::modify() {

long ID;

cout << "输入想要修改学生的学号" << endl;

cin >> ID;

int i = 0;

vector<Student> vstu = FtoV();

for (auto bg = vstu.begin(); bg != vstu.end(); bg++) {

if (bg->getID() == ID) {

i = 1;

vstu.erase(bg);

break;

}

}

VtoF(vstu);

if (!i) {

cout << "不存在该学号学生" << endl;

}

 

else {

long ID;

string name;

int Cn;

double Chinese;

double Math;

double English;

cout << "请输入新的信息" << endl;

cout << "学号:" << ends;

cin >> ID;

cout << "姓名:" << ends;

cin >> name;

cout << "班号:" << ends;

cin >> Cn;

cout << "语文:" << ends;

cin >> Chinese;

cout << "数学:" << ends;

cin >> Math;

cout << "英语:" << ends;

cin >> English;

Student stu(ID, name, Cn, Chinese, Math, English);

ofstream ot("record.txt", ofstream::app);

if (!ot) {

cout << "open fail!" << endl;

exit(0);

}

ot << "学号: " << left << setw(13) << stu.getID() << "姓名: " << setw(8) << stu.getName() << "班号: " << setw(3) << stu.getCn() << "语文: " << setw(3) << stu.getChinese() << "数学: " << setw(3) << stu.getMath() << "英语: " << setw(3) << stu.getEnglish() << endl;

 

ot.close();

}

 

 

}

8)主菜单返回模块

此模块保证每执行完成一个操作后就返回主菜单以方便操作。

void Mgr::Rmenu() {

cout << "***" << "学生成绩管理系统" << "***" << endl;

cout << "1、添加学生信息" << endl;

cout << "2、查看学生信息" << endl;

cout << "3、按学号查找学生" << endl;

cout << "4、按班级查找学生" << endl;

cout << "5、按姓名查找学生" << endl;

cout << "6、修改学生信息" << endl;

cout << "7、删除学生信息" << endl;

cout << "8、按总分排序输出" << endl;

cout << "9、按语文成绩排序输出" << endl;

cout << "10、按数学成绩排序输出" << endl;

cout << "11、按英语成绩排序输出" << endl;

cout << "0、退出系统" << endl;

cout << "选择你想执行功能的序号(0~11)" << endl;

int n;

cin >> n;

switch (n) {

case 1:add(); Rmenu(); break;

case 2:read(); Rmenu(); break;

case 3:findI(); Rmenu(); break;

case 4:findC(); Rmenu(); break;

case 5:findN(); Rmenu(); break;

case 6:modify(); Rmenu(); break;

case 7:del(); Rmenu(); break;

case 8:sortT(); Rmenu(); break;

case 9:sortC(); Rmenu(); break;

case 10:sortM(); Rmenu(); break;

case 11:sortE(); Rmenu(); break;

case 0:exit(0);

default:cout << "输入错误,返回主菜单" << endl; Rmenu();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰风雪浪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值