您的位置:首页 > 其它

学生成绩管理详细设计

2016-09-30 18:22 106 查看
(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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: